I had the same problem. In my case, S.M.A.R.T had been working properly on the device for years while using Ubuntu 12.04, and then under Ubuntu 14.04 it happened exactly what you tell in the question.
The problem is related to a new kernel module that was introduced in Linux Kernel 3.15 called uas
(USB Attached SCSI) (see release announcement).
That module is now the responsible of managing USB Mass Storage Devices. There is a thread where people complain that uas
in kernel 3.15 is causing their USB devices to fail. Another one says that it might be the cause of S.M.A.R.T problems.
Fortunately, those problems seem to be gone at kernel 3.19 (which I am using), as my device is being detected correctly. Only the S.M.A.R.T problem remains.
To fix it, you need to disable the use of uas
module for the given device.
Disable uas
without rebooting
First, unplug all USB devices that might be using it. Then, remove the uas
and usb-storage
modules:
sudo modprobe -r uas
sudo modprobe -r usb-storage
Then, load usb-storage
module with a parameter that tells it to not use uas
for a given device:
sudo modprobe usb-storage quirks=VendorId:ProductId:u
VendorId
and ProductId
must be replaced by your device vendor and product id, which can be obtained with lsusb
command (they are the characters after ID
).
For example, I have the following device:
Bus 002 Device 011: ID 0bc2:3320 Seagate RSS LLC SRD00F2 [Expansion Desktop Drive]
So my vendor id is 0bc2
, and my product id is 3320
. My command is:
sudo modprobe usb-storage quirks=0bc2:3320:u
The last u
tells usb-storage
to ignore uas
for the device (see source).
At this point, you can insert the USB device, and it will know not to use uas
, making S.M.A.R.T work properly. You will see lines like these in dmesg
when inserting the USB device:
usb 2-2: UAS is blacklisted for this device, using usb-storage instead
usb-storage 2-2:1.0: USB Mass Storage device detected
usb-storage 2-2:1.0: Quirks match for vid 0bc2 pid 3320: 800000
scsi host12: usb-storage 2-2:1.0
Make the change permanent
The previous quirk will only last until you reboot the system. To make it persistent, you need to follow the steps described here, which I copy below:
First, create a file named ignore_uas.conf
in the /etc/modprobe.d/
directory with the following content:
options usb-storage quirks=VendorId:ProductId:u
As before, substitute VendorId
and ProductId
by your device vendor and product id obtained from lsusb
.
Next, regenerate your inital ramdisk:
mkinitcpio -p linux
or, on newer Ubuntu versions:
sudo update-initramfs -u
Finally, reboot your computer.
Edit:
More background on the issue, and another way to get around it without disabling uas (which has better throughput than usb-storage) can be found here: https://www.smartmontools.org/ticket/971#comment:12
It seems that kernel is blacklisting SAT ATA PASS-THROUGH
on some devices when running in uas mode, as they have broken firmware.
So, the blacklisting can be disabled (at your own risk) by using the previous method I mention in the answer, but removing the final u
from the quirk, ie:
quirks=VendorId:ProductId:
Please note, however, that I have not tested this approach.