Уніфікований віддалений: 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
    

Вам слід вимкнути "Автоматично запускати сервер при запуску ОС". з Уніфікованих віддалених налаштувань (веб-інтерфейс), оскільки systemdпослуга запуститься автоматично. systemdтакож перезапустить послугу, якщо вона з якоїсь причини вийде з ладу.

Відредаговано: Environment and 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, справді повинна бути прийнятою відповіддю, оскільки це стійке рішення для кількох перезавантажень.
— Ніклас

Дозволи на виконання не повинні бути потрібними для системних службових файлів, оскільки це не сценарії. Видаліть chmod.
— Філіп -Зіян К Лі- Стокманн

Щоб увімкнути автоматичний запуск при завантаженні, systemctl enable urserver.serviceможна запустити.
— Філіп -Зян К Лі- Стокманн

0

Я поєднав інші відповіді, щоб зробити це робочим і змусив його зберігатись через перезавантаження. Ось покрокове керівництво для його роботи:

Зніміть прапорець "Автоматично запустити сервер при запуску ОС". у графічному інтерфейсі Unified Remote Settings.

Зупиніть urserver. Це можна зробити за допомогою:

    user@machine:~$ sudo killall urserver

Далі, як Лео Педраза сказав редагувати /etc/systemd/system/dbus-org.bluez.service та змінити цей рядок

    ExecStart=/usr/lib/bluetooth/bluetoothd 

до цього

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

Потім зробіть так, як запропонували Еса Нікулайнен і Ніклас, і створіть нову системну службу так:

Створіть конфігураційний файл з назвою /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

Перезавантажити системний демон:

    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

ДЯКУЮ Вам Лео Педраса , Еса Нікулайнен та Ніклас за те, що розібралися у всіх творах!


Це насправді не відповідає на питання. Якщо у вас інше питання, ви можете задати його, натиснувши Задати питання . Ви також можете додати щедрості, щоб привернути більше уваги до цього питання, коли у вас буде достатня репутація . - З огляду
— Phillip -Zyan K Lee- Stockmann

Я змінив свою посаду, щоб надати справжню відповідь, яка поєднує інші відповіді у більш повне покрокове керівництво.
— andyanderso

Виконання дозволів не повинно бути необхідним для системної служби. Я б запропонував видалити chmod.
— Філіп -Зян К Лі- Стокманн
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.