Как включить блютуз на линукс
Перейти к содержимому

Как включить блютуз на линукс

  • автор:

Включение и выключение Bluetooth

Вы можете включить Bluetooth для подключения к другим Bluetooth-устройствам или отключить его для экономии энергии. Чтобы включить Bluetooth:

  1. Откройте Обзор и начните вводить: Bluetooth .
  2. Нажмите Bluetooth для открытия панели.
  3. Включите переключатель на панели заголовка.

На многих ноутбуках есть аппаратный переключатель или комбинация клавиш для включения и выключения Bluetooth. Найдите переключатель на компьютере или клавишу на клавиатуре. Доступ к этой клавише часто осуществляется с помощью клавиши Fn .

Чтобы выключить Bluetooth:

  1. Откройте системное меню справа в верхней панели.
  2. Выберите Bluetooth .

Компьютер остаётся видимым пока открыта панель Bluetooth .

Дополнительная информация

  • Bluetooth — Подключение к устройствам через Bluetooth для передачи файлов или использования беспроводного аудио.

You can choose the displayed language by adding a language suffix to the web address so it ends with e.g. .html.en or .html.de.
If the web address has no language suffix, the preferred language specified in your web browser’s settings is used. For your convenience:
[ Change to English Language | Change to Browser’s Preferred Language ]

The material in this document is available under a free license, see Legal for details.
For information on contributing see the Ubuntu Documentation Team wiki page. To report errors in this documentation, file a bug.

Как настроить Bluetooth в Linux для решения всех связанных с ним проблем

еще Блютуз Это очень важно в современном мире, потому что большая группа устройств полагается на свой протокол для выполнения различных операций. Большинство ноутбуков поставляются со встроенными адаптерами Bluetooth, но даже если у вас их нет (вы используете настольный компьютер), большинство ноутбуков Ключ Bluetooth Внешний стоит дешево и широко доступен.

Как настроить Bluetooth в Linux для решения всех связанных с этим проблем - Linux

Правильная настройка Bluetooth на вашем устройстве позволяет использовать беспроводные устройства, такие как мышь, клавиатура, гарнитура или любые аксессуары Bluetooth, которые могут у вас быть.

К сожалению, его отсутствие в Linux представляет собой неудачу. не было Блютуз У меня он отлично работает на разных устройствах и дистрибутивах, которые я пробовал.

Но обычно после установки нескольких пакетов и внесения некоторых изменений все работает безупречно, по крайней мере, таков мой опыт.

Давайте начнем

Во-первых, вам нужно установить на свой компьютер необходимые пакеты. Если вы используете дистрибутив Ubuntu или любой другой дистрибутив на основе Ubuntu, выполните следующую команду:

sudo apt-get install bluetooth bluez bluez-tools rfkill

Затем убедитесь, что ваше устройство Bluetooth не заблокировано. Проверить можно с помощью утилиты рфкилл :

sudo rfkill list

Как настроить Bluetooth в Linux для решения всех связанных с этим проблем - Linux

Как видно на скриншоте выше, мое устройство Bluetooth не заблокировано и не находится ни в списке запрещенных устройств, ни в списке заблокированных программ. Если ваш по какой-то причине заблокирован, вы можете разблокировать его с помощью команды рфкилл Сам.

sudo rfkill unblock bluetooth

Наконец, убедитесь, что служба Bluetooth активна, выполнив следующую команду.

sudo service bluetooth start

Поиск устройств Bluetooth

Перед тем, как начать поиск устройств, установите пакет blueman, который поможет вам сопрягать устройства Bluetooth и управлять ими.

В Ubuntu используйте следующее:

sudo apt-get install blueman

После завершения установки запустите диспетчер Bluetooth из средства запуска приложений.

Как настроить Bluetooth в Linux для решения всех связанных с этим проблем - Linux

По умолчанию ваше устройство Bluetooth скрыто. Вам нужно сделать его видимым, чтобы его могли обнаружить другие устройства.

Перейти к «Конвертер -> НастройкиИ измените настройку видимости навсегда виден«Или же»Временно виденКак вам больше нравится. Вы также можете задать имя для своего устройства Bluetooth. Это имя появится, когда другие устройства Bluetooth обнаружат ваш компьютер.

Как настроить Bluetooth в Linux для решения всех связанных с этим проблем - Linux

Затем начните поиск устройств Bluetooth, нажав «исследовать» Подождите несколько секунд, пока сканирование не завершится.

Все видимые и обнаруживаемые устройства Bluetooth будут перечислены в Менеджер Bluetooth.

Как настроить Bluetooth в Linux для решения всех связанных с этим проблем - Linux

Сопряжение и подключение к устройствам

Теперь у вас должна быть возможность без проблем подключаться к своим устройствам Bluetooth. Вот как, например, подключиться к устройству Android.

  • Щелкните правой кнопкой мыши соответствующую запись в списке и нажмите «Спаривание». Это инициализирует запрос на сопряжение, который должно принять другое устройство.

Как настроить Bluetooth в Linux для решения всех связанных с этим проблем - Linux

  • Затем введите ПИН-код в диалоговом окне и нажмите OK. Вы должны ввести четырехзначное число.

Как настроить Bluetooth в Linux для решения всех связанных с этим проблем - Linux

  • Наконец, перейдите на свое устройство Android и введите тот же PIN-код, чтобы подтвердить сопряжение.

Как настроить Bluetooth в Linux для решения всех связанных с этим проблем - Linux

Если все пойдет хорошо, устройства будут сопряжены, и в записи об устройстве появится новый код блокировки. На вашем Android-устройстве ваш ноутбук также должен отображаться в разделе «Сопряженные устройства».

Как настроить Bluetooth в Linux для решения всех связанных с этим проблем - Linux

Отправлять и получать файлы

Как настроить Bluetooth в Linux для решения всех связанных с этим проблем - Linux

Чтобы отправить файлы на смартфон, щелкните устройство правой кнопкой мыши и выберите «послать файлиз контекстного меню. Затем выберите файл, который хотите отправить. На вашем телефоне появится уведомление с просьбой подтвердить, что вы хотите получить файл.

Как настроить Bluetooth в Linux для решения всех связанных с этим проблем - Linux

Аналогичным образом вы также можете получать файлы со своего смартфона. Только обязательно настройте транзакцию со своего смартфона и подтвердите получение на своем компьютере.

Использование беспроводных наушников

Сопряжение должно быть С наушниками Bluetooth собственное достаточно просто. Здесь вам не нужен PIN-код, поэтому они должны автоматически выполнить сопряжение после отправки запроса на сопряжение устройств. Затем щелкните правой кнопкой мыши запись о наушниках и подключитесь к «громкой связи».

Как настроить Bluetooth в Linux для решения всех связанных с этим проблем - Linux

После подключения вам, возможно, придется перейти к настройкам звука и переключить устройство вывода на Беспроводные наушники свой, прежде чем приступить к работе.

Как настроить Bluetooth в Linux для решения всех связанных с этим проблем - Linux

تغليف

Это все, что мне нужно было сделать, чтобы устройства bluetooth идеально работали с устройствами Linux. Не забудьте оставить комментарий, если эти инструкции сработали и для вас.

Настройка Bluetooth в Linux

В данной статье рассмотрим как подключить bluetooth устройства в linux debian через usb-адаптер. А также рассмотрим что делать, если bluetooth устройство не отображается.

Перед покупкой usb-адаптера необходимо убедиться в том, то что он поддерживает linux, а также желательно посмотреть комментарии людей: столкнулись ли они с какими-либо проблемами при подключении usb-адаптера. Потому что существует два вида usb-адаптеров: первый вид — это когда usb-адаптер после подключения работает и не требует никаких действий, а второй вид — это когда необходимо установить драйвера.

Установка драйверов usb bluetooth адаптера

Рассмотрим второй случай. Например вы приобрели usb-адаптер, которым была указана поддержка linux, подключили его к компьютеру, а он не работает. При попытке включения bluetooth — он просто не включается, а если мы попробуем вывести список usb-устройств следующей командой:

lsusb | grep bluetooth -i

То увидим то, что наш адаптер подключен:

Для того, чтобы узнать в чем причина воспользуемся журналом логов. Для этого, следующей командой запустим журнал логов journalctl:

sudo journalctl -f

И после этого подключим наш usb-адаптер. После подключения usb-адаптера увидим следующую ошибку:

О том, что прошивка данного адаптера не была найдена, то есть отсутствует драйвер данного usb-адаптера. В моём случае это драйвер realtek rtl 8761b. Далее необходимо найти решение данной ошибки в интернете.

В данном случае, чтобы решить текущую проблему необходимо скачать файл драйвера с репозитория ядра linux и скопировать его в папку с драйверами.

Перейдем в папку с драйверами:

cd /usr/lib/firmware/rtl_bt

И увидим то что папка rtl_bt не создана. Создадим её:

cd /usr/lib/firmware mkdir rtl_bt

Перейдем в эту папку:

cd rtl_bt

И теперь скачаем драйвера перейдя по следующей ссылке.

Здесь необходимо найти нужный нам драйвер и скачать два файла config и fw:

Скачаем данные файлы нажав на ссылку plain:

И скопируем данные файлы из папки загрузки в папку с драйверами:

sudo cp ~/Загрузки/rtl8761b_config.bin . sudo cp ~/Загрузки/rtl8761b_fw.bin .

Теперь снова запустим журнал логов:

sudo journalctl -f

И переподключим наш usb-адаптер.

И увидим то, что ошибка не отображается:

Теперь попробуем включить Bluetooth и найти устройство.

Как мы видим устройство отображается:

Драйвера из non free репозитория в Debian

Также в debian установить драйвера можно при помощи пакетов из non free репозитория. О том как подключить non free репозиторий есть статья на сайте. Для того, чтобы установить пакет драйверов введем в консоли sudo apt install далее через пробел укажем firmware:

И через тире укажем производителя чипа usb-адаптера в нашем случае это realtek:

sudo apt install firmware-realtek

После установки перейдем в папку с драйверами:

cd /usr/lib/firmware/rtl_usb

И выведем их список:

И увидим то, что нашего драйвера нет в списке. Значит данный способ нам не помог. Здесь установилась только A версия драйвера 8761, а нам нужна версия B.

Также драйвер может быть на сайте производителя usb-адаптера.

Дополнение про работу usb bluetooth адаптеров

Небольшое дополнение. Попробовал запустить оба usb-адаптера в linux ubuntu и ситуация поменялась на противоположную Первый bluetooth-адаптер, у которого нет никакого бренда отказался работать адекватно. Хотя в debian он работал сразу после подключения, а второй блютус адаптер под брендом dexp наоборот заработал сразу после подключения хотя в debian нам пришлось скачать для него драйвера.

Так что, работа адаптера также зависит от того, на какой системе он запускается.

Подключение bluetooth устройств

Перейдем к подключению устройств в графическом окружении. В gnome используется специальный интерфейс для подключения bluetooth устройств, который находится в разделе параметры. Откроем его и попробуем подключить беспроводную клавиатуру.

На клавиатуре включим режим сопряжения. В моем случае на клавиатуре есть специальный индикатор который начинает быстро мигать, что говорит о том, что клавиатура находится в режиме сопряжения. И увидим в списке устройств нашу клавиатуру:

Она отображается серым цветом. Если мы попробуем подключить её, то ничего не произойдет, то есть подключение невозможно. Возникает следующий вопрос: «Что же делать если в графическом окружении нет такого интерфейса для подключения bluetooth устройств, подключение bluetooth устройства невозможно или bluetooth устройство вообще не отображается в списке?».

Что делать если bluetooth устройство не отображается или не подключается

В этом нам поможет bluetooth manager — blueman. Установим его. Для этого откроем терминал, и следующий командой запустим установку:

sudo apt install blueman

Запуск bluetooth менеджера blueman

Теперь запустим bluetooth manager, у меня почему-то произошло какая-то ошибка и bluetooth менеджер не отображается в списке программ, поэтому запустим его через терминал следующий командой:

blueman-manager

В программе нажимаем кнопку найти и начинается поиск наших устройств:

На клавиатуре снова запустим режим сопряжения. Нажмем правой кнопкой мышку по найденной клавиатуре и нажмем сопряжение:

Для сопряжения программа нам предложит ввести символы на подключаемой клавиатуре.

Если же такого не произойдет:

То нужно нажать правой кнопкой мыши на найденном устройстве и выбрать пункт подключить:

Также правой кнопкой мыши доверять:

В данном случае клавиатура подключилась. Также может возникнуть ситуация когда устройство также не отображается в данной программе.

Если bluetooth устройство не отображается в blueman

Для решения этой проблемы нам поможет терминал. Для начала убедимся в том, что сервис bluetooth запущен. Для этого выведем его статус следующей командой:

sudo systemctl status bluetooth

И увидим то, что он запущен и работает:

Если он вдруг по какой-то причине не запущен, то можно воспользоваться командой start:

sudo systemctl start bluetooth

А если произошла какая-то ошибка то воспользоваться командой restart для перезапуска:

sudo systemctl restart bluetooth

Также воспользуемся командой enable, для того чтобы bluetooth сервис запускался вместе со стартом компьютера:

sudo systemctl enable bluetooth

bluetoothctl — консольная утилита для управления bluetooth устройствами

Перейдем к консольной утилите для управления bluetooth устройствами. Запустим ее при помощи команды:

bluetoothctl

Если по какой-то причине она не запускается, то необходимо установить пакет bluetooth следующей командой:

sudo apt install bluetooth

Запустим утилиту. И для того, чтобы найти устройство запустим сканирование команды:

scan on

Видим отображаемые устройства:

Для того, чтобы завершить сканирование можно воспользоваться командой:

scan off

Cкопируем mac-адрес клавиатуры и для сопряжения воспользуемся командой pair:

pair F4:71:33:66:77:C3

Где через пробел укажем mac-адрес нашего устройства. На клавиатуре также необходимо запустить режим сопряжения.

Для сопряжения программа предлагает нам ввести ключ состоящий из чисел. На подключаемой клавиатуре ведем их и после этого устройство должно подключиться.

Если этого не произошло:

То подключим устройство при помощи команды connect:

connect F4:71:33:66:77:C3

И как мы видим наше устройство успешно подключилось:

Для того, чтобы доверять данному устройству воспользуемся командой trust:

trust F4:71:33:66:77:C3

Где через пробел укажем mac-адрес устройства. Для того, чтобы вывести список связанных устройств воспользуемся командой paired-devices:

paired-devices

Для того, чтобы отключить устройство используется команда disconnect:

disconnect F4:71:33:66:77:C3

Для удаления устройства из списка доверенных используется команда unstrust:

untrust F4:71:33:66:77:C3

Для удаления устройства используется команда remove:

remove F4:71:33:66:77:C3

Снова выведем список подключенных устройств:

paired-devices

И увидим то, что наша клавиатура успешно удалена:

Для того чтобы выйти из утилиты воспользуемся командой exit:

exit

Перейдем в интерфейс gnome. И увидим подключенную клавиатуру в списке устройств:

Как узнать версию bluetooth у usb bluetooth адаптера в Linux

Ну и бонусом рассмотрим «Как узнать какая у нас версия usb-адаптера?». Для этого введем команду:

hciconfig -a

В строке HCI версия видим то, что версия адаптера 5.1:

Если версия не отображается, то можно узнать версию воспользовавшись данной таблицей:

Как узнать версию bluetooth у usb bluetooth адаптера в Linux

Если вам понравилась статья, то поделитесь ею в социальных сетях:

Bluetooth (Русский)

Состояние перевода: На этой странице представлен перевод статьи Bluetooth. Дата последней синхронизации: 24 сентября 2021. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Bluetooth является стандартом для беспроводных соединений малой дальности сотовых телефонов, компьютеров и других электронных устройств. В Linux канонической реализацией стека протоколов Bluetooth является BlueZ.

Установка

  1. Установите пакет bluez , который предоставляет стек Bluetooth протокола.
  2. Установите bluez-utils , предоставляющий утилиту bluetoothctl . В качестве альтернативы можно установить bluez-utils-compatAUR , который содержит устаревшие инструменты BlueZ.
  3. Универсальный драйвер Bluetooth находится в модуле ядра btusb . Проверьте, что он загружен. Если нет, то загрузите его вручную.
  4. Запустите и включите службу bluetooth.service .
  • По умолчанию демон bluetooth разрешит использовать устройства bnep0 только пользователям, входящим в группу lp . Удостоверьтесь, что учетная запись обычного пользователя добавлена в нее, если вы намереваетесь подключаться по bluetooth. Вы можете изменить группу, требуемую для этого, в файле /etc/dbus-1/system.d/bluetooth.conf .
  • Некоторые адаптеры Bluetooth встроены в платы Wi-Fi (например, Intel Centrino [устаревшая ссылка 2023-05-06 ⓘ] ). В этих случаях необходимо, чтобы сперва была включена плата Wi-Fi (обычно при помощи клавиш(и) на ноутбуке), после чего ядро сможет увидеть адаптер Bluetooth.
  • Некоторые адаптеры Bluetooth (например, Broadcom) конфликтуют с сетевыми адаптерами. В этом случае вам необходимо удостовериться, что устройство Bluetooth подключается до начала загрузки сетевых служб.
  • Некоторые утилиты вроде hcitool и hciconfig объявлены устаревшими и больше не поставляются в пакете bluez-utils . Так как они не получают обновления, рекомендуется избегать их использования. Если они вам всё ещё нужны, установите bluez-utils-compatAUR . Подробнее смотрите FS#53110 и the Bluez mailing list.

Фронтенды

Консольные
  • bluetoothctl — Сопряжение устройств через командную строку является одним из самых простых и надежных вариантов.

Совет: Для автоматизации команд bluetoothctl используйте echo -e «команда1\nкоманда2\n» | bluetoothctl или bluetoothctl — команда .

Графические

Следующие пакеты позволяют настраивать Bluetooth с помощью графического интерфейса.

  • GNOME Bluetooth — Инструмент Bluetooth в GNOME.
    • gnome-bluetooth предоставляет бэкенд
    • gnome-shell предоставляет апплет мониторинга статуса
    • gnome-control-center предоставляет графический интерфейс настройки, для открытия которого можно ввести Bluetooth в поиске или выполнить команду gnome-control-center bluetooth .
    • Также можно использовать команду bluetooth-sendto напрямую для отправки файлов на удалённое устройство.
    • nautilus-bluetoothAUR добавляет пункт отправки по Bluetooth в контекстное меню файлов
    • Для получения файлов откройте панель настроек Bluetooth; принимать файлы можно только при открытых настройка.
    • Для добавления пункта отправки файла по Bluetooth в контекстном меню Thunar смотрите инструкции here. (укажите команду bluetooth-sendto %F ).
    • Bluedevil — Инструмент Bluetooth в KDE. Если нет иконки в Dolphin и системном трее, включите её в настройках трея или добавьте виджет. Настроить Bluedevel и обнаружить устройства Bluetooth можно кликом по иконке. Интерфейс также доступен через настройки KDE.
    • Blueberry — Инструмент в Linux Mint, надстройка над GNOME Bluetooth, работает во всех окружениях рабочего стола. Blueberry не поддерживает приём файлов через Obex Object Push.
    • Blueman — Полнофункциональный менеджер Bluetooth.
    • ObexFTP — Инструмент для обмена файлами с устройствами через OBEX.

    Сопряжение

    Примечание: Перед использованием устройство Bluetooth убедитесь, что оно не заблокировано через rfkill.

    Этот раздел описывает прямую настройку bluez5 через утилиту командной строки bluetoothctl. Это необязательно, если вы используете какой-нибудь другой инструмент (например, GNOME Bluetooth).

    Точная процедура зависит от особенностей конкретного устройства; эта инструкция описывает сопряжение с устройством при помощи /usr/bin/bluetoothctl лишь в общих чертах.

    Запустите интерактивную команду bluetoothctl . После этого можно ввести help для получения списка доступных команд.

    • (необязательно) Выберите контроллер по умолчанию командой select MAC-адрес .
    • Включите питание контроллера, введя power on . По умолчанию оно отключено и отключается при каждой перезагрузке; смотрите #Автоматическое включение после загрузки.
    • Введите devices , чтобы увидеть MAC-адрес устройства для сопряжения.
    • Войдите в режим обнаружения устройств при помощи команды scan on , если нужного вам устройства нет в списке.
    • Включите агент при помощи agent on или выберите конкретный агент: если вы введёте agent и дважды нажмёте Tab, будет отображён список доступных вариантов. Агент Bluetooth управляет кодом сопряжения. default-agent должен подойти в большинстве случаев. [1]
    • Введите pair MAC-адрес , чтобы осуществить сопряжение (работает автодополнение по tab).
    • При использовании устройства без PIN, возможно, потребуется подтверждение, прежде чем оно сможет успешно переподключиться. Для этого введите trust MAC-адрес .
    • Наконец, используйте connect MAC-адрес для установки соединения.

    Ваша сессия будет выглядеть примерно так:

    # bluetoothctl [NEW] Controller 00:10:20:30:40:50 pi [default] [bluetooth]# agent KeyboardOnly Agent registered [bluetooth]# default-agent Default agent request successful [bluetooth]# scan on Discovery started [CHG] Controller 00:10:20:30:40:50 Discovering: yes [NEW] Device 00:12:34:56:78:90 myLino [CHG] Device 00:12:34:56:78:90 LegacyPairing: yes [bluetooth]# pair 00:12:34:56:78:90 Attempting to pair with 00:12:34:56:78:90 [CHG] Device 00:12:34:56:78:90 Connected: yes [CHG] Device 00:12:34:56:78:90 Connected: no [CHG] Device 00:12:34:56:78:90 Connected: yes Request PIN code [agent] Enter PIN code: 1234 [CHG] Device 00:12:34:56:78:90 Paired: yes Pairing successful [CHG] Device 00:12:34:56:78:90 Connected: no

    Сопряжение при Dual boot

    Чтобы сопряжение работало во всех установленных операционных системах, необходимо изменить ключи сопряжения так, чтобы они были одинаковыми во всех системах.

    Установка

    Чтобы следать это, сперва сделайте сопряжение в вашем Arch Linux. Потом перезагрузитесь в другую ОС и сделайте сопряжение там. Теперь нужно извлечь ключи сопряжения, но сперва отключите Bluetooth-устройства, чтобы не было ненужных попыток подключения до завершения настройки.

    Для Windows
    Извлечение ключей в Windows

    The factual accuracy of this article or section is disputed.

    Reason: The key structure for a BT5.1 mouse may be different than described here. (Discuss in Talk:Bluetooth (Русский))

    Запись реестра, содержащая ключи, доступна только пользователю SYSTEM, в которого нельзя выполнить вход. Поэтому понадобится утилита PsExec с официального сайта Windows Sysinternals для запуска regedit.exe от имени SYSTEM .

    Скачайте архив PsTools и извлеките из него файл PsExec64.exe .

    Запустите командную строку от имени администратора, перейдите в папку с извлечённым exe-файлом и запустите редактор реестра:

    .\PsExec64.exe -s -i regedit.exe

    Откройте эту ветку реестра:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BTHPORT\Parameters\Keys

    В ней содержатся подветки для каждого Bluetooth-адаптера по их MAC-адресам. Если их несколько и вы не знаете, какой из них вам нужен, смотрите эту инструкцию [устаревшая ссылка 2023-05-06 ⓘ] для выяснения MAC-адреса нужного вам Bluetooth-адаптера.

    В ветках каждого адаптера лежат записи для каждого сопряжённого устройства аналогично по MAC-адресам с ключами в бинарном виде.

    Для каждого устройства, которое вы хотите сделать доступным во всех ОС, нажмите правой кнопкой мыши на соответствующий ключ в реестре и экспортируйте его в .reg. Как вариант, можно скопировать hex-значение.

    Если есть записи LTK , ERand и EDIV , значит это Bluetooth 5.1 устройство и эти записи тоже нужно экспортировать.

    Извлечение ключей в Linux

    Примечание: Если ваш Windows-раздел зашифрован Bitlocker’ом, то получить к нему доступ через chntpw не получится.

    Перезагрузитесь в Arch. Установите chntpw . Примонтируйте ваш Windows-раздел.

    $ cd /путь/к/windows/диску/Windows/System32/config $ chntpw -e SYSTEM

    В окружении chntpw выполните

    > cd CurrentControlSet\Services\BTHPORT\Parameters\Keys

    Затем узнайте MAC-адрес вашего Bluetooth-адаптера и перейдите в соответствующую папку

    > ls > cd mac-адрес 

    Сделайте то же самое с сопряжёнными устройствами:

    Node has 0 subkeys and 1 values size type value name [value if type DWORD] 16 REG_BINARY

    Теперь можно получить ключ устройства через hex :

    > hex 123456789876
    :00000 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX (всякие другие символы)

    «XX»ы и являются ключом сопряжения. Запомните, какие ключи каким MAC-адресам соответствуют.

    В случае BT5.1 вы можете увидеть такой вывод:

    Node has 0 subkeys and 8 values size type value name [value if type DWORD] 16 3 REG_BINARY 4 4 REG_DWORD 16 [0x10] 8 b REG_QWORD 4 4 REG_DWORD 37520 [0x9290] 16 3 REG_BINARY 8 b REG_QWORD 4 4 REG_DWORD 1 [0x1] 4 4 REG_DWORD 45 [0x2d]

    Здесь нужно сохранить LTK , ERand и EDIV .

    Подготовка ключей Bluetooth 5.1

    Если в реестре для нужного устройства были ключи LTK , ERand и EDIV , они должны быть сконвертированы для использования в Linux. LTK соответствует LongTermKey.Key , ERand — Rand , EDIV — EDiv . Значение ERand должно быть развёрнуто и преобразовано в десятичное число. ННапример:

    • Из LTK со значением 48 4D AF CD 0F 92 22 88 0A 52 9A F4 76 DA 8B 94 получается LongTermKey.Key со значением 484DAFCD0F9222880A529AF476DA8B94 .
    • Из ERand со значением 63 02 84 B8 5D 40 44 DF получается Rand со значением 16088054540146049635 .
    • Из EDIV со значением 37520 получается EDiv со значением 37520 .

    Примечание: Можно использовать этот Python-код для конвертирования ERand :

    >>> ERand=' 63 02 84 B8 5D 40 44 DF ' >>> ERand=list(reversed(ERand.strip().split())) >>> int("".join(ERand), 16) 16088054540146049635
    Для macOS

    Загрузитесь в macOS, откройте терминал.

    • Если у вас Sierra или старее, выполните
    $ sudo defaults read /private/var/root/Library/Preferences/blued.plist LinkKeys > ~/bt_keys.txt
    • Если у вас High Sierra или новее, выполните
    $ sudo defaults read /private/var/root/Library/Preferences/com.apple.bluetoothd.plist LinkKeys > ~/bt_keys.txt

    Для старых версий macOS (High Sierra и более ранние) нужно развернуть ключи. Например, 98 54 2f aa bb cc dd ee ff gg hh ii jj kk ll mm преобразуется в MM LL KK JJ GG FF EE DD CC BB AA 2F 54 98 .

    Скопируйте файл bt_keys.txt на диск, который можно будет прочитать в Arch Linux, и перезагрузитесь в Arch Linux.

    Завершение

    Теперь, когда у вас есть нужные ключи, войдите как root и перейдите в каталог:

    # cd /var/lib/bluetooth/MAC-адрес-адаптера

    Здесь вы найдёте подкаталоги для каждого сопряжённого устройства. Для каждого нужного устройства перейдите в его подкаталог:

    # cd MAC-адрес-устройства

    Измените файл info и подставьте ключ под [LinkKey] , например:

    info
    [LinkKey] Key=XXXXXXXXXXXXXXX

    Примечание: Все буквы должны быть в верхнем регистре. Уберите все пробелы.

    Затем перезапустите bluetooth.service и pulseaudio (командой pulseaudio -k && pulseaudio —start ).

    Теперь устройство должно успешно подключаться.

    Примечание: В зависимости от вашего менеджера Bluetooth может понадобиться выполнить полную перезагрузку для переподключения устройств.

    Настройка

    Автоматическое включение после загрузки

    По умолчанию адаптер Bluetooth не включается после перезагрузки. Если вам это нужно, добавьте строку AutoEnable=true в файле конфигурации /etc/bluetooth/main.conf в разделе [Policy] :

    /etc/bluetooth/main.conf
    [Policy] AutoEnable=true

    Видимость при запуске системы

    Если вы хотите, чтобы ваше устройство всегда было видимо и доступно для подключения:

    /etc/bluetooth/main.conf
    [General] DiscoverableTimeout = 0

    Аудио

    Обычно нужны дополнительные шаги для интеграции аудиосервера с Bluetooth. Подробнее это описано ниже.

    Смотрите также Bluetooth headset для информации о подключении Bluetooth-гарнитуры.

    PulseAudio

    Установите пакет pulseaudio-bluetooth . Не забудьте перезапустить PulseAudio после переустановки: pulseaudio -k . При стандартной установке PulseAudio после этого у вас сразу должна появиться возможность использования Bluetooth-устройств.

    Если ваш PulseAudio работает как общесистемная служба, убедитесь, что пользователь, от имени которого запущен демон (обычно pulse ), состоит в группе lp , и не забудьте загрузить нужные модули:

    /etc/pulse/system.pa
    . load-module module-bluetooth-policy load-module module-bluetooth-discover .

    PipeWire

    PipeWire с версии 0.3.19 включает свою поддержку Bluetooth по умолчанию, смотрите Config Bluetooth.

    ALSA

    Примечание: Bluez5 прекратил поддержку ALSA и поддерживает только PulseAudio. Используйте эту инструкцию, только если вы не можете или не хотите использовать PulseAudio.

    Сперва убедитесь, что ваше аудиоустройство Bluetooth подключено и сопряжено с системой.

    Затем установите bluez-alsa-git AUR , запустите (и включите) службу bluealsa и добавьте своего пользователя в группу audio .

    Выполните следующую команду для проверки, что всё работает (замените XX:XX:XX:XX:XX:XX и ФАЙЛ.wav на нужные значения):

    $ aplay -D bluealsa:SRV=org.bluealsa,DEV=XX:XX:XX:XX:XX:XX,PROFILE=a2dp ФАЙЛ.wav 

    В завершение добавьте эти строки в ~/.asoundrc :

    ~/.asoundrc

    defaults.bluealsa

    Теперь можно использовать устройство bluealsa для доступа к аудиоустройству Bluetooth. Управление объемом обычно осуществляется через alsamixer с опцией -D bluealsa .

    Bluetooth serial

    Чтобы получить последовательную связь на Bluetooth-to-Serial модулях (HC-05, HC-06), выполните следующие шаги:

    Выполните сопряжение с вашим устройством Bluetooth с помощью bluetoothctl как описано выше.

    Установите bluez-rfcomm AUR и bluez-utils-compat AUR , так как они предоставляют функции, отсутствующие в более новых инструментах.

    Привяжите MAC-адрес сопряжённого устройства к терминула tty:

    # rfcomm bind rfcomm0 MAC-адрес-устройства 

    Теперь можно открыть /dev/rfcomm0 для последовательной связи:

    picocom /dev/rfcomm0 -b 115200

    Решение проблем

    This article or section is out of date.

    Reason: Replace hciconfig with newer commands. (Discuss in Talk:Bluetooth (Русский))

    Отладка

    Для отладки сперва остановите bluetooth.service .

    Затем запустите его напрямую с параметром -d :

    # /usr/lib/bluetooth/bluetoothd -n -d

    Другой вариант — использовать инструмент btmon .

    Устаревшие инструменты BlueZ

    Восемь инструментов BlueZ объявлены устаревшими и удалены из bluez-utils , хотя не для всех из них есть замена среди новых инструментов. Пакет bluez-utils-compat AUR предоставляет альтернативный вариант bluez-utils , включающий в себя устаревшие инструменты.

    Устаревший инструмент Ближайшая замена
    gatttool btgatt-client, D-Bus Gatt API
    hciattach btattach
    hciconfig btmgmt (и bluetoothctl?)
    hcidump btmon (и btsnoop)
    hcitool отсутствует, есть D-Bus Device API
    rfcomm отсутствует, сделать с D-Bus Profile1 API?
    ciptool
    sdptool отсутствует, функциональность кажется разбросанной по разным объектам DBus: Profile, Advertising, и массивы UUID в device и adapter.

    gnome-bluetooth

    Если вы видите это при попытке включить получение файлов в настройках bluetooth:

    Bluetooth OBEX start failed: Invalid path Bluetooth FTP start failed: Invalid path

    Bluetooth USB донгл

    Если вы пользуетесь USB донглом, вы должны проверить, что ваш Bluetooth донгл распознан системой. Это можно сделать с помощью команды journalctl -f , после того как вы воткнёте USB донгл (или заглянув в /var/log/messages.log ). Должно появиться что-то вроде следующего (ищите hci):

    Feb 20 15:00:24 hostname kernel: [ 2661.349823] usb 4-1: new full-speed USB device number 3 using uhci_hcd Feb 20 15:00:24 hostname bluetoothd[4568]: HCI dev 0 registered Feb 20 15:00:24 hostname bluetoothd[4568]: Listening for HCI events on hci0 Feb 20 15:00:25 hostname bluetoothd[4568]: HCI dev 0 up Feb 20 15:00:25 hostname bluetoothd[4568]: Adapter /org/bluez/4568/hci0 has been enabled

    Если вы получили только первые две строки, значит донгл распознан, но вам необходимо его активировать (поднять). Пример:

    # btmgmt
    [mgmt]# info
    Index list with 1 item hci0: Primary controller addr 00:1A:7D:DA:71:10 version 6 manufacturer 10 class 0x000000 supported settings: powered connectable fast-connectable discoverable bondable link-security ssp br/edr hs le advertising secure-conn debug-keys privacy static-addr current settings: connectable discoverable bondable ssp br/edr le secure-conn name Mozart short name
    [mgmt]# select hci0
    Selected index 0
    [hci0]# power up
    hci0 Set Powered complete, settings: powered connectable discoverable bondable ssp br/edr le secure-conn
    [hci0]# info
    hci0: Primary controller addr 00:1A:7D:DA:71:10 version 6 manufacturer 10 class 0x1c0104 supported settings: powered connectable fast-connectable discoverable bondable link-security ssp br/edr hs le advertising secure-conn debug-keys privacy static-addr current settings: powered connectable discoverable bondable ssp br/edr le secure-conn
    # bluetoothctl
    [bluetooth]# show
    Controller 00:1A:7D:DA:71:10 (public) Name: Mozart Alias: Mozart Class: 0x0000095c Powered: no Discoverable: yes Pairable: yes
    [bluetooth]# power on
    [CHG] Controller 00:1A:7D:DA:71:10 Class: 0x001c0104 Changing power on succeeded [CHG] Controller 00:1A:7D:DA:71:10 Powered: yes 
    [bluetooth]# show
    Controller 00:1A:7D:DA:71:10 (public) Name: Mozart Alias: Mozart Class: 0x001c0104 Powered: yes Discoverable: yes Pairable: yes

    Чтобы убедиться, что устройство было определено, вы можете использовать hcitool , являющуюся частью bluez-utils . Вы можете получить список доступных устройств, их идентификаторов и MAC-адресов, используя:

    $ btmgmt info
    Index list with 1 item hci0: Primary controller addr 00:1A:7D:DA:71:10 version 6 manufacturer 10 class 0x1c0104 supported settings: powered connectable fast-connectable discoverable bondable link-security ssp br/edr hs le advertising secure-conn debug-keys privacy static-addr current settings: powered connectable discoverable bondable ssp br/edr le secure-conn

    Для проверки версии Bluetooth можно сопоставить её с версией HCI по таблице из официальной спецификации. Например, в предыдущем выводе HCI version 6 означает Bluetooth 4.0.

    Более детальная информация об устройстве может быть получена с помощью устаревшего инструмента hciconfig . ( bluez-utils-compat AUR )

    $ hciconfig -a hci0
    hci0: Type: USB BD Address: 00:1B:DC:0F:DB:40 ACL MTU: 310:10 SCO MTU: 64:8 UP RUNNING PSCAN ISCAN RX bytes:1226 acl:0 sco:0 events:27 errors:0 TX bytes:351 acl:0 sco:0 commands:26 errors:0 Features: 0xff 0xff 0x8f 0xfe 0x9b 0xf9 0x00 0x80 Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3 Link policy: RSWITCH HOLD SNIFF PARK Link mode: SLAVE ACCEPT Name: 'BlueZ (0)' Class: 0x000100 Service Classes: Unspecified Device Class: Computer, Uncategorized HCI Ver: 2.0 (0x3) HCI Rev: 0xc5c LMP Ver: 2.0 (0x3) LMP Subver: 0xc5c Manufacturer: Cambridge Silicon Radio (10)
    Устройства аудио начинают пропускать звук на небольшом расстоянии от донгла

    Если другие устройства работают через тот же USB-хост, они могут прерывать связь с устройствами аудио. Убедитесь, что только Bluetooth-устройство подключено к соответствующей USB-шине. Например:

    $ lsusb
    Bus 002 Device 002: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode) Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 004: ID 048d:1345 Integrated Technology Express, Inc. Multi Cardreader Bus 001 Device 003: ID 0424:a700 Standard Microsystems Corp. 2 Port Hub Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    CSR Dongle 0a12:0001

    С устройством ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode) есть баг, и оно сейчас работает только в версиях ядра ≤ 3.9.11. Есть патч для новых версий. Подробнее смотрите Kernel Bug 60824.

    Logitech Bluetooth USB донгл

    Существуют Logitech донглы (например, Logitech MX5000), которые могут работать в двух режимах: встроенный (Embedded) и HCI. Во встроенном режиме донгл эмулирует устройство USB так, что ваш компьютер думает, что вы используете обычную USB мышь/клавиатуру.

    Если вы нажмёте маленькую красную кнопку на USB BT мини-приёмнике, включится другой режим. Удерживайте красную кнопку на BT донгле и вставьте его в компьютер, и через 3-5 секунд удерживания кнопки в системном трее появится иконка Bluetooth (Обсуждение).

    В качестве альтернативы, вы можете установить пакет bluez-hid2hci . Когда вы подключите ваш Logitech донгл, он автоматически переключится.

    hcitool scan: Устройство не найдено

    • На некоторых ноутбуках Dell (например, Studio 15) вы должны переключить режим Bluetooth с HID на HCI. Установите пакет bluez-hid2hci , после чего udev будет делать это автоматически. В качестве альтернативы вы можете выполнить эту команду для переключения на HCI вручную:
    # /usr/lib/udev/hid2hci
    • Если устройство не появится, а на вашей машине есть операционная система Windows, попробуйте загрузить её и включить адаптер bluetooth в windows.
    • Иногда также помогает эта простая команда:
    # bluetoothctl power on

    bluetoothctl: No default controller available

    Эта ошибка может случаться, если устройство заблокировано через rfkill.

    Также это случается с некоторыми картами intel (такими как 8260), которые не распознаются корректно службой Bluetooth. Иногда использование устаревшего bluez-utils-compat AUR взамен bluez-utils , как сообщалось, решает проблему.

    Это также может быть вызвано мерами по энергосбережению, тогда добавление параметра ядра btusb.enable_autosuspend=n может помочь. Смотрите также Red Hat Bugzilla – Bug 1573562.

    systemd: Condition check resulted in Bluetooth service being skipped

    bluetooth.service требует только существование каталога /sys/class/bluetooth , который создаётся модулем ядра bluetooth , который автоматически загружается через systemd-udev , если он находит работающее устройство Bluetooth.

    Если у вас /sys/class/bluetooth не существует, проверьте, что модуль Bluetooth загружен, с помощью lsmod . Если нет, и вы уверены, что у вас есть устройство Bluetooth, попробуйте загрузить его вручную и перезапустить службу bluetooth.service .

    Также нужно загрузить соответствующий драйвер Bluetooth, чаще всего btusb , но иногда могут понадобиться btrtl,btintel,btbcm,bnep,btusb и т.д.

    Проверьте статус bluetooth.service , чтобы убедиться, что он запущен.

    Если bluetooth.service успешно запущен, есть шанс, что использовать Bluetooth нормально всё равно не получится (например, bluetoothctl говорит что-то вроде org.Bluez.Error.NotReady при выполнении scan on ). Если такое случается, попробуйте перезагрузить компьютер и дважды проверьте: каталог /sys/class/bluetooth существует; lsmod содержит нужные модули Bluetooth; сообщения в журнале; и т.д. systemd-udev должен подхватить ваше устройство Bluetooth автоматически.

    rfkill unblock: не происходит разблокировка

    Если ваше устройство по-прежнему программно блокируется и у вас запущен connman, попробуйте это:

    $ connmanctl enable bluetooth

    Мой компьютер невидим

    Включите режим обнаружения:

    # bluetoothctl discoverable on

    Убедитесь, что он включен:

    # bluetoothctl show
    Powered: yes Discoverable: yes Pairable: yes

    Примечание: Проверьте DiscoverableTimeout и PairableTimeout в /etc/bluetooth/main.conf

    Если компьютер всё равно невидим, попробуйте изменить класс устройства в /etc/bluetooth/main.conf, как здесь:

    # Default device class. Only the major and minor device class bits are # considered. #Class = 0x000100 # Computer Type (from default config) Class = 0x100100 # (Object-Transfer Service & Computer Type)

    Примечание: Иногда Class в файле main.conf оказывается переопределён после инициализации устройства, так что попробуйте установить класс напрямую с помощью hciconfig hci0 class 100100 .

    Пользователь сообщал, что это было единственное решение, сделавшее его компьютер видимым для телефона. Телевизоры LG (и некоторые другие) видимы с других устройств аудио, так что использование класса 000414 (soundbar) заставит такие устройства появиться.

    Foxconn / Hon Hai / Lite-On Broadcom

    Некоторые из этих устройств необходимо прошивать при загрузке. Файлы прошивок не предоставляются, но их можно сконвертировать из Windows-файлов .hex в .hcd с помощью hex2hcd (который устанавливается с bluez-utils ).

    Чтобы получить нужный .hex файл, попробуйте поискать vendor:product (производитель:продукт) из lsusb, например:

    . Bus 002 Device 004: ID 04ca:2006 Lite-On Technology Corp. Broadcom BCM43142A0 Bluetooth Device .
    Bus 004 Device 004: Id 0489:e031 Foxconn / Hon Hai

    В качестве альтернативы, вы можете загрузиться в Windows (можете использовать виртуальную машину) и узнать название прошивки из утилиты Диспетчер Устройств. Если вы хотите знать модель устройста, но не видите его в lsusb, его можно увидеть в lsusb -v как iProduct .

    Файл .hex можно извлечь из скачанного драйвера Windows без необходимости загружать Windows. Скачайте правильный драйвер, например Bluetooth Widcomm [устаревшая ссылка 2023-09-16 ⓘ] (перечислен среди драйверов для Lifebook P771 [устаревшая ссылка 2022-09-17 ⓘ] ), который содержит драйверы для многих устройств Broadcomm. В случае Widcomm драйвер является самораспаковывающимя RAR-архивом, так что его можно распаковать с помощью unrar x. Чтобы найти, какой из .hex файлов нужен вам, смотрите Win32/bcbtums-win7x86-brcm.inf и ищите [RAMUSBE031.CopyList] , где E031 следует заменить на product code вашего устройства (второе hex-число из lsusb) в верхнем регистре.

    Когда вы сконвертируете его в .hcd, скопируйте его в /lib/firmware/brcm/BCM.hcd — это имя файла предлагает dmesg и может быть другим, так что проверьте вывод dmesg у себя. Затем перезагрузите модуль

    # rmmod btusb # modprobe btusb

    Теперь устройство должно быть доступно. Смотрите BBS#162688 для информации о том, как сделать эти изменения постоянными.

    Комбинированные WiFi-Bluetooth карты Intel

    Устройство подключается и затем отключается спустя мгновение

    Если вы видите в журнале подобные сообщения и устройство не может подключиться или отключается вскоре после подключения:

    bluetoothd: Unable to get connect data for Headset Voice gateway: getpeername: Transport endpoint is not connected (107) bluetoothd: connect error: Connection refused (111)

    Это может быть из-за того, что вы уже настроили сопряжение с этим устройством в другой операционной системе с тем же Bluetooth-адаптером (например, в случае dual-booting). Некоторые устройства не могут обрабатывать несколько сопряжений с одним и тем же MAC-адресом. Смотрите #Сопряжение при Dual boot для решения этой проблемы.

    Устройство не подключается и пишет ошибку в журнал

    Если при попытке подключения вы видите в журнале сообщение вроде такого:

    a2dp-source profile connect failed for 9C:64:40:22:E1:3F: Protocol not available

    попробуйте установить pulseaudio-bluetooth и перезапустить PulseAudio. Эта ошибка может проявиться даже при использовании только передачи файлов.

    Устройство не видно в scan

    Некоторые устройства с Bluetooth low energy не отображаются при сканировании в bluetoothctl, например Logitech MX Master. Самым простым найдённым путём для соединения может быть установка bluez-utils-compat AUR , запуск bluetooth.service и выполнение:

    # bluetoothctl
    [NEW] Controller (MAC) myhostname [default]
    [bluetooth]# power on
    [CHG] Controller (MAC) Class: 0x0c010c Changing power on succeeded [CHG] Controller (MAC) Powered: yes
    [bluetooth]# scan on
    Discovery started [CHG] Controller (MAC) Discovering: yes

    В другом терминале:

    # hcitool lescan

    Дождитесь появления устройства и затем прервите hcitool с помощью Ctrl+c . Теперь bluetoothctl должен увидеть ваше устройство и позволить нормально настроить сопряжение.

    Не удаётся получить файлы из-за символьной ссылки

    Если передача файла обрывается при успешно работающем соединении Bluetooth, проблема может быть из-за символьных ссылок в пути. В журнале могут появиться примерно такие записи:

    Jun 18 11:18:13 ember obexd[3338969]: open(/home/me/.cache/obexd/MOC740): Operation not permitted (1)

    Если показанный здесь путь содержит символьную ссылку, то obexd по умолчанию не примет его. Поведение можно переопределить с помощью drop-in файла для пользовательской службы obex.service :

    ~/.config/systemd/user/obex.service.d/10-symlink.conf
    [Service] ExecStart= ExecStart=/usr/lib/bluetooth/obexd --symlinks

    Затем выполните systemctl daemon-reload —user от имени нужного пользователя и перезапустите пользовательский юнит obex.service .

    Интерференция между наушниками и мышью

    Если аудио заикается при одновременном использовании Bluetooth мыши и клавиатуры, попробуйте это, как указано в #23 https://bugs.launchpad.net/ubuntu/+source/bluez/+bug/424215

    # hciconfig hci0 lm ACCEPT,MASTER # hciconfig hci0 lp HOLD,SNIFF,PARK

    Bluetooth мышь двигается с задержкой

    Попробуйте изменить файл /var/lib/bluetooth/XX:XX:XX:XX:XX:XX/YY:YY:YY:YY:YY:YY/info (где XX:XX:XX:XX:XX:XX — MAC-адрес вашего Bluetooth-адаптера, YY:YY:YY:YY:YY:YY — MAC-адрес вашей мыши), добавив туда следующие строки:

    [ConnectionParameters] MinInterval=6 MaxInterval=9 Latency=44 Timeout=216

    Вы можете посмотреть MAC-адрес адаптера командой hcitool dev , а MAC-адреса подключенных устройств командой hcitool con

    Адаптер пропадает после ждущего режима

    Сперва найдите product ID адаптера. Например:

    $ lsusb -tv
    /: Bus 01.Port 1: Dev 1, Driver=xhci_hcd/12p, 480M ID 1d6b:0002 Linux Foundation 2.0 root hub . |__ Port 3: Dev 3, If 0, Driver=btusb, 12M ID 8087:0025 Intel Corp. |__ Port 3: Dev 3, If 1, Driver=btusb, 12M ID 8087:0025 Intel Corp. .

    В данном случае vendor ID — 8087, product ID — 0025.

    Затем используйте usb_modeswitch для сброса адаптера:

    # usb_modeswitch -R -v vendor_ID -p product_ID 

    Проблемы со всеми устройствами BLE на ядре 5.9+

    С версии 5.9 стек Bluetooth в ядре пытается использовать link-layer privacy на BLE соединениях. Если устройство работает после сопряжения, но не переносит перезагрузку или ждущий режим — вероятно, из-за этого.

    Чтобы обойти [2] эту проблему, откройте /var/lib/bluetooth/mac_адаптера/mac_устройства/info , удалите следующие строки и перезапустите bluetooth.service :

    [IdentityResolvingKey] Key=.

    Смотрите связанное обсуждение на форуме Arch.

    Смотрите также

    • Keeping Bluetooth devices paired between Linux and Windows
    • Bluetooth link keys on dual-boot systems

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *