12.1. Firmware-blob inventory (the payloads)¶
The below-userspace documentation describes every firmware loader on this
device: the TrustZone PAS authentication path and its PAS-ids
(Secure world and coprocessors (TZ, HYP, trustlets)), the kernel PIL / subsys framework that
brings up the DSPs and other peripherals (ADSP and CDSP firmware), the
GPU zap/GMU load (GPU — Adreno A619, the GMU, and the zap shader), the IPA microcontroller load
(IPA — the networking datapath accelerator) and the Bluetooth firmware download
(Bluetooth / FM controller firmware (WCN3990 “Cherokee”)). What none of those can show — because the files
live in Android userspace partitions — is the actual payload bits. This
page is the inventory: every firmware blob shipped on the device, where it
lives, and which loader consumes it.
Everything here is read statically from the extracted partition images
(artifacts/super/vendor_a.img) and the raw firmware-bearing partitions
(_READONLY/lun4/{modem,core_nhlos,dsp,bluetooth}_a.bin) with 7z. No code
was executed.
12.1.1. Where firmware lives¶
Qualcomm’s subsys / PIL loader and the kernel request_firmware path
search several mount points. On this device the firmware-bearing partitions are:
Partition |
Mount / raw image |
Holds |
|---|---|---|
|
|
GPU zap+GMU, fingerprint, IPA, camera-ICP, audio-PA config, touch, WLAN config — the peripheral blobs (The /vendor/firmware directory) |
|
|
the base PIL images ( |
|
|
carrier |
|
|
runtime-loadable Hexagon modules (The dsp partition) |
|
|
the QCA Bluetooth firmware (The bt_firmware partition) |
/vendor/firmware also contains the rfs/ symlink skeleton
(rfs/{msm,mdm,apq}/{adsp,cdsp,mpss,slpi,…}/readonly/firmware) that points the
DSPs at their remote-filesystem storage — no payload of its own, just the RFS
plumbing.
12.1.2. The /vendor/firmware directory¶
Blob(s) |
What it is / loaded by |
Loader doc |
|---|---|---|
|
the GPU zap shader — authenticated & run by TZ via PAS-id 13
(the |
GPU — Adreno A619, the GMU, and the zap shader, Secure world and coprocessors (TZ, HYP, trustlets) |
|
the Adreno A619 GMU microcontroller microcode, loaded by the
in-kernel |
|
|
the a6xx CP SQE microcode (the a6xx family shares one SQE image),
loaded by |
|
|
reference-design leftovers for other Adreno parts — unused on the A619 |
|
|
the IPA (IP Accelerator) microcontroller firmware; the
|
|
|
three fingerprint-vendor firmware sets (matching the kernel’s
ChipSailing / MicroArray / Fortsense drivers; |
Pin control — TLMM and the PMIC GPIOs (FP IRQ/reset/CS pins) |
|
the Awinic aw87xxx smart-PA (speaker amplifier) tuning config, used by the audio driver |
ADSP and CDSP firmware (audio fabric) |
|
the Parade touch-controller firmware (PIP2 protocol), flashed by the touch driver |
The e-ink software stack (Onyx EPDC), Pin control — TLMM and the PMIC GPIOs |
|
the camera ICP (Image Control Processor) firmware — unused (no camera) |
|
|
60 GHz WiGig config — unused |
|
|
WLAN driver config + MAC-address file (the WLAN firmware itself is
|
The GPU entries directly confirm the firmware-inventory table in GPU — Adreno A619, the GMU, and the zap shader:
a615_zap (TZ/PAS), a619_gmu.bin and a630_sqe.fw (kernel-loaded) are
all present; the a620/a650 blobs are the unused reference leftovers.
12.1.3. The modem / NON-HLOS partitions¶
The modem partition mounts at /firmware and carries the base PIL images —
the .mdt metadata/hash headers plus their .bNN loadable segments, in the
same TZ-signed MBN/MDT format as the rest of the boot chain
(Secure world and coprocessors (TZ, HYP, trustlets)). /firmware/image holds:
adsp.mdt(+ ~33adsp.bNN),cdsp.mdt,modem.mdt— the audio DSP, compute DSP and modem (MPSS) images, i.e. the payloads for the PIL subsystems described in ADSP and CDSP firmware;npu.mdt,venus.mdt— the NPU and Venus (video codec) images;featenabler.mdt,qwes.mdt— the feature-enabler and Qualcomm Wireless Edge Services images;gptest.mdt,smplap32/64.mdt,soter64.mdt,loadalgota64.mdt— secure test / helper trustapp images;wlanmdsp.mbn(~4 MB) — the WLAN firmware for the integrated WCN subsystem, plus 43 ``bdwlan.*`` board-data files (per-board / per-region RF calibration, selected by board-id).
The separate core_nhlos partition carries the non-HLOS remainder: the modem
carrier-configuration tree modem_pr/mcfg/ (mcfg_hw for
DSDS/SS/CDMA-less variants and dozens of mcfg_sw carrier profiles), a
mirrored WLAN board-data set, and widevine, rtic (Real-Time Integrity
Checker) and version-info blobs. The full carrier mcfg set is present even
though telephony is declared unavailable on this device
(android.hardware.telephony is in onyx_unavailable_features.xml) — inferred
to be reference-design baggage, left dormant for lack of a cellular front-end,
rather than confirmed removed or disabled by any specific flag
(Absent and vestigial hardware (reference-base leftovers), ADSP and CDSP firmware).
12.1.4. The dsp partition¶
The dsp partition (ext4, /vendor/dsp) does not hold base images — it
holds the runtime-loadable Hexagon shared objects that the ADSP and CDSP pull
on demand over fastRPC once they are running:
adsp/— audio codec modules (*DecoderModule.sofor FLAC/ALAC/APE/ Vorbis/WMA/HE-AAC,LdacModule), the Fluence voice-processing suite (fluence_*,smecns/mmecnsecho-cancel/noise-suppression) and sensor modules (sns_*);cdsp/— the compute-DSP runtime (libc++,libsysmon*,libvpp_*video post-processing,libhta_dsp_skelNN offload,libbenchmark_skel).
These are the second stage of the DSP story: ADSP and CDSP firmware
covers bringing the DSP up (the adsp/cdsp PIL images above); these
modules are what runs on it afterward.
12.1.5. The bt_firmware partition¶
The bluetooth partition (FAT, /vendor/bt_firmware/image) holds the QCA
Bluetooth firmware downloaded by the BT driver over the UART/SMD link
(Bluetooth / FM controller firmware (WCN3990 “Cherokee”)): patch/firmware TLVs crbtfw{11,20,21,32}.tlv and
apbtfw{10,11}.tlv with their NV/calibration files crnv{11,20,21,32}.bin
(and crnv32u) / apnv{10,11}.bin — multiple chip-revision variants, the
driver selecting the pair that matches the silicon it finds.
12.1.6. Format and authentication¶
The .mdt / .bNN and .mbn blobs are Qualcomm’s split/combined ELF
firmware format: the .mdt is the ELF header plus the hash-table segment that
TrustZone verifies, and the .bNN files are the individual loadable segments;
a .mbn is the same thing combined into one file. Authentication is a
TZ/PAS action keyed by PAS-id — the mechanism, the signing story and the
test-key situation are all in Secure world and coprocessors (TZ, HYP, trustlets). This page only
locates the files; it does not re-describe the trust model.
12.1.7. Scope boundary¶
This inventory is the payload half of the firmware story; the loader half is the
below-userspace documentation it cross-references. Not covered: the contents of
the signed blobs (they are opaque authenticated images, and the DSP/modem/GPU
firmware itself was not decompiled), the persist calibration
partition, and anything in the system/product partitions that is pure
Android userspace.
12.1.8. Provenance¶
- Source:
artifacts/super/vendor_a.img(the/vendor/firmwaretree, therfsskeleton,lib/modulescensus), and the raw partitions_READONLY/lun4/modem_a.bin(/firmware/imagePIL images,wlanmdsp.mbn,bdwlan.*),core_nhlos_a.bin(modem_pr/mcfg,widevine,rtic),dsp_a.bin(/vendor/dspruntime modules),bluetooth_a.bin(bt_firmwareTLV/NV). Absent-hardware cross-checks fromandroid.hardware.onyx_unavailable_features.xml.- Method:
ext4/FAT images listed read-only with
7z; blobs identified by name, split-segment layout and size. No code executed and no blob contents parsed.- Cross-refs:
Secure world and coprocessors (TZ, HYP, trustlets) (PAS/TZ authentication, PAS-ids), ADSP and CDSP firmware (ADSP/CDSP/MPSS PIL subsystems + audio), GPU — Adreno A619, the GMU, and the zap shader (zap/GMU/SQE), IPA — the networking datapath accelerator (IPA firmware), Bluetooth / FM controller firmware (WCN3990 “Cherokee”) (BT download), Partition map and checksums (partition layout), Absent and vestigial hardware (reference-base leftovers) (unused camera/WiGig/carrier assets), The e-ink software stack (Onyx EPDC) (touch firmware, CONFIG_EXTRA_FIRMWARE waveform).