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

Ответы:


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

Наличие разрешения на выполнение не должно требоваться для службы systemd. Я бы предложил удалить chmod.
— Филипп-Зьян К Ли - Стокманн
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.