[[configuration/bluetooth-low-energy-ble|This Page is deprecated please visit our Bluetooth low energy page]]
====== Bluetooth Low Energy (BLE) with NB1600 and Bluegiga Bluetooth Smart Dongle ======
This article shows you how to use [[https://www.bluegiga.com/en-US/products/bled112-bluetooth-smart-dongle | Bluegiga's BLE Dongle BLED112]] with NB1600.
===== Prerequisites =====
Since BLED communicates with the NB1600 host system over Abstract Control Model (ACM), a Subclass Specification
of PSTN Devices, in the USB Communications Device Class specification, we require the cdc_acm kernel driver installed and loaded. The cdc_acm driver is present in NRSW since version 3.8. You can check it like this:
~ $ ls /lib/modules/2.6.36/cdc-acm*
/lib/modules/2.6.36/cdc-acm.ko
~ $ lsmod | grep cdc_acm
cdc_acm 15221 0
If the kernel module is not loaded, we need to load it and check again.
~ $ insmod /lib/modules/2.6.36/cdc-acm.ko
~ $ lsmod | grep cdc_acm
After plugging in the BLE USB dongle you should see some sign of life in the kernel messages.
dmesg | grep acm
cdc_acm 1-1.2:1.0: ttyACM0: USB ACM device
usbcore: registered new interface driver cdc_acm
cdc_acm: v0.26:USB Abstract Control Model driver for USB modems and ISDN adapters
Executing ''usb-devices'' will also confirm that the USB device is present and the cdc_acm driver for the device is loaded
usb-devices
B: 1-1.2
T: Bus=01 Lev=02 Prnt=02 Port=01 Cnt=02 Dev#= 6 Spd=12 MxCh= 0
D: Ver= 2.00 Cls=02(commc) Sub=00 Prot=00 MxPS=32 #Cfgs= 1
P: Vendor=2458 ProdID=0001 Rev=00.01
S: Manufacturer=Bluegiga
S: Product=Low Energy Dongle
S: SerialNumber=1
C: #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=74mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=02(commc) Sub=02 Prot=01 Driver=cdc_acm
I: If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_acm
You should now see a serial device named ''ttyACM0''
~ $ ls /dev/ttyACM*
/dev/ttyACM0
You will now be able to talk with the dongle via this interface. The protocol to talk will be BGAPI
For a simple scanning test, there is a python script available on
https://raw.githubusercontent.com/jrowberg/bglib/master/Python/Examples/bled112_scanner.py
Since Python is not on the box by default, we need to install it, see [[python|here]].
Let us run it and detect for example the [[http://www.ti.com/tool/cc2541dk-sensor | TI CC2541 SensorTag]].
~ $ curl -k https://raw.githubusercontent.com/jrowberg/bglib/master/Python/Examples/bled112_scanner.py -o bled112_scanner.py
~ $ chmod a+x bled112_scanner.py
~ $ ./bled112_scanner.py
================================================================
BLED112 Scanner for Python v2013-04-07
================================================================
Serial port: /dev/ttyACM0
Baud rate: 115200
Scan interval: 200 (250.00 ms)
Scan window: 200 (250.00 ms)
Scan type: Passive
UUID filters: None
MAC filter(s): None
RSSI filter: None
Display fields: - Time
- RSSI
- Packet type
- Sender MAC
- Address type
- Bond status
- Payload data
Friendly mode: Disabled
----------------------------------------------------------------
Starting scan for BLE advertisements...
1426759308.658 -50 0 BC6A29AB6203 0 255 020105
1426759308.765 -43 0 BC6A29AB6203 0 255 020105
1426759308.873 -47 0 BC6A29AB6203 0 255 020105
1426759308.981 -51 0 BC6A29AB6203 0 255 020105
1426759309.078 -44 0 BC6A29AB6203 0 255 020105
1426759309.186 -43 0 BC6A29AB6203 0 255 020105
A python package for communicating with BlueGiga modules through their proprietary API can be found
[[https://github.com/mjbrown/bgapi | on github]].