hotplug usb-storage experience

Jason Cortezzo jasoncc at comcast.net
Sat Jan 17 22:12:22 UTC 2004


I just spent several hours trying to get hotplug to mount/umount my 
usb-storage camera when it is plugged/unplugged from the system.

At first, I was just adding an entry in my /etc/fstab file for the 
camera so that I could mount and umount it using the "Disks" menu in 
Gnome but much to my confusion the entry kept mysteriously 
disappearing.  I eventually discovered that whenever I unplugged the 
camera, hotplug was calling updfstab which was removing the entry that I 
had put in /etc/fstab.  The problem was that updfstab was not putting 
the entry back when the camera was plugged in.  Eventually, I figured 
out that if I changed the entry in /etc/updfstab.conf.default from...

device camera {
    partition 1
    match   hd DSC
    match   hd CAMERA
}

to...

device camera {
    partition 1
    match   hd DSC
    match   hd CAMERA
    match   hd OLYMPUS
}

updfstab would now add an entry to /etc/fstab when I plugged in the 
camera (It's an Olympus camera).  So now I had /etc/fstab being updated 
whenever the camera was added or removed but it was not being 
mounted/umounted so I decided to do some more hotplug research.

After some reading, I was lead to believe that a script at 
/etc/hotplug/usb/usb-storage would be executed when the camera was 
added.  This didn't work at first so I scoured the man pages of hotplug 
for clues.  Eventually, through dumb luck and trial and error, I ended 
up copying all the entries in 
/lib/modules/2.4.22-1.2149.nptl/modules.usbmap that started with 
"usb-storage" into /etc/hotplug/usb.usermap.  After, I did this, the 
/etc/hotplug/usb/usb-storage script was being executed when I plugged in 
the camera.  The script just did a 'mount /mnt/camera'.

The only problem now was that the camera did not get unmounted when it 
was unplugged and, in fact, only root could umount it which was 
inconvenient.  So, feeling like I was on a roll, I kept digging.  It 
turns outs that hotplug sets a variable called $REMOVER which you can 
access in the hotplug script ( /etc/hotplug/usb/usb-storage) which is 
the path of the script that will be executed when the device is 
unplugged.  The value of $REMOVER always ended up being 
/var/run/usb/{cryptic_string}.  So, I modified my script to actually 
write a removal script to that path which would umount the camera.  In 
the end the script at /etc/hotplug/usb/usb-storage looked like this...

#!/bin/bash
mount /mnt/camera
echo '#!/bin/bash' > "$REMOVER"
echo 'umount /mnt/camera' >> "$REMOVER"
chmod u+x $REMOVER

Unfortunately, the /var/run/usb directory did not already exist so I had 
to create it first.

In the end, it works perfectly.  I plug in the camera and it gets 
mounted and a little icon shows up on my desktop.  When I unplug it, it 
gets umounted and the icon disappears - very nice.

What I'd like to know is, why did I have to copy all those entries from 
/lib/modules/2.4.22-1.2149.nptl/modules.usbmap that started with 
"usb-storage" into /etc/hotplug/usb.usermap?  I don't really know enough 
about what these entries are but it seems like I shouldn't have had to 
manually copy these cryptic entries to get hotplug to work with my 
usb-storage device.  Can anyone offer any insights?

It also would have been nice if /var/run/usb storage had already 
existed.  Should this directory be created during Fedora Core install?

-Jason





More information about the fedora-list mailing list