https://www.youtube.com/watch?v=qsgs5e6NBPk
Incompatibility
Today I decided to play around with the BSD distros. I have used many Linux distros and found they are pretty much alike, no big difference anyways except for package managers. Anyways, I hopped on to the FreeBSD website and flashed the ISO to my usb.
BSD distros are pretty much like Linux in the application level, they can also run Gnome or Kde Plasma or whatever, pretty much everything Linux runs.
I installed the FreeBSD distro but there was a wifi card problem, and there was just no way to solve it. On researching I found my old laptop, which is Honor Magicbook, has this RTL8822CE 802.11ac as its wireless card, and I can't get it to work correctly in FreeBSD.
It was very frustrating and I tried wpa_supplicant many times, all failing. ifconfig couldn't detect the wlan0.
Then I installed GhostBSD with Mate as DE because it was too frustrating working in that headless environment and it turns out this problem still couldn't be solved. I tried connecting via the graphic Interface, and it failed. Another reminder that graphic interface is more or less useless--you either solve it or you don't.
Then I tried to use wpa_supplicant again, it complained about "ioctl 80221" and stuff. When rebooted I could see both wlan0 and eth0 with ifconfig but when I try service netif restart, it would destroy the wlan0 interface.
I think the main issue lives within the driver for the card. So in the meantime changing the card seem to be a good idea to experiment.
Changing the Realtek Card
So off I went around all around Hefei for computer repairing stores. My laptop is a Honor Magicbook. First I hopped on the bus to HongGang, just several kilometers down the road. I went there and there was a Honor store, however, they say they can't fix it.
I went to JingDong computer repairing store, and there was a man sitting inside a room playing his mobile phone. I went in and asked and they said there wasn't a wireless card available, and that my system is "weird", they never seen anything like it before, obviously not knowing anything about it. The man tried to insert a usb drive for wifi, but it didn't work, and he frowned from the start to the end looking at Mate Desktop. I asked further and they said I would need to buy the card myself and it would need 80 RMB to fix it with my card.
Then I went to the Honor after-sales service store, and they looked very annoyed after seeing my laptop, claiming they never seen such systems and they could only fix and repair with their "official systems", which of course is crappy Windows. The man said "you probably know what you are doing and more than me". Anyways, there wasn't much I could get out of them. I tried to ask if they would replace my wireless card but they refused, saying they could only give me their wireless card(rtw880).
Anyways, then I eat at a KFC, and hopped on another bus, going to another computer repair store, just north of National Defense Technology University. There was 3 person in it, and when I asked if they could repair the computer for me they replied yes, but they couldn't solve the problem, claiming they never saw the system and it was beyond their knowledge. Anyways, I asked if they could change the hardware stuff and they said they don't have a wireless card available, and I need to buy one, and offered 50 RMB to change it. Then I got out.
I tried walking to the fourth computer repair store, which has "computer assembling" in its name. It is around little less than a kilometer. But I walked there it was among torn-down houses, and the store is closed, and around me there was a million stalls selling all kinds of street foods, so much it almost blocked the road. People were having fun eating and talking to each other around me.
Then I was very frustrated. I got on line 2 and went to Sanxiaokou station, and I went to another computer repair store called Didi repair. It was on floor 13 on a building. I went up and called the person, and he said he would come in 5 minutes. Anyways it is mainly a door-to-door service. I went in and showed him the wireless card problem, and he was kind of amazed and said he hadn't seen the system either. I told him it was BSD, and showed an article saying FreeBSD is amazing! Anyway, the man seemed very enthusiastic and easy-going, and offered to change the hardware for me. He is very friendly and we chatted a while, he saying that people are too impetuous nowadays. I expressed my strong interest in computer systems(or just playing, anyway).
After that he got the tools, and he said he had an Intel Wireless Card from a computer from the 2010s, and he offered to fix it for me. He opened the Honor Magicbook and switched the Intel into it to replace to Realtech card.
He asked if I use Linux, and I said I used Linux as a daily driver. He said the repairing technicans are mainly vocational school grads, and doesn't know much about systems. He seemed very interested in command line operations and watched me as I stumbled around with vi. I edited the /etc/rc.conf and changed the /etc/resolv.conf and restarted the network. Then I edited the wifi.conf to be the network wifi of his office. I was very clumsly in the new system because I have been using Linux pretty much all the time and I was very clumsy with vi. I was always typing nano, gedit, systemctl, journalctl or commands like that from my muscle memory. Anyways after a long stumble I finally configured the wpa_supplicant to connect to wifi, and got an ipv4 with dhclient, then opened firefox, and I could go on websites!
I was pretty overjoyed and satisfied with the journey, and I thanked the man and paid 800 RMB. He said I am welcome to hang around at other times. I find this man very friendly and easygoing--he took some pictures of the Mate Desktop and Fish Shell, saying he never seen such in his life, and he had a few Linux experiences. Then he said there is another customer using Linux, and maybe I could help whatever. I added WeChat and I went home.
Wifi Connection Summary
Check Network Interfaces
Run the command ifconfig to list the active network interfaces. If wlan0 is not listed and only lo appears:
- Identify Wireless Hardware
Use pciconf -lv to list all PCI devices. Specifically, filter for the wireless module (in my case): pciconf -lv | grep iwm
This command should return details such as iwm0@pci0:1:0:0 followed by hardware details.
-
Configure Network Interface
-
Edit
/etc/rc.confto add(in my case foriwm0):
wlans_iwm0=wlan0
ifconfig_wlan0=WPA SYNCDHCP
- Restart Network Interface
service netif restart - Verify that wlan0 is present with
ifconfig
Configure Internet Access via wpa_supplicant
- Set DNS Servers: edit /etc/resolv.conf
nameserver 1.1.1.1
nameserver 1.0.0.1
- Create WiFi Configuration File
network={
ssid=your_network_ssid
psk=your_network_password
}
Ensure there are no commas between the lines.
- Connect to the WiFi Network
- Activate the wireless interface:
ifconfig wlan0 up - Run wpa_supplicant to manage the WiFi connection:
wpa_supplicant -B -i wlan0 -c wifi.conf - Obtain an IP address using DHCP:
dhclient wlan0 - Restart Network Services:
service netif restart
Changing Mirrors
Change the file sudo vi /usr/local/etc/pkg/repos/FreeBSD.conf to
FreeBSD: {
url: http://mirrors.ustc.edu.cn/freebsd-pkg/FreeBSD:14:amd64/latest,
}
(amd64 for me, might be different)
Then Update and Upgrade Packages
pkg-static update
pkg-static upgrade
pkg-static install -f pkg
Install essential softwares
pkg install bash vim nano sudo curl wget git tmux screen htop
Configuring Xorg
This part is so hard to start and it took me a million years. I finally managed to work around by changing the driver to scfb
Getting Packages from Ports
So in freebsd there is ports. sort of like aur, and the packages not available in the official repo can be compiled through that, but you first pull all the code locally, then occasionally pull them from github, and compile the things needed. All the code together was only 1.1 GB.
sudo git clone --filter=tree:0 https://mirrors.ustc.edu.cn/freebsd-ports/ports.git /usr/ports
Even chromium isn't available in the official repo, so lots of things needed to be compiled.(kinda like Gentoo)
Problems
Tutorials aren't as comprehensive as Linux, but people say BSD is more stable.
The wifi is too much of a pain, and there isn't a frontend for it anywhere. Connecting through wpa_supplicant is very tiresome.
I am practically a noob in wifi configuration. I have used iwctl and nmtui but not wpa_supplicant that much, and in the end I settled with GhostBSD as it is more straightforward.
Fixing the Signature Problem in GhostBSD
I can also use a FreeBSD mirror in GhostBSD, but there is default validation configuration, simply comment out these lines in /etc/pkg/GhostBSD.conf,
GhostBSD: {
url: https://pkg.ghostbsd.org/stable/${ABI}/latest,
# signature_type: pubkey,
# pubkey: /usr/share/keys/ssl/certs/ghostbsd.cert,
# enabled: yesexport http_proxy=http://localhost:7890/
}
The default mirror is very very slow, so I switched back to USTC FreeBSD mirror.
Latest Mirror Lack of tools
The latest mirror doesn't have lots of things like chromium or osscode, so I switched to the quarterly mirror. It doesn't have os-generic-userland-devtools as well, which is required to compile packages, so I ended up switching having a really long time figuring out how to configure things to compile.
20240410 Booting PostMarketOS
Why?
After getting rid of the crappy UI and installing LineageOS on my Redmi Phone, I was still not satisfied. Mainly because I am using WeChat too frequently, and it is kinda addictive and time-wasting. Those apps eat away at me and gradually I become dependent on the mobile phone, glued to it occasionally. Eventually, I decided that carrying WeChat with me everywhere is just too distracting.
Furthermore, LineageOS doesn't offer as much control as Linux does. I mean, it does offer more control than iPhone or many Android phones with those crappy UIs, but it is more or less based on Android, and I am not that familiar with it.
With digital freedom and being liberal in mind, I began to explore PostMarketOS.
Jailbreaking iPhone Crash
I tried to jailbreak the iPhone after running a script, but unfortunately, after that, my iPhone no longer boots, so I don't know what to do with it other than letting it rot.
Buying OnePlus 6
Among the many devices supported by PostMarketOS, OnePlus 6 is a very accessible and modern choice, released in 2018. I hadn't realized that it was 6 years old though. Other devices like Nokia N900 have only 256 MB RAM, and the Samsung Phones were released in like 2013 or 2014. Anyways, I bought OnePlus 6 for 490 RMB (70 USD) from an online retailer store and began exploring.
Flashing the ROM
Everything is very easy and straightforward; unlock the bootloader, then flash 2 images, and I am done.
Desktop Environment
There are Phosh, Plasma Mobile, Gnome Mobile, and SXMO.
SXMO doesn't really have a UI; it's more like i3, managing everything from a dropdown menu.
Phosh and Gnome Mobile are pretty alike. Phosh was the mobile version for GNOME, but there are some small differences. They come with the same software shipped.
The wiki (https://wiki.postmarketos.org/) has most things anyway.
About Gnome Problems
Overflow: It is kind of working in GNOME with all windows very small.
-
Overflowing:
- Nautilus is overflowing
- Chromium is overflowing
- Firefox Works, but some website overflows due to useragent being a computer(still overflows when I set useragent to mobile), My 2 websites,
jimchen.meandanonytube.jimchen.meworks well though, since I am determining the fonts based on the window innerWidth.
-
Doesn't natively support Chinese characters.(Plasma Mobile does, but its even more breakable)
-
Needs manually switch between Headphones and Speakers: Kinda harder
-
Rebooting error due to hardware problems, sometimes running into Snapdragon Coredump
-
Screen not auto-closing
-
Doesn't support many appimages(have to configure Clash manually)
-
Need to re-login on every screen close, and it was configured to accept 6 numbers (sometimes buggy if the password contains other things), thus the user password needs to be 6 numbers, else it got very buggy on login
-
Camera not working on OnePlus 6 and OnePlus 6T
-
Cannot tweak. I tried tweaking the font and it broke the user interface. It is easily breakable, if I tweak the phone becomes unusable
-
Cannot receive calls (can initiate calls and receive messages)
These are mostly kinda small problems and can be solved by scripts, except the last problem receiving calls, which makes it not usable than a daily driver. Even a senior citizen easy phone can do calling with no problems.
The driver isn't waking up in PostMarketOS, and in the community version Droidian they ship some android drivers to make it work.
About SXMO
SXMO is like swm for phones. It is so snappy and build all with scripts(there are those hooks for calling, for receiving messages, etc). It is really really cool and builds upon a text based menu, and everything is customizable(instead it is more like someone's customized scripts rather than a well-established DE) I can run qutebrowser on it, and it features a really cool keyboard where you control everything on the screen(like etc, and those vim bindings). It even use vim to send messages as default! I was like, wow.
Like when I tried to navigate around the menu I can easily know the cli commands to get those stuff, like connecting to wifi or whatever. It is literally navigating through the terminal with a cli interface.
Customization
SSH
Run sudo rc-service sshd start for computer to sshd into it.
From usb: ssh user@172.16.42.1, else run ifconfig and get the ip address.
Installing Stuff
Using gnome-mobile, there are many preinstalled apps that are unnecessary, and I also need some stuff, after connecting to wifi, I run these commands to customize it a little bit
cd ~ && rm -rf Desktop Downloads Pictures Templates Documents Music Public Videos
sudo rc-update add sshd default
sudo sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories
sudo apk del firefox-esr lollypop loupe gnome-clocks postmarketos-tweaks gnome-contacts karlender portfolio gnome-software gnome-calculator postmarketos-welcome gnome-text-editor && sudo apk update && sudo apk upgrade && sudo apk add bash curl nano vim firefox git net-tools ranger
Full Disk Space
As we all know, Alpine Linux is lightweight, and added together it was around 2.3 GB
Filesystem Size Used Available Use% Mounted on
dev 10.0M 0 10.0M 0% /dev
run 3.7G 2.2M 3.7G 0% /run
/dev/mapper/userdata2
108.7G 2.3G 100.9G 2% /
/dev/mapper/userdata1
221.1M 60.2M 149.1M 29% /boot
shm 3.7G 0 3.7G 0% /dev/shm
tmpfs 756.0M 20.0K 756.0M 0% /run/user/10000
Configuring Clash
So before that I used Clash-verge in Linux(a frontend gui for clash that works fine). There is also Clash for Android. But like the gui isn't working well in PostmarketOS, so as an example to program it from command line, add a test.yml
proxies:
- name: Server1
type: ss
server: bff6ce3.gxtewt.lol
port: 43748
cipher: aes-128-gcm
password: [YOURPASSWORD]
- name: Server2
type: ss
server: bff6ce3.gxtewt.lol
port: 43641
cipher: aes-128-gcm
password: [YOURPASSWORD]
mode: Global
external-controller: 0.0.0.0:9090
port: 7890 # HTTP proxy port
socks-port: 7891 # SOCKS5 proxy port
Then get the file Country.mmdb and put it in current dir.
$ clash -d . -f test.yml
INFO[0000] inbound http://127.0.0.1:7890 create success.
INFO[0000] inbound socks://127.0.0.1:7891 create success.
INFO[0000] RESTful API listening at: [::]:9090
Using the api
$ curl http://localhost:9090/proxies/GLOBAL
{alive:true,all:[DIRECT,REJECT,Server1,Server2],history:[],name:GLOBAL,now:Server2,type:Selector,udp:false}
$ curl -X PUT -H Content-Type: application/json -d '{name: Server1}' http://localhost:9090/proxies/GLOBAL
$ curl http://localhost:9090/proxies/GLOBAL
{alive:true,all:[DIRECT,REJECT,Server1,Server2],history:[],name:GLOBAL,now:Server1,type:Selector,udp:false}
OnePlus 6 doesn't work with calling functionality. I bought OnePlus 6 fajitta, in hope that it will work with calls. I was still eager not to give up. It said on the Postmarket OS wiki that fajita's calling is working.
Flashing Mobian
So I decided to first try mobian.
The process is very straightforward, just go to fastboot and flash the boot and userdata image to it and that's pretty much it. Mobian was running with Phosh, and it was pretty cool.
However, the calling function isn't working, and I cannot receive calls.
Trying PostMarketOS again
Anyways, I tried PMOS again, but it still doesn't work with receiving calls(like OnePlus 6 and OnePlus 6t are pretty similar, why should I expect OnePlus 6t to work with calling? Lol).
Device got Bricked
Then I got kind of sad and tried to erase some partitions with fastboot, however, in flashing, I erased a critical partition accidentally with fastboot, and my device got bricked and stuck in a bootloop.
So I went to get the stock firmware and payload dumper(on github), and extracted the images. Basically run fastboot getvar all , and see which specs of the phone and which slot is active. So flash to the inactive slot and then switch. I made the mistake of flashing to different slots multiple times.
Anyway, I flashed them to the phone with fastboot, then rebooted, and everything works smoothly, and I was able to recover back to Android. It went to crashdump mode a few times, but overall it's not that hard. I thought I was in great trouble, turned out everything worked fine.
Then I flashed PostMarketOS again and it was fine(without calling).
Washing the Phone
So the phone is second-handed and very dirty, and I tried to wash it, but after washing the phone fastboot devices could no longer detect the phone(I don't know if it is relevant, just suspecting). USB ssh still works so it's really weird, like I go to fastboot mode and it wasn't even detecting anything, lol. I don't know any other ways to flash or whatever.
After a while(I think like 2 hours or so), I went back and tried fastboot and it worked miraculously.
What's Good about PostMarketOS?
It gives users full control, including but not limited to (I observed these):
- Browser behaves like a computer, so if you switch tabs, brower videos play in the background. It can be a miniserver, kind of like a Raspberry Pi without those pins and controls
- Have a native console. Ahh,, the amount of power and control I feel with the cli, like literally the phone is under my control. I can also ssh easily, and problems can be fixed much faster.
- Package Manager!!! Like honestly, I would die for a package manager (although this means limited software anyways, like only those working in Linux, like no stupid WeChat, lol). There is Fdroid on Android that's mostly FOSS software and it's pretty good too(It includes link to the source code and you can update it easily)
- Native Linux env: I am most familiar with Linux and not familiar with proprietary environments
- Good Desktop Environment! Like you can install different DE, so no monopoly is at place. At least Gnome, dwm(sxmo), and Plasma work to some extent on PostMarketOS, so like you can choose which desktop environment you want instead of being stuck with something the company provides. I am not specifically saying the DE the company provides is bad or something, just choices make one happier(given choices I might still choose the default, but I will probably feel more contented).
- Debloated. Honestly a phone doesn't need or consume that much space as much as 128 GB. My computer doesn't need that much SSD unless running some machine learning models locally. A fresh install is only around 2 GB, and it is with Gnome(which is considered a heavy DE). Honestly among the well supported distros Alpine is the lightest.
Is PostMarketOS a SmartPhone?
Of course it is, except it is more aligned with the functions of computer than phone. It is kind of like a Rasp Pi but with calling and messaging functions.
And also, the OnePlus is a smartphone, so it should be a smartphone. Whether a phone is smart shall be categorized be the kind of phone it is, not by the kind of operating systems.
Also it can browser web like on computer, so I do think it is a smartphone. It is only uncompatible with apks and App store.
About People's Opinions
It's a person's freedom to think I am weird and don't like my ideas, but I think the same too about others though. Mobile Linux has a far smaller market than laptop Linux(although Android in build upon Linux core), so probably very very few people would comprehend. I think most people have far more resilience to WeChat or similar apps than I do. In fact, I am easily addicted and distracted by many of those apps, sometimes leading me to not doing anything all day long, so I must forcibly separate myself from those apps to ensure my mental wellbeing. People don't seem to understand that since they have resilience and self-control(which I seriously lack in). I also have the freedom to dislike other products with adequate reasons.
What's Next?
The disk is 128 GB so I can store lots of 4k movies in it to watch offline. The whole working system is less than 4 GB now. It will probably gets larger, but with Alpine Linux it's just trivial to the whole disk.
I have no idea why people run out of disk space. Just delete the freaking bloatwares and everything would be working fine. Like to be honest without running Pytorch, 30 GB is enough for the whole computer or mobile with wise management(size of smaller sized SD card).
I will still need WeChat now and then, just not on a daily basis. For example, when like going to the hospital or doing certain things...
WeChat is a mandatory software nowadays in China, if it isn't required I will delete WeChat.
Sometimes when I need to call a Taxi the AMap and BaiduMap works good in LineageOS, but I can try not to call taxi altogether. It's not that much of a discomfort, just manage time more wisely.
Which obviously brings me nostalgia again back to the summer of 2018 when I didn't have a smartphone yet(I kind of wished I never need to use one now), when I went to Pudong Gaoqiao Riverside Forest Park alone in a bus with my old "Philip" phone(for elders). I waited for the bus (it only came every 50 minutes) after taking the subway forever, but fortunately the bus came around 20 minutes, and when I tried to return home the bus came very quickly.
Despite the inconvenience, I had less on my mind and had so much fun. I used to walk around and enjoy everything with a light-weighted heart, and look at the vast sea like nothing else mattered.
I remembered on that day I had 200 RMB(a lot to me at the time), and went all alone, and I thought that I would have went there much easier if I could call taxi after exiting the subway station. But being free of smartphone trap gives a unique sense of joy and freedom to the mind.
20240430 Asahi Linux
Downloading Installer for Asahi(in China)
So the files are not available in China, just download and upload them to a S3 bucket (hopefully available in China), then change the urls in the installing script(alx.sh file and installer json file)
Enabling Fn
MacBook has this annoying feature where you need to press alt+fn+f4(closing) or alt+f2(renaming), so Change this file /etc/modprobe.d/keyboard.conf, then sudo dracut --regenerate-all --force
options hid-apple swap_fn_leftctrl=1
options hid_apple fnmode=2
Remaping Other Keys
Use evremap, Move the executable, then Create a systemd service, then remap with toml config in /etc/evremap/config.toml
device_name = Apple MTP keyboard
# Disable CapsLock
[[remap]]
input = [KEY_CAPSLOCK]
output = []
# Swap Super (Windows key) and Alt
[[remap]]
input = [KEY_LEFTALT]
output = [KEY_LEFTMETA]
[[remap]]
input = [KEY_LEFTMETA]
output = [KEY_LEFTALT]
# Remap Right Super to Right Alt
# Disable Right Alt
# Swap F3 and F4
# ...(for conciseness)
Removing Gnome Bloatware
Setting Gnome Shortcuts
ctrl+alt+t, ctrl+e, super+d, alt+tab, super+tab ...
Disable While Typing
Use python evdev to capture and gsettings to disable.
Add a listener in systemd service
for event in device.read_loop():
if event.type == ecodes.EV_KEY:
if event.value == 1: # Key press
key = categorize(event)
if key.keycode not in ['KEY_LEFTALT', 'KEY_RIGHTALT', 'KEY_LEFTCTRL', 'KEY_RIGHTCTRL',
'KEY_LEFTMETA', 'KEY_RIGHTMETA', 'KEY_TAB', 'KEY_LEFTSHIFT', 'KEY_RIGHTSHIFT']:
fifo.write(key_pressed\n)
fifo.flush()
Then set a timer and adjust gsettings with user systemd service
while read -r line; do
if [[ $line == key_pressed ]]; then
if [[ $state == enabled ]]; then
disable_touchpad
state=disabled # Update the state variable here
if [[ $timer_pid -ne 0 ]]; then
kill $timer_pid # Stop the previous timer
fi
timer & # Start a new timer
timer_pid=$! # Store the PID of the new timer
fi
fi
Clash Verge
Bypass UFW, I compiled with npm tauri.
20240509 Booting LineageOS (Finally)
Exploring More Phones
I've failed countless times while experimenting with different phones and operating systems.
Unlike computers, which have a universal architecture, each phone possesses its unique structure. This makes installing operating systems on them exceedingly challenging.
Furthermore, the repair technicians lack the necessary expertise to assist me with these challenges. Consequently, I've had to solve all the problems myself, which adds a layer of frustration to the process.
Unlocking Bootloader
Then, I unlocked the bootloader of my old Redmi Note 10, which I had used 2.5 years ago. After unlocking, I attempted to install Ubuntu Touch. However, the ubports installer consistently faced a downloading issue due to GitHub connectivity problems, which I couldn't fix. Thus, I was unsuccessful in installing Ubuntu.
Trying to Install Different OS
Next, I attempted to install LineageOS on the Redmi Note 10. However, after booting into fastboot mode, I couldn't flash the boot.img and recovery.img onto the phone. The fastboot froze indefinitely while transferring these files, leaving me unable to proceed.
Postmarket OS appeared to only support Pinephone and Librem 5 phones. However, my PinePhone stopped reading any SD card, so installing it was not feasible.
Removing Xiaomi Bloatwares
I then used adb to list packages with adb shell pm list packages, and discovered numerous bloatwares. Xiaomi, in my opinion, is the worst company, with their phones filled with unnecessary spywares.
After listing the MIUI packages, I used adb shell uninstall to remove them, aiming to eliminate the cumbersome MIUI. Some apps were successfully uninstalled, while others persisted, and I couldn't remove them even with root permissions.
Subsequently, I found myself unable to return to the home screen, and upon rebooting, the phone entered a boot loop, rendering it inoperable yesterday.
Repairing People with Intellectual Retardation
So I went to MiUI store, hoping to get the crap fixed and get LineageOS installed. But the reparing person are kind of intellectual retarded, and they know far less than me though. They didn't even know or care what is LineageOS. The technicians there seemed less knowledgeable than me about such niche, open-source, and controlled systems. They were unfamiliar with adb and couldn't assist in reviving my phone.
Nevertheless, I managed to figure out how to reopen the phone today fairly quickly. By entering the recovery menu and wiping all the data, the phone rebooted into a new MIUI system, again laden with bloatwares.
Messing Up with Phone Once More
This time, I didn't blindly remove all Xiaomi bloatwares. Instead, I researched online and tried to remove only those identified as bloatwares. Since there were hundreds, manual removal was impractical, further highlighting the phone's annoyances.
After using adb to uninstall and disable some apps, I encountered issues installing new apps due to not being signed into the MIUI account. Uninstalling certain apps had prevented me from signing in, leaving me with no option but to wipe the data again.
Trying to Customize Again
On my next attempt, I removed the packages manually, one by one. It was a tedious process. After removing the theme, my wallpaper became pure black, aligning with my preference for dark mode.
Then, I installed Google Phone, Google Files, Google Messages, Google Photos, Google Chrome, and some other apps using APK Pure, Softonic, and Uptodown APKs via computer and adb.
I tried installing Google Play Store, but it wouldn't open. Even using a Google installer didn't help. However, I realized that I didn't particularly need the Google Play Store. Firstly, I don't heavily rely on a smartphone, with WeChat being my primary app. Secondly, I'm not a fan of the Google Play Store. Thirdly, I can source all necessary APKs
myself.
Anyways, looking back at my journey, smartphones were really hard on me, unlike the exploration of other tech. Archlinux and LFS didn't take much time to set up, and cloud servers are very intuitive to me; I understood everything in a fairly short time.
How to Install LineageOS
So basically, you need an unlocked & supported phone. One can install ArchLinux or Ubuntu on practically every laptop device, but mobile is different in terms of architecture.
Actually, there are no official builds for my old phone (Redmi Note 10 5G); to be honest, the phone is nothing but a whole piece of bloatware trash piled together with built-in spyware and censorship.
I was lucky to find this post where a developer released LineageOS for that model:
https://xdaforums.com/t/rom-13-unofficial-camellia-camellian-lineageos-20-0-with-ota-support-updated-28-01-2024.4618399/
There are many unofficial releases for those community-driven open source projects.
I found it surprisingly easy to implement.
Source: https://m929.ru/
How to flash ROM:
- Install ROM's recovery using: fastboot flash boot boot.img
- Boot into recovery In Pixel, adb sideload must be enabled in the apply update section.
- On your PC with the downloaded ROM, type in the terminal: adb sideload ROM.zip
- Flash firmware A13; download from mega.nz
- Wipe data/factory reset
Like basically, after flashing that and wiping the data, I had a working LineageOS!
Many Types of Phones
I don't get why there are so many phone manufacturers and so many phone brands out there. Moreover, I don't understand why they need to release tens of hundreds of phones every year, literally for the sake of it. I mean, I don't really see a difference between those brands, except for different default operating systems and UIs, which I want to customize myself.
I think it's all a commercial joke, this booming market of OS. Today I went into a phone reseller store and asked the price, and they said the cheapest is more than 1000 RMB. It's so crazily expensive compared to other things, especially considering it's a reseller. I mean, I can buy a good-end brand-new phone with 1000 RMB. Then I went into Samsung Galaxy and asked them for these models (that Postmarket OS supports):
Samsung Galaxy A5, Samsung Galaxy E7, Samsung Galaxy S III
They were kind of surprised in finding I want so freaking old phones, and for a moment I couldn't help but burst out laughing. I mean, it was just hilarious.
I seriously don't understand the need to buy the newest phones or update them like three times a year.
Why I Dislike Defaults
I mainly dislike defaults because of a lack of support for personal customization and their bloatware properties. Still, I am a lazy person, and I don't do extensive Gnome customization or vim scripting. If something is optional and free, actually chances are I would still like to use it. If something is free and proprietary I wouldn't have anything against it. But the problem lies in the multiple bugs and closed source of the operating systems or software that there's just no way to fix for someone not in the company. Sometimes I find a bug I probably want to try to solve on my own. But sometimes with iOS and Google Bugs (like an app won't work), there are just no ways to find the solutions.
Realizing My Journey These Years
Looking back into my teen years, literally, I have shown strong dislike for smartphones. I didn't have a smartphone my entire middle school career, only inheriting one from my dad in the summer of 2020 when I was going to high school. I hated the idea of a smartphone for as long as I could remember. I wasn't opposed to other tech stuff; like, I used a computer long before that and had my own computer in the 6th grade.
I probably missed adding lots of people to WeChat contacts, looking back. Like literally, I was so ignorant of the existence of WeChat and so arrogant of the whole concept.
I can probably say that most of my new preferences today don't come from nowhere but are like this for many years, except previously either externally controlled, restricted, or just having some gaps that I couldn't cross with limited skills.
I was born different from many people, and I don't want to judge who is better. Different people can have different preferences, none more superior than the others. Yet, I am hoping to maintain mutual respect for people with different digital philosophies.
Even after I had a smartphone, I was much against using it. During the summer before I went to university, I limited my smartphone time to literally 10 minutes every day (only scanning the code when entering a library and around 5 minutes checking my friends' status on Weixin), although once or twice a week I would bypass that, but no more than 1 hour.
After I entered university, I decided it was too distracting, and I didn't use my phone for a whole semester. It was kind of amazing to believe in retrospect, but I really didn't use it for an entire three months at all. I bore the inconvenience and utilized my computer to do all sorts of stuff. The second semester I continued my stance against using smartphones, and couldn't hold on after the COVID pandemic hit. To be honest, if it wasn't for COVID, I would probably keep on not using a smartphone, only there was mandatory testing to be done every day, which is awfully annoying.
People would usually be confused by my statement of not using smartphones, and few would think from my perspective. I can confidently say that not having a smartphone nowadays is just unbearable in China; if you have no WeChat, you can do practically nothing and are no different than a dying old person in terms of living conveniences.
I did that experiment myself and failed. During that time, I remembered the maps and bus routes by heart and went out riding my bicycle (which I later lost). After losing my bicycle, I walked a lot. I watched many movies and YouTube on my computer; indeed, YouTube was one of my main forms of entertainment at that time. I also read a lot, and that was the last period where I remembered myself actually enjoying literature. I can no longer dive into literature. I relied on my parents for much information and kept a daily track of everything to do, every single day. I frequently climbed to the top of the school building to watch the city lights at night. I believed in all sorts of good things. Sometimes, I kind of longed for that kind of mentality at the time. It was actually very sad and had a reverse effect on me.
Also, there was one occasion when my Android phone started beeping for no reason, and then it stopped.
Downsides of LineageOS and Other Distros?
So LineageOS doesn't have a package manager, which I think is definitely not ideal. But I can use my computer for 90% of tasks.
The other OS that I'm interested in is PostMarket OS (or mobile Alpine). However, it doesn't seem to support WeChat. That's frustrating for me because the main reason I use my smartphone is for WeChat. So if someday, say, I leave Mainland China, then I will probably ditch WeChat and start using that distro.
There is also GrapheneOS, which mainly supports Google Pixel. PinePhone has low specs, and I have had great trouble using it.
Removing System Apps from LineageOS
adb shell pm uninstall -k --user 0 org.lineageos.eleven
adb shell pm uninstall -k --user 0 org.lineageos.jelly
adb shell pm uninstall -k --user 0 org.lineageos.etar
adb shell pm uninstall -k --user 0 org.lineageos.audiofx
adb shell pm uninstall -k --user 0 org.lineageos.recorder
adb shell pm uninstall -k --user 0 com.android.calculator2
adb shell pm uninstall -k --user 0 com.android.fmradio
adb shell pm uninstall -k --user 0 com.android.stk
Setting Up LineageOS
Other than that, it's just a few clicks away with adb install for all essential software, and I set up my phone pretty quickly. I'm not against WeChat, but if there's any chance, just any chance, I would probably ditch it.