#1084224 isenkram-cli: isenkram installs raspi-firmware on non-raspi i686 hardwareleading to an error

#1084224#5
Date:
2024-10-06 20:21:57 UTC
From:
To:
Dear Maintainer,

I used to run isenkram-autoinstall-firmware without any worries.
On my Lenovo ThinkPad 10 tablet (with Intel Atom processor) this installs raspi-firmware. This is unexpected.

This fails with 'raspi-firmware: missing /boot/firmware, did you forget to mount it?' even building a new initrd fails (with the same error)
Of course you could say: it's a bug in raspi-firmware (perhaps it is), but for me it's a problem with isenkram-cli, too.
To be honest, I never had agreed to install raspi-firmware, as my device isn't a raspi and I don't see, where isenkram 'believes' that I run a raspi.

This is my output of:
# isenkram-lookup
beignet-opencl-icd
bluez
firmware-brcm80211
firmware-misc-nonfree
gkrellm-thinkbat
hdapsd
pidgin-blinklight
thinkfan
tlp
tp-smapi-dkms
tpb

The solution was pretty easy (apt purge raspi-firmware), but this doesn't solves the real problem.
What would be the correct firmware for my device?
How to automatically install the correct firmware (with a script, e.g. used in FAI)?

Thank you for your attention
Christian Meyer

#1084224#10
Date:
2024-10-07 05:23:33 UTC
From:
To:
[Christian Meyer]

Indeed.

Note, isenkram-lookup and isenkram-autoinstall-firmware use two
different approaches, so the output from the former can be ignored when
debugging isenkram-autoinstall-firmware.

The isenkram-autoinstall-firmware script fetches output from the kernel
log using dmesg, looking for lines containing "firmware: failed to
load", extracting the name of the file a kernel driver wanted to load.
This list of files are then looked up in a list of files and their
packages extracted from the Debian archive, using the same data set
searched by apt-file.

So to understand why isenkram-autoinstall-firmware want to install
raspi-firmware I recommend first running this command to locate the
drivers and their requested firmware files:

  sudo dmesg | grep "firmware: failed to load"

Next, for each requested file, run

  apt-file search {filename}

and see which package contain the firmware file in question.

To increase performance, and avoid a dependency on apt-file in
isenkram-cli, there is a cache of all firmware->package mappings in
/usr/share/isenkram/, this is extracted from the Debian archive when
isenkram is uploaded, and might be out of date if some firmware package
changed since the upload.  You might also want to look for the firmware
file listed there, if apt-file search turn up nothing.

#1084224#15
Date:
2024-10-07 05:59:10 UTC
From:
To:
Just for the record, it would be useful to have the output from the
problematic isenkram-autoinstall-firmware run.

Also, your email provider reject emails to c2h5oh@web.de, claiming
"mailbox unavailable", so I assume my replies will not reach you.

#1084224#20
Date:
2024-10-07 16:06:03 UTC
From:
To:
[..]
[..]

Lenovo's support page for one version of the ThinkPad 10 [1] claims
that a BCM4356 wireless is part of the hardware.

I imagine the kernel driver will request one of the
brcmfmac43456-sdio* files as included in raspi-firmware, but
also present in firmware-brcm80211.

Chris

[1] https://pcsupport.lenovo.com/us/en/products/tablets/thinkpad-tablet-series/thinkpad-10-20e3-20e4/downloads/driver-list/component?name=Networking%3A%20Wireless%20LAN&id=E3519D23-890E-4DE1-9064-DE6E7DA2515B

#1084224#25
Date:
2024-10-07 20:59:54 UTC
From:
To:
Thank you for the tip.  It definitely seem relevant to this problem.

[Chris Hofstaedtler]
indicate the same, these files are not yet present in
firmware-brcm80211.

#1084224#30
Date:
2024-10-07 23:52:31 UTC
From:
To:

#1084224#35
Date:
2024-10-08 14:05:01 UTC
From:
To:
content here:

# LANG=C isenkram-autoinstall-firmware
/usr/sbin/isenkram-autoinstall-firmware: 63: [: /lib/firmware/brcm/brcmfmac4330-sdio.Prowise-PT301.txt: unexpected operator
info: looking for firmware file brcm/brcmfmac43241b5-sdio.LENOVO-20C3S0HJ00.bin requested by kernel
info: looking for firmware file brcm/brcmfmac43241b5-sdio.LENOVO-20C3S0HJ00.bin requested by kernel
info: looking for firmware file brcm/brcmfmac43241b5-sdio.LENOVO-20C3S0HJ00.txt requested by kernel
info: looking for firmware file brcm/brcmfmac43241b5-sdio.LENOVO-20C3S0HJ00.txt requested by kernel
info: looking for firmware file brcm/brcmfmac43241b5-sdio.txt requested by kernel
info: looking for firmware file brcm/brcmfmac43241b5-sdio.txt requested by kernel
info: looking for firmware file brcm/brcmfmac43241b5-sdio.LENOVO-20C3S0HJ00.clm_blob requested by kernel
info: looking for firmware file brcm/brcmfmac43241b5-sdio.LENOVO-20C3S0HJ00.clm_blob requested by kernel
info: looking for firmware file brcm/brcmfmac43241b5-sdio.clm_blob requested by kernel
info: looking for firmware file brcm/brcmfmac43241b5-sdio.clm_blob requested by kernel
info: looking for firmware file brcm/BCM4324B5.hcd requested by kernel
info: looking for firmware file brcm/BCM4324B5.hcd requested by kernel
info: some kernel driver requested extra firmware files: brcm/brcmfmac*-pcie.*.clm_blob brcm/brcmfmac*-pcie.txt brcm/brcmfmac*-sdio.*.bin brcm/brcmfmac43430b0-sdio.bin brcm/brcmfmac43439-sdio.bin brcm/brcmfmac43439-sdio.clm_blob brcm/brcmfmac43456-sdio.bin brcm/brcmfmac4359-pcie.bin brcm/brcmfmac4359-sdio.bin brcm/brcmfmac4364-pcie.bin brcm/brcmfmac4365b-pcie.bin brcm/brcmfmac4365c-pcie.bin brcm/brcmfmac43752-sdio.bin brcm/brcmfmac43752-sdio.clm_blob brcm/brcmfmac4378b1-pcie.bin brcm/brcmfmac4378b1-pcie.clm_blob brcm/brcmfmac89459-pcie.bin rtl_bt/rtl8723b_config.bin rtl_bt/rtl8723bs_config.bin rtl_bt/rtl8723cs_cg_config.bin rtl_bt/rtl8723cs_cg_fw.bin rtl_bt/rtl8723cs_vf_config.bin rtl_bt/rtl8723cs_vf_fw.bin rtl_bt/rtl8723ds_config.bin rtl_bt/rtl8723ds_fw.bin rtl_bt/rtl8761a_config.bin rtl_bt/rtl8821cs_config.bin rtl_bt/rtl8821cs_fw.bin rtl_bt/rtl8851bu_config.bin rtl_bt/rtl8851bu_fw.bin brcm/brcmfmac43241b5-sdio.LENOVO-20C3S0HJ00.bin brcm/brcmfmac43241b5-sdio.LENOVO-20C3S0HJ00.bin brcm/brcmfmac43241b5-sdio.LENOVO-20C3S0HJ00.txt brcm/brcmfmac43241b5-sdio.LENOVO-20C3S0HJ00.txt brcm/brcmfmac43241b5-sdio.txt brcm/brcmfmac43241b5-sdio.txt brcm/brcmfmac43241b5-sdio.LENOVO-20C3S0HJ00.clm_blob brcm/brcmfmac43241b5-sdio.LENOVO-20C3S0HJ00.clm_blob brcm/brcmfmac43241b5-sdio.clm_blob brcm/brcmfmac43241b5-sdio.clm_blob brcm/BCM4324B5.hcd brcm/BCM4324B5.hcd
info: locating packages with the requested firmware files
info: determining whether enabling other components is required
info: No new firmware package with requested firmware detected.



# isenkram-autoinstall-firmware
/usr/sbin/isenkram-autoinstall-firmware: 63: [: /lib/firmware/brcm/brcmfmac4330-sdio.Prowise-PT301.txt: unexpected operator
info: looking for firmware file brcm/brcmfmac43241b5-sdio.LENOVO-20C3S0HJ00.bin requested by kernel
info: looking for firmware file brcm/brcmfmac43241b5-sdio.LENOVO-20C3S0HJ00.bin requested by kernel
info: looking for firmware file brcm/brcmfmac43241b5-sdio.LENOVO-20C3S0HJ00.txt requested by kernel
info: looking for firmware file brcm/brcmfmac43241b5-sdio.LENOVO-20C3S0HJ00.txt requested by kernel
info: looking for firmware file brcm/brcmfmac43241b5-sdio.txt requested by kernel
info: looking for firmware file brcm/brcmfmac43241b5-sdio.txt requested by kernel
info: looking for firmware file brcm/brcmfmac43241b5-sdio.LENOVO-20C3S0HJ00.clm_blob requested by kernel
info: looking for firmware file brcm/brcmfmac43241b5-sdio.LENOVO-20C3S0HJ00.clm_blob requested by kernel
info: looking for firmware file brcm/brcmfmac43241b5-sdio.clm_blob requested by kernel
info: looking for firmware file brcm/brcmfmac43241b5-sdio.clm_blob requested by kernel
info: looking for firmware file brcm/BCM4324B5.hcd requested by kernel
info: looking for firmware file brcm/BCM4324B5.hcd requested by kernel
info: some kernel driver requested extra firmware files: brcm/brcmfmac43430b0-sdio.bin brcm/brcmfmac43439-sdio.bin brcm/brcmfmac43439-sdio.clm_blob brcm/brcmfmac43456-sdio.bin brcm/brcmfmac4359-pcie.bin brcm/brcmfmac4359-sdio.bin brcm/brcmfmac4364-pcie.bin brcm/brcmfmac4365b-pcie.bin brcm/brcmfmac4365c-pcie.bin brcm/brcmfmac43752-sdio.bin brcm/brcmfmac43752-sdio.clm_blob brcm/brcmfmac4378b1-pcie.bin brcm/brcmfmac4378b1-pcie.clm_blob brcm/brcmfmac89459-pcie.bin brcm/brcmfmac*-pcie.*.clm_blob brcm/brcmfmac*-pcie.txt brcm/brcmfmac*-sdio.*.bin rtl_bt/rtl8723b_config.bin rtl_bt/rtl8723bs_config.bin rtl_bt/rtl8723cs_cg_config.bin rtl_bt/rtl8723cs_cg_fw.bin rtl_bt/rtl8723cs_vf_config.bin rtl_bt/rtl8723cs_vf_fw.bin rtl_bt/rtl8723ds_config.bin rtl_bt/rtl8723ds_fw.bin rtl_bt/rtl8761a_config.bin rtl_bt/rtl8821cs_config.bin rtl_bt/rtl8821cs_fw.bin rtl_bt/rtl8851bu_config.bin rtl_bt/rtl8851bu_fw.bin brcm/brcmfmac43241b5-sdio.LENOVO-20C3S0HJ00.bin brcm/brcmfmac43241b5-sdio.LENOVO-20C3S0HJ00.bin brcm/brcmfmac43241b5-sdio.LENOVO-20C3S0HJ00.txt brcm/brcmfmac43241b5-sdio.LENOVO-20C3S0HJ00.txt brcm/brcmfmac43241b5-sdio.txt brcm/brcmfmac43241b5-sdio.txt brcm/brcmfmac43241b5-sdio.LENOVO-20C3S0HJ00.clm_blob brcm/brcmfmac43241b5-sdio.LENOVO-20C3S0HJ00.clm_blob brcm/brcmfmac43241b5-sdio.clm_blob brcm/brcmfmac43241b5-sdio.clm_blob brcm/BCM4324B5.hcd brcm/BCM4324B5.hcd
info: locating packages with the requested firmware files
info: determining whether enabling other components is required
info: trying to install raspi-firmware
Vormals nicht ausgewähltes Paket raspi-firmware wird gewählt.
(Lese Datenbank ... 310874 Dateien und Verzeichnisse sind derzeit installiert.)
Vorbereitung zum Entpacken von .../raspi-firmware_1.20220830+ds-1_all.deb ...
Entpacken von raspi-firmware (1.20220830+ds-1) ...
raspi-firmware (1.20220830+ds-1) wird eingerichtet ...
Error: missing /boot/firmware, did you forget to mount it?
dpkg: Fehler beim Bearbeiten des Paketes raspi-firmware (--configure):
 »installiertes post-installation-Skript des Paketes raspi-firmware«-Unterprozess gab den Fehlerwert 1 zurück
Trigger für initramfs-tools (0.142+deb12u1) werden verarbeitet ...
update-initramfs: Generating /boot/initrd.img-6.1.0-26-686
I: The initramfs will attempt to resume from /dev/mmcblk2p5
I: (UUID=e0f5e93c-2c1e-43aa-93e6-0bd08f22b05e)
I: Set the RESUME variable to override this.
raspi-firmware: missing /boot/firmware, did you forget to mount it?
run-parts: /etc/initramfs/post-update.d//z50-raspi-firmware exited with return code 1
dpkg: Fehler beim Bearbeiten des Paketes initramfs-tools (--configure):
 »installiertes post-installation-Skript des Paketes initramfs-tools«-Unterprozess gab den Fehlerwert 1 zurück
Fehler traten auf beim Bearbeiten von:
 raspi-firmware
 initramfs-tools
E: Sub-process /usr/bin/dpkg returned an error code (1)

#1084224#40
Date:
2024-10-08 21:48:25 UTC
From:
To:
I believe part of the locale related problem is caused by wildcard paths
in some kernel module, and that the following patch should get rid of
that particular problem:

diff --git a/isenkram-autoinstall-firmware b/isenkram-autoinstall-firmware
index b3152e7..b30ca86 100755
--- a/isenkram-autoinstall-firmware
+++ b/isenkram-autoinstall-firmware
@@ -59,8 +59,8 @@ appstreamlookup() {
 }

 # Find firmware files requested by loaded kernel drivers.
-for fwfile in $(for module in $(awk '{print $1}' /proc/modules) ; do modinfo $module 2>/dev/null |awk '/^firmware:/ {print $2}'; done|sort -u); do
-    if [ ! -e /lib/firmware/$fwfile ] ; then
+for fwfile in $(for module in $(awk '{print $1}' /proc/modules) ; do modinfo $module 2>/dev/null |awk '/^firmware:/ {print $2}'; done| LC_ALL=C sort -u); do
+    if [ ! -e "/lib/firmware/$fwfile" ] ; then
        fwfiles="${fwfiles:+$fwfiles }$fwfile"
     fi
 done
@@ -70,7 +70,7 @@ done
 if dmesg >/dev/null 2>&1 ; then
     for fwfile in $(dmesg | sed -rn 's/^(\[[^]]*\] )?([^ ]+) [^ ]+: firmware: failed to load ([^ ]+) .*/\3/p'); do
        loginfo "looking for firmware file $fwfile requested by kernel"
-       if [ ! -e /lib/firmware/$fwfile ] ; then
+       if [ ! -e "/lib/firmware/$fwfile" ] ; then
             fwfiles="${fwfiles:+$fwfiles }$fwfile"
        fi
     done
@@ -145,7 +145,7 @@ done
 # Many different files can be required for a single hardware device,
 # plus several devices might require files from the same package, so
 # optimize!
-binpkginfos=$(echo "$binpkginfos" | tr ' ' '\n' | sort -u | xargs)
+binpkginfos=$(echo "$binpkginfos" | tr ' ' '\n' | LC_ALL=C sort -u | xargs)

 loginfo "determining whether enabling other components is required"
 binpkgs="${binpkgs:+$binpkgs }$(

Perhaps you can test it and see if the 'unexpected operator' message go
away, and the script behave the same for both LANG=C and
LANG=de_DE.UTF-8?  I suspect it will still try to install the
raspi-firmware package, though.

#1084224#45
Date:
2024-10-10 21:38:22 UTC
From:
To:
Am Dienstag, dem 08.10.2024 um 23:48 +0200 schrieb Petter Reinholdtsen:

1. I confirm that the 'unexpected operator' message went away, both for
LANG=C and LANG=de_DE.UTF-8.

2. The different behaviour for different LANG's is unchanged.

3. I did some investigation and found that:
a) for LANG=de_DE.UTF-8:
fwfile: brcm/brcmfmac43241b5-sdio.clm_blob matches binpkginfo:
say: [none]
and
b) for LANG=C:
fwfile: brcm/brcmfmac43241b5-sdio.clm_blob matches binpkginfo:
firmware-realtek
firmware-misc-nonfree
firmware-netxen
firmware-samsung
firmware-bnx2x
firmware-siano
firmware-amd-graphics
firmware-ivtv
firmware-bnx2
firmware-netronome
firmware-libertas
firmware-linux-free
firmware-ti-connectivity
firmware-brcm80211
firmware-intel-sound
firmware-qlogic
firmware-qcom-soc
firmware-cavium
firmware-atheros
firmware-myricom
firmware-iwlwifi
firmware-ipw2x00
firmware-ath9k-htc

