Montajes USB en GNU/Linux 2.6.x para Tarjetas Multi-lectoras de Medios
re-Editado: 14/10/08.- Solución: El reproductor MP3 siguío desmontando.
(Chequear al final)
Antecedentes
Me regalaron el diciembre pasado un DataTraveler (también conocido cmo Pendrive) y hace unos días (esta vez por mi cumpleaños) un Walkman o reproductor MP3 que, coincide con mi tan anelada adquisición de una cámara digital, una Sony DSC-H50.

Los cuatro medios tienen en común el uso del dispositivo USB. Sin importar el tipo de éstos como pueden ser discos duros, cámaras, impresoras, etc., o tarjetas de memoria con sus formatos especiales en tamaños o ranuras, todos hacen uso del dispositivo USB de la misma manera. Su instalación es muy sencilla siempre y cuando, estén soportados por el núcleo de GNU/Linux, situación que no trataremos.
Medios para USB de ranura especial
- SD-SecureDigital
- CF-CompactFlash
- SM-SmartMedia
- MS-MemoriStick o MS-PRO- MemoriStick-PRO
- MMC-MultiMediaDigital
- y por supuesto Medios USB
- HD (Discos Duros externos)
- Mouse
- PenDrive, PDA
- Impresoras
- Cámaras fotográficas
- Etc.
Mi equipo
Desktop Intel CeleronD 2.8GHz, Tarjeta USB dispositivos múltiples 8-en-1, GNU/Linux 2.6.26-19 generic, PenDrive, Reproductor MP3, Cámara Fotográfica Digital (memoria interna) y su MemoriStick.
No he tenido problemas para montar el DataTraveler ni la MemoriStick de la cámara, además, he podido copiar desde y hacia en ambos medios. Por el contrario, el caso fue diferente para el reproductor MP3 y la memoria interna de la cámara USB.
Los Inconvenientes
Cuando inserté por primera vez el reproductor MP3 se montó sin problema en forma automática, pero justo al intentar abrir una de sus carpetas se desmontó también en automático. Insistí con los mismos resultados. En mi busqueda inmediata por una solución encontré varias alternativas, ninguna funcionó adecuadamente, una de ellas hace persistente el montaje por medio de la UUID del medio. Probé el montaje persistente, al principio normal, inclusive me dejó abrir una carpeta, pero casi al instante observé una gran cantidad de re-montajes, no se cuantos, eran tantos que no me daba tiempo a desmontarlos, cesaron hasta cortar la energía al equipo.
Imaginé un montaje similar al de los discos duros y no es así, o por lo menos hay razones para no hacerlo así como veremos enseguida.
La solución
En los núcleos 2.4.x. de GNU/Linux, los hilos utilizados por medio del dispositivo inserción/expulsión y el nodo SCSI hacen el montaje persistente, es decir, hacen que a un dispositivo expulsado se le reasigne el mismo nodo /dev como cuando fue insertado la primera vez, creando conexiones de persistencia con la unidad destino.
Para el caso de los núcleos 2.6.x todo es diferente, el control de los hilos ya no es de persistencia. Ellos son creados y destruidos, juntos los nodos de los dispositivos y las estructuras de datos de SCSI se crean y destruyen cuando en los dispositivos se inserta y se extrae respectivamente. jaja¡ Me pregunté donde diablos estaban los /proc/usb.
Para ampliar información aquí.
¡Y! ¿Cuál es el problema?
Para la operación de ésta tarjeta, es necesario tener en el núcleo y en la configuración SCSI, el módulo - CONFIG_SCSI_MULTI_LUN - que se encarga de sondear todos los LUNs en cada dispositivo SCSI. Pero no se preocupe tanto. Si al momento de la instalación de GNU/Linux, contaba con la tarjeta multilectora de medios en su equipo, tenga la seguridad que éste modulo esta instalado en su kernel. El módulo sólo es necesario para dicha tarjeta de dispositivos múltiples (x-en-1).
Al momento de escribir estas líneas, no encontré la razón de por que el módulo sondea solamente 4-6 dispositivos por defecto. Y es aquí donde radica el problema, pero al mismo tiempo la solución.
- Solución Empírica. Cambiar de ranura USB para que la sonda pueda ver nuestro dispositivo. ¡Vaya solución! Pero funciona. Aunque resultaría engorroso acordarse de el cada cual y endonde.
- Solución Temporal. Le decimos a la sonda cuantos dispositivos SCSI debe ver. Desde consola y como usuario root escribimos:
# echo 8> /sys/module/scsi_mod/parameters/max_luns
Nota: Recuerden que mi tarjeta es 8 en 1, pero además la sonda admite 8 como máximo. Y lo más importante para mi, a partir de éste momento no he tenido problema alguno. Tan es así que me fue imposible recrear a ustedes los fallos en comento. - Solución Definitiva. (Opción válida para quienes han recompilado en su kernel el USB como módulo) Si es así, editamos /etc/modules.conf, e introducimos la siguiente línea:
options scsi_mod max_scsi_luns = 8
Nota: A diferencia del anterior punto 2, ésta es permanente.
Instalación
Si usted tiene un lector x-en-1 (tarjeta múltiple). Asegúrese de que sondea todos los LUNs en cada dispositivo SCSI. El módulo CONFIG_SCSI_MULTI_LUN debe estar habilitado. Si no lo esta es necesario re-compilar su kernel.
Instale por favor el paquete SG3-utils, si no lo tiene, en Ubuntu: apt-get install SG3-utils. Una vez instalado y antes de pasar el parámetro temporal o definitivo en /etc/modules.conf, comprobamos sus dispositivos SCSI, ejecute el comando sg_scan-i.
Ahora pasamos el parámetro [echo 8> /sys/module/scsi_mod/parameters/max_luns] tan sólo por comprobar.
# echo 8> /sys/module/scsi_mod/parameters/max_luns
Para no cometer errores graves, nos salimos inmediatamente root con
# logout
$
Observe que los cuatro genéricos forman parte del mismo dispositivo físico, pero tienen diferentes LUNs. Se han sondeado todos los LUNs en cada dispositivo SCSI.
root@pptux:~# sg_scan -i
...
/dev/sg3: scsi4 channel=0 id=0 lun=0 [em]
Generic USB SD Reader 1.00 [rmb=1 cmdq=0 pqual=0 pdev=0x0]
/dev/sg4: scsi4 channel=0 id=0 lun=1 [em]
Generic USB CF Reader 1.01 [rmb=1 cmdq=0 pqual=0 pdev=0x0]
/dev/sg5: scsi4 channel=0 id=0 lun=2 [em]
Generic USB SM Reader 1.02 [rmb=1 cmdq=0 pqual=0 pdev=0x0]
/dev/sg6: scsi4 channel=0 id=0 lun=3 [em]
Generic USB MS Reader 1.03 [rmb=1 cmdq=0 pqual=0 pdev=0x0]
root@pptux:~#
Ahora veamos como están montados y como la sonda ha identificado cada uno de los dispositivos SCSI
root@pptux:~# sg_map
...
/dev/sg3 /dev/sdc
/dev/sg4 /dev/sdd
/dev/sg5 /dev/sde
/dev/sg6 /dev/sdf
root@pptux:~#
Finalmente podemos observar como se han montado todos los medios; no obstante lo absurdo del ejemplo pues, en la realidad es innecesario el montaje de todos los medios al mismo tiempo, sin embargo, da muestra clara de lo que ahora puedo hacer con mi tarjeta.
Ctrl + Clic (Imag/tam/orig)
Formateo de Memorias
No es necesario el formateo de estas unidades de memoria excepto, cuando den problemas por el uso excesivo de gravar y borrar. No intente formatear la memoria interna de una cámara fotográfica, llévela al taller autorizado. Dado que las tarjetas estan por lo general en formato de disco DOS, se formatean igual que cualquier otro disco DOS. El comando para hacerlo es el siguiente:
$ mkfs-t vfat /dev/sd[x]
Otra manera podría ser la siguiente:
$ mkfs-t msdos /dev/sd[x]
re-Edición
¡El reproductor siguío desmontando!
Bueno, el rproductor MP3 al igual que la primera conección, pasado un rato se desmontó y volvió a montar. Si bien es cierto pude montar todas mis unidades, es evidente que éste, no lo hace de forma correcta.
Veamos un poco de teoría para comprender lo que suede:
Cuando un medio es insertado al USB, se activa el siguiente suceso de auto-montaje:
- La sonda hace consciente al núcleo de un nuevo dispositivo y lo escribe en en la carpeta /sys.
- Udev crea un nodo del dispositivo (por ejemplo, / dev/sdb1), y ejecuta los drives en la carpeta /modules.
- El demonio HAL es notificado por D-Bus y averigua en su base de datos para añadir el dispositivo correspondiente.
- La adición del nuevo dispositivo se transmite por medio de HAL y D-Bus a todos los programas de la suscripción, por ejemplo, Thunar, que muestra un icono de accesos directos en el panel lateral, o Metacity / Nautilus que añaden un icono en el escritorio.
- Otro programa de escucha puede ser un administrador de volumen, como thunar-volman o AutoFS, configurado para crear automáticamente los puntos de montaje y montar ciertos tipos de unidades, se inicie Rhythmbox cuando un iPod está conectado, inicie f-spot que ayudará en el copiado de fotografías, etc.
Ahora sabemos que las rutas de acceso de búsqueda de HAL descritas en el punto 3 para obtener la información de archivos de dispositivos se leen en dos directorios, /usr/share/hal/fdi - para los archivos proporcionados por los paquetes y /etc/hal/fdi para los archivos proporcionados por el administrador del sistema o el usuario.
Así que si tenemos problemas con el auto-montaje de unidades USB, pero no los tenemos con el auto-montaje de CDs o DVDs, y además somos capaces de montar manualmente el dispositivo USB en cuestión, entonces debemos crear o modificar nuestra política desde el fichero “preferences.fdi” ubicado o a crear en la carpeta /etc/hal/fdi/policy y pegar la siguiente línea en el archivo: ‘< 'merge key="volume.ignore" type="bool"'>‘false quedando finalmente como vemos enseguida:
< device>
< match key="storage.hotpluggable" bool="false">
< /match>< match key="storage.removable" bool="false">
< merge key="storage.automount_enabled_hint" type="bool">false< /merge>
< merge key="volume.ignore" type="bool">false< /merge>
< /match>
< /device>
< /match>
Salvamos el fichero y corremos demonio HAL: # /etc/rc.d/hal restart.
Nunca imaginé escuchar música desde éste medio, sólo pretendía pasarle música; mi sorpresa fué otra cuando al insertarlo, abrió y le corrió play a Rythmbox desde el reproductor MP3, al mismo tiempo el montaje me dibujó el icono de un “iPod” en el escritorio y no el de un disco USB.
Para el reproductor MP3 no es lo mismo montarse como /media/player que como /media/disk.
Fuente de información:
Device-properties-usb (Inglés) y
Artículo HAL (Inglés)
Completa esta lectura con:
Si te gustó este post, por favor considera dejar un comentario o suscribirte al feed y obtener artículos futuros en tu lector de feeds.
















Todo mi trabajo esta guardado en mi pen drive, sin el no seria nada. Excelente blog voy a voler. TE invito a pasar por De Cacho para vos a divertirte mientras ahces feliz a las madres en su día.
Pura Vida!!