Pocketbeagle 2 USB Network Access from Windows - USB NCM Driver

With the current Pocketbeagle 2 image (BeagleBoard.org Debian Bookworm Minimal Image 2025-03-25) the usb network interface does not plug-and-play configure on windows; so the quickstart tutorial fails and you can not easily access the pocketbeagle device.

This is because the usb network device (CDC NCM) is not recognized by windows and it does not identify and load the correct driver. The network device is function if you manually select the appropriate driver for the “CDC NCM” device via:

I believe this is a misconfiguration in the PocketBeagle2 image, which needs a few updates to the usb device configuration to allow windows to recognize the NCM driver.
See:

The pocketbeagle 2 does not have these config entries present.

1 Like

Thanks for testing and debugging! At this point all my machines had been updated to Windows 11, I’ll add those ncm changes to libcomposite.

Taking a break, was fighing this on windows 10 today…

Wip: repos-arm64/bb-usb-gadgets/suite/bookworm/debian/bb-start-acm-ncm-rndis-old-gadget at main · beagleboard/repos-arm64 · GitHub

[319]: + USB0_DEV_ADDR=1C:BA:8C:A2:ED:6B
[319]: + USB1_HOST_ADDR=1C:BA:8C:A2:ED:6C
[319]: + USB1_DEV_ADDR=1C:BA:8C:A2:ED:6D
[319]: + [ -f /etc/default/bb-boot ]
[319]: + . /etc/default/bb-boot
[319]: + USB_UMTPRD_CONFIG=/etc/bbb.io/templates/bbb-umtprd.conf
[319]: + USB_RNDIS_DISABLED=yes
[319]: + [ -f /etc/default/generic-sys-mods ]
[319]: + . /etc/default/generic-sys-mods
[319]: + ROOT_DRIVE=/dev/mmcblk1
[319]: + ROOT_PARTITION=3
[319]: + ARCH_SOC_MODULES=am62
[319]: + log=usb_gadget:
[319]: + usb_gadget=/sys/kernel/config/usb_gadget
[319]: + usb_idVendor=0x1d6b
[319]: + usb_idProduct=0x0104
[319]: + usb_bcdDevice=0x0404
[319]: + usb_bcdUSB=0x0200
[319]: + usb_serialnr=000000
[319]: + usb_product=USB Device
[319]: + usb_iserialnumber=1234BBBK5678
[333]: + cat /proc/device-tree/model
[336]: + awk {print $1}
[337]: + tr -d \000
[319]: + usb_imanufacturer=BeagleBoard.org
[345]: + cat /proc/device-tree/model
[346]: + awk {print $2}
[348]: + tr -d \000
[319]: + usb_iproduct=PocketBeagle2
[319]: + usb_ms_stall=0
[319]: + usb_ms_cdrom=0
[319]: + usb_ms_nofua=1
[319]: + usb_ms_removable=1
[319]: + usb_ms_ro=1
[319]: + usb_ms_imagefile=/etc/bbb.io/templates/beagle-getting-started.img
[319]: + [ -f /etc/default/usb-oem ]
[319]: + use_libcomposite
[319]: + echo usb_gadget: Looking for libcomposite
[319]: usb_gadget: Looking for libcomposite
[319]: + [ -d /sys/kernel/config/usb_gadget/ ]
[319]: + run_libcomposite
[319]: + [ ! -d /sys/kernel/config/usb_gadget/g_multi/ ]
[319]: + echo usb_gadget: Creating g_multi
[319]: usb_gadget: Creating g_multi
[319]: + mkdir -p /sys/kernel/config/usb_gadget/g_multi
[319]: + cd /sys/kernel/config/usb_gadget/g_multi
[319]: + echo 0x0200
[319]: + echo 0x1d6b
[319]: + echo 0x0104
[319]: + echo 0x0404
[319]: + echo 0xEF
[319]: + echo 0x02
[319]: + echo 0x01
[319]: + echo 0x0100
[319]: + mkdir -p strings/0x409
[319]: + echo 1234BBBK5678
[319]: + echo BeagleBoard.org
[319]: + echo PocketBeagle2
[319]: + mkdir -p configs/c.1/strings/0x409
[319]: + echo BeagleBone Composite
[319]: + echo 500
[319]: + mkdir -p os_desc
[319]: + echo 1
[319]: + echo 0xbc
[319]: + echo MSFT100
[319]: + [ ! xyes = xyes ]
[319]: + mkdir -p functions/ncm.usb0
[319]: + mkdir -p functions/ncm.usb0/os_desc/interface.ncm
[319]: + echo WINNCM
[319]: + [ ! x1C:BA:8C:A2:ED:6A = x ]
[319]: + echo 1C:BA:8C:A2:ED:6A
[319]: + echo 1C:BA:8C:A2:ED:6B
[319]: + ln -s functions/ncm.usb0 configs/c.1/
[319]: + mkdir -p functions/acm.usb0
[319]: + ln -s functions/acm.usb0 configs/c.1/
[319]: + [ ! x = xyes ]
[319]: + [ -f /etc/bbb.io/templates/beagle-getting-started.img ]
[319]: + [ ! x = xyes ]
[319]: + [ -f /etc/bbb.io/templates/bbb-umtprd.conf ]
[319]: + [ -f /usr/bin/umtprd ]
[319]: + mkdir -p functions/ffs.mtp
[319]: + ln -s functions/ffs.mtp configs/c.1
[319]: + mkdir /dev/ffs-mtp
[319]: + mount -t functionfs mtp /dev/ffs-mtp
[319]: +
[409]: +
[319]: sleep 1

        +++++++++++++++++ Device Information ++++++++++++++++++
Device Description       : CDC NCM
Kernel Name (PDO)        : \Device\0000007e
Device ID                : USB\VID_1D6B&PID_0104&MI_00\6&3069A884&0&0000
Hardware IDs             : USB\VID_1D6B&PID_0104&REV_0100&MI_00 USB\VID_1D6B&PID_0104&MI_00
Driver KeyName           : -
Legacy BusType           : PNPBus
Enumerator               : USB
Location Info            : 0000.0012.0002.002.000.000.000.000.000
Address                  : 2
Manufacturer Info        : -
Capabilities             : 0x00 (-)
Status                   : 0x01802400 (DN_HAS_PROBLEM, DN_DISABLEABLE, DN_NT_ENUMERATOR, DN_NT_DRIVER)
Problem Code             : 28 (CM_PROB_FAILED_INSTALL)
EnhancedPowerMgmtEnabled : 0
Power State              : D3 (supported: D0, D2, D3, wake from D0, wake from D2)

Regards,