이상하게도 이에 대한 정보를 찾을 수 없는 것 같습니다. 내 장치에서 Bluetooth 서비스에 액세스/읽기/쓰기를 시도하고 있습니다. 명령을 사용하고 있습니다 bluetoothctl
. info 명령에 하나의 서비스 세트가 표시되고 menu gatt
/ 에 다른 서비스 세트가 표시됩니다 list-attributes
.
정보:
Device <someMACaddress> (public)
Name: <somename>
Alias: <somealias>
Paired: yes
Trusted: yes
Blocked: no
Connected: yes
LegacyPairing: no
UUID: Generic Access Profile (00001800-0000-1000-8000-00805f9b34fb)
UUID: Generic Attribute Profile (00001801-0000-1000-8000-00805f9b34fb)
UUID: Device Information (0000180a-0000-1000-8000-00805f9b34fb)
UUID: Battery Service (0000180f-0000-1000-8000-00805f9b34fb)
UUID: Human Interface Device (00001812-0000-1000-8000-00805f9b34fb)
UUID: Vendor specific (3dda0001-957f-7d4a-34a6-74696673696d)
ManufacturerData Key: 0x<2bytekey>
ManufacturerData Value:
<10bytehexvalue>
<10bytevalue>
GATT 서비스에 액세스할 수 있지만 위에 표시된 첫 번째 서비스 세트에 액세스하는 방법을 찾을 수 없습니다. 그냥 생각했는데, 방법이 없을까? 이러한 서비스는 GATT가 아닌 것으로 보이지만 읽기 값에 대한 내 검색은 모두 GATT를 가리킵니다. 예를 들어 장치를 Android에 연결하면 BLE 장치의 버튼을 누를 때 hcisnoop 로그에 HID 핸들 1812가 사용되고 있다고 표시됩니다. /dev/hidraw2로도 나타납니다.
원시 입력을 얻기 위해 1812 핸들이나 uuid를 구체적으로 들을 수 있는지 궁금합니다. 아니면 180a나 1801 같은 다른 핸들도...?
답변1
내 문제에 가장 적합한 답변을 찾았습니다.스택 오버플로저자: 올리비에 M.
기본적으로 그는 일부 특정 GATT 서비스(예: 배터리 서비스)가 DBUS로 이동되었으며 DBUS를 통해 액세스할 수 있음을 의미합니다. 이 솔루션의 예도 제공됩니다. 나는 그것이 나에게 효과가 있다고 생각하고 읽었습니다.
- bluetoothctl을 사용하여 대상 BLE 장치에 연결
- 그런 다음 DBUS를 요청하십시오.
dbus-send --print-reply=literal --system --dest=org.bluez /org/bluez/hci0/dev_<mac_address_of_your_ble_peripheral> org.freedesktop.DBus.Properties.Get string:"org.bluez.Battery1" string:"Percentage"