Hi,
We are using the AX88772C as a USB->Ethernet bridge in a product we are developing. Due to the chip not following the NCM protocol, it is not supported by the default networking drivers on the iPhone. Initially, we intended on using DriverKit to develop a userspace driver for this device. However, we have been informed DriverKit is only available on iPad OS, not iOS.
As such is the case, we have found two possible alternatives. First being IOkit, and the second being External Accessory Session (EASession).
What are the limitations of each of these options? We need the ability to send and receive USB packets to Control and Bulk endpoints. Is this possible with either of the options defined above? Would either of these options require the device to be MFi certified?
We have read that some APIs within IOkit require the apple device to be jailbroken. Is there a list of features that can be used without a jailbroken device? Documentation on these 2 options is limited, so any official documentation would be great.
Thanks!
You don’t have a lot of options in this space.
we have been informed DriverKit is only available on iPadOS, not iOS.
That’s correct.
First being IOkit
macOS is the only platform that supports I/O Kit drivers [1].
the second being External Accessory Session (EASession).
There are two problems here:
- External Accessory framework can only talk to accessories that are built under the aegis of the MFi programme. If you have an existing accessory that wasn’t built that way, you can’t talk to it with EA.
- External Accessory framework allows apps to talk to hardware. It doesn’t let you publish a network driver that’s visible to the rest of the system.
I think your best option here is to work with your chip vendor to update their firmware to work with iOS’s built-in USB Ethernet driver.
Share and Enjoy
—
Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"
[1] Lemme tackle this:
We have read that some APIs within IOkit require the apple device to be jailbroken.
I/O Kit is an implementation detail on iOS. As such, that’s not something we can talk about here on the Apple Developer Forums, which is primarily focused on APIs (things that you can reasonably expect to work today and in the future). If you want to talk about iOS’s implementation at that level, there are plenty of other places on the ’net for that.
I should note that I/O Kit is both an API and a KPI (Kernel Programming Interface). A lot of the info out there on the ’net is about the API, but an I/O Kit network driver is an in-kernel thing.