Raspberry通过蓝牙SSH控制

运行环境

安装软件

  1. 为了方便,后续命令皆在root下运行
1
apt install bluez bluez-firmware bluez-tools dnsmasq

配置网络

  1. 添加蓝牙PAN接口
1
2
3
4
5
cat << EOF > /etc/systemd/network/pan0.netdev
[NetDev]
Name=pan0
Kind=bridge
EOF
  1. 配置蓝牙PAN接口
1
2
3
4
5
6
7
cat << EOF > /etc/systemd/network/pan0.network
[Match]
Name=pan0
[Network]
Address=192.168.88.1/24
DHCPServer=yes
EOF
  1. 创建蓝牙代理服务
1
2
3
4
5
6
7
8
9
10
11
cat << EOF > /etc/systemd/system/bt-agent.service
[Unit]
Description=Bluetooth Auth Agent

[Service]
ExecStart=/usr/bin/bt-agent -c NoInputNoOutput
Type=simple

[Install]
WantedBy=multi-user.target
EOF
  1. 创建蓝牙网络服务
1
2
3
4
5
6
7
8
9
10
11
12
cat << EOF > /etc/systemd/system/bt-network.service
[Unit]
Description=Bluetooth NEP PAN
After=pan0.network

[Service]
ExecStart=/usr/bin/bt-network -s nap pan0
Type=simple

[Install]
WantedBy=multi-user.target
EOF

重启网络

  1. 通过dnsmasq来为接入设备分配IP地址及设置域名解析服务器
1
2
3
4
5
# 编辑 /etc/dnsmasq.conf 在文件末尾添加如下内容:
interface=pan0
listen-address=192.168.88.1
server=223.5.5.5
dhcp-range=192.168.88.100,192.168.88.200,255.255.255.0,24h
  1. 经过以下操作后,使用蓝牙与树莓派配对便可通过SSH访问192.168.88.1来控制设备了
1
2
3
4
5
6
7
systemctl start systemd-networkd
systemctl start bt-agent
systemctl start bt-network
systemctl restart dnsmasq

# 设置蓝牙设备为可被发现
bt-adapter --set Discoverable 1
  1. 设置其开机自启
1
2
3
4
5
systemctl enable bluetooth
systemctl enable systemd-networkd
systemctl enable bt-agent
systemctl enable bt-network
systemctl enable dnsmasq

外网访问

  1. 如果需要通过蓝牙访问互联网,那么还需要执行以下几步

  2. 临时开启内核转发:sysctl -w net.ipv4.ip_forward=1

  3. 临时允许流量通过wlan0网卡出站来访问互联网:iptables -t nat -A POSTROUTING -s 192.168.88.1/24 -o wlan0 -j MASQUERADE

  4. 现在应该已经可以连接外网了,但是重启后依然无法访问外网,想要重启依然有效请如下设置

1
2
3
4
5
6
7
8
9
# 编辑 /etc/sysctl.conf 去掉下面行前的注释
# net.ipv4.ip_forward=1

# 保存iptables流量转发规则到iptables.ipv4.nat
iptables -t nat -A POSTROUTING -s 192.168.88.1/24 -o wlan0 -j MASQUERADE
iptables-save > /etc/iptables.ipv4.nat

# 开机时加载保存的规则,将下面命令添加到/etc/rc.local中的exit 0之前
iptables-restore < /etc/iptables.ipv4.nat

其他问题

  1. 与蓝牙设备连接后树莓派的pan0网卡才会有IP地址,如果正确设置但无法连接树莓派请断开重连试试

  2. Android进入蓝牙 -> 已配对的设备 -> raspberry -> 互联网连接打开,如果要通过蓝牙控制树莓派时需要先关闭移动数据和WIFI,否则会PING不通

  3. Windows配对后需要先去 控制面板\硬件和声音\设备和打印机 右键树莓派设备 -> 连接时使用(C) -> 接入点(A),连接成功后再去 控制面板\网络和 Internet\网络连接 就可以看到多了一个蓝牙网络连接,现在即可与树莓派PING通了