bluetooth - 如何在 Linux/Ubuntu 上关闭蓝牙配对?
问题描述
我已经根据https://people.csail.mit.edu/albert/bluez-intro/x502.html的示例编写了一个蓝牙客户端应用程序和一个蓝牙服务器应用程序。
服务器应用程序在 Raspberry Pi 上运行,客户端在 Ubuntu 18.04 机器上运行。
通信按预期工作。
我注意到,客户端第一次连接时,会弹出一个系统窗口(在客户端 Ubuntu 框上)询问配对请求。
我的客户端代码最终将在没有显示器的设备上运行。我无法为客户端/服务器通信进行任何用户交互。
Q1。客户端正在进行套接字调用:
s = socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM);
是否有一个我可以传递的标志可以用来抑制配对?在我的客户端中,客户端和服务器都不真正关心安全连接。
Q2。当我在两台设备上运行工具“bluetoothctl”时,我看到客户端框中列出了配对设备,但在服务器设备上根本看不到任何配对设备。这怎么可能?我认为配对始终是一种双向信任关系。通信如何仍然有效?
Q3。配对是否需要简单的蓝牙客户端/服务器通信?
解决方案
在bluetoothctl
客户端上时,值得检查一些事情。
除了查看设备配对状态外,还要检查服务器设备是否受信任以及是否列出了串行端口配置文件。
[bluetooth]# info B8:27:EB:22:57:E0
Device B8:27:EB:22:57:E0 (public)
Name: SeeMe
Alias: SeeMe
Class: 0x00480000
Paired: yes
Trusted: no
Blocked: no
Connected: no
LegacyPairing: no
UUID: Serial Port (00001101-0000-1000-8000-00805f9b34fb)
您可以使用 bluetoothctl 信任设备trust <dev_addr>
如果您在配对时服务器正在运行,则串行端口配置文件将出现在列表中。
您还可以告诉 BlueZ 您的客户端设备没有可用于配对的输入或输出设备。在 bluetoothctl.
[bluetooth]# agent off
Agent unregistered
[bluetooth]# agent NoInputNoOutput
Agent registered
[bluetooth]#
我希望这已经足够了,但除此之外,大多数配置文件都在服务器上使用 Profile API 注册,可以在服务器上指定 RequireAuthentication 和 RequireAuthorization 选项。不确定如何在您的设置中进行设置。 https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/doc/profile-api.txt#n85
推荐阅读
- amazon-ec2 - 如何将 kubernetes 集群移动到另一个 aws 区域
- php - 插入表格不进入 Postgres
- android - 如何将视差布局设置为随设备加速移动的分层动态壁纸?
- c# - 如何在日期选择器 wpf 中显示默认空值?
- tensorflow - PC 上的 TensorFlow Lite 推理非常慢
- java - Java 匹配字符串输入为 ENUM
- r - 为什么在预测期间时 Holt Winters Seasonal 无法识别季节性成分
- php - Laravel Thujohn Twitter 错误的身份验证错误
- scala - 如何从播放框架 dao 单例中提取光滑实体
- javascript - Javascript:我在 for 循环中放置了元素列表以在鼠标悬停时执行特定操作,但只有一个元素受到影响