▲ 11 r/HyperOS

[Question] What's the best Liquid Glass theme for HyperOS 3?

Something that looks consistent, doesn't fake 5G connection, and has nice liquid glass control center, lock screen, and clock widget maybe? What's the best find out there?

reddit.com
u/47th-Element — 1 day ago

Modify logo_a.img on Mediatek devices running HyperOS 3, Android 16.

Edit: I found this program which works fine!

And by works I mean it can unpack and repack a logo.bin file (the one that comes with the firmware files, not the direct dump of logo_a.img). However, in the absence of a preloader exploit for my device (Redmi 13, mt6768, HyperOS 3), I won't be actually flashing the produced logo.bin because of the fact that I won't be able to recover the phone at home if it bricks (I'll have to visit Xiaomi aftersales center, which is something I don't have the time nor the energy for to be honest).

Original text: Is there a new tool/guide that is tested on Xiaomi devices (new ones), unfortunately my device is restricted on preloader/Brom level, I only have fastboot, and I am afraid that I may fuck things up so is there a reliable solution?

reddit.com
u/47th-Element — 2 months ago
▲ 13 r/HyperOS

[Discussion] How much space are "System Files" taking on your phone?

I actually found out that they are not necessarily "System Files" at all! Like one time I pushed some files into /storage/emulated/0/Android/data/ using adb and they were counted as system files, even though they should be counted as "Apps and data" cause they were essentially some app's data.

u/47th-Element — 2 months ago

How do I prevent these annoying update reminders from showing up?

I'm not big on updating regularly, and these pop-ups add annoying friction every time I start up an app. Is there a root or non root way to suppress them for good?

u/47th-Element — 2 months ago

Risk Assessment of Daily Driving with SELinux as Permissive

My phone (Redmi 13, A16) is unlocked, rooted, has a custom GKI with out of tree drivers and a port of TWRP that doesn't support /userdata decryption, for those reasons I already disabled data encryption to gain access to data in recovery, and so far I'm keeping SELinux permanently permissive to avoid context denials while loading my custom drivers and using my external gadgets.

The recent Malicious AUR Attacks got me thinking about security, my phone is already stripped out of some security layers like: Bootloader Locking, AVB, Data encryption and lastly SELinux!

I kinda can't revert any of those without losing something, and I understand the risk that comes with each of those stripped security layers except SELinux. Is it really dangerous to have it Permissive all the time? I've been doing so for months and nothing happened but am I just lucky or is it not as important as it seems?

reddit.com
u/47th-Element — 2 months ago
▲ 32 r/HyperOS

[Discussion] Two ways to hide the empty space under the keyboard (and their trade offs)

First off, this is a GUIDE. I know this question has been asked (and answered) so many times but I did some experimentation on this and wanted to share the findings.

When you use Gesture Navigation and hide the gesture line, it leaves this empty space under Gboard whenever you are typing anything which is annoying to some (including me) and objectively a bad use of screen space. In this guide I'll share two mothods to eliminate this ugly and redundant space (one for rooted users, one without root) and the trade offs to each one.

First, NO ROOT Method:

You'll need a PC with android tools on it (adb), or Shizuku and Canta, if it is the first time ever you read these names I suggest you do a quick Google search, explaining them is beyond the scope of this guide.

  1. Enable Developer Options and USB Debugging on your phone.

  2. Connect your phone to a PC and run "adb shell pm uninstall --user 0 com.android.systemui.gesture.line.overlay" in a terminal (or skip this step and use Canta with Shizuku to uninstall the package).

  3. Switch to Gesture Navigation from the Settings.

  4. Toggle "Hide Full Screen Indicator" in the settings, if you can't find it use the search bar.

  5. Done!

Pros:

  1. Doesn't require root, doesn't void warranty.

  2. Easy to apply.

  3. Doesn't require unlocking the bootloader.

Cons:

  1. You lose a quality of life feature called Rotation Suggestion, which is a small floating button that appears on your screen, basically asks whether you want to rotate the screen content when the device itself is rotated while auto rotation is locked.

  2. You lose another feature known as Circle To Search.

Second, ROOT ONLY method:

You'll need a device with an unlocked bootloader and root installed using a modern solution (Magisk, KernelSU, APatch).

  1. Switch to Gesture Navigation from the Settings and DO NOT toggle "Hide Full Screen Indicator".

  2. Flash this module: https://github.com/DanGLVK/Hide-Navbar

  3. Reboot.

  4. Done!

Pros:

  1. Relatively easy if you already unlocked the bootloader and rooted.

  2. Keeps the Rotation Suggestion feature.

  3. Keeps Circle to Search? (Not tested, needs to be confirmed!!)

Cons:

  1. You lose navigation ability in Ultra Battery Saver mode, because it automatically reverts you back to the 3 buttons navigation, and the root module makes the whole navigation area invisible, therefore you're left with no navigation at all (effectively makes navigating apps in Ultra Battery Saver impossible!).

Both methods were tested on Redmi 13, running HyperOS 3.0.301.0, root modifications may behave differently on other devices and versions of HyperOS, I'm not responsible for bricked devices, dead sd cards, thermonuclear war, or you getting fired because the alarm app failed. DO IT AT YOUR OWN RISK.

u/47th-Element — 2 months ago

[GUIDE] PIN/PATTERN/PASSWORD not recognised after TWRP restore on Modern Android

This is a common issue after performing a TWRP data restore, you boot the device, it asks you for your old PIN or password, and even if you provide the right one, it says it is wrong.

I have recently been in this situation on my Redmi 13, Android 16 (HyperOS 3.0.6), I gave it to the aftersales center for a screen replacement, they reflashed it as a part of their "protocol", and when I restored the backup I had made before, I found myself locked out.

Most of the guides you'll see elsewhere are old and probably will not work on new Android versions, just like it didn't work on mine. So I decided to share the extra steps I took to solve this problem.

Step 1: Boot Recovery (TWRP).

Step 2: Go to Advanced -> Terminal. Or connect to a PC and run "adb shell".

Step 3: Mount data

Run: twrp mount /data

Step 4: Data decryption.

Almost all new Android devices have their data encrypted, to access/modify it outside of Android you need a build of TWRP that supports data decryption, you'll need to run: twrp decrypt

Unfortunately this may fail on some ports. In my case my data was not encrypted at all (I disable encryption in /vendor/etc/fstab)

Step 5: inspect the following paths.

I. /data/system

You may find multiple locksettings.db* files like

locksettings.db-wal

locksettings.db-shm

locksettings.db

Delete them all! run: rm /data/system/locksettings.db*

II. /data/misc/keystore or /data/system/keystore

Delete their contents

