У меня вопрос по поводу портов в Linux. Если я подключаю свое устройство через USB и хочу проверить его порт, я не могу сделать это с помощью команды lsusb, которая указывает только номер шины и номер устройства на этой шине:
[ziga@Ziga-PC ~]$ lsusb
Bus 003 Device 007: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC
Есть ли команда, которая сообщает мне порт, к которому устройство подключено напрямую? Единственный способ сделать это до сих пор заключался в том, чтобы отключить и повторно подключиться и использовать команду:
[ziga@Ziga-PC ~]$ dmesg | grep tty
[ 0.000000] console [tty0] enabled
[ 0.929510] 00:09: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[ 4.378109] systemd[1]: Starting system-getty.slice.
[ 4.378543] systemd[1]: Created slice system-getty.slice.
[ 8.786474] usb 3-4.4: FTDI USB Serial Device converter now attached to ttyUSB0
В последней строке видно, что мое устройство подключено к / dev / ttyUSB0 .
usb
serial-port
dmesg
71Ga
источник
источник
/dev
с записью вlsusb
? Или вы хотите перечислить все устройства,/dev
которые являются производными от физического USB-устройства? Или ты просто хочешьls /dev/ttyUSB*
?ls /dev/ttyUSB*
Я перечислю только 10 портов, но из этого списка я не могу сказать, какой из них для моего устройства.Ответы:
Я не совсем уверен, что вы спрашиваете. Вы упоминаете «порт» несколько раз, но затем в своем примере вы говорите, что ответом является
/dev/ttyUSB0
путь устройства, а не порт. Таким образом, этот ответ о поиске пути разработки для каждого устройства.Ниже приведен быстрый и грязный скрипт, который просматривает устройства в
/sys
поиске USB-устройств сID_SERIAL
атрибутом. Обычно только настоящие USB-устройства будут иметь этот атрибут, и мы можем фильтровать его. Если мы этого не сделаем, вы увидите в списке много вещей, которые не являются физическими устройствами.В моей системе это приводит к следующему:
Объяснение:
Устройства, которые отображаются в,
/dev
имеютdev
файл в своем/sys
каталоге. Поэтому мы ищем каталоги, соответствующие этим критериям.Нам нужен путь к каталогу, поэтому мы удалим его
/dev
.Это дает нам путь,
/dev
который соответствует этому/sys
устройству.Это отфильтровывает вещи, которые не являются фактическими устройствами. В противном случае вы получите такие вещи, как USB-контроллеры и концентраторы.
Команда
udevadm info -q property --export
выводит список всех свойств устройства в формате, который может быть проанализирован оболочкой в переменные. Поэтому мы просто призываемeval
к этому. Это также причина, по которой мы заключаем код в круглые скобки, чтобы мы использовали подоболочку, а переменные стирались в каждом цикле.Больше фильтрации вещей, которые не являются реальными устройствами.
Я надеюсь, что вы знаете, что делает эта строка :-)
источник
Вы можете использовать эту команду для исследования вашего устройства, если оно подключено к
usb0
:источник
Вы можете попробовать что-то вроде этого ниже.
источник
dmesg | awk '/tty/ && /USB/ {print "/dev/"$1}'
(Эквивалентный, но чистый ... но все же странный код; почему не просто ttyUSB вместе? И для чего был 2x rev?)rev
Используется поэтому последнее поле доступа, это может быть заменено$NF
: даваяdmesg | awk '/tty/ && /USB/ {print "/dev/"$NF}'
Возможно, вы хотели бы узнать только путь к USB-последовательному адаптеру, который подключался последним?
источник
Предполагая, что вы знаете, какое устройство вы подключили, по крайней мере, в Ubuntu 14.04 есть команда,
usb-devices
которую вы можете просмотреть и найти информацию:И первая строка перечисляет шину и порт, а также номер устройства, которое
lsusb
дает.источник
/dev/*
путь