Port-arm archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: Trying to understand firmware for bwfm driver
joelp%sdf.org@localhost (Joel) writes:
>[ 7.050526] kern.module.path=/stand/evbarm/10.0/modules
>[ 7.050526] bwfm0: Firmware file default: brcmfmac43455-sdio.bin
>[ 7.050526] bwfm0: Firmware file model-spec: brcmfmac43455-sdio.pine64,pinebook-pro.bin
>[ 7.060526] bwfm0: Found Firmware file: brcmfmac43455-sdio.bin
>[ 7.080526] bwfm0: NVRAM file default: brcmfmac43455-sdio.txt
>[ 7.080526] bwfm0: NVRAM file model-spec: brcmfmac43455-sdio.pine64,pinebook-pro.txt
>[ 7.080526] bwfm0: autoconfiguration error: NVRAM file not available
>[ 7.080526] bwfm0: CLM file default: brcmfmac43455-sdio.clm_blob
>[ 7.080526] bwfm0: CLM file model-spec: brcmfmac43455-sdio.pine64,pinebook-pro.clm_blob
Firmware selection works like this:
You need 2 (.bin, .txt) or 3 files (.bin, .txt, .clm_blob).
The wifi chip is identified as a 43455 and your system model
identifies itself as pine64,pinebook-pro. The driver will therefore
try to load
brcmfmac{chip}-sdio.{model}.bin
brcmfmac{chip}-sdio.{model}.txt
brcmfmac{chip}-sdio.{model}.clm_blob
and falls back to
brcmfmac{chip}-sdio.bin
brcmfmac{chip}-sdio.txt
brcmfmac{chip}-sdio.clm_blob
You always need the .bin (firmware) and .txt (board-specific parameter)
files.
Some .bin files also require the .clm_blob (Country Locale Matrix),
others have the data already embedded. All of the release files should
have the data embedded, but files from other sources may not, and then
the interface will not work without the .clm_blob file.
Most but not all chips that identify themselves as e.g. 43455 take the
same firmware. So it's usually fine to use one brcmfmac43455-sdio.bin
for each such chip. Some chips are different, then providing a model
specific file can help.
The parameter file (also called NVRAM file) is more specific, but
to some degree they also all work. However, some might tune the chip
to e.g. a specific antenna so that, with the wrong parameters, you may
violate regulations or get receive errors.
The driver uses two steps to identify a chip:
1. By vendor and product to decide if the driver attaches:
Vendor 0x02d0 Product 0xa9bf is seen as 43455
the Wifi chip in an RPI4 reports 0x02d0/0xa9a6, the chip is
identified as a bcm43430, which is good enough to attach.
2. By id and revision to select the firmware:
Id 0x4345 rev <= 8 is seen as 43455
Id 0x4345 rev 9 is seen as 43456
Id 0x4345 rev >= 10 is again seen as 43455
the Wifi chip in the RPI4 here reports id 0x4345 rev 6, so the
driver loads the firmware for a 43455, first it looks for rpi4
specific files, then for generic files as described above.
https://forum.pine64.org/showthread.php?tid=16456 says that at
least some pinebooks come with a 43456 (id 0x4345 rev 9), but
yours apparently doesn't since 0x4345/9 would be identified
as 43456 by our driver.
Home |
Main Index |
Thread Index |
Old Index