I am developing a virtual Bluetooth HID keyboard device on my Win desktop that connects to my iPad over bluetooth and advertises itself as a keyboard to control the iPad. It works very well already on Android, but not on iOS. I can see in Packet Logger that it reads well as a HID device, reads the report map and HID information correctly, which data is all valid. It doesn't subscribe to the report's Client Characteristic Configuration, just silently quitting and the keyboard does not work.
I can post more information if needed, but my question in short is what are the requirements for iOS to accept a HID over GATT as a keyboard peripheral. I feel like I am close.
I can post more information if needed, but my question in short is what are the requirements for iOS to accept a HID over GATT as a keyboard peripheral. I feel like I am close.
Our official documentation on this are the "Accessory Design Guidelines for Apple Devices". The don't mention any HID over GATT specific requirements, however, what you're describing here:
I can see in Packet Logger that it reads well as a HID device, reads the report map and HID information correctly, which data is all valid. It doesn't subscribe to the report's Client Characteristic Configuration, just silently quitting and the keyboard does not work.
...is what happens when the system reviews the accessories HID configuration and determines that accessory doesn't fit within one of the configuration iOS directly support (in this case, "Keyboard").
__
Kevin Elliott
DTS Engineer, CoreOS/Hardware