serial_console_over_bluetooth
Serial console over Bluetooth
Notes
The rfcomm process has higher CPU usage when connected.
The rfcomm utility is deprecated since Bluez 5.44. No alternative found yet, maybe look into PAN.
Server
Stop ModemManager from interefering:
systemctl stop ModemManager
systemctl disable MomdemManager
Modify
/etc/bluetooth/main.conf
:
[Policy]
AutoEnable=true
Start and enable bluetooth service:
systemctl enable bluetooth
systemctl start bluetooth
Create systemd service
/etc/systemd/system/rfcomm.service
[Unit]
Description=RFCOMM service
After=bluetooth.service
Requires=bluetooth.service
[Service]
ExecStart=/usr/bin/rfcomm watch hci0 1 setsid /sbin/agetty --8bits --noclear -L rfcomm0 115200 linux
[Install]
WantedBy=multi-user.target
Enable and start the rfcomm service:
systemctl enable rfcomm
systemctl start rfcomm
Client
Pairing and connecting
On the server side:
bluetoothctl
discoverable on
pairable on
On the client side:
bluetoothctl
scan on
-wait to discover server-
scan off
pair <mac>
On the server:
bluetoothctl
discoverable off
pairable off
trust <BT-MAC of client>
Connect to the serial console over bluetooth:
# There should be a rfcomm0 device
crw-rw----. 1 root dialout 216, 0 11 jun 08:14 /dev/rfcomm0
# If device is nonexistent, create one
sudo rfcomm connect /dev/rfcomm0 <BT server-MAC-address> 1 &
Connected /dev/rfcomm0 to <MAC> on channel 1
Press CTRL-C for hangup
# Connect to the serial console:
screen /dev/rfcomm0 115200
Troubleshooting
serial_console_over_bluetooth.txt · Last modified: 2021/10/09 15:14 (external edit)