Method
Method & legal status
This page states, before any technical content, why this analysis exists, how it was performed, and what was and was not done. It is deliberately precise, because an inaccurate methodology claim is worse than no claim at all.
1. Purpose: understanding and interoperability
The purpose of this work is to understand how live production equipment is built — digital mixing consoles, video switchers, video-over-IP converters, conference systems, installed audio systems and wireless microphone systems — and, where a project follows from that understanding, to obtain the information necessary for an independently created device or program to interoperate with existing equipment.
Concretely, the questions each teardown sets out to answer are:
- Where does the processing actually happen — a general-purpose CPU, a fixed-function DSP, or FPGA fabric?
- What is the real silicon, as opposed to what the marketing implies?
- How is firmware packaged, delivered and validated?
- Is there any part of the signal path a third party could legitimately extend?
- Where a manufacturer sells several models on one platform, what actually differs between them?
The fourth question is the one that motivated the work. Several of our own audio and video processing projects raised an obvious question — could this run on the box itself? — and answering it honestly required knowing what was inside the boxes. Several of the teardowns answered no, and said so.
The fifth question was added when the video switchers were examined, because it is where they differ most sharply from one another. It is a question aboutarchitecture — how many processing cards are in the frame, whether one firmware image serves the whole range — and it is answered from build artifacts in exactly the way the other four are. It is not an analysis of licensing or entitlement, which boundary 1 puts out of scope.
2. How the work was done
In every case the material examined was lawfully obtained and already in our possession: firmware update packages published by manufacturers for their own customers, software installed under a valid licence on our own machines, service manuals, publicly available component datasheets and standards, and — on theeight platforms named below — our own equipment, on our own network.
The techniques used were:
- reading plain-text scripts, configuration files and build metadata;
- extracting string tables and embedded build paths;
- listing and demangling symbol tables and C++ RTTI type names;
- statistical analysis of container files — entropy, byte histograms, index of coincidence, run-length structure;
- disassembling a limited number of functions to establish which offsets are compared against which constants;
- cross-referencing all of the above against manufacturer service manuals and component datasheets;
- controlled diffs through a manufacturer's own editor or offline application: changing exactly one setting, saving again, and comparing the two files;
- on our own equipment only: reading a device's own control interface, and capturing traffic between two devices of ours on a port we mirrored ourselves.
| Platform | Basis of analysis | Hardware involved |
|---|---|---|
| Yamaha QL1 | Three bases, deliberately kept apart. The silicon and firmware findings are static analysis of the V5.91 USB firmware update package, cross-referenced against the published service manual's LSI pin descriptions — no console was opened and none of it has been checked against a machine. The second basis arrived on 2026-08-01: a QL1 and a Rio3224-D2 on our own lab network, captured from a mirrored port, from which the head-amp control path between console and stagebox was decoded — and then confirmed by transmitting a message built from that decoding, which the stagebox accepted and acted on. Nothing measured on the network says anything about the silicon, and the bases are not mixed. The third is the console file: `.CLF` files written by **QL Editor V5.8.1 running offline with no console attached**, with the patch table and the name layout located by controlled diffs — change exactly one thing, save again, compare. | A Yamaha QL1 and a Rio3224-D2 on our lab network, captured from a mirrored port on 2026-08-01 — 11.87 million frames over 183 s — plus one laptop on the same network that transmitted twelve hand-built control messages the stagebox accepted and acted on. Console and stagebox firmware versions were not recorded. The V5.91 firmware teardown is unchanged and remains file-only; no console was opened. |
| Yamaha DM3 | Two methods on two axes. The firmware, silicon and container findings are **static analysis** of the V3.00 firmware package (167 MB) and the macOS DM3 Editor -- file-derived, not bench-checked. The **control-plane findings are bench-measured**: a live session against a real DM3 (firmware V3.00) on 2026-09-15, packet-capturing the Dante and control networks and running the Dante-BabelBox SCP adapter against the desk (reading and writing head-amp gain and phantom, watching the console's own change notifications). The scene-format findings have their own basis and are kept apart from the firmware ones: a record parser derived from a **publicly downloadable Yamaha preset pack** for the TF series, then run unchanged against the factory scenes the DM3 Editor itself ships, and checked against the editor's own parameter descriptors. | Yamaha DM3, firmware V3.00 -- a control-plane bench session on 2026-09-15 (SCP, OSC and YSDP captured; the Dante-BabelBox SCP adapter run against the desk, reading and writing gain and phantom). The firmware/silicon analysis below remains file-derived, not bench-checked. |
| Yamaha DM7 | Static analysis of the public firmware image `DM7_firmware_V1.75.bin` (release V1.75, main system R1.02): a walk of the container format, extraction of the Linux root filesystem and console application, a C++ RTTI type-name census of the stripped application binary, and disassembly of a small number of functions. No hardware was involved and no console was opened. | None |
| Allen & Heath SQ-5 | Static analysis of a single vendor firmware update file, extended into the FPGA fabric itself. No hardware was inspected and nothing here was run on a console. The image was re-obtained in August 2026 and the container format re-verified against it, so every claim below is now re-derivable — an earlier version of this page recorded the image as lost. The fabric work goes bitstream → FASM → netlist → simulator, using Project X-Ray's bit-to-feature database and `fasm2bels`; the parts of that route which touch this console were run end to end, and the general route is described on the [method](/method/) page. | None |
| Allen & Heath Avantis | Static analysis of the V2.01 update package: the unstripped `Updater`, the stripped `Console` Qt binary and the plaintext OS scripts (`detect_sbc.sh`, `set_ssh.sh`, `PartitionCheck.sh`). No hardware inspected. The show-file findings are a separate basis: the factory shows shipped inside **Avantis Director V2.01**, plus controlled diffs taken by running Director offline with no console attached and changing exactly one patch point between two saves. | None |
| Allen & Heath Qu-5 / Qu-6 / Qu-7 | Static analysis of the Qu-7 V1.1.3 (r3931) update .bin and the bundled Qu-5/6/7 update-instructions PDF. No hardware inspected; no bitstream disassembled. The classic Qu-16/24/32 is a separate earlier platform and is not covered. | None |
| Allen & Heath Qu-16 / Qu-24 / Qu-32 (+ Qu-Pac / Qu-SB) | Static analysis of the Qu-32 V1.99 (build 4583) `.QUU` update and the V1.99 release notes. No hardware inspected. V1.99 (Nov 2025) is the final maintenance release; one firmware per model (Qu-16/24/32/Pac/SB). | None |
| Allen & Heath Dante option card (KLANTE) | Static analysis of `QUDante16.q16` V1.0.2 — a SWUpdate cpio whose `sw-description` manifest, `.bit` bitstream header and boot payloads name every component. No hardware inspected. | None |
| Allen & Heath AHM-16 / AHM-32 / AHM-64 | Static analysis of files that ship inside AHM System Manager 1.61 on macOS — the six factory `.cfg` configs from `FactoryConfigs{,16,32}/` — cross-read against Allen & Heath's published *AHM TCP/IP Protocol V1.0*. No AHM hardware was involved: none is available and none is expected, so every method has to work from files alone. The firmware images in the System Manager bundle have not been opened. Protocol behaviour was exercised only against our own simulator built from the same published document, which demonstrates self-consistency and not hardware compatibility. | None |
| Midas HD96 | Static analysis of the public 2.4.0 firmware bundle — a signed APT repository plus Yocto board images. No hardware was inspected. The bundle was retained, so every claim here re-derives from it. Two protocol schemas were recovered whole: the Thrift RPC from shipped generated Python, the Protobuf bus from descriptors embedded in a shared library. | None |
| Behringer WING Compact | Static analysis of a vendor firmware image, plus published datasheets and standards. No hardware has been acquired, so every hardware row is provisional and marked accordingly. A written clean-room policy governs the project. | None |
| Waves SoundGrid | Static analysis of vendor-distributed binaries and configuration files already present on a machine holding a licensed installation. No Waves source code, NDA material or SDK was involved. Techniques: reading plain-text scripts, demangling C++ symbol and RTTI tables, extracting strings, and disassembling a small number of functions in the GPL kernel module. | None |
| Violet Audio dMix 128 | Static analysis of the single `dmix128_1.2.3.7045c05.dmixfw` update package — parsing the installer ELF, decrypting and unpacking its payload, reading the resulting package control metadata, the mypyc-compiled Python driver layer, the FPGA register-map JSON and the bitstream headers — cross-checked against the vendor's front-panel photo. No console was involved and no hardware was inspected. | None |
| Allen & Heath dLive | Inspection of the seven factory shows shipped inside **dLive Director V2.11**, compared structurally against the Avantis shows the same work covers. Nothing else: no firmware package was obtained, no hardware was inspected, and none of the Avantis findings has been re-derived on a dLive file. | None |
| Behringer / Midas X32 / M32 | Static analysis of one public firmware update image, `dcp_corefs_release-4.13-20240415.update` (release 4.13, 2024-04-15), plus the published release notes. No hardware was involved and no console was opened. Findings were then cross-checked against the OpenX32 project's published material, which is written by people who do have the hardware — that cross-check corrected three claims and is recorded in the traps below. The scene-file findings come from a separate basis: `.scn` files read directly, with the enumerations settled by falsification against a known-good fixture rather than by finding a table. | None |
| Analog Way Midra series | Two bases, deliberately kept apart. The silicon findings are static analysis of one vendor updater package, cross-read against the vendor's own control client — no unit was opened, and the package's own manufacturer update log from a real PLS350 is their observation of a live machine, not ours. The control-plane findings are not file-only: the client's AVM2 bytecode was decompiled and its variable-table constructor replayed to reconstruct the whole control model, and on 2026-08-06 a real Pulse2 on our LAN was read and written through our own client, with RCS2's own session against it captured through a logging proxy. | One Midra-series Pulse2 (`DEV` 259, serial 2165, version 13) on our LAN, read and written over its control port through our own client on 2026-08-06. The updater teardown is unchanged and remains file-only; the unit was never opened. |
| Analog Way LiveCore | The vendor update packages are AES-encrypted and were not decrypted. The architecture findings come instead from the vendor's own simulator appliance, whose second disk is an ext4 image of the device filesystem — read without mounting — carrying the platform's variable, enum and dimension model as JSON plus its Lua policy layer. The control-plane findings came later and differently: the Flash client the device serves was lifted out of that same image and decompiled, exercised against a simulated NeXtage 16 booted under QEMU, and then confirmed on a real NeXtage 16 on our LAN on 2026-08-06. No unit was opened and nothing about the cards was measured. | One NeXtage 16 (LiveCore V04.02.20, `PDEV` 97) on our LAN, read and written over its control port through our own client on 2026-08-06. The card silicon, the appliance-derived model and the encrypted update packages are unchanged and remain file-only; the unit was never opened. |
| Analog Way LivePremier / Aquilon | Two bases, deliberately kept apart. The architecture findings are static: the vendor update package is AES-encrypted and was not decrypted, and what is known comes from the vendor's simulator, which bundles eleven complete device software trees whose web interface shipped **unminified with its source comments intact**, including a generated file documenting 387 internal enumerations. Since 2026-08-20 there is a second basis: a physical Aquilon C on our LAN, read over the documented AWJ control protocol and over the undocumented WebSocket its own front end uses, and later driven through a full write chain with every touched value restored. Rows labelled measured came off that unit. Every claim about the card silicon, the update package and the other ten firmware trees is still file-only. | One Aquilon C (`NLC_C`, serial GL0612, firmware 6.2.73) on our LAN. Read read-only over AWJ on 2026-08-20 and 21, then driven end to end — a fader move through to an opacity write, a take, and the preset flip that follows it — with the state captured beforehand and all 87 touched values verified restored afterwards. The card silicon, the encrypted update package and the eleven bundled firmware trees are unchanged and remain file-only; the unit was never opened. |
| Blackmagic Design ATEM (switcher family) | Static analysis of the macOS ATEM Setup 10.2.1 installer (January 2026). Its `Contents/Resources` holds 43 firmware packages plus per-language sub-packages, each a custom container keyed by the device's USB product ID under Blackmagic's vendor ID `0x1EDB`. The container was reversed from scratch; older payloads decompress to raw images that self-identify, and the published Switchers SDK headers supplied the control-model vocabulary. No hardware was inspected and no encrypted payload was decrypted. | None |
| Shure MXCW | Static analysis of the 7.1.3, 7.1.4 and 7.3.0 firmware packs for all three devices, obtained through Shure Update Utility, read against Shure's own *MXCW Command Strings* and *MXCW User Guide* publications. The application payloads are encrypted and none was decrypted; the readable findings come from the pack containers, the plaintext FPGA bitstream, and the charging station's unencrypted web application. No hardware was inspected and no frame of the control protocol has been observed on a wire. | None |
| BirdDog NDI converters (Studio / Flex / 4K / PLAY) | Two bases, deliberately kept apart. The range-wide silicon inventory is static analysis of twenty firmware packages published on BirdDog's own unauthenticated download pages, 2020–2025, plus the RKFW recovery image for PLAY. Everything labelled *measured* was then read off **one running PLAY on our bench** (unit `.42`, firmware 1.0.30) — the first entry in this index with any hardware behind it. No unit was opened, no FPGA model was ever powered, and every claim about Studio, Mini, Flex and the 4K family remains file-only. | One BirdDog PLAY (firmware 1.0.30) on our bench, running our own code. The FPGA models are file-only. |
| Shure QLXD4 | Passive packet capture of a real QLXD4 mounted on a real QL1 on our lab network, across four sessions: the receiver mounted and idle, its AF output level driven from the console's own encoder, a power-cycle spanning the full session setup, and a run with a transmitter switched on partway. Decoded with a hand-written parser checked byte for byte against Wireshark's own ACN dissector, which decodes these packets natively — where the two disagreed on vector names, Wireshark won. No firmware was analysed, the receiver was never opened, and not one packet was ever transmitted to it. | One Shure QLXD4 receiver (named `House 1`, channel `Head 6`, on 606.700 MHz) mounted on our QL1 and captured from a mirrored port on 2026-08-01. Nothing was ever transmitted to the receiver: every finding is passive observation of a console and a receiver talking to each other, plus one read-only request that went unanswered. No firmware was obtained and the unit was never opened. |
| Sennheiser evolution wireless G3 (EM 300 / EM 500 G3) | Two bases, kept apart. The wire protocol was reconstructed from packet captures of Wireless Systems Manager 4.9.0 talking to the receiver, and everything labelled *measured* was then read back off the **running EM 500 G3** — discovery, the config packet, the tuning limits, the preset-bank tables, the live RF meter and the analog-output level — with every write confirmed by reading it back, and the AF-out control proven end-to-end by driving it from a real DM3. The *public* rows come from Sennheiser's own TI 1254 document, which describes the *other*, unused protocol. Nothing was decapped or dumped; the receiver's own firmware was never read. | One Sennheiser EM 500 G3 rack receiver (band G, 606–648 MHz) on our bench, driven from a real Yamaha DM3 through our own bridge. Every measured row was read off that receiver; the G4, 2000-series and SR IEM variants are inferred from the shared protocol, not tested. |
On all but eight of the platforms above, no device has ever been opened, connected to or modified — the third column says so per platform, and where it says None every finding on that page came out of a file. Nothing on this site should be relied on for a repair, a modification or a purchasing decision.
The exceptions are recorded rather than glossed over, because they change what the findings are worth: Yamaha QL1, Yamaha DM3, Analog Way Midra series, Analog Way LiveCore, Analog Way LivePremier / Aquilon, BirdDog NDI converters (Studio / Flex / 4K / PLAY), Shure QLXD4 and Sennheiser evolution wireless G3 (EM 300 / EM 500 G3). On those platforms we own units and have read, driven or captured them with our own tools, so some rows carry a fifth confidence label — Measured — meaning the figure was read off a live device rather than inferred from an image. Everything else on those pages is still file-derived and still labelled accordingly. Buying a unit does not retroactively verify the static analysis.
3. Two terms, used precisely
Two terms are commonly attached to work of this kind. Neither accurately describes most of what is published here, and neither is claimed loosely.
This is not black-box analysis
Black-box analysis means observing only a system's external behaviour — packets on the wire, inputs and outputs — without inspecting its internals. The findings here come substantially from inspecting vendor binaries. Calling that black-box would be false.
One entry is the exception, and says so on its own page. The Shure QLXD4 page is entirely packets on the wire: no firmware was obtained, nothing was inspected, and not one packet was ever transmitted to the receiver. That page is black-box work by the definition above, and it is labelled throughout as observation rather than derivation.
This is not, in general, clean-room analysis
"Clean room" is a specific organisational control: one team examines the original and writes a specification containing no expressive material from it, and a second team — which has never examined the original — implements solely from that specification. Where no implementation exists, no such separation has been established, and no clean-room claim is made. The one project that doescontemplate an implementation operates under a written clean-room policy, described in §7.
4. What is claimed instead
- Analysis of lawfully obtained, vendor-distributed binaries and documentation, performed to extract the ideas, functional interfaces and interface specifications necessary to understand the platform and to achieve interoperability — together with observation of equipment we own, on our own network. Under both EU and US law those elements are not themselves protected by copyright.
- No manufacturer source code was seen, obtained or used. No NDA, developer agreement, OEM agreement or SDK was in effect or relied upon. No confidential material of any kind was accessed.
- No manufacturer code is reproduced. These pages record facts about silicon, wire formats, constants, identifiers and structure. Where a vendor identifier is quoted — a symbol name, a build path, a numeric constant — it is quoted as a factual finding, in the minimum amount required to describe the interface, and not as copied expression.
- No firmware, binary or manual is redistributed. Artifacts are referenced by filename and version only. Nothing on this site will help anyone obtain manufacturer software they are not already entitled to.
5. Scope boundaries
These are hard boundaries, not preferences.
- No analysis of licensing, authorisation, entitlement or DRM.
If such a mechanism is encountered, analysis stops and the finding recorded is only that it exists and roughly where. This happened on one platform in the index, and the analysis stopped there. Interoperability exceptions are broad; anti-circumvention exceptions are not, and the two must never be conflated.
- Nothing that enables unlicensed use of any product.
No key algorithms, no entitlement bypasses, no methods for obtaining paid features without paying for them.
- No exploits, and no modification instructions.
Where a page records that a platform validates firmware with a CRC and no signature, that is a structural fact about its architecture — the same class of fact as which SoC it uses. It is not a vulnerability disclosure, and no bypass, forged image or circumvention technique is published here.
- No redistribution of manufacturer material.
No firmware images, no extracted binaries, no scanned manuals, no artwork. Analysis tooling in our own repositories takes the path to an image from an environment variable and ships no image.
- Nothing sourced from another project's code under an incompatible licence.
Where prior open-source work exists on a platform we are building on, its source is treated as off-limits and its factual claims are re-derived from datasheets or our own measurements. Where that policy was breached before it existed, the affected facts are marked unconfirmed rather than quietly kept.
6. Legal basis
Reverse engineering for interoperability is expressly protected in the jurisdictions that matter here. What follows is a summary of the basis on which the work proceeds. It is not legal advice, and any project moving to commercial release should take its own.
| Instrument | Effect |
|---|---|
| EU — Directive 2009/24/EC, Art. 6 | Reproduction and translation of a program's code is permitted without authorisation where indispensable to obtain the information necessary to achieve interoperability of an independently created program, provided the information is not otherwise readily available, the acts are confined to the parts necessary, and the information is not used for anything else.Art. 8 makes this right non-waivable by contract. |
| EU — Directive 2009/24/EC, Art. 5(3) | A lawful user may observe, study and test the functioning of a program to determine the ideas and principles underlying it. |
| US — 17 U.S.C. §1201(f) | Circumvention, and the development of means to do so, are permitted for the sole purpose of achieving interoperability of an independently created program. Note the narrowness: this covers interoperability, not access to protected content or entitlement systems — which is whyboundary 1 exists. |
| US — case law | Sega Enterprises v. Accolade (9th Cir. 1992) andSony Computer Entertainment v. Connectix (9th Cir. 2000) establish intermediate copying for the purpose of extracting unprotected functional elements as fair use. |
| Subject matter | Interface elements are not protectable. Wire formats, protocol constants, EtherType values, message identifiers, register layouts and part numbers are functional requirements for interconnection, not creative expression. |
Samba, WINE, ndiswrapper and a long list of comparable projects rest on exactly this basis.
7. The clean-room control, where an implementation is contemplated
Most of this index is documentation with no implementation attached. One project is different, and it carries a written policy that binds the repository:
- Specification phase. Analysis of vendor artifacts produces a specification stated in terms of observable behaviour: byte layouts, constants, state machines, timing. It records no source code, no decompiled output, and no algorithm expression copied from a binary.
- Review gate. Before handoff the specification is reviewed for anything expressive rather than functional, and such material is removed or restated.
- Implementation phase. Implementation proceeds from the specification alone, by a person or agent that has not examined the vendor binaries, with that separation recorded.
- Provenance record. Every implementation commit traces to a specification clause, and every clause traces to the evidence that produced it.
Until step 3 has actually been performed and recorded, no clean-room claim is made about any code. Where source material from an incompatibly licensed project was read before that policy existed, the fact is recorded openly and every parameter tracing to it is marked unconfirmed until independently re-derived.
8. Confidence labelling
Every technical claim on this site carries one of four labels. They are used strictly, and a claim without evidence does not get promoted because it sounds likely.
| Label | Meaning |
|---|---|
| Measured | Read off a running unit we own, on our own bench — a number from a live device rather than from a file. It outranks Verified because it is the only label that cannot be produced by static analysis alone, and it appears on the small number of platforms where hardware was actually in our hands. |
| Verified | Read directly from an artifact — a constant in a disassembly, a literal in a script, a symbol in a table, a part number in a service manual. Not dependent on interpretation. |
| Inferred | A reading of verified evidence that is well supported but not directly stated. The reasoning is given, and so are the competing readings. |
| Unknown | The artifacts show it exists, but its content, layout or semantics have not been determined. |
| Public | Taken from a datasheet, standard, service manual or the manufacturer's own published documentation. No analysis was needed. |
Each platform page also carries a Traps section recording mistakes the analysis actually made. They are published because each one produces a plausible-looking wrong answer rather than an obvious failure — which makes them more useful to a reader than the findings that went smoothly.
9. Trademarks and affiliation
All manufacturer and product names on this site are the trademarks or registered trademarks of their respective owners. They are used here foridentification only — nominative use, in a factual description of the products they name.
Stoatworks Labs is not affiliated with, endorsed by, sponsored by, or acting in cooperation with any manufacturer named on this site. Nothing here is an official source of information about any product, and no manufacturer has reviewed it.
Opening any of this equipment, modifying its firmware, or connecting unapproved devices to it will in all likelihood void its warranty and may render it unusable. Nothing here is a recommendation to do any of those things.
10. Corrections
This is research, and research has errors in it. Some claims here rest on a single artifact; at least one platform's source image is no longer in our possession and its findings currently cannot be re-derived. That is stated on the page rather than hidden.
If you are a manufacturer, an engineer, or anyone else who can show that something on this site is wrong, we want to fix it — and a correction from someone who actually built the thing is worth more than any amount of static analysis. Corrections are published, not quietly edited away.
Contact: stoatworks-labs.com.