Difference between revisions of "Udev"

From Organic Design wiki
(USB)
(USB)
Line 26: Line 26:
 
</pre>
 
</pre>
 
So pretty much everything you would ever want to know about your hotplugged device is here.
 
So pretty much everything you would ever want to know about your hotplugged device is here.
 +
 +
== Firewire and others ==
 +
These all work in a similar way. It is a simple matter to parse the /proc files to extract whatever relevant data is needed to feed into the UI.
  
 
== Events ==
 
== Events ==

Revision as of 05:28, 27 May 2005

Thanks to HotPlug and /proc it has never been easier for software to determine the state of devices plugged into the system.

USB

USB devices live at /proc/bus/usb. When a device is plugged this file is updated. Here is an example of the file:

T:  Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=12  MxCh= 2
B:  Alloc=  0/900 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 1.10 Cls=09(hub  ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=0000 ProdID=0000 Rev= 2.06
S:  Manufacturer=Linux 2.6.8-2-386 uhci_hcd
S:  Product=Intel Corp. 82801AA USB
S:  SerialNumber=0000:00:1f.2
C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr=  0mA
I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   2 Ivl=255ms

T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  6 Spd=12  MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=0d7d ProdID=1300 Rev= 0.50
S:  Product=USB2.0 FlashDisk
S:  SerialNumber=1D4402000054
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=200mA
I:  If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E:  Ad=81(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms

So pretty much everything you would ever want to know about your hotplugged device is here.

Firewire and others

These all work in a similar way. It is a simple matter to parse the /proc files to extract whatever relevant data is needed to feed into the UI.

Events

Hotpug also includes a very useful feature that allows you to bind a program to a specific hotplug event. This means the OS can be notified when something happens (eg you plug in your USB memory stick).

In the directory /etc/hotplug.d is a buch of directories that represent all the kinds of devices that may be hotplugged.

drwxr-xr-x  2 root root 4096 2004-09-04 06:15 chandev
drwxr-xr-x  2 root root 4096 2005-05-11 04:39 default
drwxr-xr-x  2 root root 4096 2004-09-04 06:15 dock
drwxr-xr-x  2 root root 4096 2004-09-04 06:15 ieee1394
drwxr-xr-x  2 root root 4096 2004-09-04 06:15 input
drwxr-xr-x  2 root root 4096 2004-09-04 06:15 net
drwxr-xr-x  2 root root 4096 2004-09-04 06:15 pci
drwxr-xr-x  2 root root 4096 2004-09-04 06:15 scsi
drwxr-xr-x  2 root root 4096 2005-05-27 05:59 usb

Example: I want to run a script when the USB device is plugged in. So I put some kind of executable in the usb directory and suffix it with .hotplug.

Resources

Linux Hotplugging