Từ xa hợp nhất: Bluetooth: Không thể kết nối với SDP


11

Tôi đã cài đặt Unified Remote hôm nay với hy vọng rằng tôi có thể sử dụng nó với bộ điều hợp bluetooth để điều khiển PC bằng điện thoại của mình. Nhưng khi tôi cài đặt Unified Remote và tải lên giao diện web, tôi đã gặp lỗi này:

Bluetooth: Không thể kết nối với SDP

Google hoàn toàn không có gì hữu ích về lỗi này vì vậy đây là một trong những cơ hội duy nhất của tôi ở đây.

một số kết quả đầu ra:

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)

Bắt đầu Bluetoothd với đối số --compat sẽ không khắc phục được sự cố.

Tôi có thể làm gì?

/ chỉnh sửa: Tôi đã khắc phục sự cố này bằng cách khởi động máy chủ từ xa hợp nhất là sudo. Đây thực sự là lựa chọn duy nhất tôi có?

Câu trả lời:


20

Bạn cần chạy daemon bluetooth trong chế độ tương thích để cung cấp giao diện dòng lệnh không dùng nữa. Bạn đang chạy Bluez5 và bạn cần một số chức năng Bluez4. Bạn có thể làm điều này bằng cách chỉnh sửa tập tin này

/etc/systemd/system/dbus-org.bluez.service và thay đổi dòng này

ExecStart=/usr/lib/bluetooth/bluetoothd đến đây

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

và sau đó khởi động lại bluetooth như thế này

sudo systemctl daemon-reload
sudo systemctl restart bluetooth

và bạn cũng sẽ phải thay đổi quyền trên /var/run/sdp

sudo chmod 777 /var/run/sdp

và cuối cùng khởi động lại máy chủ từ xa hợp nhất


Cảm ơn sự giúp đỡ của bạn. Bạn cũng có thể cho tôi biết làm thế nào bạn sẽ cho phép vĩnh viễn? Tại thời điểm khi khởi động lại máy tính của tôi, sự cho phép bị mất. Cảm ơn
Adrian

Xin lỗi để làm phiền, tôi cũng muốn biết làm thế nào để cho phép vĩnh viễn vì tôi đang gặp vấn đề tương tự. Các sửa chữa ở trên đã làm việc nhưng tôi muốn làm cho nó tự động bất cứ khi nào tôi khởi động.
wjrochester

Tôi đang dùng debian và tôi không có tệp này = /
Dimitri Kopriwa

3

Giải pháp khác:

Chỉnh sửa /etc/systemd/system/dbus-org.bluez.service:

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

Bởi vì quyền của / var / run / sdp dường như được đặt lại trên mỗi lần khởi động lại.


Tôi đang dùng debian và tôi không có tệp này = /
Dimitri Kopriwa

1

Tôi quản lý để làm cho nó hoạt động bằng cách tạo ra một systemddịch vụ mới .

  1. Tạo một tệp cấu hình có tên /etc/systemd/system/urserver.servicevới nội dung của:

    [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. Đặt quyền trên tệp:

    sudo chmod a+x /etc/systemd/system/urserver.service
    
  3. Tải lại systemddaemon:

    sudo systemctl daemon-reload
    
  4. Bắt đầu dịch vụ thực tế:

    sudo systemctl start urserver
    

Bạn nên tắt "Tự động khởi động máy chủ khi hệ điều hành khởi động." từ Cài đặt từ xa hợp nhất (giao diện web), vì systemdsẽ tự động khởi động dịch vụ. systemdcũng sẽ khởi động lại dịch vụ nếu nó gặp sự cố.

Đã chỉnh sửa: Môi trường và PIDFile, nhờ Niklas


Tôi muốn đề xuất một cải tiến cho cấu hình trên. urserver-startbây giờ chạy dưới dạng root và cố gắng tạo thư mục pidfile, .config và .remotes trong thư mục gốc của hệ thống. Nếu bạn đặt nó để chạy như một người dùng khác thì việc sửa đổi các quyền trên / var / run / sdp không thành công. Những gì tôi đã làm là thay đổi môi trường urserver-startbằng cách thêm Environment="HOME=/opt/urserver"và thay đổi PIDFile=/opt/urserver/.urserver/urserver.pidtheo [Service]. Bây giờ nó bắt đầu mà không có lỗi và đi lạc hoặc thiếu thư mục.
Niklas

Câu trả lời này, cùng với việc thêm --compatdịch vụ bluetooth, thực sự nên là câu trả lời được chấp nhận vì đây là một giải pháp bền bỉ trên nhiều lần khởi động lại.
Niklas

Thực thi quyền không cần thiết trên các tệp dịch vụ systemd, vì chúng không có tập lệnh. Hãy loại bỏ chmod.
Phillip -Zyan K Lee- Stockmann

Để bật tự động khởi động systemctl enable urserver.servicecó thể được chạy.
Phillip -Zyan K Lee- Stockmann

0

Tôi đã kết hợp các câu trả lời khác để làm cho nó hoạt động và làm cho nó tồn tại thông qua việc khởi động lại. Dưới đây là hướng dẫn từng bước để làm cho nó hoạt động:

Bỏ chọn "Tự động khởi động máy chủ khi hệ điều hành khởi động." trong GUI cài đặt từ xa hợp nhất.

Dừng máy chủ. Bạn có thể làm điều này với:

    user@machine:~$ sudo killall urserver

Tiếp theo như Leo Pedraza đã nói chỉnh sửa /etc/systemd/system/dbus-org.bluez.service và thay đổi dòng này

    ExecStart=/usr/lib/bluetooth/bluetoothd 

đến đây

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

Sau đó, làm như Esa NikulainenNiklas đề xuất và tạo ra một dịch vụ systemd mới như vậy:

Tạo một tệp cấu hình có tên /etc/systemd/system/urserver.service với nội dung của:

    [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

Tải lại daemon systemd:

    user@machine:~$ sudo systemctl daemon-reload

Khởi động lại bluetooth như thế này:

    user@machine:~$ sudo systemctl restart bluetooth

Bắt đầu dịch vụ mới:

    user@machine:~$ sudo systemctl start urserver

Kích hoạt dịch vụ mới để nó chạy khi khởi động:

    user@machine:~$ sudo systemctl enable urserver

CẢM ƠN Leo Pedraza , Esa NikulainenNiklas vì đã tìm ra tất cả các mảnh!


Điều này không thực sự trả lời câu hỏi. Nếu bạn có một câu hỏi khác, bạn có thể hỏi nó bằng cách nhấp vào Đặt câu hỏi . Bạn cũng có thể thêm tiền thưởng để thu hút sự chú ý hơn cho câu hỏi này một khi bạn có đủ danh tiếng . - Từ đánh giá
Phillip -Zyan K Lee- Stockmann

Tôi đã thay đổi bài đăng của mình để cung cấp một câu trả lời thực tế kết hợp các câu trả lời khác thành một hướng dẫn từng bước toàn diện hơn.
andyanderso

Có quyền thực thi không cần thiết trên một dịch vụ systemd. Tôi muốn đề nghị loại bỏ chmod.
Phillip -Zyan K Lee- Stockmann
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.