31 lines
935 B
Bash
31 lines
935 B
Bash
#!/bin/bash
|
|
|
|
# Simple shell script to wait for the tty for an uart using BT HCI to show up
|
|
# and then invoke btattach with the right parameters, this is intended to be
|
|
# invoked from a hardware-activated systemd service
|
|
#
|
|
# For now this only suports ACPI enumerated Broadcom BT HCIs.
|
|
# This has been tested on Bay and Cherry Trail devices with both ACPI and
|
|
# PCI enumerated UARTs.
|
|
#
|
|
# Note the kernel bt developers are working on solving this entirely in the
|
|
# kernel, so it is not worth the trouble to write something better then this.
|
|
|
|
BT_DEV="/sys/bus/platform/devices/$1"
|
|
BT_DEV="$(readlink -f $BT_DEV)"
|
|
UART_DEV="$(dirname $BT_DEV)"
|
|
|
|
# Stupid GPD-pocket has USB BT with id 0000:0000, but still claims to have
|
|
# an uart attached bt
|
|
if [ "$1" = "BCM2E7E:00" ] && lsusb | grep -q "ID 0000:0000"; then
|
|
exit 0
|
|
fi
|
|
|
|
while [ ! -d "$UART_DEV/tty" ]; do
|
|
sleep .2
|
|
done
|
|
|
|
TTY="$(ls $UART_DEV/tty)"
|
|
|
|
exec btattach --bredr "/dev/$TTY" -P bcm
|