1# There are a number of modifiers that are allowed to be used in some 2# of the different fields. They provide the following subsitutions: 3# 4# %n the "kernel number" of the device. 5# For example, 'sda3' has a "kernel number" of '3' 6# %k the kernel name for the device 7# %M the kernel major number for the device 8# %m the kernel minor number for the device 9# %b the bus id for the device 10# %c the string returned by the PROGRAM 11# %s{filename} the content of a sysfs attribute 12# %% the '%' char itself 13# 14 15# workaround for devices which do not report media changes 16SUBSYSTEMS=="ide", KERNEL=="hd[a-z]", ATTR{removable}=="1", \ 17 ENV{ID_MODEL}=="IOMEGA_ZIP*", NAME="%k", OPTIONS+="all_partitions" 18SUBSYSTEMS=="ide", KERNEL=="hd[a-z]", ATTRS{media}=="floppy", \ 19 OPTIONS+="all_partitions" 20 21# IDE devices 22SUBSYSTEMS=="ide", KERNEL=="hd[a-z]*", PROGRAM="ide-devfs.sh %k %b %n", \ 23 ACTION=="add", \ 24 NAME="%c{1}", SYMLINK+="%k %c{2}" 25 26# SCSI devices 27SUBSYSTEMS=="scsi", PROGRAM="scsi-devfs.sh %k %b %n", ACTION=="add", \ 28 NAME="%c{1}", SYMLINK+="%k %c{2}" 29 30# RAID controllers 31KERNEL=="cciss!*|ida!*|rd!*", PROGRAM="raid-devfs.sh %k", ACTION=="add", \ 32 NAME="%c{1}", SYMLINK+="%k" 33 34# other block devices 35KERNEL=="md[0-9]*", NAME="md/%n", 36KERNEL=="loop[0-9]*", NAME="loop/%n" 37KERNEL=="ram[0-9]*", NAME="rd/%n" 38 39# USB devices 40SUBSYSTEMS=="usb", KERNEL=="auer[0-9]*", NAME="usb/%k" 41SUBSYSTEMS=="usb", KERNEL=="cpad[0-9]*", NAME="usb/%k" 42SUBSYSTEMS=="usb", KERNEL=="dabusb*", NAME="usb/%k" 43SUBSYSTEMS=="usb", KERNEL=="hiddev*", NAME="usb/%k" 44SUBSYSTEMS=="usb", KERNEL=="legousbtower*", NAME="usb/%k" 45SUBSYSTEMS=="usb", KERNEL=="lp[0-9]*", NAME="usb/%k" 46SUBSYSTEMS=="usb", KERNEL=="ttyUSB*", \ 47 ATTRS{product}=="Palm Handheld*|Handspring Visor|palmOne Handheld", \ 48 SYMLINK+="pilot" 49 50# usbfs-like devices 51SUBSYSTEM=="usb_device", PROGRAM="/bin/sh -c 'K=%k; K=$${K#usbdev}; printf bus/usb/%%03i/%%03i $${K%%%%.*} $${K#*.}'", ACTION=="add", \ 52 NAME="%c" 53 54# serial devices 55KERNEL=="ttyS[0-9]*", NAME="tts/%n" 56KERNEL=="ttyUSB[0-9]*", NAME="tts/USB%n" 57KERNEL=="rfcomm[0-9]*", NAME="bluetooth/rfcomm/%n", 58KERNEL=="capi", NAME="capi20", SYMLINK+="isdn/capi20" 59KERNEL=="capi[0-9]*", NAME="capi/%n" 60 61# vc devices 62KERNEL=="tty[0-9]*", NAME="vc/%n" 63KERNEL=="vcs", NAME="vcc/0" 64KERNEL=="vcs[0-9]*", NAME="vcc/%n" 65KERNEL=="vcsa", NAME="vcc/a0" 66KERNEL=="vcsa[0-9]*", NAME="vcc/a%n" 67 68# video devices 69KERNEL=="video[0-9]*", NAME="v4l/%k" 70KERNEL=="radio[0-9]*", NAME="v4l/%k" 71KERNEL=="vbi[0-9]*", NAME="v4l/%k" 72KERNEL=="vtx[0-9]*", NAME="v4l/%k" 73KERNEL=="dvb*", PROGRAM="/bin/sh -c 'K=%k; K=$${K#dvb}; printf dvb/adapter%%i/%%s $${K%%%%.*} $${K#*.}", ACTION=="add", \ 74 NAME="%c" 75KERNEL=="fb[0-9]*", NAME="fb/%n" 76KERNEL=="card[0-9]*", NAME="dri/%k" 77 78# misc devices 79KERNEL=="apm_bios", NAME="misc/%k", 80KERNEL=="agpgart", NAME="misc/%k" 81KERNEL=="hw_random", NAME="hwrng" 82KERNEL=="nvram", NAME="misc/%k" 83KERNEL=="psaux", NAME="misc/%k" 84KERNEL=="rtc", NAME="misc/%k" 85KERNEL=="tun", NAME="net/%k" 86KERNEL=="evtchn", NAME="xen/%k" 87 88# printers and parallel devices 89KERNEL=="lp[0-9]*", NAME="printers/%n" 90KERNEL=="parport[0-9]*", NAME="parports/%n" 91 92KERNEL=="i2c-[0-9]*", NAME="i2c/%n" 93KERNEL=="fd[0-9]*", NAME="floppy/%n" 94 95KERNEL=="cdemu[0-9]*", NAME="cdemu/%n" 96KERNEL=="pktcdvd[0-9]*", NAME="pktcdvd/%n" 97KERNEL=="pktcdvd", NAME="pktcdvd/control" 98 99KERNEL=="cpu[0-9]*", NAME="cpu/%n/cpuid" 100KERNEL=="msr[0-9]*", NAME="cpu/%n/msr" 101KERNEL=="microcode", NAME="cpu/microcode" 102 103KERNEL=="umad*", NAME="infiniband/%k" 104KERNEL=="issm*", NAME="infiniband/%k" 105KERNEL=="uverbs*", NAME="infiniband/%k" 106KERNEL=="ucm*", NAME="infiniband/%k" 107 108# sound devices 109KERNEL=="controlC[0-9]*", NAME="snd/%k" 110KERNEL=="hwC[D0-9]*", NAME="snd/%k" 111KERNEL=="pcmC[D0-9cp]*", NAME="snd/%k" 112KERNEL=="midiC[D0-9]*", NAME="snd/%k" 113KERNEL=="timer", NAME="snd/%k" 114KERNEL=="seq", NAME="snd/%k" 115KERNEL=="audio*", NAME="sound/%k" 116KERNEL=="dsp*", NAME="sound/%k" 117KERNEL=="adsp*", NAME="sound/%k" 118KERNEL=="midi*", NAME="sound/%k" 119KERNEL=="mixer*", NAME="sound/%k" 120KERNEL=="sequencer*", NAME="sound/%k" 121KERNEL=="amidi*", NAME="sound/%k" 122KERNEL=="dmmidi*", NAME="sound/%k" 123KERNEL=="admmidi*", NAME="sound/%k" 124 125# ieee1394 devices 126KERNEL=="dv1394*", NAME="dv1394/%n" 127KERNEL=="video1394*", NAME="video1394/%n" 128 129# input devices 130KERNEL=="mice", NAME="input/%k" 131KERNEL=="mouse[0-9]*", NAME="input/%k" 132KERNEL=="event[0-9]*", NAME="input/%k" 133KERNEL=="js[0-9]*", NAME="input/%k" 134KERNEL=="ts[0-9]*", NAME="input/%k" 135KERNEL=="uinput", NAME="input/%k" 136 137# Zaptel 138KERNEL=="zapctl", NAME="zap/ctl" 139KERNEL=="zaptimer", NAME="zap/timer" 140KERNEL=="zapchannel", NAME="zap/channel" 141KERNEL=="zappseudo", NAME="zap/pseudo" 142KERNEL=="zap[0-9]*", NAME="zap/%n" 143 144# AOE character devices 145SUBSYSTEM=="aoe", KERNEL=="discover", NAME="etherd/%k" 146SUBSYSTEM=="aoe", KERNEL=="err", NAME="etherd/%k" 147SUBSYSTEM=="aoe", KERNEL=="interfaces", NAME="etherd/%k" 148SUBSYSTEM=="aoe", KERNEL=="revalidate", NAME="etherd/%k" 149 150# device mapper creates its own device nodes, so ignore these 151KERNEL=="device-mapper", NAME="mapper/control" 152 153