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。运行trustconnect 后,它工作了。谢谢。【参考方案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的蓝牙设备配对的主要内容,如果未能解决你的问题,请参考以下文章

如何将不需要pin的蓝牙设备与android配对

在 Linux 命令行上以编程方式删除所有蓝牙设备

笔记本蓝牙无法接收文件,只可以发送。

在 Android 中手动配对蓝牙设备?

Android -- 蓝牙蓝牙配对和蓝牙连接

蓝牙无线键盘如何连接电脑?