[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#648631: debian-installer: check-missing-firmware fails to reload driver



Brian Potkin wrote:
> I have a USB device using the zd1211rw module. It behaves differently in
> that a wlan0 interface is detected and can be configured. However,
> $DEVPATH is the same as with the p54usb and modprobe still attempts to
> remove usbcore.

I have a zd1211rw so was able to reproduce this. Probably any USB wifi
needing firmware has this problem.

The devpath I got was /sys/devices/platform/orion-ehci.0/usb1/1-1/1-1.4
This has a product file containing "USB2.0 WLAN", manufacturer
containing ZyDAS and so on, but its driver/module link points to
/sys/bus/usb/drivers/usbcore . The information about the actual driver for
this device is in 1-1.4:1.0/driver and 1-1.4:1.0/modalias .

All I can think to do is a special case. Assuming this only affects USB
and not some other bus, this should work ok:

diff --git a/check-missing-firmware.sh b/check-missing-firmware.sh
index 95106d4..7835b39 100755
--- a/check-missing-firmware.sh
+++ b/check-missing-firmware.sh
@@ -98,9 +98,22 @@ check_missing () {
 			if grep -q "^$fwfile$" $DENIED 2>/dev/null; then
 				continue
 			fi
-
-			modules="$module${modules:+ $modules}"
+			
 			files="$fwfile${files:+ $files}"
+
+			if [ "$module" = usbcore ]; then
+				# Special case for USB bus, which puts the
+				# real module information in a subdir of
+				# the devpath.
+				for dir in $(find "$devpath" -maxdepth 1 -mindepth 1 -type d); do
+					module=$(get_module "$dir")
+					if [ -n "$module" ]; then
+						modules="$module${modules:+ $modules}"
+					fi
+				done
+			else
+				modules="$module${modules:+ $modules}"
+			fi
 		done
 	done

-- 
see shy jo

Attachment: signature.asc
Description: Digital signature


Reply to: