Well, I was never much of a tablet person.
I’ve owned a couple of iPads before, and the main thing they did was collect dust on my shelf, which tells you exactly how important they were to me. But then the day came: I needed to sign some company documents quickly, and I was not happy with my drawing tablet anymore. I probably should have bought a newer one with a screen, but I’m a terrible enough artist that owning something that “advanced” felt almost insulting. Also, I wanted something portable.
That was it, I thought. I’m buying a tablet.
I walked into the store already sulking because I didn’t want to be there, saw the first one on the shelf for R$1,400, and without thinking too much, threw it into the cart.
I knew I was being robbed, in a way. I knew it cost more than it was worth. I knew our taxes are murderous. I also knew I didn’t even like tablets.
But I needed one.
All I needed was for Noteshelf to work.
In practice, the tablet quickly showed me the cruel reality of entry-level devices: a heavy system, bloatware, background services, unnecessary animations, built-in ads, duplicate apps, and an interface trying very hard to look premium on hardware that has absolutely no breathing room for that kind of nonsense.
The device in question is a Redmi Pad SE, running Android 15 / HyperOS. It has 4 GB of RAM, and it comes with that lovely marketing phrase: “4 GB + 2 GB,” meaning memory extension. It looks nice on the box, but in reality those extra 2 GB use internal storage as virtual memory. On a tablet with slower storage, that can become micro-stuttering.
And micro-stuttering is exactly what destroys the experience of writing with a stylus.
My disappointment had proven itself correct: I had bought a piece of crap. I had thrown money away, and I was pissed.
I tested the pen and noticed the delay. That killed me. So I went back to using the drawing tablet.
But this thing kept staring at me from the table, looking pathetic and saying: use me.
I had to do something.
The goal, then, was not to turn this tablet into an iPad or a top-of-the-line Galaxy Tab. That would be fantasy. The goal was more realistic: remove the system’s dead weight, reduce interference, cut useless processes, and make the tablet as fluid as possible for handwriting.
This article is the record of that process.
The Real Problem #
The problem was not simply “the tablet is weak.”
That would be a lazy explanation.
The problem was the sum of several things:
- 4 GB of RAM for a heavy modern system;
- HyperOS packed with Xiaomi services;
- duplicate apps for video, music, browser, notes, weather, scanner, and so on;
- telemetry and advertising;
- useless notifications;
- battery saving interfering with writing apps;
- system animations;
- memory extension using internal storage;
- the natural limitations of the Redmi Pad SE screen and pen.
In other words: the tablet does not have much muscle to begin with, and the system still wastes part of it on useless junk.
The idea was simple: if the hardware is limited, the system needs to be leaner.
Before Even Thinking About a Custom ROM #
My first idea was: “Can I install a lighter operating system on this thing?”
Yes, technically. The Redmi Pad SE uses the codename xun, and there are custom ROMs for it, including LineageOS and other unofficial builds.
But that comes with risks: unlocking the bootloader, wiping data, relying on a compatible recovery, and accepting possible bugs with touch, pen input, audio, camera, rotation, or battery.
And here is the important part: switching ROMs can make the system lighter, but it can also make the pen experience worse. On Android tablets, stylus performance depends a lot on the kernel, firmware, drivers, and manufacturer-specific tweaks.
So the decision was sensible: before going down the custom ROM route, I would debloat the system through ADB and tune what could be tuned.
No root.
No bootloader unlocking.
No irreversible hackery.
Confirming the Model with ADB #
First, I connected the tablet to Windows using ADB. Since I was using WSL, ADB inside Debian could not see the USB device directly. The simplest solution was to use PowerShell on Windows.
With USB debugging enabled on the tablet, I ran:
1adb devices
At first, it showed up as unauthorized. That is normal. The tablet displays a window asking you to authorize the computer’s RSA key. After accepting it, the result looked like this:
1List of devices attached
21c5e93eb device
Now ADB was working.
Then I confirmed the model:
1adb shell getprop ro.product.device
2adb shell getprop ro.product.model
3adb shell getprop ro.product.name
4adb shell getprop ro.build.version.release
5adb shell getprop ro.miui.ui.version.name
Result:
1xun
223073RPBFL
3xun_global
415
5V816
So:
- device: Redmi Pad SE;
- codename:
xun; - variant: global;
- Android: 15;
- interface: HyperOS/MIUI V816.
This confirmation is essential. Debloating or looking for ROMs without knowing the device codename is asking to do something stupid.
Saving the Package List Before Touching Anything #
Before removing anything, I saved the complete list of installed packages:
1adb shell pm list packages > "$env:USERPROFILE\Desktop\pacotes-redmi-pad-se.txt"
That creates a file on the Desktop with all packages. It is not exactly a system backup, but it helps a lot if I need to remember what was there before.
I also listed packages related to Xiaomi, MIUI, video, music, browser, games, ads, and similar junk:
1adb shell pm list packages | findstr /i "miui xiaomi msa analytics browser video music game getapps yellowpage"
That is when the trash collection showed up.
What I Decided NOT to Remove #
This part matters.
Good debloating does not mean deleting everything like an animal.
Some packages look useless, but they control critical parts of the system. Remove the wrong thing and you can break permissions, battery management, the launcher, touch behavior, system features, or even the pen experience.
I decided not to remove these packages:
1com.miui.powerkeeper
2com.xiaomi.touchservice
3com.miui.securitycenter
4com.miui.securitycore
5com.lbe.security.miui
6com.miui.securityadd
7com.miui.core
8com.miui.core.internal.services
9com.miui.system
10com.miui.home
11miui.systemui.plugin
12com.miui.notification
13com.miui.permissioncontroller.overlay
14com.xiaomi.account
15com.xiaomi.finddevice
16com.xiaomi.xmsf
17com.xiaomi.xmsfkeeper
18com.xiaomi.bluetooth
19com.miui.misound
20com.miui.daemon
21com.miui.misightservice
22com.android.systemui.overlay.miui
23com.android.settings.overlay.miui
24com.android.networkstack.overlay.miui
25com.android.wifi.resources.xiaomi
26com.google.android.wifi.resources.xiaomi
27com.android.inputsettings.overlay.miui
28com.miui.settings.rro.device.systemui.overlay
29com.miui.system.overlay
30com.miui.systemui.devices.overlay
31com.miui.systemui.overlay.devices.android
The most important one in that list is this:
1com.xiaomi.touchservice
If the goal is to improve handwriting, messing with something called touchservice would be idiotic. Maybe it is not directly responsible for the pen, but it is too close to the critical area to play games with it.
I also chose not to remove the wallpaper components:
1com.miui.miwallpaper
2com.miui.miwallpaper.overlay
3com.miui.miwallpaper.overlay.customize
4com.miui.miwallpaper.config.overlay
5com.miui.wallpaper.overlay
6com.miui.wallpaper.overlay.customize
7com.miui.aod
Could I have been more aggressive? Yes.
But the likely gain is small, and the chance of creating some annoying system behavior is not worth it.
The Main Debloat #
The removal was done with:
1adb shell pm uninstall --user 0 package.name
This method removes the app only for the current user. It does not physically delete the app from the system partition. That is good, because it usually allows restoration later.
The main block was this:
1adb shell pm uninstall --user 0 com.miui.analytics
2adb shell pm uninstall --user 0 com.miui.msa.global
3adb shell pm uninstall --user 0 com.miui.miservice
4adb shell pm uninstall --user 0 com.mi.globalbrowser
5adb shell pm uninstall --user 0 com.miui.videoplayer
6adb shell pm uninstall --user 0 com.miui.player
7adb shell pm uninstall --user 0 com.miui.yellowpage
8adb shell pm uninstall --user 0 com.xiaomi.payment
9adb shell pm uninstall --user 0 com.xiaomi.barrage
10adb shell pm uninstall --user 0 com.xiaomi.ugd
11adb shell pm uninstall --user 0 com.xiaomi.discover
12adb shell pm uninstall --user 0 com.miui.thirdappassistant
13adb shell pm uninstall --user 0 com.miui.bugreport
14adb shell pm uninstall --user 0 com.xiaomi.mtb
15adb shell pm uninstall --user 0 com.xiaomi.miralink
16adb shell pm uninstall --user 0 com.xiaomi.smarthome
17adb shell pm uninstall --user 0 cn.wps.xiaomi.abroad.lite
18adb shell pm uninstall --user 0 com.miui.fm
19adb shell pm uninstall --user 0 com.miui.fmservice
20adb shell pm uninstall --user 0 com.miui.screenrecorder
21adb shell pm uninstall --user 0 com.miui.weather2
22adb shell pm uninstall --user 0 com.miui.notes
23adb shell pm uninstall --user 0 com.miui.qr
24adb shell pm uninstall --user 0 com.xiaomi.scanner
25adb shell pm uninstall --user 0 com.google.android.apps.youtube.music
26adb shell pm uninstall --user 0 com.google.android.videos
Not everything was removed. Some packages returned this error:
1Failure [-1000]
That happened with a few apps like screen recorder, weather, notes, and scanner. It is not the end of the world. It just means the system blocked the removal of those packages for the current user.
The important stuff did come out:
- analytics;
- MSA/advertising;
- Mi Browser;
- Mi Video;
- Mi Music;
- Xiaomi payments;
- extra services;
- bug report tools;
- preinstalled WPS;
- FM;
- YouTube Music;
- Google TV.
That already clears out a decent amount of garbage.
What to Do When Failure [-1000] Shows Up #
My decision was not to push too hard.
You can try disabling instead of uninstalling:
1adb shell pm disable-user --user 0 com.miui.screenrecorder
2adb shell pm disable-user --user 0 com.miui.weather2
3adb shell pm disable-user --user 0 com.miui.notes
4adb shell pm disable-user --user 0 com.xiaomi.scanner
But if the system refuses, fine. The performance gain from those idle apps is small. Fighting protected system apps can quickly become a waste of time.
Debloating needs a goal. The goal here is handwriting fluidity, not winning a holy war against every Xiaomi package.
Rebooting the Tablet #
After removing the packages, I rebooted:
1adb reboot
This is mandatory. Testing after debloating without rebooting is a bad test.
Settings That Actually Matter #
Removing bloat helps, but it does not solve everything.
For stylus writing, some system settings are just as important as debloating.
1. Set the Refresh Rate to 90 Hz #
On the tablet:
1Settings → Display → Refresh rate
Select:
190 Hz
or:
1High
If the tablet is running at 60 Hz or using a conservative automatic mode, handwriting can feel more delayed. For pen input, predictability matters.
2. Disable or Reduce Animations #
First, enable Developer Options:
1Settings → About tablet → tap "OS version" several times
Then go to:
1Settings → Additional settings → Developer options
Change:
1Window animation scale: 0.5x
2Transition animation scale: 0.5x
3Animator duration scale: 0.5x
If the system still feels heavy:
1Off
This does not directly change pen latency, but it removes that dragged-through-mud feeling from the system.
3. Turn Off Memory Extension #
On the tablet:
1Settings → Additional settings → Memory extension
or:
1Settings → About tablet → RAM → Memory extension
Disable:
1Memory extension
Then reboot.
This part is counterintuitive, because marketing sells “more RAM” as a good thing. But on a device with slower storage, virtual memory can create micro-stutters.
For handwriting, micro-stutters are worse than an app reloading.
Better to have less multitasking and more immediate response.
4. Remove Battery Restrictions from the Writing App #
For Noteshelf:
1Settings → Apps → Manage apps → Noteshelf → Battery saver
Select:
1No restrictions
This also applies to Squid, JNotes, Nebo, OneNote, or Xodo.
If the system tries to save battery while you write, the experience can become bad. Fluid handwriting needs fast response, not aggressive power saving.
5. Disable Battery Saver While Writing #
On the tablet:
1Settings → Battery
Disable:
1Battery saver
2Ultra battery saver
If there is a performance mode, use it while writing.
You cannot demand low latency while the system is trying to cut processing.
6. Reduce Useless Notifications #
On the tablet:
1Settings → Notifications & status bar → App notifications
Disable notifications from apps that do not need to wake the system:
- Themes;
- Weather;
- Xiaomi Notes, if you do not use it;
- Scanner;
- Gallery, if you do not need it;
- Security, except important alerts;
- any useless preinstalled app.
A notification is an interruption.
An interruption wakes an app.
A woken app competes for resources.
On a weak tablet, that matters.
7. Clean Up the Home Screen #
I removed unnecessary widgets and avoided live wallpapers.
Recommended setup:
- static wallpaper;
- no weather widget;
- no side feed;
- no news cards;
- no visual nonsense.
The tablet does not need to look like a carrier store demo unit. It needs to open the notes app and respond to the pen.
Tuning Noteshelf #
The original idea was to use Noteshelf. It is beautiful, organized, and good for digital notebooks.
But beautiful usually costs resources.
So the configuration needs to be conservative:
- use simple pages;
- avoid heavy templates;
- avoid too many huge notebooks;
- avoid massive PDFs;
- split large PDFs by chapter;
- avoid constant syncing;
- avoid recording audio while taking notes;
- avoid real-time handwriting recognition if it feels heavy;
- avoid AI features or extras that process things in the background.
The rule is simple: fluidity first, decoration later.
Alternative Apps Worth Testing #
Noteshelf may work well, but I would not treat it as the only option.
For fluid writing on limited hardware, I would test in this order:
- Squid;
- JNotes;
- Noteshelf;
- Nebo;
- OneNote;
- Xodo, mainly for PDFs.
The correct test always starts on a blank white page.
If a blank page stutters, the problem is the system, screen, pen, app, or hardware. If the blank page works fine but PDFs stutter, the problem is probably the PDF or the way the app renders the document.
Final Test After Debloating #
After everything, the test needs to be clean:
- reboot the tablet;
- wait about two minutes;
- close recent apps;
- open only the notes app;
- create a simple blank page;
- write quickly for five minutes;
- repeat in Squid, JNotes, and Noteshelf;
- only then test PDFs.
If Noteshelf stutters but Squid and JNotes behave well, the problem is the weight of Noteshelf on this hardware.
If all of them stutter, the limitation is deeper: screen, pen, touch layer, hardware, or HyperOS.
How to Restore a Removed Package #
If something breaks, you can try restoring a package with:
1adb shell cmd package install-existing package.name
Example:
1adb shell cmd package install-existing com.mi.globalbrowser
That is why I used pm uninstall --user 0. It is much less dangerous than deleting system partition files with root.
Automated Script #
After the manual process, I also created a PowerShell script to automate this debloat on Windows.
The idea of the script is to:
- check whether ADB exists;
- try to install Platform Tools through
winget, if needed; - confirm that the tablet is connected;
- check whether the codename is
xun; - export the package list;
- apply the recommended debloat;
- offer extra options;
- generate a log;
- allow package restoration.
This makes it easier to save as a Gist and repeat the process without relying on memory or copying loose commands around.
Expected Result #
This process does not perform miracles.
The Redmi Pad SE remains an entry-level tablet. It does not become an iPad Pro. It does not become a Galaxy Tab S with an S Pen. It does not gain a premium digitizer, and it does not suddenly have RAM to spare.
But the process removes a lot of junk, reduces useless services, cuts ads, removes duplicate apps, and leaves the system less burdened.
The goal is simple:
1less bloat,
2fewer useless processes,
3fewer interruptions,
4less micro-stuttering,
5more focus on writing.
If, after all this, the tablet still cannot deliver acceptable handwriting, then the conclusion is harsh but honest: the limit was not only software. The hardware and pen experience of the Redmi Pad SE may simply not be good enough for heavy handwriting use.
In that case, the next options would be:
- test a lightweight custom ROM, such as LineageOS, accepting the risk;
- change the writing app;
- use lighter PDFs;
- or accept that, for serious handwriting, the right path is a tablet with a proper active pen and better hardware support.
The good part is that ADB debloating is the best first step: it improves what can be improved without unlocking the bootloader, without root, and without turning the tablet into a paperweight.
Summary of the Main Commands #
Confirm device:
1adb devices
Confirm model:
1adb shell getprop ro.product.device
2adb shell getprop ro.product.model
3adb shell getprop ro.product.name
4adb shell getprop ro.build.version.release
5adb shell getprop ro.miui.ui.version.name
Save package list:
1adb shell pm list packages > "$env:USERPROFILE\Desktop\pacotes-redmi-pad-se.txt"
Main debloat:
1adb shell pm uninstall --user 0 com.miui.analytics
2adb shell pm uninstall --user 0 com.miui.msa.global
3adb shell pm uninstall --user 0 com.miui.miservice
4adb shell pm uninstall --user 0 com.mi.globalbrowser
5adb shell pm uninstall --user 0 com.miui.videoplayer
6adb shell pm uninstall --user 0 com.miui.player
7adb shell pm uninstall --user 0 com.miui.yellowpage
8adb shell pm uninstall --user 0 com.xiaomi.payment
9adb shell pm uninstall --user 0 com.xiaomi.barrage
10adb shell pm uninstall --user 0 com.xiaomi.ugd
11adb shell pm uninstall --user 0 com.xiaomi.discover
12adb shell pm uninstall --user 0 com.miui.thirdappassistant
13adb shell pm uninstall --user 0 com.miui.bugreport
14adb shell pm uninstall --user 0 com.xiaomi.mtb
15adb shell pm uninstall --user 0 com.xiaomi.miralink
16adb shell pm uninstall --user 0 com.xiaomi.smarthome
17adb shell pm uninstall --user 0 cn.wps.xiaomi.abroad.lite
18adb shell pm uninstall --user 0 com.miui.fm
19adb shell pm uninstall --user 0 com.miui.fmservice
20adb shell pm uninstall --user 0 com.miui.qr
21adb shell pm uninstall --user 0 com.google.android.apps.youtube.music
22adb shell pm uninstall --user 0 com.google.android.videos
Reboot:
1adb reboot
Restore package:
1adb shell cmd package install-existing package.name
The Redmi Pad SE is not absolute garbage, but it comes loaded with too much crap for what it offers. HyperOS tries to sell a feature-rich experience, but on a device with 4 GB of RAM, that has a price.
For anyone who wants to use a pen and write smoothly, the smartest path is to cut weight:
- debloat through ADB;
- enable 90 Hz;
- turn off memory extension;
- reduce animations;
- remove battery restrictions from the writing app;
- disable useless notifications;
- use lighter writing apps;
- use smaller PDFs.
This does not turn the tablet into another device. But it removes a lot of the dirt that was in the way.
And sometimes optimizing a cheap tablet is exactly that: stop expecting miracles and start removing everything that gets in the way.
And that was it. I had a little Cessna-style jet in my hands. It was not the most powerful thing in the sky, but it flew.
Script link: https://gist.murad.host/pablo/568220483839436d99c97861ad2d5a03