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# %e the smallest number for that name which does not matches an existing node 7# %k the kernel name for the device 8# %M the kernel major number for the device 9# %m the kernel minor number for the device 10# %b the bus id for the device 11# %c the string returned by the PROGRAM 12# %s{filename} the content of a sysfs attribute 13# %% the '%' char itself 14# 15 16# workaround for devices which do not report media changes 17SUBSYSTEMS=="ide", KERNEL=="hd[a-z]", ATTR{removable}=="1", \ 18 ENV{ID_MODEL}=="IOMEGA_ZIP*", NAME="%k", OPTIONS+="all_partitions" 19SUBSYSTEMS=="ide", KERNEL=="hd[a-z]", ATTRS{media}=="floppy", \ 20 OPTIONS+="all_partitions" 21 22# SCSI devices 23SUBSYSTEMS=="scsi", KERNEL=="sr[0-9]*", NAME="scd%n", SYMLINK+="sr%n" 24 25# USB devices 26SUBSYSTEMS=="usb", KERNEL=="auer[0-9]*", NAME="usb/%k" 27SUBSYSTEMS=="usb", KERNEL=="cpad[0-9]*", NAME="usb/%k" 28SUBSYSTEMS=="usb", KERNEL=="dabusb*", NAME="usb/%k" 29SUBSYSTEMS=="usb", KERNEL=="hiddev*", NAME="usb/%k" 30SUBSYSTEMS=="usb", KERNEL=="legousbtower*", NAME="usb/%k" 31SUBSYSTEMS=="usb", KERNEL=="lp[0-9]*", NAME="usb/%k" 32SUBSYSTEMS=="usb", KERNEL=="ttyUSB*", \ 33 ATTRS{product}=="Palm Handheld*|Handspring Visor|palmOne Handheld", \ 34 SYMLINK+="pilot" 35 36# usbfs-like devices 37SUBSYSTEM=="usb_device", PROGRAM="/bin/sh -c 'K=%k; K=$${K#usbdev}; printf bus/usb/%%03i/%%03i $${K%%%%.*} $${K#*.}'", ACTION=="add", \ 38 NAME="%c" 39SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", NAME="bus/usb/$env{BUSNUM}/$env{DEVNUM}" 40 41# serial devices 42KERNEL=="capi", NAME="capi20", SYMLINK+="isdn/capi20" 43KERNEL=="capi[0-9]*", NAME="capi/%n" 44 45# video devices 46KERNEL=="dvb*", PROGRAM="/bin/sh -c 'K=%k; K=$${K#dvb}; printf dvb/adapter%%i/%%s $${K%%%%.*} $${K#*.}", ACTION=="add", \ 47 NAME="%c" 48KERNEL=="card[0-9]*", NAME="dri/%k" 49 50# misc devices 51KERNEL=="hw_random", NAME="hwrng" 52KERNEL=="tun", NAME="net/%k" 53KERNEL=="evtchn", NAME="xen/%k" 54 55KERNEL=="cdemu[0-9]*", NAME="cdemu/%n" 56KERNEL=="pktcdvd[0-9]*", NAME="pktcdvd/%n" 57KERNEL=="pktcdvd", NAME="pktcdvd/control" 58 59KERNEL=="cpu[0-9]*", NAME="cpu/%n/cpuid" 60KERNEL=="msr[0-9]*", NAME="cpu/%n/msr" 61KERNEL=="microcode", NAME="cpu/microcode" 62 63KERNEL=="umad*", NAME="infiniband/%k" 64KERNEL=="issm*", NAME="infiniband/%k" 65KERNEL=="uverbs*", NAME="infiniband/%k" 66KERNEL=="ucm*", NAME="infiniband/%k" 67KERNEL=="rdma_ucm", NAME="infiniband/%k" 68 69# ALSA devices 70KERNEL=="controlC[0-9]*", NAME="snd/%k" 71KERNEL=="hwC[D0-9]*", NAME="snd/%k" 72KERNEL=="pcmC[D0-9cp]*", NAME="snd/%k" 73KERNEL=="midiC[D0-9]*", NAME="snd/%k" 74KERNEL=="timer", NAME="snd/%k" 75KERNEL=="seq", NAME="snd/%k" 76 77# ieee1394 devices 78KERNEL=="dv1394*", NAME="dv1394/%n" 79KERNEL=="video1394*", NAME="video1394/%n" 80 81# input devices 82KERNEL=="mice", NAME="input/%k" 83KERNEL=="mouse[0-9]*", NAME="input/%k" 84KERNEL=="event[0-9]*", NAME="input/%k" 85KERNEL=="js[0-9]*", NAME="input/%k" 86KERNEL=="ts[0-9]*", NAME="input/%k" 87KERNEL=="uinput", NAME="input/%k" 88 89# Zaptel 90KERNEL=="zapctl", NAME="zap/ctl" 91KERNEL=="zaptimer", NAME="zap/timer" 92KERNEL=="zapchannel", NAME="zap/channel" 93KERNEL=="zappseudo", NAME="zap/pseudo" 94KERNEL=="zap[0-9]*", NAME="zap/%n" 95 96# AOE character devices 97SUBSYSTEM=="aoe", KERNEL=="discover", NAME="etherd/%k" 98SUBSYSTEM=="aoe", KERNEL=="err", NAME="etherd/%k" 99SUBSYSTEM=="aoe", KERNEL=="interfaces", NAME="etherd/%k" 100SUBSYSTEM=="aoe", KERNEL=="revalidate", NAME="etherd/%k" 101 102# device mapper creates its own device nodes, so ignore these 103KERNEL=="dm-[0-9]*", OPTIONS+="ignore_device" 104KERNEL=="device-mapper", NAME="mapper/control" 105 106KERNEL=="rfcomm[0-9]*", NAME="%k", GROUP="users", MODE="0660" 107 108# Firmware Helper 109ACTION=="add", SUBSYSTEM=="firmware", RUN+="/lib/udev/firmware.sh" 110 111# Samsung UARTS 112KERNEL=="s3c2410_serial[0-9]", NAME="ttySAC%n" 113 114# MXC UARTs 115KERNEL=="ttymxc[0-4]", NAME="ttymxc%n" 116 117