Unified Remote: Bluetooth: Не удалось подключиться к SDP

Unified Remote: Bluetooth: Не удалось подключиться к SDP

Я установил Unified Remote сегодня в надежде, что смогу использовать его с моим адаптером Bluetooth для управления моим ПК с помощью моего телефона. Но когда я установил Unified Remote и загрузил веб-интерфейс, я получил эту ошибку:

Bluetooth: не удалось подключиться к SDP

Google не может дать абсолютно ничего полезного об этой ошибке, так что это один из моих единственных шансов.

некоторые выводы:

noneatme@noneatme-desktop:/etc/bluetooth$ sudo sdptool browse local
Failed to connect to SDP server on FF:FF:FF:00:00:00: Connection refused

Ubuntu 16.04

noneatme@noneatme-desktop:/etc/bluetooth$ uname -a
Linux noneatme-desktop 4.4.0-22-generic #40-Ubuntu SMP Thu May 12 22:03:46 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

noneatme@noneatme-desktop:/etc/bluetooth$ /usr/lib/bluetooth/bluetoothd -C
D-Bus setup failed: Connection ":1.129" is not allowed to own the service "org.bluez" due to security policies in the configuration file
(it works with sudo)

Запуск Bluetoothd с аргументом --compat не решит проблему.

Что я могу сделать?

/edit: Я исправил эту проблему, запустив унифицированный удаленный сервер как sudo. Это действительно единственный вариант, который у меня есть?

решение1

Вам необходимо запустить демон bluetooth в режиме совместимости, чтобы обеспечить устаревшие интерфейсы командной строки. Вы используете Bluez5 и вам нужны некоторые функции Bluez4. Вы можете сделать это, отредактировав этот файл

/etc/systemd/system/dbus-org.bluez.service и изменение этой строки

ExecStart=/usr/lib/bluetooth/bluetoothd к этому

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

и затем перезапустить Bluetooth вот так

sudo systemctl daemon-reload
sudo systemctl restart bluetooth

и вам также придется изменить разрешения на/var/run/sdp

sudo chmod 777 /var/run/sdp

и наконец перезапустите унифицированный удаленный сервер

решение2

Другое решение:

Отредактируйте /etc/systemd/system/dbus-org.bluez.service:

ExecStart=/usr/lib/bluetooth/bluetoothd --compat
ExecStartPost=/bin/chmod 777 /var/run/sdp

Потому что права доступа к /var/run/sdp, похоже, сбрасываются при каждой перезагрузке.

решение3

Мне удалось заставить это работать, создав новый systemdсервис.

  1. Создайте файл конфигурации с именем /etc/systemd/system/urserver.serviceи содержимым:

    [Unit]
    Description=Unified Remote Server
    After=syslog.target network.target
    
    [Service]
    Environment="HOME=/opt/urserver"
    Type=forking
    PIDFile=/opt/urserver/.urserver/urserver.pid
    ExecStartPre=/bin/chmod 777 /var/run/sdp
    ExecStart=/opt/urserver/urserver-start --no-manager --no-notify
    ExecStop=/opt/urserver/urserver-stop
    
    RemainAfterExit=no
    Restart=on-failure
    RestartSec=5s
    
    [Install]
    WantedBy=default.target
    
  2. Установите разрешения для файла:

    sudo chmod a+x /etc/systemd/system/urserver.service
    
  3. Перезагрузить systemdдемон:

    sudo systemctl daemon-reload
    
  4. Запустите саму услугу:

    sudo systemctl start urserver
    

Вам следует отключить параметр «Автоматически запускать сервер при запуске ОС» в унифицированных удаленных настройках (веб-интерфейс), поскольку systemdон автоматически запустит службу. systemdКроме того, служба будет перезапущена, если по какой-то причине произойдет сбой.

Отредактировано: Environment и PIDFile, спасибо Никласу

решение4

Я объединил другие ответы, чтобы это заработало и сохранялось после перезагрузок. Вот пошаговое руководство, чтобы это заработало:

Снимите флажок «Автоматически запускать сервер при запуске ОС» в графическом интерфейсе настроек Unified Remote.

Остановить urserver. Это можно сделать с помощью:

    user@machine:~$ sudo killall urserver

Далее какЛео Педрасасказал отредактировать /etc/systemd/system/dbus-org.bluez.service и изменить эту строку

    ExecStart=/usr/lib/bluetooth/bluetoothd 

к этому

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

Тогда делай какЭса НикулайнениНикласпредложил и создал новую службу systemd следующим образом:

Создайте файл конфигурации с именем /etc/systemd/system/urserver.service со следующим содержимым:

    [Unit]
    Description=Unified Remote Server
    After=syslog.target network.target

    [Service]
    Environment="HOME=/opt/urserver"
    Type=forking
    PIDFile=/opt/urserver/.urserver/urserver.pid
    ExecStartPre=/bin/chmod 777 /var/run/sdp
    ExecStart=/opt/urserver/urserver-start --no-manager --no-notify
    ExecStop=/opt/urserver/urserver-stop

    RemainAfterExit=no
    Restart=on-failure
    RestartSec=5s

    [Install]
    WantedBy=default.target

Перезагрузите демон systemd:

    user@machine:~$ sudo systemctl daemon-reload

Перезапустите Bluetooth следующим образом:

    user@machine:~$ sudo systemctl restart bluetooth

Запустите новую услугу:

    user@machine:~$ sudo systemctl start urserver

Включите новую службу, чтобы она запускалась при запуске:

    user@machine:~$ sudo systemctl enable urserver

СПАСИБОЛео Педраса,Эса Никулайнен, иНикласза то, что разобрались со всеми деталями!

Связанный контент