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.
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. :)
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:
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.
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.