.SH SYNOPSIS
.BI udev " hotplug-subsystem"
.P
-The environment must provide the following variables:
+The following variables are read from the environment:
.TP
.B ACTION
.IR add " or " remove
-signifies the connection or disconnection of a device.
-.TP
+signifies the addition or the removal of a device.
+.P
.B DEVPATH
The sysfs devpath of the device without the mountpoint but a leading slash.
.P
-Additional optional environment variables:
-.TP
+.B SUBSYSTEM
+The subsystem the device belongs to. Alternatively the subsystem may
+be passed as the first argument.
+.P
.B UDEV_CONFIG_FILE
Overrides the default location of the
.B udev
config file.
-.TP
-.B UDEV_NO_SLEEP
-The default behavior of
-.B udev
-is to wait until all the sysfs files of the device chain are populated. If set,
-.B udev
-will continue, regardless of the state of the device representation.
-.TP
+.P
.B UDEV_NO_DEVD
The default behavior of
.B udev
present devices. It creates or removes device node files usually located in
the /dev directory, or it renames network interfaces.
.br
-
.P
As part of the
.B hotplug
.B udev_root
Indicates where to place the device nodes in the filesystem. The default
value is
-.IR /udev/ .
+.IR @udevdir@/ .
.TP
.B udev_db
The name and location of the udev database. The default value is
-.IR /udev/.udev.tdb .
+.IR @udevdir@/.udevdb .
.TP
.B udev_rules
-This is the location of the udev rules file. The default value for this is
-.IR /etc/udev/udev.rules .
-If a directory is specified, the whole directory is
-scanned for files ending with
-.I .rules
-and all rule files are read in lexical order.
+The name of the udev rules file or directory to look for files with the suffix
+.IR .rules .
+All rule files are read in lexical order. The default value is
+.IR /etc/udev/rules.d/ .
.TP
.B udev_permissions
-This is the location of the udev permission file. The default value for this is
-.IR /etc/udev/udev.permissions .
-If a directory is specified, the whole directory is scanned for files ending with
-.I .permissions
-and all permission files are read in lexical order.
+The name of the udev permission file or directory to look for files with the
+suffix
+.IR .permissions .
+All permission files are read in lexical order. The default value is
+.IR /etc/udev/permissions.d/ .
.TP
.B udev_log
-If you want udev to log some information to the syslog for every device handled.
+The switch, if udev logs some information for every device handled.
The default value is
.IR yes .
.TP
.B default_mode
-This is the default mode for all nodes not explicitely matching in the
-permissions file. The default value is
+The default mode for all nodes not explicitely matching in the permissions
+file. The default value is
.IR 0666 .
.TP
.B default_owner
-This is the default owner for all nodes not explicitely matching in the
-permissions file. The default value is
+The default owner for all nodes not explicitely matching in the permissions
+file. The default value is
.IR root .
.TP
.B default_group
-This is the default group for all nodes not explicitely matching in the
-permissions file. The default value is
+The default group for all nodes not explicitely matching in the permissions
+file. The default value is
.IR root .
.br
.P
.sp
.nf
# udev_root - where to place the device nodes in the filesystem
-udev_root="/udev/"
+udev_root="/udev"
# udev_db - The name and location of the udev database
-udev_db="/udev/.udev.tdb"
+udev_db="/udev/.udevdb"
-# udev_rules - The location of the directory where to look for files
- which names ending with .rules
-udev_rules="/etc/udev/"
+# udev_rules - The name of the udev rules file or directory to look
+ for files with the suffix .rules
+udev_rules="/etc/udev/rules.d/"
-# udev_permissions - The name and location of the udev permission file
+# udev_permissions - The name of the udev permission file or directory
+ to look for files with the suffix .permissions
udev_permissions="/etc/udev/udev.permissions"
# udev_log - set to "yes" if you want logging, else "no"
default_group="root"
.fi
.P
-The rules for udev to use when naming devices may specified in
-.I /etc/udev/udev.rules
-or by the
+The rules for device naming, are read from the files located in the
+.I /etc/udev/rules.d/
+directory, or at the location specified by the
.I udev_rules
value in the
.I /etc/udev/udev.conf
file.
-.P
+.br
Every line in the rules file defines the mapping between device attributes
and the device name. One or more keys are specified to match a rule with
the current device. If all keys are matching, the rule will be applied and
.B KERNEL
Match the kernel device name.
.TP
+.B SUBSYSTEM
+Match the kernel subsystem name.
+.TP
+.B DRIVER
+Match the kernel driver name.
+.TP
.B ID
Match the device number on the bus, like PCI bus id.
.TP
.BR NAME{ all_partitions }
it will create all 15 partitions of a blockdevice.
This may be useful for removable media devices.
+.br
+If given with the attribute
+.BR NAME{ ignore_remove }
+it will will ignore any later remove event for this device.
+This may be useful as a workaround for broken device drivers.
+.sp
+Multiple attributes may be separated by comma.
.TP
.B SYMLINK
The name of a symlink targeting the node. Multiple symlinks may be
.BI %s{ filename }
The content of a sysfs attribute.
.TP
+.B %e
+If a device node already exists with the name, the smallest positive
+decimal integer N is substituted such that the resulting name doesn't
+match an existing device node. Otherwise nothing is substituted. This
+can be used to create compatibility symlinks and enumerate devices of
+the same type originating from different kernel subsystems.
+.TP
.B %%
The '%' character itself.
.P
# multiple USB webcams with symlinks to be called webcam0, webcam1, ...
BUS="usb", SYSFS{model}="XV3", NAME="video%n", SYMLINK="webcam%n"
+
+# grouping of optical drives from multiple kernel subsystems
+KERNEL="sr*", NAME="%k", SYMLINK="cdrom%e"
+KERNEL="scd*", NAME="%k", SYMLINK="cdrom%e"
+KERNEL="pcd*", NAME="%k", SYMLINK="cdrom%e"
+KERNEL="hd[a-z]", PROGRAM="/bin/cat /proc/ide/%k/media", RESULT="cdrom",
+ NAME="%k", SYMLINK="cdrom%e"
+
.fi
.P
-Permissions and ownership for the created device files may specified in
-.I /etc/udev/udev.permissions
-or by the
+The permissions and ownership of the created device file is read from
+the files located in the
+.I /etc/udev/permissions.d/
+directory, or at the location specified by the
.I udev_permission
value in the
.I /etc/udev/udev.conf
dsp1:::0666
.fi
.P
-The value
-.I $local
-can be used instead of a specific username. In that case, udev will determine
-the current local user at the time of device node creation and substitute
-that username as the owner of the new device node. This is useful, for
-example, to let hot-plugged devices, such as cameras, be owned by the user at
-the current console. Note that if no user is currently logged in, or if udev
-otherwise fails to determine a current user, the
-.I default_owner
-value is used in lieu.
-.P
A number of different fields in the above configuration files support a simple
form of shell style pattern matching. It supports the following pattern characters:
.TP
suffix, to be recognized.
.br
In addition to the hotplug environment variables,
+.B UDEV_LOG
+is set if udev is configured to use the syslog facility. Executed programs may
+want to follow that setting.
.B DEVNAME
is exported to make the name of the created node, or the name the network
-device is renamed to, available to the executed program. The programs in every
+device is renamed to, available to the executed program. The programs in every
directory are sorted in lexical order, while the directories are searched in
the following order:
.sp