#
# This is a sample mdev.conf
#

# Provide user, group, and mode information for devices.  If a regex matches
# the device name provided by sysfs, use the appropriate user:group and mode
# instead of the default 0:0 660.
#
# Syntax:
# [-][ENVVAR=regex;]...devicename_regex user:group mode [=path]|[>path]|[!] [@|$|*cmd args...]
# [-][ENVVAR=regex;]...@maj,min[-min2]  user:group mode [=path]|[>path]|[!] [@|$|*cmd args...]
# [-]$ENVVAR=regex                      user:group mode [=path]|[>path]|[!] [@|$|*cmd args...]
#
# [-]: do not stop on this match, continue reading mdev.conf
# =: move, >: move and create a symlink
# !: do not create device node
# @|$|*: run cmd if $ACTION=remove, @cmd if $ACTION=add, *cmd in all cases

# support module loading on hotplug
$MODALIAS=.*	root:root 660 @modprobe "$MODALIAS"

# null may already exist; therefore mode has to be changed with command
null		root:root 666 @chmod 666 $MDEV
zero		root:root 666
full		root:root 666
random		root:root 444
urandom		root:root 444
hwrandom	root:root 444
grsec		root:root 660

kmem		root:root 640
mem		root:root 640
port		root:root 640
# console may already exist; therefore mode has to be changed with command
console		root:tty 600 @chmod 600 $MDEV
ptmx		root:tty 666
pty.*		root:tty 660

# Typical devices

tty		root:tty 666
tty[0-9]*	root:tty 660
vcsa*[0-9]*	root:tty 660
ttyS[0-9]*	root:uucp 660

# block devices
ram([0-9]*)	root:disk 660 >rd/%1
loop([0-9]+)	root:disk 660 >loop/%1
sd[a-z].*	root:disk 660 */lib/mdev/usbdisk_link
hd[a-z][0-9]*	root:disk 660 */lib/mdev/ide_links
md[0-9]*	root:disk 660
sr[0-9]*	root:cdrom 660 @ln -sf $MDEV cdrom
fd[0-9]*	root:floppy 660

# net devices
SUBSYSTEM=net;.* root:root 600 @nameif
tun[0-9]*	root:root 600 =net/
tap[0-9]*	root:root 600 =net/

# alsa sound devices and audio stuff
pcm.*		root:audio 660 =snd/
control.*	root:audio 660 =snd/
midi.*		root:audio 660 =snd/
seq		root:audio 660 =snd/
timer		root:audio 660 =snd/
# for kernels/mdevs which expose full path of alsa devices:
snd/pcm.*	root:audio 660
snd/control.*	root:audio 660
snd/midi.*	root:audio 660
snd/seq		root:audio 660
snd/timer	root:audio 660

adsp		root:audio 660 >sound/
audio		root:audio 660 >sound/
dsp		root:audio 660 >sound/
mixer		root:audio 660 >sound/
sequencer.*	root:audio 660 >sound/

# Less typical devices

# raid controllers
cciss!(.*)	root:disk 660 =cciss/%1
ida!(.*)	root:disk 660 =ida/%1
rd!(.*)		root:disk 660 =rd/%1

ttyLTM[0-9]	root:dialout 660 @ln -sf $MDEV modem
ttySHSF[0-9]	root:dialout 660 @ln -sf $MDEV modem
slamr		root:dialout 660 @ln -sf $MDEV slamr0
slusb		root:dialout 660 @ln -sf $MDEV slusb0

fuse		root:root 666

# dri device
card[0-9]	root:video 660 =dri/

# misc stuff
agpgart		root:root 660 >misc/
psaux		root:root 660 >misc/
rtc		root:root 664 >misc/

# input stuff
event[0-9]+	root:root 640 =input/
mice		root:root 640 =input/
mouse[0-9]	root:root 640 =input/
ts[0-9]		root:root 600 =input/

# v4l stuff
vbi[0-9]	root:video 660 >v4l/
video[0-9]	root:video 660 >v4l/

# dvb stuff
dvb.*		root:video 660 */lib/mdev/dvbdev

# load drivers for usb devices
usbdev[0-9].[0-9]	root:root 660 */lib/mdev/usbdev
usbdev[0-9].[0-9]_.*	root:root 660

