Saturday, April 21, 2018

Bluetooth serial Raspberry Pi 3


set up raspberry pi 3 bluetooth to allow serial connection once paired.

https://hacks.mozilla.org/2017/02/headless-raspberry-pi-configuration-over-bluetooth/

Basic part of above which covers setting up bluetooth connection.  No pass code, all parings accepted.

rfcomm connects and presents a shell session on connection w/o password, so more can be done to secure this.

You’ll create this file in the /home/pi directory, like so:

$ sudo nano /home/pi/btserial.sh
 
Add the following lines to the script:

#!/bin/bash -e

#Edit the display name of the RaspberryPi so you can distinguish
#your unit from others in the Bluetooth console
#(very useful in a class setting)

echo PRETTY_HOSTNAME=raspberrypi > /etc/machine-info

# Edit /lib/systemd/system/bluetooth.service to enable BT services
sudo sed -i: 's|^Exec.*toothd$| \
ExecStart=/usr/lib/bluetooth/bluetoothd -C \
ExecStartPost=/usr/bin/sdptool add SP \
ExecStartPost=/bin/hciconfig hci0 piscan \
|g' /lib/systemd/system/bluetooth.service

# create /etc/systemd/system/rfcomm.service to enable 
# the Bluetooth serial port from systemctl
sudo cat <<EOF | sudo tee /etc/systemd/system/rfcomm.service > /dev/null
[Unit]
Description=RFCOMM service
After=bluetooth.service
Requires=bluetooth.service

[Service]
ExecStart=/usr/bin/rfcomm watch hci0 1 getty rfcomm0 115200 vt100 -a pi

[Install]
WantedBy=multi-user.target
EOF

# enable the new rfcomm service
sudo systemctl enable rfcomm

# start the rfcomm service
sudo systemctl restart rfcomm
 
Save the file, and then make it executable by updating its permissions like so:

$ chmod 755 /home/pi/btserial.sh
 
Now you have the basics of the script required to turn on the Bluetooth service and configure it.  But to do this 100% headless, you’ll need to run this new script on startup. Let’s edit /etc/rc.local to launch this script automatically.

$ sudo nano /etc/rc.local
 
Add the following lines after the initial comments:

#Launch bluetooth service startup script /home/pi/btserial.sh
sudo /home/pi/btserial.sh &
 
Save the rc.local script, unmount the image, and write it to an SD Card using your favorite tool (mine is ApplePiBaker).
Now you are ready to go.  Plug in power to the Rpi and give it 30 seconds or so to startup. Then unplug it, and plug it in again and let it boot up a second time.  Restarting the Bluetooth service doesn’t work correctly, so we need to reboot.
-30-

No comments:

Post a Comment