rm -fr /data/misc/keystore/* or /data/system/keystore/*

III. /data/system_de/0/spblob

Same thing, delete this folder.

rm -fr /data/system_de/0/spblob

IV. /data/misc/gatekeeper/

If found, delete its content as well

rm -fr /data/misc/gatekeeper/*

V. /data/system_ce/0/fingerprint/

You'll find this if you previously set up fingerprints. Delete it as well.

rm -fr /data/system_ce/0/fingerprint/*

Reboot and you should be greated with your lock screen saying "Swipe to Unlock"! ^^

reddit.com
u/47th-Element — 2 months ago
▲ 0 r/Xiaomi

Ranting: I hate Xiaomi

I bricked my old Tecno phone numerous times, and I never had to take it to a repair shop or service center to unbrick it. Meanwhile in less than a year I went to Xiaomi's repair centers twice to unbrick my Redmi.

The thing is, with bootloader unlocking there will always be mistakes. No one (no matter how skilled they are) can avoid bricking their device, especially when it is relatively new. But Xiaomi makes it impossible to fix your device, they already restricted BROM and Preloader flashing, leaving us only with Bootloader flashing which is fragile and usually the first thing that breaks anyway.

I understand that Xiaomi isn't the only company that locks down their devices, however I'm never buying a Xiaomi again.

reddit.com
u/47th-Element — 3 months ago

Do you guys like the whole rivalry thing with r/linuxsucks101?

if you do, keep what you're doing, but if you don't or you are just annoyed by the numerous 'I got banned' screenshots like me then please stop engaging!

this kind of thing feeds on your reaction, it just motivates them to continue their silly stuff, don't comment or post there, maybe mass downvote the shit out of their content but don't engage. And for the sake of Arch Linux gods no more screenshots.

Let Microslop users enjoy Microslop, honestly it's their loss that they are still blind to the beauty of Linux.

reddit.com
u/47th-Element — 3 months ago
▲ 30 r/HyperOS

[GUIDE] How to apply a custom boot animation on HyperOS (No Root/Root)

This is fairly easy on HyperOS thanks to the system themes app, which allows you to change the boot animation when you apply a theme that includes one, but if you are on the global ROM like the most of us, you cannot import a custom boot animation to your liking, you're restricted to the ones on the store. So here I'll be discussing two easy methods (one rootless, one requires root) to get around this restriction.

First method (NO ROOT):

  1. Download a theme that has a boot animation:

In this example, we will be using this theme (theme://zhuti.xiaomi.com/detail/530deb19-19ba-40f5-80cf-8f2b141d0591), but it can literally be any theme that has a boot animation. Click that link or copy it to a browser, it should redirect you to the themes app, download but DON'T APPLY the theme.

  1. Locate the boot animation folder:

(On old Android versions, this can be done with any file manager, on the new versions you'll need adb or mtp connection).

Navigate to the following directory: /storage/emulated/0/Android/data/com.android.thememanager/files/MIUI/theme/.data/content/bootanimation/

Inside the folder, you will see this file: 90ab0dfb-93ff-45a9-977f-66d253e63c48.mrc, this is the boot animation of the theme.

  1. Replace that boot animation with your custom bootanimation.zip file while keeping the original filename you found earlier (90ab0dfb-93ff-45a9-977f-66d253e63c48.mrc).

  2. Apply the new boot animation!

Open the theme app, go to Customize Theme, select Boot Animation, choose the Pics V14 and Apply. That's it! You should see the new boot animation on the next reboot!

Second method (requires root!):

Perform all these actions in a root shell!

  1. Create these directories:

`mkdir /data/adb/boots`

`mkdir /data/system/theme/boots`

  1. Put your custom boot animation in the designated folder:

`cp /path/to/bootanimation.zip /data/adb/boots`

  1. Set the right permissions and ownership:

`chmod 775 /data/system/theme/boots`

`chmod 775 /data/adb/boots`

`chmod 755 /data/adb/boots/bootanimation.zip`

`chown system_theme:system_theme /data/system/theme/boots`

`chown system_theme:system_theme /data/adb/boots`

`chown system_theme:system_theme /data/adb/boots/bootanimation.zip`

  1. Create a script with these commands in /data/adb/service.d to inject the animation on boot time:

`#!/system/bin/sh`

`# Mount custom boot animation early on`

`nsenter -t 1 -m -- mount --bind /data/adb/boots /data/system/theme/boots`

`# Wait until system boot is completed`

`while [ "$(getprop sys.boot_completed)" != "1" ]; do`

`sleep 5`

`done`

`# Wait extra 15s`

`sleep 15`

`# un-mount the custom boot animation before system clears it`

`nsenter -t 1 -m -- umount /data/system/theme/boots`

  1. Make that script executable:

`chmod +x /data/adb/service.d/bootanim.sh`

That's it! Reboot your phone to see the new boot animation!

Notes: the reason why I suggest you put the bootanimation.zip file in a separate /data/adb/boots folder then mount it during boot, then un-mount it, is because one of system services clears the file later on, this is basically a hacky workaround.

P.S. if you like the boot animation in the picture, you can get it from here

u/47th-Element — 3 months ago

Is Xiaomi disabling Find Device after bootloader unlock a punishment?

I understand that other solutions like Google's find hub are still available but I need to understand the technical reason why the pre-installed Xiaomi's find device system app ceases to work after bootloader unlocking, because it really feels like some sort of punishment or an attempt to discourage bootloader unlocking which wouldn't be fair when they could warn about the potential vulnerabilities that come with it so people are informed, while still maintaining the functionality of remote find device app.

u/47th-Element — 3 months ago
▲ 1 r/Xiaomi

Is Xiaomi disabling Find Device after bootloader unlock a punishment?

I understand that other solutions like Google's find hub are still available but I need to understand the technical reason why the pre-installed Xiaomi's find device system app ceases to work after bootloader unlocking, because it really feels like some sort of punishment or an attempt to discourage bootloader unlocking which wouldn't be fair when they could warn about the potential vulnerabilities that come with it so people are informed, while still maintaining the functionality of remote find device app.

reddit.com
u/47th-Element — 3 months ago
▲ 16 r/termux

Experiment: Turn any Kiwix Zim archive into an offline source of knowledge for AI.

This technically works on normal linux environments too, but it's made for termux. I wanted to experiment with local ai models but I got a half assed decade old phone so not a decent power horse for AI so I was stuck with small weak models that often lack knowledge about lots of stuff.

And since I wanted the setup to be local, I had to come up with something creative and here's how it went down:

  1. I downloaded Wikipedia simple English no pics offline library (literally 1gb only), and another library about cooking (but you can download anything else you like from kiwix public library).

  2. Compiled spacy in termux (it was hell!) along with llama.cpp.

  3. Loaded spacy's small fast model: spacy.load("en_core_web_sm"), this is the fast engine that will be used to extract keywords for offline searching.

  4. Wrote a simple script that uses libzim.search to find an article or a snippet of text that contains keywords in a couple of seconds (I'm not very good with python so this part was AI assisted)

And then I made a front end using node-red, with two modes:

I. Basic: [PROMPT] -> [AI Model] -> [RESPONSE].

II. Advanced (search): [PROMPT] -> [SPACY KEYWORDS EXTRACTION] -> [ZIM SEARCH] -> [AI Model] -> [RESPONSE].

Both the search and spacy only take a couple of seconds to work if you keep spacy engine loaded in the background instead of loading it every time. The results were quite satisfactory, the ai model is a bit smarter, but that depends on how good the Library you downloaded, and the context window for the model you're using, if it's too tight the model will get confused and hallucinate!

The experiment was inspired by this repo but it works way faster (I control the amount of text provided to the ai, and no need for LLM python library overhead).

u/47th-Element — 3 months ago

Root Detection: From “Congratulations” to “Warning”

You can call me old but back in the good old days when I installed Chainfire's SuperSU (it was the primary root manager at the time) on my very first Android device, a 0.5GB ram Samsung Galaxy, and ran this exact root checker on the left side of the picture and got the congratulations, I was ecstatic!

Fast forward to 2026, root detectors now show warning signs, exclamation marks, risk or threat detected messages, it's crazy how some odd 10 years changed our perspective on root detection from good to the exact opposite. There isn't really a point behind this post, I'm just an old power user ranting and reflecting on the change, and yes slightly missing the good old days.

u/47th-Element — 3 months ago
▲ 231 r/androidafterlife+2 crossposts

For the love of tech!

I had this good old Tecno KD6 phone for about 6 years when I noticed that the storage chip (emmc) was stable but heavily worn (90-100% of estimated lifetime), so I had to buy a new device.

However I didn't want to just throw this little soldier in a drawer, so I came up with the idea to use it as if it was a Raspberry Pi (but offload heavy writes to ram or sdcard) after all, they both run the Linux kernel.

So here is how it went down:

I started with surgical debloating, removing every little package and application physically, until I was left with nothing but SystemUI, which I ultimately disabled, now the screen doesn't show anything (e.g. the phone is headless).

Then I rooted the device with Magisk, installed a few modules (busybox, advanced charging, etc), and wrote a script in /data/adb/service.d that runs fstrim, undervolting and some other kernel level tweaks, then starts another script I wrote (init) inside termux, which starts a daemon I wrote that works very similarly to SystemD on Linux distros, it initiates all my enabled self hosted services, and starts a wifi repeater.

As of now, I have access to all of the following features whether locally (within the wifi repeater) or remotely (through my domains):

  1. a feature rich, good looking dashboard with real time stats about the device and access to most of the services (Node-Red)

  2. A remote root shell.

  3. Extensive control over wifi, the wifi repeater, speed limits for clients and blocklist.

  4. Self hosted AdGuard Home for blocking ads on the WiFi repeater network.

  5. Remote filesharing: local SFTP, remote google drive like filesharing (using FileBrowser web binary), and remote/local book library (self hosted Kavita).

  6. Remote and local two-way audio streaming using WebRTC logic, with self hosted stun server, works like audio calls without a sim card or any social media API.

  7. Remote control over the camera (using Termux-API).

  8. Remote media play and TTS voice messaging to the headless device, supporting multiple languages (espeak-ng, robotic I know, but fast).

  9. Remote download service (Aria2), to start downloading remotely to the SD card of the headless device.

  10. Remote unlimited OCR (the only limit is the device's CPU speeds), supporting multiple languages.

  11. Remote format conversions (FFmpeg as backend), allows for converting various video and audio formats.

  12. Remote OSINT (usernames, emails, phone numbers), using three different backends (educational purposes).

  13. Remote hash cracking frontend (John as backend), also for experimentation and educational purposes.

  14. Local/remote self hosted Sillytavern (a website for AI chatting, with one or more models in the same time).

  15. Fully offline voice assistant with a local AI model, capable of performing predefined voice commands.

  16. A job schedule front end (Crond as backend) to schedule jobs and tasks.

  17. A cloud VM (debian armv7 chroot) accessible locally or remotely through pinggy or cloudflare browser rendering, with hardware acceleration (gl4es and Virgl) and TurboVNC for display.

  18. Local and remote ssh (through cloudflare tunneling).

  19. A task manager, theming settings, and other stuff. Along with Auto start (interacts with my systemd script to enable/disable services).

  20. Local wireless adb + remote adb (cloudflare as well).

  21. Advanced power menu with confirmation dialogs.

The best part? Completely free! I didn't pay anything, even the domains were free. I just gladly spent some time and effort into something I love, I hate for an old piece of hardware to sit in a drawer, that's why I did all this. It's not time for this good old soldier to retire yet!

P.S. if it wasn't clear, all the pictures you are seeing are captured from another device, the main one that is hosting everything is headless.

u/47th-Element — 4 months ago

My Phone is Redmi 13, running Android 16, rooted (KernelSU Next, built in, latest version, using Magic Mounts as meta), SoC is Mediatek (MT6768).
It runs a custom GKI kernel I built, and recently I disabled user data encryption (because my own port of TWRP does not support decryption) I'm not sure if this is connected but I am giving context.

I noticed that my phone reboots every some hours when it goes idle, I inspected the logs and I found:
04-27 15:20:59.098 520 4046 vold: kernel: 6.6

04-27 15:20:59.098 520 4046 vold: idle maintenance started

04-27 15:20:59.497 4072 4072 vold: Vold 3.0 (the awakening) firing up

04-27 15:20:59.501 4072 4072 vold: Detected support for: exfat ext4 f2fs vfat

04-27 15:20:59.622 4072 4072 vold: [libfstab] Using Android DT directory /proc/device-tree/firmware/android/

04-27 15:20:59.623 4072 4072 vold: [libfstab] ReadDefaultFstab(): target default fstab path=/vendor/etc/fstab.mt6768

04-27 15:20:59.625 4072 4072 vold: [libfstab] Warning: unknown flag: resize

04-27 15:20:59.631 4072 4072 vold: VoldNativeService::start() completed OK

04-27 15:20:59.637 4072 4072 vold: VendorVoldNativeService::try_start() completed OK

04-27 15:21:00.032 4072 4094 vold: Found disk at /devices/platform/11240000.mmc/.../mmcblk1 but delaying scan due to secure keyguard

04-27 15:21:00.842 4072 4072 vold: shutdown()++

04-27 15:21:00.842 4072 4072 vold: emulated;0 destroy++

04-27 15:21:00.842 4072 4072 vold: emulated;0 destroy--

04-27 15:21:00.842 4072 4072 vold: VolumeManager shutdown successed

04-27 15:21:00.842 4072 4072 vold: shutdown()--, rtn: 0

I have no idea why this behavior happens, I tried to disable idle maintenance but whenever I cancel the scheduled maintenance it gets rescheduled again later on, and I tried to disable the android server component (MountServiceIdler) since it is the one that triggers this, but then the device refuses to boot the next time (hangs at system boot animation).

any idea how to fix or what might be behind this? it never happened before I disabled the encryption but I'm not sure if it is the reason.

reddit.com
u/47th-Element — 4 months ago