Difference between revisions of "Udev (Español)"

From ArchWiki
Jump to: navigation, search
(Udisks Shell Functions)
(Ejecutar HAL)
(43 intermediate revisions by 2 users not shown)
Line 9: Line 9:
 
{{ic|udev}} reemplaza la funcionalidad de {{ic|hotplug}} y {{ic|hwdetect}}.
 
{{ic|udev}} reemplaza la funcionalidad de {{ic|hotplug}} y {{ic|hwdetect}}.
  
''"Udev es el gestor de dispositivos que usa el kernel Linux. Principalmente, su función es controlar los ficheros de dispositivo en {{ic|/dev}}. Es el sucesor de devfs y de hotplug, lo que significa que maneja el directorio {{ic|/dev}} y todas las acciones del espacio de usuario al agregar o quitar dispositivos, incluyendo la carga de firmware"''. Fuente: [http://es.wikipedia.org/wiki/Udev Wikipedia]
+
''«Udev es el gestor de dispositivos que usa el kernel de Linux. Principalmente, su función es controlar los archivos de dispositivo en {{ic|/dev}}. Es el sucesor de devfs y de hotplug, lo que significa que maneja el directorio {{ic|/dev}} y todas las acciones del espacio de usuario al agregar o quitar dispositivos, incluyendo la carga de firmware»''. Fuente: [http://es.wikipedia.org/wiki/Udev Wikipedia]
  
udev carga los módulos del kernel en paralelo (simultáneamente) para proveer una potencial ventaja de rendimiento, en vez de cargar los módulos secuencialmente (uno después de otro). Los módulos son, por lo tanto, cargados asíncronamente. La desventaja inherente de este método es que udev no siempre carga los módulos en el mismo orden en cada arranque del sistema. Si la máquina posee múltiples dispositivos de bloque, ésto se puede manifestar en que los nodos de los dispositivos cambian su designación aleatoriamente. Por ejemplo, si la máquina tiene dos discos duros, {{ic|/dev/sda}} puede convertirse aleatoriamente en {{ic|/dev/sdb}}. Continue leyendo más abajo para mayor información.
+
udev carga los módulos del kernel en paralelo (simultáneamente) para proveer una potencial ventaja de rendimiento, en vez de cargar los módulos secuencialmente (uno después de otro). Los módulos son, por lo tanto, cargados asíncronamente. La desventaja inherente de este método es que udev no siempre carga los módulos en el mismo orden en cada arranque del sistema. Si la máquina posee múltiples dispositivos de bloque, esto se puede manifestar en que los nodos de los dispositivos cambian su designación aleatoriamente. Por ejemplo, si la máquina tiene dos discos duros, {{ic|/dev/sda}} puede convertirse aleatoriamente en {{ic|/dev/sdb}}. Continue leyendo más abajo para mayor información.
  
 
==Instalación==
 
==Instalación==
Udev es ahora parte de {{Pkg|systemd}} en {{ic|[core]}}.
+
Udev es ahora parte de {{Pkg|systemd}} y es instalado de forma predeterminada en los sistemas Arch Linux.
  
 
==Acerca de las reglas udev==
 
==Acerca de las reglas udev==
 +
 
Las reglas de udev escritas por el administrador del sistema se encuentran en el directorio {{ic|/etc/udev/rules.d/}}, y el nombre del archivo terminado con la extensión {{ic|.rules}}. Las reglas proporcionadas por la instalación de diversos paquetes se encuentran en {{ic|/lib/udev/rules.d/}}. En el caso de que existan dos reglas con el mismo nombre en {{ic|/lib}} y en {{ic|/etc}}, la norma que se encuentra en la carpeta {{ic|/etc}} tendrá prioridad.
 
Las reglas de udev escritas por el administrador del sistema se encuentran en el directorio {{ic|/etc/udev/rules.d/}}, y el nombre del archivo terminado con la extensión {{ic|.rules}}. Las reglas proporcionadas por la instalación de diversos paquetes se encuentran en {{ic|/lib/udev/rules.d/}}. En el caso de que existan dos reglas con el mismo nombre en {{ic|/lib}} y en {{ic|/etc}}, la norma que se encuentra en la carpeta {{ic|/etc}} tendrá prioridad.
Para obtener más información sobre cómo escribir las reglas de udev consulte [http://www.reactivated.net/writing_udev_rules.html este sitio].
 
  
Para obtener una lista de todos los atributos de un dispositivo que puede usar para escribir reglas de udev, escriba:
+
=== Escribir reglas udev ===
  # udevadm info -a -n [nombre del dispositivo])
+
* Para aprender a escribir las reglas de udev, consulte: [http://www.reactivated.net/writing_udev_rules.html Escribir reglas udev]
 +
* Para ver un ejemplo de regla udev, consulte: [https://soosck.wordpress.com/2011/01/19/improved-udev-rule-arch-linux/ Regla udev mejorada para Arch Linux].
 +
 
 +
Este es un ejemplo de una regla que coloca un enlace simbólico /dev/video-cam1 cuando una cámara web está conectada. En primer lugar, hemos averiguado que dicha cámara se conecta y se carga como el dispositivo /dev/video2. La razón para escribir esta regla es que en el siguiente arranque el dispositivo bien podría aparecer bajo otro nombre, como por ejemplo /dev/video0.
 +
 
 +
{{hc|# udevadm info -a -p $(udevadm info -q path -n /dev/video2)|<nowiki>
 +
Udevadm info starts with the device specified by the devpath and then
 +
walks up the chain of parent devices. It prints for every device
 +
found, all possible attributes in the udev rules key format.
 +
A rule to match, can be composed by the attributes of the device
 +
and the attributes from one single parent device.
 +
 
 +
  looking at device '/devices/pci0000:00/0000:00:04.1/usb3/3-2/3-2:1.0/video4linux/video2':
 +
    KERNEL=="video2"
 +
    SUBSYSTEM=="video4linux"
 +
    ...
 +
  looking at parent device '/devices/pci0000:00/0000:00:04.1/usb3/3-2/3-2:1.0':
 +
    KERNELS=="3-2:1.0"
 +
    SUBSYSTEMS=="usb"
 +
    ...
 +
  looking at parent device '/devices/pci0000:00/0000:00:04.1/usb3/3-2':
 +
    KERNELS=="3-2"
 +
    SUBSYSTEMS=="usb"
 +
    ...
 +
    ATTRS{idVendor}=="05a9"
 +
    ...
 +
    ATTRS{manufacturer}=="OmniVision Technologies, Inc."
 +
    ATTRS{removable}=="unknown"
 +
    ATTRS{idProduct}=="4519"
 +
    ATTRS{bDeviceClass}=="00"
 +
    ATTRS{product}=="USB Camera"
 +
    ...
 +
</nowiki>}}
 +
 
 +
Desde el dipositivo video4linux usamos {{ic|<nowiki>KERNEL=="video2"</nowiki>}} y {{ic|<nowiki>SUBSYSTEM=="video4linux"</nowiki>}}, entoces hacemos que coincida con la webcam del usb principal usando los ID del proveedor y del producto {{ic|<nowiki>SUBSYSTEMS=="usb"</nowiki>}}, {{ic|<nowiki>ATTRS{idVendor}=="05a9"</nowiki>}} y {{ic|<nowiki>ATTRS{idProduct}=="4519"</nowiki>}}.
 +
 
 +
{{hc|/etc/udev/rules.d/83-webcam.rules|<nowiki>
 +
KERNEL=="video[0-9]*", SUBSYSTEM=="video4linux", SUBSYSTEMS=="usb", \
 +
        ATTRS{idVendor}=="05a9", ATTRS{idProduct}=="4519", SYMLINK+="video-cam1"
 +
</nowiki>}}
 +
 
 +
En el ejemplo anterior hemos creado un enlace simbólico con {{ic|<nowiki>SYMLINK+="video-cam1"</nowiki>}}, pero podemos configurar fácilmente el usuario {{ic|<nowiki>OWNER="john"</nowiki>}} o el grupo usando {{ic|<nowiki>GROUP="video"</nowiki>}}, o ajustando los permisos mediante {{ic|<nowiki>MODE="0660"</nowiki>}}
 +
 
 +
Sin embargo, si tiene la intención de escribir una regla para que actúe cuando se remueve dispositivo, tenga en cuenta que los atributos del dispositivos pueden no estar accesibles. En este caso, tendrá que trabajar con las variables del entorno predeterminadas del dispositivo. Para controlar las variables del entorno, ejecute la orden siguiente al desenchufar el dispositivo:
 +
# udevadm monitor --environment --udev
 +
 
 +
En la salida de esta orden, verá pares de valores tales como ID_VENDOR_ID and ID_MODEL_ID, que se corresponden a los atributos utilizados anteriormente "idVendor" y "idProduct". Una regla que utilice variables de entorno del dispositivo puede tener este aspecto:
 +
{{hc|/etc/udev/rules.d/83-webcam-removed.rules|<nowiki>
 +
ACTION=="remove", SUBSYSTEM=="usb", \
 +
        ENV{ID_VENDOR_ID}=="05a9", ENV{ID_MODEL_ID}=="4519", RUN+="/path/to/your/script"</nowiki>}}
 +
 
 +
=== Listar los atributos de un dispositivo ===
 +
Para obtener una lista de todos los atributos de un dispositivo que podemos utilizar para escribir reglas, ejecutaremos esta orden:
 +
  # udevadm info -a -n [device name]
 +
 
 +
Sustituya {{ic|[device name]}} con el dispositivo presente en el sistema, como {{ic|/dev/sda}} o {{ic|/dev/ttyUSB0}}.
 +
 
 +
Si no sabemos el nombre del dispositivo, también podemos listar todos los atributos de una ruta específica del sistema:
 +
 
 +
# udevadm info -a -p /sys/class/backlight/acpi_video0
 +
 
 +
=== Comprobar las reglas antes de cargarlas ===
 +
# udevadm test $(udevadm info -q path -n [device name]) 2>&1
 +
This will not perform all actions in your new rules but it will however process symlink rules on existing devices which might come in handy if you are unable to load them otherwise. You can also directly provide the path to the device you want to test the udev rule for:
 +
# udevadm test /sys/class/backlight/acpi_video0/
 +
 
 +
=== Cargas reglas nuevas ===
 +
Udev detecta automáticamente cambios en los archivos de reglas, por lo que los cambios surtan efecto inmediatamente sin necesidad de reiniciar udev. Sin embargo, las reglas no se recargan automáticamente en aquellos dispositivos que están en funcionamiento. Los dispositivos que se ponen en funcionamiento al conectarse, como los dispositivos USB, si ya estaban conectados, probablemente tendrán que volver a conectarse para que la nueva regla entre en vigor, o, al menos, recargar los módulos del kernel ohci-hcd y ehci-hcd y, por lo tanto, volver a cargar todos los controladores USB.
 +
 
 +
Podemos forzar manualmente a udev a activar sus reglas con:
 +
# udevadm trigger
 +
 
 +
== Udisks ==
 +
 
 +
Si desea montar unidades extraíbles no haga una llamada a 'mount' en la regla udev. En el caso de sistemas de archivos fuse (por ejemplo, ntfs-3g) obtendrá el error "Transport endpoint not connected". En su lugar utilice udisks que maneja el montaje automático correctamente.
  
Reemplace {{ic|[nombre del dispositivo]}} con el dispositivo presente en el sistema, como {{ic|/dev/sda}} o {{ic|/dev/ttyUSB0}}.
+
Hay dos versiones incompatibles, udisks y udisks2, una reescritura de udisks que rompe la compatibilidad. Dependiendo de nuestro DE, uno u otra versión será necesaria (la cual ya vendrá instalada como una dependencia):
  
udev detecta automáticamente los cambios en los archivos de reglas, por lo que los cambios surtan efecto inmediatamente sin necesidad de reiniciar udev. Sin embargo, las reglas no se aplican automáticamente a los dispositivos en funcionamiento, por lo que los dispositivos removibles, como las unidades USB, probablemente tendrán que volver a reconectarse para que las nuevas normas se les apliquen.
+
* Para [[GNOME]] o [[KDE]] 4.10+, instale {{Pkg|udisks2}}
 +
* Para [[XFCE]], instale {{Pkg|udisks}}
  
==Udisks==
+
No hay necesidad de cualquier regla adicional. Como elemento adicional, se puede eliminar HAL si se está utilizando solo para fines de montaje automático.
Simplemente tiene que [[pacman|instalar]] el paquete {{pkg |udisks}} y todos sus unidades deberían montarse automáticamente en [[GNOME]] y [[KDE]] SC 4.6. De esta manera, no habrá necesidad de regla adicional alguna. Tenga en cuenta que udisks2 es una reescritura novedosa de udisks manteniendo la compatibilidad con éste último y es la versión actualmente [http://www.archlinux.org/packages/extra/x86_64/udisks2/ requerida] por GNOME, mientras que XFCE y KDE, parece que todavía [http://www.archlinux.org/packages/extra/x86_64/udisks/ requerieren] udisks.
+
+
Como elemento adicional, puede eliminar [[HAL]] si sólo se utiliza para fines de auto montaje.
+
  
===Automounting udisks wrappers===
+
===Montaje automático de wrappers de udisks===
UDisks wrapper tiene la ventaja de ser muy fácil de instalar y sin necesidad de configuración (o mínima). Con wrapper se montarán automáticamente elementos como CDs y memorias flash.
+
Los soportes de udisks (''«udisks wrapper»'') tienen la ventaja de ser muy fácil de instalar y sin necesidad de configuración (o mínima). Con wrapper se montarán automáticamente elementos como CDs y memorias flash.
  
* [http://ignorantguru.github.com/udevil/ udevil] - {{pkg|udevil}} ''"Monta y desmonta dispositivos extraíbles sin necesidad de una contraseña, muestra información del dispositivo, y monitorea los cambios de los dispositivos''". Está escrito en C y puede sustituir a udisks e incluye [http://igurublog.wordpress.com/downloads/script-devmon/ devmon], que se puede instalar por separado desde AUR ({{AUR|devmon}}). También puede iniciar aplicaciones automáticamente de forma selectiva o ejecutar comandos después del montaje, hacer caso omiso de dispositivos especificados y volúmenes etiquetados, y desmontar las unidades extraíbles.
+
* [http://ignorantguru.github.com/udevil/ udevil] - {{pkg|udevil}} ''«Monta y desmonta dispositivos extraíbles sin necesidad de una contraseña, muestra información del dispositivo, y monitorea los cambios de los dispositivos»''. Está escrito en C y puede sustituir a udisks e incluye [http://igurublog.wordpress.com/downloads/script-devmon/ devmon], que se puede instalar por separado desde AUR ({{AUR|devmon}}). También puede iniciar aplicaciones automáticamente de forma selectiva o ejecutar órdenes después del montaje, hacer caso omiso de dispositivos especificados y volúmenes etiquetados, y desmontar las unidades extraíbles.
 
* {{AUR|ldm}} - Un demonio ligero que monta automáticamente unidades usb, cd, dvd o floppys. [https://bbs.archlinux.org/viewtopic.php?id=125918]
 
* {{AUR|ldm}} - Un demonio ligero que monta automáticamente unidades usb, cd, dvd o floppys. [https://bbs.archlinux.org/viewtopic.php?id=125918]
 
* [[udiskie]] - Escrito en Python. Permite el montaje y desmontaje automático por otros usuarios.
 
* [[udiskie]] - Escrito en Python. Permite el montaje y desmontaje automático por otros usuarios.
Line 43: Line 115:
 
* Se pueden montar automáticamente y expulsar dispositivos extraíbles con la combinación de {{pkg|pmount}}, {{pkg|udisks2}} y {{pkg|spacefm}}. Tenga en cuenta que ha de ejecutar spacefm en modo demonio con {{ic|spacefm -d &}} en los scripts de inicio, {{ic|~/.xinitrc}} o {{ic|~/.xsession}}, para obtener el montaje automático . También puede montar los discos internos agregándolos a {{ic|/etc/pmount.allow}}.
 
* Se pueden montar automáticamente y expulsar dispositivos extraíbles con la combinación de {{pkg|pmount}}, {{pkg|udisks2}} y {{pkg|spacefm}}. Tenga en cuenta que ha de ejecutar spacefm en modo demonio con {{ic|spacefm -d &}} en los scripts de inicio, {{ic|~/.xinitrc}} o {{ic|~/.xsession}}, para obtener el montaje automático . También puede montar los discos internos agregándolos a {{ic|/etc/pmount.allow}}.
  
===Udisks shell functions===
+
===Funciones de udisks para la shell===
Mientras udisks incluye un método simple de montaje (y desmontaje) de los dispositivos a través de la línea de comandos, puede ser, sin embargo, tedioso tener que escribir los comandos cada vez. Estas funciones de la shell que se enumeran a continuación, generalmente, sirven para acortar y facilitar el uso de la línea de comandos.
+
Mientras udisks incluye un método simple de montaje (y desmontaje) de los dispositivos a través de la línea de órdenes, puede ser, sin embargo, tedioso tener que escribir las órdenes una y otra vez. Estas funciones de la shell que se enumeran a continuación, generalmente, sirven para acortar y facilitar el uso de la línea de órdenes.
  
* [https://bbs.archlinux.org/viewtopic.php?id=109307 udisks_functions] - Escrito por Bash.
+
* [https://bbs.archlinux.org/viewtopic.php?id=109307 udisks_functions] - Escrito para Bash.
* [https://bbs.archlinux.org/viewtopic.php?id=117674 bashmount] - {{AUR|bashmount}} es un script bash estructurado a modo de menú, y es un simple archivo de configuración que hace que sea fácil de redactar e implementar.
+
* [https://bbs.archlinux.org/viewtopic.php?id=117674 bashmount] - {{AUR|bashmount}} es un script bash estructurado a modo de menú, articulado como un simple archivo de configuración que hace que sea fácil de redactar e implementar.
  
 
==Consejos y Trucos==
 
==Consejos y Trucos==
==== Accediendo programadores de Firmware y dispositivos virtuales de comunicación USB ====
+
=== Acceder a programadores de firmware y a dispositivos USB de comunicación virtual ===
El siguiente conjunto de reglas permite a los usuarios normales (en el grupo "users") acceder al programador USB [http://www.ladyada.net/make/usbtinyisp/ USBtinyISP] para microcontroladores AVR y al USB genérico (SiLabs [http://www.silabs.com/products/interface/usbtouart CP2102]) para el adaptador UART y para el programador [http://www.atmel.com/tools/AVRDRAGON.aspx?tab=overview Atmel AVR Dragon] . Ajuste los permiso de acuerdo al caso. Verificado al 22/06/2012.
+
El siguiente conjunto de reglas permite a los usuarios normales (en el grupo «users») acceder al programador USB [http://www.ladyada.net/make/usbtinyisp/ USBtinyISP] para microcontroladores AVR y al USB genérico (SiLabs [http://www.silabs.com/products/interface/usbtouart CP2102]) para el adaptador UART y para el programador [http://www.atmel.com/tools/AVRDRAGON.aspx?tab=overview Atmel AVR Dragon] y [http://www.atmel.com/tools/AVRISPMKII.aspx Atmel AVR ISP mkII] . Ajuste los permiso de acuerdo al caso. Verificado al 31-10-2012.
  
 
{{hc|/etc/udev/rules.d/50-embedded_devices.rules|2=<nowiki>
 
{{hc|/etc/udev/rules.d/50-embedded_devices.rules|2=<nowiki>
Line 69: Line 141:
 
SUBSYSTEM=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2103", GROUP="users", MODE="0666"
 
SUBSYSTEM=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2103", GROUP="users", MODE="0666"
  
 +
#Atmel Corp. AVR ISP mkII
 +
SUBSYSTEM=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2104", GROUP="users", MODE="0666"
 
</nowiki>}}
 
</nowiki>}}
  
Line 74: Line 148:
 
Consulte el artículo [[Execute on USB insert]] o [http://igurublog.wordpress.com/downloads/script-devmon/ devmon wrapper script].
 
Consulte el artículo [[Execute on USB insert]] o [http://igurublog.wordpress.com/downloads/script-devmon/ devmon wrapper script].
  
=== Montar unidades como un usuario normal ===
+
=== Detectar nuevas unidades eSATA ===
Si desea montar una unidad interna en sus entornos de escritorio como un usuario normal (sin la necesidad de escribir la contraseña de superusuario), sólo tiene que crear uno de los siguientes archivos en [[PolicyKit]] Local Authority dependiendo de si utiliza udisks (KDE, XFCE) o udisks2 (GNOME reciente) (en caso de duda realice una consulta con {{ic|pacman -Qi udisks2}}). La configuración extiende el privilegio a todos los miembros del grupo 'users', pero se puede sustituir {{ic|unix-user:USERNAME}} para ajustar la configuración del grupo con las limitaciones individuales. Consulte [[PolicyKit]] para más detalles.
+
  
Los ejemplos de configuración siguientes permiten a cualquier miembro del grupo {{ic|users}} montar y desmontar discos con udisks o udisk2. Si no existe, cree el archivo {{ic|/etc/polkit-1/localauthority/50-local.d/10-udisks.pkla}} con el siguiente contenido:
+
Si la unidad eSATA no se detecta cuando se conecte, podemos intertar algunas cosas. Por ejemplo reiniciar con la unidad eSATA enchufada, o bien podría intentar lo siguente:
  
'''udisks'''
+
  # for f in /sys/class/scsi_host/host*/scan; do echo "0 0 0" > $f; done
  [Local Users]
+
Identity=unix-group:users
+
Action=org.freedesktop.udisks.*
+
ResultAny=yes
+
ResultInactive=yes
+
ResultActive=yes
+
'''udisk2'''
+
[Local Users]
+
Identity=unix-group:users
+
Action=org.freedesktop.udisks2.*
+
ResultAny=yes
+
ResultInactive=yes
+
ResultActive=yes
+
  
====Sólo unidades internas====
+
O puede instalar scsiadd (disponible en AUR) y probar esto:
'''udisks'''
+
 
{{hc|/etc/polkit-1/localauthority/50-local.d/50-filesystem-mount-system-internal.pkla|2=<nowiki>
+
# scsiadd -s
[Mount a system-internal device]
+
 
Identity=unix-group:users
+
Esperaremos para comprobar que la unidad se encuentra ahora en /dev. Si esto no funciona, podríamos probar con las órdenes anteriores mientras se ejecuta:
Action=org.freedesktop.udisks.filesystem-mount-system-internal
+
 
ResultActive=yes
+
# udevadm monitor
</nowiki>}}
+
 
'''udisks2'''
+
para ver qué está sucediendo realmente.
{{hc|/etc/polkit-1/localauthority/50-local.d/50-filesystem-mount-system-internal.pkla|2=<nowiki>
+
[Mount a system-internal device]
+
Identity=unix-group:users
+
Action=org.freedesktop.udisks2.filesystem-mount-system
+
ResultActive=yes     
+
</nowiki>}}
+
  
 
===Marca como interna tanto SATA-Ports como eSATA-Ports===
 
===Marca como interna tanto SATA-Ports como eSATA-Ports===
Si ha conectado un puerto eSATA u otro adaptador eSATA, el  sistema todavía reconocerá este puerto como un disco duro SATA interno. GNOME y KDE le preguntará por su contraseña de root todo el tiempo. La siguiente regla marcará el SATA-Port especificado como un eSATA-Port externo. Con ésto, un usuario normal de GNOME pueden conectar sus unidades de disco eSATA al puerto como una unidad USB, sin ningún tipo de contraseña de root y así sucesivamente.
+
Si ha conectado un puerto eSATA u otro adaptador eSATA, el  sistema todavía reconocerá este puerto como un disco duro SATA interno. GNOME y KDE le preguntará por su contraseña de root todo el tiempo. La siguiente regla marcará el SATA-Port especificado como un eSATA-Port externo. Con esto, un usuario normal de GNOME pueden conectar sus unidades de disco eSATA al puerto como una unidad USB, sin ningún tipo de contraseña de root y así sucesivamente.
  
  
Line 118: Line 172:
 
</nowiki>}}
 
</nowiki>}}
  
{{Nota|el DEVPATH (ruta del dispositivo) se puede encontrar después de la conexión de la unidad de disco eSATA con el siguiente comando (sustituya sdb según su caso):
+
{{Nota|el DEVPATH (ruta del dispositivo) se puede encontrar después de la conexión de la unidad de disco eSATA con la siguiente orden (sustituya sdb según su caso):
  
 
  # find /sys/devices/ -name sdb
 
  # find /sys/devices/ -name sdb
Line 124: Line 178:
  
 
}}
 
}}
===Configurando nombres estáticos para los dispositivos===
+
===Configurar nombres estáticos para los dispositivos===
Debido a que udev carga todos los módulos de forma asíncrona, se pueden inicializar en un orden diferente en cada arranque. Esto puede dar como resultado dispositivos con nombres cambiados aleatoriamente. Udev permite crear reglas donde se utilicen nombres estáticos para los dispositivos, pero preferiblemente nombres distintos de "ethX" y "wlanX".
+
Debido a que udev carga todos los módulos de forma asíncrona, se pueden inicializar en un orden diferente en cada arranque. Esto puede dar como resultado dispositivos con nombres cambiados aleatoriamente. Udev permite crear reglas donde se utilicen nombres estáticos para los dispositivo:
 +
* Véase [[Persistent block device naming]] para dispositivos de bloque.
 +
* Véase [[Network_Configuration#Device_names]] para dispositivos de red.
 +
====Dispositivo iscsi====
 +
Compruebe la salida de scsi_id:
 +
/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/sdb
 +
3600601607db11e0013ab5a8e371ce111
  
Para dispositivos de bloque, consulte [[Persistent block device naming]].
+
{{hc|/etc/udev/rules.d/75-iscsi.rules|2=<nowiki>
 +
#The iscsi device rules.
 +
#This will create an iscsi device for each of the targets.
 +
KERNEL=="sd*", SUBSYSTEM=="block", \
 +
    PROGRAM="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace /dev/$name", \ RESULT=="3600601607db11e0013ab5a8e371ce111", \
 +
    NAME="isda"</nowiki>}}
  
====Dispositivo Network====
+
==== Dispositivos de vídeo ====
Por ejemplo, con dos tarjetas de red, es posible que note un cambio de nombres entre {{ic|eth0}} y {{ic|eth1}} en cada reinicio.
+
Para configurar la cámara web, en primer lugar, consulte [[Webcam_Setup#Webcam configuration|Webcam configuration]].
  
Un método para evitar el comportamiento anterior y ordenar la tarjeta de red es utilizar el método udev-sanctioned para fijar el nombre de cada interfaz. Cree el siguiente archivo para obligar a la dirección MAC de cada una de sus tarjetas a asociarse a un nombre de la interfaz:
+
Si utilizamos múltiples cámaras web, útil por ejemplo con {{pkg|motion}} (software detector de movimiento que toma imágenes de los dispositivos video4linux y/o de webcams), asignará los dispositivos de vídeo como /dev/video0..n al azar en el arranque. La solución recomendada es crear enlaces simbólicos que utilicen una regla udev (como en el ejemplo de la [[Udev (Español)#Escribir reglas udev|sección anterior]]).
{{hc|/etc/udev/rules.d/10-network.rules|2=<nowiki>
+
 
SUBSYSTEM=="net", ATTR{address}=="aa:bb:cc:dd:ee:ff", NAME="net0"
+
{{hc|/etc/udev/rules.d/83-webcam.rules|<nowiki>
SUBSYSTEM=="net", ATTR{address}=="ff:ee:dd:cc:bb:aa", NAME="wifi0"
+
KERNEL=="video[0-9]*", SUBSYSTEM=="video4linux", SUBSYSTEMS=="usb", \
 +
        ATTRS{idVendor}=="05a9", ATTRS{idProduct}=="4519", SYMLINK+="video-cam1"
 +
KERNEL=="video[0-9]*", SUBSYSTEM=="video4linux", SUBSYSTEMS=="usb", \
 +
        ATTRS{idVendor}=="046d", ATTRS{idProduct}=="08f6", SYMLINK+="video-cam2"
 +
KERNEL=="video[0-9]*", SUBSYSTEM=="video4linux", SUBSYSTEMS=="usb", \
 +
        ATTRS{idVendor}=="046d", ATTRS{idProduct}=="0840", SYMLINK+="video-cam3"
 
</nowiki>}}
 
</nowiki>}}
  
Algunas puntualizaciones:
+
{{Nota| El uso de otros nombres distintos de "/dev/video*" se romperá con la precarga de v4l1compat.so y, quizás, v4l2convert.so.}}
* Para obtener la dirección MAC de cada tarjeta, utilice este comando: {{Ic|<nowiki>udevadm info -a -p /sys/class/net/<su_dispositivo> | grep address | tr [A-Z] [a-z]</nowiki>}}
+
* Asegúrese de utilizar los valores hexadecimales en minúsculas en las reglas udev. No use mayúsculas.
+
* Al elegir los nombres estáticos se debe evitar usar "ethX" y "wlanX", ya que ésto puede conducir a conflictos de competencia entre el kernel y udev durante el arranque. Intente usar nombres de interfaz que no sean utilizados por el kernel por defecto, por ejemplo "net0, net1, wifi0, wifi1"
+
  
¡No olvide actualizar el archivo {{ic|/etc/rc.conf}} y otros archivos de configuración que usen la antigua notación ethX!
+
=== Ejecutar HAL ===
  
Consulte también el artículo sobre [[Rename network interfaces|renombrar interfaz network]].
+
Algunos programas requieren todavía HAL (como el contenido DRM de Flash). Hal se puede instalar desde {{AUR|hal}} y {{AUR|hal-info}}.
  
====Dispositivo iscsi====
+
Con Systemd : se puede iniciar y detener el servicio hal utilizando las órdenes de systemd siguientes:
Compruebe la salida de scsi_id:
+
/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/sdb
+
3600601607db11e0013ab5a8e371ce111
+
  
{{hc|/etc/udev/rules.d/75-iscsi.rules|<nowiki>
+
Iniciar HAL :
# reglas para el dispositivo iscsi
+
{{ic|# systemctl start hal.service}}
  # ésto creará un dispositivo iscsi para cada targets
+
 
  KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace /dev/$name", RESULT=="3600601607db11e0013ab5a8e371ce111",
+
Parar HAL :
  NAME="isda"
+
{{ic|# systemctl stop hal.service}}
 +
 
 +
Como alternativa, se puede usar el siguiente script:
 +
{{bc|<nowiki>
 +
#!/bin/bash
 +
 
 +
## escrito por Mark Lee <bluerider>
 +
## información utilizada de <https://wiki.archlinux.org/index.php/Chromium#Google_Play_.26_Flash>
 +
 
 +
## Iniciar y detener el servicio Hal en orden para el servicio de Google Play Movie
 +
 
 +
function main () { ## run the main insertion function
 +
clear-cache; ## remove adobe cache
 +
start-hal;  ## start the hal daemon
 +
read -p "Press 'enter' to stop hal";  ## pause the command line with a read line
 +
stop-hal;  ## stop the hal daemon
 +
}
 +
 
 +
function clear-cache () {  ## remove adobe cache
 +
cd ~/.adobe/Flash_Player;  ## go to Flash player user directory
 +
rm -rf NativeCache AssetCache APSPrivateData2;  ## remove cache
 +
}
 +
 
 +
function start-hal () {  ## start the hal daemon
 +
sudo systemctl start hal.service && ( ## systemd : start hal daemon
 +
echo "Started hal service..."
 +
) || (
 +
echo "Failed to start hal service!"
 +
  )
 +
}
 +
 
 +
function stop-hal () {  ## stop the hal daemon
 +
sudo systemctl stop hal.service && (  ## systemd : stop hal daemon
 +
echo "Stopped hal service..."
 +
) || (
 +
echo "Failed to stop hal service!"
 +
)
 +
}
 +
 
 +
main;  ## run the main insertion function
 
</nowiki>}}
 
</nowiki>}}
  
==Solución de Problemas==
+
=== Despertar desde la suspención con un dispositivo USB ===
 +
 
 +
En primer lugar, encuentre el ID del proveedor y del producto del dispositivo, por ejemplo:
 +
 
 +
{{hc|<nowiki># lsusb | grep Logitech</nowiki>|Bus 007 Device 002: ID 046d:c52b Logitech, Inc. Unifying Receiver}}
 +
 
 +
Ahora cambie el atributo {{ic|power/wakeup}} del dispositivo y del controlador USB al que está conectado, que en este caso es {{ic|driver/usb7/power/wakeup}}. Utilice la siguiente regla:
 +
 
 +
{{hc|/etc/udev/rules.d/50-wake-on-device.rules|<nowiki>
 +
ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c52b", ATTR{power/wakeup}="enabled", ATTR{driver/usb7/power/wakeup}="enabled"
 +
</nowiki>}}
 +
 
 +
{{Nota|Asegúrese también que el controlador del USB esté activado en {{ic|/proc/acpi/wakeup}}.}}
 +
 
 +
==Solución de problemas==
 
===Blacklisting de Módulos===
 
===Blacklisting de Módulos===
En casos extraños, udev puede cometer un error y cargar los módulos incorrectos. Para prevenir este comportamiento, se pueden introducir los módulos afectados en ''blacklist''. Udev nunca cargará módulos que estén ''blacklisted''. Consulte [[Blacklisting]]. Ni al momento del arranque del sistema ni después cuando se recibe un evento de conexión sobre la marcha (por ejemplo, conectando una unidad flash USB).
+
En casos extraños, udev puede cometer un error y cargar los módulos incorrectos. Para prevenir este comportamiento, se pueden introducir los módulos afectados en lista negra (''«blacklist»''). Udev nunca cargará los módulos que estén listados (''«blacklisted»''). Consulte [[Kernel_modules_(Español)#Blacklisting|Blacklisting]]. Ni al momento del arranque del sistema ni después cuando se produce un evento de conexión sobre la marcha es recibido (por ejemplo, conectando una unidad flash USB).
  
===Udevd falla al inicio===
+
===udevd falla al inicio===
Después de migrar a LDAP o actulizar el sistema con LDAP-backed, udevd puede colgarse en el arranque apareciendo el mensaje "Starting UDev Daemon". Ésto es causado, normalmente, porque udevd trata de buscar un nombre de LDAP, pero falla, porque la red no está todavía. La solución es asegurarse de que todos los nombres de grupo del sistema están presentes localmente.
+
Después de migrar a LDAP o actulizar el sistema con LDAP-backed, udevd puede colgarse en el arranque apareciendo el mensaje «Starting UDev Daemon». Esto es causado, normalmente, porque udevd trata de buscar un nombre de LDAP, pero falla, porque la red no está todavía. La solución es asegurarse de que todos los nombres de grupo del sistema están presentes localmente.
  
 
Extraiga los nombres de los grupos mencionados en las reglas de udev y los nombres de grupos realmente presentes en el sistema:
 
Extraiga los nombres de los grupos mencionados en las reglas de udev y los nombres de grupos realmente presentes en el sistema:
Line 202: Line 319:
 
Cree una regla udev personalizada, configurando {{ic|UDISKS_SYSTEM_INTERNAL<nowiki>=</nowiki>0}}. Para más detalles, consulte la manpage de udisks.  
 
Cree una regla udev personalizada, configurando {{ic|UDISKS_SYSTEM_INTERNAL<nowiki>=</nowiki>0}}. Para más detalles, consulte la manpage de udisks.  
  
===Problemas conocidos con Auto-Loading===
+
===Problemas conocidos con la carga automática===
==== Módulos de Frecuencia del CPU ====
+
==== Problemas de sonido con algunos módulos no cargados automáticamente ====
El método actual de detección para los variados controladores de frecuencia del CPU es inadecuado, así que se ha omitido del proceso de auto-carga por el momento. Para usar [[CPU_Frequency_Scaling|el escalado de frecuencia de la CPU]], cargue el módulo apropiado explícitamente en la matriz {{Ic|MODULES}} del archivo {{ic|rc.conf}}. Para más información: [[rc.conf]].
+
 
+
==== Problemas de Sonido o Algunos Módulos no son Cargados Automáticamente ====
+
 
Algunos usuarios han reportado este problema de entradas antiguas en {{ic|/etc/modprobe.d/sound.conf}}. Intente limpiar ese archivo y probar de nuevo.
 
Algunos usuarios han reportado este problema de entradas antiguas en {{ic|/etc/modprobe.d/sound.conf}}. Intente limpiar ese archivo y probar de nuevo.
 
{{Nota|A partir de {{ic|udev>&#61;171}}, los módulos de emulación de OSS, ({{ic|snd_seq_oss, snd_pcm_oss, snd_mixer_oss}}), no vienen cargados automáticamente por defecto.}}
 
{{Nota|A partir de {{ic|udev>&#61;171}}, los módulos de emulación de OSS, ({{ic|snd_seq_oss, snd_pcm_oss, snd_mixer_oss}}), no vienen cargados automáticamente por defecto.}}
  
=== Problemas Conocidos para usuarios con Kernel Personalizado ===
+
=== Problemas conocidos para usuarios con Kernel personalizado ===
 
==== Udev no se ejecuta ====
 
==== Udev no se ejecuta ====
 
Asegúrese que tiene una versión del kernel 2.6.15 o superior. Los kernels anteriores no tienen las capacidades uevent necesarias para que udev realice la auto-carga.
 
Asegúrese que tiene una versión del kernel 2.6.15 o superior. Los kernels anteriores no tienen las capacidades uevent necesarias para que udev realice la auto-carga.
Line 219: Line 333:
 
Un motivo por el cual el módulo ide_cd_mod se carga antes que otros, como sr_mod, podría ser debido, quizás, a que, por cualquier razón, el módulo piix viene cargado por initramfs. En ese caso, es posible reemplazarlo con ata_piix en el archivo {{ic|/etc/mkinitcpio.conf}}.
 
Un motivo por el cual el módulo ide_cd_mod se carga antes que otros, como sr_mod, podría ser debido, quizás, a que, por cualquier razón, el módulo piix viene cargado por initramfs. En ese caso, es posible reemplazarlo con ata_piix en el archivo {{ic|/etc/mkinitcpio.conf}}.
  
===Dispositivos Ópticos con ID de Grupo ajustado a Disk ===
+
===Dispositivos ópticos con ID de grupo ajustado a «disk» ===
 
Si el ID de grupo de la unidad de disco óptico está ajustado a ''disk'' y desea que esté configurado para ''optical'' tiene que crear una regla udev personalizada:
 
Si el ID de grupo de la unidad de disco óptico está ajustado a ''disk'' y desea que esté configurado para ''optical'' tiene que crear una regla udev personalizada:
 
{{hc|/etc/udev/rules.d|2=# permissions for IDE CD devices
 
{{hc|/etc/udev/rules.d|2=# permissions for IDE CD devices

Revision as of 19:43, 9 July 2013

udev reemplaza la funcionalidad de hotplug y hwdetect.

«Udev es el gestor de dispositivos que usa el kernel de Linux. Principalmente, su función es controlar los archivos de dispositivo en /dev. Es el sucesor de devfs y de hotplug, lo que significa que maneja el directorio /dev y todas las acciones del espacio de usuario al agregar o quitar dispositivos, incluyendo la carga de firmware». Fuente: Wikipedia

udev carga los módulos del kernel en paralelo (simultáneamente) para proveer una potencial ventaja de rendimiento, en vez de cargar los módulos secuencialmente (uno después de otro). Los módulos son, por lo tanto, cargados asíncronamente. La desventaja inherente de este método es que udev no siempre carga los módulos en el mismo orden en cada arranque del sistema. Si la máquina posee múltiples dispositivos de bloque, esto se puede manifestar en que los nodos de los dispositivos cambian su designación aleatoriamente. Por ejemplo, si la máquina tiene dos discos duros, /dev/sda puede convertirse aleatoriamente en /dev/sdb. Continue leyendo más abajo para mayor información.

Instalación

Udev es ahora parte de systemd y es instalado de forma predeterminada en los sistemas Arch Linux.

Acerca de las reglas udev

Las reglas de udev escritas por el administrador del sistema se encuentran en el directorio /etc/udev/rules.d/, y el nombre del archivo terminado con la extensión .rules. Las reglas proporcionadas por la instalación de diversos paquetes se encuentran en /lib/udev/rules.d/. En el caso de que existan dos reglas con el mismo nombre en /lib y en /etc, la norma que se encuentra en la carpeta /etc tendrá prioridad.

Escribir reglas udev

Este es un ejemplo de una regla que coloca un enlace simbólico /dev/video-cam1 cuando una cámara web está conectada. En primer lugar, hemos averiguado que dicha cámara se conecta y se carga como el dispositivo /dev/video2. La razón para escribir esta regla es que en el siguiente arranque el dispositivo bien podría aparecer bajo otro nombre, como por ejemplo /dev/video0.

# udevadm info -a -p $(udevadm info -q path -n /dev/video2)
Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

  looking at device '/devices/pci0000:00/0000:00:04.1/usb3/3-2/3-2:1.0/video4linux/video2':
    KERNEL=="video2"
    SUBSYSTEM=="video4linux"
    ...
  looking at parent device '/devices/pci0000:00/0000:00:04.1/usb3/3-2/3-2:1.0':
    KERNELS=="3-2:1.0"
    SUBSYSTEMS=="usb"
    ...
  looking at parent device '/devices/pci0000:00/0000:00:04.1/usb3/3-2':
    KERNELS=="3-2"
    SUBSYSTEMS=="usb"
    ...
    ATTRS{idVendor}=="05a9"
    ...
    ATTRS{manufacturer}=="OmniVision Technologies, Inc."
    ATTRS{removable}=="unknown"
    ATTRS{idProduct}=="4519"
    ATTRS{bDeviceClass}=="00"
    ATTRS{product}=="USB Camera"
    ...

Desde el dipositivo video4linux usamos KERNEL=="video2" y SUBSYSTEM=="video4linux", entoces hacemos que coincida con la webcam del usb principal usando los ID del proveedor y del producto SUBSYSTEMS=="usb", ATTRS{idVendor}=="05a9" y ATTRS{idProduct}=="4519".

/etc/udev/rules.d/83-webcam.rules
KERNEL=="video[0-9]*", SUBSYSTEM=="video4linux", SUBSYSTEMS=="usb", \
        ATTRS{idVendor}=="05a9", ATTRS{idProduct}=="4519", SYMLINK+="video-cam1"

En el ejemplo anterior hemos creado un enlace simbólico con SYMLINK+="video-cam1", pero podemos configurar fácilmente el usuario OWNER="john" o el grupo usando GROUP="video", o ajustando los permisos mediante MODE="0660"

Sin embargo, si tiene la intención de escribir una regla para que actúe cuando se remueve dispositivo, tenga en cuenta que los atributos del dispositivos pueden no estar accesibles. En este caso, tendrá que trabajar con las variables del entorno predeterminadas del dispositivo. Para controlar las variables del entorno, ejecute la orden siguiente al desenchufar el dispositivo:

# udevadm monitor --environment --udev

En la salida de esta orden, verá pares de valores tales como ID_VENDOR_ID and ID_MODEL_ID, que se corresponden a los atributos utilizados anteriormente "idVendor" y "idProduct". Una regla que utilice variables de entorno del dispositivo puede tener este aspecto:

/etc/udev/rules.d/83-webcam-removed.rules
ACTION=="remove", SUBSYSTEM=="usb", \
        ENV{ID_VENDOR_ID}=="05a9", ENV{ID_MODEL_ID}=="4519", RUN+="/path/to/your/script"

Listar los atributos de un dispositivo

Para obtener una lista de todos los atributos de un dispositivo que podemos utilizar para escribir reglas, ejecutaremos esta orden:

# udevadm info -a -n [device name]

Sustituya [device name] con el dispositivo presente en el sistema, como /dev/sda o /dev/ttyUSB0.

Si no sabemos el nombre del dispositivo, también podemos listar todos los atributos de una ruta específica del sistema:

# udevadm info -a -p /sys/class/backlight/acpi_video0

Comprobar las reglas antes de cargarlas

# udevadm test $(udevadm info -q path -n [device name]) 2>&1

This will not perform all actions in your new rules but it will however process symlink rules on existing devices which might come in handy if you are unable to load them otherwise. You can also directly provide the path to the device you want to test the udev rule for:

# udevadm test /sys/class/backlight/acpi_video0/

Cargas reglas nuevas

Udev detecta automáticamente cambios en los archivos de reglas, por lo que los cambios surtan efecto inmediatamente sin necesidad de reiniciar udev. Sin embargo, las reglas no se recargan automáticamente en aquellos dispositivos que están en funcionamiento. Los dispositivos que se ponen en funcionamiento al conectarse, como los dispositivos USB, si ya estaban conectados, probablemente tendrán que volver a conectarse para que la nueva regla entre en vigor, o, al menos, recargar los módulos del kernel ohci-hcd y ehci-hcd y, por lo tanto, volver a cargar todos los controladores USB.

Podemos forzar manualmente a udev a activar sus reglas con:

# udevadm trigger

Udisks

Si desea montar unidades extraíbles no haga una llamada a 'mount' en la regla udev. En el caso de sistemas de archivos fuse (por ejemplo, ntfs-3g) obtendrá el error "Transport endpoint not connected". En su lugar utilice udisks que maneja el montaje automático correctamente.

Hay dos versiones incompatibles, udisks y udisks2, una reescritura de udisks que rompe la compatibilidad. Dependiendo de nuestro DE, uno u otra versión será necesaria (la cual ya vendrá instalada como una dependencia):

No hay necesidad de cualquier regla adicional. Como elemento adicional, se puede eliminar HAL si se está utilizando solo para fines de montaje automático.

Montaje automático de wrappers de udisks

Los soportes de udisks («udisks wrapper») tienen la ventaja de ser muy fácil de instalar y sin necesidad de configuración (o mínima). Con wrapper se montarán automáticamente elementos como CDs y memorias flash.

  • udevil - udevil «Monta y desmonta dispositivos extraíbles sin necesidad de una contraseña, muestra información del dispositivo, y monitorea los cambios de los dispositivos». Está escrito en C y puede sustituir a udisks e incluye devmon, que se puede instalar por separado desde AUR (devmonAUR). También puede iniciar aplicaciones automáticamente de forma selectiva o ejecutar órdenes después del montaje, hacer caso omiso de dispositivos especificados y volúmenes etiquetados, y desmontar las unidades extraíbles.
  • ldmAUR - Un demonio ligero que monta automáticamente unidades usb, cd, dvd o floppys. [1]
  • udiskie - Escrito en Python. Permite el montaje y desmontaje automático por otros usuarios.
  • udisksevtAUR - Escrito en Haskell. Permite el montaje automático por cualquier usuario. Diseñado para ser integrado con traydeviceAUR.
  • udisksvmAUR - Una GUI de UDisks wrapper que utiliza la interfaz dbus udisks2. Llama al script 'traydvm' , incluido en el paquete. El utilidad GUI 'traydvm' es un script que muestra un icono de la bandeja del sistema para un dispositivo conectado, proporcionando un menú con el botón derecho del ratón para realizar acciones simples sobre el dispositivo. Así, se puede desactivar la función de montaje automático; esta herramienta debe trabajar con otras herramientas de montaje automático, para mostrar los iconos de la bandeja del sistema. Es independiente de cualquier administrador de archivos.
  • Se pueden montar automáticamente y expulsar dispositivos extraíbles con la combinación de pmount, udisks2 y spacefm. Tenga en cuenta que ha de ejecutar spacefm en modo demonio con spacefm -d & en los scripts de inicio, ~/.xinitrc o ~/.xsession, para obtener el montaje automático . También puede montar los discos internos agregándolos a /etc/pmount.allow.

Funciones de udisks para la shell

Mientras udisks incluye un método simple de montaje (y desmontaje) de los dispositivos a través de la línea de órdenes, puede ser, sin embargo, tedioso tener que escribir las órdenes una y otra vez. Estas funciones de la shell que se enumeran a continuación, generalmente, sirven para acortar y facilitar el uso de la línea de órdenes.

  • udisks_functions - Escrito para Bash.
  • bashmount - bashmountAUR es un script bash estructurado a modo de menú, articulado como un simple archivo de configuración que hace que sea fácil de redactar e implementar.

Consejos y Trucos

Acceder a programadores de firmware y a dispositivos USB de comunicación virtual

El siguiente conjunto de reglas permite a los usuarios normales (en el grupo «users») acceder al programador USB USBtinyISP para microcontroladores AVR y al USB genérico (SiLabs CP2102) para el adaptador UART y para el programador Atmel AVR Dragon y Atmel AVR ISP mkII . Ajuste los permiso de acuerdo al caso. Verificado al 31-10-2012.

/etc/udev/rules.d/50-embedded_devices.rules
# USBtinyISP Programmer rules
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1781", ATTRS{idProduct}=="0c9f", GROUP="users", MODE="0666"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="0479", GROUP="users", MODE="0666"
# USBasp Programmer rules http://www.fischl.de/usbasp/
SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="05dc", GROUP="users", MODE="0666"

# Mdfly.com Generic (SiLabs CP2102) 3.3v/5v USB VComm adapter
SUBSYSTEMS=="usb", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", GROUP="users", MODE="0666"

#Atmel AVR Dragon (dragon_isp) rules
SUBSYSTEM=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2107", GROUP="users", MODE="0666"

#Atmel AVR JTAGICEMKII rules
SUBSYSTEM=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2103", GROUP="users", MODE="0666"

#Atmel Corp. AVR ISP mkII
SUBSYSTEM=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2104", GROUP="users", MODE="0666"

Ejecutar USB al Insertar

Consulte el artículo Execute on USB insert o devmon wrapper script.

Detectar nuevas unidades eSATA

Si la unidad eSATA no se detecta cuando se conecte, podemos intertar algunas cosas. Por ejemplo reiniciar con la unidad eSATA enchufada, o bien podría intentar lo siguente:

# for f in /sys/class/scsi_host/host*/scan; do echo "0 0 0" > $f; done

O puede instalar scsiadd (disponible en AUR) y probar esto:

# scsiadd -s

Esperaremos para comprobar que la unidad se encuentra ahora en /dev. Si esto no funciona, podríamos probar con las órdenes anteriores mientras se ejecuta:

# udevadm monitor

para ver qué está sucediendo realmente.

Marca como interna tanto SATA-Ports como eSATA-Ports

Si ha conectado un puerto eSATA u otro adaptador eSATA, el sistema todavía reconocerá este puerto como un disco duro SATA interno. GNOME y KDE le preguntará por su contraseña de root todo el tiempo. La siguiente regla marcará el SATA-Port especificado como un eSATA-Port externo. Con esto, un usuario normal de GNOME pueden conectar sus unidades de disco eSATA al puerto como una unidad USB, sin ningún tipo de contraseña de root y así sucesivamente.


/etc/udev/rules.d/10-esata.rules
DEVPATH=="/devices/pci0000:00/0000:00:1f.2/host4/*", ENV{UDISKS_SYSTEM_INTERNAL}="0"
Nota: el DEVPATH (ruta del dispositivo) se puede encontrar después de la conexión de la unidad de disco eSATA con la siguiente orden (sustituya sdb según su caso):
# find /sys/devices/ -name sdb
/sys/devices/pci0000:00/0000:00:1f.2/host4/target4:0:0/4:0:0:0/block/sdb

Configurar nombres estáticos para los dispositivos

Debido a que udev carga todos los módulos de forma asíncrona, se pueden inicializar en un orden diferente en cada arranque. Esto puede dar como resultado dispositivos con nombres cambiados aleatoriamente. Udev permite crear reglas donde se utilicen nombres estáticos para los dispositivo:

Dispositivo iscsi

Compruebe la salida de scsi_id:

/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/sdb
3600601607db11e0013ab5a8e371ce111
/etc/udev/rules.d/75-iscsi.rules
#The iscsi device rules.
#This will create an iscsi device for each of the targets.
KERNEL=="sd*", SUBSYSTEM=="block", \
     PROGRAM="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace /dev/$name", \ RESULT=="3600601607db11e0013ab5a8e371ce111", \
     NAME="isda"

Dispositivos de vídeo

Para configurar la cámara web, en primer lugar, consulte Webcam configuration.

Si utilizamos múltiples cámaras web, útil por ejemplo con motion (software detector de movimiento que toma imágenes de los dispositivos video4linux y/o de webcams), asignará los dispositivos de vídeo como /dev/video0..n al azar en el arranque. La solución recomendada es crear enlaces simbólicos que utilicen una regla udev (como en el ejemplo de la sección anterior).

/etc/udev/rules.d/83-webcam.rules
KERNEL=="video[0-9]*", SUBSYSTEM=="video4linux", SUBSYSTEMS=="usb", \
        ATTRS{idVendor}=="05a9", ATTRS{idProduct}=="4519", SYMLINK+="video-cam1"
KERNEL=="video[0-9]*", SUBSYSTEM=="video4linux", SUBSYSTEMS=="usb", \
        ATTRS{idVendor}=="046d", ATTRS{idProduct}=="08f6", SYMLINK+="video-cam2"
KERNEL=="video[0-9]*", SUBSYSTEM=="video4linux", SUBSYSTEMS=="usb", \
        ATTRS{idVendor}=="046d", ATTRS{idProduct}=="0840", SYMLINK+="video-cam3"
Nota: El uso de otros nombres distintos de "/dev/video*" se romperá con la precarga de v4l1compat.so y, quizás, v4l2convert.so.

Ejecutar HAL

Algunos programas requieren todavía HAL (como el contenido DRM de Flash). Hal se puede instalar desde halAUR y hal-infoAUR.

Con Systemd : se puede iniciar y detener el servicio hal utilizando las órdenes de systemd siguientes:

Iniciar HAL : # systemctl start hal.service

Parar HAL : # systemctl stop hal.service

Como alternativa, se puede usar el siguiente script:

#!/bin/bash

## escrito por Mark Lee <bluerider>
## información utilizada de <https://wiki.archlinux.org/index.php/Chromium#Google_Play_.26_Flash>

## Iniciar y detener el servicio Hal en orden para el servicio de Google Play Movie

function main () {  ## run the main insertion function
clear-cache;  ## remove adobe cache
start-hal;  ## start the hal daemon
read -p "Press 'enter' to stop hal";  ## pause the command line with a read line
stop-hal;  ## stop the hal daemon
}

function clear-cache () {  ## remove adobe cache
cd ~/.adobe/Flash_Player;  ## go to Flash player user directory
rm -rf NativeCache AssetCache APSPrivateData2;  ## remove cache
}

function start-hal () {  ## start the hal daemon
sudo systemctl start hal.service && ( ## systemd : start hal daemon
 echo "Started hal service..."
 ) || (
 echo "Failed to start hal service!"
 ) 
}

function stop-hal () {  ## stop the hal daemon
sudo systemctl stop hal.service && (  ## systemd : stop hal daemon
 echo "Stopped hal service..."
 ) || (
 echo "Failed to stop hal service!"
 )
}

main;  ## run the main insertion function

Despertar desde la suspención con un dispositivo USB

En primer lugar, encuentre el ID del proveedor y del producto del dispositivo, por ejemplo:

# lsusb | grep Logitech
Bus 007 Device 002: ID 046d:c52b Logitech, Inc. Unifying Receiver

Ahora cambie el atributo power/wakeup del dispositivo y del controlador USB al que está conectado, que en este caso es driver/usb7/power/wakeup. Utilice la siguiente regla:

/etc/udev/rules.d/50-wake-on-device.rules
ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c52b", ATTR{power/wakeup}="enabled", ATTR{driver/usb7/power/wakeup}="enabled"
Nota: Asegúrese también que el controlador del USB esté activado en /proc/acpi/wakeup.

Solución de problemas

Blacklisting de Módulos

En casos extraños, udev puede cometer un error y cargar los módulos incorrectos. Para prevenir este comportamiento, se pueden introducir los módulos afectados en lista negra («blacklist»). Udev nunca cargará los módulos que estén listados («blacklisted»). Consulte Blacklisting. Ni al momento del arranque del sistema ni después cuando se produce un evento de conexión sobre la marcha es recibido (por ejemplo, conectando una unidad flash USB).

udevd falla al inicio

Después de migrar a LDAP o actulizar el sistema con LDAP-backed, udevd puede colgarse en el arranque apareciendo el mensaje «Starting UDev Daemon». Esto es causado, normalmente, porque udevd trata de buscar un nombre de LDAP, pero falla, porque la red no está todavía. La solución es asegurarse de que todos los nombres de grupo del sistema están presentes localmente.

Extraiga los nombres de los grupos mencionados en las reglas de udev y los nombres de grupos realmente presentes en el sistema:

# fgrep -r GROUP /etc/udev/rules.d/ /usr/lib/udev/rules.d | perl -nle '/GROUP\s*=\s*"(.*?)"/ && print $1;' | sort | uniq > udev_groups
# cut -f1 -d: /etc/gshadow /etc/group | sort | uniq > present_groups

Para ver las diferencias, hacer una comparación de lado a lado:

# diff -y present_groups udev_groups
...
network							      <
nobody							      <
ntp							      <
optical								optical
power							      |	pcscd
rfkill							      <
root								root
scanner								scanner
smmsp							      <
storage								storage
...

En este caso, el grupo pcscd, por alguna razón, no está presente en el sistema. Agregue, en consecuencia, los grupos que faltan, en este caso:

# groupadd pcscd

Además, asegúrese de que los recursos locales se desbloquearon antes de recurrir a LDAP. El archivo de configuración /etc/nsswitch.conf debe contener la siguiente línea:

group: files ldap

Problemas conocidos con el Hardware

Dispositivos BusLogic dejan de funcionar y causan bloqueos durante el arranque

Esto es un error en el kernel y todavía no se a provisto ningún arreglo.

Dispositivos extraibles no son reconocidos como tales

Cree una regla udev personalizada, configurando UDISKS_SYSTEM_INTERNAL=0. Para más detalles, consulte la manpage de udisks.

Problemas conocidos con la carga automática

Problemas de sonido con algunos módulos no cargados automáticamente

Algunos usuarios han reportado este problema de entradas antiguas en /etc/modprobe.d/sound.conf. Intente limpiar ese archivo y probar de nuevo.

Nota: A partir de udev>=171, los módulos de emulación de OSS, (snd_seq_oss, snd_pcm_oss, snd_mixer_oss), no vienen cargados automáticamente por defecto.

Problemas conocidos para usuarios con Kernel personalizado

Udev no se ejecuta

Asegúrese que tiene una versión del kernel 2.6.15 o superior. Los kernels anteriores no tienen las capacidades uevent necesarias para que udev realice la auto-carga.

Dispositivos IDE CD/DVD

A partir de la versión 170, udev no es compatible con las unidades de CD-ROM/DVD-ROM, que vendrán cargadas como unidades tradicionales IDE con el módulo ide_cd_mod y vendrán identificadas como /dev/hd*. La unidad sigue siendo usable para las herramientas que acceden directamente al hardware, como cdparanoia, pero es invisible para los programas userspace más avanzados, como KDE.

Un motivo por el cual el módulo ide_cd_mod se carga antes que otros, como sr_mod, podría ser debido, quizás, a que, por cualquier razón, el módulo piix viene cargado por initramfs. En ese caso, es posible reemplazarlo con ata_piix en el archivo /etc/mkinitcpio.conf.

Dispositivos ópticos con ID de grupo ajustado a «disk»

Si el ID de grupo de la unidad de disco óptico está ajustado a disk y desea que esté configurado para optical tiene que crear una regla udev personalizada:

/etc/udev/rules.d
# permissions for IDE CD devices
SUBSYSTEMS=="ide", KERNEL=="hd[a-z]", ATTR{removable}=="1", ATTRS{media}=="cdrom*", GROUP="optical"

# permissions for SCSI CD devices
SUBSYSTEMS=="scsi", KERNEL=="s[rg][0-9]*", ATTRS{type}=="5", GROUP="optical"

Véase también