运行环境
- 硬件环境:raspberry-zero-w with Linux/arm 4.19.66+/ kernel
- 系统环境:2019-09-26-raspbian-buster-lite
- 参考借鉴:通过蓝牙操作树莓派 | 建立蓝牙PAN连接
安装软件
- 为了方便,后续命令皆在root下运行
1 | apt install bluez bluez-firmware bluez-tools dnsmasq |
配置网络
- 添加蓝牙PAN接口
1 | cat << EOF > /etc/systemd/network/pan0.netdev |
- 配置蓝牙PAN接口
1 | cat << EOF > /etc/systemd/network/pan0.network |
- 创建蓝牙代理服务
1 | cat << EOF > /etc/systemd/system/bt-agent.service |
- 创建蓝牙网络服务
1 | cat << EOF > /etc/systemd/system/bt-network.service |
重启网络
- 通过dnsmasq来为接入设备分配IP地址及设置域名解析服务器
1 | # 编辑 /etc/dnsmasq.conf 在文件末尾添加如下内容: |
- 经过以下操作后,使用蓝牙与树莓派配对便可通过SSH访问192.168.88.1来控制设备了
1 | systemctl start systemd-networkd |
- 设置其开机自启
1 | systemctl enable bluetooth |
外网访问
如果需要通过蓝牙访问互联网,那么还需要执行以下几步
临时开启内核转发:
sysctl -w net.ipv4.ip_forward=1
临时允许流量通过wlan0网卡出站来访问互联网:
iptables -t nat -A POSTROUTING -s 192.168.88.1/24 -o wlan0 -j MASQUERADE
现在应该已经可以连接外网了,但是重启后依然无法访问外网,想要重启依然有效请如下设置
1 | # 编辑 /etc/sysctl.conf 去掉下面行前的注释 |
其他问题
与蓝牙设备连接后树莓派的pan0网卡才会有IP地址,如果正确设置但无法连接树莓派请断开重连试试
Android进入蓝牙 -> 已配对的设备 -> raspberry -> 互联网连接打开,如果要通过蓝牙控制树莓派时需要先关闭移动数据和WIFI,否则会PING不通
Windows配对后需要先去 控制面板\硬件和声音\设备和打印机 右键树莓派设备 -> 连接时使用(C) -> 接入点(A),连接成功后再去 控制面板\网络和 Internet\网络连接 就可以看到多了一个蓝牙网络连接,现在即可与树莓派PING通了