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

The v603 did not work here! :cry:

The CCLoader.exe program shows the CC2540 chip.

The PDF document provided by the manufacturer says that the CC2540 chip is not the same as the CC2541, maybe the v603 firmware is for the CC2541 chip.

Due to the problem with antivirus, I could not follow the method described by the manufacturer, I used CCLoader, and after v603 I turned the v540.

The strange thing is that the site shows the details of the board with the firmware: V605, and download has only v603. ???

Note: When opening the port the Arduino Nano was reset, so I waited about 3 seconds and tried again (CTRL+C --> "^C"). In this way began the progressive counting of blocks, arrived at 512 for v540, and a little less for v603

For v540:

D:\Arduino\Bluetooth\Flash>CCLoader.exe 2 Firmware.bin 0
Copyright (c) 2013 RedBearLab.com
CCLoader.exe version 0.5
Comport : COM2
Bin file: Firmware.bin
Device : Default (e.g. UNO)

Comport open!
Baud:115200 <data:8> parity:none stopbit:1 DTR:off RTS:off

File open!
Block total: 512

Enable transmission...
Request sent already!
/********************************************************************/

  • If there is no respond last for 3s, please press "Ctrl+C" to exit!
  • And pay attention to :
    1. The connection between computer and Arduino;
    1. The connection between Arduino and CC2540;
    1. Whether the device you using is Leonardo or not;
    1. Other unexpected errors.
      /********************************************************************/

Waiting for respond from Arduino...

^C
D:\Arduino\Bluetooth\Flash>CCLoader.exe 2 Firmware.bin 0
Copyright (c) 2013 RedBearLab.com
CCLoader.exe version 0.5
Comport : COM2
Bin file: Firmware.bin
Device : Default (e.g. UNO)

Comport open!
Baud:115200 <data:8> parity:none stopbit:1 DTR:off RTS:off

File open!
Block total: 512

Enable transmission...
Request sent already!
/********************************************************************/

  • If there is no respond last for 3s, please press "Ctrl+C" to exit!
  • And pay attention to :
    1. The connection between computer and Arduino;
    1. The connection between Arduino and CC2540;
    1. Whether the device you using is Leonardo or not;
    1. Other unexpected errors.
      /********************************************************************/

Waiting for respond from Arduino...

Uploading firmware...

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2
3 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 4
3 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 6
3 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 8
3 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150
151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166
167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182
183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198
199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214
215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230
231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246
247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262
263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278
279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294
295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310
311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326
327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342
343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358
359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374
375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390
391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406
407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422
423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438
439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454
455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470
471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486
487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502
503 504 505 506 507 508 509 510 511 512 Upload successfully!
File closed!
Comport closed!

D:\Arduino\Bluetooth\Flash>

Now the Firm v603 has worked as IBEACON:

(P.S.: AT+VERR? and AT+VERS? shows HMSoft V604, Bug?)

1: Install the V540 with CCLoader.exe
2: Upgrade to V603 with HMSoft.exe

After upgrading the firmware, run the AT commands via serial port:

  1. AT+RENEW Restores factory defaults

  2. AT+RESET Reboot HM-10

  3. AT Wait for OK

  4. AT+MARJ0x1234 Set iBeacon Major number to 0x1234 (hexadecimal)

  5. AT+MINO0xFA01 Set iBeacon Minor number to 0xFA01 (hexadecimal)

  6. AT+ADVI5 Set advertising interval to 5 (546.25 milliseconds)

  7. AT+NAMEDOPEY Set HM-10 module name to DOPEY. Make this unique.

  8. AT+ADTY0 Advertising ScanResponse, Connectable

  9. AT+IBEA1 Enable iBeacon mode

10.AT+DELO1 iBeacon Allowed to broadcast and scanning

11.AT+PWRM1 Don’t auto sleep

12.AT+RESET Reboot

Look this:

I tried slave mode and managed to pair with a smartphone, and I was able to send data through the UART serial port, but I could not make the system LED blink, does anyone know how to do it?

I already checked the LED with a multimeter, it turns on and is properly connected to the HM-10 pin

