0xreversed/with.ai
Firmware and hardwareWorksSource available
Target: FNIRSI FNB48 USB power meter

Rebuilt a FNIRSI FNB48 power meter's Bluetooth app as a web page by having Claude Code disassemble the APK

FNIRSI FNB48 USB power meter: A USB power meter that works again, from a browser tab.
Image: GitHub (CapnBry/fnb48-web)

What was done

Claude Code disassembled the old Android app of the FNIRSI FNB48 USB power meter to recover its Bluetooth protocol, which now drives a browser frontend and a command-line logger.

CapnBry replaced the Android app of his FNIRSI FNB48 USB power meter with a Web Bluetooth page, because the old app no longer worked on his phone. The README says all of the work came from Claude Code disassembling the APK to recreate the specs and implement them.

How it was done

Claude Code worked from the old app, FNIRSI Bluetooth APP v1.0, and recovered its Bluetooth commands and checksum code. The result is written up in PROTOCOL.md as a reverse engineered protocol, verified against a live FNB48. The write-up also explains why the original app connects but shows no data on newer phones. The meter's Bluetooth module breaks the usual MTU rules, so Android's service discovery returns nothing. The web app works around this by reconnecting after a short delay.

Results

The page shows live voltage, current and power at 0.1 mV and 0.1 mA resolution, plus temperature, D+ and D-, and the detected fast-charge protocol. It can switch energy groups, trigger fast-charge modes, set alarms and record to CSV. It installs as a phone app, and a Python script logs readings with bleak. The same app also handles the FNB38 and FNIRSI C1, which probably use the same protocol, but only the FNB48 was checked.