
Can a dead TWS earbud be repurposed as a Bluetooth data modem for microcontrollers?
Dead TWS earbuds still have a working Bluetooth receiver + amp — only the battery, buttons, or mic usually fail. So I tapped the analog speaker output and built a 3-tone FSK modem to send data over it.
Signal path:
Phone/PC → Bluetooth A2DP → TWS earbud → analog speaker out → MCU ADC → Goertzel FSK demod → packet + CRC
Key details: TWS output is BTL/differential — do NOT ground the second speaker terminal, it'll short the amp (as did) .
ADC sample rate assumption (8kHz) was wrong. Measured actual rate was 5.8kHz. 3 sparse tones (700/1100/1700 Hz) survive the earbud's bad frequency response better than GGWave's multi-tone scheme, which failed to decode payloads reliably on this path. Built a small packet protocol: preamble, length, payload, CRC-8, end marker. Keeping the A2DP stream open, instead of closing/reopening it, fixed intermittent decode failures.
Results: 95%+ packet success in integration testing. 4/4 packets decoded clean with valid CRC in controlled tests.
~3.2–4.5 bit/s effective payload rate. Not competitive with SPP or a real wireless modem — that's not the point. The point is turning e-waste into a $0 Bluetooth-to-MCU bridge.
Next: testing this with a Bluetooth-less MCU (CH32V003) as the actual receiver. Source: https://github.com/Ishu1519/TWS-A2DP-Mode
Curious if anyone's got a better modulation scheme that survives A2DP codec distortion at a higher bitrate.