iOS requirements for HID over GATT

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.

Answered by DTS Engineer in 822523022

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

Hi JackBachey.

Recently, I was also trying to make my "app" work with the same issue. although I haven't finished it yet (lack of time) the solution I have found was that your device must expose the HID Service (UUID: 0x1812) and the relevant characteristics, such as HID Report (UUID: 0x2A4D), HID Report Map (UUID: 0x2A4B), and HID Boot Keyboard Input and HID Boot Keyboard Output characteristics.

Although I haven't implemented it yet (I am going to try it this weekend), feel free to try it with your code. I am not 100% sure if our issues are the same, but maybe this will help.

Good Luck

Accepted Answer

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

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:

Thank you, this helps a lot, this describes well what I need.

iOS requirements for HID over GATT
 
 
Q