0

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.

1

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.

  • oh wow, dmesg, huh. I was looking for log or even syslog since the logging server appeared to be more or less identical to OS X, but I guess it't not too surprising that they're not there on iOS. I did find that I could stream logs on the console app if I connected using the lightning cable, but that's not so helpful in my case lol. Is there any way I can have dmesg "wait" in iOS? dmesg -w and dmesg --follow did not work, curiously printing the message usage: sudo dmesg before exiting. edit because autocorrect hates the word dmesg – user3052786 Sep 29 '18 at 0:19
  • Oh, and the power requirements was one of the first things I checked to see if it was the culprit. I tried pretty much everything, keyboard -> powered hub -> adapter -> iPad, keyboard + charger -> iPad, plugging them in different sequences, everything short of voodoo. was almost tempted to splice together a cable that spliced to a separate 5v bus, but common sense/lack of confidence in my electrical engineering knowledge stopped me. Thanks for your answer by the way, I forgot to say. – user3052786 Sep 29 '18 at 0:25
  • iOS and macOS have more or less the same command line. You can use something like “watch -n 1 “dmesg | tail -n 60””. – jksoegaard Sep 29 '18 at 5:25
  • watch isn't installed in iOS or Mac by default :/ maybe someone has packaged it for iOS or I guess I would have to bake my own – user3052786 Sep 29 '18 at 6:17
  • It is definitely installed by default on macOS. – jksoegaard Sep 29 '18 at 13:19

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .