Come faccio a sapere quale / dev / ttyS * è la mia porta seriale?


Risposte:


32

Penso che sia questo comando:

dmesg | grep tty

Eseguirlo sul mio box Linux (che ha solo 1 porta seriale) produce una singola linea di output ttyS0. Provalo da solo, vedrai cosa intendo.


Ciò significa che dopo aver eseguito quel comando, se la risposta è ... console [tty0] abilitata ... e nessun altro, un dispositivo è collegato a / dev / tty0 (scusate per l'apparente stupidità della domanda)?
Hektor,

1
L'unico problema è che l'output di dmesg può essere cancellato, quindi se lo esegui troppo tardi, sei sfortunato. Guardare / proc / tty / driver / serial sembra la risposta più solida e quindi verificare la presenza di interruzioni rx in aumento mentre si scrivono i dati su quella porta
Neil McGill

Spiacenti, cosa devo fare se non visualizzo alcun output?
user3019105

se sei attualmente in un terminale su detta linea seriale, puoi semplicemente digitare ttyper ottenere il nome del tuo tty. Suppongo che questo sia ciò che significava OP poiché non ponevano la domanda come "quali porte seriali hanno in gettyesecuzione?"
Thom Nichols,

14

Scopri in quali UART sono stati rilevati /proc/tty/driver/serial. Una linea con uart:unknownmezzi: nulla rilevato (e probabilmente non esistente).

# cat /proc/tty/driver/serial 
serinfo:1.0 driver revision:
0: uart:16550A port:000003F8 irq:4 tx:0 rx:0
1: uart:16550A port:000002F8 irq:3 tx:111780 rx:1321 RTS|DTR|DSR
2: uart:unknown port:000003E8 irq:4
3: uart:unknown port:000002E8 irq:3

Se qualcosa è collegato e guida le linee CTS, DSR o CD (queste sono linee di input) puoi anche essere abbastanza sicuro che ci sia effettivamente qualcosa ... Lo stesso vale per il conteggio byte rx.


7

Se è necessario farlo, la lettura a livello di codice dell'output di dmesg può essere problematica, invece la cartella / dev / serial / by-id ha collegamenti sym che prendono il nome dai dati identificabili del dispositivo e puntano allo specifico / dev / tty * sono collegati a.

Non sono sicuro se questa è una regola udev speciale specifica per la distribuzione, ma funziona bene in Ubuntu, fammi sapere se funziona.


5

ttyS0through 3corrisponde rispettivamente a COM1through 4. Di solito hanno le stesse risorse hardware e non sono sempre rilevabili, quindi esistono sempre.


Grazie per la risposta. Quindi dire che voglio dire a Linux che desidero mappare ttyS0 sul mio hardware della porta seriale, cosa devo fare?
sivabudh,

Dovresti usare setserialper mappare le risorse che ttyS0 usa a quella della tua porta seriale. linux.die.net/man/8/setserial Questo non è normalmente richiesto, poiché qualsiasi cosa oltre COM4 di solito ha abbastanza hardware ausiliario per consentire a Linux di rilevarlo e aggiungere un dispositivo seriale come appropriato.
Ignacio Vazquez-Abrams,

0

C'è anche il comando setserialche usa /proc/tty/driver/serialper ottenere i suoi dati.

# setserial -g /dev/ttyS[0123]
/dev/ttyS0, UART: 16550A, Port: 0x03f8, IRQ: 4
/dev/ttyS1, UART: 16550A, Port: 0x02f8, IRQ: 3
/dev/ttyS2, UART: unknown, Port: 0x03e8, IRQ: 4
/dev/ttyS3, UART: unknown, Port: 0x02e8, IRQ: 3
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.