diff -ruN hotplug-2004_03_29.orig/etc/hotplug/firmware.agent hotplug-2004_03_29/etc/hotplug/firmware.agent
--- hotplug-2004_03_29.orig/etc/hotplug/firmware.agent	2004-03-26 23:34:34.000000000 +0100
+++ hotplug-2004_03_29/etc/hotplug/firmware.agent	2004-06-06 17:05:35.000000000 +0200
@@ -19,8 +19,8 @@
 . ./hotplug.functions
 # DEBUG=yes export DEBUG
 
-# directory of the firmware files
-FIRMWARE_DIR=/usr/lib/hotplug/firmware
+# directories with the firmware files
+FIRMWARE_DIRS="/lib/firmware /usr/local/lib/firmware /usr/lib/hotplug/firmware"
 
 # mountpoint of sysfs
 SYSFS=$(sed -n 's/^.* \([^ ]*\) sysfs .*$/\1/p' /proc/mounts)
@@ -40,13 +40,16 @@
         sleep 1
     fi
 
-    if [ -f "$FIRMWARE_DIR/$FIRMWARE" ]; then
+    for DIR in $FIRMWARE_DIRS; do
+        [ -e "$DIR/$FIRMWARE" ] || continue
         echo 1 > $SYSFS/$DEVPATH/loading
-        cp "$FIRMWARE_DIR/$FIRMWARE" $SYSFS/$DEVPATH/data
+        cat "$DIR/$FIRMWARE" > $SYSFS/$DEVPATH/data
         echo 0 > $SYSFS/$DEVPATH/loading
-    else
-        echo -1 > $SYSFS/$DEVPATH/loading
-    fi
+        exit
+    done
+
+    # the firmware was not found
+    echo -1 > $SYSFS/$DEVPATH/loading
 
     ;;
 
