Настройка bluetooth debian 10

Обновлено: 07.07.2024

Понимаю, что на тему неработающего Bluetooth в Linux расписано уже достаточно много, но ни один из опробованных мною способов не заработал (в некоторой степени из-за того, что в старых темах файлы с драйверами уже недоступны).

В общем, имеется ноутбук Acer TravelMate P257-M-539K с Debian 10 на борту. На этом же компьютере Windows 7 Bluetooth видит, в Linux dmesg выводит:

Практически все программы и доступные в репозитории драйвера и firmware, которые связаны с Bluetooth установлены, но все они его не видят. Драйверов на официальном сайте для Linux'а нет.

Подскажите, пожалуйста, как можно решить эту проблему?

А lspci её видит? Какой модуль используется для него? А вообще, многим карточкам, где блюпуп объединён с вайфаем надо прописывать правило, чтобы оба чипа работали одновременно. У меня, например, в /etc/modprobe.d есть файл iwlwifi.conf со следующим содержимым:

По всей видимости нет:

У меня, например, в /etc/modprobe.d есть файл iwlwifi.conf

Я так понимаю, если файла нет, то его нужно создать?

Или btcoex_enable=0, не знаю. Должно заработать после перезагрузки.

И ещё, совскм забыл, а что говорит rfkill list про твои карточки? Может блюпуп просто залочен после винды?

Deleted ( 03.03.18 18:27:15 )
Последнее исправление: Chelobaka 03.03.18 18:30:11 (всего исправлений: 1)

Firmware для Atheros уже установлен:

Вот что выдал modinfo ath9k:

Исходя из того, что написано в 4-й строке снизу, одновременная работа разрешена. Тем не менее я создал файл ath9k.conf там где нужно и поставил опцию btcoex_enable=0. После перезапуска вывод команды modinfo ath9k не изменился и даже btcoex_enable=1 и дальнейший перезапуск ничего, к сожалению, не дал - никто не видит Bluetooth.

И ещё, совскм забыл, а что говорит rfkill list про твои карточки? Может блюпуп просто залочен после винды?

Уже проверял, нигде блокировок не стоит:

Точнее, в 3-й строчке снизу.


Bluetooth обычно по usb подключают. Смотреть нужно в lsusb.

Bluetooth обычно по usb подключают. Смотреть нужно в lsusb.

Не в моём случае:

Это было давно. Теперь я уже и забыл, когда последний раз видел такое.

Извини, идей нет. А другой дистрибутив пробовал? Просто с лайфа загрузиться, проверить, работает или нет?


Готовясь на работе к ежегодному форуму посвященному IT, возникла идея создать простой манипулятор управляемый беспроводным геймпадом для демонстрации возможностей микроконтроллеров и одноплатных компьютеров. Под рукой был контроллер ТРИК, несколько сервомоторов, железный конструктор и месяц до начала форума.

«Все идет по плану», но не в этом случае.

ТРИК на борту с Linux был перебором для такого манипулятора, но «дело в банальном удобстве использования и обслуживания» (цитата ClusterM про Linux в умном домофоне).

Прочитав спецификацию, было обнаружено, что в нем есть Bluetooth. Если вы работали с этим контроллером, то знаете, что передача программ осуществляется по Wi-Fi и других удобных способов общения с ним нет. В меню нет упоминания о наличии Bluetooth. Но как так?

Вооружившись SSH, отверткой и любопытством я начал искать Bluetooth. В системе присутствовали утилиты hcitool, hciconfig и демон bluetoothd. Все они говорили о том, что его нет.

Обзвонив друзей в поисках внешнего USB модуля, я продолжил искать.

Разобрав контроллер, был найден модуль Jorjin WG7311-0A. В спецификации указано, что, действительно, есть Wi-Fi, Bluetooth и даже FM-радио. Интерфейс для общения с Bluetooth – UART, а включается он через контакт BT_EN.


Прочитав, как Bluetooth модуль подключается по UART через hcitool я испытал удачу и – ничего. Два из трех свободных UART портов молчали.

Но у нас есть контакт BT_EN! Возможно, что модуль просто выключен и не отвечает на запросы. Изучив устройство ядра Linux для ARM устройств, был найден файл, где прописываются все контакты, используемые SoC. Открыв arch/arm/mach-davinci/board-da850-trik.c в исходном коде ядра, и вправду был найден GPIO контакт для Bluetooth. Победа! – подумал я.

Для включения контакта через GPIO, нужно найти его сквозной порядковый номер. Находим следующую строчку в коде ядра с запросом на инициализацию контакта BT_EN_33 в arch/arm/mach-davinci/board-da850-trik.c :

В ней используется макрос GPIO_TO_PIN. Смотрим описание макроса в arch/arm/mach-davinci/include/mach/gpio-davinci.h :

При помощи его и можно узнать сквозной номер контакта. Получаем, что 16 * 6 + 11 = 107. Теперь перейдем к включению контакта.

0 или 1 в команде echo является состоянием контакта.

Запускаем команду на подключение и.

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

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

Открываем папку /lib/firmware с прошивками и не находим нужного файла. После долгих поисков в интернете, находим на репозиторие TI нужный файл и скачиваем его. Другие версии этого же файла работать отказывались.

Перезагружаем контроллер и подключаемся вновь:

Ура! Прошивка загрузилась. Проверяем hciconfig:

Запускаем службу bluetoothd, сканирование устройств и обнаружение нашего модуля:

Поиск на компьютере обнаруживает устройство:


Для включения Bluetooth можно сделать скрипт:

И добавить его в автозапуск:

Перезапуск и отключение модуля ведут себя непредсказуемо, поэтому варианты stop и restart не имеют никаких команд.

Самый простой способ проверки связи в обе стороны – служба COM-порта. При помощи нескольких команд включаем её:

Подключаемся с телефона и видим приглашение на вход в систему:


Следуя инструкциям по подключению геймпада в Linux мы сталкиваемся со следующими проблемами:

  • BlueZ в дистрибутиве устарел и не понимает команд от демона sixad, который устанавливает связь с геймпадом
  • Новая версия BlueZ из исходных кодов отказывается компилироваться из-за множества зависимостей
  • BlueZ из свежего Debian требует udev и systemd, которые отсутствуют в текущем дистрибутиве

Единственную зависимость, которую получилось удовлетворить – это модуль ядра uinput.

  • получаем конфигурацию текущего ядра на устройстве
  • скачиваем код ядра
  • скачиваем и устанавливаем toolchain
  • копируем конфигурацию ядра в папку с кодом ядра
  • добавляем модуль uinput в конфигурацию
  • запускаем сборку, предварительно включив toolchain

Теперь программа не ругается на отсутствие модуля ядра, но дальше мы не можем ничего сделать. Инструкция для геймпада нам пригодится чуть позже.

Приступаем к плану "тяп-ляп". Раз нет удобного способа поставить нужные программы на оригинальный дистрибутив, то поставим что-нибудь популярное. Процессор имеет архитектуру ARMv5TE, значит и дистрибутивы есть под неё.

Пробуем распаковать и запустить универсальный Arch Linux для ARM и при загрузке в консоли видим, что systemd требует ядро более новой версии, чего у нас нет. Попытки переноса ядра 4.16 не увенчались огромным успехом и на это было потрачено слишком много времени.

Переходим к другому варианту – Debian. Образ диска с установленной системой для ARM существует, но лучше поставить чистую систему с нужными для нас пакетами и настройками.

Установка в QEMU

Скачиваем установочный образ (ссылка на .iso) и устанавливаем QEMU.
Также нам нужны ядро и образ initrd для загрузки установки, которые можно скачать отсюда.

Создаем образ карты памяти с объемом настоящей карты памяти (в данном случае 4 Гб):

Если вы собираетесь сделать разметку диска нестандартной относительного оригинального дистрибутива, то оставьте корневой раздел первым, иначе придется менять параметры загрузки ядра в uBoot. Там прописан номер раздела на котором находится корневая файловая система.

Стандартная разметка содержит:

  1. Раздел EXT4 для корневой файловой системы размером ≈ 1,3 Гб
  2. Раздел FAT32 для хранения данных пользователя размером ≈ 500 Мб

Вывод fdisk для образа оригинального дистрибутива:

После настройки параметров уходим пить несколько чашек чая, т.к. эмулятор ненамного быстрее настоящего ARM процессора.

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

Настройка системы

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

Терминалы

Редактируем /etc/inittab , убираем лишние терминалы, включаем нужный для нас UART и добавляем автовход для нужного пользователя (используйте root только при отладке). Автовход пригодится, если вы планируете запускать оболочку для управления на контроллере.

Bluetooth и Wi-Fi

Устанавливаем bluez-utils и wpasupplicant для доступа к Wi-Fi и Bluetooth.

Отключаем интерфейс eth0 и настраиваем интерфейс wlan1 в /etc/network/interfaces :

Добавляем заранее сеть в /etc/wpa_supplicant.conf , т.к. делать это на самом контроллере не так удобно:

Добавляем скрипт на включение Bluetooth. В этот раз, модифицируем /etc/init.d/bluetooth :

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

Взмах влево, взмах вправо

