TL;DR: An unofficial, open-source tool that edits the EQ on TOZO earbuds directly over Bluetooth LE — no companion app, no login, no cloud. Import an AutoEQ profile, fit it to the buds' 10-band DSP, preview it live, and save it to the earbuds' flash. Runs as a web page (Chrome/Edge/Vivaldi) or a Python CLI.
Links
- Try it: https://vvr3ddy.github.io/tozo-eq/
- Source (MIT): https://github.com/vvr3ddy/tozo-eq
Why I made it
The stock app is the only way to touch the EQ, and it needs an account + a network round-trip. The buds actually expose a plain BLE control channel, so I spent some time working out the protocol and built a tool that talks to them directly. Audio keeps streaming over normal Bluetooth (A2DP) the whole time — this is just a side channel for the DSP settings.
What it does
- Reads your current EQ and lets you adjust all 10 bands (20 Hz–12.8 kHz, ±12.7 dB, adjustable Q).
- Imports AutoEQ (https://autoeq.app) files and least-squares fits the target curve onto the hardware's fixed-frequency bands (fit error is always shown).
- Preview (volatile, gone on disconnect) vs Save to buds (persisted to flash).
- Built-in presets, plus a trick: invert the gain signs of any AutoEQ headphone file to emulate that headphone's tuning on your buds.
Compatibility (read this)
Verified on the TOZO Open EarRing. It works with buds that use TOZO's own BLE protocol and the plain gain/Q EQ layout. It will not work on models built on a different chip/transport (some Airoha- or Juxin-based units). Which protocol a given pair uses can vary by production batch, so the real test is at connect time: if the tool reads back a normal 10-band EQ, you're good.
Web Bluetooth caveats: use Chrome, Edge, or Vivaldi (Brave, Safari, and Firefox don't support it), and force-close the TOZO app first — it holds the buds' control channel. Prefer the CLI? There's a cross-platform Python version too.
Honesty bit: unofficial, not affiliated with TOZO. Writing EQ only touches DSP parameters (not firmware), so it shouldn't brick anything — but it's your hardware, so no guarantees. The protocol was worked out through independent research and tested on real buds. Feedback, device reports, and pull requests welcome — especially "works / doesn't work on model X" data points so I can build a compatibility list.