Как узнать какой / dev / ttyS * мой последовательный порт?

33

У меня есть ноутбук, который имеет только один последовательный порт.

Я вошел в:

/dev 

каталог, и я нашел:

ttyS0
ttyS1
ttyS2
ttyS3

Как мне узнать, какой из этих "ttyS" относится к моему последовательному порту?

sivabudh
источник
Связанный stackoverflow.com/questions/2530096/…
Сиро Сантилли 新疆 改造 中心 法轮功 六四 事件

Ответы:

32

Я думаю, что это команда:

dmesg | grep tty

Запуск этого на моем собственном Linux-боксе (который имеет только 1 последовательный порт) выдает одну строку вывода ttyS0. Попробуйте сами, вы поймете, что я имею в виду.

sivabudh
источник
Означает ли это, что после выполнения этой команды, если ответ ... console [tty0] enabled ..., и никакое другое, какое-либо устройство подключается к / dev / tty0 (извините за очевидную глупость вопроса)?
Гектор
1
Единственная проблема заключается в том, что вывод dmesg может быть очищен - поэтому, если вы запустите это слишком поздно, вам не повезет. Глядя на / proc / tty / driver / serial, кажется более надежным ответом, а затем проверяем, увеличивается ли количество rx-прерываний при записи данных в этот порт
Нил МакГилл,
Извините, что мне делать, если я не вижу выходных данных?
user3019105
если вы в настоящее время находитесь в терминале по указанной последовательной линии, вы можете просто набрать, ttyчтобы получить имя вашего tty. Я предполагаю, что именно это имел в виду OP, поскольку они не ставили вопрос как "какой последовательный порт (ы) gettyработает?"
Том Николс
14

Посмотрите, какие UART были обнаружены в /proc/tty/driver/serial. Строка uart:unknownозначает: ничего не обнаружено (и, вероятно, не существует).

# 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

Если что-то подключено и управляет линиями CTS, DSR или CD (это входные линии), вы даже можете быть уверены, что на самом деле что-то есть ... То же самое верно для счетчика rx-byte-count.

Роберт Симер
источник
7

Если вам нужно сделать это программным способом, чтение выходных данных из dmesg может быть проблематичным, вместо этого папка / dev / serial / by-id имеет ссылки sym, которые названы в честь идентифицируемых данных вашего устройства и указывают на конкретные / dev / tty * они связаны с.

Я не уверен, является ли это каким-то особым правилом udev для конкретного дистрибутива, но оно хорошо работает в Ubuntu, дайте мне знать, если оно работает.

santileortiz
источник
5

ttyS0сквозной 3соответствуют COM1сквозной 4, соответственно. Они обычно имеют одинаковые аппаратные ресурсы и не всегда обнаруживаются, поэтому они всегда существуют.

Игнасио Васкес-Абрамс
источник
Спасибо за ответ. Скажем, я хочу сказать Linux, что я хочу, чтобы ttyS0 отображался на мое оборудование последовательного порта, что мне нужно делать?
Сивабуд
Вы будете использовать setserialдля сопоставления ресурсов, используемых ttyS0, с вашим последовательным портом. linux.die.net/man/8/setserial Обычно это не требуется, поскольку что-либо, кроме COM4, ​​обычно имеет достаточно вспомогательного оборудования, чтобы Linux мог обнаружить его и добавить последовательное устройство в зависимости от ситуации.
Игнасио Васкес-Абрамс
0

Существует также команда, setserialкоторая использует /proc/tty/driver/serialдля получения своих данных.

# 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
Даниэль В. Кромптон
источник