Убираем ненужные программы и службы которые можно посмотреть при помощи htop, ведь они занимают драгоценное место в ОЗУ:


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

До отключения службы потребление ОЗУ было 19 Мб, а после – 16 Мб.

Разделы системы

Хоть uBoot и передает ядру устройство, на котором расположен корневой раздел, стоит прописать его в /etc/fstab для надежности. Изменяем первую строчку, отвечающую за корневой раздел:

Если вы сделали корневой раздел не первым, не забудьте указать нужный номер раздела.

Если вы оставили второй раздел FAT для пользовательских данных, то вам необходимо создать папку для монтирования раздела в неё

и прописать раздел в /etc/fstab :

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

где, NNNN = размер сектора * начало раздела. Размер сектора по умолчанию равен 512 байтам.

Монтируем также и оригинальный дистрибутив:

Удаляем ядро для QEMU и его модули, т.к. они не предназначены для нашей платформы. Копируем новое ядро и модули, так же, как и на оригинальном дистрибутиве.

Нам понадобятся прошивки для Wi-Fi модуля, которые есть в оригинальном дистрибутиве в папке /lib/firmware и прошивка Bluetooth, которую мы нашли ранее.

Отсоединяем образы дисков:

И запускаем копирование образа на карту памяти с помощью dd:

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

Подключаем геймпад через USB к контроллеру и запускаем программу для создания пары:

При подключении геймпада ничего не происходит и служба sixad молчит:

Но в сообществе Raspberry Pi уже изготовили "костыль" для исправления подключения.

Пересобираем программу и радуемся.

Теперь геймпад доступен системе как устройство ввода и программа jstest покажет состояние всех кнопок и аналоговых датчиков:

где X – номер устройства в системе, по умолчанию – 2. Номера кнопок и осей можно посмотреть здесь.

Видео с демонстрацией работы геймпада на YouTube.

Загрузка ядра:

Терминал, запущенный в X11:


И по традиции:


Полезные ссылки

Программы для подключения геймпада Dualshock 3 – sixpair и sixad.

Для геймпадов и других устройств ввода есть легкая библиотека на C – libenjoy.

Исходный код программы для управления сервомоторами и моторами – репозиторий GitHub.

Все файлы конфигурации из статьи для самодельного дистрибутива – репозиторий GitHub.

  • В спецификации заявлено, что объем ОЗУ составляет 256 Мб. Но если вы запустите htop, то увидите, что доступно только 128 Мб. Это ограничено параметрами ядра, которые можно посмотреть в консоли uBoot:

Чип памяти имеет маркировку 3PC22 D9MTD производства Micron. Найти информацию о его настоящем объеме не удалось.


В отличие от многих аспектов Linux, поддержка Bluetooth не выполняется ядром Linux автоматически. Это во многом связано со стеком Bluetooth и тем, как он взаимодействует с системой Linux в целом. Чтобы компенсировать это, удобные для пользователя дистрибутивы, такие как Ubuntu, Elementary и т. Д., Очень стараются настроить Bluetooth для пользователей. Однако не все Linux делают это. Необходимо установить различные службы и клиенты Bluetooth. Кроме того, все радиомодули Bluetooth отличаются (а некоторые из них не имеют драйверов с открытым исходным кодом), что означает, что их нужно устанавливать постфактум. Вот как подключить и использовать устройства Bluetooth в Linux.

ОПОВЕЩЕНИЕ СПОЙЛЕРА: прокрутите вниз и посмотрите видеоурок в конце этой статьи.

Примечание: используете Ubuntu? Если это так, возможно, ваш компьютер уже имеет превосходную поддержку Bluetooth, и нет необходимости настраивать его с помощью этой статьи.

Arch Linux

Fedora

OpenSUSE

Получение инструментов и служб Bluetooth в SUSE осуществляется с помощью OBS. Перейти на эту страницу и нажмите кнопку быстрой установки. Отсюда YaST все установит.

Проверь это - Как скачать торренты из командной строки в Linux

Debian

Другие Linux

Стек bluetooth bluez совместим со всеми дистрибутивами Linux, даже с Chrome OS! По этой причине у пользователей менее известных альтернативных дистрибутивов Linux не будет проблем с работой этих инструментов. Чтобы установить их, откройте диспетчер пакетов и найдите «bluez». Установите все, что содержит слово «bluez», на всякий случай.

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

Получение клиента Blueman

Установка Bluez позволяет вашей среде рабочего стола Linux напрямую использовать Bluetooth. Это означает, что если вы используете KDE Plasma, он будет работать напрямую с клиентом KDE Bluetooth. То же самое и со встроенным клиентом Gnome Shell. Итак, устанавливать Blueman не нужно.

