Both hardware and software versions are described using a major and a minor version number separated by a point.
The first commercial hardware version of SBrick is 4.0: 4 is the major, 0 is the minor version. This SBrick comes with a factory firmware version 4.0 too.
A firmware image only compatible with a hardware if their major version number is the same.
The change in the major version number means a big change, that makes that hardware incompatible with the previous firmware images. Uploading an incompatible firmware is either impossible, or results in device malfunction, maybe even the malfunction of the firmware upgrade facility itself, rendeting the SBrick useles. (This is called "bricking", no pun intended. :) )
Less the first hand-made prototypes, there were four hardware versions so far.
4.0
The BLE113 module was replaced with the BLE113-A-M256K version, which can do OTA without external flash memory.
The PCB layout was heavily modified to fix the range issue, and allow better thermal performance.
The DRV8835 chips were replaced by DRV8833 ones. These are the same chips LEGO use in the IR receivers. These chips can drive two motors, or the two channels can be parallelled for more power. We did the latter :)
This is the first production version.
3.0
The L293D driver was replaced with TI's DRV8835. We thought this is a great idea, since these ICs can handle a LOT more current, and run cooler than the former. This version was created in haste, and no proper attention was dedicated to that BLE module placement, wich ruined the range. Controlling was impossible even at 10-20 meters.
We also discovered that this version could not drive LEGO's M motors at all, or only very unreliably.
We found out that the problem is with the M motor's filter capacitors. LEGO used rather large capacitors across each winding of the motors, making driving them hard. Even the V2 LEGO IR remote has some problems with M motors.
Also, connection loss was very frequent, because the motor drives did not cut off quickly enough, and the BLE module was starved if the batteries were overloaded, or were out of power.
This was the version that the Kickstarter Beta Pledgers received.
2.0
After the first success, we managed to manufacture a printed circuit board, and a 3D printed plastic enclosure. The BLE112 module was replaced by a BLE113. Motor drivers remained the same.
We quickly discovered that this solution is impractical:
1.0
This hardware used BLE112, without OTA. Motors were driven by L293D ICs in DIP16 packages.
This version had a single, hand-made specimen, without PCB, it was wired by hand.
This was only a proof-of concept. Despite this all, it proved surprisingly useful. :)
4.3
All features currently described in the sbrick protocol description will be implemented, including the channel excitation pattern features.
4.2
Less "channel excitation pattern" features, everything will be implemented in this version by the end of January.
4.1
Fixed LED and 100% problems. The drive and brake commands can control multiple channels (see sbrick protocol description for details)
4.0
This is the stock, or factory firmware on 4.0 hardwares.
Known issues:
This version only allows simple remote control commands, and does not have security, voltage/temperature metering. Actually only commands 00 (brake) and 01 (drive) are implemented, and only one channel can be controlled with one command.