Tech Writing

The ZTE Open with Firefox OS

I bought a phone!



Granted, it’s not the latest and greatest. I even bought it used; it was less than $70 on a certain jungle-themed shopping website.

I’ll be doing some international travel soon, and it’s useful to have an unlocked, multi-band GSM smartphone. This fits the bill, and it gives me an opportunity to play with a different OS.  Firefox OS.

What is Firefox OS? It’s Firefox running on top of the Linux kernel (actually on top of parts of the Android Open Source Project), without a lot of the baggage of Android. A lot of the tooling keeps the Android heritage; for example, you update the OS using Android’s SDK tools.

First things first: please don’t go out and buy one of these unless you know what you’re doing. They are not consumer devices.

The hardware resembles an iPhone 3Gs. 3G-enabled, 256 MB of RAM, single-core ARM processor, 3 MP camera, 320×480 pixels. Full specs here. The screen is, by now, old-school. It’s way, way behind the glass. You can see a gap of at least 1 mm. Compared to a Galaxy S4 or an iPhone 5, it looks vaguely shameful.

The screen is also cheap. Viewing angle = 13.7 degrees to each side, or that’s what it feels like. I didn’t measure it.

The Gap

These would, of course, be terrible things in a flagship phone that retailed for $700. On a phone that costs literally 10% of that, meant for developers and enthusiasts who want to play with a new OS, it’s quite enough. The phone has a bog-standard mini-SIM slot, and a microSD card slot to supplement the meager 512 MB of storage it comes with.

I removed my Printrbot’s microSD card and repurposed it. The phone accepted it without complaints.

Like with any other phone, the first thing I did was check for updates. The phone didn’t report anything, so I assumed it had the latest OS image. About an hour later, I decided to Google “Firefox OS update.” That’s when I discovered that Firefox OS 1.0, the version that came on my phone, wasn’t actually capable of updating itself, so it didn’t report on updates.

See what I mean about “please don’t go out and buy one?”

Updating it was fairly straightforward for anyone who’s rooted an Android phone. In this case, I had to put the new OS image on the microSD card, boot to a special recovery mode, and install the image. Which erases all of the data on the phone. So please don’t go out and buy one yet. An iPhone, this is not.

It was uneventful,  except that it didn’t work the first few times I tried. It took me a while to realize that I mistakenly had downloaded the update from v1.1 to v1.1, instead of the one from v1.0 to v1.1. Which I think is a legitimate mistake, because it didn’t even cross my mind that there would be an update from 1.1 to 1.1. As far as typical version numbering goes, it doesn’t make a lot of sense.

Once 1.1 is actually up and running, you can use “the easy method” to install 1.2. The easy method involves rebooting the phone and, having the Android SDK installed on your computer, downloading the upgrade from ZTE’s Dropbox account and copying the updated Firefox OS piece by piece to the proper area on the phone’s filesystem. It reads something like this:

$ adb reboot bootloader
$ fastboot flash boot boot.img
$ fastboot flash userdata userdata.img
$ fastboot flash system system.img
$ fastboot flash recovery recovery.img
$ fastboot erase cache
$ fastboot reboot

It’s not rocket surgery, but it’s not a task that you want to dump on your typical end user.

Once the update is applied, the OS actually looks quite nice and runs smoothly, even on this decidedly low-end hardware. The browser of choice is, unsurprisingly, Firefox. It looks a tremendous amount like Firefox for Android.

The OS itself is clearly a work in progress, and somewhat rough around the edges. For one thing, this “official” 1.2 distribution comes loaded with test apps like “Membuster” (no, it isn’t a game) and “Template.”


(also note that, in a very nice touch, the hardware supports an FM radio – something the iPhone still doesn’t have)

This wouldn’t be a big deal if you could delete the test apps. Just like on iOS, tapping and holding lets you delete apps by putting a red “x” in the corner of the icon. Unfortunately there’s a rendering glitch in the delete confirmation screen…


Yup, the dock renders in front of the confirmation buttons, and doesn’t let you press them. Oh well, who wouldn’t want Test Container on their phone? A reboot seemed to cure this problem, though, and I was able to remove all the test apps just fine.

Some other rough edges are evident in the App Marketplace (i.e. the Firefox OS equivalent of an App Store). For example, apps want to specify storage requirements, but many don’t.

2014-02-26-19-18-26I also haven’t been able to open the notifications drawer. On 1.0, sliding your finger down from the top of the screen did the trick. On 1.2, it doesn’t.

The default keyboard has all of the disadvantages of iOS’ keyboard, and none of the niceties. Swype this is not.



On this screenshot, you can see an interesting feature of the OS: systemwide search that goes beyond the phone itself. Without a Gmail app, the phone was able to “find” Gmail, style it like an app, and present it as a result in the main search pane. When you open it, it launches the mobile web version of Gmail in a full-screen browser automatically. Bam! Instant app.

Of course, every app on Firefox OS is just HTML5 and Javascript, so in practice the difference is mainly between “already installed on the phone and tweaked specifically for Firefox OS” or “retrieved from a server, and may or may not be custom-tailored.” In practice, the difference isn’t much.

All in all, it’s been fun to tinker with a new, obscure phone OS that runs quite well on obsolete hardware.


Not all obsolete hardware is the same. It turns out that there are two kinds of ZTE Open. One is sold directly by ZTE though eBay. The others are grey-market ones imported from elsewhere, with locked bootloaders, and incapable of running anything but ZTE firmware. Which lags behind the official Firefox OS quite a bit.

Ask me how I know.

Yup, I downloaded the entire Firefox OS source code and built my own copy. I’ve done this with Android variants like Cyanogenmod before. Although it isn’t for everyone, it’s actually a straightforward process. In this case, it wasn’t: it was impossible to install “straight” Firefox OS on my phone. It just kept rebooting over and over. The only thing that “cured” it was reinstalling ZTE’s 1.2 version full of test apps.

I bought the “wrong” version of the phone and I’m stuck with a bad firmware. Caveat emptor.

Would I recommend this phone to anyone, anywhere? Not unless you want to play with a Firefox OS device for cheap. Still, it’s been a few entertaining hours, and maybe someone will root it properly and open the bootloader up. Until then, I just hope ZTE throws us another update.