Files
matrix-screen-controller/核桃派软件源代码/scripts/install_mobile_bluetooth.sh
T

49 lines
1.8 KiB
Bash

#!/bin/sh
# Enable the existing WalnutPi vendor controller, without changing WiFi rfkill.
set -eu
test "$(id -u)" = 0 || { echo 'root is required' >&2; exit 1; }
test -x /usr/bin/hciattach
test -x /usr/sbin/rfkill
test -f /lib/systemd/system/aw859-bluetooth.service
install -d -m 0755 /etc/systemd/system/aw859-bluetooth.service.d
cat > /etc/systemd/system/aw859-bluetooth.service.d/50-matrix-mobile.conf <<'EOF'
[Service]
ExecStartPre=
ExecStartPre=/usr/sbin/modprobe hci_uart
ExecStartPre=/usr/sbin/rfkill unblock bluetooth
ExecStart=
ExecStart=/usr/bin/hciattach -n -s 1500000 /dev/ttyBT0 sprd
Restart=on-failure
RestartSec=5
EOF
install -d -m 0755 /etc/systemd/system/bluetooth.service.d
cat > /etc/systemd/system/bluetooth.service.d/50-matrix-mobile.conf <<'EOF'
[Unit]
After=aw859-bluetooth.service
Wants=aw859-bluetooth.service
EOF
python3 - <<'PY'
from pathlib import Path
import re
p = Path('/etc/bluetooth/main.conf')
text = p.read_text(encoding='utf-8')
backup = p.with_name('main.conf.matrix-mobile-original')
if not backup.exists():
with backup.open('x', encoding='utf-8') as stream:
stream.write(text)
for key, value in [('ControllerMode', 'le'), ('AlwaysPairable', 'false')]:
pattern = r'(?m)^\s*' + key + r'\s*=.*$'
if re.search(pattern, text):
text = re.sub(pattern, key + '=' + value, text)
else:
text = text.replace('[General]', '[General]\n' + key + '=' + value, 1)
p.write_text(text, encoding='utf-8')
PY
systemctl unmask bluetooth.service aw859-bluetooth.service
systemctl daemon-reload
systemctl enable bluetooth.service aw859-bluetooth.service
if [ "${DEFER_SERVICE_START:-0}" != 1 ]; then
# Bluetooth failure must not prevent deploying or running the display service.
systemctl start aw859-bluetooth.service bluetooth.service || echo 'Bluetooth unavailable; inspect mobile status' >&2
fi