RS-232 zu USB CDC_ACM unter Debian / BeagleBone Black funktioniert nicht

RS-232 zu USB CDC_ACM unter Debian / BeagleBone Black funktioniert nicht

Ich arbeite an einem Solarstromsystem, das Daten über einen konstanten seriellen Datenstrom über ein USB-Kabel ausgibt. Das System funktionierte auf einem Windows 7-PC (mit einem Treiber, der auf einer CD-ROM in einer staubigen Schachtel neben dem Solarsystem zu finden war) und auf einem Windows 10-PC, ohne dass ein Treiber installiert werden musste (es ist jedoch möglich, dass der Treiber zuvor bei der Arbeit mit einem anderen Gerät installiert wurde).

Aus dem Windows-Gerätemanager habe ich erfahren, dass das Kabel vom Typ ist CDC_ACM.

Jetzt versuche ich, es mit BeagleBone Black zu verwenden, damit ich die Datenerfassung automatisieren kann. In der Nähe des Solarsystems gibt es keine Steckdose (ironisch?), also versorge ich BeagleBone einfach über meinen PC mit Strom. Nachdem ich das Kabel eingesteckt habe, tippe ich lsusbund sehe, dass das Gerät nicht verbunden ist:

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

Wenn ich mir das Nachrichtenprotokoll anschaue, erhalte ich Folgendes:

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

Wenn ich das Kabel zuerst sende, sudo modprobe cdc_acmscheint es, als ob ich dasselbe Ergebnis erhalte, wenn ich es anschließe. (Auf einem anderen BeagleBone Black erhielt ich einmal die Meldung „Kabel defekt“, aber ich habe bestätigt, dass das Kabel auf einem Windows-PC trotzdem funktionierte.)

Es scheint, dass die Treiber im Kernel vorhanden sind:

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

Übersehe ich einen Schritt, um dieses Gerät zum Laufen zu bringen?

Antwort1

Wie die Fehlermeldungen zeigen, kann der USB-Root-Hub das angeschlossene Gerät nicht auflisten. Ein möglicher Grund für solche Fehler ist, dass der Beaglebone nicht genügend Strom für das Gerät bereitstellen kann.

Versuchen Sie, einen Hub mit Stromversorgung an den Beaglebone anzuschließen, und stecken Sie das Gerät in den Hub.

(Den Kommentaren zufolge wurde das Problem dadurch behoben.)

verwandte Informationen