Espruino:Примеры/Web Bluetooth на Linux: различия между версиями
Myagkij (обсуждение | вклад) Нет описания правки |
Нет описания правки |
||
Строка 34: | Строка 34: | ||
На некоторых системах Bluez 5.41 установлен по умолчанию и нормально работает, но вам по-прежнему надо будет добавить в настройки [[Bluetooth]] экспериментальный флаг. Для этого выполните следующее: | На некоторых системах Bluez 5.41 установлен по умолчанию и нормально работает, но вам по-прежнему надо будет добавить в настройки [[Bluetooth]] экспериментальный флаг. Для этого выполните следующее: | ||
<syntaxhighlight lang="bash | <syntaxhighlight lang="bash"> | ||
sudo nano /lib/systemd/system/bluetooth.service | sudo nano /lib/systemd/system/bluetooth.service | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 40: | Строка 40: | ||
Теперь обновите вот эту строчку... | Теперь обновите вот эту строчку... | ||
<syntaxhighlight lang="bash | <syntaxhighlight lang="bash"> | ||
ExecStart=/usr/lib/bluetooth/bluetoothd | ExecStart=/usr/lib/bluetooth/bluetoothd | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 46: | Строка 46: | ||
...так, чтобы она выглядела следующим образом: | ...так, чтобы она выглядела следующим образом: | ||
<syntaxhighlight lang="bash | <syntaxhighlight lang="bash"> | ||
ExecStart=/usr/lib/bluetooth/bluetoothd --experimental | ExecStart=/usr/lib/bluetooth/bluetoothd --experimental | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 52: | Строка 52: | ||
Сохраните и выйдите. Затем перезагрузите [[Bluez]]: | Сохраните и выйдите. Затем перезагрузите [[Bluez]]: | ||
<syntaxhighlight lang="bash | <syntaxhighlight lang="bash"> | ||
sudo systemctl daemon-reload | sudo systemctl daemon-reload | ||
sudo systemctl restart Bluetooth | sudo systemctl restart Bluetooth | ||
Строка 67: | Строка 67: | ||
На момент написания этой статьи вместе с Ubuntu 16.04 идёт Bluez 5.37, но доступ к тамошнему Bluetooth-функционалу реализован не очень хорошо. В результате, чтобы в вашем Chrome мог работать Web Bluetooth, вам нужно будет обновить Bluez до более новой версии, и тогда Chrome сможет получить доступ к Bluetooth-функционалу без специальных разрешений. | На момент написания этой статьи вместе с Ubuntu 16.04 идёт Bluez 5.37, но доступ к тамошнему Bluetooth-функционалу реализован не очень хорошо. В результате, чтобы в вашем Chrome мог работать Web Bluetooth, вам нужно будет обновить Bluez до более новой версии, и тогда Chrome сможет получить доступ к Bluetooth-функционалу без специальных разрешений. | ||
<syntaxhighlight lang="bash | <syntaxhighlight lang="bash"> | ||
# Устанавливаем зависимости: | # Устанавливаем зависимости: | ||
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 | 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 | ||
Строка 106: | Строка 106: | ||
Нажмите {{клавиша|Ctrl}}+{{клавиша|C}}, чтобы остановить текущий ''bluetoothd''. | Нажмите {{клавиша|Ctrl}}+{{клавиша|C}}, чтобы остановить текущий ''bluetoothd''. | ||
<syntaxhighlight lang="bash | <syntaxhighlight lang="bash"> | ||
# Заменяем старый bluetoothd на новый: | # Заменяем старый bluetoothd на новый: | ||
sudo cp /usr/libexec/bluetooth/bluetoothd /usr/lib/bluetooth/bluetoothd | sudo cp /usr/libexec/bluetooth/bluetoothd /usr/lib/bluetooth/bluetoothd | ||
Строка 113: | Строка 113: | ||
Теперь осталось перезапустить сервис и готово! | Теперь осталось перезапустить сервис и готово! | ||
<syntaxhighlight lang="bash | <syntaxhighlight lang="bash"> | ||
sudo /etc/init.d/bluetooth start | sudo /etc/init.d/bluetooth start | ||
</syntaxhighlight> | </syntaxhighlight> |
Текущая версия от 19:54, 23 мая 2023
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)
На момент написания этой статьи вместе с 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
См.также
Внешние ссылки