$ whoami
William Ho — Computer Engineering @ Cal Poly San Luis Obispo
$ cat focus.txt
I build firmware that makes hardware play hi-res sound —
multi-codec Bluetooth audio, real-time DSP, and the occasional
reverse-engineered codec running bare-metal on an ESP32.
$ ls ~/interests
hardware/software boundary low-latency wireless audio embedded DSP- Now — multi-codec A2DP firmware for the ESP32 family: LDAC, aptX / HD / LL, LHDC V5, AAC, Opus, LC3plus, SBC
- Depth — real-time DSP: equalizers, bass boost, level meters, clock sync, packet-loss concealment
- Reach — Android companion apps (Kotlin / Flutter) that drive it all over BLE — EQ, codec selection, OTA, live visualization
- Learning — ESP-IDF internals, FreeRTOS scheduling, and squeezing hi-res codecs onto internal SRAM
I reverse-engineered the proprietary LHDC V5 hi-res Bluetooth codec — digging through binaries until it became a working decoder that runs on an ESP32, wired straight into the A2DP audio pipeline. A microcontroller playing hi-res audio nobody documented. 🎧
Languages C · C++ · Kotlin · Dart
Embedded ESP-IDF · FreeRTOS · Arduino · CMake
Wireless Bluetooth A2DP / BLE GATT · ESP-NOW
Codecs LDAC · aptX HD/LL · LHDC V5 · LC3plus · Opus · AAC · SBC
DSP 3-band EQ · Bass Boost · Level Meters · PLC · Clock Sync · Adaptive Buffering
Mobile Android (Kotlin) · Flutter
Tooling Git · Android Studio · Logic / Signal Analysis
| Project | Stars | What it is |
|---|---|---|
| 🎚️ ESP32-S31-A2DP-Codecs | Multi-codec A2DP sink on ESP-IDF v6.1 — LDAC, aptX/HD/LL, LHDC V5, Opus, LC3plus, AAC, SBC — all on internal SRAM | |
| 🔊 esp32-a2dp-sink-with-LDAC-APTX-AAC | A2DP audio sink with BLE GATT control, DSP, level meters and LDAC | |
| 🎵 ESP32-A2DP-SINK-WITH-CODECS-UPDATED | A2DP sink with LDAC, aptX, aptX-HD & AAC codec support | |
| 🎼 LHDC-V5-Decoder | Reverse-engineered LHDC V5 decoder, integrated into the ESP32 A2DP pipeline | |
| 📱 BDK-AUDIO-APP | Android control app — DSP/EQ, codec selection, LED effects, OTA over BLE | |
| 🖥️ NVFLASH | Patched NVFlash supporting RTX 50-series GPU BIOS flashing |
🛠️ Most recently pushed to LHDC-V5-Decoder on 2026-07-22
LHDC V5 Decoder For ESP32's A2DP Integration
C
· auto-updates via GitHub Actions ·

