Mark CipollaLogo

Mark Cipolla

I love the idea if scrappy apps; the handmade ones just for fun, for you or your family and friends. Especially those that find use for hardware that otherwise sits in a electronics box, gathering dust

Home Butler

iOSUIKitTheosXcodeHome AssistantClaude.ai
GitHub

Next up is to view the Home Assistant web interface, which normally works great. There are, however, long-standing issues (you can't load the page to authenticate, and they have no interest in fixing, and fair enough) because:

  1. the Safari on the old iPads is major versions out of date, and
  2. you can't install any other (non-safari based) browser that you could use, as nobody builds apps that far back.

So, I decided to build a small, scrappy app to control my home automation. Break out Xcode, Claude.ai and start building. You can get pretty far with just a simulator, but eventually it's time to try deploying to the device and giving it a whirl. And that's when the sadness really begins.

You just can't build apps for iOS 9.3.5 on new Xcode versions. ARM7 architecture is no longer supported (it was only used on old devices), as newer devices moved to newer ARM64 architectures. I tried to build the app using Github Actions, but they only support building for xcode 12 and newer, which is too new to build for iOS 9.3.5. I tried to downgrade to xcode 11, but that's not supported on MacOS 26.1 Tahoe.

I'd have to fish out an old mac, install an old version of MacOS, and then install an old version of Xcode. And then I could build the app. Nobody got time for that. I'd also have to pay the Apple Developer Program fee, which is $149AUD per year, or I'd have to redeploy the app every 7 days (or get into dependency hell and have Sideloadly redeploy the app weekly). I'm not doing that.

Let's jailbreak the device! Jailbreaking lets us install apps that are not signed by Apple, so no need for the developer account. It was surprisingly easy (by following this tutorial) to do, but I did run into issues 2.

With a jailbreak in place, I was able to install the app using Sideloadly.

Then, with a lot of tweaking and exploration of the Home Assistant states, services and weather APIs, I was able to get the app to work with nice interactions for changing the brightness of dimmable lights, trigger scripts (to turn on/off the TV with via IR with a RM4 Broadlink blaster), and get the weather for the day.

If there's interest to run it on your own, drop me a line and I'll send you the app and instructions.

  1. It's a 2013 "Trash Can" Mac Pro running a bunch of Docker compose images, one of which is Home Assistant.

Mark lives and works on unceded Wurundjeri land in Naarm / Melbourne, Australia, and acknowledges the traditional custodians of the land on which he lives, paying respects to elders past and present, recognising the resilience, strength and pride of the Aboriginal and Torres Strait Islander communities.