Fix a Bluetooth Module CC41-A (HM-10 clone) State Pin with this Solder Hack

George Marzloff
3 min readMar 7, 2018

If you are an Arduino developer using the CC41-A attached to a ZS-040 breakout board with a non-functional STATE pin, this trick may be for you! Ok, admittedly, that sounds like a pharmaceutical commercial. The CC41-A is a Bluetooth 4.0 module clone of the HM-10 that can be used to add wireless functionality to an Arduino or other microcontroller project. Plus, it is often less than half the price of a true HM-10.

I ordered several for a project and discovered the STATE pin was not working for any of the modules. STATE is supposed to pull HIGH when the module has connected with another device, and LOW when not connected. Or it may toggle between HIGH and LOW in sync with the flashing of an onboard LED when it is not connected to anything; I could not find documentation to clarify this.

I could not find a CC41-A schematic online, but with a voltmeter I found that the voltage to the LED passes through the resistor adjacent to the STATE pin. A simple solder bridge connection from the resistor to the STATE pin now powers the STATE pin.

I had already changed the header pins from stock right angle pins to straight ones for a lower profile on a breadboard or other PCB. By moving the headers’ plastic base to the backside of the board, I could more easily form an unobstructed solder bridge.

Solder the LED’s resistor to the header pin

For the modules with right angle pins intact, a solder bridge can still be managed by approaching from the side.

You could solder the resistor to the pin from the side (not done in this photo)

Arduino Sketch to Detect Connection

Now that the state pin was restored, I wrote a short sketch to test it. Note that by connecting to the LED voltage, even when a module is disconnected (not paired), STATE will still cycle HIGH and LOW as the LED flashes. So I needed to recognize this pulse pattern as still “disconnected”.

Arik Yavilevich created a great Arduino sketch for board commands and diagnostics including detection of the module state even if the voltage is pulsing. It usespulseIn() to detect a voltage pulse but inherently blocks the thread when working, so it is not ideal for larger applications where the loop must play on. I wrote a non-blocking alternative that can be integrated into other applications. (Well, it would be non-blocking if an interval check approach is used instead ofdelay()).

checkIfConnected(), a non-blocking function for detecting a Bluetooth connection using the module’s LED pattern.

Alternative Fix

After soldering the STATE pin to the LED resistor, I researched the issue further and found another article from Arik describing it. He identified a missing solder joint from the similar MLT-BT05 (CC41-A clone) daughterboard and fixed it by filling in the joint. If the CC41-A pins are the same as MLT-BT05, this may be a more convenient solution especially if you are using right angle header pins. I have not tried this method myself.

The Yavilevich approach

Conclusion

If you are one of the unlucky customers with one of these defective models, you can restore the module’s STATE function with one quick solder joint. Overall, the CC41-A is a nice device and still worth the very low price to add Bluetooth functionality to a project.

George Marzloff, MD is a physician in the Department of Rehabilitation Medicine at the Icahn School of Medicine at Mount Sinai. His research focuses are in Spinal Cord Injury and Rehab Engineering.

--

--

George Marzloff

Physician in Spinal Cord Injury & Physical Medicine and Rehab @ Rocky Mountain Regional VAMC, Colorado. Interests: Rehab Engineering & software development