OnePlus One

Tuesday, May 5, 2015 @ 10:31 am

I’m probably one year late to the party, but in mid-April I decided to order a OnePlus One (OPO) phone (64GB version). In this post, I will describe how I’ve customized (and optimized) it and hopefully someone out there finds it entertaining/useful/informative! Here we go 🙂

Ordering The Goods

I ordered it on Saturday, April 11, paying $538.31 CAD (taxes/shipping included).

I do spoil take care of my electronics, so I also ordered:

a Diztronic Ultra TPU Case (Matte Black)

an Orzly Tempered Glass Screen Protector

a dbrand Black Carbon Sticker (to stick on the back of the Diztronic case)

All of the above products were well-reviewed on Amazon and Reddit (/r/oneplus), which I made sure to read through to make an informed decision.

The Arrival

Everything but the case arrived on Thursday, April 16 (pro-tip: when you order a dbrand sticker, you have the option of ordering 3 camera stickers. If you buy a back sticker, it automatically comes with a camera sticker (which they don’t mention). You can save $2.):

Now some of you may laugh at me, but I did the following to ensure the camera did not scratched/get dust underneath while I patiently waited for my case:

The case finally made an appearance on Monday, April 20:

Dressing Up The Phone

I put the tempered glass on the phone first. This was a very stressful time in my life as I wanted to ensure there was no dust underneath. It was so stressful that I didn’t take any photos. Pro-tip: leave a vacuum running above your phone while you install the screen protector instead of turning your attention to your clothes.

I then worked on the case and the back sticker. To install the back sticker, you have to carefully align it with the back of the case, press it down the centre and then comb outwards with your fingers. Then you have to blowdry the edges and then press them down for it to sculpt to the back (pro-tip: do not have your phone in the case when you blowdry it down). The sticker is absolutely optional; I just really liked the look and texture of the carbon.

The camera sticker was a bit tricky to add due to not having much to work with, but relative to the above two installations, it was the simplest.

The end result:

Now that the phone is nicely dressed up and safe, I can start playing around with it.

Pro-tip: put a $20+ paper bill (not the new plastic, it’ll probably melt over time) behind your phone before you put on your case. I do this in case I lose my wallet and all other possessions but my phone, so that I can take a cab ride if necessary.

Getting Started

The OnePlus One comes unlocked and compatible with pretty much all the major carriers in Canada. I simply had to pop in my SIM card from my old phone (I temporarily took off the case to do this):

It’s shipped with a customized version of Cyanogenmod (CM), an operating system (rom) for Android-devices (Samsung’s TouchWiz is another operating system, just as an example. Another newish one is Oxygen.). My phone came preloaded with build XNPH05Q (shortform: 05Q), which is the last CM11s (KitKat) build before OnePlus focused on its Lollipop operating system (aka 12s, or Android 5.0/5.1).

Without going into too much detail, I booted up the phone, set up my Google account, and I was all set to explore. Note: if you do plan on installing a custom recovery, you will want to hold off on setting up your phone until you unlock the bootloader. More info on this below.

Show battery status percent: **ticked** (I like knowing how much battery life is left)

Settings => Display & lights:

Adaptive backlight: **unticked**

Double-tap to wake: **ticked** (I love this feature on the OPO)

Prevent accidental wake-up: **ticked**

Wake on plug: **unticked**

Notification lights: I enable custom notifications and set it so the notification light colour matches the icon of certain push apps (e.g. green for Whatsapp, blue for Twitter), so that from a quick glance I can tell if it’s a text message versus a Whatsapp message.

Pushbullet – quickly push content to and from your device to other devices (e.g. your computer, tablet). Get notifications from your phone on your computer (and be able to reply to messages from certain apps from your computer)

Sector Strike – perhaps the one game I play the most often (usually when there’s a subway delay)

Servicely (root) – this app kills service/apps once your screen goes off. **Currently testing it out to see if it conflicts/duplicates Greenify or Power Nap, but the 3 of them seem to be playing nicely together**

Sleep As Android – this has become my alarm clock app, and it also allows me to keep track of my sleeping cycles and history

Tasker – I use this to create custom rules/actions based on what I do with my phone (e.g. disable my lock screen when I’m at my desk at work and re-enable it when I leave my desk, automatically turn on GPS when I open Google Maps and automatically disable GPS when I exit it)

Titanium Backup (root) – if you like trying out different roms and do clean installs, this app is invaluable in terms of saving you time from having to download and re-configure all your apps. This app backs up your apps and personal app settings.

XPrivacy (root/xposed) – prevents apps from leaking sensitive data about you/your phone by either blocking the functionality or serving the app spoofed information. I don’t have peace of mind without this app installed and set up.

You may have noticed I marked some apps as root: this means your phone needs to be rooted in order for the app to function properly.

From this point on, this post is going to get technical pretty quickly as the next step is customizing the phone and rooting it.

What is rooting and what are the benefits?

To root your device means to get full access. This lets you install apps that require root access I mentioned above such as AdAway (blocks in-app ads), Greenify (perhaps the best battery-saver app), Titanium Backup (backs up all your apps and settings so you can quickly import everything when/if you install a new operating system), and the Xposed Framework which I’ll get into later.

Two more awesome battery apps are: Power Nap and Servicely. (I used to use Amplify, but its since been replaced by Power Nap and Servicely)

The one thing the apps I mentioned have in common is: they all modify system behaviour. They are able to access/modify things that non-root apps can’t.

In short, if you are perfectly happy with your phone without rooting it (in other words, staying with stock), you do not need to root your phone. You can skip the next 2 sections directly to “KitKat vs Lollipop“.

Unlocking the Bootloader and Rooting It

In order to be able to flash custom scripts/apps/recovery binaries (fun stuff!), you’ll need to unlock the bootloader (to install a custom recovery binary such as TWRP or CWM). For this I used Bacon Root Toolkit:

After installing the proper drivers and downloading the required ZIP files, it pretty much automatically flashed the right things to my phone and also handled all the rebooting into recovery/fastboot modes.

I am now able to install custom kernels and roms.

Pro-tip 1: unlocking the bootloader will wipe your phone, so you’ll want to do this before you set up your phone.

Pro-tip 2: after you successfully install a custom recovery binary, make a nandroid backup right away and copy it to your computer. It’s invaluable because it basically is an exact copy of your entire phone (the recovery, system, data, cache, modem, radio partitions) that you can revert to if needed.

Pro-tip 3: to boot into recovery on the OPO – with your phone shut down, hold down volume down and power and then release the two buttons when your phone vibrates once.

What I Tested on the OnePlus One

I stuck with the pre-installed CyanogenOS 11s (build 05Q – Android v4.4.4 – KitKat) for a week before giving into the temptation of flashing a kernel to replace the stock kernel in hopes of getting as much battery life out of it as possible. I decided to first flash Franco’s Kernel (since it was 11s, the latest stable release is currently r35).

Franco’s kernel is essentially “flash-and-forget” in comparison to the second kernel I decided to try out a week later: Boeffla’s Kernel. Another very popular one is AK’s Kernel. For the OnePlus One, Franco, Boeffla, and AK are the most popular custom kernels.

Boeffla provides a configuration app where you can control things such as the clock speeds of your device, all the way down to how much voltage should occur at which clock speed (i.e undervolting/overvolting, which can be dangerous). Undervolting may make your device run cooler, but in the end it may make your phone more unstable (e.g. choppy audio), and it only saves you maybe 3-4% of battery life in total. I ended up following the configuration settings from this post.

I don’t really play games on my phone, so my focus is more on battery life than performance. While I do like the control Boeffla’s configuration app provides, I appreciate Franco’s simplicity.

After playing around with different kernels on 11s, I got curious about Lollipop and decided to flash the Exodus rom based on its rave reviews on the OnePlus forums. I kept the kernel it came with and I used it for 4 days. I didn’t like the Lollipop experience (explained in the next section).

I am now currently on CM11s build XNPH44S (shortform: 44S) because 44S is said to have better battery life versus 05Q (the one that came installed on the OnePlus One).

KitKat vs Lollipop

Over the past 4 days I was on Lollipop (CM12), I noted a couple of shortcomings:

the removal of the autobrightness feature

an over-simplified battery statistics section that only forecasts battery life using an inaccurate algorithm that assumes you’ll be using your phone non-stop until the battery runs out

a lock-screen that requires you to swipe up before entering in your password/pattern (which adds one extra step)

issues with swiping, leading to me having to really press down on the screen

slower system boot-up times

severe incompatibilities with the Xposed Framework (particularly the XPrivacy privacy manager app which I can’t use my phone without)

it caused one of my favourite camera apps (Camera Zoom FX) to have a bug where the screen would show the camera in focus, but when I took photos, the photos looked like they came from a Geocities website in the 1990s. To work around this, I had to install ColorOS Camera/OppoCamera.

battery life was generally poorer than KitKat

reports of Bluetooth issues (especially in-car)

Some good points about Lollipop:

the phone definitely felt snappier and faster in general

the centralization of the drop-down notifications drawer and the quick tile settings panel made it easy to access either or

the GPS felt quicker to lock

under-the-hood improvements (e.g. security/performance)

For me – maybe being a “power user” – I prefer KitKat over Lollipop.

I love the lockscreen in KitKat, the stability and battery life, autobrightness, how compatible it is with different apps and frameworks, and the battery statistics screen. I did notice how Lollipop was faster, but my personal preference goes towards KitKat.

With the help of my trio of battery-saving apps – Greenify, Power Nap and Servicely – I’m experiencing only a 0.1%-0.2% battery drain when idle (last night I took my phone off the charger at 100% and slept around 10pm, when I woke up at 4am (around 6 hours), it was at 99%).

To get the three playing nicely with each other, I had to configure each as follows:

Greenify: made sure I did not hibernate Power Nap or Servicely (or my alarm/music apps)

Power Nap: added Greenify and Servicely to the whitelist (as well as my alarm/music apps)

Servicely: made sure I did not add Greenify or Power Nap to the hit-list (as well as my alarm/music apps)

On the 40 minute commute down to work today (light browsing and listening to music the entire way down), the battery was at 96% when I got to my desk.

I’m going to do more tests with the battery (and take screenshots), but I am extremely happy with the CM44S + Franco Kernel r35 combination 🙂