Восстановление после потери USB-подключения (от Leonardo к Raspberry Pi)
У меня есть несколько Arduino Leonardo, подключенных к Raspberry Pi (под управлением Ubuntu) через USB. Они отображаются как /dev/ttyACM0
, /dev/ttyACM1
и т. д.
Иногда один из них исчезает, и даже нажатие кнопки сброса Arduino не возвращает его. Есть ли способ «обновить» или «повторно инициализировать» устройства ttyACM*, чтобы они снова появились без перезагрузки Raspberry Pi?
@Cerin, 👍0
Обсуждение2 ответа
Устройства USB создаются динамически. Вы можете найти этот вопрос и ответ от SE Raspberry Pi полезными: Как принудительно выполнить повторное сканирование последовательных USB-устройств?.
Вы можете использовать команду dmesg(8) на Pi, чтобы просмотреть сообщения, созданные подсистемой USB. Посмотрите вывод, чтобы увидеть, есть ли ошибки, связанные с отключением Arduino от шины. Вот как будет выглядеть вывод (примерно, это от Uno, подключенного к системе Raspbian), обратите внимание на последнюю строку, которая является отключением от отключения Uno от Pi. Сброс Uno не сделал ничего, что увидел Pi. Я предполагаю, что это связано с тем, что кнопка сброса на Uno не сбрасывает 16U2 (процессор, обрабатывающий USB-порт).
[ 459.936719] usb 1-1.3: new full-speed USB device number 5 using dwc_otg
[ 460.051182] usb 1-1.3: New USB device found, idVendor=2a03, idProduct=0043
[ 460.051212] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=220
[ 460.051229] usb 1-1.3: Product: Arduino Uno
[ 460.051245] usb 1-1.3: Manufacturer: Arduino Srl
[ 460.051262] usb 1-1.3: SerialNumber: 75431343334351F061E2
[ 460.088018] cdc_acm 1-1.3:1.0: ttyACM0: USB ACM device
[ 460.089250] usbcore: registered new interface driver cdc_acm
[ 460.089270] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
[ 534.212365] usb 1-1.3: USB disconnect, device number 5
Из этого вопроса и ответов на него следует, что некоторые версии Леонардо могут иметь проблемы, которые могут вызвать такое поведение.
Еще одна вещь, на которую стоит обратить внимание, — это источник питания Леонардо. Если они питаются от Pi через интерфейс USB, это может увеличить возможности Pi по обеспечению питания.
Каждое устройство также можно найти по символической ссылке, названной по его аппаратному подключению. Так что эти имена остаются прежними после повторного появления!
root@raspberrypi:/etc/udev/rules.d# ls -l /dev/serial/by-path/
total 0
lrwxrwxrwx 1 root root 13 May 2 18:11 platform-20980000.usb-usb-0:1.2:1.0 -> ../../ttyACM0
lrwxrwxrwx 1 root root 13 May 2 18:11 platform-20980000.usb-usb-0:1.3.1:1.0-port0 -> ../../ttyUSB0
lrwxrwxrwx 1 root root 13 May 2 18:11 platform-20980000.usb-usb-0:1.3.1:1.0-port1 -> ../../ttyUSB1
- Может ли Arduino Leonardo одновременно использовать USB-порт и последовательные контакты RX TX?
- Mac не обнаруживает последовательный порт для Леонардо
- Сквозной порт для USB-мыши
- Как подключить Arduino Nano к ноутбуку с Linux
- Ни ttyACM0, ни ttyUSB0
- Может ли библиотека мыши прокручиваться по горизонтали?
- Keyboard.print() пропускает клавиши
- Существует ли плата, которая может выступать как USB-хостом, так и клиентом для HID -устройств?
Системные журналы говорят...?, @Ignacio Vazquez-Abrams