使用Raspbian系统通过蓝牙实现IP

时间:2015-02-03 16:41:55

标签: bluetooth raspberry-pi raspbian

我有2个Raspberry Pis,运行Raspbian,是最新的。每个Pi都有一个蓝牙USB加密狗。我可以使用this.

通过RFCOMM进行沟通

现在,我想在蓝牙物理链路上建立一个合适的IP层。据我所知,我必须使用PAN(个人局域网),这应该创建一个我可以用ifconfig管理的网络接口。我正在尝试调整this tutorial,但我遇到了无效的交换错误。

在RPi0上,我运行

$ 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)

4 个答案:

答案 0 :(得分:7)

所以近期情况似乎发生了很大的变化,Pi在2016年推出了Bluez 5.23。

刚刚花了两天时间,这些步骤已经解决了我的问题,但可能有助于任何Debian Jessie安装。希望如此。测试了一个新的pi,刚刚运行jessie全新安装。这将为您的eth0网络桥接蓝牙盘(因此使用您现有的dhcp / dns服务器等)。这是我的第一篇文章,请原谅这里各种约定的愚蠢。我希望这可以帮助别人并为你节省一点时间。

这可能不是最佳解决方案(我不是大师),我很乐意听到一些改进。

安装一些东西(python东西会帮助scritps):  sudo apt-get install bridge-utils bluez python-dbus python-gobject

下载两个非常酷的python脚本,将它们放在/ usr / local / bin和chmod中,可能都是755,具体取决于谁需要执行权限... blueagent5bt-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提示,请发出此信息......

hciconfig hci0 sspmode 0

使用bt-pan脚本中的特殊魔法启动PAN。它没有返回,所以最后添加一个&符号。

bt-pan  server pan0 &

轻松自信地启动蓝牙安全代理。可选择设置一个引脚(默认为0000)。

blueagent5 --pin 4321 &

好的,最后一件事。转发网络。这只有在路由器/ dhcp没有花哨认证时才有效,如果有,你可能需要进一步研究解决这个问题。

sysctl -w net.ipv4.ip_forward=1

iptables -A INPUT -i pan0 -j ACCEPT
iptables -A FORWARD -i pan0 -j ACCEPT

完成后,您可能需要保存这些iptables设置,并在每次系统启动时恢复它们。

Tip起脚尖到你的平板电脑或者你想要连接到互联网的任何东西。在您的设置中打开蓝牙。与4321配对作为您的引脚,并连接到本地网络。

但是你毕竟不需要tip起脚尖,这对我来说似乎都很健壮。享受!

答案 1 :(得分:4)

经过多次努力,这就是我的工作方式。我们希望它可以帮助别人。长话短说,编辑/etc/bluetooth/main.conf以包含这一行:

DisablePlugins = network

重新启动蓝牙服务。

sudo service bluetooth restart

仅供参考,这是我对"服务器"的命令。 :

sudo pand -i 00:1A:7D:DA:71:14 --listen --master --role=NAP

对于"客户":

sudo pand --nodetach --connect 00:1A:7D:DA:71:14

然后你可以使用ifconfig,ping,ssh ...通常的东西。你可能想看看here,这对我很有用。

答案 2 :(得分:2)

@cowswithguns

除了

之外,您的解决方案几乎完美无瑕
bt-pan  server pan &

应该是

bt-pan  server pan0 &

适用于rpi3和bluez5.X

只是警告它仍然以某种方式使用wifi。我试图通过蓝牙ssh到rpi3,而rpi3与提供自己的AP进行一对一连接的设备相关联,这会切断蓝牙通信。仅当rpi3与wifi AP关联时才有效。

答案 3 :(得分:-1)

在raspbian上可以使用bluez-tools软件包,其功能与上述python脚本相同。 original answer

这是在Raspbian上设置蓝牙声像的方法。

此答案使用systemd / networked,但您可以根据需要对interfaces文件和dnsmasq进行类似的操作。

运行:

<div class="row"> <div class="round"> <img mat-card-image src="https://scontent-bom1-1.xx.fbcdn.net/v/t1.0-9/46463461_1157513267757941_7425556584253620224_n.jpg?_nc_cat=100&_nc_ht=scontent-bom1-1.xx&oh=3f957c2a41da24c5f0c505d61241fba5&oe=5C7550A3" alt="Card image cap"> </div> <div> <p><a routerLink="#">Rupesh Yadav</a></p> <p><i>April,12,2018</i></p> </div> </div>

创建以下文件:

/etc/systemd/network/pan0.netdev

sudo apt-get install bluez-tools

/etc/systemd/network/pan0.network

[NetDev]
Name=pan0
Kind=bridge

/etc/systemd/system/bt-agent.service

[Match]
Name=pan0

[Network]
Address=172.20.1.1/24
DHCPServer=yes

/etc/systemd/system/bt-network.service

[Unit]
Description=Bluetooth Auth Agent

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

[Install]
WantedBy=multi-user.target

然后运行

[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

然后,在另一台设备上将其配对并连接网络。希望之后一切都可以正常工作。