Я работаю над солнечной энергетической системой, которая выдает данные через постоянный последовательный поток данных через USB-кабель. Система работала на ПК с Windows 7 (используя драйвер, найденный на CD-ROM в пыльной коробке возле солнечной системы), и на ПК с Windows 10 без необходимости установки драйвера (хотя возможно, что драйвер был установлен ранее при работе с каким-то другим устройством).
Из диспетчера устройств Windows я узнал, что тип кабеля CDC_ACM
.
Теперь я пытаюсь использовать его с BeagleBone Black, чтобы автоматизировать сбор данных. Рядом с солнечной системой нет розетки (ирония?), поэтому я просто подключаю BeagleBone от своего ПК. Подключив кабель, я печатаю lsusb
и вижу, что устройство не подключено:
debian@beaglebone:~$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Просматривая журнал сообщений, вот что я получаю:
debian@beaglebone:~$ dmesg | tail -n 20
[ 442.566683] hub 1-0:1.0: hub_resume
[ 442.566753] hub 1-0:1.0: port 1: status 0101 change 0001
[ 442.668291] hub 1-0:1.0: state 7 ports 1 chg 0002 evt 0000
[ 442.668381] hub 1-0:1.0: port 1, status 0101, change 0000, 12 Mb/s
[ 442.721964] CAUTION: musb: Babble Interrupt Occurred
[ 442.773713] usb 1-1: new full-speed USB device number 44 using musb-hdrc
[ 442.823536] musb-hdrc: setup fifo_mode 4
[ 442.823583] musb-hdrc: 28/31 max ep, 16384/16384 memory
[ 442.826509] hub 1-0:1.0: unable to enumerate USB device on port 1
[ 442.833788] hub 1-0:1.0: state 7 ports 1 chg 0000 evt 0002
[ 442.833924] hub 1-0:1.0: port 1, status 0500, change 0003, 480 Mb/s
[ 442.941687] hub 1-0:1.0: debounce: port 1: total 100ms stable 100ms status 0x500
[ 442.941807] hub 1-0:1.0: hub_suspend
[ 442.941867] usb usb1: bus auto-suspend, wakeup 1
[ 443.006061] usb usb1: usb wakeup-resume
[ 443.006138] usb usb1: usb auto-resume
[ 443.006178] hub 1-0:1.0: hub_resume
[ 443.006253] hub 1-0:1.0: port 1: status 0101 change 0001
[ 443.107772] hub 1-0:1.0: state 7 ports 1 chg 0002 evt 0000
[ 443.107860] hub 1-0:1.0: port 1, status 0101, change 0000, 12 Mb/s
Если я сначала отправлю sudo modprobe cdc_acm
сообщение, похоже, я получу тот же результат при подключении кабеля. (На другом BeagleBone Black я однажды получил сообщение «плохой кабель», но я убедился, что кабель все еще работает на ПК с Windows).
Похоже, что драйверы существуют в ядре:
debian@beaglebone:/sys/bus/usb/drivers$ ls
cdc_acm cdc_ncm rndis_host usb usbhid
cdc_ether hub rt2870 usbfs usb-storage
debian@beaglebone:/sys/bus/usb/drivers$ cd cdc_acm
debian@beaglebone:/sys/bus/usb/drivers/cdc_acm$ ls
bind new_id remove_id uevent unbind
Я упускаю какой-то шаг, чтобы это устройство заработало?
решение1
Как показывают сообщения об ошибках, корневой USB-концентратор не может определить подключенное вами устройство. Одной из возможных причин таких ошибок является то, что Beaglebone не может обеспечить достаточное питание для этого устройства.
Попробуйте подключить активный концентратор к Beaglebone и подключите устройство к концентратору.
(Согласно комментариям, это решило проблему).