Power Bank Endurance Test – Hillo Power Jin Gangxia (Part 2)

The endurance test for this power bank started back here, with the last update providing the data for the first 50 test runs (total of 66 cycles since new). Now, another 50 cycles have been completed, for a total of 116 cycles from new. For a cell that’s normally expected to survive 300-500 cycles, that’s about 23.2% to 38.7% of its lifetime.

How did it fare?


It seems that the cell itself has done quite well. The rate of degradation seems to have locally “slowed” a little. The gradients themselves now imply a cycle life of 868 cycles (before, 716 cycles) to 80% of original capacity. The correlation value has mildly improved.

Observant readers will note that one data point (run number 76) has been omitted. This is because it registered an abnormally low value of 3358mA once off, likely due to a long period spent hooked up to the USB charger at full charge with its LEDs on while three Xiaomi units were tested (two real, one fake). This unit probably does not do a topping charge after fully charging.


When plotted with a scale starting from zero, the degradation as a function of the whole cell capacity can be seen to be relatively insignificant. The fact we’ve been through 116 cycles is quite a bit, and many device users may not reach this level even throughout the lifetime of the unit (especially if only used for emergencies).


The cell seems to perform very well and testing has mostly been consistent in a slow degradation trend of about 0.8868mAh per cycle. The implied cycle life exceeds the 300-500 cycle expectation at the moment, based on linear projection to 80% capacity. It’s been a lot of effort thus far to get to 116 total cycles – testing will continue if time permits to see how it continues to age.

Posted in Electronics, Power Bank | Tagged , , , | Leave a comment

Reverse Engineering: The USB Charger Doctor

In my last post, I had a good look at the features of two different USB charger doctors, and went through a quick teardown. It was fascinating, especially for the blue unit, that they could make and supply such a product for under AU$2. It was a little disappointing that the chip is “unmarked”/remarked, as is normal for a highly competitive market.


I was interested in trying to uncover just how this unit worked and what functions the chip was performing. Was it a microcontroller? Are there any configurable options or modifications we can made? Could we control the display or extract the data from it directly? The only way to find out was to tear it apart … again!

Teardown Redux


In the last part, I managed to tear down one of my units to this level, having removed the 7-segment display with much difficulty, to reveal a chip which is mostly unmarked, but marked with 00F0105 (which doesn’t really correspond to anything I know).

For this teardown, I decided to do the same to another unit (as I had already re-soldered the above unit together), but go one step further and liberate the SMD chip off of the PCB to get a good look at how it was wired in.


It seems that practice makes perfect, as I decided to go the hot air gun route, opting for high temperatures of 380 degrees C to undo the 7-segment display and a gentler 340 degrees C to get the chip to lift.


Unlike last time, it’s much less “toasted” even after using the desoldering braid to clear up the holes.

Tracing a Schematic

It took about 30 minutes to trace out a schematic of how everything was connected. It was necessary to desolder the SMD to allow access to the traces underneath the chip and to view the vias. The lucky thing is that this is only a double-sided PCB, which makes it easier to trace. A torch seems to be quite handy to shine through the two sides and check where the vias meet.


I like to do my schematics on paper, in my case, some random lined paper. This is because it’s easier to keep up with what I’m doing just to do it by hand. Then, I will try to redraw it by hand, minus the mistakes.

Unfortunately, after having drawn it once with a few mistakes, I wasn’t able to draw it any better a second time. Instead, I scanned the first attempt and then used Photoshop to improve the layout and fix some mistakes. I’ve also colour coded the nodes to make it easier to understand what is going on.

Circuit Operation

The USB connectors have the 5V+, D+ and D- wired straight through to the output plug. The GND connection is passed through a 0.05 ohm resistor, acting as the current sensing shunt.

The source voltage itself goes through a 100 ohm resistor to provide some source resistance, and then it goes to two 3-pin pads. One of them is unpopulated, and the other is populated with a component marked 431. It looks like these are likely to be different voltage reference/zener diode parts which can be used in the design depending on the component availability. In the case of the populated LM431 Adjustable Precision Zener Shunt Regulator, it’s taking the positive voltage after the 100 ohm resistor and shunting some of it to ground to keep the dark blue node hovering at 2.5v.

It’s interesting that the regulated 2.5v node isn’t directly used, but is again passed through a resistance of 220 ohms before being passed to the main IC (labelled 00F0105). This line is also attached to pin 3 on the 7-segment display, corresponding to the decimal point, which seems to be a little mystery at this time – wouldn’t this leave the decimal point on at all times?

Lets ignore this for now, and quickly mention the 7-segment display. The unit in use is a common cathode visually-multiplexed type, with four digits. As a result, it has a total of 12 connections, eight of them are segments (seven + decimal point), and four of them are the cathodes for each digit. These have been labelled on the drawing.

The IC itself is a 16-pin device, and to think it has to drive a 12-pin display doesn’t leave many pins. All of the driving pins are labelled green above – Pin 1 drives Segment B, Pin 2 drives Cathode 3, etc.

The remaining non-display dedicated pins are Pins 3, 4, 5, 12 and 13. Pin 3 is connected to the centre of a voltage divider formed by a 2k ohm and 1k ohm resistor, which results in it producing 1/3 of the input voltage. Therefore, this pin is used for Voltage Sensing. The accuracy of this arrangement is dependent on the draw of the IC and the tolerance of the resistors. It’s a design choice, given that the IC is supplied by 2.5V (maximum), that when 7V is applied to Vcc, then the voltage sent into Pin 3 is 2.33V (close to the Vcc to the IC, and reference voltage).

Pin 4 is connected to the ground of the device, which is also the positive side of the shunt. This is hence the Current Sensing input. The voltage developed will be the burden voltage of between 0v and 150mV.

Pin 5 makes a direct connection to the voltage source ground, and is hence Ground.

Pin 12 is connected to a capacitor which is connected to ground. This, through later experiments, has been determined to be a hold-up capacitor of some sort, or maybe reference voltage-store capacitor.

Finally, Pin 13 is connected to the 220 ohm resistor to the 2.5V source. There is no direct connection of the chip whatsoever to the 5V from the USB connector, so this is likely the Vcc supply.

Unfortunately, this means there are no extra pins for programming, reset, control or configuration. This doesn’t mean that the chip isn’t a microcontroller – it might well be, but it has all of it’s pins very carefully used! Oh well, no fun there, but we still have some mysteries.

Most of the pins are digital outputs to drive the LED display. There are only two analog inputs – the Voltage and Current sensing inputs, which might be multiplexed to an internal (slow) ADC with its own internal clock. Finally, there’s one mysterious capacitor (analog reference?) input …

Scoping Out the Circuit

In order to try and solve some of the mysteries and watch the circuit in action, I had to resolder the SMD chip to the board. I decided to give it a shot of hot air, but the remaining solder didn’t seem to be quite sufficient to be sure to have a good contact. As a result, I decided to use a regular old iron to add a touch more solder. It’s ugly, but it works fine!


I didn’t bother to add the display, as it would have obscured access to the pins. I did re-probe the pins that were accessible after final reassembly and things seemed to operate the same. Some of the mysteries alluded to earlier are solved when I start to poke at the circuit using my trusty PicoScope 2205A.


On this trace, I’ve got Channel A connected to the Vcc line on the IC, and Channel B connected to the Capacitor pin. This is a very telling result!

The cycling of the voltage up and down on the Vcc line seems unusual. In fact, the reason why the chip’s Vcc is connected via the resistance becomes a little clearer!

