-
Notifications
You must be signed in to change notification settings - Fork 5.3k
Open
Description
Describe the bug
Playing with USB gadget functions using Linux 4.19.34 on a Pi 3+ model A.
- g_ether (ECM Ethernet) works fine
- g_multi (RNDIS + ACM + mass storage) does not
To reproduce
- Put in config.txt:
dtoverlay=dwc2,dr_mode=peripheral
-
Connect USB port of Pi 3+ model A, to your PC.
-
Execute on Pi:
sudo dd if=/dev/zero of=/tmp/test bs=1M count=16
sudo modprobe g_multi file=/tmp/test
Expected behaviour
Expect to have working mass storage + Ethernet USB functionality exposed to host PC..
Actual behaviour
Ethernet and mass storage does appear on the host pc, but is not functional, and dmesg gives:
[ 123.302691] using random self ethernet address
[ 123.302706] using random host ethernet address
[ 123.302978] Mass Storage Function, version: 2009/09/11
[ 123.302991] LUN: removable file: (no medium)
[ 123.303130] LUN: file: /tmp/test
[ 123.303136] Number of LUNs=1
[ 123.304025] usb0: HOST MAC c6:78:77:2d:28:d7
[ 123.304153] usb0: MAC 5e:ff:15:d6:f5:ab
[ 123.304743] g_multi gadget: Multifunction Composite Gadget
[ 123.304754] g_multi gadget: userspace failed to provide iSerialNumber
[ 123.304768] g_multi gadget: g_multi ready
[ 123.304802] dwc2 3f980000.usb: bound driver g_multi
[ 123.386658] IPv6: ADDRCONF(NETDEV_UP): usb0: link is not ready
[ 123.607193] dwc2 3f980000.usb: new device is high-speed
[ 123.807244] dwc2 3f980000.usb: new device is high-speed
[ 123.932566] dwc2 3f980000.usb: new address 56
[ 123.983348] g_multi gadget: high-speed config #1: Multifunction with RNDIS
[ 123.983550] IPv6: ADDRCONF(NETDEV_CHANGE): usb0: link becomes ready
[ 125.068336] dwc2 3f980000.usb: dwc2_hsotg_ep_sethalt(ep (ptrval) ep5in, 1)
[ 125.181839] dwc2 3f980000.usb: dwc2_hsotg_ep_sethalt(ep (ptrval) ep5in, 1)
[ 125.181864] dwc2 3f980000.usb: dwc2_hsotg_start_req: ep5 is stalled
[ 125.183494] dwc2 3f980000.usb: dwc2_hsotg_ep_sethalt(ep (ptrval) ep5in, 0)
[ 125.184680] dwc2 3f980000.usb: dwc2_hsotg_ep_sethalt(ep (ptrval) ep5in, 1)
[ 125.301842] dwc2 3f980000.usb: dwc2_hsotg_ep_sethalt(ep (ptrval) ep5in, 1)
[ 125.301867] dwc2 3f980000.usb: dwc2_hsotg_start_req: ep5 is stalled
[ 125.303506] dwc2 3f980000.usb: dwc2_hsotg_ep_sethalt(ep (ptrval) ep5in, 0)
[ 125.304961] dwc2 3f980000.usb: dwc2_hsotg_ep_sethalt(ep (ptrval) ep5in, 1)
[ 125.421798] dwc2 3f980000.usb: dwc2_hsotg_ep_sethalt(ep (ptrval) ep5in, 1)
[ 125.421824] dwc2 3f980000.usb: dwc2_hsotg_start_req: ep5 is stalled
[ 125.423531] dwc2 3f980000.usb: dwc2_hsotg_ep_sethalt(ep (ptrval) ep5in, 0)
[ 125.424713] dwc2 3f980000.usb: dwc2_hsotg_ep_sethalt(ep (ptrval) ep5in, 1)
[ 125.541850] dwc2 3f980000.usb: dwc2_hsotg_ep_sethalt(ep (ptrval) ep5in, 1)
[ 125.541875] dwc2 3f980000.usb: dwc2_hsotg_start_req: ep5 is stalled
[ 125.543536] dwc2 3f980000.usb: dwc2_hsotg_ep_sethalt(ep (ptrval) ep5in, 0)
[ 125.545934] dwc2 3f980000.usb: dwc2_hsotg_ep_sethalt(ep (ptrval) ep5in, 1)
[ 125.661848] dwc2 3f980000.usb: dwc2_hsotg_ep_sethalt(ep (ptrval) ep5in, 1)
[ 125.661869] dwc2 3f980000.usb: dwc2_hsotg_start_req: ep5 is stalled
[ 125.663548] dwc2 3f980000.usb: dwc2_hsotg_ep_sethalt(ep (ptrval) ep5in, 0)
[ 125.664825] dwc2 3f980000.usb: dwc2_hsotg_ep_sethalt(ep (ptrval) ep5in, 1)
[ 125.781803] dwc2 3f980000.usb: dwc2_hsotg_ep_sethalt(ep (ptrval) ep5in, 1)
[ 125.781823] dwc2 3f980000.usb: dwc2_hsotg_start_req: ep5 is stalled
[ 139.090467] dwc2 3f980000.usb: dwc2_hsotg_ep_stop_xfr: timeout GINTSTS.GOUTNAKEFF
[ 139.090609] dwc2 3f980000.usb: dwc2_hsotg_ep_stop_xfr: timeout DOEPCTL.EPDisable
[ 139.090780] dwc2 3f980000.usb: dwc2_hsotg_ep_stop_xfr: timeout GINTSTS.GOUTNAKEFF
[ 139.090917] dwc2 3f980000.usb: dwc2_hsotg_ep_stop_xfr: timeout DOEPCTL.EPDisable
[ 139.091058] dwc2 3f980000.usb: dwc2_hsotg_ep_stop_xfr: timeout GINTSTS.GOUTNAKEFF
[ 139.091195] dwc2 3f980000.usb: dwc2_hsotg_ep_stop_xfr: timeout DOEPCTL.EPDisable
[ 139.157647] dwc2 3f980000.usb: new device is high-speed
[ 139.357074] dwc2 3f980000.usb: new device is high-speed
[ 139.480202] dwc2 3f980000.usb: new address 56
[ 139.514251] g_multi gadget: high-speed config #1: Multifunction with RNDIS
[ 139.575974] dwc2 3f980000.usb: dwc2_hsotg_start_req: ep5 is stalled
[ 139.575993] dwc2 3f980000.usb: dwc2_hsotg_ep_sethalt(ep (ptrval) ep5in, 1)
[ 139.577257] dwc2 3f980000.usb: dwc2_hsotg_ep_sethalt(ep (ptrval) ep5in, 0)
[ 139.691813] dwc2 3f980000.usb: dwc2_hsotg_ep_sethalt(ep (ptrval) ep5in, 1)
[ 139.811809] dwc2 3f980000.usb: dwc2_hsotg_ep_sethalt(ep (ptrval) ep5in, 1)
[..more lines of the same...]
If doing "modprobe g_multi file=/tmp/test stall=0" instead the stalled lines no longer appear, but the timeouts do, and not functional either.
[ 94.483882] using random self ethernet address
[ 94.483898] using random host ethernet address
[ 94.484156] Mass Storage Function, version: 2009/09/11
[ 94.484166] LUN: removable file: (no medium)
[ 94.484302] LUN: file: /tmp/test
[ 94.484309] Number of LUNs=1
[ 94.485159] usb0: HOST MAC 5e:f7:9d:8a:83:20
[ 94.485332] usb0: MAC 96:92:d2:ef:50:23
[ 94.485844] g_multi gadget: Multifunction Composite Gadget
[ 94.485863] g_multi gadget: userspace failed to provide iSerialNumber
[ 94.485874] g_multi gadget: g_multi ready
[ 94.485913] dwc2 3f980000.usb: bound driver g_multi
[ 94.794225] dwc2 3f980000.usb: new device is high-speed
[ 94.930071] dwc2 3f980000.usb: new device is high-speed
[ 94.995663] dwc2 3f980000.usb: new address 73
[ 95.046364] g_multi gadget: high-speed config #1: Multifunction with RNDIS
[ 198.091416] dwc2 3f980000.usb: dwc2_hsotg_ep_stop_xfr: timeout GINTSTS.GOUTNAKEFF
[ 198.091559] dwc2 3f980000.usb: dwc2_hsotg_ep_stop_xfr: timeout DOEPCTL.EPDisable
[ 198.091735] dwc2 3f980000.usb: dwc2_hsotg_ep_stop_xfr: timeout GINTSTS.GOUTNAKEFF
[ 198.091872] dwc2 3f980000.usb: dwc2_hsotg_ep_stop_xfr: timeout DOEPCTL.EPDisable
[ 198.092014] dwc2 3f980000.usb: dwc2_hsotg_ep_stop_xfr: timeout GINTSTS.GOUTNAKEFF
[ 198.092152] dwc2 3f980000.usb: dwc2_hsotg_ep_stop_xfr: timeout DOEPCTL.EPDisable
[ 198.158516] dwc2 3f980000.usb: new device is high-speed
[ 198.359637] dwc2 3f980000.usb: new device is high-speed
[ 198.483747] dwc2 3f980000.usb: new address 73
[ 198.521974] g_multi gadget: high-speed config #1: Multifunction with RNDIS
Metadata
Metadata
Assignees
Labels
No labels