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]

 



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.
I was able to reproduce this issue with all HW Combinations

> > 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`

> If things are not locked up, what is stalled?

The File write to the gadget HID device is stalled.

> > 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.

> > 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?

Thanks

Benjamin



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

  Powered by Linux