Re: Forcing re-enumeration of a chosen USB device from userspace?

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

 



On Fri, Aug 09, 2024 at 11:02:06AM +0200, Michał Pecio wrote:
> > You can reset the device by using the usbreset program, which is part
> > of the usbutils package.  Some distributions (such as Ubuntu) include
> > it whereas others (such as Fedora) don't.  But if you don't have it,
> > you can get the source code from https://github.com/gregkh/usbutils/
> > and build it yourself.
> > 
> > If the reset causes some descriptors to change, the kernel will 
> > re-enumerate the device.
> 
> Thanks for the suggestion. I compiled the tool fom Greg's repository
> and ran it 100 times in a loop, but the descriptors remained unchanged.
> 
> I only got "reset USB device" messages in dmesg and class driver noise.
> 
> 
> I had no luck playing with sysfs entries of the device, but I found
> that the parent hub allows me to disable/enable individual ports. There
> is some subtlely in USB 3.0 as the associated 2.0 port must be disabled
> first to prevent downgrading to high speed, but it works.
> 
> Curiously though, it doesn't have the same effect as reloading the host
> driver. My buggy device randomly comes back with good descriptors, with
> the same bad descriptors, or most often it doesn't come back at all.

I would guess that the difference has to do with whether or not power to 
the USB port is turned off.  But that doesn't explain why the device 
fails to enumerate properly the first time it gets plugged in.

Alan Stern




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

  Powered by Linux