Qualcomm 3.0 Quick Charge Primer

In an earlier post I talked about the USB-C PD (https://www.electroschematics.com/usb-type-c-power-delivery-and-hobby-power/). Now I would like to post an entry on how to setup a Qualcomm Quick Charge 3.0 (QC3.0) capable smartphone charger, and how to implement it with a cheap and omnipresent prewired Chinese module.

First off, an official introduction to Qualcomm Quick Charge 5. It is compatible with all previous Quick Charge solutions https://www.qualcomm.com/products/features/quick-charge

The MH-KC24 Module

This is the MH-KC24 module that most vendors commonly refer to as the QC3.0 buck converter module! It is mostly used to make portable QC3.0 chargers but can also be used to convert an automobile auxiliary power outlet (https://en.wikipedia.org/wiki/Automobile_auxiliary_power_outlet) into a QC3.0 capable charger port with other than the default 5VDC output.

As you can see, the MH-KC24 buck converter module, also known as the MH-KC24 fast charging board, supports several smartphone charging protocols as clearly printed on its PCB. Let’s take a closer look at it.

Quick Charge 3.0 was introduced in 2015 to sustain high power delivery for charging while also making sure that power transfer was as efficient as possible. The latest QC evolutions will be universal, allowing them to work with any fast charging-enabled device. At this point, it’s worth notine that the QC standard, in many ways, is like USB-PD, particularly in its use of power negotiation protocols and variable voltage selection. But while Quick Charge is limited to phones and tablets that use Qualcomm’s System on a Chip (SoC), USB-PD is more of an industry standard adopted by a wide swath of the market, including laptops.

The IP6505 IC

Charging a QC smartphone simply with the 5VDC available through a regular USB car charger is a bit painful. In this regard, the MH-KC24 module is a life saver as it’s based on the IP6505 chip which is a synchronous-rectified 24W buck converter for car chargers, fast charge adapters and smart power strips.

The IP6505 chip gently supports several fast charge standards, and it will adjust the output voltage and current according to the fast charge standard automatically. Further the IP6505 chip comes with many protection features such as over voltage, under voltage, over current, short circuit, etc.

Supported fast charge standards includes:

  • DCP (Apple, Samsung and BC1.2)
  • Huawei FCP&SCP (Fast Charge & Super Charge)
  • Samsung AFC (Adaptive Fast Charging)
  • Spreadtrum SFCP
  • Qualcomm QC2.0/QC3.0
  • MTK PE1.1/2.0

Below you can see its simplified application schematic. Recall, IP6505 (http://www.injoinic.com/) integrates a synchronized switch buck regulator. Its input voltage ranges from 4.5V to 32V and output from 3V to 12V. It can recognize the accessed fast charge standard and adjust the output voltage automatically. The switching frequency (FS) is 200kHz, and the soft start time is 10ms. When VIN=12V, and VOUT=5V@3A, the power conversion efficiency is around 93%.

Your Own QC3.0 Car Charger

So, now you have a standalone fast charging module. The next thing you need to do is connect a car cigarette lighter plug to the input terminals of the board aright. The module will work well without any modifications.

On a side note, fast charging works by increasing the voltage and/or current into your device. This the total wattage beyond what a regular USB charger increases can do. In general, fast charging mode operates until the battery reaches 50-70%, depending on the device. As the battery charge increases, the fast-charging output steps down to preserve the battery lifespan.

Now to something quirky! Even though my MH-KC24 module has a IP6505 chip onboard, I can see that some other modules use a chip marked clearly as MH KC24 which is in fact the model number of the module.

It’s not uncommon that some Chinese module makers sand the chip package to obscure its origin. In this case though, it seems that MH-KC has either remarked the chips or, more likely, had the custom packages marked. The chip pinouts, however, seem self-same. I tried tracing out the circuit, but I could only get so far without removing components. I’m not going to do that currently. I still believe that the MH KC24 IC is IP6505, or possibly a clone of it.

Qualcomm QC & Quick Hacks

A few weeks ago, I stumbled upon a YouTube video demoing some tricks which makes it easy to turn a Qualcomm QC3.0 charger/power bank into an adjustable breadboard power supply. Quite naturally, that YT movie made me want to dig a bit further into Qualcomm’s QC technology. So, I decided to buy a bunch of loosely related systems and components to see if a QC3.0 power source could be controlled by some simple tricks.

As you may know, Quick Charge (QC) is a proprietary battery charging protocol developed by Qualcomm, used for managing power delivered over USB, mainly by communicating to the power supply and negotiating a voltage (https://en.wikipedia.org/ wiki/Quick_Charge).

An interesting feature of QC3.0 is INOV (Intelligent Negotiation for Optimum Voltage) which provides a finetuned power output and a more optimized charging cycle. QC3.0’s INOV communicates with the device to request any voltage between 3.2V and 20V at 200mV increments. To learn more visit www.qualcomm.com/quickcharge

QC3.0 adds an opportunity to request any dc voltage between 3.6V and 20V (12V for class A) with 200mV steps. It’s pretty easy through a fast-charging decoy module or quick charge trigger board (see below).

This quick charge trigger module holds an unknown microcontroller, an EEPROM, a linear voltage regulator chip, indicator lamps, pushbuttons, and a lot of infinitesimal chip resistors. Some of those resistors seem used to set the quick charge output voltage codes (you’ll get more details after the next paragraph).

The MODE button in this module is to select between QC2 and QC3. The V+ (UP) and V- (DOWN) buttons will step the output voltage up and down respectively. In QC2 mode the output is 5V/9V/12V and maybe 20V (if the charger supports it). In QC3 mode it’s in 200mV discrete steps from about 3V to 12V (or 20V). Double click on +/- buttons will change to auto increment/decrement (click again to stop). Further, the module can remember last selection when power is removed and automatic restore it again when power comes back.

Now you need to take a closer look into the basics of USB power source identification and control secrets. If so, you can see that most of the communication between a portable device and a USB power source relies on the data lines (D+ and D-) of the USB connection.

Now simply assume that a typical QC charger starts with its D+ and D- shorted together (BC1.2 compatible mode). If the connected portable device is also quick charge-compliant, a negotiation between them is executed. A successful negotiation then removes the short between the data lines, and D- is pulled down through a resistor set aside for that task (HVDCP mode).

After that “quick charge handshake” phase, the USB power source will start monitoring the voltages on the data lines and will work according to the detected levels and specific control patterns.

Remember, after the handshake is done successfully, you can switch to continuous (HVDCP) mode, and then it’s easy to send appropriate pulses (D+/D- Toggle) to increment or decrement the output voltage by 200mV micro steps (QC3.0 defines continuous mode as D+ = 0.6, D- = 3.3V). Below table shows the D+/D- output coding (Nothing but an excerpt from NCP4371 Datasheet published by ON Semiconductor). To get more, you can also go through https://www.dianyuan.com/upload/community/2016/03/10/1457578662-31498.pdf

Quick Charge & Breadboard Power Supply

The next thought is the development of a simple QC adapter that can hack the quick charge protocol and allow hobbyists to use a QC-compatible wall charger/power bank to cater not only 5V but also 9-12V for their breadboard electronics.

Luckily, the “signature” generation can be done through switching a couple of resistor networks connected to the USB data lines (D+/D-). From what I gather, QC5 is backwards compatible with all previous QC solutions, so, this might trick work with most QC chargers and power banks!

To make this clearer, assume that R1 is a 10KΩ resistor and R2 is a 1.5KΩ resistor. If so, to generate 0.6V on the D+ line, you just need to set the upper part of R1 to 5V and lower part of R2 to 0V. Remember to change the value of R2 to 2.2KΩ for 3.3V operation if desired.

This way the QC power source get gentle voltage change requests and tailors its output accordingly. However, proper initializing and toggling sequences are necessary here, so it’d be better to assign it to a microcontroller like an Arduino.

To test this concept, I had to build myself a few accessories. The first thing is to build a USB-A male plug breakout board that can extend the output through four jumper wires to an external circuit. The breakout board was constructed out of a tittle of good quality FR4 perf board. On that I soldered anew USB-A male plug and a row of header pins.

Thereafter I tacked together a “workbench” prototype using an Arduino Uno(Rev3) as shown in the below hardware wiring diagram. Note that I employed a 6F22 9V battery for my quick and dirty hardware setup, which I felt was perfectly safe on my first try (this avoids having the microcontroller board exposed to accidental higher voltages).

I thought it’s a good idea to start simple and use a belittled code to test my basic construct, so I uploaded one example code from the “QC3Control” Arduino Library (https://github.com/vdeconinck/QC3Control) to my Arduino!


QC3Control quickCharge(4, 5); // D4 = D+ & D5 = D-

void setup() {


quickCharge.set12V(); // Set voltage to 12V



void loop() {


quickCharge.set9V(); // Set voltage to 9V


quickCharge.set5V(); // Set voltage to 5V




for (int i = 0; i < 10; i++) quickCharge.decrementVoltage();




To no surprise, it did work – starting at 5V, and then proceeded quickly in steps exactly as defined in the code (Minimum 4V & Maximum 12V).

The quick test was conducted with the MH-KC24 module as the QC3.0 power source. It’s powered at that time thru my lab power supply dialed to 15VDC.

The below code snip is for a single 12VDC output!



QC3Control quickCharge(4, 5); // D4
= D+ & D5 = D-

void setup() {


quickCharge.set12V(); // 12V Output!


void loop() {




I did these experiments to learn how to start quick charge hacks easy to repeat by anyone. May be, that will save some time to one who want to hack or develop something similar. I’m currently remoulding the whole approach and expect more sensible outcomes. So, stay tuned!

Leave a Comment