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.

Specs on the OnePlus One:

  • No external MicroSD port
  • Uses Micro SIM Card
  • 64 GB storage, 3 GB RAM
  • Non-removable battery
  • 1080 x 1920 pixels resolution
  • (see full specs here)

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.):

Screen protector, sticker, and phone arrived, but no case.

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:

Yup, I put tape over the camera to avoid dust getting in.


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:

Behold. The case nicely protects the screen (and tempered glass) with a small "lip".

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):

The ever-handy paperclip.

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.

Three excellent links in regards to the OnePlus One:

What I Like to Set

With the OnePlus One, I like to make the following setting changes:

  • Settings =>¬†Security => Owner Info: I input my email address in case I lose my phone
  • Settings => Wi-Fi => **menu** => Advanced:
    • Keep Wi-Fi on during sleep: “Only when plugged in”
    • Wi-Fi optimization: ticked
  • Settings => Gestures: disable all of them
  • Settings => Status bar:
    • Battery status style: circle
    • 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.

I set the DPI (dots per inch) to 400 (default was 480) using¬†texdroider_dpi because it’s the value that’s optimal for the OnePlus One screen size and resolution. I’ve copied and pasted the mathematical explanation below:

Pythagorean theorem: a2 + b2 = c2

Screen’s resolution: 1920×1080

So: 19202 + 10802 = c2
3,686,400 + 1,166,400 = c2
4,852,800 = c2
2,202.90717 = c

This means there are approximately 2203 pixels diagonally on the screen.

The screen is 5.5″ diagonally.

So: 2,202.90717 / 5.5 = 400.5285764 pixels per inch

So the real world dpi of the screen is 401, so 400 is a good estimate.

Things I Have Installed

If you’re curious, below is what I have installed on my phone. You don’t need to read through it all!

Most frequently used:

  • AdAway¬†(root) – block your phone from connecting to ads/unwanted things
  • Camera ZOOM FX¬†– a feature-rich camera app that allows me to accept or reject shots
  • CPU Spy¬†– helps me keep track of my phone’s deep sleep and activity
  • ES File Explorer¬†(root recommended) – best file manager out there
  • FreeOTP¬†– an open-source, ¬†customizable two-factor authentication app I use
  • GPS Test¬†– probably the best GPS diagnosis/testing app out there that shows you in-depth detail of your phone’s GPS functionality
  • Greenify¬†– add apps to “hibernate” when your screen is off to save battery
  • Greenify (Donation Package)¬†– ^ optional, but unlocks additional features
  • Instagram
  • Keep¬†– I use this to manage my schedule and tasks
  • Mosquito Sound¬†–¬†I’m actually not sure about this one, I want to see if it works but I’m kind of hesitant. It supposedly repels mosquitos by playing high-pitched frequencies
  • MX Player¬†– best video player in my opinion
  • Naked Browser¬†– naked as in minimalistic and fast, not as in…
  • Nova Launcher¬†– my favourite app launcher
  • Nova Launcher Prime¬†– ^ paid for it
  • OpenVPN for Android¬†– turned my home router into an OpenVPN server and I use this app to connect to it when I’m on public wi-fi to make sure my data is safe
  • OppoCamera¬†– in my opinion a worthy replacement of the stock Camera app
  • Photo Grid¬†– a nice photo collage app
  • Power Nap¬†(root/xposed) – prevents apps from waking up your phone and very effective at saving battery
  • Poweramp¬†– my favourite music player
  • Poweramp Full Version Unlocker
  • 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)
  • QuickContact¬†– one-tap access to the¬†new contact creation screen
  • QuickPic¬†– a very fast and customizable photo gallery
  • RedPhone¬†– for encrypted phone calls (re:NSA, endorsed by Edward Snowden)
  • SD Maid¬†(root) – I use this to periodically clean my phone
  • 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
  • Sleep As Android Unlock
  • Snapchat
  • SNAPPREFS¬†(root/xposed) – customize Snapchat (I use its unlimited caption text tweak)
  • SwiftKey Keyboard
  • Sync¬†– my favourite Reddit client
  • 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)
  • texdroider_dpi¬†(root)
  • TextSecure¬†– in my opinion everyone should switch to this for their texting app (I’ve personally disabled the passphrase option) (re:NSA, endorsed by Edward Snowden)
  • TimePlay¬†– have to get those Scene points!
  • 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.
  • Titanium Backup PRO
  • Transit Now Toronto Lite¬†– best TTC app I’ve come across
  • Translate¬†– I have this installed in case I’m travelling and need to communicate with locals
  • Tresorit¬†– I’ve replaced Dropbox with Tresorit for more security (re:NSA)
  • Twitter¬†– my main way of keeping up to date on the latest news and stories
  • Uber¬†– a very handy app/service to have
  • Weather¬†– I’ve tried various weather apps, this one stayed on my phone
  • WhatsApp¬†– quite possibly¬†the defacto instant messaging service
  • Xposed Installer¬†(root) – makes apps such as XPrivacy and SNAPPREFS possible
  • 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.

Other apps:

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:

The toolkit in action (rooting my phone)

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.

In summary, I will remain on KitKat indefinitely.

What I’m Running

  • CyanogenMod version: 11.0-XNPH44S
  • Android version: 4.4.4
  • Baseband version: MPSS.DI.2.0.1.c7-00020-M8974AAAAANPZM-1
  • Kernel version: Franco Kernel r35 (using stock settings provided by Franco)
  • Launcher: Nova Launcher
  • Icon Theme: Moonshine
  • Default Text Messenger: TextSecure

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 ūüôā