Connecting Switches to an iPad

@gravescolleen kindly shared this article, about getting the makeymakey to play with those fancy iOS devices. Looks like if you have makeymakey v1.4 or higher you’ll have a lot of adapter options, but if on v.2 or older, there appears to only be one. Hope this helps as you work on your projects!

1 Like

Ah, missed the link, thanks @MMC_Jake for heads up.

3 Likes

I’m wondering if anyone has been successful with using that camera adapter to get switches that are connected to either the regular or mini enabled controllers?

I currently have the mini enabled set up using the Arduino code and USB keyboard firmware. It works great when connected directly to the computer using a USB connection but none of the switch presses are recognized as OS switch when connected to an iPad (Pro 10.5" running OS 14.5) via the camera adapter.

I sent Apple accessibility an email asking them what the deal is and they sent me this cryptic reply:

"Thank you for your email. You have reached the feedback address for the accessibility features of Apple products.

The Lightning to USB Camera Adapter is designed for file transfers such as moving images from a DSLR camera. We do offer a Made for iPhone certification program that allow for a broad range of wired and wireless connectivity with accessories. You can read more about this program at the following link:

Sincerely,

Apple Accessibility"

Any ideas and help would be most appreciated! Many of our kids use iPads for communication and other app and would be nice to have an alternative to bluetooth.

@MMC_Milad @gravescolleen any tips / links on the best adapter to get those darn switches working on iOS? Does this need a bluetooth enabled controller/FAIO, Milad?

@loretodalt, do you see letters entered if you open a notepad app? Also don’t use function keys in iOS.

I will test it with an ipad and get back to you with some information. I assumed the same code would work and don’t need to test again in iOS.

@MMC_Chad bluetooth would work better with iOS but we should be able to make it work with USB.

Thanks @MMC_Milad for looking into it! Yes, I see the letters, and it all functions correctly on a Mac computer. I am also able to add the switches for switch scanning through the Mac OS. I am however not able to do the same on iOS. The switch is never picked up by the iOS:

I suspect it doesn’t have to do with the code but more with hardware id? MAC address? All things I don’t know anything about. Apple is just too much! I suspect they are the barrier to this all. I don’t have an Android device but I wonder if it works there? I think they recently added switch scanning yes?

@MMC_Chad, alas, I know this is all possible using Bluetooth but as you well know, CHEAP Bluetooth has been a long-standing project for me. Most of the Bluetooth boards are around $30 US not include this LiPo battery. Since the mini enabled runs off a $6 QTPY, it would be great to give families a more affordable option. Bluetooth can sometimes be finicky and some parents still struggle with the idea of pairing Bluetooth devices and then the issue of switching between devices quickly without having to pair and unpair.

Any thoughts or ideas would be great! Also happy to start a petition campaign to Apple to make DIY AT accessible :stuck_out_tongue_winking_eye: (if they are the culprit).

Well, bad news… I get the same results! I have few method that may solve the issue but not very helpful there. It’s definitely on Apple side!

It works well in Android and Samsung( Samsung has lots of switch options ). You need to connect OTG cable after USB C, otherwise it doesn’t work.

Ugh!! I was afraid that was the case. It sounds like perhaps some advocacy work may be in order here then. I was not kidding about the petition. It sounds like we need to push Apple to allow for open-sourced “Made for iPhone Assistive Switch Control”. I know they don’t love open- source but if Microsoft can change why not Apple! We can shame them a little into it. It seems this might be a sidebar conversation that would be good to have with anyone interested? I’m just not clear on what technical details we would be asking Apple to implement.

I changed title to “Switches” to an ipad as we’re beyond the MakeyMakey world here now.

@MMC_Milad - the FAIO wireless / Enabled Controller (Full one) with a bluetooth microcontroller is still an option, right? It’s just not possible to go into the wired port, if I am understanding?

@loretodalt I went through some of this when trying to get LipSync working on iOS – it too, still only wireless / bluetooth. Next time we are on phone, I’ll tell you my story of trip through their headquarters.

I’m thinking the Bluetooth ones will work well. I guess they still need to be powered by something external though correct? We actually have 20 of those PCB boards so I’m hoping down the line we can build some of those. Now that we raised a whole $500! Woot!

@MMC_Chad- looking forward to hearing about your trip! Man if YOU can’t get Apple to budge, what’s the hope?!!?

@MMC_Chad FAIO Wireless works with iOS and Enabled Controller also works with bluetooth dev board.

@loretodalt
Apple simply doesn’t allow any unverified device to physically get connected to iOS for security reasons and I doubt they would change it as it definitely effects other parts of OS. It can unfortunately be used for wrong purposes if a not certified USB keyboard can be used everywhere. My only hope is that they might do it differently once they replace lightning with USB C. This would be tougher to pull off than the mouse though.

Almost need a separate profile to solve this issue for ever!

Ah, gotcha @MMC_Milad! Thanks for explaining. Ok, I have one more question before I give up on this… is Apple looking to verify the dongle? USB cable? or MCU? If it’s the MCU, could we ask Adafruit to do something on their end? At least for the boards we use most? In my previous rabbit hole… Apple does provide the non-commercial license to MFi for free to makers. I know Adafruit technically isn’t non-commercial but the way the boards are used is.

I doubt they would allow this: because it’s a code sequence as of handshake between Apple device and MCU. People can basically reverse engineer the bootloader in adafruit board and find the code and use it for other purposes.

Apple changes the sequence frequently so I doubt they would allow that. The problem is that keyboard and switches using the same HID profile.

1 Like

Gotcha! Yup security is important. Ok then, bluetooth it is! Thanks for walking me through this.

1 Like

@MMC_Chad @MMC_Milad Sorry guys… this is the thread that just won’t die :wink: I went down yet another accidental rabbit hole this stormy and rainy weekend. I’m not sure how I ended up there but started looking at pole_ergo’s switches on Thingiverse and saw his USB switch design. Which got me thinking that this case might fit an Adafruit TrinketMO board which is supported by the Maker MakeCode platform for block based and easy flashing platform. I made a very simple keycode project which works great on my computer and to my very present surprise also works on my iPhone when connected with a dongle!! I think it might have something to do with the .uf2 file that MakeCode flashes onto the board. This is great news since it means we can have a single switch directly connected to an iOS device for use with switch access. I may try and hack the rocker switch to see if I can cram a Trinket in there to enable two switch scanning on iOS.

Feeling emboldened I was hoping to use the mouse library in the same fashion and made yet another MakeCode project. This again works great on a computer but… when connecting the board to my iPhone via dongle and enable assistive touch, the phone does recognize the mouse for about a minute however none of the commands for moving x/y are executing. I tried to flash the same project using a simple Circuitpython program however this time my phone doesn’t recognize the board as a mouse.

So… I’m not sure what this all means but I think it has to do with .uf2 file and perhaps not the board itself? Anyway… it’s progress…

3 Likes

Nevermind! The mouse works now as well! :confetti_ball:

2 Likes

So you have a DIY mouse working on an iPad, using a dongle instead of bluetooth? and as a switch interface board? Amazing @loretodalt!

1 Like

@MMC_Chad Yas!! Theoretically… I’m asking a local guy here who helps out our chapter and works at Adafruit if he can rope anyone in to create a kid-friendly mouse and I guess switch interface design. I made this very rough design on Tinkercad but this is well above and beyond my skill set :wink: Hopefully, I’ll get a volunteer in on it!

2 Likes

@loretodalt Great find! Seems like you found a bug in their system! I discovered something similar when I was testing it with LipSync wireless. iOS doesn’t detect it if you just put it in mouse HID mode even though it’s a cursor device. However, it works well when you put it in mouse and keyboard combo HID mode. So a combo device has more chance of success than a single mouse or single keyboard HID device.

My guess is that new circuitpython custom HID feature acts like composite HID in raspberry pi. You can modify it but it’s really a full composite HID device.

Now seems like we are dealing with power usage plus HID profile issue rather than MFI requirement issue. Thanks to them for misleading us with their generic error message!

I will look into the HID descriptor implementation of the new circuitpython and see what is going on.

1 Like

Sweet! Progress! Interesting… I bet MakeCode compiles is as a combo which is why it works and CP 6 doesn’t.

1 Like