Если вы используете среду рабочего стола Linux или оконный менеджер, в котором нет встроенного диспетчера Bluetooth, подумайте об установке Blueman. Это легкий инструмент для подключения, который значительно упрощает взаимодействие с устройствами.

Arch Linux

Fedora

OpenSUSE

Debian

Другие Linux

Инструмент подключения Blueman широко используется в Linux. Чтобы найти его в альтернативных дистрибутивах Linux, откройте диспетчер пакетов (или программный браузер), найдите «blueman» и установите его. Не можете найти его в источниках программного обеспечения? Вместо этого загрузите его с sourceforge !

Конфигурация

Недостаточно скачать стек Bluez Bluetooth и установить его в Linux. Службы должны быть активными, иначе устройства не будут подключаться. Сначала откройте терминал и получите корневую оболочку, используя: sudo -s

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

При использовании портативного компьютера со встроенным радиомодулем Bluetooth драйвер (если поддерживается Linux) должен автоматически загружать драйвер, поэтому нет необходимости загружать его вручную.

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

Arch Linux, Fedora, SUSE и другие системные Linux

Во-первых, включите службу BT, чтобы она всегда запускалась при загрузке Linux. Это делается с помощью:

Затем сразу же запустите службу:

Если в какой-то момент systemctl отказывается запускать или включать эти службы, рассмотрите возможность использования параметра force:

Старая версия Debian

Используете версию Debian без systemd? Если да, то после установки Bluez и всех других инструментов Bluetooth перезагрузите компьютер. Службы запуска будут активны после повторного входа в систему.

Подключение к Bluetooth в Gnome

Если служба Bluetooth работает правильно, при подключении адаптера Bluetooth (или) использовании встроенного радиомодуля Bluetooth на вашем ПК вы должны увидеть значок Bluetooth на панели Gnome.

Щелкните значок, и откроется меню. В меню выберите «Настройки Bluetooth», чтобы открыть инструмент просмотра устройств.

В инструменте просмотра нажмите на устройство, к которому хотите подключиться.

Следуйте инструкциям на экране, которые дает Gnome для подключения.

Подключение к Bluetooth в KDE

Чтобы подключить устройства Bluetooth к рабочему столу KDE Plasma Desktop, убедитесь, что ваш USB-ключ (или) встроенный радиомодуль Bluetooth работает.

Отсюда щелкните значок BT на панели Plasma, затем выберите устройство для подключения. Следуйте инструкциям на инструменте для сопряжения!

Подключение к Bluetooth в Blueman

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

Инструмент Blueman проведет вас через процесс сопряжения. Следуйте инструкциям на экране, и вскоре ваше устройство будет сопряжено.

Вывод

Bluetooth всегда был ненадежным в Linux, и многие дистрибутивы Linux не настраивают его сразу. Надеюсь, что, следуя этому руководству, ваши проблемы с Bluetooth в Linux останутся в прошлом.

install bluetooth

Беспроводная технология Bluetooth является всемирной спецификацией для недорогого решения радиосвязи с малым форм-фактором, которое обеспечивает связь между мобильными компьютерами, мобильными телефонами, другими портативными карманными устройствами и подключение к Интернету. Спецификация разрабатывается, публикуется и продвигается Специальной группой по интересам Bluetooth (SIG) .

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

  • Полная модульная реализация
  • Симметричная мульти-безопасная обработка
  • Многопоточная обработка данных
  • Поддержка нескольких устройств Bluetooth
  • Реальная аппаратная абстракция
  • Стандартный интерфейс сокетов для всех слоев
  • Поддержка безопасности устройства и уровня обслуживания

Установка BlueZ на Linux

Установите пакеты BlueZ с помощью любой из следующих команд, соответствующих вашему дистрибутиву Linux.

Эта установка предоставляет bluetoothctl утилиту. Вам необходимо добавить свою учетную запись в группу lp, если вы хотите подключиться к Bluetooth-модему.

Устройство Bluetooth должно быть запущено и включено.

Как выполнить сопряжение и подключиться к устройству Bluetooth

Мы будем использовать bluetoothctl CLI Т.П. настроить BlueZ . Если у вас есть альтернативный интерфейсный инструмент, такой как GNOME Bluetooth, вы можете использовать его вместо этого.

Сначала убедитесь, что Bluetooth не отключен.

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

Подтвердите, что он разблокирован.

Использование bluetoothctl для подключения к устройству Bluetooth

Это общий план сопряжения устройства с использованием bluetoothctl .

  • Запустите интерактивную команду bluetoothctl .

Ввод, help чтобы получить список доступных команд.

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

Включите адаптер Bluetooth при включении

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

Читайте также: