內核 3.16,按順序加載 `u_serial.ko`、`libcomposite.ko`、`usb_f_serial.ko`、`usb_f_obex.ko`、`usb_f_acm.ko` 均成功,最後加載 `g_serial.ko` 報錯:can't insert 'g_serial.ko' no such device。
`g_serial.ko` 是 **Gadget 驅動的綁定層**,它需要將功能驅動(如 `usb_f_serial`)綁定到 **UDC(USB Device Controller)硬件控制器**上。報 "no such device" 通常意味著:
lsmod | grep -E "musb|dwc3|ci_hdrc|udc"
ls /sys/class/udc/
若無輸出,說明 UDC 未就緒。
dmesg -T | grep -i -e udc -e gadget -e usb -e musb -e dwc3
關注 `udc_core: probe failed` 或 `failed to register gadget` 等錯誤。
若 UDC 存在(如 `musb-hdrc.0.auto`),可嘗試手動綁定:
echo "musb-hdrc.0.auto" > /sys/class/udc/musb-hdrc.0.auto/udc_name # 視內核版本而定
# 或
echo "g_serial" > /sys/class/udc/musb-hdrc.0.auto/udc_name
核心結論:**無 UDC 設備,Gadget 功能驅動無處綁定**,必須先解決 UDC 探測註冊問題。