Skip to content
Program EFM8 devices using an arduino
C++ Python
Branch: master
Clone or download
Pull request Compare This branch is 23 commits ahead, 5 commits behind conorpp:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

Setting up

C2 is a 2-pin protocol. Any arduino should work to implement the protocol via GPIO. Just need to make sure that the correct pins are mapped for your Arduino. Check the firmware file Arduino Mega or firmware file Arduino Uno and change the pins to map to your device if needed. Currently, it is:

  • for Arduino Mega and maps C2D and C2CK to digital pins 2 and 3, respectively.
  • for Arduino Uno and maps C2D and C2CK to digital pins 5 and 6, respectively.

Program the firmware to the arduino and connect C2D, C2CK, and GND to your target device.


For RF Bridge RF_Bridge For Test blinking blue Led Blinky Led


You need to have Python installed. Then, install some required python modules.

Use Python 2.7 and Pyserial for Version Select a serial speed

Use Python 3.6 and Pyserial for Version Select a serial speed

Version executable Windows standalone

pip install -r requirements.txt


Programming one target.

python <serial-port> <firmware.hex>

Example for Linux: /dev/ttyACM0 RF_Brige.hex or sudo /dev/ttyACM0 RF_Brige.hex

Example for Windows: python COM8 RF_Bridge.hex

Select a serial speed

python Com8 1000000 RF_Bridge.hex

Windows standalone

Unzip the ZIP archive

flash27.exe com8 f:\test\RF_Bridge.hex


  • Some modules need sudo on some systems

Changing the communication speed

Edit the following lines: In the Python program modify the following line to switch to a speed of 115200baud / sec:

self.ser = serial.Serial (com, 115200, timeout = 1)

In the program of your Arduino:

Serial.begin (115200);
You can’t perform that action at this time.