Bug#973733: RTW88_8821ce module fails to find firmware during install and must be reloaded
Tags: patch
Debian Installer Team,
On Nov 5, 2020, Ben Hutchings wrote:
> Alternately:
> module="$(basename "$(readlink /sys/bus/*/drivers/$driver/module)")"
> Some error-checking would be needed.
Attached is a patch based on this approach.
Good news:
* removed and loaded rtw88_8821ce
* created wlp4s0 interface
* lists wireless networks
Bad news:
* "Failure of key exchange and association"
* "purge skb(s) not reported by firmware"
Please advise how I can further troubleshoot this.
Thank you!
Daniel Lewart
Urbana, Illinois
diff -ru a/check-missing-firmware.sh b/check-missing-firmware.sh
--- a/check-missing-firmware.sh 2021-05-30 15:47:29.000000000 -0500
+++ b/check-missing-firmware.sh 2021-06-24 00:00:00.000000000 -0500
@@ -103,7 +103,7 @@
# Give modules some time to request firmware.
sleep 1
-
+
modules=""
files=""
@@ -138,7 +138,7 @@
# decode firmware filename as encoded by
# udev firmware.agent
fwfile="$(basename $file | sed -e 's#\\x2f#/#g')"
-
+
# strip probably nonexistant firmware subdirectory
devpath="$(readlink $file | sed 's/\/firmware\/.*//')"
# the symlink is supposed to point to the device in /sys
@@ -157,7 +157,7 @@
if grep -q "^$fwfile$" $DENIED 2>/dev/null; then
continue
fi
-
+
files="$fwfile${files:+ $files}"
if [ "$module" = usbcore ]; then
@@ -337,5 +337,17 @@
modprobe -r $module || true
modprobe $module || true
fi
+
+ # Module name can be different than driver name
+ # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=973733
+ driver=$module
+ if modpath=$(readlink /sys/bus/*/drivers/"$driver"/module); then
+ module2=$(basename $modpath)
+ if [ $module2 != "$driver" ]; then
+ log "removing and loading kernel module $module2 for driver '$driver'"
+ modprobe -r $module2 || true
+ modprobe $module2 || true
+ fi
+ fi
done
done
Reply to: