This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AM3356: Communication with /dev/ttyACM is not possible

Part Number: AM3356

Tool/software:

Hi expert

We are facing a problem, please help

The SDK and kernel used are as follows:
・SDK Version.09.01.00.001
・Linux Kernel Version.6.1.46(2023 LTS)

/dev/ttyACM0 is used to send and receive AT commands, and /dev/ttyACM1 is used to receive GPS data.

After configuring GPS reception, if you do not read data from /dev/ttyACM1,

after a while you will not be able to send or receive AT commands on /dev/ttyACM0.

/dev/ttyACM1 is receiving several dozen sentences per second.

When data is read from /dev/ttyACM1, AT commands can be sent and received on /dev/ttyACM0.

This issue does not occur with the following SDK and kernel versions when used in the same way.

・SDK Version.06.03.00.106
・Linux Kernel Version.4.19.59+(2019 LTS)

・SDK Version.08.02.00.24
・Linux Kernel Version.5.10.100(2021 LTS)


The software is intended for reuse.

Please let me know how to solve the problem.

Best regards.

  • Hi Ohya-san,

    Please explain what module(s) geneate the /dev/ttyACM0 and ttyACM1 device modes?

  • Hello, Bin

    We will provide you with information.

    Is the information you need?

    - dmesg

    $dmesg | grep ttyACM0
    cdc_acm 2-1:1.0: ttyACM0: USB ACM device
    
    $dmesg | grep ttyACM1
    cdc_acm 2-1:1.2: ttyACM1: USB ACM device

    - lsmod

    $lsmod | grep cdc_acm
    cdc_acm                24576  0

    - modinfo

    $modinfo cdc_acm
    filename:       /lib/modules/6.1.46-g1d4b5da681/kernel/drivers/usb/class/cdc-acm.ko
    alias:          char-major-166-*
    license:        GPL
    description:    USB Abstract Control Model driver for USB modems and ISDN adapters
    author:         Armin Fuerst, Pavel Machek, Johannes Erdfelt, Vojtech Pavlik, David Kubicek, Johan Hovold
    alias:          usb:v1519p0452d*dc*dsc*dp*ic*isc*ip*in*
     .....(omit)
    alias:          usb:v0424p274Ed*dc*dsc*dp*ic*isc*ip*in*
    depends:
    intree:         Y
    name:           cdc_acm
    vermagic:       6.1.46-g1d4b5da681 preempt mod_unload ARMv7 p2v8
    

    Best regards,

  • Hi Ohya-san,

    Thanks, I think I understand the /dev/ttyACM0 and ttyACM1 nodes are created by a USB modem attached.

    After configuring GPS reception, if you do not read data from /dev/ttyACM1,

    after a while you will not be able to send or receive AT commands on /dev/ttyACM0.

    When the problem happens, does linux console print any message?

  • Hello, Bin

    When this occurs, nothing is displayed on the Linux console.

    Best regards,

  • Hi Ohya,

    Please check your kernel .config to see if option "CONFIG_USB_TI_CPPI41_DMA" is enabled. If so, please try to disable it to see if the issue still happens.

  • Hello, Bin

    The option "CONFIG_USB_TI_CPPI41_DMA" was enabled, so I disabled it and checked.

    It did not solve the problem.

    In the following versions, no problems occur regardless of whether it is enabled or disabled.

    ・SDK Version.08.02.00.24
    ・Linux Kernel Version.5.10.100(2021 LTS)

    Best regards,

  • Hi Ohya-san,

    Okay thanks for running the test.

    For figuring out which kernel change causes the issue, you can use 'git bisect' tool on the kernel source code, which would narrow down the kernel commit id which causes the issue.

    I recommend you do the 'git bisect' process on the upstream kernel instead of SDK kernel. TI has not done much of AM335x USB related kernel development in recent years, so the USB driver in upstream kernel should be the same as TI SDK kernel.

    TI SDK v9.1 kernel is about equivalent to upstream kernel v6.1.46. So first check if this kernel has this issue;

    Next check if upstream kernel v6.1-rc1 has the issue. If not, you can use 'git bisect' between upstream kernel v6.1-rc1 and v6.1.46.

  • Hello, Bin

    I found out that it was caused by some kernel change.

    Can you investigate and fix it?

    This could be a fatal problem.

    Best regards,

  • I found out that it was caused by some kernel change.

    What did you find?

  • Hello, Bin

    Sorry、I haven't found anything

    I misunderstood Bin's answer.

    We need to investigate where the cause is.

    Best regards,

  • Hi Ohya-san,

    As I explained how to use 'git bisect', I was expecting you to debug it.

    I don't have an USB device which has two ACM interfaces to reproduce and debug the problem.