About USB accessory certification

I have a question about Apple certification.

We are planning card reader via HID(human interface device) for iPad that support USB-C.

iPad will receive data as HID protocol.

In this case do I have to get certificate(for example MFi) like Apple USB accessory?

I question why a card reader would not present a mass storage interface. External USB storage devices are supported by iPadOS. Why is yours using HID? How does it present itself on macOS, or on Windows?

If the reader has some special functions which can only be controlled over HID, you'll need to write a dext to communicate with it, because iPadOS' support for HID extends only to pointing devices, keyboards, and game controllers. There's no HID manager on iOS, so you need your own app (or you supply code to third party app vendors) to send your vendor-specific HID commands to your device, and a dext.

Note that dexts are only supported on iPads with M-series processors.

  1. How my product work

My product read RFID tag and send it to Host (Windows). Currently it works well in Windows.

  1. USB mode
  • HID mode

A. Windows: it can receive tag data using standard HID protocol.

B. iPad(USB-C): We found iPad can receive tag data using standard HID protocol.

  • USB-CDC mode

A. Windows: it works well with my private USB driver.

B. iPad(USB-C): We're planning to develop custom driver.

  1. Questions
  • HID mode: Does my product get certificate with standard HID protocol?
  • USB-CDC: Does my product get certificate with custom driver?

My product read RFID tag and send it to Host (Windows).

As a small clarification here, how is the output actually sent out through HID? The broad architecture here sounds similar to how many barcode scanners work, which is that they present themselves to the device as a standard keyboard and then send the scanned barcode data by sending individual keystrokes, just like the user has typed those keys on a standard keyboard.

I don't know if that approach will work for RFID data, but the benefit of this approach is that it allows easy integration into basically "any" app without any additional driver or software. As far as the target app is concerned, the user is just typing data. In any case if you are using this approach, then not additional software (or DriverKit driver) is required

However, if you're using HID as a vendor specific transport layer, then:

In this case do I have to get certificate(for example MFi) like Apple USB accessory?

No. The MFi program does not certify vendor specific HID accessories.

B. iPad(USB-C): We're planning to develop custom driver. Questions HID mode: Does my product get certificate with standard HID protocol? USB-CDC: Does my product get certificate with custom driver?

I'm not sure what you mean by "certificate" here. What I will say here is:

  • Shipping a DriverKit DEXT requires the correct managed entitlements for the DriverKit family you'll be using. You can learn more about that process in the article "Requesting Entitlements for DriverKit Development".

  • As documented in "Creating drivers for iPadOS", iPadOS does not currently include support for HIDDriverKit. That means you're DEXT will need to be build with USBDriverKit and "raw" USB communication.

  • Note that this guidance does NOT apply to macOS. On macOS, app can communicate directly with vendor specific HID accessories using the CoreHID framework, which does not require a managed entitlement or a DEXT.

__
Kevin Elliott
DTS Engineer, CoreOS/Hardware

About USB accessory certification
 
 
Q