Factory firmware ANC coefficients extracted and integrated into OpenPineBuds (2026-04-08).
cargo install –git https://github.com/Ralim/bestool| Region | Address | Size | Content |
|---|---|---|---|
| Bootloader | 0x000000-0x014000 | 80 KB | BES boot ROM, identical L/R |
| Gap | 0x014000-0x018000 | 16 KB | Erased |
| Firmware | 0x018000-0x140000 | 1184 KB | Main firmware, identical L/R, matches factory AC08 |
| Unused | 0x140000-0x3EC000 | 2736 KB | Fully erased |
| NV Records | 0x3EC000-0x3FE000 | 72 KB | BT pairing, config, 116 bytes differ L/R |
| Erased | 0x3FE000-0x3FF000 | 4 KB | |
| Factory Cal | 0x3FF000-0x400000 | 4 KB | “PineBuds Pro” string, BT MAC, 17 bytes differ L/R |
Stored in flash at 0x3EE000. Header: magic=0xDAD1, version=1.
Extracted ANC Coefficients (factory firmware):
| Path | Gain (48k) | Gain (44.1k) | Biquads | Status |
|---|---|---|---|---|
| Feedforward L | 512 | 660 | 8 | Active — full IIR chain |
| Feedforward R | 0 | 0 | 1 (unity) | Passthrough |
| Feedback L | 512 | 512 | 6 | Active — full IIR chain |
| Feedback R | 0 | 0 | 1 (unity) | Passthrough |
| Talk-Through | 0 | 0 | 1 (bypass=1) | Passthrough |
| Music Cancel | 0 | 0 | 0 | Not used |
Key findings:
anc-testing branch (2023): one tester got “pretty good” results with tuned gainsanc-tuning branch: last commit Jan 2026, no mergeconfig/open_source/tgt_hardware.cExtracts ANC IIR coefficients from a bestool flash dump:
# Human-readable summary python3 anc_extract.py backup_left.bin # C header for OpenPineBuds integration python3 anc_extract.py backup_left.bin --c-header > anc_coefs.h
Located in dev_tools/anc_extract.py in our OpenPineBuds fork.
# Backup firmware (CRITICAL — do this first!) bestool read-image --port /dev/ttyACM0 backup_right.bin bestool read-image --port /dev/ttyACM1 backup_left.bin # Flash new firmware bestool write-image out/open_source/open_source.bin --port /dev/ttyACM0 # Serial monitor (2 Mbaud) bestool serial-monitor /dev/ttyACM0 --baud-rate 2000000
VM 120 pinebuds on data (192.168.88.44):
~/gcc-arm-none-eabi-9-2019-q4-major/export PATH="$HOME/gcc-arm-none-eabi-9-2019-q4-major/bin:$PATH" cd ~/OpenPineBuds make -j4 T=open_source DEBUG=1 # Output: out/open_source/open_source.bin (883 KB)
Factory flash dumps stored on: hertz, data, boltzmann, pinebuds VM.
backup_left.bin — md5: 05c0200d73e99633d41d8e757dfc4d6cbackup_right.bin — md5: 0cf360d3a92fcddb39c3f9bf53f3b9fcfactory_AC08.bin — md5: 4d2810bdb6fc32ccea3a034538b3fbf7 (Pine64 download, code only)Phase: Firmware built with factory ANC coefficients. Awaiting flash test on actual hardware.