Вопрос или проблема
У меня есть устройство (NVIDIA Jetson Nano) с четырьмя USB-портами. Как я могу узнать, какие /dev/tty*
адреса соответствуют каждому из них?
Я изучил множество похожих вопросов здесь и на askUbuntu. Я пробовал lsusb
, dmesg | grep tty
, usb-devices
, но, откровенно говоря, я не понимаю, что делаю с этой информацией.
lsusb
была единственной командой, которую я смог смутно понять. Перемещая USB-донгл из порта в порт, я думал, что смогу определить номера шины и устройства. Пока я не дошел до последнего порта, где я сменил донгл, ID которого я знал, на клавиатуру, которая была в этом порту на первых трех тестах, и понял, что номера устройств даже не статичны. Клавиатура была Bus 001 Device 005 на первых трех тестах, но теперь тот же порт был Bus 001 Device 010, когда в него был вставлен донгл (а порт, который удерживал донгл, был 009, а теперь 011 с клавиатурой, так что это, казалось, просто увеличивалось). Поэтому я не вижу, как эта информация может быть полезна. Плюс, я не знал бы, как получить путь к устройству из номера устройства, даже если бы доверял этим номерам.
dmesg | grep tty
просто перечисляет несколько доступных последовательных портов и не меняется, когда я меняю порты, в которые вставлены устройства, поэтому я не вижу, как это можно использовать, чтобы что-то узнать. Я пытался повторить эту команду после того, как поиграл с lsusb
, используя тот же метод перемещения донгла по различным портам, и теперь она ничего не выводит, даже когда запущена от имени root.
usb-devices
перечисляет кучу устройств, гораздо больше, чем физически может уместиться, и снова не меняет свой вывод, когда состояние физического порта меняется.
В целом, я просто не знаю, что делаю, так что извините, если я неправильно использовал какие-либо технические термины, и надеюсь, что то, что я говорю, ясно из контекста. Я не понимаю различия между устройством/портом/адаптером/шиной, так что это может быть частью того, почему мне трудно найти это в гугле. Спасибо за любую помощь!
Прежде всего, убедитесь, что ваши кабели функционируют. Удивительно, но часто USB-кабель может не передавать данные, и вы не сможете этого понять, если не протестируете его, так что не делайте предположений. Я прошел через 4 кабеля, которые думал, что хорошие, прежде чем нашел один, который действительно передавал данные, помимо питания.
Во-вторых, я не знаю, является ли это самым элегантным решением, но то, что мне удалось сделать, было в основном комбинацией ls
и diff
для определения, когда в /dev
появился новый файл.
Начните с отключенного устройства, используя ls /dev > device_names.txt
(или любой путь к файлу по вашему выбору вместо device_names.txt), чтобы записать все имена устройств, которые в данный момент доступны, в файл. Затем подключите ваше устройство к порту, который вас интересует, и используйте ls /dev | diff - device_names.txt
, чтобы получить различия между текущим списком имен устройств и списком перед подключением вашего устройства.
В моем случае это показало, что мое устройство использует ttyACM0
на этом порту. Я все еще не знаю, определяется ли это полностью устройством и не имеет никакого отношения к физическому порту… если это так, то оригинальный вопрос не имеет смысла, но что поделаешь.
Ответ или решение
Чтобы определить, какой физический порт USB подключен к какому tty пути на вашем NVIDIA Jetson Nano, выполните следующие шаги, учитывая, что каждая система и устройство могут вести себя несколько по-разному. Приведенные ниже рекомендации помогут вам более эффективно разобраться с вопросом.
Шаг 1: Проверка USB-кабелей
Прежде всего, убедитесь, что используемые USB-кабели исправны. Неисправные кабели могут вызывать проблемы с передачей данных, что значительно осложнит диагностику. Проверьте несколько кабелей, чтобы убедиться в их работоспособности.
Шаг 2: Сбор информации о текущих устройствах
Перед подключением любого устройства выполните команду:
ls /dev/ > device_names.txt
Это сохранит список всех текущих устройств в файле device_names.txt
.
Шаг 3: Подключение устройства
Теперь подключите ваше устройство (например, USB-дамплер) к одному из USB-портов Jetson Nano.
Шаг 4: Получение новых записей в /dev
Снова выполните команду:
ls /dev/ | diff - device_names.txt
Эта команда покажет разницу между текущим списком устройств и ранее сохраненным. Вы увидите новую строку, которая будет представлять подключенное устройство, например, ttyUSB0
, ttyACM0
или подобное.
Шаг 5: Определение порта и идентификаторы
После того как вы получили название нового tty устройства, вы можете использовать команду dmesg
для более детальной информации о подключенном устройстве:
dmesg | grep tty
Эта команда покажет лог системы и отобразит, какое устройство было распознано. Здесь вы также сможете увидеть информацию о том, какой именно USB-порт использовался. Если вы хотите вывести полный лог, просто выполните dmesg
и найдите соответствующие строки.
Шаг 6: Использование lsusb для дальнейшего анализа
Для получения более глубокой информации об устройстве воспользуйтесь командой:
lsusb
Здесь вы сможете увидеть базовые данные о всех подключенных USB-устройствах: их адреса, идентификаторы поставщика и устройства. Следите за изменениями в этом списке, когда вы будете подключать/отключать устройства.
Дополнительные советы:
- Если после вышеупомянутых шагов вы испытываете трудности с распознаванием устройств, у вас может быть конфликт в драйверах или зависимости. Убедитесь, что все зависимости установлены и ваш Jetson Nano обновлен.
- Если ваше устройство не отображается корректно, попробуйте подключить его к другому порту или используйте другой USB-кабель.
Заключение
Каждый USB-порт может вести себя немного по-разному с разными устройствами, и понимание этого процессе требует времени и терпения. Следуя описанным шагам, вы получите четкое представление о том, как ваши физические USB-порты связаны с tty-путями на NVIDIA Jetson Nano.