RS-232 a USB CDC_ACM en Debian/BeagleBone Black no funciona

RS-232 a USB CDC_ACM en Debian/BeagleBone Black no funciona

Estoy trabajando en un sistema de energía solar que proporciona salida de datos a través de un flujo de datos en serie constante a través de un cable USB. El sistema funcionó en una PC con Windows 7 (usando un controlador que se encuentra en un CD-ROM en una caja polvorienta junto al sistema solar) y en una PC con Windows 10 sin necesidad de instalar el controlador (aunque es posible que el controlador se haya instalado previamente cuando trabajando con algún otro dispositivo).

Desde el administrador de dispositivos de Windows supe que el cable es de tipo CDC_ACM.

Ahora estoy intentando usarlo con BeagleBone Black para poder automatizar la recopilación de datos. No hay ningún punto de conexión cerca del sistema solar (¿irónico?), así que solo estoy alimentando BeagleBone desde mi PC. Al enchufar el cable escribo lsusby veo que el dispositivo no está conectado:

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

Mirando el registro de mensajes, esto es lo que obtengo:

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

Si envío por primera vez, sudo modprobe cdc_acmparece que obtengo el mismo resultado al conectar el cable. (En un BeagleBone Black diferente recibí un mensaje de "cable defectuoso" una vez, pero confirmé que el cable aún funcionaba en una PC con Windows).

Parece que los controladores existen en el 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

¿Me falta algún paso para que este dispositivo funcione?

Respuesta1

Como muestran los mensajes de error, el concentrador raíz USB no puede enumerar el dispositivo que conectó. Una posible razón para tales errores es que Beaglebone no puede proporcionar suficiente energía para ese dispositivo.

Intente conectar un concentrador con alimentación al Beaglebone y conecte el dispositivo al concentrador.

(Según comentarios, eso solucionó el problema).

información relacionada