Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
bluetoothctl没有可用的默认控制器_Bluetooth_Bluez - Fatal编程技术网

bluetoothctl没有可用的默认控制器

bluetoothctl没有可用的默认控制器,bluetooth,bluez,Bluetooth,Bluez,这里有点接线 我有一个问题是bluetoothctl总是说“没有可用的默认控制器”。我发现有很多人和我有同样的问题。但情况与他们有点不同 我可以看到我的hciconfig-a有如下信息 而hcitool dev似乎也没有问题。 但我不知道为什么我的bluetoothctl总是说“没有可用的默认控制器” 甚至我也多次调低和调高hci0。它总是在同一个问题上 顺便说一句,我的蓝Z是5.39。我在buildroot上做了这个实验。内核is 3.10也有同样的问题。使用: $sudo blueto

这里有点接线

我有一个问题是bluetoothctl总是说“没有可用的默认控制器”。我发现有很多人和我有同样的问题。但情况与他们有点不同

我可以看到我的hciconfig-a有如下信息

而hcitool dev似乎也没有问题。

但我不知道为什么我的bluetoothctl总是说“没有可用的默认控制器”

甚至我也多次调低和调高hci0。它总是在同一个问题上

顺便说一句,我的蓝Z是5.39。我在buildroot上做了这个实验。内核is 3.10也有同样的问题。使用:
$sudo bluetoothctl


然后自动找到控制器。我以前也试过。可能这影响了解决方案。

以下是通过修改bluez配置和不使用sudo的运行对我有效的步骤:

  • 创建一个“bluetooth”组,该组将在bluez的d-bus配置上被授予
$sudo groupadd蓝牙

  • 使用您喜爱的文本编辑器在/etc/dbus-1/system.d/bluetooth.conf中打开配置文件

    例如
$sudo vi/etc/dbus-1/system.d/bluetooth.conf

  • 在/etc/dbus-1/system.d/bluetooth.conf中添加/追加以下行




  • 保存您的更改

  • 将您的登录用户添加到“蓝牙”组

$sudo usermod-a-G蓝牙

  • 重新启动系统

  • 然后尝试在没有sudo的情况下使用“bluetoothctl”

    $bluetoothctl
    [蓝牙]#显示


    • 我也有同样的问题。经过长时间的研究发现驱动程序没有安装。检查这个答案,看看你的驱动程序是否安装正确=)

      这是一个老问题,但可能有助于寻找答案

      我大多数时候都遇到过这个问题,我核实的是:

    • systemctl status bluetooth==检查蓝牙服务守护进程是否已在运行。 检查输出:
      已加载:已加载(/lib/systemd/system/bluetooth.service;已启用;供应商预设:已启用) 活动:活动(正在运行) 如果没有,请使用命令启动它:sudo systemctl start bluetooth

    • 使用sudo bluetoothctl


    • 这两种情况中的一种通常是罪魁祸首。

      如果rfkill开关阻塞了蓝牙,也会发生这种情况(在我的例子中,由于某些无意的原因):

      要解除阻止,请将蓝牙设备的ID从上面的列表传递到
      unblock
      子命令:

      $ rfkill unblock 0
      
      然后控制器应返回:

      $ bluetoothctl list
      Controller .... [default]
      
      可能对某些发行版有效,但在其他发行版中可能会给您带来麻烦。不幸的是,似乎每个发行版都有不同的蓝牙默认配置-这是一个相当糟糕的混乱

      以下是我在Debian衍生产品Raspberry Pi OS(née Raspbian)上所做的工作:

      作为初步检查,在许多发行版上,您可以检查
      /etc/group
      ,以查看是否存在组名
      bluetooth

      $ cat /etc/group | grep blue
      
      如果存在,您显然不需要添加组,只需将用户添加到组:

      $ sudo usermod -G bluetooth -a <username>
      
      $sudo usermod-G蓝牙-a
      

      在我使用的发行版中,这是使控制器在
      bluetoothctl

      中响应所需的全部内容,请尝试“btmgmt关机”,然后再尝试“btmgmt开机”,看看会发生什么。另外,如果安装了btmon,请尝试在后台使用“btmon&”运行该命令,并查看运行“bluetoothctl”命令时发生的情况。是否检查了“bluetoothd”是否正在运行。有时分发套接字激活“Bluetooth”守护进程,但有时不基于systemd服务文件。勾选“ps-ef | grep bluetoothd”,如果没有运行,则启动它。bluetoothctl在内部使用“DBUS API”从“bluetooth”中获取这些详细信息“我如何让蓝牙在linux中工作”的问题应该是这样的,这是一个更优雅的解决方案。我敢问哪个发行版需要如此彻底的修改吗?对于使用组权限的解决方案,请参阅下面的帖子之一()完美解决方案!你知道如何使这个配置持久化吗?不知道,不再发生在我身上了。也许可以从
      util linux
      包中查看
      rfkill unblock@[index]
      systemd服务。但是,我没有启用fwiw。
      $ sudo usermod -G bluetooth -a <username>