inMusic Kernel Modules
Almost everything in /usr/lib/modules/[kernel]/kernel is stock mainline Linux. Across every 5.0.4 firmware I can unpack, only seven modules are inMusic's own, and all seven are audio drivers.
They ship as unstripped ELF relocatable objects with intact symbol tables, so they load into Ghidra with every function already named. There's no DWARF debug info in any of them.
Where to find them
Every RK3288 device reports ID=az01 in /usr/lib/os-release and runs the same kernel, so the same six modules ship across the whole platform. There's no need to pull them per device. Confirmed on the 5.0.4 firmware for the Prime 2, Prime 4, Prime 4 Plus, Prime GO, Prime GO Plus, SC5000, SC5000M, SC6000, SC6000M, SC Live 2 and SC Live 4.
Platform | Path |
|---|---|
|
|
|
|
Module Overview
Module | Description | Role | License | Size | Funcs |
|---|---|---|---|---|---|
| InMusic JP07 ASoC codec driver | Codec |
| 16.8 KB | 10 |
| InMusic JP07 machine ASoC driver | Machine |
| 17.5 KB | 10 |
| InMusic NH08 ASoC codec driver | Codec |
| 12.4 KB | 7 |
| InMusic NH08 machine ASoC driver | Machine |
| 8.8 KB | 10 |
| TAS5805M audio amplifier driver | Amplifier |
| 24.0 KB | 25 |
| ETA5805 Audio Amplifier Driver | Amplifier |
| 13.6 KB | 13 |
| inMusic AZ04 ASoC codec driver | Codec |
| 13.5 KB | 5 |
Authorship
Every one of these is by the same person, and the address changes between platform generations:
Modules | Author |
|---|---|
All six |
|
|
|
Metanate is a UK software consultancy, so the AZ01 work looks like it was contracted out, with the newer AZ04 driver written in-house.
Two of the codecs leak their in-tree source paths in assertion strings:
Vermagic
vermagic has to match the running kernel exactly or insmod refuses the module, so these are only loadable on their own firmware's kernel.
Platform |
|
|---|---|
|
|
|
|
Note mod_unload is only set on AZ04 - on AZ01 module unloading is compiled out.
Device Tree Aliases
This is the most useful part of the metadata. Rather than one driver per product, there are two codec/machine pairs whose of_match tables cover the entire fleet.
snd-soc-inmusic-jp07 (codec)
snd-soc-rockchip-inmusic-jp07 (machine)
snd-soc-inmusic-nh08 (codec)
snd-soc-rockchip-inmusic-nh08 (machine)
Amplifiers and AZ04
Undocumented Hardware IDs
The of_match tables name five hardware IDs that don't appear anywhere else in this repository, in any DTS or on any Brands page:
Hardware ID | Notes |
|---|---|
|
|
| Unknown prefix, not seen elsewhere |
|
|
| Unknown prefix, not seen elsewhere |
| Uses the |
JP12, NH09, and HG08 are also in these tables and are mentioned elsewhere in this repository, but I have no DTS for either.
Device Tree Properties
The machine drivers read these properties from their sound node:
Property | Used by | Meaning |
|---|---|---|
| Both pairs | Phandle to the I2S CPU DAI |
|
| Phandle to the codec |
|
| Phandle to the primary codec |
|
| Phandle to the speaker amplifier |
|
| Clock master/slave selection |
|
| GPIOs for sample rate clock select |
The jp07 machine driver also selects between codec-clk-master and codec-clk-slave pinctrl states.
The codecs take mute, reset and enable GPIOs. On AZ04 the codec additionally reads its whole DAI capability set from the device tree, via inmusic,playback-channels, inmusic,capture-channels and inmusic,pcm-rates.
Extracting Them
Unpack the firmware per Extracting, then:
modinfo works fine on a foreign-architecture module, so this can run on your desktop.