Bluetooth

This feature is only available on certain products and models (not available with all devices).

NOTE: This information only applies to mLinux™ 3.x firmware which uses BlueZ4. For Bluetooth on mLinux 4.x or higher, refer to BlueZ5 Pan Setup and BlueZ5 Serial Setup.

Bluetooth Setup

The device includes BlueZ 4 software used as a Bluetooth stack.  To operate, you must install BlueZ 4 on your Linux computer.

For newer levels of Linux, you may need to find BlueZ 4 outside of the normal software package manager.

You can also use BlueZ 5 with Ubuntu on your Linux machine. You need to set up BlueZ 5 with compatibility mode for BlueZ 4 on your PC.

BlueZ 5 using Ubuntu on Linux Computer – Set Compatibility Mode

To set BlueZ 5 in compatibility mode:

1. Find the file /etc/systemd/system/dbus-org.bluez.service.
2. Change the line by replacing:

ExecStart=/usr/lib/bluetooth/bluetoothd

with

ExecStart=/usr/lib/bluetooth/bluetoothd --compat

3. To restart bluetooth, enter: 

pc: sudo systemctl daemon-reload
pc: sudo systemctl restart bluetooth

4. To change permissions on /var/run/sdp , enter: 

pc: sudo chmod 777 /var/run/sdp

5. If you are using GUI management on your Linux system, verify that Bluetooth is on and set it to visible. Or if you are using the command line, enter: 

pc: sudo hciconfig hci0 piscan

Classic Bluetooth Serial Communications

If you log in through the debug port to the device using Minicom, you need to change the Minicom control character. You can’t have two levels of Minicom and control both with the same character.

You can also use SSH instead.

To change the character in Minicom:

1. Enter the command:

pc: sudo minicom -s

 This command displays the Configuration menu for Minicom.

2.   Under the Configuration, select Screen and keyboard.

3.   Enter the command key: B (the resulting command key is <ctrl> + B).

4.   Select <esc> which returns you to Configuration.

5.   Select Save setup as dfl which sets your recent configuration as default.

6.   Select Exit from Minicom.

Bring up Bluetooth

To bring up Bluetooth using Ubuntu, enter this command:

pc: sudo hciconfig hci0 up

Bluetooth reset

Bluetooth resets automatically on reboot.

To manually reset Bluetooth, enter the following commands:

pc: sudo systemctl daemon-reload
pc: systemctl restart bluetooth

Bluetooth TTY communications with Ubuntu

To use Ubuntu for Bluetooth communications:

1. Enter the command:

pc: sudo hciconfig hci0 up

2. On Ubuntu Linux, determine the bluetooth MAC address.  Enter the command: 

pc: hciconfig

The system displays the following: 

hci0:  Type: BR/EDR  Bus: USB
BD Address: 00:02:72:21:A7:D7  ACL MTU: 1021:7  SCO MTU: 64:1
UP RUNNING PSCAN ISCAN
RX bytes:59680 acl:3203 sco:0 events:1827 errors:0
TX bytes:47076 acl:3264 sco:0 commands:115 errors:0

For this example above, the address is: 00:02:72:21:A7:D7

3. Create a TTY node for Bluetooth communications (for both sides). Enter the following: 

pc: sudo mknod -m 666 /dev/rfcomm0 c 216 0

4. Make Bluetooth discoverable on a scan. Enter: 

pc: sudo /usr/sbin/hciconfig hci0 piscan

5. Add the channel. Enter: 

pc: sudo /usr/bin/sdptool add --channel=22 SP

6. Start RFCOMM to listen for a connection. Enter: 

pc: sudo rfcomm listen /dev/rfcomm0 22 &

7. Now log into the device. Use the MAC address from Ubuntu on the rfcomm command line as in this example. Enter the following: 

mtcdt: /usr/sbin/bluetoothd
mtcdt: hciconfig hci0 up
mtcdt: hcitool scan
mtcdt: mknod -m 666 /dev/rfcomm0 c 216 0
mtcdt: rfcomm connect /dev/rfcomm0 00:02:72:21:A7:D7 22 &

