In 2021 I planned to use Pixel 3 as my daily driver.
I read a few tutorials first. It didn’t look too complicated.
References:
The rough idea:
unlock bootloader -> root with Magisk -> enable a China Telecom module.
Pixel 3 hardware can handle China Telecom; it’s mostly about flipping the right switches.
I split the work into four steps:
- Full backup
- Upgrade to the latest system
- Install Magisk
- Enable the China Telecom module
Full Backup
As a noob, I kept thinking: what if I brick it?
So I started with a “full backup”.
I followed this article: How to fully backup and restore your Android device without root
Using adb for backup/restore sounds reasonable.
- Enable
USB Debugging - Run
adb backup -apk -shared -all -f <filepath>/backup.ab - The phone will pop up a confirmation UI. You can set a password (recommended)
- Wait for backup to finish
- Restore with
adb restore <filepath>/backup.ab
2021/10/07 update
adb restore <filepath>/backup.abdidn’t work for me; restore failed.
Some apps don’t follow theadb backupstandard; backup can be broken without obvious CLI errors.
I tried restoring a few times and didn’t get my data back. Luckily it wasn’t very important.
Conclusion: I need a different backup approach (TBD).
Upgrade to the Latest System
My Pixel 3 was a used device. It was already rooted, and I didn’t uninstall Magisk before wiping data. As a result, verification failed and it couldn’t install updates automatically.
I looked up manual update methods.
XDA has a guide: How to flash a monthly security update on Google Pixel without wiping data
It suggests downloading the full factory image and editing flash-all.sh (remove -w) to avoid wiping userdata.
But it still felt a bit risky.
Google’s official recommendation is updating via Full OTA Images:
Full OTA Images for Nexus and Pixel Devices - Updating instructions
The steps are very detailed. Following the official guide, I upgraded to the latest system successfully.
Install Magisk
My phone’s bootloader was already unlocked, so I could install Magisk directly.
If yours is not unlocked, see Google’s guide:
Factory Images for Nexus and Pixel Devices - Flashing instructions
Note: unlocking wipes all data. Backup first.
For Magisk, I cross-referenced these:
- Install Magisk on Pixel 3
- Pixel 3 supports China Telecom
- Magisk official docs - Installation
- XDA: unlock + root Pixel 3 with Magisk
install magisk.apk
- Download the latest APK from Github - Magisk and install it on the phone.
patch boot image
- Download the matching
Factory Imagesfrom Google: https://developers.google.com/android/images - Extract it. You’ll see a few
flash-***scripts,bootloaderandradio.imgfiles, and a bigimage-***.zip. - Extract
image-***.zip, findboot.img, and push it to the phone (e.g.adb push boot.img /sdcard/Download/). - Open Magisk, tap
Install, chooseSelect and Patch a File, and pick thatboot.img. - Magisk will patch it and output a
magisk_patched_*****.img. - Pull the patched image back to your computer.
flash boot
This part was confusing because different tutorials describe slightly different flows.
- Reboot to
bootloadermode:adb reboot bootloader - Reboot to
fastbootmode:adb reboot fastboot(or key combo: power + volume down)
I wasn’t 100% sure about the difference at the time, so I tried both.
- Flash the patched image to boot:
fastboot flash boot magisk_patched_*****.img, thenfastboot reboot. - Or boot it temporarily:
fastboot boot magisk_patched_*****.img, then in Magisk useInstall->Direct Installto make it permanent.
(The first approach is simpler.)
A small bug I hit
- 2021/08/19 update (possibly wrong)
I thinkadb reboot fastbootshould pair withfastboot flash boot magisk_patched_*****.img,
andadb reboot bootloadershould pair withfastboot boot magisk_patched_*****.img.
I had mistakenly usedfastboot boot magisk_patched_*****.imgwhile infastbootmode and got an error. - 2021/10/31 update
The 2021/08/19 note above might be inaccurate; I remember an error but forgot the exact command.
OTA Updates Later
The “Pixel 3 supports China Telecom” post has a detailed OTA upgrade workflow with Magisk.
In short: temporarily restore stock images so OTA can apply, then re-install Magisk to the inactive slot before reboot.
Official Magisk docs: https://topjohnwu.github.io/Magisk/tutorials.html
Update: I tried a few times and it didn’t work for me. I ended up flashing updates manually; this approach wasn’t reliable.
Enable China Telecom Module
Ironically this was the easiest step.
In Magisk, under the Modules tab, you can search for a China Telecom Enabler, but it didn’t install on my Pixel 3.
So I used this instead: Github - China Telecom Supporter
The author explains the correct install method. I initially used GitHub’s Download as ZIP and tried to install it directly in Magisk, which failed because the ZIP had an extra directory level. Removing that extra folder fixed it.
After installing, reboot, insert the China Telecom SIM, and calls worked. Done.
Upgrade to Android 12
2021/10/23 update
Pixel 3 official support ended in Oct 2021, which happened to coincide with the Android 12 stable rollout. My rooted Pixel 3 also received an OTA update.
I hesitated for two days, but in the end I couldn’t resist this last supper and tapped System update.
After upgrading, the China Telecom patch was gone… scared me.
But after some fiddling, I found that uninstalling the module in Magisk and reinstalling it brought it back.
Roughly what happened:
- Upgrade to Android 12
- The Magisk-patched
boot.imggot replaced - Re-install Magisk
- Existing Magisk modules were still there (nice)
- But the China Telecom patch was gone (not nice)
- Fiddle around
- Uninstall the China Telecom module in Magisk
- Reboot
- Install the China Telecom module again
- Reboot again
- China Telecom works again (nice)
adb Commands
While doing this, I learned a few adb commands. Leaving them here so I don’t forget.
-
adb push/pull
Transfer files between your computer and phone, e.g.adb push boot.img /sdcard/Download/ -
adb shell
Similar to SSH into the phone. You can runls,pwd,cd, etc. I used it to check paths foradb push/pull. -
adb install *.apk
Install an APK from the command line. -
adb shell pm uninstall
adb shell pm list packageslists installed packages
adb shell pm uninstall -k --user 0 <package-name>disables/uninstalls a package for user 0This method can “remove” preinstalled apps that can’t be removed normally, but it’s not a full uninstall: it’s basically disabling for the user, and it won’t free up storage.
Ref: Bilibili article - debloating with ADB (JP ROM / docomo packages)
2021/08/25 update
-
Uninstall the application
adb shell pm uninstall -k --user 0 <package-name>- -k : Keep the data and cache directories around after package removal.
- —user 0: The user to disable
-
Re-install an uninstalled package
adb shell pm install-existing <package-name> -
List all packages you uninstalled. Run it from a bash shell: not in adb shell
Terminal window diff <(adb shell pm list packages) <(adb shell pm list packages -u) -n | grep ^package:
Ref:
XDA - Uninstall bloatwares [No root]
XDA - few questions about root and more - Use adb shell to remove Google apps and more..
Bash script
https://forum.xda-developers.com/t/uninstall-bloatwares-no-root.4321387/
Here is a list of packages identified as bloatware / ads / junks / useless / optional. Please read comments and remove the lines where you want to keep the package. Uninstall at your own risks.
pm uninstall -k --user 0 com.google.android.apps.googleassistantpm uninstall -k --user 0 com.google.android.googlequicksearchbox
pm uninstall -k --user 0 com.google.android.apps.subscriptions.redpm uninstall -k --user 0 com.xiaomi.midrop
pm uninstall -k --user 0 com.xiaomi.miplay_client Mi Play. This is an unnecessary process that hasn't really been used for years.pm uninstall -k --user 0 cn.wps.xiaomi.abroad.lite WPS Office. Has been flagged for years for malware. This was banned in India for a reason.pm uninstall -k --user 0 com.miui.msa.global MSA. This is the main service that displays ads in Xiaomi phones. This is already removed in Xiaomi.EU.pm uninstall -k --user 0 com.xiaomi.payment Unless you live in China or India, Xiaomi's own payment service is redundant and unnecessary.pm uninstall -k --user 0 com.ebay.carrier In case bloatware from Ebay is installed.pm uninstall -k --user 0 com.android.browser Mi Browser. It's a buggy unnecessary mess. Recommend you use other browsers like Chrome.pm uninstall -k --user 0 com.mi.globalbrowser Also part of Mi Browser.pm uninstall -k --user 0 com.miui.videoplayer Mi Video player. Uninstall if you prefer to use MX Player or VLC that actually support more formats.pm uninstall -k --user 0 com.miui.micloudsync Include if you don't use Mi Cloud.pm uninstall -k --user 0 com.miui.hybrid Found to be a data mining app that unnecesarily uses your phone's resources.pm uninstall -k --user 0 com.miui.hybrid.accessory Also a data mining app. Very recommend that you get rid of this.pm uninstall -k --user 0 com.miui.player Include if you don't use Xiaomi's music app.pm uninstall -k --user 0 com.facebook.services In case Facebook bloatware was preinstalled.pm uninstall -k --user 0 com.facebook.system Also Facebook bloat.pm uninstall -k --user 0 com.facebook.appmanager Also Facebook bloat.pm uninstall -k --user 0 com.xiaomi.glgm Mi Games. Very unncessary.pm uninstall -k --user 0 com.xiaomi.mipicks Very unnecessary. Xiaomi's way to advertise their own apps.pm uninstall -k --user 0 com.xiaomi.joyose Junk and safe to remove.pm uninstall -k --user 0 com.miui.notes Include if you use other notes apps.pm uninstall -k --user 0 com.miui.cleanmaster Together with WPS Office, Cleaner Master was found to be affiliated with Cheetah Mobile, that included spyware and adware in their software.pm uninstall -k --user 0 com.miui.weather2 Include if you use other apps to get the weather like Google or Yahoo.pm uninstall -k --user 0 com.micredit.in Mi Credit. Basically useless if you live outside India.pm uninstall -k --user 0 com.mipay.wallet.in Part of Mi Credit.Pixel C Tablet
2021/10/27 update
I picked up a Google Pixel C tablet for fun. Notes on a few issues I hit:
adb可以正确识别设备,fastboot报错no permission,网上找了找有lspci手动添加usb设备的,但是更简单的是sudo fastboot…adbcould detect the device correctly, butfastbootfailed withno permission. I saw advice about adding USB rules manually, but the simplest fix was justsudo fastboot…- When installing a third-party ROM in
TWRP, follow the steps strictly and wipeSYSTEMandDATA. I missed that once, rebooted, got stuck in the boot animation, forced power-off, and went back intoTWRP. Then wipingDATAstill didn’t work and it got stuck atformatting data using make_ext4fs. I also sawfailed to mount data/failed to mount system.
Fix reference: XDA - How to fix unable to mount data internal storage 0mb in twrp permanently: inTWRPtapAdvanced Wipe->Repair File System->Change File System, switch toExt2, then back toExt4(for both partitions). After that, re-flash following the ROM steps and it booted successfully. - After booting, it’s a bit laggy,
but usable.
One annoying thing: the third-party ROM lost support for the official keyboard shortcut keys. The official keyboard has noESCkey; it uses...+1to emulateESC, and the ROM broke that. Not sure if it can be remapped via some Magisk module (if only I had the skills…).
Some useful XDA links for later:
- XDA - Google Pixel C
- XDA -
[RECOVERY][TWRP][dragon][3.5.2]-> 2021-04-07 - XDA -
[ROM][UNOFFICIAL][LineageOS][18.1][dragon]-> 2021-10-06 - XDA -
[ROM][UNOFFICIAL][Pixel Experience 11][Dragon][2021/09/26] - XDA - Hidden escape key on Pixel C Physical Keyboard! Keys for ”[ ] { } | ~” too!
It’s kind of amazing: a 2015 device still had developers maintaining it in 2021, running Android 11, and even planning to support Android 12.
That’s a long lifespan.
There was some luck too: official support only went Android 6 -> 8, then Google pivoted to Chrome OS and effectively abandoned the product line.
Pixel C uses Nvidia’s Tegra X1 (not Qualcomm), which brings extra weird constraints. Devs almost gave up.
Then Nvidia released Nvidia Shield TV using the same chip, and devs ported kernels from there to keep Pixel C alive (roughly; see Future of our Pixel C - Goal reached).
Thanks, open source. Thanks, devs.
Pixel 5
2022/10/11 update
Picked up a Pixel 5.
Good news: Android 13 is available.
Bad news: China Telecom SIM was broken…
After hours of trying, I couldn’t fully fix it. The best I got was: VoLTE works, I can place calls, but I can’t receive calls. (I didn’t test mobile data.)
Some useful references:
-
七味茶盏 - Pixel 5 全网通及开启 5G 与 VoLTE
This helped the most. Updates about China Telecom modules are frequent there.
It seems there is no longer a free China Telecom module for Pixel 5; only a paid solution (contact info in the post). -
Youtube - Magisk 24.1 Stable | Android SafetyNet ByPass & CTS Profile False Fix in 2022 | Zygisk & DenyList
Hide Magisk and pass SafetyNet checks. -
Github - Fox’s Magisk Module Manager
Newer Magisk removed the online module repo; this is an alternative. -
Github - Universal SafetyNet Fix
Magisk module to fix SafetyNet. -
Github - Pixel-Redbull-Carrier-Patch
Carrier patch for Pixel 4a / Pixel 5, only for Android 11.
On Android 13 Pixel 5, even after installing the second package, the best I got was “can make calls, can’t receive calls”. -
Github - VoEnabler
Magisk module to enable VoLTE / VoWiFi / RCS, but it didn’t help much for my case. -
少数派 - 国内也能用 5G:Pixel 5 到手后可以做的 6 件事
A 2020 post. Back then there were free modules; now it’s paid.
In the pinned comments, the author also wrote a workaround method to enable 5G via QPST. -
Github - GoogleDialerMod
I saw it mentioned in other posts about migrating from Riru to Zygisk.
This module enables call recording. Looks useful; noting it down.
China Telecom is still unsolved. I’m going to sleep.