So the thing is:
appstreamcli has differnt outputs depending on LANG, and while you look
for lines with the word '/Package:/' with german LANG the same line
starts with the word "Paket".

I still was not able to figure out, why isenkramcli 'wants' to install
raspi-firmware and what happens with a second call of isenkram-
autoinstall-firmware, after raspi-firmware is installed successfully.

4. But I just added a LANG=C to appstreamlookup() and now it works
fine.


appstreamlookup() {
    fwfile="$1"
    LANG=C appstreamcli what-provides firmware:runtime "$fwfile" | \
        awk '/Package:/ { print $2}'
}

Thank you for your hint
Christian Meyer

#1084224#50
Date:
2024-10-10 22:14:13 UTC
From:
To:
[Christian Meyer]

Aha, I did not know.  Good catch.

As far as I can tell, isenkram-autoinstall-firmware want to install
raspi-firmware because the raspi-firmware package contain a firmware
file one of the drivers loaded on the Lenovo machine want.  See
<URL: https://bugs.debian.org/999485 > for a request to move the file
into a non-rpi related package.

Here is a new and adjusted patch, making sure appstreamcli uses the C
locale and trying to handle the wildcard firmware entries at least one
of your machines driver kernel module mention.  I am not sure if this
last change is a useful approach, but thought it best to give it a go.

