12.2. Vendor drivers and HALs¶
Between the SoC hardware documented in SoC platform fabric and the Android framework sits the vendor driver/HAL layer: the loadable kernel modules that init inserts at boot, and the HAL (Hardware Abstraction Layer) services and libraries that expose each device to the framework over hwbinder. The bulk of this layer is domain-specific and lives next to the relevant hardware pages instead of one giant catalogue:
Audio (29 of the 37
.komodules, theaudio.serviceHAL) — Audio drivers and HAL.Wireless (WLAN module, WiFi/Bluetooth HALs, disabled NFC/GNSS/FM/ANT+) — Wireless drivers and HAL.
Sensors (sensors/fingerprint HALs) — Sensor drivers and HAL.
Display (
lcd.ko, composer/allocator/lights HALs) — Display drivers and HAL.Security/DRM (keymaster, gatekeeper, Widevine/ClearKey, cas, qseecom, soter, eSE) — Security and DRM userspace.
This page is the leftover: the loadable modules and HALs that don’t belong to any single domain above, plus the totals for the layer as a whole.
Everything here is from vendor_a.img (lib/modules/, bin/hw/,
lib64/hw/, etc/vintf/manifest.xml) read with 7z, cross-checked
against kernel_config.txt. No code was executed.
12.2.1. Loadable kernel modules¶
/vendor/lib/modules holds 37 .ko files; modules.load gives the
boot insertion order. 29 of the 37 are the audio fabric (Audio drivers and HAL)
and 1 is the WLAN driver (Wireless drivers and HAL); the remaining 7 are
generic SoC/platform plumbing with no single domain home:
Module |
Role / hardware |
|---|---|
|
performance counters for the LLCC system cache (Interconnect — NoC / BCM and the LLCC) |
|
the modem-data (RmNet) steering/perf accelerators for the IPA path (IPA — the networking datapath accelerator, ADSP and CDSP firmware) |
|
the MPEG/DVB demux adapter + hardware demux plugin (media pipeline; largely vestigial on an e-reader) |
|
remote-debug transport to the DSP subsystems (a debug facility) |
Note what is not a module because it is built into the kernel: UFS/ICE and
SDCC (Storage controllers — UFS, ICE, and SDCC), the clock/pinctrl/interconnect controllers
(Clock tree — GCC, domain CCs, RPMh, Pin control — TLMM and the PMIC GPIOs), the GPU kgsl driver
(GPU — Adreno A619, the GMU, and the zap shader), and every Onyx input/display/backlight driver
(Display drivers and HAL, Sensor drivers and HAL).
12.2.2. HAL services and implementations¶
The VINTF manifest (etc/vintf/manifest.xml) declares 58 HAL entries
in total, almost all over hwbinder, realised as ~44 service binaries in
/vendor/bin/hw and ~60 implementation libraries in /vendor/lib64/hw.
Audio, wireless, sensor and display HALs are catalogued on their own pages
(above); security/DRM HALs are in Security and DRM userspace. What’s left is generic
platform plumbing and GPU/media compute:
HAL |
Implementation |
Hardware / cross-ref |
|---|---|---|
(renderscript / neuralnetworks / media) |
|
Adreno A619 + the compute DSP / NPU (GPU — Adreno A619, the GMU, and the zap shader, ADSP and CDSP firmware) |
|
|
Awinic haptic, DCVS/thermal/limits (Thermal management (tsens, zones, mitigation)), charger (PMIC reset timers, charging and reachability), A/B boot-control (Security and DRM userspace) |
Security and DRM HALs — keymaster@4.{0,1}, gatekeeper, the Widevine /
ClearKey DRM services, cas, qseecom / qteeconnector / soter /
tui_comm / esepowermanager (embedded Secure Element power management,
pairs with the disabled NFC HAL in Wireless drivers and HAL) — are catalogued in
Security and DRM userspace. The cas HAL (android.hardware.cas@1.2-service, for
broadcast/streaming Conditional Access) pairs with the mpq-* demux
modules above; both are largely vestigial here.
12.2.3. Present HALs for disabled features¶
As with the SoC-fabric leftovers (Absent and vestigial hardware (reference-base leftovers)) and the
wireless-specific ones in Wireless drivers and HAL, one more HAL ships from the
Qualcomm/vendor reference image for hardware this device does not have —
declared unavailable in android.hardware.onyx_unavailable_features.xml
(The e-ink software stack (Onyx EPDC)) even though the HAL is on disk:
Camera —
camera.qcom.so+com.qti.chi.override.bitra.so(the Bitra-platform CHI) are present; no camera (Absent and vestigial hardware (reference-base leftovers)).
Its presence on disk is reference-image baggage, not evidence of the hardware — the unavailable-features list plus the DTB population settle that question.
12.2.4. Provenance¶
- Source:
artifacts/super/vendor_a.img—lib/modules/{*.ko,modules.load}(module set + boot load order),bin/hw/*andlib64/hw/*(HAL services and implementation libraries),etc/vintf/manifest.xml(HAL declarations);artifacts/boot_a/kernel_config.txt(which drivers are built-in vs modular).- Method:
ext4 image listed/extracted read-only with
7z; modules counted frommodules.load; HALs frombin/hw/lib64/hwnames and the VINTF manifest. No code executed.- Cross-refs:
Audio drivers and HAL, Wireless drivers and HAL, Sensor drivers and HAL, Display drivers and HAL (domain-specific driver/HAL detail), Security and DRM userspace (security/DRM HALs), Interconnect — NoC / BCM and the LLCC (LLCC perfmon), IPA — the networking datapath accelerator (RmNet), Absent and vestigial hardware (reference-base leftovers) (present-but-disabled HALs generally).