Unihertz Jelly Max Guide
February 11, 2025•3,674 words
Unihertz Jelly Max Guide
This is basically an "everything" guide for the Unihertz Jelly Max. I'll continue to update it as I use this phone and learn more about it.
Note: I misuse "ROM" to mean "Android distro", as is common parlance in this space.
Caveat Emptor
- You follow this guide at your own risk. I am not responsible for anything that goes wrong as a result of your use of this guide. I wrote it primarily for myself, and am sharing it in hopes that it helps others with this obscure phone.
- Do not use the stock ROM; it is full of Chinese spyware. You can verify this for yourself with Wireshark.
- I mean it! Do not put your SIM card into the phone, do not put a microSD card inside it, do not log in to any accounts, do not enable Bluetooth, and be careful about connecting to Wi-Fi networks: you want one that is client-isolated and not using a password you care about. I suggest setting up an old laptop as a Wi-Fi hotspot and running Wireshark, to honeypot the phone. This way you can see the effects of the Chinese spyware for yourself.
- The phone's kernel has not been open-sourced, which is a blatant violation of GPL2. This could just be extreme laziness or willful negligence, but it could also be deliberate (read: nefarious). Some dedicated folks have investigated the stock kernel and found what seems to be stolen code, so it's entirely possible that this is the sole reason the kernel is closed-source. But we cannot assume that there is nothing even more-nefarious in there, so you need to expect that there may be backdoors for the CCP in your kernel. Whether this is a serious problem depends on your threat model and the nature of the backdoors. If the backdoors do not operate over the network and require physical access to the device, you are probably fine if you don't live in or visit China and if you ensure you always have custody of your phone.
- Unihertz does not keep their devices up-to-date. If you want the latest security patches, you have to "update" your device yourself by using third-party ROMs.
Accessories
(If you're only looking for rooting/custom ROM instructions, skip this part.)
Screen Protector
The phone comes with two screen protectors. These are likely your best bet as far as protectors go. There are others on the market, but at this time few have reviews, and they come from no-name "brands". This makes them risky buys. The few that do have reviews are people complaining that the protectors were plastic when they were advertised as glass.
Case
Get this case.
- The stock case has no bezel to protect the screen, which makes it almost useless; the case I'm recommending has a substantial bezel around the display. A good display bezel is very important with this device, because this phone is so rare in the US that you may never be able to replace its display should it crack.
- The stock case does have a bezel around the camera, but the case I'm recommending completely covers the camera bump minus cut-outs for the lenses/flash/speaker, and that's substantially more protection than is offered by the stock case.
- The stock case has a lanyard mount that is located right where a right-handed person's ring finger naturally sits, which is really uncomfortable/unpleasant; the case I'm recommending has the lanyard port on the right.
- The stock case is translucent, which while seemingly a good idea, in practice means that you see these awkward air pockets because the case never sits perfectly flush against the phone; the case I'm recommending is opaque, which hides this effect; and it even has small cut-outs on the backs of the side buttons so that you can still see which button is red.
- The stock case's cut-outs do a poor job aligning with what they're protecting; the case I'm recommending does a reasonably okay job of that.
- The stock case's raised surfaces (like the buttons and lanyard) are sharp and abrasive; the case I'm recommending has smooth protrusions, and they feel a lot nicer on your skin; yet, they are not so smooth that you cannot feel them — it's a great balance.
- Both cases have an unsightly line around their edges from their manufacturing process; the stock case's is slightly more-feelable.
- In order to prevent the case I'm recommending from making plasticky sounds as you use it, you need to apply a piece of double-sided tape to each of its long sides; the material it's made from (TPU) is just not rigid enough to stay flush against the phone without adhesive.
- If you want to be able to see the notification/charging LEDs, you will have to punch two holes into the case. A leather punch is ideal for this. To mark the holes, stick something 3D, adhesive, and small (like a bedazzle rhinestone) over each LED, put the case on, mark where the bumps are, remove the case, punch the holes. The LEDs are each 1cm off from the flat part of the case and about 3cm below the bottom edge of the cutout for the fingerprint reader.
Case Accessories
- If you need a ferrous plate so that you can mount your phone to a magnet, the following are likely your best options for those (just be aware that this will disable the NFC reader; then again, flashing a custom ROM already does that anyway):
(Note that you should prefer sticking it to your case instead of to your phone, since this'll give you closer contact with the magnet, which is important when mounting a heavy phone like this.)
- This has two 30mm plates, a 3M adhesive, great reviews, and an affordable price ($5). It will fit on the back of the phone or the case at the dead-center point without obscuring the fingerprint scanner, but it will make the phone slightly tippy at the bottom during use (You can avert this by applying both plates to the back of the phone.). Aesthetically it matches all the other circles on the back.
- This has eight 35mm×45mm plates, a generic adhesive, no reviews, and a higher price ($7). It will fit on the back of a case (not the bare phone), and will make for a more-stable surface when the phone is flat on a table, but you will feel it when you're holding your phone. Aesthetically it kind of balances the camera bump.
- If you want your phone to be visible in the dark when upside-down, you can add glow-in-the-dark tape. The best place to add this is either over the fingerprint sensor (which is nonfunctional anyway when using a custom ROM), or on the unused section of the camera bump (This option will require punching a hole in the case.). Either option will also give anyone you photograph in the dark somewhere near to the lenses to look, which will improve eye-contact in the resulting photo(s). You'll want to use a mallet punch for the custom hole option, and punch from the inside. On mine, I also added glow-in-the-dark tape adjacent to the charging port, to make it easier to plug it in in the dark; and glow-in-the-dark tape beneath the button cutouts and lanyard holes, for fun.
- If you want to decorate your case, your best option is to cover the back of your phone in various colors of glow-in-the-dark tape, and punch shaped holes into the back of the TPU. This gives you all the benefits of stickers with no risk of peeling.
Buttons
Press and hold the following buttons when the device is powered-off to get the following outcomes:
- Power: Boot to OS
- Power + Volume-Up: ????
- Power + Volume-Down: Boot to some sort of test menu (it's in Chinese)
- Red: Choose whether to boot to OS, Recover, or Fastboot.
- This menu says to use volume-up and volume-down, but you need to use red instead of volume-up.
Setup
Warning: Do not format partitions, ever. (I have heard that this device does not play nicely with formatting.)
Updating the Phone
Note: Even though we're going to run a custom ROM, it is still important to update your phone as much as possible beforehand. The reason for this, is that GSI ROMs do not replace everything on the phone, which means you're stuck with the kernel, drivers, etc you had before flashing that ROM. So, you want to make sure these are fully up-to-date before you flash.
- Repeat the following subsections until you have no more available updates.
Updating Android
- Go to Settings.
- Scroll to the bottom.
- Select "System".
- Select "System update".
- Select "Check for update".
- After a brief wait, you will be informed whether you are already up-to-date, or whether you need to update. If the latter, this screen will inform you on how to proceed.
Updating Unihertz Stuff
- Go to Settings.
- Scroll to the bottom.
- Select "About phone".
- Select "System update".
- Select "Check for updates" if this doesn't happen automatically.
- After a brief wait, you will be informed whether you are already up-to-date, or whether you need to update. If the latter, this screen will inform you on how to proceed.
Preparing the Phone
- Go to Settings
- Scroll to the bottom
- Select "About Phone"
- Scroll to the bottom, tap "Build number" repeatedly; this will eventually unlock the hidden developer options menu.
- Hit the back button.
- Select "System".
- Select "Developer options".
- Select the search icon in the top right.
- Type "OEM".
- Select "OEM unlocking".
- Enable it.
- Select the search icon in the top right.
- Type "USB".
- Select "USB debugging".
- Enable it.
Preparing your Computer
Note: The stock ROM cannot be trusted, which means we need to treat the phone ootb similarly to how we'd treat a flash drive we found laying in a parking lot. Honestly the entire device in general can't truly be trusted, but for reasons of practicality, we're going to have to pretend it can be once we get custom firmware onto it.
- Download Linux Mint.
- It doesn't matter what desktop environment you choose.
- Verify that the download's checksum matches the one on the website you got it from. If it doesn't, then your image cannot be trusted and you need to redownload.
- Flash Linux Mint to a flash drive.
- Remove all hard drives from the computer you want to use to modify your phone.
- Boot from the flash drive you prepared.
- If needed, change your keyboard layout.
- Connect to the Internet.
- Open a terminal.
Run the following commands:
sudo apt update -y sudo apt dist-upgrade -y sudo apt install -y adb fastboot
- Note: You can skip
apt dist-upgrade
if you are low on RAM. Partial upgrades are suboptimal, but you should be fine.- If you get errors about running out of disk space after running this, then you don't have enough RAM.
- In my experience, 8G isn't enough but 16G is. And based on
free -h
, anything less than 6G will require a different distro than Linux Mint.
- Note: You can skip
Unlocking the Bootloader
(source)
- Connect your phone while it is powered-on.
- Unlock your phone.
- Approve the USB debugging prompt.
- Run the following command and write down what it tells you:
adb shell "'getprop' | grep -e 'ro.build.flavor'"
- You'll need this knowledge later. EEA (EU) and TEE (non-EU) often have different downloads. Pay attention when downloading things, and if you see "eea" or "tee" anywhere, get the one that matches what you got from this command.
- source
- Run the following command:
adb reboot bootloader
- Wait for your phone to boot into its bootloader. (It should be a screen with the Unihertz logo in the middle and "Powered by Android" with the Android mascot at the bottom.)
- Run the following command:
fastboot flashing unlock
- WARNING: This will wipe all data on the device.
- Immediately after running that command, press the volume-up key to confirm. (I timed it, and you have about 5.5 seconds to do this. If you miss the timeout window, it's okay; you can always run the command again.)
- Stay in this state for the next step.
Flashing a Custom Recovery
Note: Do not skip this; recovery is a way to ensure you can always use ADB, even if you completely bork your main OS.
- Download the latest release here.
- If you don't see what you want/need, you will have to build it yourself. See the project's ReadMe for details on how to do that.
- Extract the image and the checksum.
- Run the following command:
fastboot flash vendor_boot vendor_boot.img
- Wait for that to finish.
- Run the following command:
fastboot reboot recovery
- Wait for your recovery to load.
Flashing a Custom ROM
Note: At the time of writing, only Project Treble (GSI — Generic System Image) builds of Android are available for the Unihertz Jelly Max. In the future, there may be non-generic ROMs available. Should this ever happen, you should prefer the non-generic ROMs.
Sources: 1, 2, 3
Note: I worked with the mksuper dev to try to get it working for the Jelly Max, and while a lot of progress was made, the resulting super is still not bootable. If you would like to help, please consider joining his Discord. It would be handy to have it working so that the Jelly Max can be supported by Gargoyle's upcoming successor, Jinn.
Preparation
- If you have less than 16G of RAM, insert a spare microSD card or USB drive that has at least 8G free into your computer. You'll want to use this as the location for all the following downloads.
GSI ROM
- Download a GSI ROM (I have a list at the end of this guide.). You want one that is arm64, BgN/BvN, and A/B.
- "v" for "Vanilla" and "g" for "Gapps".
- Note that the "vanilla" (BvN) version still relies on Google for a few things (like GPS, DNS, etc). You should be able to manually degoogle these with Magisk/Lsposed modules later.
- You don't want one that ends in "S"; you already have root via Magisk.
- "v" for "Vanilla" and "g" for "Gapps".
- Open a terminal in the directory you downloaded this file to.
- Run the following command:
xz -dvv "$GSI.img.xz"
- Replace
"$GSI.img.xz"
with the path to your compressed ROM image.
- Replace
Stock ROM
- Download the latest official ROM image.
- Open the file you downloaded.
- Copy/paste the
init_boot.img
file into the same directory as your download.
Rooting
Note: This is not optional; you need this to boot, and you need this in order to get some parts of the phone to work properly. Yes, this presents a pretty serious security risk; but it's a trade-off of using GSIs vs device-specific ROMs.
Note: If you're paranoid about the stock ROM, you can use Magisk on a different phone to patch init_boot.img
. You can also optionally try to skip the step where you boot into the stock ROM to verify Magisk is working.
Sources: 1, 2
- Boot your phone into the OS.
- Download Magisk.
- Install it.
- Transfer the
init_boot.img
file from the official firmware (downloaded in the previous subsection) to the phone.- It has to be
init_boot.img
, notboot.img
— patching the latter will result in a boot loop.
- It has to be
- Open the Magisk app.
- Select "Install".
- Select "Patch file".
- Select
init_boot.img
. - Rename the output file (which should be something like
magisk[...].img
) toinit_boot.new.img
. - Transfer the file back to your computer.
- Get your device into fastboot if it isn't already there.
- You can do this from the OS or from recovery by running
adb reboot bootloader
.
- You can do this from the OS or from recovery by running
Run the following commands:
fastboot flash init_boot init_boot.new.img fastboot reboot
When your phone boots, verify that Magisk is working by opening the Magisk app. Follow its instructions, and allow it to automatically patch your boot if it asks to. Restart when it tells you to.
Repeat the previous step until Magisk is happy and doesn't prompt you to do anything else.
Flashing
- Boot to fastboot.
- You can do this from the OS or from recovery by running
adb reboot bootloader
.
- You can do this from the OS or from recovery by running
- Run the following command:
fastboot reboot fastboot
- This will bring you into fastbootd, which is a special mode that allows you to flash to logical partitions inside the "super" partition.
Run the following commands:
fastboot erase system_a fastboot erase system_b fastboot flash system_a "$IMG" fastboot reboot
- Replace
"$GSI.img"
with the path to your ROM image.
- Replace
Troubleshooting
If you experience issues booting, you can try the following:
- Boot to fastboot.
- You can do this from the OS or from recovery by running
adb reboot bootloader
.
- You can do this from the OS or from recovery by running
- Extract
vbmeta.img
from the stock ROM archive. - Run the following command:
fastboot --disable-verity --disable-verification flash vbmeta vbmeta.img
Wrapping Up
- (Optional) Reformat the flashdrive you used from your Linux Mint live environment, while it is running.
- This step is just out of an overabundance of caution, and protects you against any malware the untrusted stock ROM may have loaded onto the flashdrive while it was connected.
- Power off your computer, and re-insert your hard drives.
Fixes
Calls
(source)
Note: It is currently unknown which of these is/are the true fix(es) for the calling issue. I recommend trying each individually to isolate what is actually necessary.
- Settings -> IMS Features -> Request IMS network: Enabled
- Settings -> IMS Features -> Force the presence of 4G calling setting: Enabled
- Settings -> Misc Features -> Telephony -> Allow binder thread on incoming calls: Enabled
- Settings -> Misc Features -> Telephony -> Disable voice call en route: Enabled
- Reboot phone.
- Settings -> IMS Features -> Install IMS APK for MediaTek R+ vendor
- (Optional) Run this command:
adb shell settings put global restricted_networking_mode 0
- Probably unnecessary.
- Reboot phone.
- (Optional) Settings -> Misc Features -> Telephony -> Automatically restart RIL
- Might help with calls dropping or network disconnecting.
VoLTE
Disable battery optimization for:
- com.mediatek.ims.ImsApp
- com.mediatek.frameworkresoverlay (source)
Magisk Modules
- Download this Magisk module for telephoto and raw support.
Broken Features
These features are currently broken and lacking a fix.
- Fingerprint scanning.
- NFC?
- Notification LEDs.
Updates
- You will not be able to flash any future Unihertz updates verbatim; rather, you will need to flash them piecemeal from fastboot and fastbootd. Make sure that you Magisk-patch init_boot before flashing it.
- You can dirty-flash updates to your GSI the same way you flashed the GSI originally, via fastbootd.
Changing ROMs
- Boot to fastboot.
Run the following commands:
fastboot erase super fastboot flash super super.img fastboot reboot fastboot fastboot erase system_a fastboot erase system_b fastboot flash system_a "$GSI.img"
super.img
should be the stock super."$GSI.img"
should be the path to your chosen GSI.
Troubleshooting
- If your ROM gets stuck in a bootloop, run this command from a terminal on your computer:
adb wait-for-device shell logcat > logcat.log
- You can then inspect the log to try to figure out what's causing the loop.
ROMs
Always remember: binary releases are not guaranteed to be the same as what you see in the public source code, and an individual may actually be a team.
Make sure you actually trust your ROM before you start logging into things on it. An untrusted ROM can steal anything you put on it: passwords, credit card information, etc.
Booting
- MisterZtr's LineageOS 22.1 GSI
- Android 15, based on LineageOS
- Project is new and may not be around for long.
- Releases are frequent.
- It works on the Jelly Max.
- Makes some connections to Chinese Google, though.
- crDroid GSI
- Android 14, based on LineageOS
- It boots, but android.process.media keeps stopping, which results in periodical toasts and an inability to download things from the web browser.
- Hits some sussy URLs in the background (dkyi9ia06ndoc.cloudfront.net, dzcyjldwirkno.cloudfront.net). Can't be trusted until those are accounted-for.
Not Booting
- TrebleDroid
- Android 15. Based on AOSP.
- This is what nearly all other GSIs are based on.
- Mostly developed by a single engineer in France.
- On the Jelly Max, it fails to boot, then loads to recovery.
- iodé
- Android 14. Based on LineageOS.
- Is based on Andy Yan's GSI; see below for info on that.
- Will go defunct if Andy Yan's goes defunct.
- Receives minimal development and support from iodé.
- On the Jelly Max, it bootloops because
FaceServiceRegistry
is colliding with a different biometric with the same ID/class.
- Andy Yan's LineageOS GSIs
- Various versions of Android
- Project has been around for years, and will hopefully be around for many more.
- Developed out of China. May have similar concerns to the stock Unihertz ROM? Unsure because was unable to test, due to the fact that it wouldn't boot.
- The LOS 21.0 versions (light and TD (regular)) both fail to boot; they then load to recovery.
Untested
- Gargoyle
- Android 13, and based on LineageOS.
- This is one version lower than the Jelly Max launched with, and is liable to cause issues.
- Is explicitly designed for Unihertz devices.
- Is not designed for the Jelly Max.
- I haven't tested this on the Jelly Max.
- Android 13, and based on LineageOS.