Skip to content

Kernel 6.12.47: CDC ACM driver fails to create /dev/ttyACM0 device nodes #7151

@pavliha

Description

@pavliha

Description

On Raspberry Pi with kernel 6.12.47, the CDC ACM USB driver fails to properly create device nodes for USB CDC ACM devices (e.g., ArduPilot flight controllers). The driver reports successful registration in kernel logs, but the device node is never actually created, making the devices completely unusable.

Environment

  • Kernel Version: 6.12.47+rpt-rpi-v8 var->green.length may be left uninitialized #1 SMP PREEMPT Debian 1:6.12.47-1+rpt1~bookworm (2025-09-16)
  • Hardware: Raspberry Pi (aarch64)
  • OS: Debian Bookworm
  • Affected Device: ArduPilot SpeedyBeeF405WING (USB VID:PID 1209:5741)

Symptoms

  1. Kernel logs show device creation:

    [  187.540902] cdc_acm 1-1.3:1.0: ttyACM0: USB ACM device
    
  2. /dev/ttyACM0 does not exist:

    $ ls /dev/ttyACM*
    ls: cannot access '/dev/ttyACM*': No such file or directory
  3. No sysfs entry is created:

    $ find /sys/devices -name 'ttyACM*'
    # No output - device doesn't exist in sysfs
  4. Driver shows as unbound:

    $ cat /sys/kernel/debug/usb/devices | grep -A8 'Vendor=1209 ProdID=5741'
    I:* If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=02 Prot=01 Driver=(none)
  5. Device is visible in lsusb:

    Bus 001 Device 007: ID 1209:5741 Generic SpeedyBeeF405WING
    

Steps to Reproduce

  1. Connect a USB CDC ACM device (e.g., ArduPilot flight controller with VID 1209, PID 5741)
  2. Check kernel logs: dmesg | grep ttyACM shows device creation message
  3. Check device node: ls /dev/ttyACM* shows no device
  4. Check USB debug: cat /sys/kernel/debug/usb/devices shows Driver=(none)

Analysis

The cdc_acm driver appears to have a silent failure where:

  • cdc_acm_probe() reports success and logs device creation
  • The TTY device is never actually registered with the kernel
  • No error messages are generated
  • The driver never binds to the USB interface

Manual attempts to bind the driver also fail silently:

$ echo '1-1.3:1.0' | sudo tee /sys/bus/usb/drivers/cdc_acm/bind
# Kernel logs show "ttyACM0: USB ACM device" but device still doesn't exist

Impact

  • All USB CDC ACM devices are completely unusable on kernel 6.12.47
  • This affects: ArduPilot/PX4 flight controllers, Arduino boards, 3D printer controllers, and other CDC ACM devices
  • Users report this worked fine on earlier kernels (likely 6.6.x)

Related Information

Expected Behavior

The cdc_acm driver should:

  1. Bind to the USB CDC ACM interface
  2. Create the /dev/ttyACM0 device node
  3. Register the device in sysfs at /sys/class/tty/ttyACM0

Workaround

Using a USB-to-Serial adapter (FTDI/CH340) with different drivers works correctly on this kernel.

Request

Please investigate this regression and provide a fix or guidance on downgrading to a working kernel version (6.6.x).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions