8

I tried to create a simple "Hello World" app implementing the HID service (i.e. my app acting as a simple HID button).

However, when trying this I receive the error The specified UUID is not allowed for this operation after adding my service to my CBPeripheralManager instance. Adding any "generic" (random UUID) service works, and other builtins such as Heart Rate monitor works fine, but I was curious about the HID service in particular.

I found this thread, indicating that support for HID has been changed (but this seems to be on the central side, which makes more sense since HID is natively supported in iOS7).

The documentation fails to mention that any services should be unsupported. Could it be that Apple removed HID peripheral support in iOS7? If so, is this documented somewhere?

Krumelur
  • 31,081
  • 7
  • 77
  • 119
  • I haven't tried it but I'm pretty sure that an iOS device cannot be an HID peripheral. HID support has been added to enable external devices to be used with the system but not an iOS device. What UUID do you use? 0x1812 worked for me in the BTLE transfer example. – allprog Dec 29 '13 at 20:33
  • Changing `TRANSFER_SERVICE_UUID` to `@"1812"` causes service registration to fail for me. – Krumelur Dec 29 '13 at 21:38
  • HID over GATT profile is nothing more than a series of well-defined service UUIDs and values. If not supported in iOS it must have been explicitly forbidden by checking for these UUIDs, which makes me wonder why this is not documented. – Krumelur Dec 29 '13 at 21:40
  • 1
    You're right. There was no didAddServices callback in my version. Now I see the failure too. Well, it seems to be explicitly forbidden if you consider this error. You should submit a radar to get the documentation updated. At least we know this now. :) – allprog Dec 29 '13 at 21:55

1 Answers1

11

I am going to answer my own question and hopefully help others with the same problem. I went to the source and asked Apple's tech support. HID support is intentionally reserved for iOS, and they will update the documentation to clarify this.

This means that it is not possible to create HID peripherals from iOS apps in iOS 7.

Now I know.

Krumelur
  • 31,081
  • 7
  • 77
  • 119
  • 1
    Apparently, Mac can be used as HID http://houdah.com/type2Phone/ (but this uses Classic Bluetooth) – allprog Jan 09 '14 at 11:19
  • Is this still true? I would prefer to make an HID app, but I suppose I could go the annoying route of making a more general BTLE app. – Joel Nov 19 '15 at 00:53
  • @Krumelur I am going to develop an iOS app that support HID services. So Can I use HID services in my application? Currently, I am using the Heart Rate service and It's working fine. I am a little bit confuse about the HID services will support or not? – Chetan kasundra Jan 09 '19 at 06:08
  • @Krumelur can you give one link of the documentation that clarify this? – signal Jun 30 '22 at 08:46