Oui, c'est possible mais cela nécessitera un travail de développement personnalisé et non trivial et le code va être spécifique à la puce de pont USB-> SATA À L'INTÉRIEUR de votre boîtier.
L'affaire est que le pont USB sert plus qu'un convertisseur électrique. Un disque dur connecté par USB émule un lecteur SCSI qui a un jeu de commandes différent. Alors que les commandes standard de lecture/écriture/recherche se traduisent tout le temps, les spin up/down plus exotiques ne le font pas. La plupart des puces ne le feront pas. De plus, il n'y a PAS d'API universelle au niveau de la puce. Donc, si j'écrivais le code, je devrais avoir un manuel de programmation pour la puce de pont USB.
En bout de ligne, à moins que vous n'ayez des spécificités de programmation sur la puce et que vous ne soyez familiarisé avec le jeu d'instructions ATA et SCSI et l'encapsulation des commandes d'intercommunication, vous devrez simplement vous en passer. Trop de travail et pas de norme.
Il est tout à fait possible que les signaux que vous envoyez soient négligés. Vous n'avez pas fourni la sortie de
sudo hdparm -I /dev/sdX
qui nous aurait indiqué les capacités du disque, mais de nombreux disques ne répondent tout simplement pas à ces commandes.
Heureusement, il existe un utilitaire très pratique, hd-idle, que vous pouvez télécharger à partir d'ici, vous permettant de forcer un disque à s'arrêter après un laps de temps spécifié. Le programme a été développé spécialement pour Debian, (mais il fonctionne sur Linux en général), de sorte que son installation devrait vous être très facile. J'espère juste que cela fonctionnera également sur une architecture ARM, quelque chose que je ne peux pas tester.
Edit :il se compile et s'installe correctement sur raspbian.
Je n'ai pas eu de chance avec hd-idle; il a fonctionné mais n'a pas fonctionné. J'ai fini par écrire le script ci-dessous :
#!/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