通过终端连接蓝牙设备

Zip*_*pie 76 command-line terminal bluetooth linux-mint

我正在使用薄荷 15 和肉桂。

我买了一套蓝牙扬声器,我正在尝试通过终端连接到它们。通过 GUI,我可以正常看到它们并且我已连接到它们。我想制作一个小脚本,以便每次它们可见时我都会自动连接到它们。

我正在尝试使用以下方法扫描它们:

hcitool 扫描

但我得到

扫描...

几秒钟后,这个过程就结束了。

同样的事情hidd --search

如果我跑hciconfig scan我得到:

hci0:   Type: BR/EDR  Bus: USB
    BD Address: 40:2C:F4:78:E8:69  ACL MTU: 1021:8  SCO MTU: 64:1
    UP RUNNING PSCAN ISCAN 
    RX bytes:130700 acl:22 sco:0 events:18527 errors:0
    TX bytes:31875398 acl:36784 sco:0 commands:75 errors:0
Run Code Online (Sandbox Code Playgroud)

我想这只是说我的蓝牙地址并且它已打开。

正如我已经说过的,通过正常的用户界面,我可以看到扬声器并连接到它们,但是通过终端我什么也得不到。

实际上很有趣,hcitool scan因为我的扬声器已连接并且每次运行命令时扬声器的声音都会中断几秒钟,所以没有找到任何东西。

Zip*_*pie 53

我设法通过bluez-tools做到了:

sudo apt-get install bluez-tools
Run Code Online (Sandbox Code Playgroud)

获取设备 MAC 地址的设备列表:

bt-device -l
Run Code Online (Sandbox Code Playgroud)

并成功连接到它:

bt-device -c 01:02:03:04:05:06
Run Code Online (Sandbox Code Playgroud)

  • 这可能适用于旧版本,因为不再有 `bt-audio` 命令 (16认同)
  • 我在 Debian 上成功使用了 `bt-device -c mac_address`。9. (9认同)
  • 在 Ubuntu 18.04 上,bt-audio 不可用。从 bluez-audio issue #13 来看,多年来一直如此。运行 `bt-device -c <device-mac>` 没有帮助(“Error: GDBus.Error:org.bluez.Error.AlreadyExists: Already Exists”),我不愿意进入问题 # 下建议的黑客攻击13 因为我必须在每台机器上都做它们,我希望它们会很容易被弃用等等。真的是这样吗(在导航到设置 GUI 的右侧部分之后)它是在 GUI 上单击一下就可以将声音重定向到扬声器,但是仍然无法通过 CLI 中的单个简单命令来执行此操作? (6认同)
  • @TomislavNakic-Alfirevic 正在使用 bluetoothctl ......正如奥尔德林简森在下面的评论中提到的。有很多关于通过 CLI 连接蓝牙的在线教程提到 bluetoothctl,但大多数(如果不是全部)只讨论在交互模式下使用它。然而,似乎所有通过 bluetoothctl 交互模式可用的命令也可以非交互方式运行。您可以将 bluetoothctl 命令捆绑到可以使设备管理更容易的脚本中。 (2认同)

小智 37

要使用内置实用程序来完成此操作,您可以使用bluetoothctl.

hcitool scan  # to get the MAC address of your device
bluetoothctl
agent on
scan on  # wait for your device's address to show up here
scan off
trust MAC_ADDRESS
pair MAC_ADDRRESS
connect MAC_ADDRESS
Run Code Online (Sandbox Code Playgroud)

这个 Github 问题中的帖子提出了一种编写脚本的方法,但这对我不起作用,因为我需要手动等待扫描产生结果。


小智 12

我这样做了sudo apt-get install bluez-tools,因为我确实在某些时候使用过它。

能够从 中找到设备后hcitool scan,我运行bluez-simple-agent hci0 X其中 X 是我添加的设备的 MAC 地址。这创建了与设备的连接。

然后我跑了hciconfig scan,好像已经自动开始连接了。

  • Ubuntu 16.04。没有“bluez-simple-agent”命令。 (3认同)

小智 10

添加到Max的答案中,为了让您的生活更轻松,您只需使用一次即可找到设备的MAC地址

bluetoothctl devices
Run Code Online (Sandbox Code Playgroud)

使用以下命令连接蓝牙设备。

bluetoothctl connect <The Mac Address of your device>
Run Code Online (Sandbox Code Playgroud)

您可以在 shell 中为此创建别名,甚至可以在桌面环境中创建键盘快捷键。

这不是自动的,您必须手动触发命令,但这比在脚本中连续扫描的开销要少,并且在蓝牙设备启动后、被发现之前不会引入不必要的延迟。您只需在终端中或通过键盘快捷键触发脚本即可。