Raspberry PI: Consola Sèrie via Bluetooth

Volem tenir una consola sèrie via bluetooth per si no tenim teclat ni xarxa o poder tenir una alternativa de connexió.

Caldrà fer alguna modificació a la configuaració de la Raspberry PI molt ràpida.

Editarem el fitxer /etc/systemd/system/dbus-org.bluez.service com usuari ‘root’

vim /etc/systemd/system/dbus-org.bluez.service
ExecStart=/usr/lib/bluetooth/bluetoothd -C
ExecStartPost=/usr/bin/sdptool add SP

Ara crearem el servei per el RFCOMM perquè arrenqui a l’inici del sistema.

cat >/etc/systemd/system/rfcomm.service  <<EOF
[Unit] 
Description=RFCOMM
service After=bluetooth.service Requires=bluetooth.service

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

[Install]
WantedBy=multi-user.target
EOF

Habilitarem el servei i l’arrancarem

systemctl enable rfcomm
systemctl start rfcomm

Per emparellar els dispositius en el server en la consola s’ha d’habilitar l’agent:

root@rpi:~# bluetoothctl 

[bluetooth]# agent on
Agent registered
[bluetooth]# default-agent 
Default agent request successful
[NEW] Device xx:xx:xx:xx:xx:xx client
Request PIN code
[agent] Enter PIN code: 123456
.
.
.
[CHG] Device xx:xx:xx:xx:xx:xx ServicesResolved: yes
[CHG] Device xx:xx:xx:xx:xx:xx Paired: yes
Authorize service
[agent] Authorize service 00000000-0000-000-0000-000000000000 (yes/no): yes
.
.
.
Authorize service
[agent] Authorize service 00000000-0000-000-0000-000000000000 (yes/no): yes
[client]# 
[client]# trust xx:xx:xx:xx:xx:xx

CLIENT

Per fer la prova de connexió amb un client caldrà que els dos estiguin enparellats.

systemctl stop ModemManager 
rfcomm -r bind /dev/rfcomm0 xx:xx:xx:xx:xx:xx # <-- mac-de-la-raspberrypi 
screen /dev/rfcomm0
cat >/etc/systemd/system/rfcomm.service  <<EOF 
[Unit] 
Description=RFCOMM
service After=bluetooth.service Requires=bluetooth.service

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

[Install] 
WantedBy=multi-user.target 
EOF

Cal emparellar els dispositius primer

[bluetooth]# power on
Changing power on succeeded
[bluetooth]# scan on
Discovery started
[CHG] Controller xx:xx:xx:xx:xx:xx Discovering: yes
.
.
.
[bluetooth]# pair yy:yy:yy:yy:yy:yy
Attempting to pair with yy:yy:yy:yy:yy:yy
[CHG] Device yy:yy:yy:yy:yy:yy Connected: yes
Request PIN code
[agent] Enter PIN code: 1234
.
.
.

[CHG] Device yy:yy:yy:yy:yy:yy ServicesResolved: yes
[CHG] Device yy:yy:yy:yy:yy:yy Paired: yes
Pairing successful
[bluetooth]# scan off