Create bluetooth_hid.md

This commit is contained in:
Maxim Devaev 2020-11-08 01:56:23 +03:00 committed by GitHub
parent b84703a81d
commit 7f2ca4445c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 46 additions and 0 deletions

46
pages/bluetooth_hid.md Normal file
View File

@ -0,0 +1,46 @@
# Bluetooth HID
Pi-KVM is able to emulate a Bluetooth keyboard & mouse.
This is not the main case of using Pi-KVM since you still need it to pair with a remote host, but can be used for something like mobile KVM.
:exclamation: Using Bluetooth HID requires additional configuration of the operating system. For v2, this means losing the UART port,
since it will be used by Bluetooth. Also, Bluetooth operation was tested only on RPi4 and v2 platform. Other boards may require different system service settings.
:exclamation: Bluetooth mouse can work only in [relative mode](mouse.md). The reason is that many Bluetooth host drivers do not correctly implement HID descriptors.
### Configuring
1. Switch filesystem to RW-mode, perform update and install some packages:
```
# rw
# pacman -Syu
# pacman -S bluez bluez-utils raspberrypi-bluetooth
```
2. Edit `/boot/config.txt` and comment these lines:
```
#enable_uart=1
#dtoverlay=disable-bt
```
3. Create an empty directory `/var/lib/bluetooth` and add mountpoint to `/etc/fstab`:
```
# mkdir /var/lib/bluetooth
# echo 'tmpfs /var/lib/bluetooth tmpfs nodev,nosuid,mode=0755 0 0' >> /etc/fstab
```
4. Override and enable the services:
```
# mkdir /etc/systemd/system/bluetooth.service.d
# cat << EOF > /etc/systemd/system/bluetooth.service.d/override.conf
[Service]
ExecStart=
ExecStart=/usr/lib/bluetooth/bluetoothd --noplugin=*
EOF
# systemctl enable bluetooth
# systemctl enable raspberrypi-btuart
```
5. Override `kvmd` service:
```
# mkdir /etc/systemd/system/kvmd.service.d
# cat << EOF > /etc/systemd/system/bluetooth.service.d/override.conf
[Service]
AmbientCapabilities=CAP_NET_RAW CAP_NET_BIND_SERVICE CAP_SYS_ADMIN CAP_SETUID CAP_SETGID CAP_CHOWN
CapabilityBoundingSet=CAP_NET_RAW CAP_NET_BIND_SERVICE CAP_SYS_ADMIN CAP_SETUID CAP_SETGID CAP_CHOWN
EOF
```