Sì, è possibile ma richiederà un lavoro di sviluppo personalizzato e non banale e il codice sarà specifico per il chip bridge USB->SATA ALL'INTERNO del tuo contenitore.
L'accordo è che il bridge USB funge da più di un convertitore elettrico. Un HDD collegato tramite USB emula un'unità SCSI con un set di comandi diverso. Mentre i comandi standard di lettura/scrittura/ricerca si traducono continuamente, i più esotici spin up/down non lo fanno. La maggior parte dei chip non lo farà. Inoltre NON esiste un'API universale a livello di chip. Quindi, se scrivessi il codice, dovrei avere un manuale di programmazione per il chip bridge USB.
In conclusione, a meno che tu non abbia specifiche di programmazione sul chip e abbia familiarità con il set di istruzioni ATA e SCSI e l'incapsulamento dei comandi pass-through, allora dovrai semplicemente farne a meno. Troppo lavoro e nessuno standard.
È del tutto possibile che i segnali che stai inviando vengano trascurati. Non hai fornito l'output di
sudo hdparm -I /dev/sdX
che ci avrebbe detto le capacità del disco, ma molti dischi semplicemente non rispondono a questi comandi.
Fortunatamente, c'è un'utility molto comoda, hd-idle, che puoi scaricare da qui, che ti permette di forzare lo spin down del disco dopo un periodo di tempo specificato. Il programma è stato sviluppato appositamente per Debian (ma funziona su Linux in generale), quindi la sua installazione dovrebbe essere molto semplice per te. Spero solo che funzioni anche su un'architettura ARM, qualcosa che non posso testare.
Modifica:si compila e si installa correttamente su raspbian.
Non ho avuto fortuna con hd-idle; funzionava ma non funzionava. Ho finito per scrivere la sceneggiatura qui sotto:
#!/bin/bash
# This script looks for recent disk access, and if nothing has changed, puts /dev/"drive" into spindown mode.
# This should be used only is the hdparm power management function is not working.
# Call this script with cron or manually as desired
#
#
#
# Change which drive this script looks at by changing the drive variable below:
drive="sda"
#
#
current=`date`
caller=$(ps ax | grep "^ *$PPID" | awk '{print $NF}')
filename="/tmp/diskaccess.txt"
if [ -f "$filename" ]; then
stat_old=`cat "$filename" | tr -dc "[:digit:]"`
stat_new=`cat /sys/block/"$drive"/stat | tr -dc "[:digit:]"`
if [ "$stat_old" == "$stat_new" ]; then
stat="0"
echo "The disk hasn't been used; spinning down /dev/$drive"
echo $stat_old
hdparm -y /dev/$drive > /dev/null
else
stat="1"
echo $stat_old
echo $stat_new
echo "The drive has been used..."
echo $stat_new > $filename
fi
else
echo "/tmp/diskaccess.txt file does not exist; creating it now."
echo $stat_new > $filename
fi
echo $stat " - " $drive " - " $current " - by: " $caller >> /tmp/diskaccesslog.txt