This is an old revision of the document!
This article shows you how to use Bluegiga's BLE Dongle BLED112 with NB1600.
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 here.
Let us run it and detect for example the 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 on github.