MBED board as programmer for CC254x chips. Visit https://github.com/RedBearLab/CCLoader for more details.

Dependencies:   mbed

Devices running Android 8.0 (or newer) are not able to discover cheap CC41-A Bluetooth LE modules anymore - read "Should you throw away your CC41 HM-10 clones now that Android 8 is here?".

Since RedBearLab figured out how to use Arduino as programmer for CC254x chips a simple fix is flashing a genuine HM-10 firmware to CC41-A modules. Visit Bluetooth BLE Adventures to learn how to do it.

To use an Mbed board rather than Arduino this repository provides RedBearLab's CCLoader ported to Mbed. After compiling and flashing, it converts an Mbed board to a CC254x programmer.

Usage:

  • Compile and download this program to an Mbed board equipped with Arduino header.
  • Keep the Mbed board connected to the PC over a USB cable.
  • Connect the Mbed board to the CC41-A BLE module as shown in the picture below: /media/uploads/hudakz/ccloader1.png
  • Run RedBearLab's CCLoader.exe on your PC to flash the CC41-A module using the MBED board as a programmer.
    For example:

> ccloader_x86_64 3 cc2541hm10v540.bin 1
Revision:
1:c874ea9c1afb
Parent:
0:0834641c241a
--- a/main.cpp	Wed Jun 19 13:40:42 2019 +0000
+++ b/main.cpp	Wed Jun 19 16:34:56 2019 +0000
@@ -124,13 +124,6 @@
 * @return   None.
 ******************************************************************************/
 #pragma inline
-
-/**
- * @brief
- * @note
- * @param
- * @retval
- */
 void writeDebugByte(unsigned char data)
 {
     unsigned char   i;
@@ -156,13 +149,6 @@
 * @return   Returns the byte read.
 ******************************************************************************/
 #pragma inline
-
-/**
- * @brief
- * @note
- * @param
- * @retval
- */
 unsigned char readDebugByte(void)
 {
     unsigned char   i;
@@ -190,13 +176,6 @@
 * @return   Returns 1 when DUP has indicated it is ready.
 ******************************************************************************/
 #pragma inline
-
-/**
- * @brief
- * @note
- * @param
- * @retval
- */
 unsigned char waitDupReady(void)
 {
     // DUP pulls DD low when ready