devd.conf revision 184663
1# $FreeBSD: head/etc/devd.conf 184663 2008-11-04 23:03:36Z delphij $ 2# 3# Refer to devd.conf(5) and devd(8) man pages for the details on how to 4# run and configure devd. 5# 6 7# NB: All regular expressions have an implicit ^$ around them. 8# NB: device-name is shorthand for 'match device-name' 9 10options { 11 # Each directory directive adds a directory the list of directories 12 # that we scan for files. Files are read-in in the order that they 13 # are returned from readdir(3). The rule-sets are combined to 14 # create a DFA that's used to match events to actions. 15 directory "/etc/devd"; 16 directory "/usr/local/etc/devd"; 17 pid-file "/var/run/devd.pid"; 18 19 # Setup some shorthand for regex that we use later in the file. 20 #XXX Yes, these are gross -- imp 21 set scsi-controller-regex 22 "(aac|adv|adw|aha|ahb|ahc|ahd|aic|amd|amr|asr|bt|ciss|ct|dpt|\ 23 esp|ida|iir|ips|isp|mlx|mly|mpt|ncr|ncv|nsp|stg|sym|trm|wds)\ 24 [0-9]+"; 25}; 26 27# Note that the attach/detach with the highest value wins, so that one can 28# override these general rules. 29 30# 31# Configure the interface on attach. Due to a historical accident, this 32# script is called pccard_ether. 33# 34notify 0 { 35 match "system" "IFNET"; 36 match "type" "ATTACH"; 37 action "/etc/pccard_ether $subsystem start"; 38}; 39 40notify 0 { 41 match "system" "IFNET"; 42 match "type" "DETACH"; 43 action "/etc/pccard_ether $subsystem stop"; 44}; 45 46# 47# Try to start dhclient on Ethernet like interfaces when the link comes 48# up. Only devices that are configured to support DHCP will actually 49# run it. No link down rule exists because dhclient automaticly exits 50# when the link goes down. 51# 52notify 0 { 53 match "system" "IFNET"; 54 match "type" "LINK_UP"; 55 media-type "ethernet"; 56 action "/etc/rc.d/dhclient quietstart $subsystem"; 57}; 58 59# 60# Like Ethernet devices, but separate because 61# they have a different media type. We may want 62# to exploit this later. 63# 64detach 0 { 65 media-type "802.11"; 66 action "/etc/pccard_ether $device-name stop"; 67}; 68attach 0 { 69 media-type "802.11"; 70 action "/etc/pccard_ether $device-name start"; 71}; 72notify 0 { 73 match "system" "IFNET"; 74 match "type" "LINK_UP"; 75 media-type "802.11"; 76 action "/etc/rc.d/dhclient quietstart $subsystem"; 77}; 78 79# An entry like this might be in a different file, but is included here 80# as an example of how to override things. Normally 'ed50' would match 81# the above attach/detach stuff, but the value of 100 makes it 82# hard wired to 1.2.3.4. 83attach 100 { 84 device-name "ed50"; 85 action "ifconfig $device-name inet 1.2.3.4 netmask 0xffff0000"; 86}; 87detach 100 { 88 device-name "ed50"; 89}; 90 91# When a USB Bluetooth dongle appears activate it 92attach 100 { 93 device-name "ubt[0-9]+"; 94 action "/etc/rc.d/bluetooth quietstart $device-name"; 95}; 96detach 100 { 97 device-name "ubt[0-9]+"; 98 action "/etc/rc.d/bluetooth quietstop $device-name"; 99}; 100 101# When a USB keyboard arrives, attach it as the console keyboard. 102attach 100 { 103 device-name "ukbd0"; 104 action "/etc/rc.d/syscons setkeyboard /dev/ukbd0"; 105}; 106detach 100 { 107 device-name "ukbd0"; 108 action "/etc/rc.d/syscons setkeyboard /dev/kbd0"; 109}; 110 111attach 100 { 112 device-name "ums[0-9]+"; 113 action "/etc/rc.d/moused quietstart $device-name"; 114}; 115 116detach 100 { 117 device-name "ums[0-9]+"; 118 action "/etc/rc.d/moused stop $device-name"; 119}; 120 121# Firmware download into the ActiveWire board. After the firmware download is 122# done the device detaches and reappears as something new and shiny 123# automatically. 124attach 100 { 125 match "vendor" "0x0854"; 126 match "product" "0x0100"; 127 match "release" "0x0000"; 128 action "/usr/local/bin/ezdownload -f /usr/local/share/usb/firmware/0854.0100.0_01.hex $device-name"; 129}; 130 131# Firmware download for Entrega Serial DB25 adapter. 132attach 100 { 133 match "vendor" "0x1645"; 134 match "product" "0x8001"; 135 match "release" "0x0101"; 136 action "if ! kldstat -n usio > /dev/null 2>&1 ; then kldload usio; fi /usr/sbin/ezdownload -v -f /usr/share/usb/firmware/1645.8001.0101 /dev/$device-name"; 137}; 138 139# This entry starts the ColdSync tool in daemon mode. Make sure you have an up 140# to date /usr/local/etc/palms. We override the 'listen' settings for port and 141# type in /usr/local/etc/coldsync.conf. 142attach 100 { 143 device-name "ugen[0-9]+"; 144 match "vendor" "0x082d"; 145 match "product" "0x0100"; 146 match "release" "0x0100"; 147 action "/usr/local/bin/coldsync -md -p /dev/$device-name -t usb"; 148}; 149 150# 151# Rescan scsi device-names on attach, but not detach. However, it is 152# disabled by default due to reports of problems. 153# 154attach 0 { 155 device-name "$scsi-controller-regex"; 156// action "camcontrol rescan all"; 157}; 158 159# Don't even try to second guess what to do about drivers that don't 160# match here. Instead, pass it off to syslog. Commented out for the 161# moment, as the pnpinfo variable isn't set in devd yet. Individual 162# variables within the bus supplied pnpinfo are set. 163nomatch 0 { 164# action "logger Unknown device: $pnpinfo $location $bus"; 165}; 166 167# Various logging of unknown devices. 168nomatch 10 { 169 match "bus" "uhub[0-9]+"; 170 action "logger Unknown USB device: vendor $vendor product $product \ 171 bus $bus"; 172}; 173 174# Some PC-CARDs don't offer numerical manufacturer/product IDs, just 175# show the CIS info there. 176nomatch 20 { 177 match "bus" "pccard[0-9]+"; 178 match "manufacturer" "0xffffffff"; 179 match "product" "0xffffffff"; 180 action "logger Unknown PCCARD device: CISproduct $cisproduct \ 181 CIS-vendor $cisvendor bus $bus"; 182}; 183 184nomatch 10 { 185 match "bus" "pccard[0-9]+"; 186 action "logger Unknown PCCARD device: manufacturer $manufacturer \ 187 product $product CISproduct $cisproduct CIS-vendor \ 188 $cisvendor bus $bus"; 189}; 190 191nomatch 10 { 192 match "bus" "cardbus[0-9]+"; 193 action "logger Unknown Cardbus device: device $device class $class \ 194 vendor $vendor bus $bus"; 195}; 196 197# Switch power profiles when the AC line state changes. 198notify 10 { 199 match "system" "ACPI"; 200 match "subsystem" "ACAD"; 201 action "/etc/rc.d/power_profile $notify"; 202}; 203 204# Notify all users before beginning emergency shutdown when we get 205# a _CRT or _HOT thermal event and we're going to power down the system 206# very soon. 207notify 10 { 208 match "system" "ACPI"; 209 match "subsystem" "Thermal"; 210 match "notify" "0xcc"; 211 action "logger -p kern.emerg 'WARNING: system temperature too high, shutting down soon!'"; 212}; 213 214# Sample ZFS problem reports handling. 215notify 10 { 216 match "system" "ZFS"; 217 match "type" "zpool"; 218 action "logger -p kern.err 'ZFS: failed to load zpool $pool'"; 219}; 220 221notify 10 { 222 match "system" "ZFS"; 223 match "type" "vdev"; 224 action "logger -p kern.err 'ZFS: vdev failure, zpool=$pool type=$type'"; 225}; 226 227notify 10 { 228 match "system" "ZFS"; 229 match "type" "data"; 230 action "logger -p kern.warn 'ZFS: zpool I/O failure, zpool=$pool error=$zio_err'"; 231}; 232 233notify 10 { 234 match "system" "ZFS"; 235 match "type" "io"; 236 action "logger -p kern.warn 'ZFS: vdev I/O failure, zpool=$pool path=$vdev_path offset=$zio_offset size=$zio_size error=$zio_err'"; 237}; 238 239notify 10 { 240 match "system" "ZFS"; 241 match "type" "checksum"; 242 action "logger -p kern.warn 'ZFS: checksum mismatch, zpool=$pool path=$vdev_path offset=$zio_offset size=$zio_size'"; 243}; 244 245# User requested suspend, so perform preparation steps and then execute 246# the actual suspend process. 247notify 10 { 248 match "system" "ACPI"; 249 match "subsystem" "Suspend"; 250 action "/etc/rc.suspend acpi $notify"; 251}; 252notify 10 { 253 match "system" "ACPI"; 254 match "subsystem" "Resume"; 255 action "/etc/rc.resume acpi $notify"; 256}; 257 258# The next blocks enable volume hotkeys that can be found on the Asus laptops 259notify 0 { 260 match "system" "ACPI"; 261 match "subsystem" "ASUS"; 262 match "notify" "0x32"; 263 action "mixer 0"; 264}; 265 266notify 0 { 267 match "system" "ACPI"; 268 match "subsystem" "ASUS"; 269 match "notify" "0x31"; 270 action "mixer vol -10"; 271}; 272 273notify 0 { 274 match "system" "ACPI"; 275 match "subsystem" "ASUS"; 276 match "notify" "0x30"; 277 action "mixer vol +10"; 278}; 279 280# The next blocks enable volume hotkeys that can be found on the Asus EeePC 281# The four keys above the keyboard notify 0x1a through to 0x1d respectively 282notify 0 { 283 match "system" "ACPI"; 284 match "subsystem" "ASUS-Eee"; 285 match "notify" "0x13"; 286 action "mixer 0"; 287}; 288 289notify 0 { 290 match "system" "ACPI"; 291 match "subsystem" "ASUS-Eee"; 292 match "notify" "0x14"; 293 action "mixer vol -10"; 294}; 295 296notify 0 { 297 match "system" "ACPI"; 298 match "subsystem" "ASUS-Eee"; 299 match "notify" "0x15"; 300 action "mixer vol +10"; 301}; 302 303/* EXAMPLES TO END OF FILE 304 305# The following might be an example of something that a vendor might 306# install if you were to add their device. This might reside in 307# /usr/local/etc/devd/deqna.conf. A deqna is, in this hypothetical 308# example, a pccard ethernet-like device. Students of history may 309# know other devices by this name, and will get the in-jokes in this 310# entry. 311nomatch 10 { 312 match "bus" "pccard[0-9]+"; 313 match "manufacturer" "0x1234"; 314 match "product" "0x2323"; 315 action "kldload if_deqna"; 316}; 317attach 10 { 318 device-name "deqna[0-9]+"; 319 action "/etc/pccard_ether $device-name start"; 320}; 321detach 10 { 322 device-name "deqna[0-9]+"; 323 action "/etc/pccard_ether $device-name stop"; 324}; 325 326# Examples of notify hooks. A notify is a generic way for a kernel 327# subsystem to send event notification to userland. 328# 329# Here are some examples of ACPI notify handlers. ACPI subsystems that 330# generate notifies include the AC adapter, power/sleep buttons, 331# control method batteries, lid switch, and thermal zones. 332# 333# Information returned is not always the same as the ACPI notify 334# events. See the ACPI specification for more information about 335# notifies. Here is the information returned for each subsystem: 336# 337# ACAD: AC line state (0 is offline, 1 is online) 338# Button: Button pressed (0 for power, 1 for sleep) 339# CMBAT: ACPI battery events 340# Lid: Lid state (0 is closed, 1 is open) 341# Suspend, Resume: Suspend and resume notification 342# Thermal: ACPI thermal zone events 343# 344# This example calls a script when the AC state changes, passing the 345# notify value as the first argument. If the state is 0x00, it might 346# call some sysctls to implement economy mode. If 0x01, it might set 347# the mode to performance. 348notify 10 { 349 match "system" "ACPI"; 350 match "subsystem" "ACAD"; 351 action "/etc/acpi_ac $notify"; 352}; 353*/ 354