Hi Bryan,
Quick update with what I learned from the RPi-Distro side, which I think changes the picture in a useful way.
I filed a request with them (Submit bookworm-branch cyfmac43455-sdio firmware to upstream linux-firmware · Issue #55 · RPi-Distro/firmware-nonfree · GitHub) asking they upstream the newer cyfmac43455 firmware to kernel.org’s linux-firmware. Phil Elwell declined and pointed at a prior issue (#47) and a comment from XECDesign (Raspberry Pi staff) on bluez-firmware #15:
“These aren’t our files, we have as much ‘authority’ here as anybody else. … The upstream README says: ‘Your commit must contain a Signed-Off-By: from someone authoritative on the licensing of the firmware in question (i.e. from within the company that owns the code).’”
The upshot: even Raspberry Pi staff don’t have a privileged relationship with Cypress that lets them submit upstream. The kernel.org Signed-off-by requirement effectively means only Cypress/Infineon employees can submit newer Cypress blobs to linux-firmware, and they apparently haven’t since 2021. Waiting for upstream isn’t a path.
Another RPi-Distro thread participant (macmpi, Alpine packager) pointed at a cleaner approach that directly addresses your concern about overriding linux-firmware: don’t override it — ship the firmware under board-specific filenames that brcmfmac’s resolution chain tries first, at paths that currently have no file at all.
Here’s the evidence from journalctl -k -b on a Rocky 10 Pi 4B (no sudo needed, survives dmesg -C):
Aug 15 00:00:08 localhost kernel: brcmfmac mmc1:0001:1: Direct firmware load for brcm/brcmfmac43455-sdio.raspberrypi,4-model-b.bin failed with error -2
Aug 15 00:00:08 localhost kernel: brcmfmac: brcmf_c_preinit_dcmds: Firmware: BCM4345/6 wl0: Apr 15 2021 03:03:20 version 7.45.234 (4ca95bb CY) FWID 01-996384e2
The kernel first tries brcm/brcmfmac43455-sdio.raspberrypi,4-model-b.bin, fails with -2 (file genuinely doesn’t exist), then falls back to brcm/brcmfmac43455-sdio.bin — which on Rocky is a symlink to ../cypress/cyfmac43455-sdio.bin.xz, the upstream linux-firmware blob from 2021.
Verifying the empty board-specific paths on Rocky 10:
$ ls /usr/lib/firmware/brcm/brcmfmac43455-sdio.raspberrypi,3-model-b-plus.bin.xz 2>&1
ls: cannot access ...: No such file or directory
$ ls /usr/lib/firmware/brcm/brcmfmac43455-sdio.raspberrypi,4-model-b.bin.xz 2>&1
ls: cannot access ...: No such file or directory
So a Rocky Pi-specific firmware package would ship the bookworm-vintage firmware (2023-08-29 build, OWE/SAE-capable) as:
brcm/brcmfmac43455-sdio.raspberrypi,3-model-b-plus.bin.xz + matching .clm_blob.xz
brcm/brcmfmac43455-sdio.raspberrypi,4-model-b.bin.xz + matching .clm_blob.xz
Both are currently nonexistent paths — no linux-firmware file to conflict with. The brcmfmac driver picks these up automatically via the device-tree match. The linux-firmware symlinks and the underlying cypress/cyfmac43455-sdio.bin.xz stay completely untouched and continue serving any non-Pi BCM43455 deployment (and any Pi without this package installed). It’s literally additive — the package just creates new files at currently-empty paths.
(Pi 5 is slightly different — linux-firmware already ships a symlink at the ,5-model-b.bin.xz path, so a clean addition isn’t available there. Could be handled with a %post script or just left for a follow-up. Pi 3B+ and Pi 4B are the clean case.)
This is the same pattern Debian’s firmware-brcm80211 and Raspberry Pi OS use in production, so the mechanism is well-validated against the brcmfmac driver Rocky ships.
I confirmed the bookworm firmware contains OWE and SAE protocol support:
$ strings cyfmac43455-sdio-standard.bin | grep -ic owe
11
$ strings cyfmac43455-sdio-standard.bin | grep -ic sae
6
(Rocky’s currently shipped 2021 blob returns zero for both.)
Would the SIG be open to revisiting this with the board-specific-naming approach in mind? It’s a much smaller maintenance surface than my earlier suggestion — a Pi-only package that ships ~1.5 MB of files at paths linux-firmware doesn’t touch. Happy to test candidate builds against real OWE infrastructure (LBNL’s lbnl-open deployment) on Pi 3B+ and Pi 4B if useful.
If the answer remains no, totally understood and I’ll stop pushing — just wanted to make sure the specific mechanism was on the table before closing this out, since it sidesteps the override concern entirely.
Thanks again for the engagement.