Thanks for your post, this is the best way I can find to enable China Telecom LTE on Pixel.
Based on your post, I did some further checks, and found a way to do this without erasing data partition, and even no need to root.
Successfully tested on my Pixel running Android P.
Same as your method, we will change modem.img and copy mcfg_sw.mbn from 1+3T's image.
From the aosp source code, we can see that the init.radio.sh will copy configs from modem.img if the versions in ver_info.txt is changed.
So we can just simply change the version to another value, and it will copy the new configs.
The following are the detailed steps, we need a Linux environment to mount modem.img:
1. extract modem.img from Pixel factory image.
2. extract NO-HLOS.bin from 1+ 3T factory image (download from oneplus).
3. In order to add new files into modem.img, first need to expand its size:
Code:
dd if=/dev/zero of=modem.img bs=4096 count=100 conv=notrunc oflag=append
This command appends about 400KB to the end of the modem.img.
The total size of CT configs in 1+ 3T is about 230KB, but you can change to a larger count if you need to add more files.
4. mount modem.img:
Code:
mkdir modem
sudo mount -o loop modem.img modem
5. mount NO-HLOS.bin:
Code:
mkdir oneplus
sudo mount -o loop NO-HLOS.bin oneplus
6. create a "china" folder, since we only copy the CT configs, and skip CMCC and CU configs.
Code:
sudo mkdir modem/modem_pr/mcfg/configs/mcfg_sw/generic/china/
7. copy CT configs from oneplus:
Code:
sudo cp -r oneplus/image/modem_pr/mcfg/configs/mcfg_sw/generic/china/ct modem/modem_pr/mcfg/configs/mcfg_sw/generic/china/
8. change the ver_info.txt:
Code:
sudo vim modem/modem_pr/verinfo/ver_info.txt
It is enough to only change the last digit.
9. umount the images:
Code:
sync
umount modem
umount oneplus
10. flash the modem.img:
Code:
fastboot flash modem_a modem.img
fastboot flash modem_b modem.img
fastboot reboot
After reboot, Pixel will be able to use China Telecom LTE.