Как определить, какой физический порт подключен к какому пути tty?

Вопрос или проблема

У меня есть устройство (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.

Оцените материал
Добавить комментарий

Капча загружается...