Review, Teardown: Keweisi KWS-V20 USB Tester

It’s almost been one year since I’ve looked at “USB charger doctor” style devices, but having reverse engineered, tested and modified one, I didn’t think I’d ever bother with them again. That was, until I saw the Keweisi KWS-V20 USB Tester in one of bigclivedotcom‘s videos about a power bank. As someone had mentioned in a comment on the prior articles, the products have evolved over time and “integrating” mAh display units are now available.

I suppose it would only be right for me to go and grab one for myself and test it. A quick trip to eBay, AU$10 and a month later, I had a new toy to test.


2016081820578204Rather uninspiringly, the unit came in a zip-lock anti-static ESD shielding bag and that was it. On the front, the label claims the unit to meter voltage from 4-20V (+/- 1%), meter current from 0-3A (+/- 1%), count time up to 99 hours and integrate capacity up to 99,999mAh.

Aside from this, there was nothing – no manual, no leaflet. I suppose that’s fine – it’s a pretty straightforward device.

Once extracted from the packaging, it was a little disappointing to see that it was just “plopped” inside without any love, so the plastic outer has some fine-scratches.


Of course, the scratches are purely cosmetic and don’t affect the functioning of the device at all. Keweisi is not a brand I’ve heard of, but it seems the meters are somewhat popular. It has an USB A-M connector on one side, and an A-F connector on the other, with no wires to add resistance. The translucent case allows you to see inside (so a teardown isn’t really needed) and see the LCD display which is an “inverted” type.


Aside from that, there is a reset button that is used to clear the integrated time/mAh values. This is accessed from the top and needs to be held for a few seconds to clear the values.


The rear shows a 0.05 ohm shunt resistance, an unmarked microcontroller and a gob-top chip next to it, along with a three terminal device which is probably a voltage regulator of some sort.


The casing is simply clipped together. The USB connector was a bit crooked on this sample, and bending it is not advisable as the LCD is mounted to the board and shows strain when pressure is applied.


There’s really nothing to it. A careful poke at the case with a good fingernail and it comes apart.


Inside, the backlit LCD glass is directly soldered onto the PCB. The amount of solder used on the joints are highly variable, and seem to be a little on the low side since they haven’t nicely flowed through the vias and all over all the pads (especially for the USB connectors). It’s not entirely necessary to do that, and it’s probably still fine as it is. I suppose in the case of the LCD, there’s a good reason why the soldering is done so casually, as applying excessive heat is likely to damage the glass-seal that keeps the crystal in and would destroy the LCD altogether. This type of pin arrangement as opposed to elastomeric connector leaves the LCD vulnerable to stress being conducted through the board, so bending the USB connections can potentially strain or break the display.


The underside shows exactly what I mentioned earlier – U1 appears to be a microcontroller with its markings rubbed off. U3 is a gob-top chip mounted directly on the board, and is probably the LCD display controller. U2 is probably a voltage regulator, but it was not confirmed. S1 is a 24C02S 256 byte EEPROM, which is probably used to store the integrated data values.

One thing I did notice is that D1, which is supposed to be a diode, was replaced with a 0-ohm resistor. I didn’t carefully check if this was in series with the actual USB output, but if it was, it may have been replaced to avoid voltage-drop contribution from the diode. However, this alteration may mean that the unit is not going to survive being plugged into a USB port with reversed polarity.

In Use and Testing


It’s extremely simple to use. Plug it in, and basically off it goes. When the current reading is 0.01A or higher, the integration will run to accumulate charge time (blinking colon indicates it is running) and charge (in mAh). Once the current falls below the threshold, the time and integration stops. The last value is stored in the unit itself, and is shown when power is re-applied unless reset. Resetting the unit involves pressing and holding the reset button for about five seconds.

On the whole, I found it quite a nice unit. Although the LCD characters are a little small, the backlight is extremely efficient and the display reads quite well. The viewing angle is somewhat limited though. The display features two decimal places for voltage (under 10V) and current. Above 10V, only one decimal place for voltage is shown. The display updates about twice a second, and is sometimes jumpy especially for rapidly changing spiky loads.

