Other Should we create a new Bluetooth/IoT Library using the community


Licensed User
I am a fan of BASIC (for over 35 years) and am deeply hands-on involved in Bluetooth Technology.

I was responsible for one of the first Bluetooth easy-to-use modules back in the early 2000s.
Since then, I have developed many BT modules and then 3 years ago started working on a BLE module, the culmination of which is www.lairdtech.com/bl600

This latest BL600 module has embedded BASIC which we call smartBASIC which was developed from scratch and I was the lead engineer on that too.

It is an implementation of BASIC that runs in less than 2K of ram.

Like B4x, smartBASIC is extensible and the BL600 module has a very rich set of functions that expose BLE functionality.
We also have a new dual mode module BT900 that has both classic and low energy extensions.
Give the modules BL600 or BT900 a go and you will be able to create any smart peripheral you want, including ones with custom services.
Both modules have the same BLE extensions to make it easy for our customers to migrate from one to the other.

Imagine, recreating a similar API on B4x !!

I have over 30 years of 'C' experience but very little experience of Objective-C or for that matter Java.
I also have 14 years of embedded Bluetooth experience and to make it so that it is easy to use.

It means, I can help define the API by 'creating and owning' the .h file that specifies the API and the community can write the code behind it and we manage the process via GitHub.
By defining the API based on field experience of our BLE module, we will ensure the API does not paint itself into the corner and in fact will be future proof so that when IoT using BLE explodes in a big way late next year we will be able to enhance the api for that too.

If a core set of contributors are up for it, I am prepared to sit down and create the 'spec' by writing the .h file.

Some will say, how do we test it ?
Two options :
One is to use iOS apps like 'LightBlue' which allow the phone to become a peripheral device - but it slightly limited.
The other is to get your hands on the Laird BL600 or BT900 module devkit -- I make no promises but depending on the level of interest I will see if I can negotiate a discounted price with my management for contributors.

I think this is an exciting win/win/win proposal for all, and that includes Erel :)

I look forward to your feedback.


Licensed User
Browsing your website I couldn't see detailed specs for the DT900.
* What MCU is used?
** Is it possible to program the MCU directly with C, bypassing smartBASIC or one must only work behind smartBASIC layer?
** For time-critical applications, where a response to sensors should be ultra-fast, what's the capability of smartBASIC in this regard?
*** Is it two separate modules for master/slave, or any module can be configured either way?
**** How many serial channels? (RS485, TTL...etc)


I work on process control design and construction.


Licensed User

This thread is not about the Laird modules :), but I will respond as below, and if you have any further queries please send email directly to

You missed typed.
It is BT900 not DT900.
See http://www.lairdtech.com/products/bt900-series

The BT900 had dual mode capability so you will be able create smartBASIC apps to send and receive over classic SPP and/or BLE.
In fact in our testing we check that we can have multiple SPP connections as well as BLE activity at the same time.

In the BT900 MCU there is an Arm Cortex M3 running at 40Mhz
<< and as an aside, in the BL600 there is a Cortex M0 running at 16Mhz >>

It is not possible to directly program in C. Frankly why reinvent the wheel, it has taken 3 people over a year to given you all the robust functionality with full regression testing.

How fast is time critical? and how is the sensor attached to the module? smartBASIC is event driven.
If the sensor is uart based, then the uart on the module can directly talk to it.

Only one serial channel, but it does have I2C and SPI. So for example, if you really need more uarts, then you can use something like http://www.nxp.com/documents/leaflet/75015676.pdf where the uart peripheral is controlled over the I2C port. The I2C interface is presented using smartBASIC functions like I2Copen(), I2cClose(), I2cRead(), I2cWrite() etc


Licensed User
Thanks for the answers.. very useful.
I found the detailed info about the BT900 on digikey.


Licensed User
Just a clarification note on smartBASIC....
When a user writes an app, it is precompiled into opcodes for a virtual processor of my design and then the run time engine interprets the opcodes. Hence there is no delay in text parsing.