I got it working! It was actually not a big deal. Because Android 13 included Google’s “Project Treble” work, I was able to just drop a GSI build and call it a day.
Now that (most of) the OS is getting updates, I feel more confident running things like a web browser, a podcast app, and Signal. The GSI re-uses the firmware and device drivers, so it’s still possible there’s spyware in the OS. But my threat model was never nation-state threat actors: it was “garden variety” malware taking advantage of unpatched system libraries. My system libraries are getting patched now :)
State of LineageOS on the Jelly Star
It’s pretty much the same!
What works
- Screen display
- Touchscreen
- Navigation buttons below the screen
- Haptics (vibration)
- Speaker
- Microphone
- Everything related to the phone (SIM card, making calls, 4G, etc.)
- Power and Volume buttons
- Fingerprint reader
- Both cameras
- Camera flash / torch
- SD card
- Compass (still loses calibration just as quickly)
- Proximity / Light sensor
- GPS
- Notification LED (the multi-color LED on the front)
- Infrared LED (remote control)
Quirks
- VoLTE / MMS
- Sometimes it works, sometimes it doesn’t. But there’s a workaround. Go into “Phh Treble Settings”, then “IMS Features”. Turn on “Request IMS Network” and “Force the presence of 4G calling setting”. Install the “IMS APK for MediaTek S vendor”, then reboot.
- Debug mode by default
- I had to enable developer options in order to disable USB debugging. Then I disabled developer options again.
- Headphone jack
- Go to “Settings” → “Phh Treble Settings” → “Misc features” and check “Use alternate way to detect headsets”, then reboot.
- Shortcut button
- The extra button on the device is getting called the “camera button” by LineageOS. You can remap it with a program called “Key Mapper”.
- Torch button
- The shortcut button won’t toggle the torch now. The OS supports long-pressing power to toggle the torch, but only when the screen is off. I’m fine with that.
- Hardware navigation buttons
- Those three buttons on the bottom, below the LCD. They work, but I can’t figure out how to get the phone to vibrate when I tap one. I did enable gesture navigation in the OS, then removed the navigation hint (the bar at the bottom of the screen)
- FM radio
- NextRadio can’t find a tuner, but I bet if I can find a way to extract the radio APK from the stock image, it would work.
- MMS
- I may have accidentally broken this myself:
MMS messages were saying “failed to download”.
I needed to set the Access Point Name (APN) settings.
T-Mobile APN settings
- Name
- T-Mobile US
- APN
- fast.t-mobile.com
- MMSC
- http://mms.msg.eng.t-mobile.com/mms/wapenc
- MCC
- 310
- MNC
- 240
- APN type
- default,ia,supl,hipri,mms,rcs,xcap
- APN protocol
- IPv6
- APN roaming protocol
- IPv4
- Bearer
- HSPA, EVDO_B, eHPRD, LTE, HSPAP, GPRS, EDGE, UMTS, IS95A, 1xRTT, EVDO_0, EVDO_A, HSDPA, NR, HSUPA (This is everything but “Unknown”. There were others on the phone I copied from that didn’t appear in LineageOS.)
- Everything else
- Leave at the default (“Not Set” in most cases)
Doesn’t Work
- White “UO” notification LEDs on the back
- I had disabled these previously because they were annoying me, no big loss.
- Sensor test
*#*#3377#*#*
in the phone no longer runs the “sensor test”, so I guess I can no longer calibrate the accelerometer.- Torch color temperature
- I think a lot of people don’t realize there are two LEDs for the camera torch. One has a warm color temperature, the other has a cold temperature. Only the cold one was used by anything in the factory OS, and that’s true on LineageOS too.
- Battery charging animation
- You know that animation that plays when you plug in to charge? It’s gone now. Good riddance, in my opinion.
- Weird power management
- All the OS configuration for extra power management is gone. You just get the default LineageOS power management stuff, which for my purposes is fine: I had disabled all the Unihertz stuff anyway.
- Anything by Google
- Maybe it goes without saying, but installing an OS without Google Play Services means nothing by Google will work. That includes Messages (and RCS), Meet, and Maps. Signal provides messaging and video chat, and Organic Maps provides maps, but they’re going to be a change.
A note about RCS
I didn’t install any Google hooks, which means I can’t run the Google Messages app, and don’t get RCS. One day, hopefully, RCS will be an option for me again. But right now, Google’s the only way to get RCS.
When you leave RCS, Google now puts your RCS account in a 30-day cool-off period, just in case you want to come back. I’ve been calling it a penalty box. That means any group chats you’re in will get messages from you, as “unsecure SMS”, but you won’t see any replies, since everyone will reply with RCS to your inactive account.
I didn’t leave any RCS group chats, and I had to ask my family members to leave them so I could see their replies. This took a lot of convincing and reassuring that they’d still see messages. For the next 30 days, I can’t read any of the messages to group chats I didn’t leave first. It feels like I’m being ostracized, even though I know this isn’t anybody’s intent.
Once my wife and daughter have moved over to LineageOS, we can move back onto Signal. We weren’t running it previously because of concerns about the unpatched phone OS being infected with malware/spyware.
How to install LineageOS
Here’s everything I did to install.
Warnings
- You have to use a
fastboot
that understands sparse images. I used version 34, which does not. - If you get things super messed up,
by, for instance, using too old a version of fastboot,
you can recover the entire device with the Mediatek Smart Phone Flash Tool.
For “Download-XML” be sure to select the
flash.xml
file in your unpacked factory ROM. Go to the “Download” tab, make sure “Download Only” is selected (Format+Download erases your IMEI, don’t do it!), then click the “Download” button. Reboot the phone and it’ll flash the whole works over.
Calibrate the accelerometer
If you haven’t yet, Calibrate your accelerometer!
My experience is that the phones ship with just horrible accelerometer calibration.
Since you won’t be able to do calibrate them with LineageOS, you should do it before installing.
Enter *#*#3377#*#*
in the dialer:
it’s in that menu somewhere.
You’ll need a flat surface that isn’t moving,
like a floor or a table.
Turn off RCS
Unless you intend to use the Google-y version of LineageOS, you may have a lot of trouble getting SMS if you don’t turn off RCS before installing LineageOS.
You’ll want to leave all your group RCS chats, too. See “A note about RCS” above.
Installing LineageOS
Updated 2025-10-04: I did a second device, and was able to figure out what these instructions were missing.
You’ll need the
factory firmware
so you can flash a vbmeta
partition
that will allow loading the custom GSI.
You’ll also need a
TD GSI from Andy Yan.
I used the arm64_bvN
one for no google, no root.
I set my wife up with arm64_bgN
for google stuff.
If you want root, you need to do additional stuff that I’m not going over here.
Remember to unlock the bootloader in the OS system menu before rebooting, unpack the firmware and the GSI.
First, we’re going to get into the bootloader. I didn’t need to flash vbmeta to get LineageOS to boot, so all I did here was unlock flashing.
$ adb reboot bootloader # Wait for the "Unihertz" logo, there's no other prompt
$ fastboot flashing unlock # Press volume up within 5 seconds
Next we need to get into “fastbootd”. Deleting the “product” partition frees up a little space for system_a. Don’t forget to erase userdata, or Permission Controller will crash after the OS boots.
$ fastboot reboot fastboot # Wait for "fastbootd" menu
$ fastboot delete-logical-partition product
$ fastboot erase system_a
$ fastboot flash system_a lineage-20.0-20250606-UNOFFICIAL-arm64_bvN.img
$ fastboot erase userdata
$ fastboot reboot
That was all there was to it!
Installing APKs
On the bgN variant you’re good to go. The bvN variant is going to need an app store, though. I like F-Droid, which will then allow you to install the Aurora Store. Be aware that, unless you set up MicroG, a lot of Play Store apps won’t work well: some won’t work at all.
Here’s a little shell function to install an APK over adb:
$ sideload () { adb push $1 /data/local/tmp/$1; adb shell pm install -r /data/local/tmp/$1; adb shell rm /data/local/tmp/$1; }
Handy things to know
img names
The last part of the .img filename tells you how it’s set up:
- bvN means “a/b booting, vanilla android, not rooted”
- bvS means “a/b booting, vanilla android, rooted”
- bgN means “a/b booting, google apps, not rooted”
… and so on. You always want the a/b booting version. The rest is up to you to decide. I went with vanilla, not rooted.
If you decide you want to root it, you’ll need to hack a vendor image with Magisk.
Lineage 21 didn’t work
Lineage-21.0-20250621 won’t boot for me. I had to use 20.
Getting into fastbootd without adb
Hold vol+ during boot to enter into “dead android” mode, it will say “no command”. Then press Power and Vol+ briefly to get into android recovery. From there, you can enter fastboot directly.
Links
I assembled most of this from the following links:
- TheRedDot - Unihertz Jelly Star running great with LineageOS 20 GSI
- Flapperbol - Jelly Star - Rooted!
- Flapperbol - Fix for red Chinese text on screen
And hours of conversations with Google Gemini :)