Hi NXP Team,
I try to create a USB Composite using the 1 HID Gadget ( hid.usb0) and 4 UAC Gadgets (uac2.usb0、uac2.usb1、uac2.usb2、uac2.usb3) drivers already in Real-time Edge Yocto Project.
When I configured the fourth UAC Gadget, I found a prompt error.
Errors in log:
root@imx8mp-lpddr4-evk:~# sh usb_gadget.sh start
Start usb gadget
mkdir functions/hid.usb0
mkdir functions/uac2.usb0
mkdir functions/uac2.usb1
mkdir functions/uac2.usb2
mkdir functions/uac2.usb3
[ 893.821612] ep->claimed = 2
[ 893.821784] configfs-gadget gadget: in_epnum=0,out_epnum= 0
[ 893.821790] ep->claimed = 1
[ 893.821792] ep->claimed = 2
[ 893.821795] configfs-gadget gadget: in_epnum=0,out_epnum= 0
usb_gadget.sh: line 118: echo: wr[ 893.821798] ep->claimed = 1
ite error: No such device[ 893.821800] ep->claimed = 2
[ 893.821801] ep->claimed = 4[ 893.822097] configfs-gadget gadget: in_epnum=0,out_epnum= 0
[ 893.822101] ep->claimed = 1
[ 893.822102] ep->claimed = 2
[ 893.822104] ep->claimed = 4
[ 893.822105] ep->claimed = 6
[ 893.822107] configfs-gadget gadget: in_epnum=0,out_epnum= 0
[ 893.822110] ep->claimed = 1
[ 893.822111] ep->claimed = 2
[ 893.822113] ep->claimed = 4
[ 893.822114] ep->claimed = 6
[ 893.822115] ep->claimed = 8
[ 893.822427] configfs-gadget gadget: in_epnum=0,out_epnum= 0
[ 893.822434] ep->claimed = 1
[ 893.822435] ep->claimed = 2
[ 893.822437] ep->claimed = 4
[ 893.822438] ep->claimed = 6
[ 893.822440] ep->claimed = 8
[ 893.822441] ep->claimed = 10
[ 893.822444] configfs-gadget gadget: in_epnum=0,out_epnum= 0
root@imx8mp-lpddr4-evk:~# [ 893.822447] ep->claimed = 1
[ 893.822448] ep->claimed = 2
[ 893.822450] ep->claimed = 4
[ 893.822451] ep->claimed = 6
[ 893.822452] ep->claimed = 8
[ 893.822453] ep->claimed = 10
[ 893.822455] ep->claimed = 12
[ 893.826713] configfs-gadget gadget: in_epnum=0,out_epnum= 0
[ 893.826725] ep->claimed = 1
[ 893.826727] ep->claimed = 2
[ 893.826729] ep->claimed = 4
[ 893.826730] ep->claimed = 6
[ 893.826732] ep->claimed = 8
[ 893.826733] ep->claimed = 10
[ 893.826735] ep->claimed = 12
[ 893.826737] ep->claimed = 14
[ 893.826739] configfs-gadget gadget: afunc_bind:1113 Error!
[ 893.828520] udc 38100000.usb: failed to start g1: -19
It is possible that the system does not have enough endpoints to allocate? What can I do to meet my project requirements?
Using NXP IMX8M Plus LPDDR4 EVK with Real-time Edge V2.5 Image.
Here is my config shell script:
#!/bin/shUDC_USB=$(ls /sys/class/udc)do_start() {# Mount configfs# mount -t configfs none /sys/kernel/configmkdir -m 0770 /sys/kernel/config/usb_gadget/g1cd /sys/kernel/config/usb_gadget/g1# Setting English stringsecho 0x0300 > bcdUSBecho 0x0101 > idProductecho 0x17EF > idVendor# USB 1.1: 0x0110# USB 2.0: 0x0200, USB 2.1: 0x0210, USB 2.5: 0x0250# USB 3.0: 0x0300, USB 3.1: 0x0310, USB 3.2: 0x0320# echo 0x0210 > /sys/kernel/config/usb_gadget/g1/bcdUSBmkdir "strings/0x409"echo "0123456789ABCDEF" > "strings/0x409/serialnumber"echo "Lenovo" > "strings/0x409/manufacturer"echo "Intelligent Spkeaker" > "strings/0x409/product"echo "0xEF" > bDeviceClassecho "0x02" > bDeviceSubClassecho "0x01" > bDeviceProtocolmkdir "configs/c.1"echo 120 > "configs/c.1/MaxPower"mkdir "configs/c.1/strings/0x409"echo "Conf 1" > "configs/c.1/strings/0x409/configuration"# HIDecho "mkdir functions/hid.usb0"mkdir functions/hid.usb0echo 1 > functions/hid.usb0/protocolecho 1 > functions/hid.usb0/subclassecho 8 > functions/hid.usb0/report_lengthcat /home/root/Audio/hid_report_desc > functions/hid.usb0/report_descln -s functions/hid.usb0 configs/c.1# uac2.usb0echo "mkdir functions/uac2.usb0"mkdir functions/uac2.usb0#Speakerecho 0 > functions/uac2.usb0/c_chmaskecho 2 > functions/uac2.usb0/c_ssizeecho 16000 > functions/uac2.usb0/c_srate#MICecho 0x01> functions/uac2.usb0/p_chmaskecho 2 > functions/uac2.usb0/p_ssizeecho 16000 > functions/uac2.usb0/p_srateln -s functions/uac2.usb0 configs/c.1# uac2.usb1echo "mkdir functions/uac2.usb1"mkdir functions/uac2.usb1## Speakerecho 0 > functions/uac2.usb1/c_chmaskecho 2 > functions/uac2.usb1/c_ssizeecho 96000 > functions/uac2.usb1/c_srate## MICecho 0x01> functions/uac2.usb1/p_chmaskecho 2 > functions/uac2.usb1/p_ssizeecho 96000 > functions/uac2.usb1/p_srateln -s functions/uac2.usb1 configs/c.1# uac2.usb2echo "mkdir functions/uac2.usb2"mkdir functions/uac2.usb2## Speakerecho 0 > functions/uac2.usb2/c_chmaskecho 2 > functions/uac2.usb2/c_ssizeecho 16000 > functions/uac2.usb2/c_srate## MICecho 0x01 > functions/uac2.usb2/p_chmaskecho 2 > functions/uac2.usb2/p_ssizeecho 16000 > functions/uac2.usb2/p_srateln -s functions/uac2.usb2 configs/c.1# uac2.usb3echo "mkdir functions/uac2.usb3"mkdir functions/uac2.usb3## Speakerecho 0x01 > functions/uac2.usb3/c_chmaskecho 2 > functions/uac2.usb3/c_ssizeecho "adaptive" > functions/uac2.usb3/c_syncecho 48000 > functions/uac2.usb3/c_srate## MICecho 0 > functions/uac2.usb3/p_chmaskecho 2 > functions/uac2.usb3/p_ssizeecho 48000 > functions/uac2.usb3/p_srateln -s functions/uac2.usb3 configs/c.1#Binding USB Device Controllerecho "$UDC_USB" > UDC}do_stop() {cd /sys/kernel/config/usb_gadget/g1echo "" > UDCrm configs/c.1/hid.usb0rm configs/c.1/uac2.usb0rm configs/c.1/uac2.usb1rm configs/c.1/uac2.usb2rm configs/c.1/uac2.usb3#rm configs/c.1/acm.gs0#rm configs/c.1/mass_storage.0rmdir configs/c.1/strings/0x409rmdir configs/c.1/rmdir functions/hid.usb0/rmdir functions/uac2.usb0/rmdir functions/uac2.usb1/rmdir functions/uac2.usb2/rmdir functions/uac2.usb3/#rmdir functions/acm.gs0/#rmdir functions/mass_storage.0/rmdir strings/0x409cd ..rmdir g1/}case $1 instart)echo "Start usb gadget"do_start;;stop)echo "Stop usb gadget"do_stop;;*)echo "Usage: $0 (stop | start)";;esac