1 votos

El dispositivo USB CDC ACM no puede ser configurado para usar 1.5Mbaud

Tengo un dispositivo que soporta un puerto COM virtual USB. Cuando el dispositivo está conectado y el puerto serie está configurado para usar 115200-8-N-1, no tengo ningún problema para usar minicom, pantalla, etc. para comunicarme con mi dispositivo. Sin embargo, cuando configuro el dispositivo para usar 1.5Mbaud en su lugar, Darwin se niega a operar la interfaz a 1.5Mbaud. He probado el dispositivo en Debian usando minicom a 1500000-8-N-1 para confirmar que el dispositivo funciona correctamente.

En primer lugar, parece que stty no permite al usuario ajustar la velocidad de transmisión a 1,5Mbaud.

stty -f /dev/tty.usbmodemXXXX 115200

Tiene éxito, mientras que

stty -f /dev/tty.usbmodemXXXX 1500000

Falla con stty: tcsetattr: Invalid argument y nada más. He visto este pregunta, pero parece que no tengo este problema, y probar todas las respuestas proporcionadas sólo causa stty para colgar sin cambiar la velocidad de transmisión con éxito.

Se pone mejor. Cuando ejecuto minicom, que supuestamente inicializa la interfaz para usar 1500000-8-N-1 (la configuración en mi .minirc.dfl), tengo confirmado desde el lado del dispositivo que la interfaz no está funcionando a 1,5Mbaud, sino a alguna velocidad en baudios mucho más baja (no he confirmado cuál es la velocidad exacta).

Estoy realmente atascado en este caso. El extraño comportamiento parece sugerir un problema de controladores, y he oído que Apple com.apple.driver.usb.cdc.acm El controlador todavía no tiene todas las funciones. ¿Podría ser este el problema? Gracias por su ayuda.

1voto

EDTwardy Puntos 16

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

+-o IOUSBHostInterface@1  <class IORegistryEntry:IOService:IOUSBNub:IOUSBInterface, id 0x100007a62, registered, matched, active, busy 0 (208 ms), retain 7>
  +-o AppleUSBACMData  <class IORegistryEntry:IOService:IOSerialStreamSync:IORS232SerialStreamSync:AppleUSBSerial:AppleUSBACMData, id 0x100007a6c, registered, matched, active, busy 0 (1 ms), retain 6>
    +-o IOSerialBSDClient  <class IORegistryEntry:IOService:IOSerialBSDClient, id 0x100007a72, registered, matched, active, busy 0 (0 ms), retain 5>

Que está muy limitado en el número de velocidades de transmisión que soporta. La versión 11 de la IOSerialFamily, la versión en mi máquina, sólo soporta las tasas de baudios listadas en el static struct speedtab iossspeeds[] en la fuente de la clase IOSerialBSDClient . He probado esto estableciendo con éxito la tasa de baudios para la interfaz a 1843200.

La solución, por desgracia, probablemente requerirá que localice un controlador genérico que soporte la tasa 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