It is an article of faith that when we buy a mobile phone, we are the owners of the device. Nonetheless, it is worth asking what does ownership really mean? We certainly can use the device to make phone calls, browse the internet, take photos and all the other advertised uses of the device.
The maker of the operating system, the manufacturer of the device and the cellular network provider decide what software comes preinstalled on the device and its default configuration. Most people are content to use a mobile phone straight out of the box with the preinstalled software. They may add more software that they find in a repository such as the Google Play Store or Apple Store, but they don’t question whether that preinstalled software should be on their phone and what settings they are allowed to change on their phone.
However, are we truly the owners of our phones, if we can’t uninstall that preinstalled software and there are settings that we are prohibited from changing? There are all sorts of things that we as users are prevented from doing with the mobile phones that we supposedly own.
The maker of the OS, the phone manufacturer and the cellular network provider add features that we may not want and impose all sorts of arbitrary restrictions on our phones that that we didn’t ask for. It is often the case that the goals of these companies are fundamentally at odds with our interests as users of mobile devices.
Google designed Android as a means to vacuum up as much personal data about users as possible, so that it can construct a profile about the preferences, habits and contacts of each user in order to better target its advertising. Apple designed iOS as a means to trap users in the Apple ecosystem, so they will buy more Apple products and use more Apple services. The phone manufacturers want to induce users to consume phones more rapidly, so they design their devices based on planned obsolescence with only a few years of support. Some of these companies such as Google, Apple, Samsung and Huawei are also sucking up user’s personal data to better train their artificial intelligence, in order to gain a competitive advantage. If phones are offered by cellular providers, they are often designed to lock the user into a single cellular network and its services. The companies that make the software apps often are trying to lock users into a service or suck up their personal data to monetize it.
Do we truly own our mobile phones, when they were designed for purposes against our own interests?
Some people fully embrace the goals of the companies who provide our mobile phones. Apple fans will tell you that they don’t mind living in a walled garden controlled by Apple, because they like how Apple manages that garden, and they don’t mind the high price that Apple charges to enjoy the wonder of its garden. Many users of services from Google and Facebook have concluded that their personal data is a small price to pay for all the wonderful services that they get in return, such as free email, free apps, free social media, free news and entertainment, free navigation, etc.
However, the vast majority of us are only vaguely aware of these companies’ goals and have little idea about how companies are achieving their goals at our expense. Most people know on some level that Google uses their own data to direct advertising their way, but most are shocked when they go to https://myactivity.google.com and discover exactly how much information Google has been collecting about them. There is growing public awareness about surveillance Capitalism, as Shoshana Zuboff has termed it, but other goals such as planned obsolescence and vendor lock-in are often less understood by the public.
I recently went through the saga of trying to unlock the bootloader on a Xiaomi Redmi Note 7 that I bought last week. What should have been a simple operation that took me 5 minutes ended up taking me five days. I recount this frustrating tale because it makes me realize how little I actually owned the phone.
In order to install LineageOS, I needed to unlock the bootloader on the Redmi Note 7. I have done this procedure on other phones, so I assumed that it wouldn’t be too difficult. I was in for a surprise.
Before buying the phone, I checked to make sure that the manufacturer allowed the bootloader to be unlocked and that a good LineageOS port existed for the phone, so I didn’t think that it would be too much trouble to unlock the bootloader.
I went to http://www.miui.com/unlock/index_en.html and clicked on the “Unlock Now” button. I was redirected to a login screen in Chinese. I didn’t notice the link at the bottom for the English version of the page. People who don’t speak English or Chinese seem to be out of luck. Instead, I started clicking randomly until I found a link to register. I managed to do that with the help of Google Translate, but then that directed me to a forum in Chinese.
Finally, I gave up and went back to the original login page, where I noticed the Google and Facebook logos, so I figured that I could login by using one of those two accounts. I chose Facebook as the lesser of two evils, since I give Facebook less information about myself. Facebook seems to have told Xiaomi that I don’t speak Chinese, because it directed me to a page in English with instructions how to unlock my Xiaomi device. I was instructed to download the Mi Flash Unlock Tool program, but it only runs in Windows. Users of Linux, BSD and MacOS are out of luck.
I download the Mi Flash Unlock Tool program and tried to run it with Wine in Linux, but it didn’t want to work that way. I discovered on the XDA-Developers forum that someone had managed to extract the core part of this tool and had made a proprietary version that can run in Linux and MacOS. I downloaded it, and it seemed to run, but of course it didn’t work because I hadn’t enabled USB debugging on the phone.
I couldn’t figure out how to find the USB debugging option on the Redmi Note 7. On most phones, you have to go to About Phone in Settings and touch the Build Number seven times to enable the hidden Developer Options, but Xiaomi doesn’t have the Build Number. After some Googling and switching the interface of the phone from Spanish to English, I finally found that you have to touch MIUI Version seven times to enable Developer options.
After that, the Mi Flash Unlock Tool was finally able to communicate with the Redmi Note 7, but not when the phone was running normally. The phone needed to be in Fastboot mode, which is entered by booting while holding down on the Volume Down and Power buttons at the same time.
After doing that, Mi Flash Unlock Tool finally gave me the following error message:
[12:25:44][ERROR ] Unlock request replied with error code 20035
[12:25:44][ERROR ] Error meaning: Please download the latest version
After hunting though the XDA-Developers forum thread, I finally found this helpful message which explained the problem:
It seems that in the past week Xiaomi disabled all the old versions of the official MiFlashUnlock Tool, including the version that our friend (topic author) used to build his Linux/Mac tool.
The guy who figured out how to extract the core part of the tool and make it run in Linux and Mac was no longer answering any questions on the forum and he hadn’t left any instructions how he had done it, so nobody was able to create an updated version with the latest Mi Flash Unlock Tool from Xiaomi.
I noticed that there was another version of the software, called XiaoMiTool V2, so I downloaded it as well, but it didn’t run. After some googling, I figured out that I lacked a Java library, and after installing that it seemed to run. When I put the phone in FastBoot mode and connected it to my laptop running Linux, it gave me this error message:
There was an error during the installation producedure.
Error type: xiaomi_exception
Error description: Xiaomi procedure failed: Invalid input argument: null product
Advanced error details: Xiaomi procedure failed: Invalid input argument: null product
InstallException - xiaomi_exception - Xiaomi procedure failed: Invalid input argument: null product
at com.xiaomitoo.v2.procedure.install.FastbootInstall $4.run(Unknown Source)
at com.xiaomitoo.v2.procedure.Rinstall.runInternal(Unknown Source)
at com.xiaomitoo.v2.procedure.RNodeSequence.run(Unknown Source)
at com.xiaomitoo.v2.procedure.RNode.runInternal(Unknown Source)
Seeing as there was no way to get Xiaomi’s software to run in Linux, I wasted 4 hours downloading a 90-day trial version of Windows 10 from the Microsoft web site, and installed in VirtualBox. After two years of only using free software on my laptop, being forced to install all this proprietary garbage really made me angry, but I figured that I could uninstall it soon enough.
I spent 3 hours trying to figure out how to get Mi Flash Unlock Tool running inside a Windows virtual machine to interact through the USB port with the phone. I added VirtualBox’s proprietary USB extensions and tried all sorts of random tricks that I found on the internet. No matter what I tried, nothing worked.
Since I had some consulting work to do that required that my laptop was working normally, I gave up for 3 days. Finally, I found a free day where it didn’t matter if I had a working laptop or not.
I tried installing the 90-day trial of Windows 10 in a small SSD caching drive on my laptop, but Windows 10 refused to install in any partition of less than 30 GB, although the Microsoft web site insists that it only needs 20 GB.
My only option was to shrink down one of my existing Ext4 partitions in order to make room to install stinking Windows. I was scared to do that without first making a complete backup of all the important files, which took another 3 hours. Then, I shrunk down the Ext4 partition and created a new NTFS partition for Windows. After wasting a DVD to burn a Windows installation disk, I installed Microsoft’s 90-day trial in the new partition. I found all the information that Microsoft wants to collect about me to be totally outrageous, and turned off all those invasive options.
When I ran Xiaomi’s Mi Flash Unlock Tool in Windows 10, it still couldn’t communicate with the Redmi Note 7 over a USB cable. I was about to give up, until I discovered the xiaomigeek.com site which offers USB drivers in Windows for talking to Xiaomi phones. The site appears too well maintained for it to not be provided by Xiaomi, but since it doesn’t officially come from Xiaomi, the company doesn’t have to provide official support for any of the solutions on the site. At any rate, installing the proprietary USB drivers from XiaomiGeek did the trick.
Now Mi Flash Unlock Tool was able to communicate with the phone, but it told me that it couldn’t unlock because my phone didn’t have a SIM card installed. Why does a phone need a SIM card to unlock the bootloader?
I didn’t want to transfer the SIM card from my old phone until I had the new phone set up and running LineageOS, but I had no option but transfer it. Unfortunately, the phone company only allows me to use the SIM card in a new phone for more than 1 day, before it shuts off the SIM until it is properly registered with the new phone. I tried to register the new phone online with the transferred SIM card, but that didn’t work for some reason. I was forced to go to the office of the phone company to register the phone, but the office was shut down that day, because there were violent protests in the street. (I live in Bolivia which is currently in the middle of a coup d’etat.) I went back the next day, and the offices were still closed, but I found out that one office was still open on the other side of town, so I wasted 1.5 hours going there and back to register the phone.
Finally, with a working SIM, I connected the phone to my laptop running Windows 10. This time the Mi Flash Unlock Tool told me that I hadn’t registered the phone number with my Xiaomi account. I had to login to the Xiaomi web site and go through a complicated procedure, where it first sent me a verification code to my email account that I had to then enter into my Xiaomi account. Then, I was able to enter a phone number to which it sent a code in an SMS to the cell number on my phone. After entering that code into Xiaomi account on the web site, it informed me that I had registered the cell number.
After going through that whole rigmarole, I ran the Mi Flash Unlock Tool again. It then presented me with this terrifying dialog box:
An unlocked device is an easy target for malware which may damage your device or cause financial loss.
There was a 10 second timer, so I couldn’t mindlessly click through it. Then the button appeared in the dialog box: Unlock anyway?
A more accurate way to ask that question would be:
Do you prefer using a fascistic device filled with spyware which collects and monetizes your personal data or do you prefer the freedom and risk of controlling your own technology rather than letting it control you?
To add insult to injury, I was presented with a second scary question whether I wanted to delete all my personal data on the phone since unlocking the bootloader would return it to its original factory configuration.
Oh, and by the way, I am also losing the warranty to my phone as well, so I better cross my finger and pray that the hardware doesn’t have a problem, because Xiaomi knows that I am one of the black sheep that refused to be part of the mindless herd using its preinstalled operating system. Since the phone is now in Xiaomi’s files as having an unlocked bootloader, even if I reinstall Xioami’s original software, the company can deny my warranty claims.
I wondered where was the option to simply unlock the bootloader without deleting all my personal data and losing my warranty, but apparently I don’t get that choice, because when I buy a phone, I am apparently agreeing to live under the imposed fascism of Google, the phone manufacturer and the cellular provider. If I truly want to own the device and not have it be used as a tool of surveillance Capitalism against me, then I have to agree to destroy all my personal data and give up all my warranty claims. The mobile phone industry really doesn’t want me to escape their iron grip over my phone.
After doing all that, I expected that all my personal data on the phone would be wiped, but instead, I was informed that my phone was still locked. I was told to go to Settings > Additional Settings > Developer Options > Mi Unlock status and click the option Add account and device in order to unlock the phone. So I took the phone out of Fastboot mode and rebooted it into normal mode to use that option.
When I clicked on Add account and device, however, I was informed that it had to connect to Xiaomi by using a cellular data connection, and it couldn’t use the WiFi connection to access the internet. Since I normally only use Wi-Fi to access the internet, I had to go out and buy a phone card to give me some temporary cellular data.
Returning home with the card, I spent 15 minutes trying to figure out which SMS message I had to send to the phone company to buy 55 MB of cellular internet data. After I figured that out, I was finally ready to add the device under Mi Unlock status.
At last the magical moment had arrived when the bootloader should have unlocked, but instead, I was told that I would have to wait 168 hours (7 days) before it could be unlocked.
I had read that Xiaomi would make me wait anywhere from 3 to 15 days, but at this point I was so disgusted with the whole process that I wanted to throw the blasted device out the window and scream obscenities at the entire mobile industry for making me do all this bullshit just so I can escape their technological straitjacket.
Of course, I still had the problem that Microsoft refuses to acknowledge that any other operating system exists and it had overwritten the bootloader in the Master Boot Record of my laptop. I had an old Mint Live CD from 2014 sitting in my desk, so I rebooted the laptop with that.
Then, I tried to mount the partition where I have Debian 10 installed, but it couldn’t mount. I checked
dmesg and found errors about unrecognized features in the Ext4 partition. I realized that my Live CD was too old to be able to mount a recent Ext4 partition.
So I rebooted into Windows, and downloaded a Live CD for Debian 10 which took 3 hours with my slow internet connection and burned it to a DVD. When I booted it up, I was able to mount the Linux partition, that holds
/boot/grub. However, I discovered the Live CD didn’t have the grub2-common package, so I couldn’t run
grub-install to rewrite the Master Boot Record. Why Debian would make a Live CD without including
grub-install is beyond me, but the only option was to download it from the internet. Unfortunately, my Wi-Fi didn’t work, because I forgot that I needed proprietary Intel firmware for my Wi-Fi card to work.
In order to solve that problem, I had to go find a version of the Live CD that included proprietary firmware and spend another 3 hours downloading it. Using that Live CD, I was able to issue the following commands to install grub 2:
sudo su -
apt install grub2
Installing grub2 will make Debian automatically try to overwrite the Master Boot Record, but it will fail since a Live CD doesn’t mount the hard drive and doesn’t know which partition holds grub.
To fix that problem, I used the following command to find out what partition has grub:
Then, I mounted that disk:
mount -t ext4 /dev/sda5 /mnt/debroot
Finally, I was ready to overwrite the Master Boot Record:
grub-install --boot-directory=/mnt/debroot/boot /dev/sda
Wonderful! Now my laptop is back to normal, except that I have now wasted 40 GB of my drive on Windows 10, which is basically glorified spyware.
How does the phone industry justify making people like me go through this kind of torture just to unlock the bootloader on their phones? I might have paid for the device, but this entire rigmarole shows me that in no way do I actually own it.
At any time, Xiaomi has the power to deny me the ability to unlock the bootloader. This means that Xiaomi can force me to accept the preinstalled software and the factory configuration, even if it works against my own interests without my consent. I can’t install the operating system of my choice without Xiaomi deciding to allow it. We are at the mercy of the phone manufacturer, as Huawei demonstrated in May 2018 when it arbitrarily decided to stop providing unlocking codes for its mobile devices.
When I bought my Redmi Note 7, it was still possible to unlock its bootloader using a modified version of Xiaomi’s proprietary software in Linux, but Xiaomi arbitrarily decided to stop allow unlocking via older versions of its software. Some of the better manufacturers such as Google, OnePlus and Razer allow people to unlock the bootloader using the open source fastboot command which can be run from any operating system on their PC.
The amount of time Xiaomi decides to make people wait to unlock their phones appears to be totally arbitrary and unpredictable, so customers can’t know how long it will take when they buy the phone. When people complained that Xiaomi was making some people wait up two months to unlock the bootloader on their phones, Xiaomi announced in September 2018 that it would lower that time to 3 days for the Poco F1, and its Android One phones are also getting shorter wait times. Otherwise, it appears to be a crap shoot for other Xiaomi models which can be anywhere between 3 days and 30 days according to some secret decision at Xiaomi.
Xiaomi claims that it is necessary to impose these arbitrary wait times on unlocking the bootloader “because some unofficial retailers install malware or buggy software on Xiaomi hardware and sell them in other markets.” The XiaomiGeek site, which appears to be Xiaomi speaking unofficially, reported in November 2017 that Xiaomi had decided to lock the bootloader on all future devices:
Why is Xiaomi doing that? They are doing this due to security reasons. They wanted to ensure the safety to the device if your device gets lost or stolen by someone.
I might buy Xiaomi’s argument that all this hassle is necessary for security, except that ASUS, BQ, Essential, Fairphone, LeEco, Google, OnePlus, Razer and WileyFox all allow the bootloader to be unlocked without requiring authorization from the manufacturer and without imposing any wait period on the user. In addition, Alcatel, Archos, Elephone, Samsung, Tecno and ZTE have offered immediate unlocking on select models without authorization and without wait periods. Other phone manufacturers, such as HTC, LG, Nokia, Realme and Sony require authorization but they unlock the bootloader immediately if the phone model allows it. The only manufacturer that has a similar policy to Xiaomi is Motorala/Lenovo which makes customers wait between 1 hour and 14 days to unlock the bootloader, but Motorola doesn’t require the user to install special proprietary software in their PC like Xiaomi and I found the process relatively easy and straight forward when I unlocked a Moto X Pure Edition several years ago.
Despite all my criticisms of Xiaomi, the Redmi Note 7 was the best option that I found when I went shopping for a mid-range phone that is compatible with LineageOS. Roughly 90% of the new phones for sale where I live are made by Huawei, Samsung or Xiaomi, and of those three brands, only Xiaomi offered new mid-range models that are fully compatible with LineageOS. I found a Motorola Moto G7 Plus that was compatible with LineageOS, but the forums report that the microphone volume is too low when running LineageOS, and I didn’t want to take a chance on it.
As a computer programmer, I have trouble configuring a phone that respects my right to privacy and my right to change the operating system. Imagine the problem faced by ordinary people, who don’t have the skill or knowledge to install a custom ROM in their phones or figure out what to do by searching online and looking through the XDA-Developers forums. Only someone who can read English can read the instructions online, so that excludes 6 out of 7 people on the planet, and it requires downloading gigabytes of free/open source software which excludes another large section of the planet that doesn’t have decent internet.
I am not the only one who has encountered problems with Xiaomi’s labyrinthine unlocking policies. Xiaomi moderators on their forum have been known to tell people who are trying to figure out how to unlock their bootloader, “if you are a modder then you are at wrong place.” People who want a phone which they can truly own are better off buying one from Fairphone, Google, OnePlus, Razer or Sony, since those companies have policies which respect user rights.
Nonetheless, Xiaomi is arguably the best of the 10 largest phone manufactures in the world. Not only does it provide information about its phones on its forum and at xiaomigeek.com, but it also releases the kernel source code with their git commit history for nearly every model, including the MediaTek models whose code is rarely released by phone makers. Nearly every one of recent Xiaomi models ends up getting a decent port of LineageOS or some other derivative of the Android Open Source Project, so people have real choices to escape Google’s spyware.
The freedom provided by enthusiast brands should be lauded, but their sales are limited to certain parts of the world and online buyers who can afford them. Google only sells to the upper crust of the market. OnePlus is great, but the vast majority of the phones produced by its parent company BBK Electronics under the brands of Oppo and Vivo will never get an AOSP-based port made by the community. HTC and Sony used to be good options, but they no longer sell enough phones to attract a critical mass of modders to work on their AOSP-based ports. Motorola used to the best choice for people who wanted to buy lower and mid-range phones that could run LineageOS, but their models haven’t received as much attention from the modder community in recent years.
Despite all the needless barriers that Xiaomi has created for unlocking the bootloader, its phones are often the best available choice in many parts of the world. Xiaomi is often the best option for people who value freedom, but can’t afford to buy an expensive phone. Unfortunately, the modders who create AOSP-based ports often ignore models that aren’t flagships and enthusiast brands. The fact that Xiaomi is the best of the major brands is a sad commentary on how little freedom we have, since we are so dependent on our phones as an integral part of our daily lives.
Because there are so few decent choices for people to avoid Surveillance Capitalism and exercise control over the electronics that they depend upon, I decided to help crowdfund the development of the Purism Librem 5, which is a Linux phone that runs on 100% free software. It is not cheap at a price of US$699, but I hope that it will be the first in a long line of future mobile Linux devices that respects people’s digital rights. Nobody should have to go through what I did just to unblock the bootloader of a phone.