The Vcc line is also connected to the Decimal Point of the screen seems to be exploiting the operating characteristics of the LED to “share” the Vcc input in driving the Decimal Point segment. It seems that the effective load of the IC is “alternated” in time with when the decimal point is lit (first digit). So the load of the IC is low during the first digit, which causes the voltage on the Vcc line to “float” back up to near 2.5v which turns on the LED. When it’s displaying the second, third and fourth digits, the IC increases its load, so the current draw through the 220 ohm resistor is enough to make the voltage fall to about 1.9V which is insufficient to turn on the LED bright-enough to be noticed! Aha! I’ve never seen this before!

As a result, the chip probably operates fine from 1.8v up to 2.5v! But there needs to be a stable source of power somehow – so probing the capacitor line seems to show it remaining stable at 2.5v during all phases. This might be providing the reference voltage for the ADCs to keep the readings stable despite the changes in current draw in the IC.

Why they didn’t just use a capacitor to bypass the Vcc input, and use the other output to drive the decimal point on the screen seems beyond me, but it may be a restriction of the underlying chip design, or it might provide better noise immunity than the other method and that was a better tradeoff (i.e. to digital noise in the reference voltage).

This also allows us to calculate the approximate power consumption. The IC itself is fed with 2.5v through 220 ohms (which we can use as a shunt). It measured 2.497v at the first digit, which implies negligible power consumption of the IC itself. When displaying the next three digits, it’s about 1.9v indicating 0.6v drop over 220 ohms meaning a current of about 2.73mA. When LEDs are connected, this will change quite a bit.

The shunt itself is dropping about 2.5v over 100 ohms which gives us a current of 25mA wasted in the shunt. Likewise, there is a voltage divider, which eats about 5v over 3kohms which adds another 1.67mA.

So, the power consumption of everything sans LEDs is about 28.71mA.


This trace was had showing the timings of the display segment outputs. Channel A remains connected to the Vcc line at the chip, whereas Channel B was connected to the SegE output on Pin 9.

It can be seen that when showing the current, the value of 0.000 always has the E segment on, and you can see the decimal point only on for the first digit of the four. You can see the dedicated segment outputs are directly hard driving the line to the chip’s Vcc (2.5v) or 0v. This seems to be acceptable, as the chip’s total current supply is limited, and there’s likely to be enough resistance within the IC to keep the LED’s current in check. This obviates any need to have any form of current-limiting resistors to the LEDs, saving parts!

The display cycles at 246.3Hz (about 250Hz) which is pretty fast and appears visually solid.


When it changes over to voltage mode, you can see it changes the output on SegE, as expected. It’s likely to be displaying something like 4.89U, but it’s not conclusive without seeing the other Seg-data lines.

Final Reassembly


I managed to solder the display back into place, and snap the case back together. It’s a little brown, due to the flux, but it still works! Nice! And my first real attempt to play with something SMD.


It’s pretty cool to see what you can get for under AU$2. Unfortunately, it turned out that there was no room for modification, customization or reconfiguration. The circuit seems to make use of shunt regulation to provide a reference voltage, with the main IC operating at 2.5V. Every pin is made use of, in rather efficient manner, and an interesting scheme of sharing the Vcc line is used to drive the decimal point segment on the display. It’s always a nice surprise to see something you’ve never seen before.

It was also good fun to use the hot air rework gun to practice on something as inexpensive as this.

Posted in Electronics | Tagged , , , , | Leave a comment

Review, Teardown: Two Popular USB Charger Doctor/Detector/Current Meters

There seem to be many circumstances where checking the current and voltage to a USB device could come in very handy. For example, maybe you are troubleshooting a slow charging device – maybe it’s cable related and the voltage is dropping, or maybe it’s a charger compatibility issue causing the device not to kick into high speed charging. Maybe it’s an old charger and it’s on its last legs.

Other times, you might be running peripherals and devices such as the Raspberry Pi, and you might be interested in finding out its current consumption or that of USB Wi-Fi adapters and USB storage devices so as to plan your power sources accordingly.

