Android without Google (Part 1: Installing CalyxOS)

For a couple of years already I like to get rid of Google on my Android powered smartphone. Though I think that technically Google’s services cannot be outmatched: they just work, are easy to use and from what I understand pretty secure, they’re not really coming for “free”: you will “pay” with your data. Unfortunately there is no real good alternative when it comes to smartphones. You could go with Apple if you don’t mind being locked into Apple’s ecosystem (besides I’m not sure if you’re better off with Apple in terms of privacy). So far I never called a smartphone my own which was actually well supported by alternative Android ROMs like LineageOS for example. The phones which are best supported by custom ROMs are part of Google’s own Pixel lineup. It’s kind of funny when you think of it: if you want to remove Google from your phone, get a phone by Google… Anyway, I really wanted to check this out now so I got myself a second hand Google Pixel 3a for testing purposes.

Before you consider switching to a custom ROM you should be aware that you will gain privacy/security but of course you’ll trade in some conveniences offered by Google’s services. You might need to search for alternative apps or even lose some of your accustomed apps. I will go into more detail later. So if you want to remove Google’s services from your phone make sure you really don’t use/rely on them… 😉 Say goodby to Google Pay, Google Assistant, Google Drive, Duo, Gmail/calendar/address book. But this of course is the whole point of it.

I first tried LineageOS. It is supporting quite a large range of phones and is a quite famous custom ROM. However, I did not really like it: there were issues with the updater as it always found an update, downloaded a new image, tried to update – but actually did nothing. This might have been solvable, but I did not look into it. The thing which from my perspective was worse: you cannot re-lock the bootloader once Lineage is running on your phone. So I re-flashed Google’s stock ROM back on the device and decided to give CalyxOS a try.

Let me sum up the main advantages of CalyxOS:

I guess if you’re looking into replacing your current Android ROM with a custom one you’re probably already acquainted with F-Droid: it’s an alternative app store covering open source software only.

microG is kind of an open source replacement for Google Play Services. It might come in handy in case you’d like to run apps which require Play Services. In case you do not need those kind of apps, you can simply uncheck microG during first setup (be aware: you cannot activate it later, you have to reset the device then!)

Aurora Store is a really neat little app: it will let you install apps from Google’s Play store without actually requiring you to login with your Google account. See some more details here.

Installing CalyxOS

Let me point out first that I installed CalyxOS running Debian 10. It should also work for any other Linux distro or even Windows or MacOSX (but having privacy concerns it makes no sense running a proprietary OS on your desktop 😉 ) So I can only tell from my experience using Debian.

You’ll find the list of supported phones (basically all current Pixel phones) and downloads here. Fetch the zip file matching your phone. Once downloaded please do make sure that sha256 sums match! Easiest way:

$ sha256sum <file> | grep -i --color <sha256_sum_listed_on_website>

Next download the device-flasher script for your OS from here (again: do check sha256 sums!). You will also find instructions on how to install CalyxOS there (which I basically just repeat here). You do not have to download the Android developer tools or play around with udev rules like you would have for other custom ROMs. The flasher script will take care of everything and will prompt for all steps you’ll have to do manually.

Prepare your phone:

  • update to latest Android patch level
  • backup everything you don’t want to lose to you’re computer (all data will be erased from your phone)
  • remove your SIM card/eSIM (Take care of a new eSIM profile before you actually delete the old one – get in touch with your provider for details.)
  • probably reset the phone to factory settings
  • connect the phone to WLAN (not sure why, but the flasher script will tell you to)
  • connect your phone via USB port to your computer

Now create a temporary directory and put both files (the zip containing the CalyxOS image and the device-flasher script) into this directory. DO NOT unzip the image file, leave it as is.

Once you followed this, open a terminal, switch to the temporary directory and off you go:

$ chmod +x device-flasher.linux
$ ./device-flasher.linux

The script will tell you exactly what to do. Basically it will:

  • download & verify Android platform-tools
  • ask for your sudo password (if your user does not have full sudo privileges, you’d have to run the script as root)
  • tell you how to prepare your phone (enable OEM unlocking & USB debugging)
  • flash your phone with CalyxOS

All the steps which you’d have to do manually are pointed out. I’ve saved the output (removed progress details though):

$ ./device-flasher.linux 
 Android Factory Image Flasher version 1.0.3
 Extracting sargo-factory-2021.05.05.12.zip
 Downloading https://dl.google.com/android/repository/platform-tools_r30.0.4-linux.zip
 Downloading… 9.5 MB downloaded   
 Verifying platform-tools_r30.0.4-linux.zip
 Extracting platform-tools_r30.0.4-linux.zip
 [sudo] password for <USER>: 
 1. Connect to a wifi network and ensure that no SIM cards are installed
 2. Enable Developer Options on device (Settings -> About Phone -> tap "Build number" 7 times)
 3. Enable USB debugging on device (Settings -> System -> Advanced -> Developer Options) and allow the computer to debug (hit "OK" on the popup when USB is connected)
 4. Enable OEM Unlocking (in the same Developer Options menu) 

 Press ENTER to continue

 Detected sargo XXXXXXXX

 Devices to be flashed: 
 sargo XXXXXXXX

 Press ENTER to continue
 Unlocking sargo XXXXXXXX bootloader…
 5. Please use the volume and power keys on the device to unlock the bootloader
 Flashing sargo XXXXXXXX bootloader…
 .
 . <LINES REMOVED HERE>
 .
 Finished. Total time: 153.244s
 Rebooting into bootloader                          OKAY [  0.000s]
 Finished. Total time: 0.201s
 Locking sargo XXXXXXXX bootloader…
 6. Please use the volume and power keys on the device to lock the bootloader
 Rebooting sargo XXXXXXXX…
 7. Disable OEM unlocking from Developer Options after setting up your device 
 Flashing complete

Your phone will boot a couple of times and at each numbered step you’ll have to navigate on the phone doing what the script is telling you to. The complete process took about 3 or 4 minutes. When enabling USB debugging (step 3), check your phone for a pop up asking if you’ll trust your computer (hit “OK” of course). IMPORTANT: please make sure to follow the last step 7: disable OEM unlocking again! Once the phone is booting CalyxOS for the first time go through the setup steps and once done go to Settings -> About Phone -> tap “Build number” 7 times and then to Settings -> System -> Advanced -> Developer Options and DISABLE OEM unlocking (and even developer options).

That was basically it. Welcome to CalyxOS!

(There will be a follow up to this post giving some insights I gathered so far while using CalyxOS.)