New firmwares

There are new firmware versions (1.1.X) out for all Bricks and all Bricklets. All Bricks and Bricklets that we shipped after February 24th have the new firmwares already flashed. Bricks with old firmwares (1.0.X) are compatible to Bricklets with new firmwares. Bricks with new firmwares are not compatible to Bricklets with old firmwares. The Chibi extension will only be compatible to Bricks and Bricklets with the new firmwares. This means: If you already have Bricklets and you purchase new Bricks when they come out, you at least have to update all of your Bricklets.

The IMUs that are shipped already have the new firmware version and they also require the newest Brick Viewer version, which was last updated today! The older Brick Viewers unfortunately already have an IMU plugin that was used for an early IMU prototype, it will not work properly with the IMUs that were shipped in the last days.

The newest Brick Viewer and the newest firmwares can be downloaded here:

Why all the new firmwares?

One reason why it took us so long to finish the software for the Chibi Extension was a small design flaw in the handling of data. We had one main loop that triggered all of the processing tasks of the Bricks and of the Bricklet plugins every ms. These tasks would read out/calculate new data (e.g. reading out analog values and calculating human readable values) and send out a callback message if necessary (e.g. if a threshold was reached). This worked well with a USB connection.

Now, with a wireless connection like Chibi, things look different. Even if two stacks (connected over Chibi) are standing right next to each other interferences and the long latencies will cause delays in the sending of callbacks. This caused everything that depends on timings to not work properly, since the sending of the callbacks would slow down the whole calculation process. For example the acceleration and deceleration functionality of the Servo Brick was all of a sudden not smooth anymore or the averaging of analog sensors wouldn’t work properly.

A fix for this is quite easy. We now have two main loops, one for data calculation that always runs through in 1ms and one message loop, that sends out messages as fast as it can. This way there is as much data send out as possible and the timings for the calculations are always guaranteed to be correct. Unfortunately this meant that we needed to change the interface between Bricks and Bricklet plugins, resulting in the incompatabilities described above.