我有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)
答案 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,具体取决于谁需要执行权限... 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提示,请发出此信息......
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)
除了
之外,您的解决方案几乎完美无瑕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
然后,在另一台设备上将其配对并连接网络。希望之后一切都可以正常工作。