Table of Contents

PineBuds Pro — ANC Analysis & Open Firmware

Factory firmware ANC coefficients extracted and integrated into OpenPineBuds (2026-04-08).

Hardware

Flash Layout (4 MB)

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

ANC Audio Section (0x3EE000)

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:

Community ANC Status (as of 2026-04)

Tools

anc_extract.py

Extracts 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.

bestool

# 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

Repos

Build Environment

VM 120 pinebuds on data (192.168.88.44):

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)

Backups

Factory flash dumps stored on: hertz, data, boltzmann, pinebuds VM.

Status

Phase: Firmware built with factory ANC coefficients. Awaiting flash test on actual hardware.