The wide voltage range of 4-20V allows for compatibility with the latest Qualcomm Quick Charge capable power adapters which can output up to 20V in some rare cases, making diagnosis of quick charge issues more efficient.

Integrated Charge

I decided to see how good its charge integration was by testing it with my Nitecore MH10 torch. I drained it and went through a full charge with it. Testing with the Keysight U1461A and the modified USB Charger Doctor shunt produced a result of 2499.82mAh and 5h 55m 29s charge time.


As we can see from this result, the Keweisi has an integrated current of 146.82mAh less, although the charge time is less as well. This may be because the discharge/charge termination may have been slightly different between runs. However, it still does seem to indicate that the unit’s charge integration ability is quite good as an indicator.

I also tested it with an Anker Powercore+ 10050 power bank in Qualcomm Quick Charge 2.0 mode. The power bank was run down to flat, and then recharged with the meter integrating the charge.


It’s important to remember that mAh is not a measure of energy. It is a measure of current-flow integrated across time, and to derive energy requires the voltage as well.

As a result, we can see 5130mAh was fed into the power bank over 4 h 41m, but at 9V. This is a total of 46.17Wh which at 3.7v is equivalent to 12,478mAh. Note that the value is higher than the 10,050mAh of the power bank due to conversion losses and losses in display/control/etc. Assuming the cells are 10,050mAh, the charging efficiency was 80.5%.

Note that different types of charging circuitry exist. Switching converter chargers such as that in the Anker power bank will convert the energy with ~85% efficiency to charge the battery. Linear chargers merely drop and lose the excess voltage (e.g. in the MH10), so the displayed figure corresponds to the mAh of charge going into the battery (except for losses in indicator lights etc) and are lower energy efficiency (~74% efficient). Unfortunately, it’s not always easy to know what is in use unless you’ve peeked inside or the figures are obvious.

One of the biggest failures is that the unit only integrates charge and not energy. It appears that they have everything they would need to do it for energy and record mWh by multiplying voltage and current pairs, as this would be helpful as the supply voltage may change during the charge (e.g. for Qualcomm Quick Charge 3.0 where devices can select voltages at 0.2V granularity and step up and down on demand). This would make the delivered energy unambiguous (and potentially make it very handy for things like metering solar energy charge into a battery for a small scale system). It would be nicer if the unit had some way of storing multiple results for recall and more extensive data logging features but I suppose that might be asking for too much.

I did have a think of just how long such a unit might last, because flash memory has a limited endurance and storing these figures in anticipation of the power being removed at any time is likely to be quite burdensome. As a result, I made some back of the envelope calculations:

Data to be Stored:
Time - 99h99m -> convert to 2475m -> can be stored in 12 bits
Charge - 99999mAh -> can be stored in 17 bits
Total amount of data to be stored = 29 bits (assuming efficient packed storage)

Storage medium:
Flash chip = 256 byte capacity, 8 bit words.
Round up data to be stored to 32 bits (4 bytes).

Data storage frequency = 2Hz (equal to display update frequency)
Flash endurance = 1,000,000 writes (ATMEL datasheet)
Storage slots (assuming levelling) = 256/4 = 64 locations

Time to expiry = 32,000,000 seconds = 370 days of operation

It seems that this is somewhat adequate for a diagnostic tool that’s not designed to be always plugged in. However, it does assume that the storage is efficient and that the storage location is rotated. If the storage is not rotated, the lifetime is only around 6 days. That being said, failure of the flash is likely only to impact the retention time or integrity of the integrated time and charge figures if power is removed, so the loss of the flash may not be critical to the operation of the unit. In fact, the presence of the EEPROM might make for a potential point to tap for data logging purposes if someone is bothered to sniff the bus.

Voltage Range

The unit is specified to operate up to 20V, so I decided to see if that was the case. Rather surprisingly, it did manage 20V, and even higher.


At around 26V, the unit was still rather happy, with a good display and ~0.3V error.


At 28V, the unit became rather unhappy, showing phantom current readings and making a strange whistling noise. I suspect maybe the internal inverter that generates the AC drive for the LCD is not happy, or the regulator itself was somehow over-stressed.