diff --git a/isenkram-autoinstall-firmware b/isenkram-autoinstall-firmware
index b3152e7..5d55ff9 100755
--- a/isenkram-autoinstall-firmware
+++ b/isenkram-autoinstall-firmware
@@ -54,13 +54,13 @@ EOF

 appstreamlookup() {
     fwfile="$1"
-    appstreamcli what-provides firmware:runtime "$fwfile" | \
+    LC_ALL=C appstreamcli what-provides firmware:runtime "$fwfile" | \
        awk '/Package:/ { print $2}'
 }

 # Find firmware files requested by loaded kernel drivers.
-for fwfile in $(for module in $(awk '{print $1}' /proc/modules) ; do modinfo $module 2>/dev/null |awk '/^firmware:/ {print $2}'; done|sort -u); do
-    if [ ! -e /lib/firmware/$fwfile ] ; then
+for fwfile in $(for module in $(awk '{print $1}' /proc/modules) ; do modinfo $module 2>/dev/null |awk '/^firmware:/ {print $2}'; done| LC_ALL=C sort -u); do
+    if [ ! -e "/lib/firmware/$fwfile" ] ; then
        fwfiles="${fwfiles:+$fwfiles }$fwfile"
     fi
 done
@@ -70,7 +70,7 @@ done
 if dmesg >/dev/null 2>&1 ; then
     for fwfile in $(dmesg | sed -rn 's/^(\[[^]]*\] )?([^ ]+) [^ ]+: firmware: failed to load ([^ ]+) .*/\3/p'); do
        loginfo "looking for firmware file $fwfile requested by kernel"
