IP over Bluetooth 与 Raspbian 个系统
IP over Bluetooth with Raspbian systems
我有 2 个 Raspberry Pi,运行ning Raspbian,是最新的。每个 Pi 都有一个蓝牙 USB 加密狗。我可以让他们使用 this.
通过 RFCOMM 进行通信
现在,我想在蓝牙物理层上建立一个合适的 IP 层 link。据我所知,我必须使用 PAN(个人局域网),它应该创建一个我可以用 ifconfig 管理的网络接口。我正在尝试调整 this tutorial,但我遇到了 无效交换 错误。
在树莓派0上,我运行
$ sudo pand --nodetach --listen --master --role=NAP
pand[2313]: Bluetooth PAN daemon version 4.99
在 RPi1 上,我 运行
$ pand --nodetach --connect 00:1A:7D:DA:71:16
pand[2323]: Bluetooth PAN daemon version 4.99
pand[2323]: Connecting to 00:1A:7D:DA:71:16
pand[2323]: Connect to 00:1A:7D:DA:71:16 failed. Invalid exchange(52)
我找不到关于此错误代码的任何相关信息。知道我该如何解决这个问题吗?还是我弄错了,我应该用别的东西代替 PAN 吗?
提前致谢!
编辑:
在指定我要收听的蓝牙设备时,我收到另一条错误消息。它也没有任何意义,因为我没有 运行 任何其他蓝牙服务器。
$ sudo pand -i 00:1A:7D:DA:71:16 --nodetach --listen --role=NAP
pand[2582]: Bluetooth PAN daemon version 4.99
pand[2582]: Bind failed. Address already in use(98)
经过大量的努力,这就是我让它工作的方式。让我们希望它可以帮助别人。长话短说,编辑 /etc/bluetooth/main.conf 以包含此行:
DisablePlugins = network
重新启动蓝牙服务。
sudo service bluetooth restart
仅供参考,这是我对 "server" 的命令:
sudo pand -i 00:1A:7D:DA:71:14 --listen --master --role=NAP
对于"client":
sudo pand --nodetach --connect 00:1A:7D:DA:71:14
然后你就可以使用 ifconfig、ping、ssh...这些常用的东西了。你可能想看看here,对我很有用。
所以最近情况似乎发生了很大变化,Pi 在 2016 年配备了 Bluez 5.23。
仅仅花了两天时间,这些步骤已经为我的 pi 解决了这个问题,但可能对任何 Debian Jessie 安装都有帮助。但愿如此。刚刚在新的 pi 运行 jessie 上进行了全新安装测试。这将提供一个桥接到您的 eth0 网络的蓝牙 pan(从而使用您现有的 dhcp/dns 服务器等)。这是我的第一个 post,所以请原谅这里各种约定的愚蠢。我希望这对某人有所帮助并为您节省一点时间。
这可能不是最佳解决方案(我不是大师),我很想听听一些改进。
安装一些东西(python 东西对 scritps 有帮助):
sudo apt-get install bridge-utils bluez python-dbus python-gobject
下载两个非常酷的 python 脚本,将它们放在 /usr/local/bin 中,然后 chmod 可能都设置为 755,具体取决于谁需要执行...
blueagent5
和 bt-pan。非常感谢和敬意他们各自的作者。天哪,这种事情可以节省很多时间和痛苦。
现在,我们需要一座桥。在 /etc/network/interfaces
末尾添加以下内容
auto pan0
iface pan0 inet dhcp
bridge_stp off
bridge_ports eth0
我大约在这个时候重新启动以确保一切正常。
sudo reboot
重新登录,我们发出
modprobe bnep
hciconfig hci0 lm master,accept
ip link set pan0 up
如果您不想要 pin 提示,请不要执行下一步。为确保我们收到 PIN 提示,请发出此...
hciconfig hci0 sspmode 0
使用 bt-pan 脚本中的特殊魔法启动 PAN。它没有return,所以在末尾添加一个符号。
bt-pan server pan0 &
轻松自信地启动蓝牙安全代理。可选地设置一个引脚(默认为 0000)。
blueagent5 --pin 4321 &
好的,最后一件事。转发网络。这仅在 router/dhcp 没有花哨的身份验证时有效,如果有,您可能需要进一步查看以解决此问题。
sysctl -w net.ipv4.ip_forward=1
iptables -A INPUT -i pan0 -j ACCEPT
iptables -A FORWARD -i pan0 -j ACCEPT
完成后,您可能需要保存这些 iptables 设置并在每次系统启动时恢复它们。
小心翼翼地使用平板电脑或任何您尝试连接到互联网的设备。在您的设置中打开蓝牙。将 4321 作为密码配对,并连接到本地网络。
但你毕竟不需要踮起脚尖,我觉得这一切都很稳健。享受吧!
除了
,您的解决方案几乎完美无缺
bt-pan server pan &
应该是
bt-pan server pan0 &
适用于 rpi3 和 bluez5.X
唯一需要注意的是它仍然以某种方式使用 wifi。我正在尝试通过蓝牙 ssh 到 rpi3,而 rpi3 与一个设备相关联,该设备为 one-to-one 连接提供自己的 AP,这会切断蓝牙通信。仅当 rpi3 与 wifi AP 相关联时才有效。
bluez-tools 软件包在 raspbian 上可用,其功能与上述 python 脚本相同。 original answer
以下是在 Raspbian 上设置蓝牙平移的方法。
此答案使用 systemd/networkd,但如果需要,您可以对接口文件和 dnsmasq 执行类似的操作。
运行:
sudo apt-get install bluez-tools
创建以下文件:
/etc/systemd/network/pan0.netdev
[NetDev]
Name=pan0
Kind=bridge
/etc/systemd/network/pan0.网络
[Match]
Name=pan0
[Network]
Address=172.20.1.1/24
DHCPServer=yes
/etc/systemd/system/bt-agent.服务
[Unit]
Description=Bluetooth Auth Agent
[Service]
ExecStart=/usr/bin/bt-agent -c NoInputNoOutput
Type=simple
[Install]
WantedBy=multi-user.target
/etc/systemd/system/bt-network.服务
[Unit]
Description=Bluetooth NEP PAN
After=pan0.network
[Service]
ExecStart=/usr/bin/bt-network -s nap pan0
Type=simple
[Install]
WantedBy=multi-user.target
然后运行
sudo systemctl enable systemd-networkd
sudo systemctl enable bt-agent
sudo systemctl enable bt-network
sudo systemctl start systemd-networkd
sudo systemctl start bt-agent
sudo systemctl start bt-network
终于要配对了,运行:
sudo bt-adapter --set Discoverable 1
然后,在另一台设备上配对并连接网络。希望在那之后一切都能正常工作。
我有 2 个 Raspberry Pi,运行ning Raspbian,是最新的。每个 Pi 都有一个蓝牙 USB 加密狗。我可以让他们使用 this.
通过 RFCOMM 进行通信现在,我想在蓝牙物理层上建立一个合适的 IP 层 link。据我所知,我必须使用 PAN(个人局域网),它应该创建一个我可以用 ifconfig 管理的网络接口。我正在尝试调整 this tutorial,但我遇到了 无效交换 错误。
在树莓派0上,我运行
$ sudo pand --nodetach --listen --master --role=NAP
pand[2313]: Bluetooth PAN daemon version 4.99
在 RPi1 上,我 运行
$ pand --nodetach --connect 00:1A:7D:DA:71:16
pand[2323]: Bluetooth PAN daemon version 4.99
pand[2323]: Connecting to 00:1A:7D:DA:71:16
pand[2323]: Connect to 00:1A:7D:DA:71:16 failed. Invalid exchange(52)
我找不到关于此错误代码的任何相关信息。知道我该如何解决这个问题吗?还是我弄错了,我应该用别的东西代替 PAN 吗?
提前致谢!
编辑: 在指定我要收听的蓝牙设备时,我收到另一条错误消息。它也没有任何意义,因为我没有 运行 任何其他蓝牙服务器。
$ sudo pand -i 00:1A:7D:DA:71:16 --nodetach --listen --role=NAP
pand[2582]: Bluetooth PAN daemon version 4.99
pand[2582]: Bind failed. Address already in use(98)
经过大量的努力,这就是我让它工作的方式。让我们希望它可以帮助别人。长话短说,编辑 /etc/bluetooth/main.conf 以包含此行:
DisablePlugins = network
重新启动蓝牙服务。
sudo service bluetooth restart
仅供参考,这是我对 "server" 的命令:
sudo pand -i 00:1A:7D:DA:71:14 --listen --master --role=NAP
对于"client":
sudo pand --nodetach --connect 00:1A:7D:DA:71:14
然后你就可以使用 ifconfig、ping、ssh...这些常用的东西了。你可能想看看here,对我很有用。
所以最近情况似乎发生了很大变化,Pi 在 2016 年配备了 Bluez 5.23。
仅仅花了两天时间,这些步骤已经为我的 pi 解决了这个问题,但可能对任何 Debian Jessie 安装都有帮助。但愿如此。刚刚在新的 pi 运行 jessie 上进行了全新安装测试。这将提供一个桥接到您的 eth0 网络的蓝牙 pan(从而使用您现有的 dhcp/dns 服务器等)。这是我的第一个 post,所以请原谅这里各种约定的愚蠢。我希望这对某人有所帮助并为您节省一点时间。
这可能不是最佳解决方案(我不是大师),我很想听听一些改进。
安装一些东西(python 东西对 scritps 有帮助):
sudo apt-get install bridge-utils bluez python-dbus python-gobject
下载两个非常酷的 python 脚本,将它们放在 /usr/local/bin 中,然后 chmod 可能都设置为 755,具体取决于谁需要执行... blueagent5 和 bt-pan。非常感谢和敬意他们各自的作者。天哪,这种事情可以节省很多时间和痛苦。
现在,我们需要一座桥。在 /etc/network/interfaces
末尾添加以下内容auto pan0
iface pan0 inet dhcp
bridge_stp off
bridge_ports eth0
我大约在这个时候重新启动以确保一切正常。
sudo reboot
重新登录,我们发出
modprobe bnep
hciconfig hci0 lm master,accept
ip link set pan0 up
如果您不想要 pin 提示,请不要执行下一步。为确保我们收到 PIN 提示,请发出此...
hciconfig hci0 sspmode 0
使用 bt-pan 脚本中的特殊魔法启动 PAN。它没有return,所以在末尾添加一个符号。
bt-pan server pan0 &
轻松自信地启动蓝牙安全代理。可选地设置一个引脚(默认为 0000)。
blueagent5 --pin 4321 &
好的,最后一件事。转发网络。这仅在 router/dhcp 没有花哨的身份验证时有效,如果有,您可能需要进一步查看以解决此问题。
sysctl -w net.ipv4.ip_forward=1
iptables -A INPUT -i pan0 -j ACCEPT
iptables -A FORWARD -i pan0 -j ACCEPT
完成后,您可能需要保存这些 iptables 设置并在每次系统启动时恢复它们。
小心翼翼地使用平板电脑或任何您尝试连接到互联网的设备。在您的设置中打开蓝牙。将 4321 作为密码配对,并连接到本地网络。
但你毕竟不需要踮起脚尖,我觉得这一切都很稳健。享受吧!
除了
,您的解决方案几乎完美无缺bt-pan server pan &
应该是
bt-pan server pan0 &
适用于 rpi3 和 bluez5.X
唯一需要注意的是它仍然以某种方式使用 wifi。我正在尝试通过蓝牙 ssh 到 rpi3,而 rpi3 与一个设备相关联,该设备为 one-to-one 连接提供自己的 AP,这会切断蓝牙通信。仅当 rpi3 与 wifi AP 相关联时才有效。
bluez-tools 软件包在 raspbian 上可用,其功能与上述 python 脚本相同。 original answer
以下是在 Raspbian 上设置蓝牙平移的方法。
此答案使用 systemd/networkd,但如果需要,您可以对接口文件和 dnsmasq 执行类似的操作。
运行:
sudo apt-get install bluez-tools
创建以下文件:
/etc/systemd/network/pan0.netdev
[NetDev]
Name=pan0
Kind=bridge
/etc/systemd/network/pan0.网络
[Match]
Name=pan0
[Network]
Address=172.20.1.1/24
DHCPServer=yes
/etc/systemd/system/bt-agent.服务
[Unit]
Description=Bluetooth Auth Agent
[Service]
ExecStart=/usr/bin/bt-agent -c NoInputNoOutput
Type=simple
[Install]
WantedBy=multi-user.target
/etc/systemd/system/bt-network.服务
[Unit]
Description=Bluetooth NEP PAN
After=pan0.network
[Service]
ExecStart=/usr/bin/bt-network -s nap pan0
Type=simple
[Install]
WantedBy=multi-user.target
然后运行
sudo systemctl enable systemd-networkd
sudo systemctl enable bt-agent
sudo systemctl enable bt-network
sudo systemctl start systemd-networkd
sudo systemctl start bt-agent
sudo systemctl start bt-network
终于要配对了,运行:
sudo bt-adapter --set Discoverable 1
然后,在另一台设备上配对并连接网络。希望在那之后一切都能正常工作。