I’ve had a desire to do this many times in the past, and the solution was a moderately painful one of buying a USB extension lead, and splicing it apart to put some multimeters in line for voltage and current detection. The burden resistance of many multimeters at low currents is fairly high, and can skew the results by reducing the voltage to the end product, and other times, the meters just don’t have the right ranges (e.g. DT830B clones with a 200mA or 10A range) to get a good reading.

But alas, this problem has been solved. Enter a product commonly known as a USB Charger Doctor. Sometimes these are known as USB Detector or a USB current meter. Basically these devices feature a pass-through USB connection to connect your source port and device, and a seven-segment display which is driven by ICs powered by the USB bus power to indicate the voltage and current.

This is such a simple idea, but it can be remarkably useful. Since I thought it would be nice to have one, I couldn’t resist ordering the two more common designs and giving them a quick look-over.

Blue-Coloured Charger Doctor


This is a pretty basic charger doctor unit. This one features a USB A-M for plugging into the port, and a USB A-F for plugging your device into. It features a single 4-digit 7-segment red LED display, and claims to be able to meter between 3.5-7.0V and current from 0A-3A. This one was selling for a bargain price of AU$1.83 a piece.

Having tried it out for basic function, it was found that only three digits of precision are available, with the last digit used to indicate volts (U) or amps (A). This is slightly disappointing as they could have just made that indication using a simple LED. Readings seem to be refreshed at around 3Hz, with the display automatically alternating between current and voltage every 4 seconds or so. This, unfortunately, doesn’t allow you to simultaneously monitor voltage and current which could make diagnosing voltage-drop-due-to-current faults a little more tricky, but it does save on a display.

A quick check seems to show this unit consuming about 20-30mA, with the display easily displaying current levels of 0.01A upwards. The accuracy of voltage and current seems to be within 2 to 3 counts (i.e. 0.02-0.03V/A). This corresponds to about 1-2% error which is enough for diagnostic purposes, but is not a precision instrument.

Due to its size, use with certain ports may run into obstructions, and may cause obstruction of adjacent ports as well. While it’s commendable that they’ve avoided cables which may increase resistance, it’s also a potential problem for some, so maybe a quality USB extension cable is advisable.


While it comes in a translucent blue casing, there really isn’t much to be seen from both sides. The PCB seems to be fully silkscreened on the bottom to make it appear white.



The unit itself is of a moderate size, and the casing itself is held together with plastic clips.


Taking the casing off, we can see the 7-segment display still has its protective film on. The first thing I did was peel it off!


Things are much the same with the case off, but you can see we will have to go to great lengths to find out what’s “inside”. So I fired up my trusty iron to try and desolder the 7-segment display.

What an arduous process that turned out to be. The lead-free solder didn’t want to cleanly remove, the small solder holes and pads didn’t help either. I tried a few braids, applied fresh solder over and over … even a solder sucker didn’t help much. You really don’t want to pry if the legs aren’t completely clear, because you’ll probably peel off a few pads. But it’s under AU$2, so maybe it’s worth it.

Eventually, I decided to get the hot air rework out, and turned the temperature up to an obscene level that managed to heat it up till the whole board was “liquid” thus, freeing the display.


We can see what appears to be a microcontroller as the heart of the solution. It’s marked 00F0105, which seems to be a production marking over an unmarked chip. The burden resistor in this model is 0.05 ohms, which is the R050 surface mount resistor (likely a 2W model). With this burden resistor, a draw of 3A would result in a loss of 0.15v across the burden resistor, in which, an indication of 4.85v would be expected even though the source is 5v. This is a common pitfall of current measurements! The ultimate accuracy of the unit is dependent, in part, to the resistor tolerance as well.

It’s quite good to see how the pins are directly connected where possible, using larger traces over a very short distance to stop additional resistance causing issues with reading accuracy.

The unit’s voltage ranges is likely related to the voltage which the 5v microcontroller operates correctly – it’s quite common for them to run from 3.3v to an absolute maximum of 7v.


All that heating, desoldering braid and solder has left a lot of burnt-flux residue on the board. It looks ugly, but it still works! A little disappointing we weren’t able to find out more from this adventure.

