A good key is essential for every working udev rule. Here are some examples of standard keys:
device bus type
device name the kernel uses
device number on the bus (for example, PCI bus ID)
physical point where the device is connected (like on USB)
sysfs device attributes like label, vendor, serial number, etc.
The keys ID
and PLACE
can be useful,
but usually the keys BUS
, KERNEL
, and
SYSFS{...}
are used.
The udev configuration
also provides keys that call external scripts and evaluate their results.
Find details about this in man
udev.
The file system sysfs stores small files with hardware information in a directory tree. Each file generally only contains one item of information, such as the device name, the vendor, or the serial number. Each of these files can be used as the value of a key. To use several SYSFS keys in one rule, however, you can only use files in the same directory as key values. The tool udevinfo can help find useful keys values.
You must find one subdirectory of /sys
that
refers to the
relevant device and contains a file dev
. These
directories are all located under /sys/block
or
/sys/class
.
If a device node already exists for the device,
udevinfo can find the right subdirectory for you.
The command udevinfo -q path -n /dev/sda outputs
/block/sda. This means that the desired
directory is /sys/block/sda
. Now call
udevinfo with the command udevinfo -a
-p /sys/block/sda. The two commands can also be
combined, as in
udevinfo -a -p `udevinfo -q path -n /dev/sda`.
The following is an extract from the output:
BUS="scsi" ID="0:0:0:0" SYSFS{detach_state}="0" SYSFS{type}="0" SYSFS{max_sectors}="240" SYSFS{device_blocked}="0" SYSFS{queue_depth}="1" SYSFS{scsi_level}="3" SYSFS{vendor}=" " SYSFS{model}="USB 2.0M DSC " SYSFS{rev}="1.00" SYSFS{online}="1"
From the output information, look for suitable keys that will not change. Remember that you cannot use keys from different directories in one rule.