How I Unlocked Xiaomi Qin 2 Pro and Installed Phh GSI

31 Dec, 2019

For a guide instead of a diary, please click here

Note: This article describes the process of me finding a way to flash custom ROMs onto my Qin 2 Pro phone, and this is not meant to be a comprehensive guide that anyone could do after reading. If you decide to follow this, please make sure you read the entire article and you have sufficient technical knowledge to do so. The unlock and flashing process is more complicated than any Android device I have ever used. I take absolutely no responsibility for bricked or broken phones.

All steps in this article was carried out on firmware version 1.1.0 (China) on Qin 2 Pro. Anything else is not tested.

Edit: Please note that all the below methods are not discovered by me from scratch in any sense; rather, they are pretty much all based on great work done by people at 4PDA. I apologize if it was not clear previously, but I would like to express my great thanks to those people, especially those who somehow retrieved all the necessary files and keys and made the first flashable package on this device. Without their work, I would not have ordered the phone in the first place, let alone trying to run any sort of custom ROMs.

Recent Changes of this Blog: Reverse-proxying Listed

21 Dec, 2019

As you may have noticed, this is not exactly the original blog. The original one has been deleted, and then recreated with most of the original posts and 301 redirections from the old URLs to the new ones.

I'm doing this partly to unify this blog with my main blog (zh_CN),, as part of a recent restructure of my hosting infrastructure for personal services. Previously, these two blogs were on completely different platforms: the main one was hosted with some spaghetti code I put together before I even entered university, while this English one (or rather, Random one), was simply a page on Listed, a blogging platform provided by my favourite note-taking application, Standard Notes.

Make Linux (Xorg / Wayland) Great Again on Touchscreen Devices

7 Apr, 2019

As you may or may not know, I've got a brand-new Surface Pro 6 in place of my GPD Pocket, partially due to the unbearable slowness of Atom processors. It is easy to see that I'm not a Microsoft guy, especially not a Windows guy, thus I almost immediately wiped the OEM Windows and installed ArchLinux on my Surface. Why did I bother buying a Microsoft device in the first place you ask? Well, somehow I just wanted a 2-in-1 device and this seems the only usable choice.

I haven't written a blog post on how to configure the whole thing for Linux yet, and I might do it later. For now, I would like to focus on one aspect of the configuration, which is the touch screen. Everybody knows that not many desktop OSes work well on a touch screen -- possibly only Windows work fine. Mac lacks support for touch screens as a whole and that's probably because of their strategy of avoiding competition with themselves. For Linux, there is basic support for touch screen in almost every desktop environment -- touch at least works as pointer events. However, you are out of luck if you would like to use your device purely by touch screen, without a mouse or trackpad -- you can't even get right-click menus to appear or type words into the text boxes (the QT on-screen input method overrides the IME thus not very useful for for CJK speakers like me).

Hello World Again

1 Feb, 2019

This should be the first new article to this blog after the new domain is online.

Long story short, I've not been writing or even doing anything productive for a while due to some "emotional" problems. I'll probably write something about it in the future, but now I might be feeling better and might be able to restart my blog, starting from this one.

Troubleshooting a mysterious Mastodon bug: the Accept-Encoding header and federation

28 May, 2018

The story

As you may all know, I am the administrator of a Mastodon instance, One thing that is really fun doing this job (and every SysAdmin job) is that you run into different problems from time to time, sometimes without doing anything or sometimes after some upgrade.

Last week, Mastodon v2.4.0 was out and I, along with my friend, admin at, decided to upgrade to the new release as quickly as possible. Since there was nothing breaking in the new version, it didn't take long before we both finished executing a few Docker commands and restart into the new version. As usual, we tried to post something to ensure that everything works fine after any upgrade, and this is where things started to break.