57.6 UDEV
A problem that plagued earlier versions of the GNU/Linux kernel was
that each time a USB device (and other devices) was connected a
different mount point would be assigned. This issue was addressed in
the 2.6 kernels using udev with hotplug. With
udev, naming rules (e.g., in
/etc/udev/rules.d/local.rules) are used to provide stable
names for use in /etc/fstab. Udev uses
information exported by the kernel drivers to the sysfs filesystem
(usually mounted on /sys) to identify specific devices and to then
associate them with specific names in /dev.
The key to using udev is with the rules that are defined to identify and distinguish the different USB devices that may be connected. A tutorial for writing udev rules is available from http://www.reactivated.net/udevrules.php.
The first step is to identify the USB device in some way. The udevinfo command can be used to identify a device path, which can then be used to identify information about the device on that path. For example, to identify a specific Flash Memory device which is recognised in GNU/Linux as a SCSI device, connect the device and run the command:
The /dev/sdc path here is whatever the dmesg
command identifies. Select some identifying piece of information,
like the product identifier (the line that starts with
SYSFS\{product\=}), and add that to
/etc/udev/rules.d/local.rules (each rule must be on a single line).
57.6.1 Flash Memory
On one line in /etc/udev/rules.d/local.rules:
Then restart udev:
Add a suitable entry to /etc/fstab:
Be sure the mount point /media/usbkey exists:
An alternative name might be:
57.6.2 Camera
  $ udevinfo -a -p /block/sdc
  $ sudo emacs -nw /etc/udev/rules.d/local.rules
  BUS=="usb", KERNEL=="sd?1", SYSFS{product}=="hp photosmart 320", 
  NAME="%k", SYMLINK="photosmart"
  $ sudo emacs -nw /etc/fstab
  /dev/photosmart /media/photosmart auto user,defaults  0   0
  $ sudo mkdir /media/photosmart
  $ wajig restart udevA Nikon Coolpix E5200 camera:
  $ udevinfo -a -p /block/sdc
  $ sudo emacs -nw /etc/udev/rules.d/local.rules
  BUS=="usb", KERNEL=="sd?1", SYSFS{product}=="NIKON DSC E5200", 
  NAME="%k", SYMLINK="nikon"
  $ sudo emacs -nw /etc/fstab
  /dev/nikon /media/nikon auto user,defaults    0   0
  $ sudo mkdir /media/nikon
  $ wajig restart udevFor some reason /dev/sdc1 is not created when the camera is plugged in
(/dev/sdc is). But after an attempt to mount /dev/sdc, /dev/sdc1 comes
into existence (even though the mount command fails with a request to
specify the filesystem type). After installing the
gnome-volume-manager /dev/sdc1 started being
created.
57.6.3 iPod
The following udev rule will create a symbolic link called
ipod in /dev/ to the data partition on an iPod when
it is plugged in:
57.6.4 Card Reader
For a card reader they usually do not provide media change information and so the kernel can not generate a hotplug event for udev. In this situation you can use the all_partitions property for the NAME. To get access to a CF slot on a specific multi-card reader:
57.6.5 MP3 Player
57.6.5.1 iRiver H340
An iRiver H300 Series MP3/ogg HDD player (H340):
  $ udevinfo -a -p /block/sdc | grep product
    SYSFS{product}="iRiver H300 Series"
    SYSFS{product}="Intel Corp. 82801EB/ER ..."
  $ sudo emacs -nw /etc/udev/rules.d/local.rules
  BUS=="usb", KERNEL=="sd?1", SYSFS{product}=="iRiver H300 Series", 
  NAME="%k", SYMLINK="iriver"
  $ sudo emacs -nw /etc/fstab
  /dev/iriver /media/iriver auto users,defaults     0   0
  $ sudo mkdir /media/iriver
  $ wajig restart udev
  $ mount /media/iriver57.6.5.2 iRiver ifp796
Initial connect to USB did not report anything in dmesg. By looking at
/proc/bus/usb/devices found:
  T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 26 Spd=480 MxCh= 0
  D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
  P:  Vendor=4102 ProdID=1007 Rev= 0.01
  S:  Manufacturer=iRiver Limited.
  S:  Product=IFP-700 HIGH SPEED
  C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=100mA
  I:  If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
  E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
  E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0msIt was being found but there is no Driver! As I understand this means that the firmware is using the Managed firmware.
So instead install ifp-line and run as root:
  $ wajig install ifp-line
  $ ifp ls
  Device is busy.  (I was unable to claim its interface.)
  $ sudo ifp ls
  d VOICE
  d RECORD
  f iRiver, Catch the digital flow!.mp3   (size 1988608)This works just fine! with commands to manage the iRiver from the command line.
A decent graphics interface is ifp-manager:
  $ wget http://optusnet.dl.sourceforge.net/sourceforge/ifp-manager/ifp-manager0_2_0.tar.bz2
  $ tar xvf ifp-manager0_2_0.tar.bz2
  $ cd ifp-manager0.2.0/
  $ sudo ./ifpmanager.plAnother graphical interface is provided by ifp-gnome. The interface is good but the functionality is limited. Seems if you select a folder of albums belonging to an artist, only the first album gets uploaded.
  $ wget http://optusnet.dl.sourceforge.net/sourceforge/ifp-gnome/ifp-gnome_0.5-ubuntu1_noarch.deb
  $ wajig install ifp-gnome_0.5-ubuntu1_noarch.deb 
  $ sudo ifp-gnomeTo allow a user access to the ifp:
57.6.7 Examples
A bunch of examples from Rogrio Brito:
  # USB Key Drive: "Leading Driver Co.,LTD.", "USB Mass Storage Device" 
  BUS=="usb", SYSFS{idProduct}=="2317", SYSFS{idVendor}=="067b",
  NAME="usb/key%n", SYMLINK="sda%n"
  # Printer: "DeskJet 840C", "BR1391S0WNKV" 
  BUS=="usb", SYSFS{idProduct}=="0604", SYSFS{idVendor}=="03f0",
  NAME="usb/lp%n", SYMLINK="hp_lp"
  # iPod 
  BUS=="ieee1394", SYSFS{model_name_kv}=="iPod", NAME="ipod%n"
  # HD in Firewire Enclosure 
  BUS=="scsi", SYSFS{vendor}=="QUANTUM*", SYSFS{model}=="FIREBALLlct15 30", 
  NAME="firewire%n"Your donation will support ongoing availability and give you access to the PDF version of this book. Desktop Survival Guides include Data Science, GNU/Linux, and MLHub. Books available on Amazon include Data Mining with Rattle and Essentials of Data Science. Popular open source software includes rattle, wajig, and mlhub. Hosted by Togaware, a pioneer of free and open source software since 1984. Copyright © 1995-2022 Graham.Williams@togaware.com Creative Commons Attribution-ShareAlike 4.0
