ArrowOS personal pocketbox setup (X3P)
Last updated : 5/10/2024 (added personal settings)
Introduction
Because I elevated my little debloat text to a full-on HTML page for my full-on setup & documented my "modifications". Of course, this is purely meant as a pocketbox setup; except without any internet-demanding games, let alone the ones allergic to anything resembling modifications (I'll have to make one on that soon).
Setup
- Device : My own X3P.
- ROM : "Official" ArrowOS - either 19/9/2022 or 26/9/2022 build works. By the way, the "Official" refers to official builds that were unofficially shared since ArrowOS infra no longer hosts them.
- Kernel : Anymore (SourceForge | Pling) - I use the 10/7/2024 non-KernelSU build since I flashed it somewhere around the time it was released. I'd take the latest build (maybe even the OC/UV build if I feel like I need to force more performance from the X3P's SD860; though newer builds seem to include OC/UV by default) if I'm flashing my X3P again, but I see no point in trying out other stuff there.
- Recovery : Official TWRP 3.6.2_11. Mounts system partitions as read-only so remember to remount them as read/write for debloating. By the way, don't use _12 recovery since booting it somehow fucks up the system as I've discovered the hard way despite it somehow finely flashing the ROM.
- Root method : Magisk 25.2; as per the old ways. In retrospect, I could've went with KernelSU (especially since Anymore provides a build with it).
- Other pre-debloat measures (optional, just to be really sure the system wouldn't attempt to do something that it can no longer do):
- ArrowOS Stats : Settings > Privacy > ArrowOS stats - untick "Enable reporting"
- System tracing / Traceur : Settings > System > Developer options > system tracing - turn everything off & clear saved traces
- Updater : Settings > System > Updater > 3-dot menu > preferences - set Autoupdate check to "Never"
- Cell broadcast : Settings > apps & notifications > Wireless Emergency alerts - disable everything
Method : TWRP Delete
/system/apex
- com.android.apex.cts.shim.apex
- com.android.cellbroadcast.capex
- com.android.neuralnetworks.apex
/system/app
- BasicDreams
- Bluetooth (doesn't grey out bluetooth in system, but makes Bluetooth dysfunctional)
- BluetoothMidiService
- BookmarkProvider
- CarrierDefaultApp
- CompanionDeviceManager
- DuckDuckGo
- NfcNci (will permanently disable & grey out NFC functionality)
- LiveWallpapersPicker
- PrintRecommendationService
- PrintSpooler
- SimAppDialog
- SimpleCalendar (replaced by fossify equivalent in /product/app)
- SimpleGallery (replaced by fossify equivalent in /product/app)
- Stk
- Traceur
- WallpaperBackup
- WeatherIcons
/system/priv-app
- BlockedNumberProvicer
- BuiltInPrintService
- CalendarProvider (optional)
- CellBroadcastLegacyApp
- ContactsProvider
- DocumentsUI (replaced with the ones from Official A11 crDroid / LineageOS as I hated ArrowOS' Downloads at opening; considered optional)
- FaceUnlockService (if you don't use face unlock like me, as my front camera has some paint on its lens)
- ManagedProvisioning
- MmsService
- MusicFX (useless compared to AudioFX IMO)
- StatementService (optional, see note below)
- stats
- Tag
- Telecom
- TelephonyProvider
- TeleService
- Updater
/vendor
/product/app
- LatinIME > Simple Keyboard (rkkr)
- messaging / Music / OmniJaws / PhotoTable > Fossify Calendar / Fossify Gallery / OpenCamera (only if GCamGO is nuked) in whatever order; delete unused ones
- (optional) webview > Mulch 108.0.5399.79 (last Mulch webview with com.android.webview package name) or any latest com.android.webview apk you can get. Or flash NikGapps' Google Chrome addon (with a config file making sure only Webview gets flashed) directly after flashing ArrowOS & update using Play Store's webview builds?
/product/priv-app
- Contacts
- Dialer
- GCamGO (optional, replace with OpenCamera in /product/app)
- ImsServiceEntitlement
/system_ext/app
- everything but the /app folder itself
/system_ext/priv-app
- CarrierConfig
- EmergencyInfo
- ims
- Provision
- qcrilmsgtunnel
- QuickAccessWallet
Debloating notes
- For replaced apps (such as LatinIME > Simple Keyboard (rkkr)) :
- In TWRP (where you're debloating everything), browse to the directory of the app you're replacing (/product/app/LatinIME)
- Delete everything inside that folder - including the lib & oat folder.
- Copy the replacement apk into the folder.
- Rename the replacement apk to match the folder ([Simple Keyboard (or whatever you're naming it)].apk > LatinIME.apk)
- chmod the new LatinIME.apk permission to 644 (if you're on OrangeFox untick execute for Owner while leaving read for everyone else and write for owner only)
- 23/8/2024 Addition : For /system/priv-app/DocumentsUI; also place its /oat files (those .odex & .vdex files) in its place & set their permissions to chmod 644. You won't be deleting the /oat folder for this one.
- Replaced keyboard :
- Follow notes on replaced app directly above. In fact, that notes directly refer to the keyoard app (except for the last step which refers to DocumentsUI).
- In system, "jumpstart" Simple Keyboard by installing another keyboard app (such as OpenBoard) & opening Simple Keyboard - it'll ask to be enabled. Enable that keyboard app before Simple Keyboard (which should enable itself). Without that additional keyboard app, Simple Keyboard cannot be enabled & won't work. Feel free to uninstall that additional keyboard afterwards.
- More about system/app ≥ product/app stuff (SMT > Fossify)
- Delete everything within the folder that you will use to place your preferred /product apps into, including the /lib & /oat folders if available.
- Rename the folder to a more suitable name, and maybe chmod 755 it just to be really sure.
- Copy your app apk into that folder, and rename it to match the folder. For example, I used Camera for OpenCamera, Calendar for Fossify Calendar, & Gallery for Fossify Gallery.
- chmod the new [appname].apk permission to 644 (if you're on OrangeFox untick execute for Owner while leaving read for everyone else and write for owner only)
- Delete the folder you won't be using, including whatever's inside it.
- Bluetooth, emergency, telephony, and the like : As mentioned beforehand, I'm debloating for a pocketbox setup, not a cellphone setup. Therefore, they are wiped. For cellphone setup, just don't wipe those services out.
- StatementService / Intent Filter Verification Service : "Disabled" by toggling off its internet access. Alternatively (or in addition to that), maybe properly disable in Settings or just cut it from /system/priv-app.
- Other TWRP notes not related to debloating but doesn't have enough points to justify its own notes :
- Boot animation is in /system/media if there's any need to change it (I used the old AOSiP boot animation, which remained beautiful to this day). There's only one bootanimation.zip there.
- I replaced the default blank hosts file in /system/etc with my own hosts file (and applied chmod 644). Since I don't use AdAway here (let alone allow my X3P to connect to any wireless networks), this is the only way to modify hosts (other than adb push).
On user-installed apps :
- Document reader : Librera Pro (F-Droid build... or more exactly F-Droid variant from GitHub Releases).
- Launcher : Nova 7.0.57 with Nova Prime 2021 - latest Nova is actually too cumbersome for color customizations (both for launcher & Nova settings), and I haven't even started talking about whoever bought & gimped Nova's development team. Then again, I couldn't exactly find any other "suitable" launcher so...
- GCamGO optionally replaced with OpenCamera; only because I appreciate actually having an option to actually disable shutter sound.
- Fossify apps replacing whatever SMT apps were there (but moved to /product instead of staying in /system); with Fossify Notes manually installed as user-app. This one can be considered optional since SMT's apps (the ones prebuilt in ArrowOS) are acceptable, but then again my opinion on SMT had gone south.
- Music : AIMP 3.10.1052. It still works to my preferences unlike everything nowadays.
- mpv-android for videos.
- Accubattery for battery monitoring, if only because I actually haven't tested any other.
- Games : I mostly play PSP, but occasionally play DS & PS2; all of which using emulators. As for native Android games, I only play Shattered Pixel Dungeon & Klondike.
- Warden & SD Maid for the little details that need root.
ADB commands
For my daily-drive box, I cannot be bothered to document its connection, let alone try anything out (but then I assume ArrowOS doesn't change default connections like most custom ROMs). So, I'm skipping the default connections for this one. However, out of habit, I'll still be putting in my default preferences.
- captive_portal_http_url : http://captiveportal.kuketz.de
- captive_portal_https_url : https://captiveportal.kuketz.de
- captive_portal_fallback_url : http://captiveportal.kuketz.de
- Other captive_portal_other_fallback_urls : http://captiveportal.kuketz.de
- ntp_server : about:blank (or localhost)
- Not related to network (unlike everyone listed above this point), but makes Android less annoying for me when my head's sideways on pillow : adb shell settings put secure show_rotation_suggestions 0
- Reboot via command to lock in these changes (I missed mentioning this in the /e/ deep dive page)
In command form, here's what it'll look like:
- settings put global captive_portal_http_url http://captiveportal.kuketz.de
- settings put global captive_portal_https_url https://captiveportal.kuketz.de
- settings put global captive_portal_fallback_url http://captiveportal.kuketz.de
- settings put global captive_portal_other_fallback_urls http://captiveportal.kuketz.de
- settings put global ntp_server about:blank
- settings put secure show_rotation_suggestions 0
- reboot
In hindsight, I could've just disabled captive portal since this shouldn't be directly connecting itself to internet at all. Here's where you can look up how to disable it. Though if you're doing this you should also disable CaptivePortalLogin app as well (pm disable (or uninstall --user 0) com.android.captiveportallogin). 23/8/2024 Update : But then again, you could also disable CaptivePortalLogin using the system's settings, so you don't exactly need those pm commands.
Other little tunes
Actually, this section's optional, but I appreciate having little details taken care of here & there, so here's some rough list (more will come soon) of my app tunings with Warden (or either App Manager or SD Maid); all of which were possible with root.
- Android System : Disable GeofenceHardwareService & SyncJobService.
- Accubattery : Disable everything with "FullScreenAd" in it.
- Disable all Bluetooth permission for user-apps (such as AIMP) whenever available & possible. Granted, this is mostly possible only in A12(L), but I'd like to get this out of my way fast, in case I wrote something like this for A12(L) ROMs.
- Reboot after all these modifications & check if they stick. If they do, Warden's role is done for me & at this step I uninstalled it.
As for SD Maid on the other hand...
- One little cleanup of dead bloat in my storages (both external & internal) with CorpseFinder. Just once (as in the one time I used it, then I never used it again), because once everything's set up I uninstall apps so rarely CorpseFinder will have a hard time finding any use for me.
- File manager occasionally abused to help with PS2 emulation by injecting my memory card folder to /Android/data. It's a shame DocumentsUI has been so gimped that writing to /Android now demands root-capable programs.
Alternatively, I could've just used a memory card file, and that can actually be imported to NetherSX2 (in addition to PCSX2 in desktop). But then again I liked being able to control whatever's in my "memory card" so I lived with this "workaround".
- AppControls & SystemCleaner... once in a blue moon I suppose? I might have stopped justifying my need to keep Magisk (and by extension SD Maid) around...
I could've used a kernel manager to further fine-tune the X3P's performance (hey, another excuse to keep Magisk!), but the main performance issue my X3P has were all storage-related issues where my microSD couldn't exactly keep up with the internal storage (also not helped by Scoped Storage & its inconsistent applications over 3 different console emulators, with 2 being able to fully use the external storage for all of its files & one insisting on /Android/data for smaller files but allows using external storage only for games & some backups). Therefore I skipped this one, but if you need one I can only recommend SmartPack.
Personal settings
My own preferences.
- Network & internet
- Airplane mode enabled, everything else disabled.
- Connected devices
- Apps & notifications
- Didn't touch much of the settings itself, but I disabled Unused apps & network access on every user apps.
- Battery
- Icon style ; Battery style dotted circle, statusbar percentage set to next of icon, QS battery percentage enabled
- Battery charging light disabled
- Battery manager disabled
- Display
- Dark theme on, color bucket Raven Black
- Refresh rate min/max set to 120hz.
- Colors set to Natural
- Display size manually set to 561 dp using "Smallest width" setting
- Disabled Night light, Adaptive brightness, Auto-rotate, Screen saver, Tap to wake, blurs, Wake on plug.
- Everything else left stock.
- Styles & Wallpapers : OnePlus Slate font, Kai icon theme, tapered rectangle icon shape, color depends on wallpaper I'm using at the moment.
- Storage
- Disabled Storage manager for internal storage - Settings > Storage > Internal shared storage > Storage manager.
- Privacy
- Arrow Stats already disabled beforehand - opening that to disable this after nuking stats from /system/priv-app will cause Settings to force-close back to beginning.
- Everything else left untouched.
- Location
- Security
- App lock set for Magisk & the 2 SD Maid apps.
- Optionally disable some credentials, particularly Baltimore, E-Tugra, & TrustCor. Not that it will matter if I won't connect this shitbox to internet anyway...
- Screen lock & fingerprint? Get your own. Face unlock doesn't work for me since there is some paint on my frontcam lens.
- Buttons
- Advanced restart disabled unless I need to boot to TWRP or something like that.
- Invert layout enabled for navbar, making it (left > right) recents - home - back.
- Everything else left stock.
- Gestures
- System navigation set to 3-button navigation.
- 2 tap to sleep on status bar enabled.
- Everything else disabled.
- System
- Disabled Spell checker for keyboard.
- Developer options
- All animations scale set to 0.5x.
- Mobile data always active disabled - though it doesn't really matter.
Other quirks
- Xiaomi's usual shenanigans against background music. Kinda stopped mattering to me (for the most part) since I no longer pause & leave it midway, though it is still an issue. Unfortunately the only way to "fix" this issue is either firmware-level (or something deeper?) hackery or switching to some other suitable device without this restriction, both with varying levels of difficulty.
- Probably some A11 2022 security patch stuff, but I needed an extra tap for mpv-android to start accepting touch gestures (compared to ≥A12 where I don't need that extra tap). mpvKt is one workaround to this issue, but then its seeking gesture isn't as seamless as mpv-android.
- Okay, here's another issue brought by security patch (or something like that?) - the first time a keyboard app gets installed (even as a system app) it has to be enabled. However if it's the only keyboard app it cannot enable itself. The workaround's already mentioned above.
Conclusion
Uhhhhh.... yeah. I gotta put something here, right? Well then, I guess you got my little pocketbox setup. Which I won't be updating. As in updating the entire system, and not just because ArrowOS no longer updates their A11 builds (let alone anything nowadays).
But seriously, I'd feel better if I make some small story out of it. Before the great A11 exodus, I was rather content with my old crDroid setup (January 2023 A12L build with the last No Gravity Kernel build before it went KernelSU-only), though at times I find it limiting, particularly with the headset limiter. At that time, I didn't really miss ArrowOS, believing I couldn't & shouldn't return to it, especially since I had the latest A12 firmware & am under the false impression of not being able to rollback due to Xiaomi's anti-rollback bullshit. However, an unexpected opportunity came to me in February 2024 (after the rest-of-the-week vacation where I temporarily switched to LineageOS-microG on my X3P as I couldn't get microG working on crDroid & Bob borrowed my OP6 until he found a replacement for his lost OP5T so I had to whip up my X3P into an improptu FGO rig in the first place) as I discovered that my X3P could be rolled back to A11 (similar ARB levels to the other X3P I've brought back to A11), and eventually did it (after some trial & error; mainly on that other X3P); further spurred on by an unfortunate discovery in March 2024 that further soured my view on A12(L) (all the while reflecting on the fun of "accidentally" dropping some hentai reference).
Back to top
Index - cellphone
Main Page