Linux命令行如何接受没有pin的蓝牙设备配对
Posted
技术标签:
【中文标题】Linux命令行如何接受没有pin的蓝牙设备配对【英文标题】:Linux command line howto accept pairing for bluetooth device without pin 【发布时间】:2012-10-05 00:16:52 【问题描述】:有没有一种方法可以在不需要 pin 的情况下在 linux 中配对设备(出于测试目的,所以我需要在没有人工交互的情况下完成它,假设您具有 root 访问权限)?
bluez-simple-agent 似乎需要一个别针,除了一些简单的设备,例如鼠标。
【问题讨论】:
建议转移到Unix & Linux 而不是 Stack Overflow。 【参考方案1】:输入 PIN 码实际上是一种过时的配对方法,现在称为Legacy Pairing。安全简单配对模式适用于蓝牙 v2.1 及更高版本,包括大多数现代蓝牙设备。 SSPMode 身份验证由蓝牙协议栈处理,因此无需用户交互即可工作。
以下是连接设备的方法:
# hciconfig hci0 sspmode 1
# hciconfig hci0 sspmode
hci0: Type: BR/EDR Bus: USB
BD Address: AA:BB:CC:DD:EE:FF ACL MTU: 1021:8 SCO MTU: 64:1
Simple Pairing mode: Enabled
# hciconfig hci0 piscan
# sdptool add SP
# hcitool scan
00:11:22:33:44:55 My_Device
# rfcomm connect /dev/rfcomm0 00:11:22:33:44:55 1 &
Connected /dev/rfcomm0 to 00:11:22:33:44:55 on channel 1
Press CTRL-C for hangup
这将建立到设备的串行连接。
【讨论】:
无法在 hci0 上设置简单配对模式:输入/输出错误 (5) 如果您的适配器不支持 sspmode,请尝试使用 0000 作为 pin。 无法连接 RFCOMM 套接字:连接被拒绝【参考方案2】:按照步骤(CentO):
-
蓝牙控制
设备
开始扫描
pair 34:88:5D:51:5A:95(34:88:5D:51:5A:95 是我的设备代码,用你的替换它)
信任 34:88:5D:51:5A:95
连接 34:88:5D:51:5A:95
如果您想了解更多详情 https://www.youtube.com/watch?v=CB1E4Ir3AV4
【讨论】:
感谢您的回答。是否可以从 bash 脚本中完成所有这些工作? (可能使用其他工具) 这是我一直看到的解决方案,但对我来说,没有显示 PIN,配对最终取消... 它要求我提供耳机上没有的别针。 太棒了。最初连接,但之后立即获得[CHG] Device 04:52:C7:7E:7A:F6 Connected: no
。运行trust
和connect
后,它工作了。谢谢。【参考方案3】:
尝试在 /etc/bluetooth/hcid.conf 中将安全设置为无
http://linux.die.net/man/5/hcid.conf
这可能仅适用于 HCI 设备(鼠标、键盘、太空球等)。如果您有不同类型的设备,则可能需要更改不同但相似的设置。
【讨论】:
【参考方案4】:这对我来说就像一个魅力,当然它需要超级用户权限:-)
# hcitool cc <target-bdaddr>; hcitool auth <target-bdaddr>
要获取 <target-bdaddr>
,您可以发出以下命令:$ hcitool scan
注意:排除#
和$
,因为它们是命令行提示符。
Courtesy
【讨论】:
【参考方案5】:对于 Ubuntu 14.04 和 android 试试:
hcitool scan #get hardware address
sudo bluetooth-agent PIN HARDWARE-ADDRESS
在 Android 设备上弹出 PIN 对话框。输入相同的 PIN。
注意:sudo apt-get install bluez-utils
可能是必需的。
注意2:如果PIN对话框没有出现,请先尝试从Android配对(会因为PIN错误而失败)。然后按照上述说明重试。
【讨论】:
什么是bluetooth-agent
?
bluetooth-agent
是一个用于配对的 CLI 工具 --> wiki.debian.org/BluetoothUser【参考方案6】:
~ $ hciconfig noauth
这应该可以解决问题(我使用的是 bluez 5.23,没有更多的 simple-egent 和 blue-utils)。但是,我正在尝试寻找一种方法来使更改 hciconfig 永久化,因为断电再上电后,再次需要进行身份验证。到目前为止,hciconfig 中的更改在您重新启动时仍然保持不变。它仅在断电时恢复。如果有人找到了使 hciconfig 永久化的方法,请告诉我!
【讨论】:
这在 ubuntu 16.04 上对我有用,“sspmode 1”给了我 I/O 错误【参考方案7】:~ $ hciconfig noauth
它在“Linux mx 4.19”中对我有用
具体步骤如下:
1) 打开终端 - 运行:“hciconfig noauth” 2) 使用 blueman-manager gui 配对设备(在我的情况下是键盘) 3)从 blueman-manager 中选择“连接到 HID”
步骤(3)通常要求输入密码 - “hciconfig noauth”使步骤(3)无密码
【讨论】:
以上是关于Linux命令行如何接受没有pin的蓝牙设备配对的主要内容,如果未能解决你的问题,请参考以下文章