Example output (Bluetooth messages are written to the console): 

[1] 571
Bluetooth: RFCOMM TTY layer initialized
Bluetooth: RFCOMM socket layer initialized
Bluetooth: RFCOMM ver 1.11
Connected /dev/rfcomm0 to 00:02:72:21:A7:D7 on channel 22
Press CTRL-C for hangup

8. Now you list the connections from each side entering the same hcitool con command twice (one for master and one for slave): 

mtcdt: hcitool con
Connections:
< ACL 00:02:72:21:A7:D7 handle 1 state 1 lm MASTER
mtcdt: hcitool con
Connections:
> ACL 00:23:A7:49:5C:D9 handle 11 state 1 lm SLAVE

The other system should now see the connection.

9. Start minicom on the computer and the device: 

pc: sudo minicom -D /dev/rfcomm0
mtcdt: <ctrl>bE  [This turns echo on]
mtcdt: <ctrl>bA  [This adds a line feed]
mtcdt: minicom -D /dev/rfcomm0
mtcdt: <ctrl>aE  [This turns echo on]
mtcdt: <ctrl>aA  [This adds a line feed]

Now you have a TTY connection to communicate.

10. Type a message and watch it appear on the other side.

11. To terminate in minicom, enter:

mtcdt: <ctrl>aX or <ctrl>bX.

12. If you connect to the rfcomm0 device because the interface is in a bad state, reset as shown: 

mtcdt: rfcomm release 0
mtcdt: hciconfig hci0 up
mtcdt: /usr/sbin/hciconfig hci0 piscan

This clears rfcomm0

13. Now enter the appropriate rfcomm command on both sides and the link should come back up.

Classic Bluetooth File Push (sending data)

To do File Push on Bluetooth, you first must verify your computer runs Ubuntu with Bluetooth. Use the Ubuntu system with Bluetooth to receive the data.

Follow these instructions to do File Push:

1. On the device, install the following two packages:

mtcdt: libopenobex1_1.5-r0.0_arm926ejste.ipk
mtcdt: obexftp_0.23-r0.0_arm926ejste.ipk

2. In Ubuntu, under Personal File Sharing Preferences and Receive Files over Bluetooth, check Receive Files in Downloads folder over Bluetooth.

3. In the drop-down, Accept files, select Always and check Notify about received files.

Received files will be in the Downloads directory.

4. Obtain the MAC address of the ubuntu system using this command:

mtcdt: hciconfig

The system displays the following results: 

hci0:  Type: BR/EDR  Bus: USB
BD Address: 5C:F3:70:74:04:AF  ACL MTU: 1021:8  SCO MTU: 64:1
UP RUNNING PSCAN ISCAN
RX bytes:98993 acl:854 sco:0 events:904 errors:0
TX bytes:21459 acl:632 sco:0 commands:289 errors:0

In this case, the MAC address is 5C:F3:70:74:04:AF labeled as BD address.

5. Copy a large file to the device for testing.

mtcdt: cd /boot
mtcdt: scp initrd.img-3.13.0-98-generic root@conduit:/var/volatile

6. On the PC, find the channel number to specify in the list the services of the Ubuntu system. Enter: 

PC: sdptool browse local

 The following results display: 

...
Service Name: OBEX Object Push
Service RecHandle: 0x10008
Service Class ID List:
       "OBEX Object Push" (0x1105)
Protocol Descriptor List:
      "L2CAP" (0x0100)
      "RFCOMM" (0x0003)
           Channel: 9
      "OBEX" (0x0008)
Profile Descriptor List:
   "OBEX Object Push" (0x1105)
           Version: 0x0100
...

Under OBEX Object Push, look for Channel in the listing. In this case, the channel number is 9.

7.To execute the File Push, enter the directory location and the following command including the MAC address and channel number: 

mtcdt: cd /var/volatile
mtcdt: time obexftp -SH -b 5C:F3:70:74:04:AF -B 9 -U none -p linux_3.13.0.orig.tar.gz -o f1

Bring down Bluetooth

To bring down Bluetooth using Ubuntu, enter this command:

pc: sudo hciconfig hci0 down