-       if [ ! -e /lib/firmware/$fwfile ] ; then
+       if [ ! -e "/lib/firmware/$fwfile" ] ; then
             fwfiles="${fwfiles:+$fwfiles }$fwfile"
        fi
     done
@@ -145,7 +145,7 @@ done
 # Many different files can be required for a single hardware device,
 # plus several devices might require files from the same package, so
 # optimize!
-binpkginfos=$(echo "$binpkginfos" | tr ' ' '\n' | sort -u | xargs)
+binpkginfos=$(echo "$binpkginfos" | tr ' ' '\n' | LC_ALL=C sort -u | xargs)

 loginfo "determining whether enabling other components is required"
 binpkgs="${binpkgs:+$binpkgs }$(

#1084224#55
Date:
2024-10-14 13:53:46 UTC
From:
To:
Am Freitag, dem 11.10.2024 um 00:14 +0200 schrieb Petter Reinholdtsen:
been errors:


# patch --dry-run /usr/sbin/isenkram-autoinstall-firmware
./isenkram.patch
checking file /usr/sbin/isenkram-autoinstall-firmware
Hunk #1 FAILED at 54.
Hunk #2 FAILED at 70.
Hunk #3 succeeded at 163 (offset 18 lines).
2 out of 3 hunks FAILED