USB Detector (KW203)


This one is another popular unit, featuring two three-digit 7-segment displays for simultaneous voltage and current readout. This was a more expensive unit, costing AU$6.70 a piece and features a short USB pigtail to connect it to a port. This makes this unit easier to fit, but also introduces an additional source of voltage drop, as the cable isn’t thick and connects to a connector on the PCB. In a quick test, it was showing 4.80v at 0.6A draw for a source whereas the blue unit was still showing 5.00v. This means the cable and connector is adding about 0.33 ohms to the link, and thus the voltage would be inaccurate by about 1 volt at 3A! This is a bit excessive.

The unit itself draws about 20-30mA, similarly to the unit above, but it seems not to indicate values below 0.05A, so thus it features some “zero blanking”. The unit itself updates the displays at about a 3Hz rate, simultaneously, and thus for “spiky” switching loads, the values do fluctuate quite a bit as it takes “samples”. In general, its accuracy seems to be comparable with the above unit, usually being within 2-3 counts (1-2%) roughly – good enough for diagnostics.

The unit itself has one major functionality difference over the other units – it’s possible to use it as a crude USB charger splitter. It has two ports – one port is passthrough with the D+ and D- lines, passing the data along. The other port has the D+ and D- lines shorted as a dedicated USB charger. Thus you can probably use this with a single port output and check the current is within range all at the same time, but the resistance in the short pigtail might work against you and cause voltage drops to show up even though the source is holding stable. The measured current is the sum of both ports.


The unit itself is labeled KW203, and claims to run from 3.2v to 10v and a current range of 0-3.00A. This is slightly wider in voltage range than the above unit, but it’s unlikely you would want to plug anything into a USB port that’s giving out more than about 5.5v anyway!

Intriguingly, this label suggests that there are several different configurations for the unit – I have no idea what they are though. I presume this unit is just a basic VA unit. Maybe the +C units can do cumulative energy, and +H can do hourly energy? No idea.


The unit is held together with an end clip as well as a single screw hidden underneath the label.


Again, the LCD displays seem to have their protective films in place. I wonder why – does it cost too much time to peel them off? Another observation is that the traces for the USB power connectors on the top look a bit small, as do the connector for the USB pigtail wiring.


The 7-segment display units seem to be model number RLD2381AHB-22.


The unit itself seems to have tinned traces, although not with significant amounts of metal, to try and reduce the resistance contribution. It also seems to have different SMD resistor pads for the second port to configure how it identifies (i.e. you can use resistor pull-up and pull-down to simulate Apple charging protocol, or as per this unit, use a zero-ohm resistor to tie D+ and D- together for USB dedicated charging protocol).

The burden resistor in this unit is 0.01 ohm, which is 5 times less than the unit above. This would reduce the voltage drop at full load, but with the potential price of increasing the noise in the measurement. The voltage burden at 3A is only 30mV, thus reading 4.93v when the source is 5v. The unit is run by another unidentified IC.


These are two of the more popular USB charger doctors on the market, and they’re very handy for quick indicative measurements of voltage and current. By using these units, you can check if a given charger works in “high current” charge modes with devices, diagnose failing switching supplies which put out too low of a voltage causing charging to fail, see the impact of USB extension cables on the voltage at the end under load and even check the power consumption of USB peripherals and devices like the Raspberry Pi.

It’s a very inexpensive device, and while it is not a precision device as such, it seems to be “accurate enough” for quick diagnostics, with readings within about 3-counts or roughly 2% in my experience. The fact I don’t have to splice my own connectors and find multimeters is a big bonus, although the fact that the unit consumes about 20-30mA of current may skew the voltage slightly, as will the fact that there is a small burden resistance of 0.01 or 0.05 ohms in series with the supply.

Each of these devices has its own advantages and disadvantages, but they are definitely handy to have around.

Posted in Electronics, Tablet | Tagged , , , , , , | Leave a comment