Ano, je to možné, ale bude to vyžadovat určitou vlastní vývojovou práci a ne triviální a kód bude specifický pro čip USB->SATA bridge UVNITŘ vašeho krytu.
Dohoda spočívá v tom, že můstek USB slouží jako více než jen elektrický převodník. HDD připojený přes USB emuluje jednotku SCSI, která má jinou sadu příkazů. Zatímco standardní příkazy čtení/zápis/hledání překládají neustále, exotičtější rotace nahoru/dolů ne. Většina čipů to neudělá. Navíc NENÍ univerzální API na úrovni čipu. Takže kdybych napsal kód, musel bych mít programovací manuál pro čip USB bridge.
Sečteno a podtrženo, pokud nemáte programovací specifika na čipu a nejste obeznámeni s instrukční sadou ATA a SCSI a zapouzdřujícími průchozí příkazy, pak se bez nich budete muset obejít. Příliš mnoho práce a žádný standard.
Je zcela možné, že signály, které vysíláte, jsou zanedbané. Neposkytli jste výstup
sudo hdparm -I /dev/sdX
což by nám řeklo možnosti disku, ale mnoho disků na tyto příkazy prostě nereaguje.
Naštěstí existuje velmi pohodlná utilita, hd-idle, kterou si můžete stáhnout zde a která vám umožní vynutit roztočení disku po určité zadané době. Program byl vyvinut speciálně pro Debian (ale obecně funguje na Linuxu), takže jeho instalace by pro vás měla být velmi snadná. Jen doufám, že to také funguje na architektuře ARM, což nemohu testovat.
Edit:na raspbian se zkompiluje a nainstaluje správně.
Neměl jsem štěstí s hd-idle; běželo, ale nefungovalo. Nakonec jsem napsal skript níže:
#!/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