Anyway:
I applied your changes by hand and I can confirm both problems are
gone:

# /usr/sbin/isenkram-autoinstall-firmware
info: looking for firmware file brcm/brcmfmac43241b5-sdio.LENOVO-
20C3S0HJ00.bin requested by kernel
info: looking for firmware file brcm/brcmfmac43241b5-sdio.LENOVO-
20C3S0HJ00.bin requested by kernel
info: looking for firmware file brcm/brcmfmac43241b5-sdio.LENOVO-
20C3S0HJ00.txt requested by kernel
info: looking for firmware file brcm/brcmfmac43241b5-sdio.LENOVO-
20C3S0HJ00.txt requested by kernel
info: looking for firmware file brcm/brcmfmac43241b5-sdio.txt requested
by kernel
info: looking for firmware file brcm/brcmfmac43241b5-sdio.txt requested
by kernel
info: looking for firmware file brcm/brcmfmac43241b5-sdio.LENOVO-
20C3S0HJ00.clm_blob requested by kernel
info: looking for firmware file brcm/brcmfmac43241b5-sdio.LENOVO-
20C3S0HJ00.clm_blob requested by kernel
info: looking for firmware file brcm/brcmfmac43241b5-sdio.clm_blob
requested by kernel
info: looking for firmware file brcm/brcmfmac43241b5-sdio.clm_blob
requested by kernel
info: looking for firmware file brcm/BCM4324B5.hcd requested by kernel
info: looking for firmware file brcm/BCM4324B5.hcd requested by kernel
info: some kernel driver requested extra firmware files:
brcm/brcmfmac*-pcie.*.bin brcm/brcmfmac*-pcie.*.clm_blob
brcm/brcmfmac*-pcie.*.txt brcm/brcmfmac*-pcie.txt brcm/brcmfmac*-
sdio.*.bin brcm/brcmfmac*-sdio.*.txt brcm/brcmfmac43430b0-sdio.bin
brcm/brcmfmac43439-sdio.bin brcm/brcmfmac43439-sdio.clm_blob
brcm/brcmfmac43456-sdio.bin brcm/brcmfmac4359-pcie.bin
brcm/brcmfmac4359-sdio.bin brcm/brcmfmac4364-pcie.bin
brcm/brcmfmac4365b-pcie.bin brcm/brcmfmac4365c-pcie.bin
brcm/brcmfmac43752-sdio.bin brcm/brcmfmac43752-sdio.clm_blob
brcm/brcmfmac4378b1-pcie.bin brcm/brcmfmac4378b1-pcie.clm_blob
brcm/brcmfmac89459-pcie.bin rtl_bt/rtl8723b_config.bin
rtl_bt/rtl8723bs_config.bin rtl_bt/rtl8723cs_cg_config.bin
rtl_bt/rtl8723cs_cg_fw.bin rtl_bt/rtl8723cs_vf_config.bin
rtl_bt/rtl8723cs_vf_fw.bin rtl_bt/rtl8723ds_config.bin
rtl_bt/rtl8723ds_fw.bin rtl_bt/rtl8761a_config.bin
rtl_bt/rtl8821cs_config.bin rtl_bt/rtl8821cs_fw.bin
rtl_bt/rtl8851bu_config.bin rtl_bt/rtl8851bu_fw.bin
brcm/brcmfmac43241b5-sdio.LENOVO-20C3S0HJ00.bin brcm/brcmfmac43241b5-
sdio.LENOVO-20C3S0HJ00.bin brcm/brcmfmac43241b5-sdio.LENOVO-
20C3S0HJ00.txt brcm/brcmfmac43241b5-sdio.LENOVO-20C3S0HJ00.txt
brcm/brcmfmac43241b5-sdio.txt brcm/brcmfmac43241b5-sdio.txt
brcm/brcmfmac43241b5-sdio.LENOVO-20C3S0HJ00.clm_blob
brcm/brcmfmac43241b5-sdio.LENOVO-20C3S0HJ00.clm_blob
brcm/brcmfmac43241b5-sdio.clm_blob brcm/brcmfmac43241b5-sdio.clm_blob
brcm/BCM4324B5.hcd brcm/BCM4324B5.hcd
info: locating packages with the requested firmware files
info: determining whether enabling other components is required
info: No new firmware package with requested firmware detected.



