#
# 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 ownership 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 ownership 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/

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] 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
