Desde que tengo la Raspberry Pi 5, apenas uso la Pi 4, pero estoy descubriendo nuevas cosas que ya me hubieran gustado saber hace tiempo, como que Trim no viene activado por defecto, o como aumentar la velocidad de transmision arrancando mi SSD desde un usb 3.0.
Yo empecé a usar Raspberry a partir de la versión 4, siempre usaba el puerto 2.0 para arrancar mi SSD, nunca me funcionó desde el 3.0, pensé que sería incompatible, pero al parecer es un tipo de error que tiene el chipset Jmicron.
En estos caso, la solución pasa por desactivar el protocolo UAS
del disco agregando «peculiaridades USB» y hacer que funcione como almacenamiento masivo USB.
UAS
es un protocolo de transporte mejorado en comparación con el almacenamiento masivo USB, todas las unidades UAS deben admitir almacenamiento masivo como opción de respaldo. Se le puede indicar al kernel que ignore la interfaz UAS de un dispositivo y solo use almacenamiento masivo: el controlador de almacenamiento usb tiene una opción de peculiaridades (quirks) para este propósito. Como UAS está integrado en el kernel para permitir que el sistema de archivos raíz se instale en un SSD, el quirk debe ir en cmdline.txt como un parámetro de módulo. Este parámetro coincide con el ID del proveedor USB (vid), el ID del producto (pid) y superpone los quirks especificados que deshabilitan funciones específicas para este dispositivo.
Test de velocidad
Vamos a comprobar a que velocidad circula nuestro disco SSD conectado a un puerto usb-2.0
Busca la aplicacion Raspberry Pi Diagnostics, si no la tienes instalada la puedes instalar con:
sudo apt install agnostics
Ejecutala pulsando en Run Tests
, cuando termine, pulsa en Show Log
.
Observa la línea que dice Secuencial write speed
, dando un resultado de 30815 KB/sec, muy por encima del valor objetivo a superar de 10.000 KB/sec, pero no suficiente para aprovechar al máximo la velocidad de nuestro disco.
Personalmente el puerto usb-2.0 me ha dado muchos problemas, sobre todo con perdidas de datos, mi aMule fué testigo de ello. También, las velocidades de subida y bajada estaban limitadas por el puerto usb más que por la velocidad de la línea.
Comprueba el driver de tu disco.
Para ver que drive usa nuestro disco, en una terminal escribe:
lsusb -t
En la imagen anterior, vemos que UAS
está activo y eso nos perjudica, así que vamos a cambiar esto.
En Raspberry Pi 4, UAS
viene activado de forma predeterminada.
Usando usb-3.0
Para poder arrancar nuestro disco SSD desde el puerto usb-3.0, debemos de hacer una serie de cambios que os detallo a continuación:
Ejecuta un lsusb
para comprobar el chipset de tu disco:
Raspberry@pi4:~
$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 152d:0578 JMicron Technology Corp. / JMicron USA Technology Corp. JMS578 SATA 6Gb/s
Bus 001 Device 006: ID 058f:6387 Alcor Micro Corp. Flash Drive
Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Aunque el idVendor y el idProduct lo hemos visto con el comando anterior, vamos a buscarlo mas exactamente.
Ejecuta el siguiente comando en la terminal:
Raspberry@pi4:~
$ sudo dmesg | grep idVendor
[ 2.277689] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 6.06
[ 2.279024] usb usb2: New USB device found, idVendor=1d6b, idProduct=0003, bcdDevice= 6.06
[ 2.687621] usb 1-1: New USB device found, idVendor=2109, idProduct=3431, bcdDevice= 4.21
[ 3.180114] usb 1-1.4: New USB device found, idVendor=152d, idProduct=0578, bcdDevice= 2.09
[ 5085.543847] usb 1-1.1: New USB device found, idVendor=058f, idProduct=6387, bcdDevice= 1.00
[ 5181.556491] usb 1-1.2: New USB device found, idVendor=058f, idProduct=6387, bcdDevice= 1.00
[ 5365.901603] usb 1-1.1: New USB device found, idVendor=058f, idProduct=6387, bcdDevice= 1.00
El resultado de idVendor=152d, idProduct=0578, coinicide con el disco JMicron, resultado del comando lsusb
.
Vamos a editar el archivo cmdline.txt desde la terminal:
sudo nano /boot/firmware/cmdline.txt
Al comienzo de la línea de parámetros, agrega el texto:
usb-storage.quirks=152d:0578:u
Cambia 152d:0578 por el tuyo propio.
Esto quedaría de la siguiente manera:
Guarda con la combinación de tedclas Crtl + O y sal de la aplicación con Crtl + X
Nota: Ten cuidado con este cambio, como te equivoques el sistema no te arrancará.
Para verificar que ha funcionado:
- Apaga tu Raspberry.
- Cambia de tu puerto usb-2 a un puerto usb-3.
- Enciende tu Raspberry.
Si el sistema inicia, es una muy buena señal.
Comprueba el Driver de tu disco.
Para ver que driver usa nuestro disco ahora, en una terminal escribe:
lsusb -t
Como puedes ver ahora nuestro disco usa el Driver=usb-storage en lugar del Driver=uas
Comprueba el Quirk (peculiaridad) de tu disco.
Para verificar que el quirk se haya aplicado correctamente, ejecuta
dmesg | grep usb-storage
Verifica que el VID y el PID son los de nuestro disco y tienen el quirk aplicado
Test de velocidad
Repetimos el anterior test de velocidad, vuelve a seguir los pasos descritos anteriormente, pero claro, esta vez desde el puerto usb-3.0
Ahora la velocidad es de 140.109 KB/sec, muy superior a la anterior de 30.815 KB/sec
Por último, a modo de ejemplo os dejo el test de mi Raspberry Pi 5,
que sin hacer nada de lo anteriormente explicado, arrancando perfectamente desde los puertos usb-3.0
Visto en https://forums.raspberrypi.com/viewtopic.php?f=28&t=245931