Re: USB Gadget Filesystem HID stuck on write when using mass storage at the same time

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Jun 30, 2021 at 12:25:09PM +0200, Benjamin Marty wrote:
> Am Mi., 30. Juni 2021 um 11:28 Uhr schrieb Greg KH <gregkh@xxxxxxxxxxxxxxxxxxx>:
> > On Wed, Jun 30, 2021 at 10:55:04AM +0200, Benjamin Marty wrote:
> > > On the iMX8 device `Linux imx8mm-var-dart 5.4.3-g050b21f4b394 #1 SMP
> > > PREEMPT Fri Oct 9 11:36:53 PDT 2020 aarch64 GNU/Linux` and on the
> > > Raspberry Pi device `Linux raspberry 5.10.17-v7l+ #1403 SMP Mon Feb 22
> > > 11:33:35 GMT 2021 armv7l GNU/Linux`.
> >
> > I do not understand, which is the host and which is the gadget here?
> 
> I use both as Gadget, two different HW platforms to rule out a
> Hardware related issue.
> As Host, I've tried multiple normal Intel computers.

What OS is running on the host?

> I was able to reproduce this issue with all HW Combinations

Then perhaps your userspace code running on the gadget is not working
properly?

> > > File write to `/dev/hidg0` starts to hang when there was high mass
> > > storage traffic. It also doesn't recover itself. There is no `complete
> > > kernel lockup`.
> >
> > File write on the host or gadget?
> 
> File write on the gadget to the gadget HID device `/dev/hidg0`

What do you do if that fails?

> > If things are not locked up, what is stalled?
> 
> The File write to the gadget HID device is stalled.

What gadget controller driver are you using?

> > > I haven't used usbmon yet but if I don't have high traffic scenarios
> > > on the mass storage then the mass storage and HID device works as
> > > expected. So I'm confident that I send the correct data.
> >
> > That's fine, but it is good to use usbmon to see what the errors are as
> > well when things go wrong.
> 
> Unfortunately both Kernel Versions don't have the usbmon module, need
> to recompile the Kernel first.

Try that, on the host, it should be part of any normal Linux distro
kernel already.

> > > Also saw that I'm getting this error in dmesg on both devices:
> > > [ 1895.677053] configfs-gadget gadget: End Point Request ERROR: -108
> >
> > Ah, is your userspace code on the gadget not handling this properly?
> > What userspace code is running on the gadget for your USB device
> > emulation?
> 
> Yes, my userspace code is on the gadget. It runs after I've setup the
> gadget HID + gadget Mass Storage. But it starts to fail after High
> Traffic scenarios to the gadget Mass Storage.
> 
> To replicate the issue, I wrote a simple Bash script which just
> wiggles the gadget HID (Mouse) every 50ms:
> 
> while true; do
> if [ -e "/dev/hidg0" ]; then
> echo write0
> echo \\x00\\xff\\xff\\x00\\xff\\xff > /dev/hidg0
> sleep 0.05
> echo write1
> echo \\x00\\xff\\xff\\x00\\xff\\x00 > /dev/hidg0
> sleep 0.05
> fi
> done
> 
> Do I need to check something before writing to the gadget HID device?
> Or should this usage of the gadget HID device be fine?

I do not know, sorry.

greg k-h



[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux