I'm developing a DriverKit USB driver for iPadOS that needs to communicate with a vendor-class USB device (bInterfaceClass = 0xFF) as I need to communicate with a USB device using a custom protocol over IOUSBHostPipe for bulk transfers.
Current Configuration:
Info.plist: IOProviderClass = IOUSBHostDevice
Device: bDeviceClass = 0, bInterfaceClass = 0xFF (vendor-specific)
What Works:
Driver matches and loads successfully
Start_Impl() executes
device->Open() succeeds
device->SetConfiguration() succeeds
The Problem:
uintptr_t iterRef = 0;
kern_return_t ret = device->CreateInterfaceIterator(&iterRef);
Result: ret = kIOReturnSuccess (0x0), but iterRef = 0 (empty iterator)
What I've Tried:
Matching IOUSBHostInterface directly - Driver is loaded, but extension never executed
Current approach (IOUSBHostDevice) - Driver extension loads and starts, but CreateInterfaceIterator returns empty
Question:
Does iPadOS allow third-party DriverKit extensions to access vendor-class (0xFF) USB devices? That is, iPadOS, is there a way for a third-party DriverKit extension to access IOUSBHostInterface objects for vendor-class (0xFF) USB devices?
Topic:
App & System Services
SubTopic:
Drivers