0

I am working on a solar power system which gives data output via constant serial data stream through a USB cable. The system worked on a Windows 7 PC (using a driver found on a CD-ROM in a dusty box by the solar system), and on a Windows 10 PC with no need to install driver (though it's possible the driver was installed previously when working with some other device).

From the Windows device manager I learned that the cable is of type CDC_ACM.

Now I'm trying to use it with BeagleBone Black so I can automate data collection. There's no plug point near the solar system (ironic?) so I'm just powering BeagleBone from my PC. Upon plugging in the cable I type lsusb and see that the device is not connected:

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

Looking at the message log, here's what I'm getting:

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

If I first send sudo modprobe cdc_acm it looks like I get the same result upon connecting the cable. (On a different BeagleBone Black I got a "bad cable" message once, but I confirmed the cable still worked on a windows PC).

It does appear that the drivers exist on the kernel:

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

Am I missing a step to get this device working?

  • 1
    As the error message show, the USB root hub can't enumerate the device you plugged in. One possible reason for such errors is that the Beaglebone can't provide enough power for that device. Can you try to connect a powered hub to the Beaglebone, and plug the device into the hub? How does dmesg output look for a device that doesn't need that much power, e.g. a USB flash memory stick? – dirkt Apr 13 '17 at 10:57
  • @dirkt that's a good thought, I will try it at the next opportunity. In the meantime, I plugged a flash drive and added the dmesg result to the question. – LShaver Apr 13 '17 at 11:11
  • @dirkt you're a genius... I added external power and the device was enumerated. I then used picocom to open a terminal and was able to read the data no problem. Add your comment as an answer if you wish and I'll accept it... – LShaver Apr 15 '17 at 6:43
1

As the error messages show, the USB root hub can't enumerate the device you plugged in. One possible reason for such errors is that the Beaglebone can't provide enough power for that device.

Try to connect a powered hub to the Beaglebone, and plug the device into the hub.

(According to comments, that fixed the problem).

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.