With such a wide voltage range, it could make for a good unit to modify to act as a general voltage/current indicator (e.g. for 12v systems).


When you’re powering yourself off the supply that you’re measuring, any amount of current you consume can change the result and is current that is not otherwise available for the device.


Checking the self-consumption using the front panel metering of a Keysight E36103A bench-top supply shows a very impressive result. The display first kicks in at about 2.8V. Below 4.2V, the LED backlight on the screen is not fully running and the current consumption is hence increasing with voltage. Above that, the unit regulates its current well with respect to increasing voltage, and consumed about 4.2mA at the most. This is an absolutely miniscule amount of current, which makes this a rather efficient meter.

Running the same experiment with the previous favourite – the Blue USB Charger Doctor shows the stark contrast –


Due to its “shunt” regulation scheme, it’s got a linearly increasing current consumption with respect to voltage over its limited operating range. Due to the consumption of the LED display, the unit draws up to around 55mA at 7.5V, which is an order of magnitude higher. Overall, a positive result for the Keweisi.

The shunt resistance of 0.05 ohms will contribute a voltage loss of about 0.15v at 3A. Slightly more loss is to be expected due to resistance in the PCB traces and connectors, but this is probably a good trade-off between accuracy and burden voltage.

Voltage Accuracy

Voltage accuracy was tested with the output of the Keysight E36103A power supply. Given the program to output voltage accuracy was established to be at most a few millivolts (an order of magnitude below the smallest digit displayed which is 10’s of millivolts), the programmed voltage is taken as the actual output voltage.

Voltage accuracy was tested open circuit under no load, with voltage supplied at 0.1V steps throughout, except for 0.01V steps between 4.75V and 5.25V which is the nominal USB power range.

A comparison was made with the previous favourite “Blue USB Charger Doctor”, but owing to the new test protocol, a different sample was re-tested under the new protocol, so the results may vary from previous report.


The voltage accuracy was shown as the absolute value of the absolute difference in displayed voltage and actual supplied voltage. In the case of the Keweisi KWS-V20, the error was always positive (indicating the display overestimated the voltage). Above about 4.2V, the error is seen to increase linearly with voltage, indicating a “gain” error. Below 4.1V, the indicated voltage is severely out of line with actual voltage. Compared with the “Blue USB Charger Doctor”, the Keweisi has fairly similar error magnitudes within their common operating range. The difference is that the Blue unit seemed to start off high and cross over to under-reporting voltage at 4.85V or so, thus while the magnitude of the errors above 4.85V are the same, they are in the opposite direction.

Based on this, within the nominal USB power range, the “Blue” unit is still a hair more accurate. However, it seems the Keweisi was off by 3 to 4 counts, so in terms of absolute value, the last digit is only really a “third of a digit”.


However, since the accuracy is given as a percentage on the package, if we plot it on a semi-log plot, we can see how the errors are even in the under-voltage area. On the whole, within the operating range above 4.2V, the unit mostly meets the 1% claim with the exception of some blips near 19V. At 4.0V, it doesn’t meet the specification, either, but I suppose it can be forgiven. The “Blue” unit has poor performance below 4.5V, but otherwise good performance until it reaches full scale at 7.5V.

Current Accuracy

As I don’t have an electronic continually variable load, I tested the current accuracy based on the old protocol by using my configurable power-bank test rig load comprising of wire wound resistors, a benchtop power supply set to 5V, and a Keithley 2110 5.5-digit DMM providing the “actual” current values.


When it came to current error, both meters didn’t seem to have particularly clear trends based on the small number of samples. The “Blue” unit was, again, better somewhat keeping within 2-counts of error, but the Keweisi was within 3-counts with the exception of the final 2.38A current reading.


Percentage-wise, to call the error within 1% would be quite optimistic, as it was within 3%. It’s likely to be much worse at the low end of the scale, as I have observed loads of 100mA registering as 30mA, as if there is a little bit of non-linearity near zero to ensure low loads don’t keep the integrator running. It’s still accurate enough for comparison testing, which is probably its main function anyway.


