IOS – Why do some accessories work with the Lightning – USB3 Camera Adapter while others don’t

iosipadkeyboardlightningusb

Context

I borrowed an iPad Pro to work on while my laptop was down, but without a physical keyboard, I found it frustrating to type anything more than a short sentence on it.

After countless typos and wrist fatigue, I tried connecting a full-sized USB keyboard (specifically, this one) using the Lightning to USB 3 Camera adapter, and it worked perfectly! Volume control, screen brightness, function keys, all worked, pretty much identically to how a bluetooth keyboard might when connected to an iOS device.

But much to my confusion, it did exactly the opposite the next day. When I plugged the keyboard in, it didn't seem to be recognized by the iPad.

Tapping on a text field brought up the soft keyboard as usual, and none of the keystrokes I entered on the physical keyboard seemed to register. The escape button worked as the home button the day before, and the "fn" keys for media control as well, but not anymore.

I hadn't made any changes I think would have been significant (no iOS updates, no adapter firmware updates — unless those are installed silently, then I wouldn't know). The iPad wasn't even restarted. It was working fine one day, but after being disconnected overnight, it apparently decided not to recognize the keyboard at all?? There was no "This accessory may not be supported" popup that I have seen when plugging in inadequate cables, chargers, etc.

Question

I was a little disappointed, and found it so bizarre that I tried to investigate what exactly caused the setup to stop working overnight, and eventually came to the question of what makes a particular setup of iOS Device + USB Camera adapter + USB device work in the first place?

Normally with a USB accessory compatibility issue between a computer, the drivers/device tree would be the first place I would have looked, but the communication that happens through the camera adapter and the lightning port seems to be a black box. I recently got an iPad Pro (9.5-inch), and one of the first things I tried was using the hardware keyboard with it, but no success.

I jailbroke the iPad (iOS 11.2.5, using Electra1131 MPTCP), but I realized I have no idea where the USB-through-adapter-through-lightning devices are exposed, or if they even are.

Now I know that using the camera adapter for anything other than cameras, and some specifically listed devices certified to work with it is hit-and-miss, but I had always thought it was one or the other. The fact that it worked at one point and stopped working so very soon after has me dying to know what the culprit is, and how the communication works to let the iPad act as the USB host.

Are there drivers in iOS? Are they baked into the firmware of the camera adapter? Is it just a big mystery? Any pointers on where to look would be appreciated as well, bearing in mind I have access to the filesystem, and the system runtime, but usually not for third-party applications.

Best Answer

Yes, there are drivers in iOS. iOS is based on Darwin, the same as macOS. It is the exact same type of drivers.

No, these drivers are not baked into the firmware of the camera adapter. The camera adapter itself does not have specific support for storage devices, keyboards, cameras, ethernet adapters, MIDI keyboards or anything else that you would like to plug in. Those types of drivers run in the operating system on the iOS device itself.

A place to start looking for more runtime information about connected USB units is to run the command "dmesg" after plugging in the device. You can also look for and/or install custom kernel extensions supporting specific types of USB devices.

One common cause of problems with USB devices on iOS devices is that the USB port only delivers a very small amount of power. Many USB devices require more power than this port can provide. You'll then need to plug the USB device into a powered USB hub, and then connect the hub with the camera adapter to the iOS device.