domingo, 30 de diciembre de 2012

Problema con almacenamiento USB en Linux

Alguna vez me he vuelto loco con dispositivos de almacenamiento masivos USB (discos duros, pendrives, dispositivos MP3, etc) porque mientras los estoy usando se resetean y dejan de funcionar. Ejecutando dmesg se puede observar un mensaje de error parecido al siguiente:
[30672.408131] usb 1-7: reset high speed USB device using ehci_hcd and address 7

La causa es que Linux le está enviando mas datos de golpe de los que son capaces de gestionar, y reaccionan bloqueándose y se reseteandose. Por suerte es un parámetro que puede verse y modificarse a través del fichero /sys/block/sdb/device/max_sectors (suponiendo que el dispositivo sea /dev/sdb)

La solución es escribir en el fichero un valor lo suficientemente pequeño para que el dispositivo no se bloquee. Habitualmente se soluciona con el valor 64, pero se puede utilizar cualquier múltiplo de 8.
# echo 64 > /sys/block/sdb/device/max_sectors

El valor modificado del fichero se pierde en cuanto desconectamos el dispositivo del ordenador y hay que volver a escribirlo cuando lo volvamos a conectar. Esto también se puede automatizar con la configuración adecuada de udev.

Referencias

Linux USB FAQ

No hay comentarios:

Publicar un comentario