树莓派4使用蓝牙

2020年11月7日 2872点热度 0人点赞 0条评论

问题描述

我的树莓派4使用的是 ubuntu 系统,没有图形界面,在使用 bluetoothctl 命令连接其他蓝牙设备时会报错 No default controller available 。hciuart.service 启动失败, 报错 Initialization timed out.

更新的解决方案

直接禁用 hciuart.service 的自动启动,然后开机后手动启用。

sudo systemctl disable hciuart.service #禁用

sudo /usr/bin/btuart #启动

新的解决方案

sudo apt install pi-bluetooth
which btuart
sudo vi /usr/bin/btuart
#!/bin/sh

HCIATTACH=/usr/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`"
BTDEV="/dev/ttyAMA0"
 #修改

if [ "$uart0" = "$serial1" ] ; then
        uart0_pins="`wc -c /proc/device-tree/soc/[email protected]/uart0_pins/brcm\,pins | cut -f 1 -d ' '`"
        if [ "$uart0_pins" = "16" ] ; then
                $HCIATTACH $BTDEV bcm43xx 3000000 flow - $BDADDR
  #修改
        else
                $HCIATTACH $BTDEV bcm43xx 921600 noflow - $BDADDR
  #修改
        fi
else
        $HCIATTACH $BTDEV bcm43xx 460800 noflow - $BDADDR
  #修改
fi

解决方案

经过搜索,找到以下命令,执行之后即可正常使用 bluetoothctl。

sudo hciattach /dev/ttyAMA0 bcm43xx 921600

但是每次重启设备之后都要运行一次,很不方便。

KAMINO

这个人很懒,什么都没留下

文章评论