31 lines
898 B
Bash
31 lines
898 B
Bash
#!/bin/sh
|
|
|
|
HCIATTACH=/bin/hciattach
|
|
if grep -q "Pi 4" /proc/device-tree/model; then
|
|
BDADDR=
|
|
else
|
|
SERIAL=`cat /proc/device-tree/serial-number | cut -c9-`
|
|
B1=`echo $SERIAL | cut -c3-4`
|
|
B2=`echo $SERIAL | cut -c5-6`
|
|
B3=`echo $SERIAL | cut -c7-8`
|
|
BDADDR=`printf b8:27:eb:%02x:%02x:%02x $((0x$B1 ^ 0xaa)) $((0x$B2 ^ 0xaa)) $((0x$B3 ^ 0xaa))`
|
|
fi
|
|
|
|
if [ -e /sys/class/bluetooth/hci0 ]; then
|
|
# Bluetooth is already enabled
|
|
exit 0
|
|
fi
|
|
|
|
uart0="`cat /proc/device-tree/aliases/uart0`"
|
|
serial1="`cat /proc/device-tree/aliases/serial1`"
|
|
|
|
if [ "$uart0" = "$serial1" ] ; then
|
|
uart0_pins="`wc -c /proc/device-tree/soc/gpio@7e200000/uart0_pins/brcm\,pins | cut -f 1 -d ' '`"
|
|
if [ "$uart0_pins" = "16" ] ; then
|
|
$HCIATTACH /dev/serial1 bcm43xx 3000000 flow - $BDADDR
|
|
else
|
|
$HCIATTACH /dev/serial1 bcm43xx 921600 noflow - $BDADDR
|
|
fi
|
|
else
|
|
$HCIATTACH /dev/serial1 bcm43xx 460800 noflow - $BDADDR
|
|
fi
|