Ipq4019: help choosing QCA BDFs (boarddata files)


the WHW03 is a ipq4019 device with 3 wlan interfaces. it comes in 2 variants, V1 and V2. both variants share the same firmware source, so each firmware has BDFs for V1 and V2. i am only interested in V1, the device i am porting openwrt to.

the BDFs in the stock firmware are here:

  • IPQ4019 has two wlan interfaces, 2.4 and 5 GHz.
  • QCA9888 has one 5GHz wlan.

Q1. i suppose i need to extract one BDF per interface. i guess i'll just extract the FCC versions. or should i do otherwise?

Q2. IPQ4019 is fine because its FCC contains only 1 file per wlan interface (the other 2 files are links to the same files). however QCA9888 is problematic. its FCC contains two different files: one is boardData_2_0_QCA9888_5G_Y9690_SBS_HB.bin, the other boardata_N.bin (actually 3 identical copies of the same file). so which file should i pick for inclusion in openwrt?

i had captured a stock bootlog when i started the port, however i seem to have lost it. because i repartitioned the device, going back to stock is a nuisance. i'd like to avoid it if possible.

Q3. QCA BDF tools and driver calculate the CRC32 of files. but unfortunately the CRC32 they use is not the same as the crc32 linux command. anyone knows of a tool i can use to calculate QCA's version of CRC32 for a file? i know ath10k-bdencode --info shows CRC's, but only for board-2.bin files. how can i calculate the CRC32 of these extracted BDFs?


i have verified that QCA does NOT use CRC-32c (polynomial code 0x11EDC6F41) as defined in:

"Optimization of Cyclic Redundancy-Check Codes with 24 and 32 Parity Bits",
G. Castagnoli, S. Braeuer and M. Herrman,
IEEE Transactions on Communications, Vol. 41, No. 6, June 1993

and implemented in:

more info:


QCA generates CRCs using the linux kernel's crc32_le function:
u32 __pure crc32_le(u32 crc, unsigned char const *p, size_t len);
(which appends to an existing crc) and invokes it as follows:
crc32_le(0, buf, buf_len)

it also uses this python incantation to calculate the same result:

they also provide a command to calculate CRCs of files:
ath10k-fwencoder --crc32 $FILE