the sorcery of copper

User Tools

Site Tools


This is an old revision of the document!

The U2 is a USB power meter and tester.



It is full of features and makes it the most complete USB power meter I known of:

  • wide voltage and current range, with high precision: 0-24 V DC @ 0.00001 V, -5-5 A @ 0.00001 A (covers all standardized USB voltages and currents)
  • multiple USB inputs (USB 3.1 type-A plug, micro-USB, USB-C) and outputs (USB 3.1 type A socket, USB-C)
  • large (1.77 in / 4.5 cm) clear (can use large fonts) LCD screen (160*128 pixels)
  • can detect charger compliance/profile: Apple (5V @ 2.4A, PD), Samsung (5V @ 2.0A, AFC), USB Battery Charging (BC1.2 DCP), Qualcomm Quick Charge (QC 2.0, QC 3.0), USB Power Delivery (PD 2.0, PD 3.0, E-Marker), Huawei (FCP, SCP), MTK (PE1.1, PE2.0), OPPO (VOOC, DASH, Super, FLASH)
  • external power input: to not affect the current measurement, the device can be powered using the micro-USB HID plug. This also allows to measure voltages under 4 V (the minimum required if you power using the normal USB port)
  • computer interface to read the measured values: USB HIB (micro-USB port which also can externally power the device), and Bluetooth (U2p version)


The manufacturer is called WITRN. The device was first called WEB-U2, but now they registered the trademark/brand Qway to fight piracy.

You can buy the device from the official store witrn on taoboa. The software also points to the probably authorized re-seller GUZt.
The manual warms about the clones from ATORCH.

The official website is rather empty. It only points to the user guide and software (with broken link).
Instead they recommend to follow the QQ group 313755927.

Here links I could gather to get the latest version of:

There is also this thorough review and another with a lot of information in the comments.


There are several versions of the hardware.

WITRN U2 104083

This is the first device I bought from the HiDANCE store, and seems to be a clone.

The original manufacturer blocked this device. After flashing firmware version 5.5, the display would just show 104083 ERR, and the device would not work anymore. Moreover it was not possible to re-flash it anymore. Thus don't install firmware version 5.5 of later if you have a device with serial 104083, else you will brick it. Software version 4.0 or later also do not work with this device. You need to use version 3.0.
This device can still be used to measure voltage and current, but since there is no update anymore it will not be able to be used to detect charger profiles.

There is also a footprint for an Bluetooth adapter behind the screen, but it was not placed yet (the software was probably not ready).

I read out the FRAM (where the settings are stored) but did not find the serial number in there. I also cleared it to confirm the serial is not stored in the FRAM, but in the firmware. Sadly the firmware is read protected.

Debug header pinout:

__|8 6 4 2|
|9 7 5 3 1|
  1. SWDIO (SWD, STM32F072 pin 34/PA13)
  2. SDA (I²C, with FRAM at 0x50)
  3. SWCLK (SWD, STM32F072 pin 37/PA14)
  4. GND
  5. GND
  6. VDD
  7. VDD
  8. SCL (I²C, with FRAM at 0x50)
  9. nRST (SWD, STM32F072 pin 7/NRST, you must connect under reset since SWD is disable after boot)


Because the clone was bricked, I got a genuine replacement.

A Bluetooth module could be placed on the front side of the bottom board. The front board could also be light bz LEDs from the back side.

Qway U2p

The U2p version is a variant of the U2 with 4 button instead of 2, and a switch to enable Power Delivery probing

Finally it was also possible to get a version with Bluetooth and some light next to the USB input (not sure when it is on though)


Here a list of the components present on the Qway U2p V1.1 board:

  1. input USB 3.0 type A plug
  2. input USB type C socket
  3. input USB type micro-B socket
  4. output USB 3.0 type A socket
  5. output USB type C socket
  6. data USB type micro-B socket, USB HID connection to the computer to read the measurements and flash the firmware
  7. 4 button to interact with the interface (back, ok, previous, next)
  8. PD switch to enable USB-C Power Delivery triggering
  9. Micro One ME6203 3.3V LDO voltage regulator: one for the USB type A input, the other for the USB HID micro-B input to not affect the measurements
  10. input diode protection: not in-line, but shorting GND to VBUS when GND > VBUS
  11. R012F shunt resistor (12 mOhm): to measure the current
  12. 5R10 shunt resistor (5.1 Ohm): which can be switched in line to measure low currents
  13. ON FUSB302 (marked PBAB) Programmable USB Type-C Controller with PD: this gets enabled by the PD switch
  14. TI INA226 current and power monitor: this makes the measurements
  15. NXP MMA8452Q accelerometer: to automatically rotate the display
  16. Fujitsu MB85RC16 I²C FRAM: to store the settings and energy measurements
  17. ST STM32F072CBT6 ARM Cortex-M0 micro-controller: the brain of the device
  18. UART pins: to connect to the AT-09/HM-10 Bluetooth module (with TI CC2541 chip). pinout, beginning with square pin: 3.8V GND RX TX


