Skip to content

ipq5018: add BDFs for Cudy P5 - #147

Open
MayorBug wants to merge 1 commit into
openwrt:mainfrom
MayorBug:cudy_p5
Open

ipq5018: add BDFs for Cudy P5#147
MayorBug wants to merge 1 commit into
openwrt:mainfrom
MayorBug:cudy_p5

Conversation

@MayorBug

Copy link
Copy Markdown

Add the IPQ5018 and QCN6122 board data from Cudy P5 firmware 2.4.27.

Patched QCN6122 offset 0x45c for WLAN.HK.2.7 compat with ath_bdf_tool. Update regdb from Qualcomm WLAN.HK.2.7.0.1 build 01744

The updated files were tested on the Cudy P5. Both radios start and gain 2 dBm compared with the original embedded regdb.

ath11k-bdencoder -i board-cudy_p5.ipq5018
FileSize: 131180
FileCRC32: 2710641e
FileMD5: 366353715fb9c6164b9e39e285c02724
BoardNames[0]: 'bus=ahb,qmi-chip-id=0,qmi-board-id=255','variant=Cudy-P5' BoardLength[0]: 131072
BoardCRC32[0]: fd546dce
BoardMD5[0]: f7b2eb543898ee482d536f6b58aa535a

ath11k-bdencoder -i board-cudy_p5.qcn6122
FileSize: 131180
FileCRC32: 3426164f
FileMD5: 2301a344d2586ce6efc9773624f71902
BoardNames[0]: 'bus=ahb,qmi-chip-id=0,qmi-board-id=255','variant=Cudy-P5' BoardLength[0]: 131072
BoardCRC32[0]: ee621f9f
BoardMD5[0]: 63112ecd98e91db0405beb47dd955742

Add the IPQ5018 and QCN6122 board data from Cudy P5 firmware 2.4.27.

Patched QCN6122 offset 0x45c for WLAN.HK.2.7 compat with ath_bdf_tool.
Update regdb from Qualcomm WLAN.HK.2.7.0.1 build 01744

The updated files were tested on the Cudy P5. Both radios start and gain
2 dBm compared with the original embedded regdb.

ath11k-bdencoder -i board-cudy_p5.ipq5018
FileSize: 131180
FileCRC32: 2710641e
FileMD5: 366353715fb9c6164b9e39e285c02724
BoardNames[0]: 'bus=ahb,qmi-chip-id=0,qmi-board-id=255','variant=Cudy-P5'
BoardLength[0]: 131072
BoardCRC32[0]: fd546dce
BoardMD5[0]: f7b2eb543898ee482d536f6b58aa535a

ath11k-bdencoder -i board-cudy_p5.qcn6122
FileSize: 131180
FileCRC32: 3426164f
FileMD5: 2301a344d2586ce6efc9773624f71902
BoardNames[0]: 'bus=ahb,qmi-chip-id=0,qmi-board-id=255','variant=Cudy-P5'
BoardLength[0]: 131072
BoardCRC32[0]: ee621f9f
BoardMD5[0]: 63112ecd98e91db0405beb47dd955742

Signed-off-by: Georg Seema <georgseema@gmail.com>
MayorBug added a commit to MayorBug/openwrt that referenced this pull request Aug 12, 2026
Add support for the Cudy P5, an IPQ5018 cellular router.

Specifications:

- SoC: Qualcomm IPQ5018
- RAM: 256 MiB
- Flash: 128 MiB ESMT F50D1G41LB SPI-NAND
- Wi-Fi: IPQ5018 2.4 GHz and QCN6122 5 GHz
- Ethernet: 3 LAN ports, 1 WAN port through QCA8337
- Modem: M.2 USB and PCIe
- LEDs: six
- Buttons: reset and WPS
- UART: 115200 8n1 (1.8 V, GND, RX, TX)

Stock QSDK reports the flash as GigaDevice because ESMT uses GigaDevice's
0xc8 manufacturer ID on this family.

Keep the Cudy calibration data for both radios. Use ath_bdf_tool to patch
QCN6122 byte 0x45c from 0x03 to 0x00 and update its internal checksum.
Refresh the embedded regdb in both BDF files from Qualcomm
WLAN.HK.2.7.0.1 build 01744. The Cudy BDF files have no fixed regulatory
domain to remove.

This branch carries the following Linux 6.18 dependencies and experiments:

- Local patch 999 applies Ziyang Huang's five reduced ath11k ring values.
  This temporary fallback changes the shared ath11k build. Remove it when
  OpenWrt has a working selectable or runtime low-memory profile.
- Mark Ruvald Pedersen's private RXDMA page-frag caches reduce retained
  pages caused by mixed allocation lifetimes.
- Stanislaw Pal's QPIC SET_FEATURE fix prevents OTP-mode failures.
- Stanislaw Pal's current CMN PLL fix prevents the IPQ5018 boot hang.
- Md Sadre Alam's QPIC x4 series enables quad cache reads and program
  loads. A local fallback initializes PROGRAM_EXECUTE unconditionally.
  The operation has no data phase and uses an x1 command and address.

The PR 21495 package graph caused recursive ath11k AHB and PCI dependencies
in this tree. An earlier duplicate AHB variant built without passing the
small-buffer definition to ath11k. Patch 999 keeps the proven values while
the package integration remains unfinished.

The IPQ5018 USB3 backport failed P5 hardware testing. xHCI started, but the
RM551 stayed on USB2 and repeatedly failed enumeration with error -71. ECM
attachment and DHCP were unreliable. Keep the tested USB2 layout.

Tested and working:

- The board boots with the P5 DTS and CMN PLL fix.
- MAC addresses and Wi-Fi calibration data are extracted correctly.
- LAN uses GMAC1 through UNIPHY0, SGMII, and QCA8337 port 6.
- WAN uses GMAC0 through the internal GE PHY and QCA8337 port 5.
- Both radios start with the checksum-corrected Cudy board data.
- The updated regdb raises both radio power limits by 2 dBm.
- The RM551 works in USB2 ECM mode.
- GPIO30 is modem-reset. A rising edge restarts the RM551.
- The BOOTCONFIG-aware sysupgrade path is included.

Base MAC is read directly from the `bdinfo` MTD.
RM551 PCIe mode does not enumerate an endpoint yet.

Installation:

1. Back up all stock partitions.
2. Load the initramfs image through TFTP and boot it from RAM.
3. Check NAND, Ethernet, Wi-Fi, USB, and BOOTCONFIG.
4. Run sysupgrade only after the hardware checks pass.

Sources:

Link: https://redirect.github.com/openwrt/openwrt/pull/21495
Link: https://github.com/eisbaw/ath11k-page-frag-fix
Link: https://forum.openwrt.org/t/ipq5018-support-for-linksys-mx2000-atlas-6-mx5500-atlas-6-pro/164055/244
Link: https://github.com/testuser7/ath_bdf_tool
Link: https://git.codelinaro.org/clo/qsdk/oss/ath11k-bdf/-/tree/NHSS.QSDK.12.4.5
Link: https://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi.git/commit/?id=8fd62901d6bf03f274a49dd0060793cc07dd51b0
Link: https://redirect.github.com/openwrt/openwrt/pull/24653
Link: https://patchwork.kernel.org/project/linux-clk/patch/20260805193638.15327-1-kuncy7@gmail.com/
Link: https://lore.kernel.org/all/20260716-quad-v1-0-636f74da17e1@qti.qualcomm.com/
Link: https://redirect.github.com/openwrt/openwrt/pull/24556
Signed-off-by: Georg Seema <georgseema@gmail.com>
Link: openwrt/firmware_qca-wireless#147
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.

1 participant