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