I already tried the command:

AT+PIO10 Set PIO1 output status (System LED)
Unconnected Output: 500ms High 500ms Low,
Connected output: High

To be able to pair with the smartphone:
(Of course the Smartphone must be compatible with Bluetooth LE [BLE: Low Energy])

AT+RENEW
AT+RESET

AT+TYPE3 Set Module Bond Mode: Auth with PIN
Default PIN: 000000

To monitor connections:

AT+NOTI1 Set notify information: Notify
Link ESTABLISHED:
OK+CONN string through UART
Link LOSTED:
OK+LOST string through UART

AT+NOTP1 Set notify mode with address
OK+CONN:001122334455 String “001122334455” is the MAC address string

It not works like other simple Bluetooth module like HC-05 and HC-06

Source: https://forum.arduino.cc/index.php?topic=377228.0

I found out what happened that the system LED did not blink,

I made a big mistake,

I soldered all the pins of the HM-10 on the daughter board. :-[

The daughter board has pin connection 24 and 31, so when I soldered, these pins stayed connected, as the pin 31 should be pulling down, the LED does not light up.

I realized this after monitoring the voltage the LED was receiving, it was only 0.006V (6mV), so I tested the continuity.

Fortunately on the daughter board has a track under the board, which makes this connection of these pins, so I had to cut it, and the LED came back to flash. :sweat_smile:

I Followed this routine that make cc-41A(Fake board) to HM-10.
but I have a problem with AT command....
it doesn't work....
before I upload the binary file cc2541hm10v540, the AT commands worked
Now the Led on the board is blinking faster than before.
I have many fake board so I tried to upload by CCLoader.exe several times
How can I figure it out?....

I checked RX, TX Line swipping, and version 550 bin file....

This is the HM-10 v604 full firmware (with bootloader) in hex format: HM-10v604_full.hex

BTW, the latest versions of the firmware can be downloaded here http://www.huamaosoft.com/download_rom.asp?id=

What application should I use when connecting with my mobile phone? I do not accept 000000 as my PIN. 123456 accepts and connects. but the android applications do not connect properly? What is the reason?

Today at 06:49 pm
Hii... I faced a peculiar problem while trying to configure my AT-09 BLE Device's baud rate. I used the AT+BAUD2 which has set it to a baud rate of 2400 but now when I run any AT+ Command it prints ERROR twice on the console. But when I just use AT to check the connection the device returns ok. What might be the cause of this problem can anyone please help?

Can you do this in a Mac?

I have been trying to use your guide but I have not been able to do it on my Mac. Do you know what is the command in the terminal?

Hi all,

First of all, thanks for the instructions for flashing the modules.

Unfortunately, I had several issues with flashing the firmware on a module and, too sad, jailed one of mine... but finally, I was successful!
Perhabs my solution is helpful for someone.

My configuration:
Win 7 64-bit
USB-UART CP2104 converter
Arduino Pro Mini 3V3 8MHz

First, I was not able to run CCLoader.exe nor CCLoader_x86_64.exe. Windows responds with a compatibility issue.

Solved by using DevC++ and recompiled the source code from github. This was easier than it sounds!

Second, the CCLoader was not able to comunicate with the Arduino properly. Waiting for respond from Arduino...

I assumed, that the issue is the serial baud rate. I reduced the speed in the C source code and the Arduino source code to 19200. Unfortunately, this did not solve the issue.
Checked the connection and found, that I did not disconnect the DSR pin from the Serial converter to the Arduino (it resets the arduino to upload the sketch). Ich checked the C code and believed, it is disabled. However, I disconnected it and this did the trick.
Well, when checking the Arduino code, I also commented the line required for Leonardo boards. I was wondering, why this is not the default.

I checked, if the Pro Mini 3V3 is able to run at 115200 baud and it looks like, this is indeed too fast for it. Well, upload is slow, but for one or two modules it is fine.

I attach my files and hope, it helps. Good luck!

Cheers,
iBuddy

CCLoader_Win7-64_19200.zip (131 KB)

iBuddy85:
Hi all,

First of all, thanks for the instructions for flashing the modules.

Unfortunately, I had several issues with flashing the firmware on a module and, too sad, jailed one of mine... but finally, I was successful!
Perhabs my solution is helpful for someone.

@iBuddy85, thank you so much - this has been driving me crazy but your method worked for me! Windows 10 Pro, Arduino IDE 1.8.7, Pro Mini 3.3V with FTDI clone USB-Serial. Had already tried Uno direct and the modified Serial sketch further back in this thread. Didn't use capacitor on reset. Did follow ALL the steps in your method. Thanks again.

I have also a clone module, connect the pins from arduino 4,5,6 to 7,8 and 11 to BT module and nothing. no update for the firmware. What can i do? Hope somebody will help me
With the actual firmware, my S7 oreo said" pairing rejected to BT05"

kutysam:
Hi guys, i managed to flash HM10 onto my AT09 [...]

After powering up, PIO4 will be 1. Don't ask me why, but this greatly decreases power!

Thanks for your help! I did some digging on my AT-09 board.
On right side, only PIO1 to PIO4 are really connected to the inner module.
PIO4 is linked to ... 3v3! So it helps to keep it on.

kutysam:
Here is a fix.
AT+BEFC080
AT+AFTC088

PIO2 is connected to State pin.
PI08 is connected to LED (but not connected to the castellated module).
PI09 is connected to State pin (but not connected to the castellated module).

I modified the fix :
AT+BEFC080
AT+AFTC28C

I need a HEX file for the CC debugger.
Version v540 runs but no AT commands via terminal possible.
I work directly with a CC2541 chip
Maybe then it goes with AT over terminal
Please Help me

iBuddy85:
Hi all,

First of all, thanks for the instructions for flashing the modules.

Unfortunately, I had several issues with flashing the firmware on a module and, too sad, jailed one of mine... but finally, I was successful!
Perhabs my solution is helpful for someone.

My configuration:
Win 7 64-bit
USB-UART CP2104 converter
Arduino Pro Mini 3V3 8MHz

First, I was not able to run CCLoader.exe nor CCLoader_x86_64.exe. Windows responds with a compatibility issue.

Solved by using DevC++ and recompiled the source code from github. This was easier than it sounds!

Second, the CCLoader was not able to comunicate with the Arduino properly. Waiting for respond from Arduino...

I assumed, that the issue is the serial baud rate. I reduced the speed in the C source code and the Arduino source code to 19200. Unfortunately, this did not solve the issue.
Checked the connection and found, that I did not disconnect the DSR pin from the Serial converter to the Arduino (it resets the arduino to upload the sketch). Ich checked the C code and believed, it is disabled. However, I disconnected it and this did the trick.
Well, when checking the Arduino code, I also commented the line required for Leonardo boards. I was wondering, why this is not the default.

I checked, if the Pro Mini 3V3 is able to run at 115200 baud and it looks like, this is indeed too fast for it. Well, upload is slow, but for one or two modules it is fine.

I attach my files and hope, it helps. Good luck!

Cheers,
iBuddy

This was a awesome find and ty for the recomplie :slight_smile:
Works perfectly on win 10 64 bit.
I however was using a UNO to update and had to add a 10uf capacitor between gnd and reset to avoid resets of the UNO. Hope this helps someone else trying to flash :slight_smile:

Hi Iv just done this too my module and I think it's bricked it

I have just noticed my phone is picking the bluetooth module up but it's not responding to any AT commands

Hi,

I have followed all the steps from original post with my AT-09 clones. My modules look like this

.

When powered on, the led is always on - is this a problem? I have two other problems - the module does not appear in any other device (several phones, RPi3) - before the update I was able to connect to the module out-of-box.

Is there any change in pins? I cant get the serial communication to work. One of the bottom right-angle pins is for TX, other for RX - should these still work? VCC and GND right-angle pins seem to work. I am not able to use any AT commands or connect to the module.

I used Arduino Nano clone for the process of flashing, it finished succesfully without any complications.

Thanks for help.

1 Like