So since your syntax 'diff --git /usr/sbin/isenkram-autoinstall-
firmware.*' give an error on my system (unknown option »--git«), I did
a diff for myself to show you that I followed your changes
Some line numbers are different, but I think thats the difference
between debian stable and git development:

# diff /usr/sbin/isenkram-autoinstall-firmware.*
57c57
<     appstreamcli what-provides firmware:runtime "$fwfile" | \
---
\
62,63c62,63
< for fwfile in $(for module in $(awk '{print $1}' /proc/modules) ; do
modinfo $module 2>/dev/null |awk '/^firmware:/ {print $2}'; done|sort -
u); do
<     if [ ! -e /lib/firmware/$fwfile ] ; then
---
modinfo $module 2>/dev/null |awk '/^firmware:/ {print $2}'; done|
LC_ALL=C sort -u); do
73c73
< 	if [ ! -e /lib/firmware/$fwfile ] ; then
---
166c166
< binpkginfos=$(echo "$binpkginfos" | tr ' ' '\n' | sort -u | xargs)
---
xargs)


Thank you,
Christian

#1084224#60
Date:
2024-12-01 22:25:47 UTC
From:
To:
[Christian Meyer]

Ah, sorry about that.  It was related to my git repo, probably not
identical to the version you had.

Good.

