- Ubuntu 18.04 больше не обнаруживает устройства Bluetooth после выхода из режима ожидания
- 4 ответа
- ОБНОВЛЕНИЕ 2018-09-20:
- Оригинальный ответ:
- How to restart Bluetooth in Ubuntu?
- Method 1: Restarting Bluetooth Service
- Method 2: Using “Rfkill” to Unblock Bluetooth
- Method 3: Using “Blueman” Bluetooth Management Utility
- Conclusion
- About the author
- Talha Saif Malik
- Thread: Need a script to restart bluetooth service.
- Need a script to restart bluetooth service.
- Re: Need a script to restart bluetooth service.
- Re: Need a script to restart bluetooth service.
- Re: Need a script to restart bluetooth service.
- Как настроить Bluetooth в Linux сложным путем
- Этап 1. Подготовка
- Этап 2. Наступление
- Этап 3. Проверка связи
- Этап 4. ./configure && make
- Этап 5. Варим кашу из топора
- Установка в QEMU
- Настройка системы
- Терминалы
- Bluetooth и Wi-Fi
- Взмах влево, взмах вправо
- Разделы системы
- Этап 6. Пробуем нашу кашу
- Этап 7. Финишная прямая
- Используем на практике
- Полезные ссылки
- Интересные факты о контроллере
Ubuntu 18.04 больше не обнаруживает устройства Bluetooth после выхода из режима ожидания
Bluetooth отлично работал на моем ноутбуке (Acer Aspire V17 Nitro) под управлением Ubuntu 18.04, пока я не использовал Suspend в первый раз и не разбудил его снова. Больше не обнаруживает никаких устройств.
Вещи, которые я пробовал:
Отключение и включение Bluetooth
Перезапуск службы Bluetooth
Переустановка этих пакетов: bluez gnome-bluetooth pulseaudio-module-bluetooth
Бег rfkill list :
Загрузка в живую USB и включение Bluetooth там (он также не обнаруживает никаких устройств там)
У кого-нибудь есть другие идеи? Тот факт, что он потерпел неудачу во время приостановки или во время пробуждения от приостановки, может быть подсказкой.
4 ответа
ОБНОВЛЕНИЕ 2018-09-20:
Мое оригинальное решение больше не работает для меня надежно. Теперь я вижу один из трех случаев возобновления из приостановки:
- Bluetooth и WiFi отключены (нет доступных адаптеров)
- Только Bluetooth отключен (нет доступных адаптеров)
- Без вопросов
Единственный обходной путь, который решает проблему в 100% случаев, — это перезагрузить BIOS и вручную отключить Bluetooth и WiFi, а затем включить его.
Обходной путь, который я использую, — это отключить источник питания, закрыть, а затем открыть крышку ноутбука, чтобы принудительно включить аппаратный цикл питания. Это работает примерно половину времени, поэтому мне часто приходится делать это два или три раза.
Оригинальный ответ:
Я сталкивался с той же проблемой при использовании Kubuntu на ноутбуках Dell, Asus и MSI с интегрированным WiFi/Bluetooth, начиная с 16.04. Это происходит с перерывами; Я не могу воспроизвести его надежно, но это происходит только после возобновления приостановки.
Когда проблема возникает в конфигурации по умолчанию, служба Bluetooth не может быть полностью перезапущена. Я много позаимствовал из ответа Оссамы Насера, но мне повезло больше, он заставил службу Bluetooth отключить и затем возобновить работу.
Мое решение ниже, также написано /lib/systemd/system-sleep/bluetooth :
Я буду продолжать обновлять этот ответ, если смогу подтвердить, что он работает. Опять же, этот вопрос кажется несколько сложным для воспроизведения.
Источник
How to restart Bluetooth in Ubuntu?
For instance, you may experience some problems with Bluetooth connectivity after suspending the whole system. In this case, you think that restarting the entire system for making the Bluetooth headset work is the right option. You also go for the “universal solution, ” removing the device and pairing it up again. Unfortunately, these solutions are not going to work for you in Ubuntu. After significant research, we have compiled some solutions for restarting Bluetooth in Ubuntu. To solve this problem, try each of these solutions one at a time.
Method 1: Restarting Bluetooth Service
First of all, restart the Bluetooth by utilizing the below-given command:
Now, load the kernel modules.
Again, enable the Bluetooth after the restart.
Method 2: Using “Rfkill” to Unblock Bluetooth
In this method, firstly, we will update and upgrade the whole Ubuntu system.
Enter “y” to permits the packages to be upgraded.
Now, start the service of Bluetooth.
Check out Bluetooth service status by writing out the following command in your terminal.
Rfkill is a tool that many Linux users use for enabling and disabling wireless devices. In this method, we will use rfkill to unblock the Bluetooth of our system.
Method 3: Using “Blueman” Bluetooth Management Utility
There also exists a GTK+ utility for managing Bluetooth for GNOME, which uses Bluez D-bus at the backend. This utility is known as Blueman. In this solution, we will give it a try to fix our Ubuntu Bluetooth connectivity problem.
Write out the below-given command for installing “Blueman” on your system.
Enter “y” to permit the process to continue the installation.
Now, add the following repository.
Enter to continue.
Again, update your system packages.
It’s time to install the “rtbth-dkms” utility.
Write out “y” to continue the installation of this Bluetooth management utility.
Open up the modules file, comment all lines, and lastly, add “rtbth” in this file.
Now, reboot the system and open the Blueman manager.
I hope that this would fix your Bluetooth connectivity issue, and you will be able to restart Bluetooth in your Ubuntu system.
Conclusion
Watching YouTube videos or Netflix with a Bluetooth headset is assumed to be ideal for any Ubuntu user who wants to spend his spare time. What if you face any connectivity issue between the Bluetooth headset and your system? You will look forward to restarting your Bluetooth system. This is where this article comes to rescue you! We have provided you three different methods for restarting Bluetooth in your Ubuntu system.
About the author
Talha Saif Malik
Talha is a contributor at Linux Hint with a vision to bring value and do useful things for the world. He loves to read, write and speak about Linux, Data, Computers and Technology.
Источник
Thread: Need a script to restart bluetooth service.
Thread Tools
Display
Need a script to restart bluetooth service.
I am currently running Ubuntu 8.04 and have a little knowledge in linux. I would like to create a launcher or a small script to restart the bluetooth service. When I hit the Fn+2 key it shuts of the bluetooth signal but doesn’t fully restart the service or maybe it just doesn’t recreate the connection to my bluetooth device. When I execute this command: sudo /etc/init.d/bluetooth it does. I can do this but I would rather make a clickable icon to do this for the users I have.
Re: Need a script to restart bluetooth service.
sudo /etc/init.d/servicename restart
will restart most services. I tested this out with the bluetooth service, and it seemed to work. So try out
sudo /etc/init.d/bluetooth restart
Re: Need a script to restart bluetooth service.
It is possible to run a script just by pressing the button or have it run because of some other hardware event. Unfortunately the details of this are beyond my experience at this time. I do know it is tied in with the files in /etc/acpi. These are scripts that run on events like open/close laptop lid, toggle wifi or bluetooth button, etc. Hope this info helps you find an answer.
Re: Need a script to restart bluetooth service.
Hey, I wrote a GUI script for it
It required zenity package so please install if you don’t have it. You can add this script to desktop or panel as well.
Download it, then
% chmod +x bluezen
On a side note, if you found the information box is annoying then remove this line » zenity —info —text «$STATUS» «
Источник
Как настроить Bluetooth в Linux сложным путем
Готовясь на работе к ежегодному форуму посвященному IT, возникла идея создать простой манипулятор управляемый беспроводным геймпадом для демонстрации возможностей микроконтроллеров и одноплатных компьютеров. Под рукой был контроллер ТРИК, несколько сервомоторов, железный конструктор и месяц до начала форума.
«Все идет по плану», но не в этом случае.
Этап 1. Подготовка
ТРИК на борту с 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. Победа! – подумал я.
Этап 2. Наступление
Для включения контакта через 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 является состоянием контакта.
Запускаем команду на подключение и.
непонятные для нас (на данный момент) сообщения об ошибке. Пробуем настроить устройство через hcitool:
Устройств нет, хотя инициализация якобы прошла. Пробуем подключиться второй раз, но с другим типом адаптера:
И вновь ничего. Давайте вернемся к первой ошибке и применим знания английского языка:
Открываем папку /lib/firmware с прошивками и не находим нужного файла. После долгих поисков в интернете, находим на репозиторие TI нужный файл и скачиваем его. Другие версии этого же файла работать отказывались.
Перезагружаем контроллер и подключаемся вновь:
Ура! Прошивка загрузилась. Проверяем hciconfig:
Запускаем службу bluetoothd, сканирование устройств и обнаружение нашего модуля:
Поиск на компьютере обнаруживает устройство:
Для включения Bluetooth можно сделать скрипт:
И добавить его в автозапуск:
Перезапуск и отключение модуля ведут себя непредсказуемо, поэтому варианты stop и restart не имеют никаких команд.
Этап 3. Проверка связи
Самый простой способ проверки связи в обе стороны – служба COM-порта. При помощи нескольких команд включаем её:
Подключаемся с телефона и видим приглашение на вход в систему:
Ни один из проверенных терминалов не дал ввести пустой пароль пользователя, поэтому пришлось отправить данные для входа при помощи перенаправления потоков в SSH-сессии.
Этап 4. ./configure && make
Следуя инструкциям по подключению геймпада в Linux мы сталкиваемся со следующими проблемами:
- BlueZ в дистрибутиве устарел и не понимает команд от демона sixad, который устанавливает связь с геймпадом
- Новая версия BlueZ из исходных кодов отказывается компилироваться из-за множества зависимостей
- BlueZ из свежего Debian требует udev и systemd, которые отсутствуют в текущем дистрибутиве
Единственную зависимость, которую получилось удовлетворить – это модуль ядра uinput.
- получаем конфигурацию текущего ядра на устройстве
- скачиваем код ядра
- скачиваем и устанавливаем toolchain
- копируем конфигурацию ядра в папку с кодом ядра
- добавляем модуль uinput в конфигурацию
- запускаем сборку, предварительно включив toolchain
- копируем модули ядра на карту памяти
- собираем образ uBoot и копируем в /boot
Теперь программа не ругается на отсутствие модуля ядра, но дальше мы не можем ничего сделать. Инструкция для геймпада нам пригодится чуть позже.
Этап 5. Варим кашу из топора
Приступаем к плану «тяп-ляп». Раз нет удобного способа поставить нужные программы на оригинальный дистрибутив, то поставим что-нибудь популярное. Процессор имеет архитектуру ARMv5TE, значит и дистрибутивы есть под неё.
Пробуем распаковать и запустить универсальный Arch Linux для ARM и при загрузке в консоли видим, что systemd требует ядро более новой версии, чего у нас нет. Попытки переноса ядра 4.16 не увенчались огромным успехом и на это было потрачено слишком много времени.
Переходим к другому варианту – Debian. Образ диска с установленной системой для ARM существует, но лучше поставить чистую систему с нужными для нас пакетами и настройками.
Установка в QEMU
Скачиваем установочный образ (ссылка на .iso) и устанавливаем QEMU.
Также нам нужны ядро и образ initrd для загрузки установки, которые можно скачать отсюда.
Создаем образ карты памяти с объемом настоящей карты памяти (в данном случае 4 Гб):
Если вы собираетесь сделать разметку диска нестандартной относительного оригинального дистрибутива, то оставьте корневой раздел первым, иначе придется менять параметры загрузки ядра в uBoot. Там прописан номер раздела на котором находится корневая файловая система.
Стандартная разметка содержит:
- Раздел EXT4 для корневой файловой системы размером ≈ 1,3 Гб
- Раздел 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 , т.к. делать это на самом контроллере не так удобно:
Если у вас нет доступа к Wi-Fi, вы можете использовать UART для дальнейшей настройки, но учтите, что по умолчанию ядро выводит в данный терминал все ошибки. Поэтому во время работы вас может прервать внезапное сообщение от ядра или службы.
Добавляем скрипт на включение Bluetooth. В этот раз, модифицируем /etc/init.d/bluetooth :
Таким образом, все службы, которые требуют службу Bluetooth, будут запускать необходимые команды для инициализации.
Взмах влево, взмах вправо
Убираем ненужные программы и службы которые можно посмотреть при помощи htop, ведь они занимают драгоценное место в ОЗУ:
В данном случае, служба ConsoleKit имеет очень много процессов. Переместим файл этой службы в домашнюю папку суперпользователя на случай восстановления:
До отключения службы потребление ОЗУ было 19 Мб, а после – 16 Мб.
Разделы системы
Хоть uBoot и передает ядру устройство, на котором расположен корневой раздел, стоит прописать его в /etc/fstab для надежности. Изменяем первую строчку, отвечающую за корневой раздел:
Если вы сделали корневой раздел не первым, не забудьте указать нужный номер раздела.
Если вы оставили второй раздел FAT для пользовательских данных, то вам необходимо создать папку для монтирования раздела в неё
и прописать раздел в /etc/fstab :
Этап 6. Пробуем нашу кашу
Настроив образ системы, необходимо примонтировать его для установки модулей ядра и самого ядра:
где, NNNN = размер сектора * начало раздела. Размер сектора по умолчанию равен 512 байтам.
Монтируем также и оригинальный дистрибутив:
Удаляем ядро для QEMU и его модули, т.к. они не предназначены для нашей платформы. Копируем новое ядро и модули, так же, как и на оригинальном дистрибутиве.
Нам понадобятся прошивки для Wi-Fi модуля, которые есть в оригинальном дистрибутиве в папке /lib/firmware и прошивка Bluetooth, которую мы нашли ранее.
Отсоединяем образы дисков:
И запускаем копирование образа на карту памяти с помощью dd:
Этап 7. Финишная прямая
Компилируем программы для подключения геймпада на новой системе и устанавливаем демон 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. Найти информацию о его настоящем объеме не удалось.
- uBoot хранится на SPI флэш-памяти в которой также зашито ядро, и оно не используется. Вы можете попробовать использовать это место для своих задач или скопировать новое ядро и перенастроить uBoot, чтобы он его использовал.
Адреса образов из dmesg:
- Экран у контроллера хоть и небольшой, но на самом деле имеет резистивный сенсор. Подключен ли сам сенсор – неизвестно.
- Dualshock 3 имеет светодиоды у разъема USB, которые показывают номер геймпада/джойстика. В видео присутствует один геймпад, но номер у него 3. Это не ошибка, т.к. в системе присутствуют ещё два «джойстика»: акселерометр и гироскоп.
Источник