다음 명령을 사용하여 GATT 서버 애플리케이션을 작성 중입니다.이 기사기본으로. 내 초기 코드는 Linux 랩톱에서는 잘 실행되지만 Jetson Nano(nVIDIA 조정 버전의 Ubuntu 18.04 실행)에서는 인터페이스를 통해 데몬에 액세스하려고 org.freedesktop.DBus.Error.AccessDenied
할 때 오류가 발생하면서 실패합니다 .bluetoothd
org.freedesktop.DBus.Introspectable
이는 분명히 일종의 권한 오류입니다. Nano에서 실행하면 코드가 제대로 실행되지만 root
사용자 root
가 아닌 사용자에서 실행하면 실패하기 때문입니다. Bluetooth API에 액세스하려면 비 root
사용자가 이 그룹의 구성원이어야 한다는 것을 알고 있지만 bluetooth
이는 이미 내 사용자의 경우이므로 문제가 되지 않습니다.
답변1
알 수 없는 이유로 Jetson Nano의 D-Bus를 통해 Bluetooth 인터페이스에 프로그래밍 방식으로 액세스하려면 org.freedesktop.DBus.Introspectable
구성 파일의 인터페이스에 대한 명시적인 액세스를 추가 해야 하는 것 같습니다 . /etc/dbus-1/system.d/bluetooth.conf
이는 Ubuntu 환경을 사용자 정의하는 nVIDIA의 부작용일 가능성이 높습니다. 참조하려면 아래 코드 조각을 참조하세요.
<policy user="root">
<allow own="org.bluez"/>
<allow send_destination="org.bluez"/>
<allow send_interface="org.bluez.Agent1"/>
<allow send_interface="org.bluez.MediaEndpoint1"/>
<allow send_interface="org.bluez.MediaPlayer1"/>
<allow send_interface="org.bluez.Profile1"/>
<allow send_interface="org.bluez.GattCharacteristic1"/>
<allow send_interface="org.bluez.GattDescriptor1"/>
<allow send_interface="org.bluez.LEAdvertisement1"/>
<allow send_interface="org.freedesktop.DBus.Introspectable"/> <!-- Added this -->
<allow send_interface="org.freedesktop.DBus.ObjectManager"/>
...