# zaptel devices
zap(.*)		root:dialout 660 =zap/%1
dahdi!(.*)	root:dialout 660 =dahdi/%1

# HTC Android
# Attaching it via USB cable causes a flurry of activity:
#
# mdev[1271]: 48.639459 ACTION:add SUBSYSTEM:usb DEVNAME:bus/usb/001/009 DEVPATH:/devices/pci0000:00/0000:00:02.1/usb1/1-5
# mdev[1271]: mknod bus/usb/001/009 (189,8) 20660 0:0
# mdev[1272]: 48.642354 ACTION:add SUBSYSTEM:usb DEVNAME:(null) DEVPATH:/devices/pci0000:00/0000:00:02.1/usb1/1-5/1-5:1.0
# mdev[1272]: running: modprobe "$MODALIAS"
# mdev[1273]: 48.650078 ACTION:add SUBSYSTEM:scsi DEVNAME:(null) DEVPATH:/devices/pci0000:00/0000:00:02.1/usb1/1-5/1-5:1.0/host11
# mdev[1274]: 48.651297 ACTION:add SUBSYSTEM:scsi_host DEVNAME:(null) DEVPATH:/devices/pci0000:00/0000:00:02.1/usb1/1-5/1-5:1.0/host11/scsi_host/host11
# mdev[1275]: 49.649422 ACTION:add SUBSYSTEM:scsi DEVNAME:(null) DEVPATH:/devices/pci0000:00/0000:00:02.1/usb1/1-5/1-5:1.0/host11/target11:0:0
# mdev[1276]: 49.650703 ACTION:add SUBSYSTEM:scsi DEVNAME:(null) DEVPATH:/devices/pci0000:00/0000:00:02.1/usb1/1-5/1-5:1.0/host11/target11:0:0/11:0:0:0
# mdev[1276]: running: modprobe "$MODALIAS"
# modprobe: module scsi:t-0x00 not found in modules.dep
# mdev[1277]: 49.658002 ACTION:add SUBSYSTEM:scsi_disk DEVNAME:(null) DEVPATH:/devices/pci0000:00/0000:00:02.1/usb1/1-5/1-5:1.0/host11/target11:0:0/11:0:0:0/scsi_disk/11:0:0:0
# mdev[1278]: 49.659244 ACTION:add SUBSYSTEM:scsi_device DEVNAME:(null) DEVPATH:/devices/pci0000:00/0000:00:02.1/usb1/1-5/1-5:1.0/host11/target11:0:0/11:0:0:0/scsi_device/11:0:0:
# mdev[1279]: 49.660535 ACTION:add SUBSYSTEM:bsg DEVNAME:bsg/11:0:0:0 DEVPATH:/devices/pci0000:00/0000:00:02.1/usb1/1-5/1-5:1.0/host11/target11:0:0/11:0:0:0/bsg/11:0:0:0
# mdev[1279]: mknod bsg/11:0:0:0 (253,1) 20660 0:0
# mdev[1280]: 49.663516 ACTION:add SUBSYSTEM:bdi DEVNAME:(null) DEVPATH:/devices/virtual/bdi/8:16
# mdev[1281]: 49.664748 ACTION:add SUBSYSTEM:block DEVNAME:sdb DEVPATH:/block/sdb
# mdev[1281]: mknod sdb (8,16) 60660 0:0
# mdev[1282]: 49.677597 ACTION:change SUBSYSTEM:block DEVNAME:sdb DEVPATH:/block/sdb
# mdev[1283]: 50.692936 ACTION:change SUBSYSTEM:block DEVNAME:sdb DEVPATH:/block/sdb
#
# We are hooking to the last events. To avoid having two scripts running,
# we check for DISK_MEDIA_CHANGE=1 (prev to last event has it,
# and it's the _only_ difference in env for these two events as of kernel 3.7.7)
# Unfortunately, there is no event for "user pressed [Turn USB storage on] btn"!
# Script merely backgrounds and tries to rescan partition table for 1 minute:
ACTION=change;SUBSYSTEM=block;DISK_MEDIA_CHANGE=1;.*    0:0 660 */etc/mdev.conf.change_blockdev.sh
