# USB HDD schlafen legen

## manuels

Hi,

ich möchte meine USB HDD an meiner Alix schlafen legen, wenn sie X Minuten nicht gebraucht wird.

Hauptsächlich um die Platte zu schonen (Alix läuft 24/7).

Wäre es eine IDE-Platte, würde ich es mit hdparm machen...

Wie läuft das denn bei USB?

Danke!

Manuel

----------

## kernelOfTruth

ja, das sollte gehen du hast (soviel ich weiß) 3 oder mehr Möglichkeiten

*) per hdparm

```
hdparm -Y /dev/foo
```

*) per sdparm

```
sdparm -C stop /dev/foo
```

*) per sys-apps/hd-idle

```
hd-idle -t foo
```

----------

## manuels

Da hab ich mich wohl undeutlich ausgedrückt:

Ich möchte, dass die Platte automatisch nach z.B. 5min sich schlafen legt.

Ich möchte das nicht manuell machen müssen.

----------

## kernelOfTruth

 *manuels wrote:*   

> Da hab ich mich wohl undeutlich ausgedrückt:
> 
> Ich möchte, dass die Platte automatisch nach z.B. 5min sich schlafen legt.
> 
> Ich möchte das nicht manuell machen müssen.

 

```
man hdparm
```

```
hdparm -S 60 /dev/foo
```

----------

## manuels

-S veranlasst aber nur den Standby-Modus, ich möchte den Sleep-Modus.

----------

## kernelOfTruth

 "Skript, das per cron job regelmäßig prüft, ob die Platte angesprochen wurde" 

Quelle:  hd-idle installieren  

du kannst sdparm --flexible --command=stop /dev/$1 durch hdparm -Y /dev/$1

oder was ähnliches ersetzen ...

ist nur die Frage, ob es dann auch geht   :Confused: 

----------

## Massimo B.

hdparm -S ist die Option für automatischen Low-power mode nach einer eingestellten Zeit.

Ich setze das automatisch beim Booten 

```
$ grep -v "^#" /etc/conf.d/hdparm 

cdrom_args="-E 36"

sda_args="  -B255   -M254   -S243"

sdb_args="                  -S243"

sdc_args="  -B100   -M254   -S180"

all_args=""
```

Meine Frage ist nun aber, warum sdc als USB-Device nie beim Booten mit hdparm eingestellt wird. Nach dem Booten muss ich jedesmal /etc/init.d/hdparm neustarten. Was bräuchte das hdparm init-Script als Abhängigkeit, damit USB erkannt wird?

----------

## bell

Ich hatte mal für meinen Media-Center sowas geschrieben. Da habe ich eine USB-Festplatte für die Inhalte die nicht ständig laufen sollte. Bei mir trägt das Skript den Namen "sdparm-idle.sh".

Das Skript prüft alle 30 Sekunden ob es eine Aktivität gab und stoppt nach 300 Sekunden, wenn es keine Zugriffe gab. Gestoppt wird also mit der Genauigkeit +/- 30 Sekunden (Oder wie Du den Parameter setzt).

```
#!/bin/sh

disk=/dev/sdb

interval=300

step=30

#debug=yes

l_debug(){

   if [ "$debug" = "yes" ]; then

      logger "sdparm-idle debug: $@"

   fi

}

state=`cat /sys/block/$(basename $disk)/stat`

count=$interval

up=1

while [ true ]; do

   sleep $step

   newstate=`cat /sys/block/$(basename $disk)/stat`

   l_debug count $count / up $up / state $state / $newstate

   if [ "$state" = "$newstate" ]; then

      if [ $count -gt 0 ]; then

         count=$(($count-$step))

      else

         count=$interval

         if [ $up = 1 ]; then

            logger "sdparm-idle: Festplatte wird angehalten"

            sync

            state="$newstate"

            sdparm --command=stop $disk

            up=0

         fi

      fi

   else

      logger "sdparm-idle: Festplatte ist aktiv, warte $interval Sekunden"

      count=$interval

      state="$newstate"

      up=1

   fi

done &
```

Einfach nach /etc/local.d/sdparm-idle.start ablegen damit es beim Hochfahren mit gestartet wird.

Falls dich die "logger" Zeilen stören kannst Du diese rausnehmen oder durch l_debug ersetzen.

----------

