Recently bought a J7-C USB tester to measure charging voltage/current.
It also features Bluetooth interface to connect to Android apk or PC app for data logging.
But I'm a little squirmish about side-loading application from a dubious mediafile folder.
Luckily, I've found some discussion regarding the Bluetooth protocol on Arduino forum USB Digital Tester (BT) Protocol
After a little experiment and reverse engineering, I've found that my device seems to output the data in a slightly different format. Once we open the Bluetooth serial port, it will send a 36-byte packet every 1 second. Example packet received:
ff 55 01 3 00 01 f4 00 0 34 00 0f fa 00 0 8 52 00 09 00 0a 00 20 00 03 2c 18 3c 0c 80 00 00 03 20 00 9e
Comparing the the info from the Arduino forum, it seems the packet format is still mostly similar but slightly offset as below:
| Offset | Data Byte | Multibyte hex | Value | Data Type |
|---|---|---|---|---|
| 0 | ff | |||
| 1 | 55 | |||
| 2 | 01 | |||
| 3 | 03 | |||
| 4 | 00 | 0001f4 | 5.00 | voltage |
| 5 | 01 | |||
| 6 | f4 | |||
| 7 | 00 | 000034 | 0.52 | current |
| 8 | 00 | |||
| 9 | 34 | |||
| 10 | 00 | 000ffa | 4090 | mAh |
| 11 | 0f | |||
| 12 | fa | |||
| 13 | 00 | 00000852 | 21.30 | energy, Wh |
| 14 | 00 | |||
| 15 | 08 | |||
| 16 | 52 | |||
| 17 | 00 | 0009 | 0.09 | D+ voltage |
| 18 | 09 | |||
| 19 | 00 | 000a | 0.1 | D- voltage |
| 20 | 0a | |||
| 21 | 00 | 0020 | 32 | CPU temperature (celcius) |
| 22 | 20 | |||
| 23 | 00 | 00 | 03:44:44 | duration day:hh:mm:ss |
| 24 | 03 | 03 | ||
| 25 | 2c | 2c | ||
| 26 | 18 | 18 | ||
| 27 | 3c | |||
| 28 | 0c | |||
| 29 | 80 | |||
| 30 | 00 | |||
| 31 | 00 | |||
| 32 | 03 | |||
| 33 | 20 | |||
| 34 | 00 | |||
| 35 | 9e |
It does not seems to provide power value but we can easily calculate power P = V x I
So, I've written a simple python script to read the data and save it as CSV file so that it can be processed by other apps such as Excel or LibreOffice.
Here's the steps:
- Connect to the bluetooth serial port.
- Run
python3 j7-c_usb_tester.py --csv out.csv /dev/rfcomm0for Linux or replace/dev/rfcomm0with COM port on Windows. - Press Ctrl-C to exit after you are done logging the data.
I've recorded the measurements when charging my OnePlus phone with the 65W SuperVOOC charger in supervooc_2022-09-03_131744.csv.
Using LibreOffice to open the CSV file, I've plotted the charging curve as below:


