Home arrow Projects arrow Chibi
Chibi - A Simple Open Source Wireless Stack | Print |
Written by Akiba   
Sunday, 17 January 2010

This is the project page for the Chibi stack. Chibi means "midget" in Japanese which describes this stack quite well. It's a no-frills stack that just has three main functions: init, send, and receive. Its meant to be a simple way to establish wireless communications with a wireless radio without getting into a lot of protocol complexity. 

Chibi Software

2010-12-28 v0.91 Release

  • Added sleep mode to the AT86RF212 radios
  • Added delay when waking from sleep mode to allow time for the PLL to lock
  • Removed the automatic addition of "\n\r" (newline, carriage return) from FreakUSB CDC class
    • This caused some strange problems when transmitting binary data and the carriage return is handled by the command line parser now
  • Added support for using the radios in promiscuous mode

 Link to 2010-12-27_chibi_v0.91

2010-11-06 v0.90 Release

  • Added dupe rejection
    • Software will discard duplicate frames based on having the same src address & same sequence number. These usually result from retries at the transmission range periphery.
  • Added buffer overflow detection on incoming packets
    • Now checks incoming frames to see if they will overflow the receive buffer. If so, then the frame will be discarded, overflow counter will be incremented, and error message will be sent to the terminal.
  • Added error messages in driver
    • Added error messages for buffer overflow and radio initialization. The strings are stored in flash rather than RAM. 
  • Added radio sleep mode function to RF230
    • Added function to enable/disable sleep mode for the RF230 radio to save on power.
    • I'll be adding the function to the RF212 as soon as I get a chance to test it.
  • Replaced MCU specific code with generic defines in SPI to make it easier to port
    • Minor change to abstract SPI for easier porting
  • Fixed bug where wrong length was used for frames over the max payload size
    • On frames greater than the max payload, the frame will get fragmented. The wrong frame length was being used previously, though.
  • Fixed comment bug where the comment did not match the code
    • In header size calculation, the header size did not match the comment. The comment was incorrect.
Link to 2010-11-06_chibi_v0.90

2010-07-07 v0.85 Release

This release contains the following:

  • Added ATXMega support for 2.4 GHz and 900 MHz radios
  • Fixed compilation issue on Linux where case sensitivity caused problem with makefile
  • Changed usec_delay function in ATXMega radio drivers to be based on stated MCU frequency F_CPU. There may still be some issues since the clock frequency is changeable on the fly, however old drivers assumed 8 MHz clock
  • Added support for command line via UART rather than USB for ATXMega boards since they use FTDI USB serial bridge to UART
  • Moved chb_eeprom.c/h to MCU specific directories since they are MCU specific
  • Removed "dump" command for register dump
  • Removed "pwr" command to set power. This is just demo so default should be okay. API call is still in driver so this can be implemented as needed by the user. Just didnt want to make things too complicated.
Link to 2010-07-07_Chibi_v0.85

2010-06-01 v0.81 Release

This release just contains minor updates:

  • Added support for the CC1190.
    • This only consists of a GPIO to control the HGM (high gain mode) pin and some minor init mods to configure the radio for an external power amplifier.
  • Removed cmd_tbl.h and moved the command table into the main file.  
    • This allows users to add a command to the command table and implement the command functionality within the same file. Just a minor tweak to make it easier to use and explain how to use. Usage tutorials should be coming soon.
Link to 2010-06-01_Chibi_v0.81

2010-04-08 v0.8 Release

  • Starting to use version numbers to mark Chibi releases as well as dates
  • Modified rx data handling so don't need to clear the buffer.
    • There was a nasty side effect where frames that came in closely spaced would get lost since the buffer was cleared as the frame was getting written into it. Instead, the rx data flag won't be cleared until all contents of buffer is completely read out. This prevents the frame loss and will also solve the previous buffer overflow problem.
  • Added ATMega32U4/AT86RF212 support.
    • This will support 900 MHz chibi boards as well as any other devices that use ATMega32U4 with the AT86RF212
  • Modified interrupt intialization in driver so that it can be done in the header file. This makes things a bit clearer.
  • Moved chibi SPI init code to hw MCU specific directories. Each MCU handles SPI init differently.
  • Changed types.h file to use <stdint.h> def'ns rather than std C types like int. These have different sizes depending on MCU so using stdint will remove any inconsistencies between data type sizing across MCUs/compilers.
  • General housekeeping.

Link to 2010-04-08_Chibi_v0.8

2010-01-17 Release

Fixed some bugs that were found by users:

  • AT86RF212 driver added
  • chibi directories re-organized based on MCU and then radio
  • Removed FCS_LEN from the returned length of the chb_read function
  • Check all frames for RX_CRC_VALID before allowing a frame read. Discard if invalid.
  • Reset the frame buffer after every received frame. There was a bug where if a frame is in the buffer when another arrives, it will never be read out.
  • Changed makefile to automatically define AT86RF212 when the radio is selected so that it doesn't need to be manually defined in the main file

Link to 2010-01-17_Chibi_v0.5

Here's the blog post that introduced the Chibi stack way back when:


Chibi Hardware

Chibi 2.4Ghz board schematic

Tutorial on how to download firmware on to the Chibi boards

Firmware Downloading on AVR USB Microcontrollers

Hits: 70081
Comments (6)Add Comment
github != repo.or.cz
written by Alon, January 25, 2010
repo.or.cz is a free git hosting, straight forward web interface, pretty minimal. github includes many additional bells and whistles (which you may want or not) and is free but includes a paid version.

To create a github account is pretty straight forward, and they have excellent instructions on their site for beginners.
report abuse
vote down
vote up
Votes: +3
Naming similarity
written by Calum, February 23, 2010
This is a strange thing. My uni project has me investigating embedded RTOSs and while randomly looking at zigbee related sites, I dropped in here and noticed your Chibi stack is named the same as one of the RTOSs I am testing: ChibiOS http://chibios.sourceforge.net/.

I thought I would just mention it as there may be potential in the future for confusion because despite the obvious difference in their applications, they are both developed for the embedded environment. In fact ChibiOS easily has potential to incorporate your Chibi stack smilies/cheesy.gif

report abuse
vote down
vote up
Votes: +1
written by Akiba, February 23, 2010
Oh, thats bizarre and would be interesting to be incorporated in it smilies/smiley.gif I guess the project admin has some knowledge of Japanese since chibi means "midget" in Japanese. Its kind of derogatory, but cute at the same time. Just don't call a Japanese girl "chibi debbu" which means fat midget. They'll either break out in tears or kick your ass.
report abuse
vote down
vote up
Votes: +1
written by Antonio Liñán, January 15, 2011
Nice! I would love to try Chibi in the Z1 mote ^^
report abuse
vote down
vote up
Votes: +0
atxmega compatibility with TinyOs
written by ramdev, February 04, 2011
trying to have a low power modification for micaz motes...but there exist compatibility issues for tiny os compatibility.
report abuse
vote down
vote up
Votes: +0
written by Akiba, February 04, 2011
Yeah, TinyOS uses NesC which is its own language. I don't think Chibi would port over easily. Anyways, TinyOS already has many good radio drivers so I doubt having Chibi on it would be very useful.
report abuse
vote down
vote up
Votes: +0

Write comment