How to flash genuine HM-10 firmware on CC2541 (make genuine HM-10 from CC41)

danielnora: Hello nicky1finn,

First of all, thank you for your willingness to help.

I believe I have flooded my posts with dispersed information which may have confused you at some point.

My intention is to replicate the exact behavior of a HM-10 module on a CC2541 circuit on a breadboard. This is because the HM-10 module is too big for my purposes: I intend to use the BLE circuit in a smartband, so I need to have it as a SMD.

In order to do this, I have:

  1. Flashed the CC Loader sketch available in this topic to an Arduino Uno.

  2. Assembled the CC2541 chip the same way as demonstrated in this schematic.

  3. Connected RESET_N (pin 20), DC (pin 34 or P2_2), DD (pin 35 or P2_1) to the Arduino Uno's digital pins 4, 5, 6, respectively. I have also powered the CC2541 with Arduino Uno's GND and 3.3V.

  4. Flashed the firmware received from Hexor using CCLoader.exe with the command

After these steps, I have successfully managed to make the CC2541 circuit execute AT commands! :D

Unlike the HM-10 module, however, the CC2541 circuit wasn't advertising (meaning I couldn't see the bluetooth module on my Android phone when searching for devices, not even with specific BLE apps).

If you have read my previous posts, I stated that I was using a mere wire as the Antenna, which was short-circuited between the pins 25 and 26, and also connected to the GND, which I believed was the reason why I couldn't see it from my phone. The Antenna wasn't exactly that which was specified in the schematic I provided.

Well, I saw on the schematic that the Antenna had a 50Ω resistance, so I also tried to replace the wire that connected pin 25 to pin 26 and pin 26 directly to GND with a resistor, and it made no difference.

Then I decided to make an antenna on a PCB following this reference (page 4), and connected one of the wires to pins 25 and 26 and the other to GND. Still, no difference. I'm starting to wonder if it's an Antenna issue or something else.

Daniel

I just skimmed the thread and obviously missed some crucial information on your setup. At least you got the AT commands working! Did you run the AT+RENEW command? After I flashed the HM-10 firmware my module was not advertising either. After issuing that command, however, it immediately started working as expected. By the way, did you run a virus/malware scan on your computer? I'm a bit thrown off that Malwarebytes flagged CCLoader.exe as a backdoor. Hope this helps!

jps1: My cc2541 receives AT commands and returns answers, but it is impossible to connect with Android.

I asked Hexor for firmware by PM but I have not had any response.

Is it possible to download the firmware HM-10 otherwise?

Thanks in advance.

This Bluetooth low energy module does not pair to devices like classic Bluetooth. In order to pair within settings (I can confirm this works for Apple devices, but am unsure of devices running android), you must send AT+TYPE3. The default passcode is 000000 but if you want to change it send AT+PASSXXXXXX where the Xs represent your 6 digit passcode. The data sheet has all of these commands explained in it as well as many others. You can even read the temperature of the IC! It's definitely worth a read. Good luck!

Hi,

Could anyone forward me the hex file that should be flashed, Hexor doesn't seem to respond anymore...

Thanks in advance.

Dear Hexor and DanielNora, I need your help to clear how the wiring should be. According with HM-10 datasheet (JNHuaMao Technology Company Bluetooth 4.0 BLE module Datasheet), the CC2541 pinout and Hexor´s information, the wiring between the arduino board and the HM-10 must be:

arduino HM-10 CC2541 DC 5 23 (PIO0) 7 (P1_3) DD 6 24 (PIO1) 8 (P1_2) RESET 4 26 (PIO3) 11 (P1_0)

is it correct? I´m a little confuse about the pin number in the HM-10 board Please confirm Thanks in advance...

sorry for the last dumb question .... I´ve used the pinout in the HM-10 board (pins 7,8,11) and connected to an arduino compatible board (seeduino Ver3.0) powered at 3.3v and now I have a "real" HM-10 board (Version: HMSoft V540) Thanks Hexor for the firmware and your great job!!

I seem to have bricked my ble module. Additionally, it seems to have been a fake since it didn't respond to many simple AT commands, and even seemed to recognize lowercase AT commands.

Would really appreciate it if someone could provide the bin file with the bootloader so that I can resurrect this chip.

Thanks in advance!

Hi Guys,

A followed Hexor's HOWTO (thanks for it) and I was able to successfully burn new firmware. From CCLoader I got :

... 510  511  512  Upload successfully!
File closed!
Comport closed!

Now I am able to send AT and got OK as response. But problem is that I got OK on every AT command:

AT+HELP? -> OK AT+RENEW -> OK AT+ADDR? -> OK

I am able to detect flashed module using another CC41a so I think that is working.

Did anybody observed similar behavior of flashed module?

Thank for help!

stubb1976: Hi,

Could anyone forward me the hex file that should be flashed, Hexor doesn't seem to respond anymore...

Thanks in advance.

Hexor's link to firmware download working well. Just click on big green button (try it few times): http://uptobox.com/l8vivxdf2qev

