
Si vous essayez de mettre à jour le firmware d’une station d’accueil Dell WD19/WD19S sur Proxmox (ou Debian) via fwupdmgr, vous pouvez tomber sur l’erreur classique Operation timed out pendant l’étape Erasing…. En pratique, la mise à jour échoue à cause de la gestion d’énergie USB (autosuspend). Ci-dessous, vous trouverez un correctif simple et efficace, ainsi qu’un script prêt à l’emploi à lancer sur un serveur ou un ordinateur portable.
Symptômes
Le plus souvent, pendant la mise à jour du firmware du dock (WD19/WD19S), vous verrez une erreur similaire à :
|
1 |
failed to write-firmware: failed to erase bank: failed after 5 retries: failed to SetReport: USB error: Operation timed out [-7] |
À ce stade, fwupdmgr peut afficher le périphérique WD19S en Update State: Failed ou continuer à indiquer pending activation, mais le flash ne se termine jamais complètement.
Pourquoi cela arrive-t-il ?
Pendant le flash, le dock effectue des opérations longues. Si le système tente d’économiser de l’énergie sur l’USB (autosuspend), les transferts de contrôle USB peuvent échouer. Résultat : un timeout exactement lors de l’effacement de la banque de firmware (erase bank).
Correctif rapide : désactiver l’autosuspend USB pendant la mise à jour
La solution la plus simple consiste à définir temporairement l’autosuspend à -1 (désactivé). Ce paramètre reste actif jusqu’au redémarrage (sauf si vous le rendez permanent via la cmdline du noyau), mais cela suffit largement le temps de la mise à jour.
|
1 |
echo -1 > /sys/module/usbcore/parameters/autosuspend |
Ensuite, lancez la mise à jour :
|
1 2 |
fwupdmgr refresh --force fwupdmgr update |
Après la mise à jour : “pending activation” et nécessité de débrancher le câble
Après une installation réussie du firmware pour WD19/WD19S, fwupdmgr affiche souvent le message suivant :
|
1 2 |
The update will continue when the device USB cable has been unplugged. WD19S is pending activation; use fwupdmgr activate to complete the update. |
Procédez dans cet ordre précis :
- Débranchez le câble USB-C du dock (côté ordinateur).
- (Optionnel) Débranchez l’alimentation du dock pendant 10–15 secondes, puis rebranchez-la.
- Rebranchez le câble USB-C.
- Lancez l’activation :
|
1 |
fwupdmgr activate |
Enfin, vérifiez le statut :
|
1 2 |
fwupdmgr get-updates fwupdmgr get-devices | less |
Script prêt à l’emploi : installation + mise à jour + désactivation autosuspend (avec restauration)
Ci-dessous, un script prêt à l’emploi qui :
- installe
fwupd - rafraîchit les métadonnées LVFS
- désactive temporairement l’autosuspend USB (pour éviter les timeouts sur WD19S)
- lance les mises à jour du firmware
- restaure ensuite la valeur précédente d’autosuspend (même en cas d’échec)
Vous pouvez copier le script directement depuis cet article, mais si vous préférez aller plus vite, vous pouvez le télécharger ici :
https://soban.pl/bash/dell_updage.sh
Exemple de téléchargement et d’exécution :
|
1 2 3 4 |
cd /root/scripts curl -fsSL https://soban.pl/bash/dell_updage.sh -o dell_updage.sh chmod +x dell_updage.sh ./dell_updage.sh |
Si vous voulez prévisualiser le script avant de l’exécuter :
|
1 |
curl -fsSL https://soban.pl/bash/dell_updage.sh | less |
Si less n’est pas installé :
|
1 2 |
apt update apt install -y less |
Script (contenu complet)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
#!/bin/bash set -euo pipefail # dell upgrade: # - installs fwupd # - refreshes metadata # - runs fwupdmgr update # - TEMPORARILY disables USB autosuspend to avoid WD19/WD19S timeouts # - restores autosuspend setting after update echo "[INFO] Installing fwupd..." apt update apt install -y fwupd echo "[INFO] Refreshing firmware metadata..." fwupdmgr refresh --force fwupdmgr get-updates || true # Save current autosuspend value (if exists) AUTOSUSPEND_PATH="/sys/module/usbcore/parameters/autosuspend" OLD_AUTOSUSPEND="" if [[ -f "$AUTOSUSPEND_PATH" ]]; then OLD_AUTOSUSPEND="$(cat "$AUTOSUSPEND_PATH" || true)" echo "[INFO] Current usbcore autosuspend: ${OLD_AUTOSUSPEND}" else echo "[WARN] autosuspend sysfs file not found: $AUTOSUSPEND_PATH" fi restore_autosuspend() { if [[ -f "$AUTOSUSPEND_PATH" && -n "${OLD_AUTOSUSPEND}" ]]; then echo "[INFO] Restoring usbcore autosuspend back to: ${OLD_AUTOSUSPEND}" echo "${OLD_AUTOSUSPEND}" > "$AUTOSUSPEND_PATH" || true fi } trap restore_autosuspend EXIT # Disable autosuspend to prevent USB timeout during dock firmware erase/write if [[ -f "$AUTOSUSPEND_PATH" ]]; then echo "[INFO] Disabling USB autosuspend (set to -1) to avoid dock update timeouts..." echo -1 > "$AUTOSUSPEND_PATH" fi read -p ""Do you want to update the entire device? (y/n): " answer if [[ "$answer" == "y" || "$answer" == "Y" ]]; then echo "[INFO] Running fwupdmgr update..." fwupdmgr update || { echo "[ERROR] fwupdmgr update failed." echo "[HINT] If this is Dell dock (WD19/WD19S), try: unplug USB-C, replug, then run: fwupdmgr activate" exit 1 } echo "[INFO] Update finished." echo "[INFO] If you updated a Dell dock and it says 'pending activation':" echo " 1) Unplug USB-C cable from the dock" echo " 2) (Optional) Unplug dock power for 10 seconds, plug back" echo " 3) Run: fwupdmgr activate" else echo "[INFO] Skipping firmware update." fi echo "[INFO] Done." |
Exécuter le script
Le plus simple :
|
1 2 |
chmod +x dell_updage.sh ./dell_updage.sh |
FAQ & conseils
- La mise à jour échoue encore ? Débranchez tous les périphériques du dock (écrans/LAN/USB), ne laissez que l’alimentation et l’USB-C, faites un hard reset (débranchez l’alimentation 30s), puis réessayez.
- “pending activation” après la mise à jour – c’est normal pour WD19/WD19S. Vous devez débrancher l’USB-C, rebrancher, puis exécuter
fwupdmgr activate. - Est-ce que ça met à jour le BIOS du laptop ? Pas forcément.
fwupdmgrliste séparément “System Firmware” (BIOS/UEFI) et le dock. Cet article se concentre sur le dock et le problème de timeout USB.
Résumé
Si la mise à jour du firmware Dell WD19/WD19S échoue sur Proxmox/Debian pendant l’étape Erasing…, il suffit dans la plupart des cas de désactiver temporairement l’autosuspend USB. Le script ci-dessus le fait automatiquement, puis restaure le réglage précédent afin que le système continue de fonctionner normalement.