I've just uploaded a improved isenkram-autoinstall-firmware enforcing
the use of LC_ALL=C and quotes around firmware file names.  I did not
include the change below, as I do not quite understand what wildcard
firmware file entries are supposed to mean in kernel modules, and
decided to delay its inclusion until I do.

diff --git a/isenkram-autoinstall-firmware b/isenkram-autoinstall-firmware
index dd9df64..8bcd156 100755
--- a/isenkram-autoinstall-firmware
+++ b/isenkram-autoinstall-firmware
@@ -58,11 +58,14 @@ appstreamlookup() {
        awk '/Package:/ { print $2}'
 }

-# Find firmware files requested by loaded kernel drivers.
-for fwfile in $(for module in $(awk '{print $1}' /proc/modules) ; do modinfo $module 2>/dev/null |awk '/^firmware:/ {print $2}'; done | LC_ALL=C sort -u); do
-    if [ ! -e "/lib/firmware/$fwfile" ] ; then
-       fwfiles="${fwfiles:+$fwfiles }$fwfile"
-    fi
+# Find firmware files requested by loaded kernel drivers.  Some entries use
+# wildcard strings.
+for fwwildcard in $(for module in $(awk '{print $1}' /proc/modules) ; do modinfo $module 2>/dev/null |awk '/^firmware:/ {print $2}'; done | LC_ALL=C sort -u); do
+    for fwfile in $fwwildcard; do
+        if [ ! -e "/lib/firmware/$fwfile" ] ; then
+            fwfiles="${fwfiles:+$fwfiles }$fwfile"
+        fi
+    done
 done

 # Also look in dmesg for requested firmware for modules that refuse to

I do expect the uploaded change to fix the error messages you saw.  The
proposal of a rpi related package for your x86 machine need to be fixed
outside isenkram, as mentioned earlier.

#1084224#67
Date:
2025-01-07 11:19:22 UTC
From:
To:
[Cyril Brulebois]

Well, it has become more and more obvious that NEW processing is not
something to reliably wait for, as the pile of packages waiting in NEW
is slowly increasing and even fairly trivial and obviously free software
licensed packages has been waiting for a review for months.

Just for completeness sake, there seem to be a cluster of three issues
https://bugs.debian.org/999485, https://bugs.debian.org/1084224 and
https://bugs.debian.org/1064072, related to this firmware blob.  Perhaps
these should be merged and placed under one package, with affects to the
others?  Not sure where it best belong.

#1084224#72
Date:
2025-01-07 11:41:28 UTC
From:
To:
Petter Reinholdtsen <pere@hungry.com> (2025-01-07):

That does not match my experience, at all. And that's irrelevant to
implementing the best technical/legal solution for an issue that's not
exactly new (no pun intended).

#1084224#77
Date:
2025-01-07 12:03:47 UTC
From:
To:
[Cyril Brulebois]

Fortuntately we have measurements and graphs on
<URL: https://ftp-master.debian.org/stat.html > documenting the status,
so we do not need to depend on personal experience. :)

Would be great if that was the case, but alas, there are several
suboptimal solutions implemented in Debian to avoid waiting for NEW
processing.  I too wish that would not be the case, but pragmatic
solutions this month beat waiting indefinitely for the perfect one.

#1084224#82
Date:
2025-01-07 12:59:27 UTC
From:
To:
Petter Reinholdtsen <pere@hungry.com> (2025-01-07):

Stats are just that, stats. They don't dictate what happens to a
specific package.

Surely the pragmatic solution would start with a package reaching NEW in
the first place, instead of badmouthing, complaining, and handwaving.

YMMV.