Унифицированный пульт: Bluetooth: не удалось подключиться к SDP

11

Сегодня я установил 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. Это действительно единственный вариант, который у меня есть?

Noneatme
источник

Ответы:

20

Вам необходимо запустить демон 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

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

Лео Педраса
источник
Спасибо за помощь. Можете ли вы также дать мне знать, как сделать разрешение постоянным? В момент перезагрузки моего компьютера разрешение теряется. Спасибо
Адриан
Извините, но я также хочу знать, как сделать разрешение постоянным, потому что я сталкиваюсь с той же проблемой. Вышеуказанное исправление сработало, но я хочу сделать его автоматическим при каждой загрузке.
wjrochester
Я нахожусь на Debian, и у меня нет этого файла = /
Дмитрий Коприва
3

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

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

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

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

Эса Никулайнен
источник
Я нахожусь на Debian, и у меня нет этого файла = /
Дмитрий Коприва
1

Мне удалось заставить его работать, создав новый 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
    

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

Отредактировано: Окружающая среда и PIDFile, благодаря Никласу

Эса Никулайнен
источник
Я хотел бы предложить улучшение вышеупомянутой конфигурации. urserver-startтеперь запускается с правами root и пытается создать pidfile, каталог .config и каталог .remotes в корневом каталоге системы. Если вы установите его для запуска от имени другого пользователя, изменение разрешений для / var / run / sdp завершится неудачно. То , что я сделал, чтобы изменить среду для urserver-startпутем добавления Environment="HOME=/opt/urserver"и изменения PIDFile=/opt/urserver/.urserver/urserver.pidпод [Service]. Теперь он запускается без ошибок и заблудившихся или отсутствующих каталогов.
Никлас
Этот ответ вместе с добавлением --compatдля службы bluetooth должен быть действительно принятым ответом, поскольку он является устойчивым решением после нескольких перезагрузок.
Никлас
Разрешения на выполнение не должны быть необходимы для файлов службы systemd, так как они не являются сценариями. Пожалуйста, удалите chmod.
Филипп-Зьян К Ли-Стокманн
Для включения автоматического запуска при загрузке systemctl enable urserver.serviceможет быть запущен.
Филипп-Зьян К Ли-Стокманн
0

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

Снимите флажок «Автоматически запускать сервер при запуске ОС». в графическом интерфейсе 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

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

andyanderso
источник
Это на самом деле не отвечает на вопрос. Если у вас есть другой вопрос, вы можете задать его, нажав Задать вопрос . Вы также можете добавить вознаграждение, чтобы привлечь больше внимания к этому вопросу, когда у вас будет достаточно репутации . - Из Обзора
Филипп-Зьян К Ли-Стокманн
Я изменил свой пост, чтобы предоставить фактический ответ, который объединяет другие ответы в более полное пошаговое руководство.
andyanderso
Наличие разрешения на выполнение не должно требоваться для службы systemd. Я бы предложил удалить chmod.
Филипп-Зьян К Ли - Стокманн