QCA6174 hw2.1?

Michal Kazior michal.kazior at tieto.com
Mon Mar 16 02:05:20 PDT 2015

On 13 March 2015 at 16:28, Jason H <jhihn at gmx.com> wrote:
>> On 13 March 2015 at 04:39,  <jhihn at gmx.com> wrote:
>> > I went through the archives, and the  wiki but I still wasn't sure...
>> > I have a shiny new Lenovo z70, kernel 4.0-rc1/3.  Dmesg reports failures for loading  firmware in /lib/firmware/ath10k/QCA6174/hw2.1/...
>> > So I found the firmware Git repo,  but it seems to be missing hw2.1. I even symlinked 2.1 to  3.0, no dice.
>> You can't use hw3 firmware for hw2 hardware.
>> The problem is there's no publicly available ath10k firmware for hw2 hardware..
>> > I don't dual boot and this is a laptop  so I'm looking to get  my WiFi working.  Any pointers are appreciated.  Thanks.
>> You could try building hw2 firmware ath10k binary yourself. You need
>> to fetch athwlan.bin from Windows driver, extract otp image from hw3
>> firmware ath10k binary and then re-assemble both into hw3 firmware for
>> ath10k. The ath10k binary blob is a tag-length-value format and can be
>> understood by looking at ath10k_core_fetch_firmware_api_n().
>> Nobody seems to have tried this yet though.
> I installed WINE and attempted to install the driver from lenono on my non-lenovo with working wifi. The install failed (expected) but not before it extracted the actual driver installer images (expected). Parsing through an .inf file, and navigating my way through the sections, I end up at a section specifying eeprom_ar6320_2p1_NFA354xp.bin and qca61x420.bin as the firmware files. I have these files.


eeprom_ar6320_2p1_NFA354xp.bin looks like a board.bin.
qca61x420.bin looks like main program binary.

> However I am now diverging from your instructions considerably. Also I don't know why I would want to reassemble into 3.0 when my system is looking for 2.1?

Typo/mind derp :-) I obviously meant 2.1.

> I don't know what an 'otp image' is? I think I understand the part about the ath10k format though.

OTP is a calibration related program which is run on device before
running main program. It's embedded inside ath10k FW API blob.

> Could you update your instructions to suit the new information at hand?


Here are two simple and crude tools I have to deal with ath10k FW API
blobs. Use with care.

You can use the disassemble.py to extract the otp.bin from hw3 ath10k
FW API blob:

  python disassemble.py < /lib/firmware/ath10k/QCA6174/hw3.0/firmware-4.bin

Then you can use the assemble.py to generate hw2.1 ath10k FW ABI blob:

  mkdir -p /lib/firmware/ath10k/QCA6174/hw2.1/
  python assemble.py killer1252-testfw 0 path/to/qca61x420.bin
path/to/otp.bin 4 > /lib/firmware/ath10k/QCA6174/hw2.1/firmware-4.bin
  cp path/to/eeprom_ar6320_2p1_NFA354xp.bin

(mind the email line wrapping)


More information about the ath10k mailing list