# %% the '%' char itself.
#
-# IDE block devices
-BUS="ide", KERNEL="hd[a-z]*", PROGRAM="/etc/udev/scripts/ide-devfs.sh %k %b %n", NAME="%c{1}", SYMLINK="%k %c{2}"
-
-# permissions for SCSI CD devices
-BUS="scsi", KERNEL="s[grt][0-9]*", SYSFS{type}="5", PROGRAM="/etc/udev/scripts/scsi-devfs.sh %k %b %n", NAME="%c{1}", SYMLINK="%k %c{2}", MODE="0660", GROUP="cdrom"
-
-# SCSI block devices
-BUS="scsi", KERNEL="sd[a-z]", PROGRAM="/etc/udev/scripts/scsi-devfs.sh %k %b %n", NAME="%c{1}", SYMLINK="%k %c{2}"
-BUS="scsi", KERNEL="sd[a-z][0-9]*", PROGRAM="/etc/udev/scripts/scsi-devfs.sh %k %b %n", NAME="%c{1}", SYMLINK="%k %c{2}"
-BUS="scsi", KERNEL="sd[a-i][a-z]", PROGRAM="/etc/udev/scripts/scsi-devfs.sh %k %b %n", NAME="%c{1}", SYMLINK="%k %c{2}"
-BUS="scsi", KERNEL="sd[a-i][a-z][0-9]*", PROGRAM="/etc/udev/scripts/scsi-devfs.sh %k %b %n", NAME="%c{1}", SYMLINK="%k %c{2}"
-BUS="scsi", KERNEL="s[grt][0-9]*", PROGRAM="/etc/udev/scripts/scsi-devfs.sh %k %b %n", NAME="%c{1}", SYMLINK="%k %c{2}"
-BUS="scsi", KERNEL="scd[0-9]*", PROGRAM="/etc/udev/scripts/scsi-devfs.sh %k %b %n", NAME="%c{1}", SYMLINK="%k %c{2}"
-BUS="scsi", KERNEL="st[0-9]*", PROGRAM="/etc/udev/scripts/scsi-devfs.sh %k %b %n", NAME="%c{1}", SYMLINK="%k %c{2}"
-BUS="scsi", KERNEL="nst[0-9]*", PROGRAM="/etc/udev/scripts/scsi-devfs.sh %k %b %n", NAME="%c{1}", SYMLINK="%k %c{2}"
+# default permissions for block devices
+SUBSYSTEM="block", GROUP="disk"
+SUBSYSTEM="block", SYSFS{removable}="1", GROUP="floppy"
+
+# workaround for devices which do not report media changes
+BUS="ide", KERNEL="hd[a-z]", SYSFS{removable}="1", \
+ PROGRAM="/bin/cat /proc/ide/%k/model", RESULT="IOMEGA ZIP *", \
+ NAME{all_partitions}="%k%n", 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="hd[a-z]", SYSFS{removable}="1", \
+ PROGRAM="/bin/cat /proc/ide/%k/media", RESULT="floppy*", \
+ GROUP="floppy"
+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="ht[0-9]*", GROUP="tape"
+BUS="ide", KERNEL="nht[0-9]*", GROUP="tape"
+
+# SCSI devices
+BUS="scsi", KERNEL="sd[a-z]", \
+ PROGRAM="/etc/udev/scripts/scsi-devfs.sh %k %b %n", \
+ NAME="%c{1}", SYMLINK="%k %c{2}"
+BUS="scsi", KERNEL="sd[a-z][0-9]*", \
+ PROGRAM="/etc/udev/scripts/scsi-devfs.sh %k %b %n", \
+ NAME="%c{1}", SYMLINK="%k %c{2}"
+BUS="scsi", KERNEL="sd[a-i][a-z]", \
+ PROGRAM="/etc/udev/scripts/scsi-devfs.sh %k %b %n", \
+ NAME="%c{1}", SYMLINK="%k %c{2}"
+BUS="scsi", KERNEL="sd[a-i][a-z][0-9]*", \
+ PROGRAM="/etc/udev/scripts/scsi-devfs.sh %k %b %n", \
+ NAME="%c{1}", SYMLINK="%k %c{2}"
+BUS="scsi", KERNEL="s[gr][0-9]*", SYSFS{type}="5", \
+ PROGRAM="/etc/udev/scripts/scsi-devfs.sh %k %b %n", \
+ NAME="%c{1}", SYMLINK="%k %c{2}", GROUP="cdrom"
+BUS="scsi", KERNEL="sr[0-9]*", \
+ PROGRAM="/etc/udev/scripts/scsi-devfs.sh %k %b %n", \
+ NAME="%c{1}", SYMLINK="%k %c{2}", GROUP="cdrom"
+BUS="scsi", KERNEL="sg[0-9]*", \
+ PROGRAM="/etc/udev/scripts/scsi-devfs.sh %k %b %n", \
+ NAME="%c{1}", SYMLINK="%k %c{2}"
+BUS="scsi", KERNEL="st[0-9]*", \
+ PROGRAM="/etc/udev/scripts/scsi-devfs.sh %k %b %n", \
+ NAME="%c{1}", SYMLINK="%k %c{2}", GROUP="tape"
+BUS="scsi", KERNEL="nst[0-9]*", \
+ PROGRAM="/etc/udev/scripts/scsi-devfs.sh %k %b %n", \
+ NAME="%c{1}", SYMLINK="%k %c{2}", GROUP="tape"
+
+# 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"
+
+# other block devices
+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="hiddev*", NAME="usb/%k"
-BUS="usb", KERNEL="auer*", NAME="usb/%k"
-BUS="usb", KERNEL="legousbtower*", NAME="usb/%k"
+BUS="usb", KERNEL="auer[0-9]*", NAME="usb/%k"
+BUS="usb", KERNEL="legousbtower*", NAME="usb/%k", MODE="0666"
BUS="usb", KERNEL="dabusb*", NAME="usb/%k"
-BUS="usb", KERNEL="lp[0-9]*", NAME="usb/%k"
BUS="usb", KERNEL="cpad[0-9]*", NAME="usb/%k"
+BUS="usb", KERNEL="ttyUSB*", SYSFS{product}="Palm Handheld*", SYMLINK="pilot"
-# block devices
-KERNEL="md[0-9]*", NAME="md/%n",
-KERNEL="loop[0-9]*", NAME="loop/%n"
-
-# tty devices
-KERNEL="tty[0-9]*", NAME="vc/%n"
+# serial devices
+SUBSYSTEM="tty", GROUP="dialout"
KERNEL="ttyS[0-9]*", NAME="tts/%n"
KERNEL="ttyUSB[0-9]*", NAME="tts/USB%n"
-KERNEL="rfcomm[0-9]*", NAME="bluetooth/rfcomm/%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="ptmx", MODE="0666"
+KERNEL="tty", MODE="0666"
+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="fb[0-9]*", NAME="fb/%n",
-# v4l devices
-KERNEL="video[0-9]*", NAME="v4l/video%n"
-KERNEL="radio[0-9]*", NAME="v4l/radio%n"
-KERNEL="vbi[0-9]*", NAME="v4l/vbi%n"
-KERNEL="vtx[0-9]*", NAME="v4l/vtx%n"
-KERNEL="dvb*", PROGRAM="/etc/udev/scripts/dvb.sh %k", NAME="%c"
+# video devices
+SUBSYSTEM="video4linux", GROUP="video"
+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", GROUP="video"
+KERNEL="fb[0-9]*", NAME="fb/%n", GROUP="video"
+KERNEL="nvidia*", GROUP="video"
+KERNEL="card[0-9]*", NAME="dri/%k", GROUP="video"
# misc devices
-KERNEL="apm_bios", NAME="misc/apm_bios",
-KERNEL="agpgart", NAME="misc/agpgart",
-KERNEL="nvram", NAME="misc/nvram"
-KERNEL="psaux", NAME="misc/psaux"
-KERNEL="rtc", NAME="misc/rtc"
+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="apm_bios", NAME="misc/%k",
+KERNEL="agpgart", NAME="misc/%k", GROUP="video"
+KERNEL="nvram", NAME="misc/%k", GROUP="nvram"
+KERNEL="psaux", NAME="misc/%k"
+KERNEL="rtc", NAME="misc/%k", MODE="0644", GROUP="audio"
+KERNEL="hw_random", NAME="hwrng"
+
+# printers and parallel devices
+SUBSYSTEM="printer", GROUP="lp"
+BUS="usb", KERNEL="lp[0-9]*", NAME="usb/%k"
+KERNEL="lp[0-9]*", NAME="printers/%n"
+KERNEL="pt[0-9]*", GROUP="tape"
+KERNEL="pht[0-9]*", GROUP="tape"
-KERNEL="card[0-9]*", NAME="dri/card%n"
KERNEL="i2c-[0-9]*", NAME="i2c/%n"
-KERNEL="ram[0-9]*", NAME="rd/%n"
-KERNEL="lp[0-9]*", NAME="printers/%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="fd[0-9]*", NAME="floppy/%n", GROUP="floppy"
+
+KERNEL="cdemu[0-9]*", NAME="cdemu/%n", GROUP="cdrom"
+KERNEL="pktcdvd[0-9]*", NAME="pktcdvd/%n", GROUP="cdrom"
+KERNEL="pktcdvd", NAME="pktcdvd/control", MODE="0644"
+
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"
+
# sound devices
+SUBSYSTEM="sound", GROUP="audio"
KERNEL="controlC[0-9]*", NAME="snd/%k"
KERNEL="hwC[D0-9]*", NAME="snd/%k"
KERNEL="pcmC[D0-9cp]*", NAME="snd/%k"
# input devices
KERNEL="mice", NAME="input/%k"
KERNEL="mouse[0-9]*", NAME="input/%k"
-KERNEL="event[0-9]*", NAME="input/%k", PROGRAM="/etc/udev/scripts/inputdev.sh %k", RESULT="inputdev", MODE="0664", GROUP="video"
+KERNEL="event[0-9]*", NAME="input/%k", \
+ PROGRAM="/etc/udev/scripts/inputdev.sh %k", RESULT="inputdev", \
+ MODE="0664", GROUP="video"
KERNEL="event[0-9]*", NAME="input/%k"
-KERNEL="js[0-9]*", NAME="input/%k"
+KERNEL="js[0-9]*", NAME="input/%k", MODE="0664"
KERNEL="ts[0-9]*", NAME="input/%k"
KERNEL="uinput", NAME="input/%k"
-KERNEL="tap[0-9]*", NAME="net/%k"
-KERNEL="tun", NAME="net/%k"
-
-# CAPI devices
-KERNEL="capi", NAME="capi20", SYMLINK="isdn/capi20"
-KERNEL="capi[0-9]*", NAME="capi/%n"
-
# Zaptel
KERNEL="zapctl", NAME="zap/ctl"
KERNEL="zaptimer", NAME="zap/timer"
# %% the '%' char itself.
#
-# permissions for IDE CD devices
-BUS="ide", KERNEL="hd[a-z]", SYSFS{removable}="1", PROGRAM="/bin/cat /proc/ide/%k/media", RESULT="cdrom*", NAME="%k", MODE="0660", GROUP="cdrom"
+# default permissions for block devices
+SUBSYSTEM="block", GROUP="disk"
+SUBSYSTEM="block", SYSFS{removable}="1", GROUP="floppy"
-# permissions for IDE floppy devices
-BUS="ide", KERNEL="hd[a-z]", SYSFS{removable}="1", PROGRAM="/bin/cat /proc/ide/%k/media", RESULT="floppy*", NAME="%k", MODE="0660", GROUP="floppy"
+# workaround for devices which do not report media changes
+BUS="ide", KERNEL="hd[a-z]", SYSFS{removable}="1", \
+ PROGRAM="/bin/cat /proc/ide/%k/model", RESULT="IOMEGA ZIP *", \
+ NAME{all_partitions}="%k%n", GROUP="floppy"
-# permissions for SCSI CD devices
-BUS="scsi", KERNEL="sr[0-9]*", SYSFS{type}="5", NAME="scd%n", MODE="0660", GROUP="cdrom", SYMLINK="sr%n"
-BUS="scsi", KERNEL="sg[0-9]*", SYSFS{type}="5", NAME="%k", MODE="0660", GROUP="cdrom"
+# 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="hd[a-z]", SYSFS{removable}="1", \
+ PROGRAM="/bin/cat /proc/ide/%k/media", RESULT="floppy*", \
+ GROUP="floppy"
+BUS="ide", KERNEL="ht[0-9]*", GROUP="tape"
+BUS="ide", KERNEL="nht[0-9]*", GROUP="tape"
+# SCSI devices
+BUS="scsi", KERNEL="sr[0-9]*", SYSFS{type}="5", \
+ NAME="scd%n", SYMLINK="sr%n", GROUP="cdrom"
+BUS="scsi", KERNEL="sg[0-9]*", SYSFS{type}="5", GROUP="cdrom"
+BUS="scsi", KERNEL="st[0-9]*", GROUP="tape"
+BUS="scsi", KERNEL="nst[0-9]*", GROUP="tape"
+BUS="scsi", KERNEL="osst[0-9]*", GROUP="tape"
+BUS="scsi", KERNEL="nosst[0-9]*", GROUP="tape"
# USB devices
BUS="usb", KERNEL="hiddev*", NAME="usb/%k"
-BUS="usb", KERNEL="auer*", NAME="usb/%k"
-BUS="usb", KERNEL="legousbtower*", NAME="usb/%k"
+BUS="usb", KERNEL="auer[0-9]*", NAME="usb/%k"
+BUS="usb", KERNEL="legousbtower*", NAME="usb/%k", MODE="0666"
BUS="usb", KERNEL="dabusb*", NAME="usb/%k"
-BUS="usb", KERNEL="lp[0-9]*", NAME="usb/%k"
BUS="usb", KERNEL="cpad[0-9]*", NAME="usb/%k"
+BUS="usb", KERNEL="ttyUSB*", SYSFS{product}="Palm Handheld*", SYMLINK="pilot"
-KERNEL="dvb*", PROGRAM="/etc/udev/scripts/dvb.sh %k", NAME="%c"
+# serial devices
+SUBSYSTEM="tty", GROUP="dialout"
+KERNEL="capi", NAME="capi20", SYMLINK="isdn/capi20"
+KERNEL="capi[0-9]*", NAME="capi/%n"
+
+# vc devices
+KERNEL="ptmx", MODE="0666"
+KERNEL="tty", MODE="0666"
+
+# video devices
+SUBSYSTEM="video4linux", GROUP="video"
+KERNEL="dvb*", PROGRAM="/etc/udev/scripts/dvb.sh %k", \
+ NAME="%c", GROUP="video"
+KERNEL="fb[0-9]*", GROUP="video"
+KERNEL="nvidia*", GROUP="video"
+KERNEL="card[0-9]*", NAME="dri/%k", 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="0664", GROUP="audio"
+KERNEL="hw_random", NAME="hwrng"
+
+# printers and parallel devices
+SUBSYSTEM="printer", GROUP="lp"
+BUS="usb", KERNEL="lp[0-9]*", NAME="usb/%k"
+KERNEL="pt[0-9]*", GROUP="tape"
+KERNEL="pht[0-9]*", GROUP="tape"
+
+KERNEL="fd[0-9]*", GROUP="floppy"
+
+KERNEL="cdemu[0-9]*", NAME="cdemu/%n", GROUP="cdrom"
+KERNEL="pktcdvd[0-9]*", NAME="pktcdvd/%n", GROUP="cdrom"
+KERNEL="pktcdvd", NAME="pktcdvd/control", MODE="0644"
-KERNEL="card*", NAME="dri/card%n"
-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="umad*", NAME="infiniband/%k"
+KERNEL="issm*", NAME="infiniband/%k"
+
+KERNEL="tap[0-9]*", NAME="net/%k"
+KERNEL="tun", NAME="net/%k"
+
# ALSA devices
+SUBSYSTEM="sound", GROUP="audio"
KERNEL="controlC[0-9]*", NAME="snd/%k"
KERNEL="hwC[D0-9]*", NAME="snd/%k"
KERNEL="pcmC[D0-9cp]*", NAME="snd/%k"
# input devices
KERNEL="mice", NAME="input/%k"
KERNEL="mouse[0-9]*", NAME="input/%k"
-KERNEL="event[0-9]*", NAME="input/%k", PROGRAM="/etc/udev/scripts/inputdev.sh %k", RESULT="inputdev", MODE="0664", GROUP="video"
+KERNEL="event[0-9]*", NAME="input/%k", \
+ PROGRAM="/etc/udev/scripts/inputdev.sh %k", RESULT="inputdev", \
+ MODE="0664", GROUP="video"
KERNEL="event[0-9]*", NAME="input/%k"
-KERNEL="js[0-9]*", NAME="input/%k"
+KERNEL="js[0-9]*", NAME="input/%k", MODE="0664"
KERNEL="ts[0-9]*", NAME="input/%k"
KERNEL="uinput", NAME="input/%k"
-KERNEL="tap[0-9]*", NAME="net/%k"
-KERNEL="tun", NAME="net/%k"
-
-# CAPI devices
-KERNEL="capi", NAME="capi20", SYMLINK="isdn/capi20"
-KERNEL="capi[0-9]*", NAME="capi/%n"
-
# Zaptel
KERNEL="zapctl", NAME="zap/ctl"
KERNEL="zaptimer", NAME="zap/timer"