Como sei qual / dev / ttyS * é minha porta serial?

33

Eu tenho um laptop que possui apenas uma porta serial.

Eu entrei em:

/dev 

diretório, e eu encontrei:

ttyS0
ttyS1
ttyS2
ttyS3

Como sei qual desses "ttyS" se refere à minha porta serial?

sivabudh
fonte
relacionada stackoverflow.com/questions/2530096/...
Ciro Santilli新疆改造中心法轮功六四事件

Respostas:

32

Eu acho que é este comando:

dmesg | grep tty

Executar isso na minha própria caixa Linux (que possui apenas 1 porta serial) produz uma única linha de saída ttyS0. Tente por conta própria, você verá o que quero dizer.

sivabudh
fonte
Isso significa que, depois de executar esse comando, se a resposta estiver ... console [tty0] ativado ... e nenhum outro dispositivo estiver conectado a / dev / tty0 (desculpe a aparente bobagem da pergunta)?
Hektor 15/02
1
O único problema é que a saída do dmesg pode ser limpa - portanto, se você correr tarde demais, ficará sem sorte. Olhando para / proc / tty / driver / serial parece a resposta mais robusta e, em seguida, verificar se há interrupções rx aumento na contagem de como você gravar dados a essa porta
Neil McGill
Desculpe, o que devo fazer se não houver saída?
user3019105
se você estiver atualmente em um terminal acima da linha serial, basta digitar ttypara obter o nome do seu tty. Suponho que é isso que OP significava, já que eles não colocaram a pergunta como "quais portas seriais estão em gettyexecução?"
Thom Nichols
14

Veja em quais UARTs foram detectados /proc/tty/driver/serial. Uma linha com uart:unknownmeios: nada detectado (e provavelmente inexistente).

# 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 algo estiver conectado e direcionando as linhas CTS, DSR ou CD (estas são linhas de entrada), você pode ter certeza de que realmente há algo ... O mesmo se aplica à contagem de rx-bytes.

Robert Siemer
fonte
7

Se você precisar fazer isso de forma programática, a leitura da saída do dmesg pode ser problemática. Em vez disso, a pasta / dev / serial / by-id possui links sym com o nome de dados identificáveis ​​do seu dispositivo e apontar para o / dev / tty * específico estão conectados a.

Não tenho certeza se essa é alguma regra especial do udev que é específica da distribuição, mas funciona bem no Ubuntu, deixe-me saber se funciona.

santileortiz
fonte
5

ttyS0through 3corresponde a COM1through 4, respectivamente. Eles geralmente têm os mesmos recursos de hardware e nem sempre são detectáveis; portanto, eles sempre existem.

Ignacio Vazquez-Abrams
fonte
obrigado pela resposta. Então diga que eu quero dizer ao Linux que eu quero que o ttyS0 mapeie para o hardware da minha porta serial, o que eu preciso fazer?
sivabudh
Você usaria setserialpara mapear os recursos que o ttyS0 usa para os da sua porta serial. linux.die.net/man/8/setserial Isso normalmente não é necessário, pois qualquer coisa além do COM4 geralmente possui hardware auxiliar suficiente para permitir que o Linux o detecte e adicione um dispositivo serial conforme apropriado.
Ignacio Vazquez-Abrams
0

Há também o comando setserialque usa /proc/tty/driver/serialpara obter seus dados.

# 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
Daniël W. Crompton
fonte