
Wenn du versuchst, die Firmware der Dell WD19/WD19S Dockingstation auf Proxmox (oder Debian) mit fwupdmgr zu aktualisieren, kannst du auf den klassischen Fehler Operation timed out während der Phase Erasing… stoßen. In der Praxis scheitert das Update oft wegen USB-Energieverwaltung (Autosuspend). Unten findest du einen einfachen, wirksamen Fix sowie ein fertiges Script zum Ausführen auf Server oder Laptop.
Symptome
Am häufigsten erscheint während des Dock-Updates (WD19/WD19S) ein Fehler ähnlich wie dieser:
|
1 |
failed to write-firmware: failed to erase bank: failed after 5 retries: failed to SetReport: USB error: Operation timed out [-7] |
In diesem Fall kann fwupdmgr das WD19S-Gerät als Update State: Failed anzeigen oder ständig pending activation melden – der Flash-Vorgang wird aber nicht vollständig abgeschlossen.
Warum passiert das?
Beim Flashen führt das Dock lang laufende Operationen aus. Wenn das System versucht, über USB Strom zu sparen (Autosuspend), können USB-Control-Transfers fehlschlagen. Das Ergebnis ist ein Timeout genau beim Löschen der Firmware-Bank (erase bank).
Schneller Fix: USB-Autosuspend während des Updates deaktivieren
Die einfachste Lösung ist, Autosuspend temporär auf -1 zu setzen (also deaktivieren). Diese Einstellung gilt bis zum Neustart (außer du machst sie dauerhaft per Kernel-Cmdline), reicht aber völlig für den Update-Prozess.
|
1 |
echo -1 > /sys/module/usbcore/parameters/autosuspend |
Danach startest du das Update:
|
1 2 |
fwupdmgr refresh --force fwupdmgr update |
Nach dem Update: „pending activation” und USB-Kabel trennen
Nach einer erfolgreichen Firmware-Installation für WD19/WD19S gibt fwupdmgr oft diese Meldung aus:
|
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. |
Dann gehst du genau so vor:
- USB-C-Kabel vom Dock trennen (vom Laptop).
- (Optional) Stromversorgung des Docks für 10–15 Sekunden trennen und wieder anschließen.
- USB-C-Kabel wieder einstecken.
- Aktivierung ausführen:
|
1 |
fwupdmgr activate |
Am Ende überprüfst du den Status:
|
1 2 |
fwupdmgr get-updates fwupdmgr get-devices | less |
Fertiges Script: Installation + Update + Autosuspend deaktivieren (mit Restore)
Unten findest du ein fertiges Script, das:
fwupdinstalliert- LVFS-Metadaten aktualisiert
- USB-Autosuspend temporär deaktiviert (damit WD19S keine Timeouts wirft)
- Firmware-Updates ausführt
- danach den vorherigen Autosuspend-Wert wiederherstellt (auch wenn das Update fehlschlägt)
Du kannst das Script aus dem Artikel kopieren – oder schneller soll’s gehen: Du kannst es direkt herunterladen von:
https://soban.pl/bash/dell_updage.sh
Beispiel zum Download und Ausführen:
|
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 |
Wenn du den Inhalt vor dem Ausführen prüfen willst:
|
1 |
curl -fsSL https://soban.pl/bash/dell_updage.sh | less |
Falls less nicht installiert ist:
|
1 2 |
apt update apt install -y less |
Script (vollständiger Inhalt)
|
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." |
Script ausführen
Am einfachsten so:
|
1 2 |
chmod +x dell_updage.sh ./dell_updage.sh |
FAQ & Tipps
- Update schlägt immer noch fehl? Trenne alle Geräte vom Dock (Monitore/LAN/USB), lasse nur Strom und USB-C, führe einen Hard-Reset durch (Strom 30s abziehen) und versuche es erneut.
- „pending activation” nach dem Update – das ist bei WD19/WD19S normal. Du musst USB-C abziehen, wieder einstecken und dann
fwupdmgr activateausführen. - Aktualisiert das den Laptop-BIOS? Nicht immer.
fwupdmgrzeigt „System Firmware” (BIOS/UEFI) separat vom Dock. Dieser Artikel konzentriert sich auf das Dock und das USB-Timeout-Problem.
Zusammenfassung
Wenn ein Dell WD19/WD19S Firmware-Update auf Proxmox/Debian während Erasing… scheitert, reicht es in den meisten Fällen, USB-Autosuspend temporär zu deaktivieren. Das Script oben macht das automatisch und stellt danach die vorherige Einstellung wieder her, damit dein System normal weiterläuft.