Here a couple of notes about the PC software (for Windows).

The software is in Chinese, but you can change it by translating the words in the lang.ini file. Here the english lang.ini (works for versions 4.0, 4.1, 4.4).

When started, the software will query to get the latest version information. This is not a pdf. I think this is just to pass firewall (just like they use HTTP without SSL).
This URL will return a short binary string, for example 0x44 0x67 0x25 0x11 0x12 0x12 0x13 0x21:

  • 0x44: Software version 4.4
  • 0x67: U2 Firmware version 6.7
  • 0x25: X Firmware version 2.5
  • 0x11: C3 Firmware version 1.1
  • 0x12: C1 Firmware version 1.2
  • 0x12: C0 Firmware version 1.2
  • 0x13: C0s Firmware version 1.3
  • 0x21: A0 Firmware version 2.1

If will also query, which is again not a pdf, but the text to display on the left side.
Using the Network upgrade it will also download the Firmware for the U2 at and U2p at (raw binaries)



When connected to USB, it appears as an HID (Human Interface Device).
When powered while pressing on the OK button, it will boot in the DFU (Device Firmware Upgrade) mode, which allows flashing the firmware. But it is still an HID, and does not use the DFU profile specified by USB.

I've partially reversed the HID communication:

  • the messages exchanged are 64 bytes long
  • the host (e.g. software) starts by sending a message. Here an example of message sent (captured from the software):
"\xff\x55\x58\x8a\x13\x79\x06\x57\x1a\x01\x0a\x02\x00\x00\x00\x00" \
"\x5e\x00\x00\x00\xff\x55\x2f\xb2\x8b\xdc\x5a\xd4\x1a\x2c\xa4\x00" \
"\xa4\x40\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x74\x21\x4f\x40\x75" \
  • this will cause the device (e.g. U2) to send measurements. Since it will only send a couple of messages, keep sending the message every couple of milliseconds (can be the same). Here an example measurement reply:
ff 55 13 b4 7f bf 50 ef 1a 2c d7 63 a0 40 0e 74 da 39 0e 74 da 39 0e 74 da 39 bb dd 08 3b 33 33 53 40 74 a8 6d 3c fe 98 f7 41 d2 34 91 c2 14 ae a0 40 0e 74 da 39 00 00 00 00 00 00 00 00 16 ae 

here how to decode the measurements:

index byte(s) format meaning
0-1 ff 55 constant probably a fixed header
2 13 integer number of second
3 b4 integer super fast incrementing number (but not related to other bytes)
4 7f integer fast incrementing number (but not related to other bytes)
5 bf integer incrementing number (but not related to other bytes)
6 50 integer 1/100th of byte 5
7 ef integer slow incrementing number (but not related to other bytes)
8-9 1a 2c constant separates timing form measurement values
10-13 d7 63 a0 40 float VBUS voltage, in V (e.g. 5.0122 V)
14-17 0e 74 da 39 float VBUS current, in A (e.g. 0.0004 A)
18-21 0e 74 da 39 float VBUS current, in A (seems the same as previous current)
22-25 0e 74 da 39 float VBUS current, in A (sometimes slightly different for the other values, but I don't know why)
26-29 bb dd 08 3b float VBUS power, in W (e.g. 0.0021 W )
30-33 33 33 53 40 float D+ voltage, in V (e.g. 3.3000 V)
34-37 74 a8 6d 3c float D- voltage, in V (e.g. 0.0145 V)
38-41 fe 98 f7 41 float In temperature (internal), in °C (e.g. 30.95 °C)
42-45 d2 34 91 c2 float Ex temperature (external, from IN Micro-USB probe), in °C (e.g. -72.60 °C, because not connected)
46-49 14 ae a0 40 float VBUS voltage (differs from first value, but I don't know how), in V (e.g. 5.0212 V)
50-53 0e 74 da 39 float VBUS current (sometimes slightly different for the other values, but I don't know why), in A (e.g. 0.0004 A)
54-61 00 00 00 00 00 00 00 00 constant seems always 0
62 16 integer checksum (addition of bytes 8-61)
63 ae integer checksum (addition of bytes 0-61)

There are other messages to get the device's serial number and firmware version, but I did not reverse those.

Bluetooth Serial

web-u2.1569246440.txt.gz · Last modified: 2019/09/23 15:47 by kingkevin