Skip to content

ipq4019: add Ruckus H510 BDF - #135

Open
coreyleavitt wants to merge 1 commit into
openwrt:mainfrom
coreyleavitt:ruckus-h510-bdf
Open

ipq4019: add Ruckus H510 BDF#135
coreyleavitt wants to merge 1 commit into
openwrt:mainfrom
coreyleavitt:ruckus-h510-bdf

Conversation

@coreyleavitt

Copy link
Copy Markdown

Summary

Adds a board-2.bin file for the Ruckus H510 in-wall 802.11ac AP (IPQ4019, Dakota AP-DK04.1-C1 reference design). Required for the H510 OpenWrt port (separate PR against openwrt/openwrt will follow once this lands and we can bump ipq-wifi's PKG_SOURCE_VERSION).

Why this is needed

The H510's QCA4019 radios return all-zero BMI fuses on this hardware — Ruckus's stock v54_bsp driver writes calibration via a side channel that bypasses BMI entirely. With BMI invalid, ath10k falls back to a key tuple of bus=ahb,vendor=0000,device=0000,subsystem-vendor=0000,subsystem-device=0000, and the upstream ath10k-firmware-qca4019-ct board-2.bin is keyed only by bmi-chip-id/bmi-board-id, so no entry matches. Both radios identify as the same all-zeros tuple too, which would otherwise force them to share calibration (bad for the 5 GHz radio).

What this BDF contains

Two entries keyed by per-radio qcom,ath10k-calibration-variant strings:

  • Ruckus-H510-2g → 2.4 GHz radio
  • Ruckus-H510-5g → 5 GHz radio

The calibration payloads are taken from the upstream DK04.1-C1 reference-design entries (bmi-board-id=16 for 2.4 GHz, bmi-board-id=17 for 5 GHz). Each entry also carries a BMI-style alias key for forward compatibility if BMI is ever populated on this hardware.

Generated with ath10k-bdencoder from qca-swiss-army-knife.

Test plan

  • Both radios load firmware and register phy0/phy1 with mac80211 on real H510 hardware
  • Each radio gets its own MAC from Board Data nvmem cells
  • Default wifi config works; both bands broadcast at 30 dBm

The Ruckus H510's QCA4019 radios return all-zero BMI fuses
(chip_id=0, board_id=0) because the stock Ruckus v54_bsp driver
delivers calibration via a side channel that bypasses BMI entirely.
With BMI invalid, ath10k's upstream BDF lookup tuple never matches
any entry keyed by bmi-chip-id/bmi-board-id.

This BDF contains two entries keyed by per-radio
qcom,ath10k-calibration-variant strings ("Ruckus-H510-2g" and
"Ruckus-H510-5g"), distinguishing the 2.4 GHz and 5 GHz radios
which would otherwise be indistinguishable to ath10k due to the
identical all-zero BMI tuples on this hardware.

The calibration payloads are taken from the upstream DK04.1-C1
reference-design entries (bmi-board-id=16 for 2.4 GHz,
bmi-board-id=17 for 5 GHz). Each entry also carries a BMI-style
alias key for forward compatibility.

Signed-off-by: Corey Leavitt <corey@leavitt.dev>
@robimarko

Copy link
Copy Markdown
Contributor

The calibration payloads are taken from the upstream DK04.1-C1 reference-design entries (bmi-board-id=16 for 2.4 GHz, bmi-board-id=17 for 5 GHz). Each entry also carries a BMI-style alias key for forward compatibility if BMI is ever populated on this hardware.

What is the source of the BDF content?
You copied it from reference board or its pulled from the stock FW?

@coreyleavitt

Copy link
Copy Markdown
Author

What is the source of the BDF content? You copied it from reference board or its pulled from the stock FW?

Reference, BMI 16 and 17 from ath10k-firmware-qca4019-ct. Stock Ruckus delivers cal via a proprietary mechanism that bypasses BMI. Raw payload is on SPI NOR but format isn't documented and would require some RE work. Would defer to your call on whether reference is acceptable here.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants