An afternoon with KaiOS

Introduction

If you’re not familiar with KaiOS, it’s the "resurrected zombie" version of Mozilla’s Firefox OS - a mobile phone operating system that boots directly into Gecko, Mozilla’s web rendering engine. It’s primarily found on feature phones, the kind your grandma (and everyone, before the year 2010) might use. Except these feature phones can play YouTube.

At some point in the last few years, KaiOS was the second most popular mobile OS in India, surpassing Apple’s iOS. This is because it has much lower system requirements than contemporary Android versions, sitting at around 256MB RAM. It also had good support from Indian OEMs.

After scouring eBay, I picked up a Nokia 6300 4G. Among other things, the phone boasts:

  • A physical analogue headphone jack

  • A trivially user-replacable battery

  • A microSD card slot (makes up for 4GB internal storage)

  • T9 physical keyboard

  • Twin SIM card slots (for international travellers, business users, and illegal business users)

  • Wi-Fi, bluetooth, GPS, FM Radio

  • The "mount phone as USB storage" option that’s been absent from Android for years now (I still miss it)

  • Snake game

  • A horrible camera (very good if you’re nostalgic for mid-2000s webcams).

  • Built-in web browser, WhatsApp, YouTube, Facebook, and App Store

This phone was released in 2021 and it’s cheaper than a Raspberry Pi.

If nothing else, it has an appeal as a backpack MP3 player, and thing to use when you’re lost in the woods with a dead smartphone.

Hacking it

After a while of digging, I realized my phone is a slightly newer model than the "banana phone" that’s most popular with enthusiasts and hackers, so it’s slightly more difficult to gain full privileges.

Regardless, it was trivial to enable ADB debugging by dialling a special phone number, then load up a legacy desktop Firefox version - 52 is in pkgsrc, I hear Waterfox Classic and Pale Moon are also good options. From there, you can open the "WebIDE" Firefox OS dev tool, and sideload apps after you’ve extracted their ZIP files. I did run into a nice-looking CLI tool called "gdeploy", but was unsuccessful in getting it to work (maybe due to ADB being flaky; I seriously recommend finding a Linux image to run it on, on the BSDs it’s near unusable). There’s also a quite funny JavaScript exploit for enabling ADB. Typing adb shell was a quick reminder that this phone is a Unix system like any other.

A good source of zip files to sideload was the banana hackers store. From there I picked o.map, and was amazed by how usable OpenStreetMap could be with only a D-Pad and a few buttons (once you’ve figured out what those buttons do, and which one is "search"). Since KaiOS apps are just HTML, CSS, and JavaScript, it looks as good as the normal web version of OpenStreetMap, with the added benefit of working offline. Other interesting-looking open source apps include frontends for Telegram and Reddit. As a weirdo whose real-world social life is primarily based on Telegram, this appeals to me.

You might notice that a few of these apps are also available in KaiOS’s official app store too. What’s the difference? Well, KaiOS requires that all apps in its official store bundle some ad javascript for revenue sharing. By sideloading, you get ad-free versions without tracking. Many developers seem happy to distribute ad-free versions, since apparently the shared revenue is meagre at best.

On that note, I found "AppBuster" useful for removing some of the included shovelware. I had to modify the version on the banana hackers store slightly to work around my phone’s security settings - open manifest.webapp and remove the "engmode-extension" block. Functionality seems unaffected.

Conclusions

The future of KaiOS does not look great. Like many minority platforms shipping a version of Gecko, it seemed to hit a wall around Firefox 52. [1] They developed KaiOS 3 to remedy this problem, and lost most of their third-party developer support in the process - KaiOS 3 phones are US-only and much rarer than KaiOS 2.5 phones.

In the past few weeks, the official version of WhatsApp stopped working, which takes away a lot of the appeal for global users. Regardless, it still boasts a healthy enthusiast community. I’m fairly confident I won’t get pwned by using this phone to look things up on Wikipedia, but I’m hesitant to use it on the open ad-laden web unless it’s behind a firewall with sketchy domains blocked.

KaiOS makes me feel wistful for lost futures - perhaps what I might have imagined phones from the future to be in 2006. Everything is a portable web page and works on anything, except it doesn’t, because of walled gardens and Google’s market dominance. Oh well.


1. Think of the power if all the separate enthusiast communities benefited from the same codebase…​ NetBSD/sparc64, PowerPC Mac OS X, ArcaOS, KaiOS…​ Check out Arcticfox, by the way. Maybe Ladybird is the future, but I’m not getting my hopes up.