The crux of the 'USB drive disconnects' is to do with compatibility with the USB 3.x protocol - specifically 'USB Attached Storage' (commonly called UAS). With older hardware, connecting via USB 2.0 didn't present a problem with the slower throughput rate, as USB mounted external drives were able to keep up. With manufacturers tending to cut some corners, their product(s) may not be fully UAS compliant. Linux operating systems are more fallible than most, which can lead to USB mounted drives disconnecting.
The workaround to this issue, is to disable 'USB Attached Storage' (UAS) mode on the affected device, and mark it as 'USB Mass Storage' device. To do so, from the console type the following :
[fedora@localhost ~]$ sudo lsusb -t /: Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 5000M |__ Port 1: Dev 2, If 0, Class=Mass Storage, Driver=uas, 5000M /: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 480M /: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/6p, 480M /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/6p, 480M |__ Port 4: Dev 3, If 0, Class=Video, Driver=uvcvideo, 480M |__ Port 4: Dev 3, If 1, Class=Video, Driver=uvcvideo, 480M |__ Port 5: Dev 4, If 0, Class=Vendor Specific Class, Driver=dvb_usb_dib0700, 480M
Locate which Bus & Device is using the UAS driver. In my case, it is Bus 04 Device 2 .
Next, get the device id connected to Bus 04 Device 2.
[fedora@localhost ~]$ sudo lsusb Bus 002 Device 002: ID 8087:8001 Intel Corp. Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 002: ID 8087:8009 Intel Corp. Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 004 Device 002: ID 7825:a2a4 Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 003 Device 004: ID 046d:c248 Logitech, Inc. G105 Gaming Keyboard Bus 003 Device 006: ID 056a:0011 Wacom Co., Ltd Graphire 2 4x5 Bus 003 Device 005: ID 046d:c077 Logitech, Inc. M105 Optical Mouse Bus 003 Device 003: ID 05e3:0608 Genesys Logic, Inc. Hub Bus 003 Device 002: ID 05e3:0608 Genesys Logic, Inc. Hub Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
In this case, the device id is 7825:a2a4 . Whatever your device id is, note it down as this will be important shortly.
Next, we have to make an entry into the kernel's blacklist file. To do this, with root privileges, create a file in '/etc/modprobe.d' directory. Thus :
[root@localhost ~]# cd /etc/modprobe.d [root@localhost modprobe.d]# nano blacklist-uas-on-quirks.conf
Add the following line to 'blacklist-uas-on-quirks.conf' :
options usb-storage quirks=7825:a2a4:u
If there is more than one device id that needs to be added, then add them like so :
options usb-storage quirks=7825:a2a4:u,174c:55aa:u
where device ids are added in the following format:
options usb-storage quirks=[id]:u
Save the file.
Finally, commit the blacklist to the linux kernel by regenerating the initramfs file, then reboot. On Fedora it is thus :
[root@localhost ~]# dracut --force [root@localhost ~]# reboot now
Upon reboot, check that UAS has successfully been disabled for your device by running the following command :
[root@localhost ~]# dmesg | grep UAS [ 1.976152] usb 4-1: UAS is ignored for this device, using usb-storage instead
If your message log is similar to this, then congratulations. Your device should now connect as a USB Storage device instead of the newer USB Attached Storage standard. You can now try and connect / disconnect any USB devices that you were having drop-outs with.
Any comments most welcome.