Freezed while upgrading firmware :(

|500x375

|500x280

I have an AT-09 (HM-10 copy…) that shows up as name BT05.
I can connect with my iPhone app “Bluetooth Serial” and comm via terminal, so i know it works.

I have identified it as AT-09 through this website: http://www.martyncurrey.com/bluetooth-modules/

There is no joy with this thing. Seems it can not be flashed.
It has never responded to AT commands. This thing is a piece of junk.

Does anyone know how to buy HM-10 direct from manufacturer?

Thanks,
Quint

IMG_2614.JPG

I have the same module (also shows as BT05) and have successfully flashed it with Hexor's firmware (after converting .bin file to .hex) using CC-debugger (bought it for something like 15 USD some time ago).

BTW: when using CC-debugger + SmartRF I had to perform full flash erase before I could do anything with the chip. Not sure if this can also be the case with CCloader.

qboney: I have an AT-09 (HM-10 copy..) that shows up as name BT05. I can connect with my iPhone app "Bluetooth Serial" and comm via terminal, so i know it works.

I have identified it as AT-09 through this website: http://www.martyncurrey.com/bluetooth-modules/

There is no joy with this thing. Seems it can not be flashed. It has never responded to AT commands. This thing is a piece of junk.

Does anyone know how to buy HM-10 direct from manufacturer?

Thanks, Quint

you can check it watching this image:

check it in amazon

Hi, I have the cc2541 and I tried to follow the steps but for some reson it didn't work and now the module is not responding, the led always on (low light) and it not respond to AT commands as it did before. I tried reset with the PIO0 pin, didn't help.. :( Any idea? :roll_eyes:

kaav102: Hi, I have the cc2541 and I tried to follow the steps but for some reson it didn't work and now the module is not responding, the led always on (low light) and it not respond to AT commands as it did before. I tried reset with the PIO0 pin, didn't help.. :( Any idea? :roll_eyes:

Me too, only low led ON without any response, I don't know if because I used arduino pins without logic converter? Or something else?

Is there is a way to know if it is firmware problem or hardware problem?

AbuFaisal: Me too, only low led ON without any response, I don't know if because I used arduino pins without logic converter? Or something else?

Is there is a way to know if it is firmware problem or hardware problem?

It is works now fine, I really don't know how the problem solved I tried to upload the firmware again desperately hoping it work but the problem still not solved then I start trying other firmwares and before I start upload any firmware I was holding the wires in their pins and run CCLoader command but the command failed, however in same time the module worked fine.

Maybe the problem was related to reset module (pin11) after upload the firmware ???

Hello, i bought some BT cc41-a and would convert their firmware to get the BT HM-10. I don't have arduino but i own a CC Debugger and i already made the hardware connection to the BT. I would like to have some suggestion for the firmware to be used and for the software for to convert the source code and to flash it. Thanks

songotag:
Is anyone have made this trick work with an arduino nano ?
thanks

For those trying to flash hm10 using Arduino Nano clones - it is important to connect a 10uF capacitor between RESET and GND pins of Nano - see the photo.

For those trying to flash using Linux:
1/ compile ccloader ( /CCLoader-master/SourceCode/Linux/main.c from the zip archive):
gcc main.c -o ccloader
2/ run it:
./ccloader /dev/ttyUSB0 CC2541hm10v540_from_hexor.bin 0

The flashing is quite slow, takes about 5min and pauses couple of times in the process. But it worked for me - many kudos to Hexor!!! I did not use 5v->3.3v level shifting - connected the 5v nano pins directly to DD and DC pins of CC2541.

After flashing the HM10 module announces itself as HMSoft (used to be BT05) and paired with android easily using pin 000000.

Hexor - you are the Man!

qboney: I have an AT-09 (HM-10 copy..) that shows up as name BT05. I can connect with my iPhone app "Bluetooth Serial" and comm via terminal, so i know it works.

I have identified it as AT-09 through this website: http://www.martyncurrey.com/bluetooth-modules/

There is no joy with this thing. Seems it can not be flashed. It has never responded to AT commands. This thing is a piece of junk.

Does anyone know how to buy HM-10 direct from manufacturer?

Thanks, Quint

Don't give up too soon. I have exactly the same module and I flashed it successfully. See my other post. For AT commands use Arduino serial monitor at 9600, no CR, no LF.

Somehow i’ts not working for me. Using an Arduino Uno.

The prompt keeps telling me “illegal comport number”

The IDE sees the arduino as COM4 and I close the IDE afterwards so it can never interrupt with the comport.

Using the line: CCLoader.exe COM4 CC2541hm10v540.bin 0

At first I thought maybe a virtual machine problem but its not… Can anyone help me?

Edit: yeah… I’m stupid. Just needed to enter “4” instead of “com4”… lol. Thanks for the sharing! Going to test them out now!

For me, it says "Uploading firmware" and then it gets stuck somewhere between 1 and 4. I've tried this on a Mini Pro (3v3) and a Mega2560. The mega told me that the serial communication stops. My guess is that the Arduino is waiting for data and gets stuck in the "while (!done)" loop.

Anyone got any idea? Currently installing Cygwin and the required GCC-packages to be able to recompile the Windows application and debug it. So frustrating.