Unified Remote: Bluetooth: ไม่สามารถเชื่อมต่อกับ SDP


11

ฉันติดตั้ง Unified Remote วันนี้ด้วยความหวังว่าฉันจะสามารถใช้กับอะแดปเตอร์บลูทู ธ เพื่อควบคุมพีซีของฉันโดยใช้โทรศัพท์ได้ แต่เมื่อฉันติดตั้ง Unified Remote และโหลดเว็บอินเตอร์เฟสฉันได้รับข้อผิดพลาดนี้:

บลูทู ธ : ไม่สามารถเชื่อมต่อกับ 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 ด้วย - อาร์กิวเมนต์ของคอมพ์จะไม่ช่วยแก้ปัญหา

ฉันควรทำอย่างไร

/ แก้ไข: ฉันแก้ไขปัญหานี้โดยเริ่มต้นเซิร์ฟเวอร์ระยะไกลแบบรวมเป็น sudo นี่เป็นตัวเลือกเดียวที่ฉันมีจริงเหรอ?

คำตอบ:


20

คุณต้องเรียกใช้ bluetooth daemon ในโหมดที่เข้ากันได้เพื่อจัดเตรียมอินเตอร์เฟสบรรทัดคำสั่งที่เลิกใช้แล้ว คุณกำลังใช้งาน Bluez5 และคุณต้องการฟังก์ชั่นบางอย่างของ Bluez4 คุณสามารถทำได้โดยแก้ไขไฟล์นี้

/etc/systemd/system/dbus-org.bluez.service และการเปลี่ยนบรรทัดนี้

ExecStart=/usr/lib/bluetooth/bluetoothd สำหรับสิ่งนี้

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

จากนั้นรีสตาร์ทบลูทู ธ แบบนี้

sudo systemctl daemon-reload
sudo systemctl restart bluetooth

และคุณจะต้องเปลี่ยนการอนุญาตด้วย /var/run/sdp

sudo chmod 777 /var/run/sdp

และในที่สุดรีสตาร์ทเซิร์ฟเวอร์ระยะไกลแบบรวม


ขอขอบคุณสำหรับความช่วยเหลือของคุณ. คุณสามารถแจ้งให้ฉันทราบได้อย่างไรว่าคุณจะอนุญาตเป็นการถาวรหรือไม่ ในขณะนี้เมื่อรีสตาร์ทพีซีของฉันการอนุญาตจะสูญหาย ขอบคุณ
Adrian

ขออภัยที่จะชนฉันต้องการทราบวิธีการขออนุญาตอย่างถาวรเพราะฉันพบปัญหาเดียวกัน การแก้ไขด้านบนใช้งานได้ แต่ฉันต้องการทำให้เป็นอัตโนมัติทุกครั้งที่ฉันบู๊ต
wjrochester

ฉันเป็นคนเดเบียนและฉันไม่มีไฟล์นี้ = /
Dimitri Kopriwa

3

ทางออกอื่น:

แก้ไข /etc/systemd/system/dbus-org.bluez.service:

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

เนื่องจากสิทธิ์ของ / var / run / sdp ดูเหมือนว่าจะรีเซ็ตทุกครั้งที่รีบูต


ฉันเป็นคนเดเบียนและฉันไม่มีไฟล์นี้ = /
Dimitri Kopriwa

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. โหลดsystemddaemon ใหม่:

    sudo systemctl daemon-reload
    
  4. เริ่มบริการจริง:

    sudo systemctl start urserver
    

คุณควรปิดการใช้งาน "เริ่มเซิร์ฟเวอร์อัตโนมัติเมื่อระบบปฏิบัติการเริ่มต้นขึ้น" จาก Unified Remote Settings (เว็บอินเตอร์เฟส) เพราะsystemdจะเริ่มให้บริการโดยอัตโนมัติ systemdจะรีสตาร์ทบริการหากเกิดปัญหาด้วยเหตุผลบางอย่าง

แก้ไข: สิ่งแวดล้อมและ PIDFile ขอบคุณ Niklas


ฉันอยากจะแนะนำการปรับปรุงการกำหนดค่าข้างต้น urserver-startตอนนี้รันเป็นรูทและพยายามสร้างไดเร็กทอรี pidfile, .config และไดเร็กทอรี .remotes ในรูทระบบ หากคุณตั้งค่าให้เรียกใช้ในฐานะผู้ใช้อื่นการแก้ไขสิทธิ์บน / var / run / sdp ล้มเหลว สิ่งที่ผมทำก็คือการเปลี่ยนแปลงสภาพแวดล้อมสำหรับurserver-startโดยการเพิ่มEnvironment="HOME=/opt/urserver"และการเปลี่ยนแปลงภายใต้PIDFile=/opt/urserver/.urserver/urserver.pid [Service]ตอนนี้มันเริ่มต้นโดยไม่มีข้อผิดพลาดและหลงทางหรือไดเรกทอรีที่ขาดหายไป
Niklas

คำตอบนี้พร้อมกับการเพิ่ม--compatสำหรับบริการบลูทู ธ ควรเป็นคำตอบที่ยอมรับได้จริง ๆ เพราะมันเป็นวิธีการแก้ปัญหาอย่างต่อเนื่องในการรีบูตหลายครั้ง
Niklas

ไม่ควรใช้สิทธิ์ดำเนินการในไฟล์เซอร์วิส systemd เนื่องจากไม่มีสคริปต์ โปรดลบ chmod ออก
Phillip -Zyan K Lee- Stockmann

หากต้องการเปิดใช้งานการเริ่มต้นโดยอัตโนมัติเมื่อบูตsystemctl enable urserver.serviceอาจถูกเรียกใช้
Phillip -Zyan K Lee- Stockmann

0

ฉันรวมคำตอบอื่น ๆ เพื่อให้การทำงานนี้และทำให้มันผ่านการรีบูต นี่คือคำแนะนำทีละขั้นตอนเพื่อให้มันทำงาน:

ยกเลิกการเลือก "เริ่มเซิร์ฟเวอร์อัตโนมัติเมื่อระบบปฏิบัติการเริ่มต้นขึ้น" ใน Unified Remote settings GUI

หยุด urserver คุณสามารถทำได้ด้วย:

    user@machine:~$ sudo killall urserver

ถัดไปเมื่อLeo Pedrazaพูดว่าแก้ไข /etc/systemd/system/dbus-org.bluez.service และเปลี่ยนบรรทัดนี้

    ExecStart=/usr/lib/bluetooth/bluetoothd 

สำหรับสิ่งนี้

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

จากนั้นทำตามที่Esa NikulainenและNiklasแนะนำและสร้างบริการ 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 daemon ใหม่:

    user@machine:~$ sudo systemctl daemon-reload

รีสตาร์ทบลูทู ธ แบบนี้:

    user@machine:~$ sudo systemctl restart bluetooth

เริ่มบริการใหม่:

    user@machine:~$ sudo systemctl start urserver

เปิดใช้งานบริการใหม่เพื่อให้ทำงานเมื่อเริ่มต้น:

    user@machine:~$ sudo systemctl enable urserver

ขอขอบคุณLeo Pedraza , Esa NikulainenและNiklasเพื่อค้นหาชิ้นส่วนทั้งหมด!


นี่ไม่ได้ตอบคำถามจริงๆ หากคุณมีคำถามที่แตกต่างที่คุณสามารถถามได้โดยคลิกที่ถามคำถาม นอกจากนี้คุณยังสามารถเพิ่มเงินรางวัลเพื่อดึงดูดความสนใจมากขึ้นกับคำถามนี้เมื่อคุณมีเพียงพอชื่อเสียง - จากการรีวิว
Phillip -Zyan K Lee- Stockmann

ฉันเปลี่ยนโพสต์ของฉันเพื่อให้คำตอบจริงซึ่งรวมคำตอบอื่น ๆ ไว้ในคำแนะนำทีละขั้นตอนที่ครอบคลุมมากขึ้น
andyanderso

ไม่จำเป็นต้องมีสิทธิ์เรียกใช้งานบนเซอร์วิส systemd ฉันขอแนะนำให้ลบ chmod
Phillip -Zyan K Lee- Stockmann
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.