This is an open source software project based on the original Chibi wireless protocol stack . This project ports the Chibi protocol stack to the Arduino platform so that people familiar with the Arduino will be able to communicate wirelessly using inexpensive IEEE 802.15.4 radios. Chibi means “midget” in Japanese and its appropriate for this stack because it strips wireless communications down to the fundamental operations of initialization, send, and receive. The stack relies heavily on the radio hardware to do most of the timing specific parts of the protocol which allows it to run without an operating system or a scheduler. This also reduces the size of the software which currently requires approximately 4 kB of flash memory and approximately 485 bytes of RAM.

2019-09-17 v1.09 Release

  • Modified init routine. It now will try up to three times to init the board before issuing error message. This is due to varying timings between chips.
  • Added support for new boards

chibiArduino Release v1.09 in Github Repo

Board Support files v1.0.3

2016-02-12 v1.06 Release

  • Added chibi_ex10_sensniff – An example to allow sensniff to act as a protocol analyzer in promiscuous mode
  • Added chibiGetChannel() function for compatibility with sensniff
  • Added chibiGetChannel() to documentation
  • Added chibiGetBufRemaining() to calculate remaining space in receive buffer
  • Fixed bug in chibi_ex10_sensniff
  • Fixed non-unicode character in chibiUsrCfg.h that caused some strange problems
  • Fixed typos and documentation bugs

chibiArduino Release v1.06 in Github Repo

chibiArduino v1.0.6 release

Board Support files v1.0.0

2016-01-05 v1.05 Release

  • Added support for OQPSK 1000 kb/s, 500 kb/s, and BPSK 20 kb/s data rates as well as the standard 250 kb/s for the 900 MHz boards
  • Added support for OQPSK 2000 kb/s, 1000 kb/s, and 500 kb/s as well as standard 250 kb/s for the 2.4 GHz boards
  • Added support for ATMega1284P in promiscuous mode using very large receive buffer sizes. This is possible because the ATMega1284P has 16 kB RAM as opposed to the ATMega328P with 2 kB RAM.
  • Added support for Freaklabs FreakUSB, Arashi, and Saboten product lines. These will be introduced shortly.
  • Fixed bug where re-init of chibi stack doesn’t initialize previous sequence and previous source address. This led to some strange bugs where packets would get flagged as duplicate packets and dropped.
  • Updated documentation to coincide with current release
  • Will start posting board support files as well as software releases here.

chibiArduino Github Repo

chibiArduino v1.0.5 release

Board Support files v1.0.0

2013-10-25 v1.04 Release

  • Added code to turn off RF front end amplifiers in sleep mode for long range mode
  • Added support for Saboten v1.1 900 MHz Long Range
  • Update keywords.txt file
You can pick up the latest code at github:
Or here’s a link to

2013-10-06 v1.03 Release

  • Feature: Added and tweaked initial default values for long range board for tuning
  • Update: Updated the “HOWTO Using the chibiArduino Wireless Protocol Stack” document to reflect latest code
  • Bug Fix: Added check on chb_set_mode() function  to only allow usage with 900 MHz radios
  • Bug Fix: Added code on the examples to check for a received length of 0. This indicates a duplicate packet and should be discarded
  • Bug Fix: Removed CHIBI_ENTER_CRIT and CHIBI_LEAVE_CRIT statements from ISR
    • They’re not needed since ISR does not allow nested interrupts
  • Bug Fix: Tx power not set to full power in init code
    • Setting to full 10 mW power in init code should allow for greater communications range.
  • Bug Fix: Added code to change Tx power to 5 dBm for long range board. This is max spec’d by CC1190 datasheet.
    • The CC1190 datasheet specs that the max output occurs at +5 dBm. For the long range board, the init code sets to max of +5 dBm.
  • File Removal: Removed the AES example for now. I accidentally included it but it was empty. This will be added later.
You can pick up the latest code at github:
Or here’s a link to
The latest version of the chibiArduino HOWTO document can be found here .

2013-07-29_v1.01 Release

  • Feature: Added support for long range boards.
    •  The stack will detect long range boards and initialize front end RF modules
  • Feature: Added support for RF Ethernet gateway boards
    • The stack will detect ethernet gateway boards and initialize pins specifically for those boards
  • Bug Fix: Fixed race condition on transmit function
    • A race condition was found when going into transmit mode while receiving a frame. The driver was modified to check the radio state machine to make sure there is no frame being received before transitioning to transmit mode.

You can pick up the latest code at github:

Everything is also packged into a zip file you can download here:

Link to

2013-07-03 v1.00a Release

  •  Bug Fix: Fixed race condition in transmit
    • When simultaneously transmitting and receiving, if frame received within interval between transmit end and trx_end interrupt is serviced, trx_end flag will not be set and system deadlocks. Race condition has been removed. More details here .
  • Removed: Polling mode has been deprecated and removed. This mode was a dirty hack. Running in interrupt mode is the proper way for a communications stack.
  • Removed: boards.txt file

You can pick up the latest code at github:

Everything is also packaged into a zip file you can download here:

Link to

2013-06-21 v1.00 Release

  • Feature: added support for AES encryption
  • Feature: added support for high data rate modes (2 Mbps at 2.4 GHz, 1 Mbps at 900 MHz)
  • Feature: added hardware based true random number generation
  • Feature: added precompiler defines based on board definition file for chibiArduino hardware variants
  • Feature: added support for different modulation modes at 900 MHz using OQPSK and BPSK
  • Feature: added AES example
  • Bumped version to 1.0. yee-haw!

You can pick up the latest code at github:

Everything is also packaged into a zip file you can download here:

Link to

2012-11-02 v0.60 Release

  • Feature: Added support for AT86RF212 and AT86RF231.
  • Feature: Added new API call: chibiGetPartID(). Now that different chips are supported, will need to check which chip is in use.
  • Bug Fix: If incoming frame is too big to fit in buffer, error message would print out in ISR. Print statements in ISR on Arduino 1.0.1 will deadlock system if you max out the hardware tx buffer. The print message has been removed.
  • Bug Fix: Fixed bug in the chb_delay_us. Incorrectly had it delaying n^2 usec. *facepalm*
  • Bug Fix: In wireshark, incoming data would overflow buffer even though there is a size check to prevent buffer overflow. The data type for the buffer length check was 8-bits which limited the max len to 255. Actual buffer length was 1024. The data type has been changed to 16-bits.
  • You can pick up the latest code at:

Also packed everything in a zip file you can download here:

Link to 2012-11-02_chibiArduino_v0.60

2011-11-17 v0.55 Release

2011-11-17 v0.54 Release

  • Fixed problem with v0.52 release

Link to 2011-11-17_chibiArduino_v0.54

2011-08-20 v0.52 Release  Do Not Download this version

  • Fixed potential buffer overflow issue in command line

Link to  2011-08-20 v0.52_chibiArduino_v0.52

2010-12-28 v0.51 Release

  •  Added delay when waking from sleep mode
    • An 880 usec delay was required to wake the chip from sleep mode so that the PLL could lock
  • Added support for promiscuous mode
    • Allows chibiArduino to be used as a packet sniffer
  • Added enhanced comments for chibiUsrCfg.h (thanks Lyle)

Link to 2010-12-28_chibiArduino_v0.51

2010-11-06 v0.50 Release

This is the initial release of the chibiArduino wireless protocol stack. It’s a  wireless 802.15.4 protocol stack targeted at the Arduino platform.

Link to 2010-11-06_chibiArduino_v0.50

Copy link