Skip to content

AP6256: update wifi firmware under brcm/ from Xunlong repo#120

Open
sven-ola wants to merge 1 commit intoarmbian:masterfrom
sven-ola:xunlong-opi-ap6256
Open

AP6256: update wifi firmware under brcm/ from Xunlong repo#120
sven-ola wants to merge 1 commit intoarmbian:masterfrom
sven-ola:xunlong-opi-ap6256

Conversation

@sven-ola
Copy link
Member

@sven-ola sven-ola commented Mar 8, 2026

Short description

This update is optional. I do not think it will break lots of Armbian boards, but better save than sorry. Thus, this only overwrites fw_bcm43456c5_ag.bin in the /lib/firmware/brcm/ subdir that needs to be activated manually or by board cfg anyhow (which is used here and there e.g. Bananapi-M4?) AP mode also works for me with the old version currently stored under /brcm/

Tests

Tested with Orange Pi RV2 with kernel 6.6 and 6.18 and hostapd as well as a minimal hostapd.conf

interface=wlan0
driver=nl80211
ssid=test
channel=1

Grabbed version strings from the *.bin files (see attached *.txt)

Root: rkwifi.txt
Old: brcm.txt
New: xunlong.txt

Commit comment

The Broadcom AP6256 chip is soldered on OrangePi RV2 board (and probably other Xunlong OrangePi boards). Without arguments, the bcmdhd.ko module loads /lib/firmware/{fw_bcm43456c5_ag.bin,nvram_ap6256.txt} which at least with OrangePi RV2 has a non-working access point mode.

When loading the (newer) fw_bcm43456c5_ag.bin from /lib/fw/brcm, the access point mode works. Also, for the Wifi AP6256, the files stored under /lib/firmware and /lib/firmware/rkwifi are the same.

While investigating this, I spotted a newer firmware on the Xunlong repo (refer to https://github.com/orangepi-xunlong/firmware). This FW also works fine including the access point mode.

There may be older boards that required the older firmware under /lib/firmware. To use the FW under brcm/ you need to add module parameters e.g. to /etc/modprobe.d/${BOARD}.conf, for example

options bcmdhd firmware_path=brcm/ nvram_path=brcm/

Note the trailing slashes, those are required. Rest of the file names are determined and applied during wifi iface init.

  • root and rkwifi/ Version: 7.45.96.61 (be7af2d@shgit) (r745790)
    CRC: 279731d4 Date: Tue 2020-02-11 11:55:51 CST
    Ucode Ver: 1043.20721 FWID: 01-a41d86bd

  • brcm/ old Version: 7.45.96.91 (8d24bff@SYNA) (r745790)
    CRC: 38590a6e Date: Fri 2021-06-11 13:07:03 CST
    Ucode Ver: 1043.20730 FWID: 01-82a62ae

  • brcm/ new Version: 7.45.96.203 (g23f64344)
    CRC: bd0824a0 Date: Tue 2024-04-16 11:23:17 CST
    Ucode Ver: 1043.20745 FWID: 01-4763f75d

If you run "strings fw*.bin | grep Version:", you see a longer string thats probably dash-speaparted compile flags. If you split them to lines, sort, and compare you see 6 missing and 5 additional flags from rkwifi to brcm (old) while only 2 missing and 1 added between brcm(old) and brcm(new). It's likely an update under brcm/ and maybe break something when overwriting /lib/firmware/fw_bcm43456c5_ag.bin

The Broadcom AP6256 chip is soldered on OrangePi RV2 board (and probably
other Xunlong OrangePi boards). Without arguments, the bcmdhd.ko module
loads /lib/firmware/{fw_bcm43456c5_ag.bin,nvram_ap6256.txt} which at
least with OrangePi RV2 has a non-working access point mode.

When loading the (newer) fw_bcm43456c5_ag.bin from /lib/fw/brcm,
the access point mode works. Also, for the Wifi AP6256, the files
stored under /lib/firmware and /lib/firmware/rkwifi are the same.

While investigating this, I spotted a newer firmware on the Xunlong
repo (refer to https://github.com/orangepi-xunlong/firmware). This
FW also works fine including the access point mode.

There may be older boards that required the older firmware under
/lib/firmware. To use the FW under brcm/ you need to add module
parameters e.g. to /etc/modprobe.d/${BOARD}.conf, for example

  options bcmdhd firmware_path=brcm/ nvram_path=brcm/

Note the trailing slashes, those are required. Rest of the file
names are determined and applied during wifi iface init.

* root and rkwifi/ Version: 7.45.96.61 (be7af2d@shgit) (r745790)
  CRC: 279731d4 Date: Tue 2020-02-11 11:55:51 CST
  Ucode Ver: 1043.20721 FWID: 01-a41d86bd

* brcm/ old Version: 7.45.96.91 (8d24bff@SYNA) (r745790)
  CRC: 38590a6e Date: Fri 2021-06-11 13:07:03 CST
  Ucode Ver: 1043.20730 FWID: 01-82a62ae

* brcm/ new Version: 7.45.96.203 (g23f64344)
  CRC: bd0824a0 Date: Tue 2024-04-16 11:23:17 CST
  Ucode Ver: 1043.20745 FWID: 01-4763f75d

If you run "strings bcmdhd.ko | grep Version:", you see a longer
string thats probably dash-speaparted compile flags. If you split them
to lines, sort, and compare you see 6 missing and 5 additional flags
from rkwifi to brcm (old) while only 2 missing and 1 added between
brcm(old) and brcm(new). It's likely an update under brcm/ and maybe
break something when overwriting /lib/firmware/fw_bcm43456c5_ag.bin

Signed-off-by: Sven-Ola Tuecke <sven-ola@gmx.de>
@coderabbitai
Copy link

coderabbitai bot commented Mar 8, 2026

Important

Review skipped

Review was skipped due to path filters

⛔ Files ignored due to path filters (1)
  • brcm/fw_bcm43456c5_ag.bin is excluded by !**/*.bin

CodeRabbit blocks several paths by default. You can override this behavior by explicitly including those paths in the path filters. For example, including **/dist/** will override the default block on the dist directory, by removing the pattern from both the lists.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 16e3c6cf-480d-4a26-843d-147d0a5d80be

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant