Android 7 (Nougat) on a 5-year-old phone

A 5-year-old phone is not going to the kindergarden, it is more likely to be found on the phone graveryard. One important reason for this is that its manufacturer stopped caring for it at least three years ago. Fortunately, there are other caretakers – people that maintain the latest android version also for five-year-old phone grannies – in form of custom ROMs.
So, is it possible to run the latest Android version on a device that’s 5 years old? Hell, yes! This article shows how.

My old HTC One S (aka ville, the older S4 processor not the “C2” with S3 processor), launched April 2012 runs terribly laggy on its latest stock anroid 4 firmware, last update 2013 – four years ago! That’s why it was retired a long time ago. At the beginning of 2017, when the first unofficial builds of lineage OS turned up, I was surprised to see that HTC One S was among them. I was wondering, how can such an old device run the latest android version? I had to see for myself.

TLDR; Android Nougat works surprisingly well, way better than the latest Stock version but HTC makes it a hell of a way to get there. Lets see what has to be done.

Note that all files on your device will be deleted during the process!

Unlock Bootloader

To be able to flash software to our HTC devices, HTC forces us create an account on htcdev.com and register our device there. Then we receive an unlock code as zip file which we can flash on our device.


adb reboot bootloader

fastboot flash unlocktoken Unlock_code.bin

For all Windows 8 (and also Windows 10, apparently) users who have problems getting the fastboot driver to work, whereas ADB works, this little registry edit did the trick for me.

In the bootloader make sure to remember your HBoot version, it will be required during the process.

HBoot 2.16 - we're good!

HBoot 2.16 – we’re good!

Flash TWRP

Download from here to your PC and flash as follows


fastboot flash recovery twrp.img

fastboot reboot

Check HBoot version

I had to find out the hard way by flashing lineage 14.1 that there are requirements regarding the HBoot (HTC Bootloader) version:ย  HBoot 2.16 is required.

So better check in advance. If you’re on HBoot 2.16 flash lineage and enjoy. If not, let the games beginn.

S-OFF & root

Upgrading HBoot needs S-OFF (Security off, enables writing to /system directory). On top of unlocking our bootloader at htcdev.com we need to risk bricking our phone to enalbe writing in the /system directory of our device.
Those two things are the reasons why I most likely won’t ever buy an HTC device again.
Anyway, with the One S, we’re lucky! S-OFF takes a bit of time but not much effort and comes at almost no risk, thanks to rumrunner (a good overview of other S-OFF Mechanisms is described here). Rumrunner makes it easy to get S-OFF, but it needs root access.

What? Why are we doing this again? We want to Upgrade HBoot, that’s why we need S-OFF, in order to get S-OFF, we need root. That’s the last unpleasant surpise, promise!
Lucky again, root access can be gained easily on HTC One S. I used Superboot: Just Download, execute Script on PC while Phone phone is in bootloader mode. Root done. More detailed description here.

Then just download rumrunner follow the instructions, wait for about 10 minutes (don’t worry, your phone is restarting about one million times) and you’re S-OFF!

Upgrade HBoot

We’re getting closer. Now, with S-OFF we can flash HBoot 2.16. I followed these instructions, and found the firmware here.

Caution: After flashing HBoot 2.16, the internal memory is really small, only 50 MB left. Obviously Android 4 and Hboot 2.16 are not good friends. Don’t worry, this is solved once Android 7 is flashed.

Flash Android 7.1.2

It’s finally gonna happen. We’ll flash Lineage 14.1, Android 7.1.2 (maintained by moozon, thanks so much!). But how, the internal memory is only 50MB, but the image is almost 300MB? I copied the image to an USB thumb drive, connected it to the phone via an USB OTG adapter and flashed via TWRP Recovery. TWRP also offers ADB sideloading, which might be an alternative, it you don’t have an USB OTG Adapter at hand.

Once flashed, you finally can enjoy the latest android version on your “antique” phone. ๐Ÿฅ‚

Optional finishing and more info

Root is built-in but disabled by default. If you want root access, you can enable it in developer options.

If you need google services, get ARM | 7.1 | pico (my recommendation) from opengapps.org and flash via TWRP.

If you need more info, you might get started here: [LINEAGE OS] HTC One S Lineage OS 14.1, Android Nougat 7.1 ROM

Final thoughts

The One S with Android 7.1.2 almost works better than my HTC One M8 with Android 6! Why must HTC make it so hard to get there? And why are manufacturers not able to support their devices longer than 2 years, while the community or even single indivudals are able to do so for more than 5 years??

[EDIT 2017/06/13: Google just published the guaranteed updates for its devices: two years of upgrades and another year of security updates. While this is at least some formal guarantee (other manufacturer just don’t guarantee anything) it still is far from the five years provided by the community for my HTC One S… ]

I’m still waiting for a manufacturer that guarantees support for its devices for many years. That would really be a unique selling point! I can’t believe no manufacturer uses this USP on the highly competitive market for mobile devices. In addition, this would be so much more sustainable, and contribute to a green(er) IT. While the whole world complaints about planned obsolescence, why is there no manufacturer that uses this fact for positive marketing?

[EDIT 2017/07/01: HMD Global (owner of the Nokia brand) just announced that they intend to provide plain vanilla android phones with support “even after two years“. I looking forward to their next anouncements. My calls might just have been heard ๐Ÿ‘‚]

What is Google doing, by the way? They introduce Safety Net, providing the oportunity for developers to hide their apps on Google Play from specific devices, such as the ones running custom ROMs. So now, no more Netflix, etc. for custom ROMs. Effectively, this is another punch for the custom ROM scene after the death of CyanogenMod.

Lets just hope custom ROM developers will not be discouraged by these facts and continue their imporant work, making success stories such as the one of my HTC One granny possible.

Thank you android community, XDA forums, custom ROM developers, etc. for sharing your work and never giving up! ๐Ÿ‘

Android: Custom Rom – Installing Google Play only (Customize GApps)

Due to license restrictions, Googleโ€™s proprietary applications (Play, Talk, YouTube, etc.) don’t come pre-installed with Android custom roms.

That leaves you with two options:

  1. Being happy you got rid of all the bloatware, effectively achieving a “google-free” android.
  2. Google-ify your custom rom by installing the complete “google stack” (GApps) separately.

But what if you prefer the google-free alternative but you purchased apps on Google Play before and want to keep using them?

Or maybe you just realized after hours of searching that a lot of apps cannot be found on other app stores?

You have no choice but to reinstall Google Play. However, using the GApps package as is, results in a bunch of apps and frameworks you don’t need, if you only want to have Play.

So the least thing you can do is to only install the apps/services you really need, avoiding the bloatware mentioned before.

To achieve this, you have to “customize” your GApps package.

This post shows how.

[EDIT 2015-02-08: Paranoid Android offers GApps in different packages sizes (Stock, Full, Mini, Micro, Nano, Pico). Using those might be easier than stripping them yourself. Seeย [GAPPS][4.4.x] OFFICIAL Up-to-Date PA-GOOGLE APPS (All ROM’s) and [GAPPS][5.0.x][BETA] OFFICIAL Up-to-Date PA-GOOGLE APPS (All ROM’s). If those work for you please leave a comment, I’m very interested in any experience.]

[EDIT 2016-05-23: The Open GApps Project now conveniently offers different variants (“aroma” to “pico”) for different android versions (4.4 to 6.0) and different platforms (ARM, x86 and 64 Bits each).ย  You might want to give “pico” a try and skip the steps stated bellow ๐Ÿ™‚ ]

Stripping Gapps

  1. Download the GApps bundle for your Android version
  2. Open the zip file (e.g. with 7-zip)
  3. Go to the system\app\ folder
  4. Delete all apks you don’t want.
    If you want Google Play only, you must keep the following ones:
    GmsCore.apk (Google Play Services)
    GoogleLoginService.apk
    GoogleServicesFramework.apk
    Phonesky.apk (Google Play Store)
    If you don’t keep all four of them, Play is not gonna work properly.
  5. Flash the zip file to your device (as described here, for example).
  6. Reboot
  7. Use Google Play

Further actions

If you’re a bit paranoid, I suggest using LBE Security Master to revoke permissions from Google Services Framework.

If you’re even more paranoid, don’t forget to delete your Google account from your device each type you’re done with Play ๐Ÿ™‚

Additional packages worth mentioning

Before stripping GApps, you might consider using another nice feature (introduced with Android 4.1 I think) – offline voice typing. It provides robust voice recognition that doesn’t phone home and works without network connection.

To use it, just leave the VoiceSearchStub.apk within the system\app\ folder of GApps before you flash it.

Update (2013/04/29): This seems to work at first (you can download the offline dictionaries and tab the microphone button) but then the actual voice recognition doesn’t work. Epic Fail!

It’s much more easy to just install the Google Search App via Google Play (once you have got it installed as described above). It includes the option for downloading offline dictionaries and using the voice recognition.

And again, if you’re a bit paranoid, better stop the App from phoning home –ย  using for example LBE Security Master. ๐Ÿ˜‰