Hmm ... então, embora eu achasse que estava rodando o bluetoothd com a sinalização --experimental, eu não devo ter salvo as alterações. Para iniciar o daemon com recursos experimentais:
- Edite o arquivo .service para incluir --experimental ou -E no comando de inicialização
- daemon-reload do systemctl
- systemctl reiniciar o bluetooth
Em seguida, verifique se o daemon está sendo executado com os sinalizadores corretos:
Então,quandotenteiusarocomandoacquire-writeouacquire-notify,recebiumanovamensagemdeerroeodaemonpareceutravar:
[KeyDuino:/service0010/char0011]#acquire-writeAgentunregistered[DEL]Controller28:B2:BD:07:04:49GBFedora01[default][DEL]PrimaryService0/char0011]#/org/bluez/hci0/dev_D4_36_39_DE_61_6B/service000c00001801-0000-1000-8000-00805f9b34fbGenericAttributeProfile[DEL]Characteristic/org/bluez/hci0/dev_D4_36_39_DE_61_6B/service000c/char000d00002a05-0000-1000-8000-00805f9b34fbServiceChanged[DEL]Descriptor/org/bluez/hci0/dev_D4_36_39_DE_61_6B/service000c/char000d/desc000f00002902-0000-1000-8000-00805f9b34fbClientCharacteristicConfiguration[DEL]PrimaryService/org/bluez/hci0/dev_D4_36_39_DE_61_6B/service00100000ffe0-0000-1000-8000-00805f9b34fbUnknown[DEL]Characteristic/org/bluez/hci0/dev_D4_36_39_DE_61_6B/service0010/char00110000ffe1-0000-1000-8000-00805f9b34fbUnknown[DEL]Descriptor/org/bluez/hci0/dev_D4_36_39_DE_61_6B/service0010/char0011/desc001300002902-0000-1000-8000-00805f9b34fbClientCharacteristicConfiguration[DEL]Descriptor/org/bluez/hci0/dev_D4_36_39_DE_61_6B/service0010/char0011/desc001400002901-0000-1000-8000-00805f9b34fbCharacteristicUserDescriptionFailedtoacquirewrite:org.freedesktop.DBus.Error.NoReplyWaitingtoconnecttobluetoothd...
Eutambémtenhoumpop-upindicandoqueforamdetectadosdoisproblemasdoSELinux:
A etapa de solução de problemas forneceu comandos para ativar as permissões solicitadas:
ausearch -c 'dbus-daemon' --raw | audit2allow -M my-dbusdaemon
semodule -X 300 -i my-dbusdaemon.pp
depois de reiniciar o serviço bluetooth, posso adquirir com êxito os descritores de leitura / gravação de arquivos:
[KeyDuino:/service0010/char0011]# acquire-write
[CHG] Attribute /org/bluez/hci0/dev_D4_36_39_DE_61_6B/service0010/char0011 WriteAcquired: yes
AcquireWrite success: fd 7 MTU 23
[KeyDuino:/service0010/char0011]# acquire-notify
[CHG] Attribute /org/bluez/hci0/dev_D4_36_39_DE_61_6B/service0010/char0011 NotifyAcquired: yes
AcquireNotify success: fd 8 MTU 23
Você pode então encontrar estes descritores de arquivos na pasta / proc / (pid) / fd / para o bluetoothctl.
#Use cat to read output
sudo cat /proc/$(pgrep bluetoothctl)/fd/8
#In another root shell use cat to write to BLE characteristic
sudo -sE
cat > /proc/$(pgrep bluetoothctl)/fd/7