1 votos

El dispositivo USB CDC ACM no se puede configurar para usar 1.5Mbaud

Tengo un dispositivo que admite un puerto COM virtual USB. Cuando el dispositivo está conectado y el puerto serie está configurado para usar 115200-8-N-1, no tengo problemas para comunicarme con mi dispositivo utilizando minicom, screen, etc. Sin embargo, cuando configuro el dispositivo para usar 1,5 Mbaud en su lugar, Darwin se niega a operar la interfaz a 1,5 Mbaud. Probé el dispositivo en Debian utilizando minicom a 1500000-8-N-1 para confirmar que el dispositivo está funcionando correctamente.

En primer lugar, parece que stty no permite al usuario establecer la velocidad de baudios en 1,5 Mbaud.

stty -f /dev/tty.usbmodemXXXX 115200

Funciona, mientras que

stty -f /dev/tty.usbmodemXXXX 1500000

Falla con stty: tcsetattr: Argumento inválido y nada más. He visto esta pregunta, pero no parece estar teniendo este problema, y probar todas las respuestas proporcionadas solo hace que stty se cuelgue sin cambiar correctamente la velocidad de baudios.

Mejor dicho, cuando ejecuto minicom, que supuestamente inicializa la interfaz para usar 1500000-8-N-1 (la configuración en mi .minirc.dfl), he confirmado desde el lado del dispositivo que la interfaz no está funcionando a 1,5 Mbaud, sino a una velocidad de baudios mucho más baja en su lugar (no he confirmado cuál es la velocidad exacta).

Realmente estoy atascado en este tema. El comportamiento extraño parece sugerir un problema de controlador, y he escuchado que el controlador com.apple.driver.usb.cdc.acm de Apple aún no está totalmente desarrollado. ¿Podría ser este el problema? ¡Gracias por tu ayuda!

1voto

EDTwardy Puntos 16

Es un problema de controlador. El controlador com.apple.driver.usb.cdc.acm realmente instancia un IOSerialBSDClient para el dispositivo, como se ve en la salida de ioreg:

+-o IOUSBHostInterface@1  
  +-o AppleUSBACMData  
    +-o IOSerialBSDClient  

Lo cual es muy limitado en la cantidad de velocidades de baudios que soporta. La versión 11 de IOSerialFamily, la versión en mi máquina, solo soporta las velocidades de baudios listadas en la static struct speedtab iossspeeds[] en la fuente de la clase IOSerialBSDClient. Probé esto configurando exitosamente la velocidad de baudios de la interfaz a 1843200.

La solución, desafortunadamente, probablemente requerirá que ubique un controlador genérico que soporte la velocidad de baudios que necesito.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X