Jetson Nano에서 GATT 서버를 시작하려고 할 때 액세스 거부 오류가 발생함

Jetson Nano에서 GATT 서버를 시작하려고 할 때 액세스 거부 오류가 발생함

다음 명령을 사용하여 GATT 서버 애플리케이션을 작성 중입니다.이 기사기본으로. 내 초기 코드는 Linux 랩톱에서는 잘 실행되지만 Jetson Nano(nVIDIA 조정 버전의 Ubuntu 18.04 실행)에서는 인터페이스를 통해 데몬에 액세스하려고 org.freedesktop.DBus.Error.AccessDenied할 때 오류가 발생하면서 실패합니다 .bluetoothdorg.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"/>
  ...

관련 정보