Lösung für fehlender spin-down bei usb-hdd an raspi



  • Da ich jetzt doch schon zu viel Zeit damit verbracht habe, dachte ich, ich poste hier eine Lösung auf eine eigene Frage.

    Als ich eine externe Festplatte kaufte und an den Raspi 4 anschloss, viel mir auf, dass immer ein (spin-) Drehgeräusch bestand, egal ob die Fesplatte gemountet war oder nicht.

    Das automount funktionierte bisher stabil mit systemd:

    UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /media/hdd-linux auto noauto,nofail,x-systemd.automount,x-systemd.idle-timeout=5s,x-systemd.device-timeout=5s,x-systemd.mount-timeout=5s,_netdev,x-systemd.requires=network-online.target 0 2
    

    Mit uhubctl und usb_drives_with_no_phantom_load versuchte ich dann lange den USB-Strom abzustellen und anzustellen, wenn das Laufwerk ungemountet bzw. gemountet wurde, was aber immer Fehler hervorbrachte.

    Hier (rasberry-pi4-seagate-external-usb3-0-no-spin-down) fand ich dann die Lösung mit Seagate Dashboard wo es sich unter Windows einstellen lässt. Nachher habe ich es wieder an den Raspi angeschlossen und das Drehgeräusch verschwand, gemäss der eingestellten Zeit.



  • Ich habe noch nachgeschaut, ob sich die Ausgabe von sdparm -a --long /dev/sda verändert hat. Bin mir ziemlich sicher, dass sie sich das hat:

    Power condition [po] mode page:
      PM_BG         0  [cha: n, def:  0, sav:  0]  Power management, background functions, precedence
      STANDBY_Y     0  [cha: n, def:  0, sav:  0]  Standby_y timer enable
      IDLE_C        0  [cha: n, def:  0, sav:  0]  Idle_c timer enable
      IDLE_B        0  [cha: n, def:  0, sav:  0]  Idle_b timer enable
      IDLE_A        0  [cha: n, def:  0, sav:  0]  Idle_a timer enable
      STANDBY_Z     1  [cha: y, def:  1, sav:  1]  Standby_z timer enable
      IACT          0  [cha: n, def:  0, sav:  0]  Idle_a condition timer (100 ms)
      SZCT          1800  [cha: y, def:9000, sav:1800]  Standby_z condition timer (100 ms)
      IBCT          0  [cha: n, def:  0, sav:  0]  Idle_b condition timer (100 ms)
      ICCT          0  [cha: n, def:  0, sav:  0]  Idle_c condition timer (100 ms)
      SYCT          0  [cha: n, def:  0, sav:  0]  Standby_y condition timer (100 ms)
      CCF_IDLE      0  [cha: n, def:  0, sav:  0]  check condition if from idle_c
      CCF_STAND     0  [cha: n, def:  0, sav:  0]  check condition if from a standby
      CCF_STOPP     0  [cha: n, def:  0, sav:  0]  check condition if from stopped
    

    vor allem dort wo cha: y steht.


Log in to reply