Podemos montar un disco duro externo de 2.5″ que se alimente del puerto USB de nuestra Raspberry Pi 2 y Model B+. Para ello se puede doblar la energía que se suministra a los puertos USB modificando el GPIO pin 38, pasando así de los 600mA normales a 1200mA.
Esto también soluciona un problema común al conectar estos discos duros externos a la Raspberry Pi, y es que si no les llega suficiente energía hacen un ruido tipo “clac clac clac…”.
Para que esto funcione necesitamos tener la Raspberry Pi alimentada por un adaptador de corriente que de al menos 2A, cualquier cargador de móvil moderno debería ser suficiente.
Hay que tener en cuenta que usando este método solo podemos alimentar un disco duro externo, si queremos conectar mas de uno habría que buscar una fuente de alimentación externa.
Para empezar editamos el fichero de configuración config.txt (esto es solo necesario en Raspberry Pi 2 e inferiores):
1 |
sudo nano /boot/config.txt |
Tenemos que añadir “max_usb_current=1” al final de este fichero.
Después de eso es necesario reiniciar para cargar la nueva configuración:
1 |
sudo reboot |
Conectamos el disco duro externo y vemos si es visible con el comando “blkid”:
1 |
sudo blkid |
El disco duro debería salir en “/dev/sda1” o “/dev/sdb1“, ahora solo tenemos que montarlo para acceder a su contenido.
Montar el disco duro externo en Raspberry Pi
Primero creamos el directorio donde vamos a montar el disco duro:
1 |
sudo mkdir /mnt/externalDrive |
Hacemos que el usuario “pi” sea el dueño de la carpeta recién creada:
1 |
sudo chown -R pi:pi /mnt/externalDrive |
Si el disco duro que vamos a montar tiene un sistema de ficheros NTFS necesitamos la siguiente librería:
1 |
sudo apt-get install ntfs-3g -y |
Ahora montamos el disco duro con el siguiente comando:
1 |
sudo mount -o uid=pi,gid=pi /dev/sda1 /mnt/externalDrive |
Para hacer los cambios permanentes necesitamos el UUID del disco duro, para que así se monte automáticamente cada vez que se inicie el equipo, buscamos el UUID con este comando:
1 |
sudo ls -l /dev/disk/by-uuid/ |
Tenemos que buscar el identificador en la linea de nuestro disco duro, identificado por “sda1“, este identificador esta justo después de la fecha:
lrwxrwxrwx 1 root root 10 Oct 26 21:10 BA8F-FFE8 -> ../../sda1
Para montar el disco duro en cada inicio editamos el fichero fstab:
1 |
sudo nano /etc/fstab |
Y añadimos la siguiente linea, actualizando los datos con los vuestros:
UUID=XXXX-XXXX /mnt/externalDrive ntfs nofail,uid=pi,gid=pi 0 0
Ahora reiniciamos para comprobar que todo esta bien:
1 |
sudo reboot |
Despues del reinicio deberíamos poder acceder al disco duro:
1 2 |
cd /mnt/externalDrive ls |
Extra: Controlar el consumo del disco duro externo con hdparm
En Windows los discos duros automaticamente entran en modo suspenso cuando no estan en uso, eso deberia reducir su consumo y aumentar su vida util. En los sistemas Linux muchas veces esto hay que configurarlo manualmente. Para la Raspberry Pi podemos usar “hdparm” que hara todo este trabajo por nosotros.
Instalamos hdparm:
1 |
sudo apt-get install hdparm -y |
Para comprobar que nuestro disco duro soporta hdparm usamos el siguiente comando:
1 |
sudo hdparm -y /dev/sda1 |
Deberiamos ver un mensaje como el siguiente y nada mas:
issuing standby command
Ahora comprobamos si el disco duro soporta escritura de cache:
1 |
sudo hdparm -I /dev/sda1 | grep 'Write cache' |
Si vemos un asterisco es que todo a salido bien:
* Write cache
Ahora tenemos que editar el fichero de configuracion de hdparm para hacer los cambios permanentes en cada inicio:
1 |
sudo nano /etc/hdparm.conf |
Activamos escritura de cache y tiempo de suspenso añadiendo este texto al final del fichero:
/dev/sda1 {
write_cache = on
spindown_time = 120
}
Los valores entre 1 y 127 en “spindown_time” marcan el tiempo para entrar en suspensión, este valor se multiplica por 5 y da el tiempo total en segundos, por lo tanto un valor de 120 es equivalente a 10 minutos.
Reiniciamos el servicio hdparm para activar los nuevos cambios:
1 |
sudo service hdparm restart |
Si el servicio da problemas, podemos reiniciar la Raspberry Pi:
1 |
sudo reboot |