Encontramos el error cuando nos percatamos de que nuestra Raspberry tiene problemas de estabilidad, y comprobamos que o la Raspberry pierde la conexión SSH, o en algunos reinicios programados, se queda colgada o el SSH colgado.
Se trata de una Raspberry Pi que ejecuta Motion y funciona como cámara de seguridad, y tiene un dispositivo USB conectado al puerto USB, para guardar en él los videos que se capturan cada vez que se detecta movimiento.
Total, que cuando nos damos cuenta de que la Raspberry está “out“, la reiniciamos y nos conectamos por SSH, para comenzar a revisar los logs del sistema.
–> Lo primero que revisamos es el log de /var/log/syslog
grep error /var/log/syslog
y encontramos mensajes tan preocupantes como estos:
May 24 12:02:12 Rasp1 kernel: [ 123.938036] usb 1-1.3: device descriptor read/64, error -110
May 24 12:02:27 Rasp1 kernel: [ 139.298243] usb 1-1.3: device descriptor read/64, error -110
May 24 12:02:38 Rasp1 kernel: [ 150.058349] usb 1-1.3: device not accepting address 7, error -110
May 24 12:02:49 Rasp1 kernel: [ 160.698445] usb 1-1.3: device not accepting address 8, error -110
May 24 17:00:06 Rasp1 btuart[341]: Can't get port settings: Input/output error
May 24 17:00:06 Rasp1 btuart[341]: Can't initialize device: Input/output error
May 24 20:00:06 Rasp1 btuart[349]: Can't get port settings: Input/output error
May 24 20:00:06 Rasp1 btuart[349]: Can't initialize device: Input/output error
May 24 23:00:06 Rasp1 btuart[320]: Can't get port settings: Input/output error
May 24 23:00:06 Rasp1 btuart[320]: Can't initialize device: Input/output error
May 24 21:00:48 Rasp1 kernel: [ 40.341231] usb 1-1.3: device descriptor read/64, error -110
May 24 21:01:03 Rasp1 kernel: [ 55.701223] usb 1-1.3: device descriptor read/64, error -110
May 24 21:01:09 Rasp1 kernel: [ 61.061220] usb 1-1.3: device descriptor read/64, error -110
May 24 21:01:24 Rasp1 kernel: [ 76.417663] usb 1-1.3: device descriptor read/64, error -110
May 24 21:01:35 Rasp1 kernel: [ 87.174806] usb 1-1.3: device not accepting address 4, error -110
May 24 21:01:46 Rasp1 kernel: [ 97.813432] usb 1-1.3: device not accepting address 4, error -110
May 24 21:01:46 Rasp1 kernel: [ 97.853538] blk_update_request: I/O error, dev sda, sector 0
También investigamos el log del kernel, y vemos de nuevo los mismos errores, y algún error relacionado más:
May 24 12:02:38 Rasp1 kernel: [ 150.058349] usb 1-1.3: device not accepting address 7, error -110
May 24 12:02:49 Rasp1 kernel: [ 160.698445] usb 1-1.3: device not accepting address 8, error -110
May 24 21:00:48 Rasp1 kernel: [ 40.341231] usb 1-1.3: device descriptor read/64, error -110
May 24 21:01:03 Rasp1 kernel: [ 55.701223] usb 1-1.3: device descriptor read/64, error -110
May 24 21:01:09 Rasp1 kernel: [ 61.061220] usb 1-1.3: device descriptor read/64, error -110
May 24 21:01:24 Rasp1 kernel: [ 76.417663] usb 1-1.3: device descriptor read/64, error -110
May 24 21:01:35 Rasp1 kernel: [ 87.174806] usb 1-1.3: device not accepting address 4, error -110
May 24 21:01:46 Rasp1 kernel: [ 97.813432] usb 1-1.3: device not accepting address 4, error -110
May 24 21:01:46 Rasp1 kernel: [ 97.853538] blk_update_request: I/O error, dev sda, sector 0
May 24 21:01:46 Rasp1 kernel: [ 97.853548] Buffer I/O error on dev sda, logical block 0, async page read
Vaya vaya, va a ser que tenemos un problema relacionado con nuestro dispositivo USB, o incluso con el puerto USB de la Raspberry.
También podríamos revisar el log del inicio del sistema con dmesg:
dmesg -T
El error usb 1 1.3 device descriptor read 64 error 110 es bastante claro, el error 110 es debido a una alimentación insuficiente del pendrive USB.
Ya hace tiempo hablamos de problemas de alimentación de los puertos USB de la Raspberry Pi, ya que los puertos USB y la tarjeta Ethernet de la Raspberry comparten el mismo chip, y el mismo bus, y por tanto se genera un cuello de botella en la Raspberry Pi en algunos casos.
Googleando un poco acerca de los mensajes de error recibidos en los logs de la Raspberry, encontramos varias respuestas:
–> que tengamos problemas con el límite de alimentación de los puertos USB de la Raspberry Pi.
En este caso recurrimos a la solución ya comentada, y es añadir la siguiente configuración en el fichero /boot/config.txt de nuestra Raspberry Pi, para forzar un poco la alimentación en los puertos USB:
max_usb_current=1
–> Los dispositivos USB conectados tienen problemas intermitentes.
Comprobamos que nuestros dispositivos USB se encuentran conectados en la Raspberry:
root@Rasp1:/home/pi# lsusb -t
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=dwc_otg/1p, 480M
|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/5p, 480M
|__ Port 1: Dev 3, If 0, Class=Vendor Specific Class, Driver=smsc95xx, 480M
|__ Port 5: Dev 5, If 0, Class=Mass Storage, Driver=usb-storage, 480M
para ello añadimos lo siguiente en el fichero /boot/cmdline.txt
dwc_otg.speed=1
Tenemos que tener en cuenta que con esta opción, la velocidad de Ethernet será extremadamente lenta.