#
# If you would like to statically configure the aliases instead, you can
# use rules like:
-# BUS="ide", ID="1.0", SYMLINK="cdrom"
+# BUS=="ide", ID=="1.0", SYMLINK+="cdrom"
-BUS="scsi", KERNEL="sr[0-9]*", PROGRAM="/etc/udev/scripts/cdsymlinks.sh %k", SYMLINK="%c{1} %c{2} %c{3} %c{4} %c{5} %c{6}"
-BUS="ide", KERNEL="hd[a-z]", SYSFS{removable}="1", PROGRAM="/etc/udev/scripts/cdsymlinks.sh %k", SYMLINK="%c{1} %c{2} %c{3} %c{4} %c{5} %c{6}"
-BUS="ide", KERNEL="pcd[0-9]*", SYSFS{removable}="1", PROGRAM="/etc/udev/scripts/cdsymlinks.sh %k", SYMLINK="%c{1} %c{2} %c{3} %c{4} %c{5} %c{6}"
+BUS=="scsi", KERNEL=="sr[0-9]*", \
+ PROGRAM="/etc/udev/scripts/cdsymlinks.sh %k", \
+ SYMLINK+="%c{1} %c{2} %c{3} %c{4} %c{5} %c{6}"
+BUS=="ide", KERNEL=="hd[a-z]", SYSFS{removable}=="1", \
+ PROGRAM="/etc/udev/scripts/cdsymlinks.sh %k", \
+ SYMLINK+="%c{1} %c{2} %c{3} %c{4} %c{5} %c{6}"
+BUS=="ide", KERNEL=="pcd[0-9]*", SYSFS{removable}=="1", \
+ PROGRAM="/etc/udev/scripts/cdsymlinks.sh %k", \
+ SYMLINK+="%c{1} %c{2} %c{3} %c{4} %c{5} %c{6}"
# compatibility links for a devfs-style /dev
-KERNEL="md[0-9]*", SYMLINK="%k"
-#KERNEL="loop[0-9]*", SYMLINK="%k"
-
-#KERNEL="tty[0-9]*", SYMLINK="%k"
-#KERNEL="ttyS[0-9]*", SYMLINK="%k"
-#KERNEL="ttyUSB[0-9]*", SYMLINK="%k"
-
-#KERNEL="vcs", SYMLINK="%k"
-#KERNEL="vcs[0-9]*", SYMLINK="%k"
-#KERNEL="vcsa", SYMLINK="%k"
-#KERNEL="vcsa[0-9]*", SYMLINK="%k"
-
-KERNEL="video0", SYMLINK="%k"
-KERNEL="radio0", SYMLINK="%k"
-KERNEL="vbi0", SYMLINK="%k"
-KERNEL="vtx0", SYMLINK="%k"
-
-KERNEL="apm_bios", SYMLINK="%k"
-KERNEL="agpgart", SYMLINK="%k"
-#KERNEL="psaux", SYMLINK="%k"
-#KERNEL="nvram", SYMLINK="%k"
-KERNEL="rtc", SYMLINK="%k"
-#KERNEL="ram[0-9]*", SYMLINK="%k"
-
-#KERNEL="i2c-[0-9]*", SYMLINK="%k"
-#KERNEL="lp[0-9]*", SYMLINK="%k"
-
-KERNEL="audio" SYMLINK="%k"
-KERNEL="dsp" SYMLINK="%k"
-KERNEL="mixer" SYMLINK="%k"
-
-#KERNEL="fb[0-9]*", SYMLINK="%k"
-#KERNEL="fd[0-9]*", SYMLINK="%k"
-#KERNEL="js[0-9]*", SYMLINK="%k"
+KERNEL=="md[0-9]*", SYMLINK+="%k"
+#KERNEL=="loop[0-9]*", SYMLINK+="%k"
+
+#KERNEL=="tty[0-9]*", SYMLINK+="%k"
+#KERNEL=="ttyS[0-9]*", SYMLINK+="%k"
+#KERNEL=="ttyUSB[0-9]*", SYMLINK+="%k"
+
+#KERNEL=="vcs", SYMLINK+="%k"
+#KERNEL=="vcs[0-9]*", SYMLINK+="%k"
+#KERNEL=="vcsa", SYMLINK+="%k"
+#KERNEL=="vcsa[0-9]*", SYMLINK+="%k"
+
+KERNEL=="video*", SYMLINK+="%k"
+KERNEL=="radio*", SYMLINK+="%k"
+KERNEL=="vbi*", SYMLINK+="%k"
+KERNEL=="vtx*", SYMLINK+="%k"
+
+KERNEL=="apm_bios", SYMLINK+="%k"
+KERNEL=="agpgart", SYMLINK+="%k"
+#KERNEL=="psaux", SYMLINK+="%k"
+#KERNEL=="nvram", SYMLINK+="%k"
+KERNEL=="rtc", SYMLINK+="%k"
+#KERNEL=="ram[0-9]*", SYMLINK+="%k"
+
+#KERNEL=="i2c-[0-9]*", SYMLINK+="%k"
+#KERNEL=="lp[0-9]*", SYMLINK+="%k"
+
+KERNEL=="audio*" SYMLINK+="%k"
+KERNEL=="dsp*" SYMLINK+="%k"
+KERNEL=="mixer*" SYMLINK+="%k"
+
+#KERNEL=="fb[0-9]*", SYMLINK+="%k"
+#KERNEL=="fd[0-9]*", SYMLINK+="%k"
+#KERNEL=="js[0-9]*", SYMLINK+="%k"
# %n the "kernel number" of the device.
# For example, 'sda3' has a "kernel number" of '3'
# %e the smallest number for that name which does not matches an existing node
-# %k the kernel name for the device.
+# %k the kernel name for the device
# %M the kernel major number for the device
# %m the kernel minor number for the device
# %b the bus id for the device
# %c the string returned by the PROGRAM
-# %s{filename} the content of a sysfs attribute.
-# %% the '%' char itself.
+# %s{filename} the content of a sysfs attribute
+# %% the '%' char itself
#
# workaround for devices which do not report media changes
-BUS="ide", KERNEL="hd[a-z]", SYSFS{removable}="1", \
- PROGRAM="/etc/udev/scripts/ide-model.sh %k", RESULT="IOMEGA ZIP *", \
- OPTIONS="all_partitions", NAME="%k"
+BUS=="ide", KERNEL=="hd[a-z]", SYSFS{removable}=="1", \
+ PROGRAM="/etc/udev/scripts/ide-model.sh %k", RESULT=="IOMEGA ZIP *", \
+ NAME="%k", OPTIONS+="all_partitions"
# IDE devices
-BUS="ide", KERNEL="hd[a-z]*", \
- PROGRAM="/etc/udev/scripts/ide-devfs.sh %k %b %n", \
- NAME="%c{1}", SYMLINK="%k %c{2}"
+BUS=="ide", KERNEL=="hd[a-z]*", \
+ PROGRAM="/etc/udev/scripts/ide-devfs.sh %k %b %n", \
+ NAME="%c{1}", SYMLINK+="%k %c{2}"
# SCSI devices
-BUS="scsi", PROGRAM="/etc/udev/scripts/scsi-devfs.sh %k %b %n", \
- NAME="%c{1}", SYMLINK="%k %c{2}"
+BUS=="scsi", PROGRAM="/etc/udev/scripts/scsi-devfs.sh %k %b %n", \
+ NAME="%c{1}", SYMLINK+="%k %c{2}"
# RAID controllers
-KERNEL="cciss!*", PROGRAM="/etc/udev/scripts/raid-devfs.sh %k", \
- NAME="%c{1}", SYMLINK="%k"
-KERNEL="ida!*", PROGRAM="/etc/udev/scripts/raid-devfs.sh %k", \
- NAME="%c{1}", SYMLINK="%k"
-KERNEL="rd!*", PROGRAM="/etc/udev/scripts/raid-devfs.sh %k", \
- NAME="%c{1}", SYMLINK="%k"
+KERNEL=="cciss!*", PROGRAM="/etc/udev/scripts/raid-devfs.sh %k", \
+ NAME="%c{1}", SYMLINK+="%k"
+KERNEL=="ida!*", PROGRAM="/etc/udev/scripts/raid-devfs.sh %k", \
+ NAME="%c{1}", SYMLINK+="%k"
+KERNEL=="rd!*", PROGRAM="/etc/udev/scripts/raid-devfs.sh %k", \
+ NAME="%c{1}", SYMLINK+="%k"
# other block devices
-KERNEL="md[0-9]*", NAME="md/%n",
-KERNEL="loop[0-9]*", NAME="loop/%n"
-KERNEL="ram[0-9]*", NAME="rd/%n"
+KERNEL=="md[0-9]*", NAME="md/%n",
+KERNEL=="loop[0-9]*", NAME="loop/%n"
+KERNEL=="ram[0-9]*", NAME="rd/%n"
# USB devices
-BUS="usb", KERNEL="auer[0-9]*", NAME="usb/%k"
-BUS="usb", KERNEL="cpad[0-9]*", NAME="usb/%k"
-BUS="usb", KERNEL="dabusb*", NAME="usb/%k"
-BUS="usb", KERNEL="hiddev*", NAME="usb/%k"
-BUS="usb", KERNEL="legousbtower*", NAME="usb/%k"
-BUS="usb", KERNEL="lp[0-9]*", NAME="usb/%k"
-BUS="usb", KERNEL="ttyUSB*", SYSFS{product}="Palm Handheld*", SYMLINK="pilot"
+BUS=="usb", KERNEL=="auer[0-9]*", NAME="usb/%k"
+BUS=="usb", KERNEL=="cpad[0-9]*", NAME="usb/%k"
+BUS=="usb", KERNEL=="dabusb*", NAME="usb/%k"
+BUS=="usb", KERNEL=="hiddev*", NAME="usb/%k"
+BUS=="usb", KERNEL=="legousbtower*", NAME="usb/%k"
+BUS=="usb", KERNEL=="lp[0-9]*", NAME="usb/%k"
+BUS=="usb", KERNEL=="ttyUSB*", SYSFS{product}=="Palm Handheld*", \
+ SYMLINK+="pilot"
# serial devices
-KERNEL="ttyS[0-9]*", NAME="tts/%n"
-KERNEL="ttyUSB[0-9]*", NAME="tts/USB%n"
-KERNEL="rfcomm[0-9]*", NAME="bluetooth/rfcomm/%n",
-KERNEL="capi", NAME="capi20", SYMLINK="isdn/capi20"
-KERNEL="capi[0-9]*", NAME="capi/%n"
+KERNEL=="ttyS[0-9]*", NAME="tts/%n"
+KERNEL=="ttyUSB[0-9]*", NAME="tts/USB%n"
+KERNEL=="rfcomm[0-9]*", NAME="bluetooth/rfcomm/%n",
+KERNEL=="capi", NAME="capi20", SYMLINK+="isdn/capi20"
+KERNEL=="capi[0-9]*", NAME="capi/%n"
# vc devices
-KERNEL="tty[0-9]*", NAME="vc/%n"
-KERNEL="vcs", NAME="vcc/0"
-KERNEL="vcs[0-9]*", NAME="vcc/%n"
-KERNEL="vcsa", NAME="vcc/a0"
-KERNEL="vcsa[0-9]*", NAME="vcc/a%n"
+KERNEL=="tty[0-9]*", NAME="vc/%n"
+KERNEL=="vcs", NAME="vcc/0"
+KERNEL=="vcs[0-9]*", NAME="vcc/%n"
+KERNEL=="vcsa", NAME="vcc/a0"
+KERNEL=="vcsa[0-9]*", NAME="vcc/a%n"
# video devices
-KERNEL="video[0-9]*", NAME="v4l/%k"
-KERNEL="radio[0-9]*", NAME="v4l/%k"
-KERNEL="vbi[0-9]*", NAME="v4l/%k"
-KERNEL="vtx[0-9]*", NAME="v4l/%k"
-KERNEL="dvb*", PROGRAM="/etc/udev/scripts/dvb.sh %k", NAME="%c"
-KERNEL="fb[0-9]*", NAME="fb/%n"
-KERNEL="card[0-9]*", NAME="dri/%k"
+KERNEL=="video[0-9]*", NAME="v4l/%k"
+KERNEL=="radio[0-9]*", NAME="v4l/%k"
+KERNEL=="vbi[0-9]*", NAME="v4l/%k"
+KERNEL=="vtx[0-9]*", NAME="v4l/%k"
+KERNEL=="dvb*", PROGRAM="/etc/udev/scripts/dvb.sh %k", \
+ NAME="%c"
+KERNEL=="fb[0-9]*", NAME="fb/%n"
+KERNEL=="card[0-9]*", NAME="dri/%k"
# misc devices
-KERNEL="apm_bios", NAME="misc/%k",
-KERNEL="agpgart", NAME="misc/%k"
-KERNEL="nvram", NAME="misc/%k"
-KERNEL="psaux", NAME="misc/%k"
-KERNEL="rtc", NAME="misc/%k"
-KERNEL="hw_random", NAME="hwrng"
+KERNEL=="apm_bios", NAME="misc/%k",
+KERNEL=="agpgart", NAME="misc/%k"
+KERNEL=="hw_random", NAME="hwrng"
+KERNEL=="nvram", NAME="misc/%k"
+KERNEL=="psaux", NAME="misc/%k"
+KERNEL=="rtc", NAME="misc/%k"
+KERNEL=="tun", NAME="net/%k"
# printers and parallel devices
-KERNEL="lp[0-9]*", NAME="printers/%n"
-KERNEL="parport[0-9]*", NAME="parports/%n"
+KERNEL=="lp[0-9]*", NAME="printers/%n"
+KERNEL=="parport[0-9]*", NAME="parports/%n"
-KERNEL="i2c-[0-9]*", NAME="i2c/%n"
-KERNEL="fd[0-9]*", NAME="floppy/%n"
+KERNEL=="i2c-[0-9]*", NAME="i2c/%n"
+KERNEL=="fd[0-9]*", NAME="floppy/%n"
-KERNEL="cdemu[0-9]*", NAME="cdemu/%n"
-KERNEL="pktcdvd[0-9]*", NAME="pktcdvd/%n"
-KERNEL="pktcdvd", NAME="pktcdvd/control"
+KERNEL=="cdemu[0-9]*", NAME="cdemu/%n"
+KERNEL=="pktcdvd[0-9]*", NAME="pktcdvd/%n"
+KERNEL=="pktcdvd", NAME="pktcdvd/control"
-KERNEL="cpu[0-9]*", NAME="cpu/%n/cpuid"
-KERNEL="msr[0-9]*", NAME="cpu/%n/msr"
-KERNEL="microcode", NAME="cpu/microcode"
+KERNEL=="cpu[0-9]*", NAME="cpu/%n/cpuid"
+KERNEL=="msr[0-9]*", NAME="cpu/%n/msr"
+KERNEL=="microcode", NAME="cpu/microcode"
-KERNEL="umad*", NAME="infiniband/%k"
-KERNEL="issm*", NAME="infiniband/%k"
-
-KERNEL="tap[0-9]*", NAME="net/%k"
-KERNEL="tun", NAME="net/%k"
+KERNEL=="umad*", NAME="infiniband/%k"
+KERNEL=="issm*", NAME="infiniband/%k"
# sound devices
-KERNEL="controlC[0-9]*", NAME="snd/%k"
-KERNEL="hwC[D0-9]*", NAME="snd/%k"
-KERNEL="pcmC[D0-9cp]*", NAME="snd/%k"
-KERNEL="midiC[D0-9]*", NAME="snd/%k"
-KERNEL="timer", NAME="snd/%k"
-KERNEL="seq", NAME="snd/%k"
-KERNEL="audio*", NAME="sound/%k"
-KERNEL="dsp*", NAME="sound/%k"
-KERNEL="adsp*", NAME="sound/%k"
-KERNEL="midi*", NAME="sound/%k"
-KERNEL="mixer*", NAME="sound/%k"
-KERNEL="sequencer*", NAME="sound/%k"
-KERNEL="amidi*", NAME="sound/%k"
-KERNEL="dmmidi*", NAME="sound/%k"
-KERNEL="admmidi*", NAME="sound/%k"
+KERNEL=="controlC[0-9]*", NAME="snd/%k"
+KERNEL=="hwC[D0-9]*", NAME="snd/%k"
+KERNEL=="pcmC[D0-9cp]*", NAME="snd/%k"
+KERNEL=="midiC[D0-9]*", NAME="snd/%k"
+KERNEL=="timer", NAME="snd/%k"
+KERNEL=="seq", NAME="snd/%k"
+KERNEL=="audio*", NAME="sound/%k"
+KERNEL=="dsp*", NAME="sound/%k"
+KERNEL=="adsp*", NAME="sound/%k"
+KERNEL=="midi*", NAME="sound/%k"
+KERNEL=="mixer*", NAME="sound/%k"
+KERNEL=="sequencer*", NAME="sound/%k"
+KERNEL=="amidi*", NAME="sound/%k"
+KERNEL=="dmmidi*", NAME="sound/%k"
+KERNEL=="admmidi*", NAME="sound/%k"
+
+# ieee1394 devices
+KERNEL=="dv1394*", NAME="dv1394/%n"
+KERNEL=="video1394*", NAME="video1394/%n"
# input devices
-KERNEL="mice", NAME="input/%k"
-KERNEL="mouse[0-9]*", NAME="input/%k"
-KERNEL="event[0-9]*", NAME="input/%k"
-KERNEL="js[0-9]*", NAME="input/%k"
-KERNEL="ts[0-9]*", NAME="input/%k"
-KERNEL="uinput", NAME="input/%k"
+KERNEL=="mice", NAME="input/%k"
+KERNEL=="mouse[0-9]*", NAME="input/%k"
+KERNEL=="event[0-9]*", NAME="input/%k"
+KERNEL=="js[0-9]*", NAME="input/%k"
+KERNEL=="ts[0-9]*", NAME="input/%k"
+KERNEL=="uinput", NAME="input/%k"
# Zaptel
-KERNEL="zapctl", NAME="zap/ctl"
-KERNEL="zaptimer", NAME="zap/timer"
-KERNEL="zapchannel", NAME="zap/channel"
-KERNEL="zappseudo", NAME="zap/pseudo"
-KERNEL="zap[0-9]*", NAME="zap/%n"
+KERNEL=="zapctl", NAME="zap/ctl"
+KERNEL=="zaptimer", NAME="zap/timer"
+KERNEL=="zapchannel", NAME="zap/channel"
+KERNEL=="zappseudo", NAME="zap/pseudo"
+KERNEL=="zap[0-9]*", NAME="zap/%n"
# AOE character devices
-SUBSYSTEM="aoe", KERNEL="discover", NAME="etherd/%k"
-SUBSYSTEM="aoe", KERNEL="err", NAME="etherd/%k"
-SUBSYSTEM="aoe", KERNEL="interfaces", NAME="etherd/%k"
+SUBSYSTEM=="aoe", KERNEL=="discover", NAME="etherd/%k"
+SUBSYSTEM=="aoe", KERNEL=="err", NAME="etherd/%k"
+SUBSYSTEM=="aoe", KERNEL=="interfaces", NAME="etherd/%k"
# device mapper creates its own device nodes, so ignore these
-KERNEL="dm-[0-9]*", OPTIONS="ignore_device"
-KERNEL="device-mapper", NAME="mapper/control"
+KERNEL=="dm-[0-9]*", OPTIONS+="ignore_device"
+KERNEL=="device-mapper", NAME="mapper/control"
--- /dev/null
+# do not call hotplug.d and dev.d for "drivers" and "module" events
+SUBSYSTEM=="drivers", OPTIONS="last_rule"
+SUBSYSTEM=="module", OPTIONS="last_rule"
+
+# compatibility support for the obsolete hotplug.d and dev.d directories
+ENV{UDEVD_EVENT}=="1", RUN+="/sbin/udev_run_hotplugd"
+RUN+="/sbin/udev_run_devd"
+
# default permissions for block devices
-SUBSYSTEM="block", GROUP="disk"
-SUBSYSTEM="block", SYSFS{removable}="1", GROUP="floppy"
+SUBSYSTEM=="block", GROUP="disk"
+SUBSYSTEM=="block", SYSFS{removable}=="1", GROUP="floppy"
# IDE devices
-BUS="ide", KERNEL="hd[a-z]", SYSFS{removable}="1", \
- PROGRAM="/bin/cat /proc/ide/%k/media", RESULT="cdrom*", GROUP="cdrom"
-BUS="ide", KERNEL="ht[0-9]*", GROUP="tape"
-BUS="ide", KERNEL="nht[0-9]*", GROUP="tape"
+BUS=="ide", KERNEL=="hd[a-z]", SYSFS{removable}="1", \
+ PROGRAM="/bin/cat /proc/ide/%k/media", RESULT=="cdrom*", GROUP="cdrom"
+BUS=="ide", KERNEL=="ht[0-9]*", GROUP="tape"
+BUS=="ide", KERNEL=="nht[0-9]*", GROUP="tape"
# SCSI devices
-BUS="scsi", SYSFS{type}="1", GROUP="tape"
-BUS="scsi", SYSFS{type}="5", GROUP="cdrom"
-BUS="scsi", SYSFS{type}="6", GROUP="scanner"
+BUS=="scsi", SYSFS{type}=="1", GROUP="tape"
+BUS=="scsi", SYSFS{type}=="5", GROUP="cdrom"
+BUS=="scsi", SYSFS{type}=="6", GROUP="scanner"
# USB devices
-BUS="usb", KERNEL="legousbtower*", MODE="0666"
+BUS=="usb", KERNEL=="legousbtower*", MODE="0666"
+BUS=="usb", KERNEL=="lp[0-9]*", GROUP="lp"
# serial devices
-SUBSYSTEM="tty", GROUP="dialout"
-SUBSYSTEM="capi", GROUP="dialout"
+SUBSYSTEM=="tty", GROUP="dialout"
+SUBSYSTEM=="capi", GROUP="dialout"
+SUBSYSTEM=="slamr", GROUP="dialout"
# vc devices (all members of the tty subsystem)
-KERNEL="ptmx", MODE="0666", GROUP="root"
-KERNEL="console", MODE="0600", GROUP="root"
-KERNEL="tty", MODE="0666", GROUP="root"
-KERNEL="tty[0-9]*", GROUP="root"
+KERNEL=="ptmx", MODE="0666", GROUP="root"
+KERNEL=="console", MODE="0600", GROUP="root"
+KERNEL=="tty", MODE="0666", GROUP="root"
+KERNEL=="tty[0-9]*", GROUP="root"
# video devices
-SUBSYSTEM="video4linux", GROUP="video"
-SUBSYSTEM="dvb", GROUP="video"
-SUBSYSTEM="graphics", GROUP="video"
-SUBSYSTEM="nvidia", GROUP="video"
-SUBSYSTEM="drm", GROUP="video"
+SUBSYSTEM=="video4linux", GROUP="video"
+SUBSYSTEM=="drm", GROUP="video"
+SUBSYSTEM=="dvb", GROUP="video"
+SUBSYSTEM=="em8300", GROUP="video"
+SUBSYSTEM=="graphics", GROUP="video"
+SUBSYSTEM=="nvidia", GROUP="video"
# misc devices
-KERNEL="random", MODE="0666"
-KERNEL="urandom", MODE="0444"
-KERNEL="mem", MODE="0640", GROUP="kmem"
-KERNEL="kmem", MODE="0640", GROUP="kmem"
-KERNEL="port", MODE="0640", GROUP="kmem"
-KERNEL="full", MODE="0666"
-KERNEL="null", MODE="0666"
-KERNEL="zero", MODE="0666"
-KERNEL="inotify", MODE="0666"
-KERNEL="sgi_fetchop", MODE="0666"
-KERNEL="sonypi", MODE="0666"
-KERNEL="agpgart", GROUP="video"
-KERNEL="nvram", GROUP="nvram"
-KERNEL="rtc", MODE="0660", GROUP="audio"
+KERNEL=="random", MODE="0666"
+KERNEL=="urandom", MODE="0444"
+KERNEL=="mem", MODE="0640", GROUP="kmem"
+KERNEL=="kmem", MODE="0640", GROUP="kmem"
+KERNEL=="port", MODE="0640", GROUP="kmem"
+KERNEL=="full", MODE="0666"
+KERNEL=="null", MODE="0666"
+KERNEL=="zero", MODE="0666"
+KERNEL=="inotify", MODE="0666"
+KERNEL=="sgi_fetchop", MODE="0666"
+KERNEL=="sonypi", MODE="0666"
+KERNEL=="agpgart", GROUP="video"
+KERNEL=="nvram", GROUP="nvram"
+KERNEL=="rtc", MODE="0660", GROUP="audio"
-KERNEL="cdemu[0-9]*", GROUP="cdrom"
-KERNEL="pktcdvd[0-9]*", GROUP="cdrom"
-KERNEL="pktcdvd", MODE="0644"
+KERNEL=="cdemu[0-9]*", GROUP="cdrom"
+KERNEL=="pktcdvd[0-9]*", GROUP="cdrom"
+KERNEL=="pktcdvd", MODE="0644"
# printers and parallel devices
-SUBSYSTEM="printer", GROUP="lp"
-SUBSYSTEM="ppdev", GROUP="lp"
-KERNEL="pt[0-9]*", GROUP="tape"
-KERNEL="pht[0-9]*", GROUP="tape"
+SUBSYSTEM=="printer", GROUP="lp"
+SUBSYSTEM=="ppdev", GROUP="lp"
+KERNEL=="pt[0-9]*", GROUP="tape"
+KERNEL=="pht[0-9]*", GROUP="tape"
# sound devices
-SUBSYSTEM="sound", GROUP="audio"
+SUBSYSTEM=="sound", GROUP="audio"
+
+# ieee1394 devices
+KERNEL=="raw1394", GROUP="disk"
+KERNEL=="dv1394*", GROUP="video"
+KERNEL=="video1394*", GROUP="video"
# input devices
-KERNEL="event[0-9]*", PROGRAM="/etc/udev/scripts/inputdev.sh %k", \
- RESULT="inputdev", MODE="0664", GROUP="video"
-KERNEL="js[0-9]*", MODE="0664"
+KERNEL=="event[0-9]*", PROGRAM="/etc/udev/scripts/inputdev.sh %k", \
+ RESULT=="inputdev", MODE="0664", GROUP="video"
+KERNEL=="js[0-9]*", MODE="0664"
# AOE character devices
-SUBSYSTEM="aoe", MODE="0220", GROUP="disk"
-SUBSYSTEM="aoe", KERNEL="err", MODE="0440"
+SUBSYSTEM=="aoe", MODE="0220", GROUP="disk"
+SUBSYSTEM=="aoe", KERNEL=="err", MODE="0440"
--- /dev/null
+# ignore the events generated by virtual consoles
+KERNEL=="ptmx", OPTIONS+="last_rule"
+KERNEL=="console", OPTIONS+="last_rule"
+KERNEL=="tty" , OPTIONS+="last_rule"
+KERNEL=="tty[0-9]*", OPTIONS+="last_rule"
+SUBSYSTEM=="vc", OPTIONS+="last_rule"
+
# grouping of optical drives from multiple kernel subsystems
-BUS="scsi", KERNEL="sr[0-9]*", SYMLINK="cdrom%e"
-BUS="ide", KERNEL="hd[a-z]", SYSFS{removable}="1", SYMLINK="cdrom%e", PROGRAM="/bin/cat /proc/ide/%k/media", RESULT="cdrom"
-BUS="ide", KERNEL="pcd[0-9]*", SYSFS{removable}="1", SYMLINK="cdrom%e"
+BUS=="scsi", KERNEL=="sr[0-9]*", SYMLINK+="cdrom%e"
+BUS=="ide", KERNEL=="hd[a-z]", SYSFS{removable}=="1", \
+ PROGRAM="/bin/cat /proc/ide/%k/media", RESULT=="cdrom", \
+ SYMLINK+="cdrom%e"
+BUS=="ide", KERNEL=="pcd[0-9]*", SYSFS{removable}=="1", SYMLINK+="cdrom%e"
# %n the "kernel number" of the device.
# For example, 'sda3' has a "kernel number" of '3'
# %e the smallest number for that name which does not matches an existing node
-# %k the kernel name for the device.
+# %k the kernel name for the device
# %M the kernel major number for the device
# %m the kernel minor number for the device
# %b the bus id for the device
# %c the string returned by the PROGRAM
-# %s{filename} the content of a sysfs attribute.
-# %% the '%' char itself.
+# %s{filename} the content of a sysfs attribute
+# %% the '%' char itself
#
# workaround for devices which do not report media changes
-BUS="ide", KERNEL="hd[a-z]", SYSFS{removable}="1", \
- PROGRAM="/etc/udev/scripts/ide-model.sh %k", RESULT="IOMEGA ZIP *", \
- OPTIONS="all_partitions", NAME="%k"
+BUS=="ide", KERNEL=="hd[a-z]", SYSFS{removable}=="1", \
+ PROGRAM="/etc/udev/scripts/ide-model.sh %k", RESULT=="IOMEGA ZIP *", \
+ NAME="%k", OPTIONS+="all_partitions"
# SCSI devices
-BUS="scsi", KERNEL="sr[0-9]*", NAME="scd%n", SYMLINK="sr%n"
+BUS=="scsi", KERNEL=="sr[0-9]*", NAME="scd%n", SYMLINK+="sr%n"
# USB devices
-BUS="usb", KERNEL="hiddev*", NAME="usb/%k"
-BUS="usb", KERNEL="auer[0-9]*", NAME="usb/%k"
-BUS="usb", KERNEL="legousbtower*", NAME="usb/%k"
-BUS="usb", KERNEL="dabusb*", NAME="usb/%k"
-BUS="usb", KERNEL="cpad[0-9]*", NAME="usb/%k"
-BUS="usb", KERNEL="lp[0-9]*", NAME="usb/%k"
-BUS="usb", KERNEL="ttyUSB*", SYSFS{product}="Palm Handheld*", SYMLINK="pilot"
+BUS=="usb", KERNEL=="hiddev*", NAME="usb/%k"
+BUS=="usb", KERNEL=="auer[0-9]*", NAME="usb/%k"
+BUS=="usb", KERNEL=="legousbtower*", NAME="usb/%k"
+BUS=="usb", KERNEL=="dabusb*", NAME="usb/%k"
+BUS=="usb", KERNEL=="cpad[0-9]*", NAME="usb/%k"
+BUS=="usb", KERNEL=="lp[0-9]*", NAME="usb/%k"
+BUS=="usb", KERNEL=="ttyUSB*", SYSFS{product}=="Palm Handheld*", \
+ SYMLINK+=="pilot"
# serial devices
-KERNEL="capi", NAME="capi20", SYMLINK="isdn/capi20"
-KERNEL="capi[0-9]*", NAME="capi/%n"
+KERNEL=="capi", NAME="capi20", SYMLINK+="isdn/capi20"
+KERNEL=="capi[0-9]*", NAME="capi/%n"
# video devices
-KERNEL="dvb*", PROGRAM="/etc/udev/scripts/dvb.sh %k", NAME="%c"
-KERNEL="card[0-9]*", NAME="dri/%k"
+KERNEL=="dvb*", PROGRAM="/etc/udev/scripts/dvb.sh %k", \
+ NAME="%c"
+KERNEL=="card[0-9]*", NAME="dri/%k"
# misc devices
-KERNEL="hw_random", NAME="hwrng"
+KERNEL=="hw_random", NAME="hwrng"
+KERNEL=="tun", NAME="net/%k"
-KERNEL="cdemu[0-9]*", NAME="cdemu/%n"
-KERNEL="pktcdvd[0-9]*", NAME="pktcdvd/%n"
-KERNEL="pktcdvd", NAME="pktcdvd/control"
+KERNEL=="cdemu[0-9]*", NAME="cdemu/%n"
+KERNEL=="pktcdvd[0-9]*", NAME="pktcdvd/%n"
+KERNEL=="pktcdvd", NAME="pktcdvd/control"
-KERNEL="cpu[0-9]*", NAME="cpu/%n/cpuid"
-KERNEL="msr[0-9]*", NAME="cpu/%n/msr"
-KERNEL="microcode", NAME="cpu/microcode"
+KERNEL=="cpu[0-9]*", NAME="cpu/%n/cpuid"
+KERNEL=="msr[0-9]*", NAME="cpu/%n/msr"
+KERNEL=="microcode", NAME="cpu/microcode"
-KERNEL="umad*", NAME="infiniband/%k"
-KERNEL="issm*", NAME="infiniband/%k"
-
-KERNEL="tap[0-9]*", NAME="net/%k"
-KERNEL="tun", NAME="net/%k"
+KERNEL=="umad*", NAME="infiniband/%k"
+KERNEL=="issm*", NAME="infiniband/%k"
# ALSA devices
-KERNEL="controlC[0-9]*", NAME="snd/%k"
-KERNEL="hwC[D0-9]*", NAME="snd/%k"
-KERNEL="pcmC[D0-9cp]*", NAME="snd/%k"
-KERNEL="midiC[D0-9]*", NAME="snd/%k"
-KERNEL="timer", NAME="snd/%k"
-KERNEL="seq", NAME="snd/%k"
+KERNEL=="controlC[0-9]*", NAME="snd/%k"
+KERNEL=="hwC[D0-9]*", NAME="snd/%k"
+KERNEL=="pcmC[D0-9cp]*", NAME="snd/%k"
+KERNEL=="midiC[D0-9]*", NAME="snd/%k"
+KERNEL=="timer", NAME="snd/%k"
+KERNEL=="seq", NAME="snd/%k"
+
+# ieee1394 devices
+KERNEL=="dv1394*", NAME="dv1394/%n"
+KERNEL=="video1394*", NAME="video1394/%n"
# input devices
-KERNEL="mice", NAME="input/%k"
-KERNEL="mouse[0-9]*", NAME="input/%k"
-KERNEL="event[0-9]*", NAME="input/%k"
-KERNEL="js[0-9]*", NAME="input/%k"
-KERNEL="ts[0-9]*", NAME="input/%k"
-KERNEL="uinput", NAME="input/%k"
+KERNEL=="mice", NAME="input/%k"
+KERNEL=="mouse[0-9]*", NAME="input/%k"
+KERNEL=="event[0-9]*", NAME="input/%k"
+KERNEL=="js[0-9]*", NAME="input/%k"
+KERNEL=="ts[0-9]*", NAME="input/%k"
+KERNEL=="uinput", NAME="input/%k"
# Zaptel
-KERNEL="zapctl", NAME="zap/ctl"
-KERNEL="zaptimer", NAME="zap/timer"
-KERNEL="zapchannel", NAME="zap/channel"
-KERNEL="zappseudo", NAME="zap/pseudo"
-KERNEL="zap[0-9]*", NAME="zap/%n"
+KERNEL=="zapctl", NAME="zap/ctl"
+KERNEL=="zaptimer", NAME="zap/timer"
+KERNEL=="zapchannel", NAME="zap/channel"
+KERNEL=="zappseudo", NAME="zap/pseudo"
+KERNEL=="zap[0-9]*", NAME="zap/%n"
# AOE character devices
-SUBSYSTEM="aoe", KERNEL="discover", NAME="etherd/%k"
-SUBSYSTEM="aoe", KERNEL="err", NAME="etherd/%k"
-SUBSYSTEM="aoe", KERNEL="interfaces", NAME="etherd/%k"
+SUBSYSTEM=="aoe", KERNEL=="discover", NAME="etherd/%k"
+SUBSYSTEM=="aoe", KERNEL=="err", NAME="etherd/%k"
+SUBSYSTEM=="aoe", KERNEL=="interfaces", NAME="etherd/%k"
# device mapper creates its own device nodes, so ignore these
-KERNEL="dm-[0-9]*", OPTIONS="ignore_device"
-KERNEL="device-mapper", NAME="mapper/control"
+KERNEL=="dm-[0-9]*", OPTIONS+="ignore_device"
+KERNEL=="device-mapper", NAME="mapper/control"