Update on BD-SDMAC WiFi/BT module
Published on May 11, 2017
//
We introduced the Silex QCA9377-based BD-SDMAC few months ago and have some updates to provide.
802.11 AC + BT4.1 BD-SDMAC moduleFirst, it is recommended to read our previous blog post which gives all the module details:
As a reminder, the module is supported in the following OSes:
- Android
- Ubuntu
- Debian
- Yocto
- Buildroot
What's new?
Supported platforms
After several successful designs using this module, we decided to offer a variant of the following platforms with BD-SDMAC instead of the TiWi-BLE:
- Nitrogen6X
- Nitrogen6_MAX
- Nitrogen6_Carrier (for SOMv2)
Note that the price stays the same for the "_QCA" variants although it now offers dual-band + AC support.
Software update
Projects based on this module were for both Android and Linux which allowed to extensively test the software in real condition.
This process allowed us to fix a few bugs and provide better software support:
- WiFi MAC addresses can now easily be set from kernel command-line
- Same goes for BT MAC address on Android (see ro.boot.btmacaddr)
- Debug messages now stripped not to spam on serial connection
- Fixed build with GCC6+
- Firmware update to v2.1.3
- Bluetooth LE Advertising testing
This latter feature will be described in the next section since many customers have been asking about it.
Bluetooth LE Advertising
The BD-SDMAC is the first module we've successfully used BLE advertising.
For Android, an API is provided for it as well as some samples apps that can be used as-is:
- https://developer.android.com/reference/android/bluetooth/le/BluetoothLeAdvertiser.html
- https://github.com/googlesamples/android-BluetoothAdvertisements
Our latest Android Nougat blog post shares the apk files used for testing with some screenshots:
As for Linux, here are some samples commands tested on a Yocto build to send advertising packets (credits to this stackoverflow thread).
- First setup the BT
echo 0 > /sys/class/rfkill/rfkill0/state
sleep .5
echo 1 > /sys/class/rfkill/rfkill0/state
/usr/libexec/bluetooth/bluetoothd &
hciattach -t 30 /dev/ttymxc2 qca 2000000 flow &
hciconfig hci0 up
- Then prepare the packet
hcitool -i hci0 cmd 0x08 0x0008 10 02 01 1a 0c ff 18 01 48 45 4c 4c 4f 57 4f 52 4c 44
- Finally allow advertising packets and incoming connections
hciconfig hci0 leadv 0
- You can then disable advertising if needed
hciconfig hci0 noleadv
For any further information, feel free to contact us at info@boundarydevices.com.