Passer au contenu principal

Lecture du SMART en USB UAS

SAT avec UAS sous Linux — Guide de dépannage pour smartmontools

Problème

Dans certaines situations, le pilote Linux uas désactive les transferts SAT (ATA passthrough), ce qui empêche smartmontools (et d'autres outils comme hdparm) de communiquer avec un disque SATA connecté en USB.

Le symptôme typique est une erreur de ce type :

Read Device Identity failed: scsi error unsupported field in scsi command
A mandatory SMART command failed: exiting.

Ou encore :

Unknown USB bridge [0xXXXX:0xXXXX (0xXXXX)]
Please specify device type with the -d option.

Pourquoi ?

Certains chipsets bridges USB-SATA ne gèrent pas correctement les commandes SAT en mode UAS. Le noyau Linux active alors automatiquement le flag NO_ATA_1X pour ces chipsets, ce qui désactive le passthrough SAT et bloque smartmontools.

Les appareils concernés incluent notamment les boîtiers Seagate, les chipsets Initio INIC-3069 et VIA VL711.


Étape 1 — Identifier les IDs USB du périphérique

lsusb

Repérez la ligne correspondant à votre disque, par exemple :

Bus 002 Device 003: ID XXXX:YYYY Nom du fabricant
  • XXXX = vendor ID
  • YYYY = product ID

Notez ces deux valeurs, elles seront utilisées dans toutes les commandes suivantes.


Étape 2 — Vérifier le pilote utilisé

lsusb -t

Si votre périphérique utilise le pilote uas, c'est probablement la cause du problème.


Étape 3 — Forcer le type de device avec smartctl

Avant tout, essayez simplement de forcer le type SAT :

sudo smartctl -d sat -a /dev/sdX

Si ça échoue, tentez avec une longueur de commande différente :

sudo smartctl -d sat,12 -a /dev/sdX
sudo smartctl -d sat,16 -a /dev/sdX

Remplacez /dev/sdX par le chemin réel de votre disque (/dev/sda, /dev/sdb, etc.).


Étape 4 — Basculer temporairement vers usb-storage

Si les commandes ci-dessus échouent, désactivez temporairement UAS pour votre périphérique :

sudo modprobe -r uas
sudo modprobe usb-storage quirks=XXXX:YYYY:u

Débranchez puis rebranchez le disque, puis relancez smartctl :

sudo smartctl -d sat -a /dev/sdX

Étape 5 — Solutions permanentes

Option A — Désactiver UAS (recommandé)

Crée un fichier de configuration modprobe :

sudo nano /etc/modprobe.d/usb-storage-quirks.conf

Ajoutez :

options usb-storage quirks=XXXX:YYYY:u

Le flag :u active IGNORE_UAS — le noyau utilisera usb-storage à la place de uas.

Option B — Forcer le SAT passthrough en gardant UAS

⚠️ À vos risques et périls — peut causer des instabilités sur certains chipsets.

Même fichier, mais avec le flag :t qui force le passthrough SAT malgré UAS :

options usb-storage quirks=XXXX:YYYY:t

Pour plusieurs périphériques

Séparez les entrées par des virgules :

options usb-storage quirks=XXXX:YYYY:u,AAAA:BBBB:u

Mise à jour de l'initramfs

Après avoir créé ou modifié le fichier de configuration :

sudo update-initramfs -u

Option via GRUB

Modifiez /etc/default/grub et ajoutez le paramètre à GRUB_CMDLINE_LINUX_DEFAULT :

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash usb-storage.quirks=XXXX:YYYY:u"

Puis mettez à jour GRUB :

sudo update-grub

Référence des flags

Flag Valeur hex Lettre Effet
IGNORE_UAS 0x00800000 :u Désactive UAS, bascule sur usb-storage
NO_ATA_1X 0x02000000 :t Force le SAT passthrough (risqué)

Vérification

Après redémarrage ou reconnexion du disque :

sudo smartctl -a /dev/sdX

Un résultat valide commencera par une section === START OF INFORMATION SECTION === avec les informations de votre disque.


Sources