AnsweredAssumed Answered

ttyACM0 can send but doesn't receive data

Question asked by btjosh on Jul 26, 2016
Latest reply on Jun 12, 2018 by Karl Thoren

I am using the USB Host port on the IMX6SX Sabre board with Android 5.1.  It is able to receive and send data using a ttyUSB0 device such as a USB to Serial Converter.

 

However, when using a modem (ex. Telit HE910) that uses the CDC-ACM driver, the ttyACM0 port is only able to send messages to the modem, and not able to receive messages.  I confirmed this, by using Chat and sent a message to change the APN, and chat times out waiting for the OK.  I disconnected the modem and connected it to a PC and used PuTTY to confirm that the APN had been updated!  So the ttyACM0 port is able to send. RIL and PPP services are disabled and lsof only shows the only ttyACM0 port in use is by the tools I am using through the shell (such as Microcom, chat, etc...) so it doesn't appear that another application is clearing the incoming data from ttyACM0.

 

If I close the command line tool, and associate the ttyACM0 port to an Android application like a serial port example (https://github.com/felHR85/SerialPortExample, Note: append "\r" to data written in onClick()), the Android application removes the ttyACM0 port and establishes a connection to the modem.  I am then able to send AT commands and receive responses on the NXP board.

 

Is there an issue with ttyACM0 driver setup in the iMX kernel?  Has anyone had similar problems in not receiving CDC-ACM data while being able to send data to a ttyACM0 port and found any workarounds to what I am experiencing?

Outcomes