HID over Gatt on iOS

I've a device acting as a peripheral, implementing the HID over Gatt profile (meaning that is adv. and provides all of the services required by the profile: HID, Device Information and Battery).

I've have setup the Gatt database with the above mentioned services and the required characteritics and descritors.

My objective is to force iOS to lower the bluetooth stack minConnectionInterval / maxConnectionInterval from the default 30 ms to 11.25 ms which is the iOS default for HID devices.

I'm emulationg a keyboard since I've seen somewhere in the documentation that iOS doesn't allow mouses.

My current implementation gets macOS to recognise the device as a HID and lower the parameters to 11.25 ms but iOS does not.


Any help would be welcomed.


Thanks

Replies

Hi ptraca,


I am trying to achieve the same thing, however I don't get as far as you get.
Keep getting "The specified UUID is not allowed for this operation." on adding the Battery and HID services.
Could you please let me know how you got passed that?


Thanks

I too would like to know why the GATT HID service is not allowed when acting as a peripheral.

By trial and error I have found the following to be forbidden:

  • Generic Access
  • Battery Service
  • Bond Management Service
  • Current Time Service
  • Device Information
  • Generic Attribute
  • Human Interface Device

Where is the documentation stating these are not supported and the reasons behind it? Having an iPad or iPhone work as a HID device would be a great accessibility feature opening up many possibilities.

I am working on a medical device that uses BLE communications and have written a simulator that runs on an iPhone. I am having problems implementing the Bond Management Service so that I can support encrypted characteristics. Is this not allowed on an iPhone or tablet application?