For AU$10, it’s not the cheapest USB diagnostic tool out there, but it’s definitely affordable and quite featureful. With the wide voltage range, it’s prepared for all manner of Qualcomm Quick Charge 3.0 capable devices, and its integration feature allows you to roughly determine the capacity of power banks, and batteries being charged.

On the whole, accuracy was acceptable, although the 1% figure is not particularly ambitious, it was a bit optimistic at the ends of the ranges for voltage, and across the board for current. It wasn’t quite as accurate as the “Blue” unit I had on hand, but it was still fairly close. For the intended purpose of relative comparisons of chargers, cables and power banks, it’s accurate enough. Of course, I only tested one sample of this unit, and it’s quite likely there will be some sample to sample variation especially because there will be tolerances in resistors which is probably where the 1% figure came from.

Not having energy integration (mWh) and only charge integration (mAh) can make for some ambiguity where the voltage varies significantly during charge/discharge. The limited endurance of the flash memory is also a potential drawback, but doesn’t seem likely to be a major one in realistic use.

Its low self-consumption was excellent, and the wide voltage range makes it amenable to modification and use in unconventional non-USB monitoring scenarios as a generalized voltage/current meter. There is a potential that the data flowing to the EEPROM chip may also be useful for data logging purposes if the format of the data is determined.

About lui_gough

I'm a bit of a nut for electronics, computing, photography, radio, satellite and other technical hobbies. Click for more about me!
This entry was posted in Electronics, Tablet and tagged , , , , , , , , , . Bookmark the permalink.

12 Responses to Review, Teardown: Keweisi KWS-V20 USB Tester

  1. Petr Broža says:

    I got interesting issue, tester worked fine from beginning, but now display 36.3V all the time, no mater which source I use (pc, powerbank, socket charger)

    • lui_gough says:

      That sounds to me as if the pull-down side of the voltage-sensing voltage divider may have ended up going open circuit – so a bad resistor or soldering around the resistor may be to blame. Otherwise, maybe one of the copper traces around the resistor could have broken due to bad PCB manufacturing. Another possibility would be static damage to the ADC input.

      – Gough

      • Petr Broža says:

        Yeah, I checked voltage divider yesterday, which is working and after touching resistors, it started to measure again, so I suspect there is cold solder joint. I try to resolder it or put wires if the trace is bad.

  2. We’ll all have to guess about the life of the flash memory, but a 2A charge current will take about 1.8 second to deliver 1mAh, and if it only writes to flash RAM when the total changes it could last a lot longer.

    But I checked the part number, and the first datasheet I found only gave 100,000 writes capacity. It’s a serial chip and it looks pretty simple to get wear levelling.

    30 days continuous use is enough to be useful. It depends on the controller, but reading the last-written memory block and only writing if the current charge quantity is different would be pretty simple code. It’s almost implicit in the ability to recover from a power loss.

    If it was only writing the data when there was a change to the mAh total it could bring the expected life back to the level of your calculation. Assembly language is almost a dark art now, and I haven’t done any for years, but it’s a pretty simple check.

  3. James says:

    Found this page when I’m searching for info about my KWS MX16, another variation of the device you’re reviewing.
    I’m trying to use it as an integrated multimeter of sorts but can’t figure out how to get the current value to show up at 12v.
    I’d appreciate if you can help give me some pointers regarding this.

    Thank you~

  4. I would be surprised if the flash memory is updated for each display update. If it did every 30 seconds or so, that would be adequate for a reasonable capacity readout and give a much longer lifetime. With some fiddling about, no doubt the refresh rate could be verified.

    A useful add-on for this is a USB dummy load, the type with a built-in fan so it can handle large currents for hours. The system can then measure real capacity of powerbank batteries.

  5. Name Required says:

    Thank you Lui,
    you are alive 😉

  6. Nico says:

    Problem: below 200 mA the mAh count and time count don’t work

    • Tomas says:

      I have to same problem. Any answer? Anybody?

      • lui_gough says:

        That is likely by design – the idea being that quiescent consumption to light a “charged” LED would not continuously cause the mAh count to rise when the charging has actually finished, so as to allow unattended measurement of (approximate) charge capacity. Of course, this doesn’t always work well especially for smaller loads – but that’s likely the rationale.

Error: Comment is Missing!