On Mon, May 06, 2024 at 09:44:52PM +0530, Muni Sekhar wrote: > On Mon, May 6, 2024 at 7:59 PM Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> wrote: > > > > On Mon, May 06, 2024 at 04:44:30PM +0530, Muni Sekhar wrote: > > > While we have successfully converted most of the USB device driver > > > functionality from kernel space to user space using libusb, we are now > > > seeking guidance on how to implement USB device suspend/resume in user > > > space. Specifically, we would like to know if libusb provides support > > > for achieving the suspend/resume functionality mentioned above. > > > Additionally, any insights or suggestions on how to accomplish this > > > task would be greatly appreciated. > > > > Your question is about libusb, right? So you'll get better answers if > > you post it on the libusb mailing list rather than the linux-usb mailing > > list. > Can USB device suspend\resume be implemented in user space driver > using software other than libusb? Yes, a userspace driver can use the usbfs interface and can employ the ioctl commands listed in /usr/include/linux/usbdevfs.h. It's possible that libusb also provides facilities for controlling suspend and resume; I don't know whether it does. > If so, what are those methods or techniques to achieve USB device > suspend\resume , can you please provide clarity on this. As far as I know, these usbfs ioctl commands are not documented anywhere. The USBDEVFS_FORBID_SUSPEND ioctl prevents the device from being suspended, and wakes it up if it is currently suspended. The USBDEVFS_ALLOW_SUSPEND ioctl allows the device to be suspended. The suspend may not happen immediately; it is controlled by the settings in the device's power/control and power/autosuspend (or power/autosuspend_delay_ms) sysfs attribute files. The USBDEVFS_WAIT_FOR_RESUME ioctl waits until the device resumes, whether because of a remote wakeup or because another process has resumed it, and then forbids the device from suspending again until you perform another USBDEVFS_ALLOW_SUSPEND ioctl. Alan Stern