Espruino:Примеры/Web Bluetooth на Linux

Материал из Онлайн справочника
Перейти к навигации Перейти к поиску

Перевод: Максим Кузьмин (Cubewriter) Контакты:</br>* Skype: cubewriter</br>* E-mail: cubewriter@gmail.com</br>* Максим Кузьмин на freelance.ru
Проверка/Оформление/Редактирование: Мякишев Е.А.


Web Bluetooth на Linux[1]

Во-первых, в терминале надо напечатать bluetoothd –version – это покажет версию вашего Bluez. Затем следуйте инструкциям, которые соответствуют вашей версии:

Bluez 5.41 и выше: Ubuntu 16.10 и новее

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

Если не работает, рекомендуем установить последнюю версию Bluez, так как она гораздо надёжнее, но для работы с Web Bluetooth по-прежнему достаточно версии Bluez 5.41.

Если это не ваш случай, попробуйте другой вариант...

Рекомендованный вариант – установите последнюю версию Bluez из Debian

Изначально это решение было предложено тут. Вы также можете скомпилировать последнюю версию Bluez из исходного кода (см. ниже), но метод, описываемый здесь, гораздо проще (если вы используете Debian, Ubuntu или Linux Mint).

Итак, давайте перейдём в репозиторий Debian, чтобы найти там последнюю версию Bluez:

  • Перейдите по этой ссылке.
  • Найдите файл в формате «bluez_*_amd64.deb» (или какой платформой вы пользуетесь) и загрузите его. На момент написания этой статьи это файл «bluez_5.47-1+b1_amd64.deb».
  • Bluez также нужна последняя версия библиотеки readline, так что ищите её тут.
  • Найдите файл в формате «libreadline*_amd64.deb» и загрузите его. На момент написания этой статьи это «libreadline7_7.0-3_amd64.deb».
  • Установите «libreadline» при помощи sudo dpkg -i libreadline7_7.0-3_amd64.deb.
  • Установите «bluez» при помощи sudo dpkg -i bluez_5.47-1+b1_amd64.deb.
  • Перезапустите «bluetoothd» при помощи sudo /etc/init.d/bluetooth restart.

Готово!

Bluez 5.41

На некоторых системах Bluez 5.41 установлен по умолчанию и нормально работает, но вам по-прежнему надо будет добавить в настройки Bluetooth экспериментальный флаг. Для этого выполните следующее:

sudo nano /lib/systemd/system/bluetooth.service

Теперь обновите вот эту строчку...

ExecStart=/usr/lib/bluetooth/bluetoothd

...так, чтобы она выглядела следующим образом:

ExecStart=/usr/lib/bluetooth/bluetoothd --experimental

Сохраните и выйдите. Затем перезагрузите Bluez:

sudo systemctl daemon-reload
sudo systemctl restart Bluetooth

Оригинал этого решения можно найти на сайте Adafruit.

Установка последней версии Bluez из исходного кода (Bluez до 5.41)

Примечание: Этот метод был разработан и описан Аланом Ассисом здесь. Я лишь немного его модифицировал, чтобы вы могли загрузить более новую версию Bluez.

Ещё примечание: Ubuntu 161.10 уже идёт с Bluez 5.41, но для этой версии по-прежнему нужен экспериментальный флаг. Это значит, что вам нужно будет пересобрать её, но уже с флагом.

На момент написания этой статьи вместе с Ubuntu 16.04 идёт Bluez 5.37, но доступ к тамошнему Bluetooth-функционалу реализован не очень хорошо. В результате, чтобы в вашем Chrome мог работать Web Bluetooth, вам нужно будет обновить Bluez до более новой версии, и тогда Chrome сможет получить доступ к Bluetooth-функционалу без специальных разрешений.

# Устанавливаем зависимости:
sudo apt-get -y install automake autotools-dev bison check clang flex lcov libcap-ng-dev libdbus-glib-1-dev libdw-dev libglib2.0-dev libical-dev libreadline-dev libtool libudev-dev

# Создаём директорию «/tmp»:
mkdir tmp
cd tmp

# Загружаем новую версию Bluez:
wget http://www.kernel.org/pub/linux/bluetooth/bluez-5.45.tar.xz

# Распаковываем архив:
tar xvf bluez-5.45.tar.xz

# Настраиваем и компилируем:
cd bluez-5.45
./configure --prefix=/usr           \
            --mandir=/usr/share/man \
            --sysconfdir=/etc       \
            --localstatedir=/var    \
            --enable-library        \
            --disable-systemd       \
            --disable-android       
make

# Устанавливаем всё:
sudo make install

# Останавливаем текущий Bluetooth и запускаем новый:
sudo /etc/init.d/bluetooth stop
sudo /usr/libexec/bluetooth/bluetoothd

Теперь попробуйте протестировать Web Bluetooth на Chrome (сначала убедитесь, что включили его в «chrome://flags»). Можете также попробовать Web IDE.

Если всё работает, надо сделать так, чтобы после перезагрузки всё запускалось как надо:

Нажмите  Ctrl + C , чтобы остановить текущий bluetoothd.

# Заменяем старый bluetoothd на новый:
sudo cp /usr/libexec/bluetooth/bluetoothd /usr/lib/bluetooth/bluetoothd

Теперь осталось перезапустить сервис и готово!

sudo /etc/init.d/bluetooth start

См.также

Ссылки на полезные ресурсы

Внешние ссылки