This guide will help you root, de-bloat and secure the amazing Onyx BOOX Go Color 7, an amazing Android-based eReader.
The guide assumes that you are using a Mac with Homebrew installed and have just unboxed the device and are turning it on for the first time. (Congrats!)
- You're concerned about the amount of data this device sends to
.cn
servers. - You want a lean and mean eReader a la Kindle.
- You're bored and need something fun to do!
- DO NOT CONNECT THE DEVICE TO WI-FI
- Complete onboarding setup
- Enable USB Debugging
- Root the device
- Install AFWall+ and AdAway
- Remove unnecessary apps
- Sideload wanted apps and whitelist them
- Harden the device
- Use and enjoy!
- Credits
These devices are very chatty with Onyx servers in .cn
. Not much is known about what they are sending.
Err on the side of paranoia caution and keep the eReader offline until we're done.
Complete the First Time wizard after powering on the device. Don't bother reading the Privacy Policy; it's bunk. Accept the agreements, and select any time zone. We will change that later.
- "Apps" -> Hamburger Menu -> "App Management" -> "USB Debug Mode"
- Connect the device via USB.
- Tap "OK" on the device, then click "Allow" on your Mac.


- Install adb:
brew install android-platform-tools
- Confirm the device shows up; should not be blank:
adb devices
- Determine the boot slot that your device is using; will be
_a
or_b
:adb shell getprop ro.boot.slot_suffix
- Reboot into Emergency Download Mode:
adb reboot edl
NOTE: Steps 3, 4 and 5 can be skipped if you're rooting a Page 7.
-
Install the
edl
utility: here -
Ensure that you are still in the
edl
directory:pwd
-
Retrieve the EDL loader for this device:
curl -Lo ./loader.zip https://github.com/user-attachments/files/16236986/sm6225.zip
(Go here if this link 404s).NOTE: Skip this step if you're rooting at Page 7.
-
Unzip the loader:
unzip ./loader.zip
NOTE: Skip this step if you're rooting at Page 7.
-
Confirm the loader's checksum matches the below:
$: md5sum ./sm6225.bin ee47e72f618563ed1555feff9ba95db6 ./sm6225.bin
NOTE: Skip this step if you're rooting at Page 7.
-
Extract the boot partition, replace
_a
with_b
depending on step 3 from the last section:edl --loader=sm6225.bin r boot_a boot.img
(WARNING: This will fail if you try to runedl --loader=sm6225.bin
without any commands first. You must do this in one go. Otherwise, you will get USB timeouts. If this happens, long press the power button to restart the device.)NOTE: Omit the
--loader
argument if you're rooting a Page 7. -
Reboot the device; might need to run this twice:
edl --loader=sm6225.bin reset --resetmode=reset
NOTE: Omit the
--loader
argument if you're rooting a Page 7. -
Push the boot image to the device:
adb push boot.img /sdcard/Download/boot.img
-
Install Magisk:
curl -Lo magisk.apk https://github.com/topjohnwu/Magisk/releases/download/v28.0/Magisk-v28.0.apk ; adb install magisk.apk
-
Open Magisk on the device; click Install; click Select and Patch a File; select
boot.img
; click "Let's Go"; take note of the newly-created boot image. -
Retrieve the patched boot image:
adb pull /sdcard/Download/magisk_patched-28000-[ID].img ./boot-patched.img
-
Re-enter EDL:
adb reboot edl
-
Write the patched boot image:
edl --loader=sm6225.bin w boot_b boot-patched.img
(WARNING: Same warning above applies here.)NOTE: Omit the
--loader
argument if you're rooting a Page 7. -
Reboot the device; might need to run this twice:
edl --loader=sm6225.bin reset --resetmode=reset
NOTE: Omit the
--loader
argument if you're rooting a Page 7.
AFWall uses iptables to grant or deny Internet access to all applications on your tablet.
-
curl -Lo afwall.apk https://github.com/ukanth/afwall/releases/download/v3.6.0/AFWall_3.6.0_Free.apk
-
Install it:
adb install afwall.apk
-
Open AFWall+ on the device and grant it superuser access.
-
Check all three boxes next to apps that should have internet access.
-
Run the commands below to avoid "Connected, but no Internet" errors upon connecting to Wi-Fi access points (see also)
adb shell settings put global captive_portal_mode 0 adb shell settings put global_captive_portal_detection_enabled 0 adb shell settings put global wifi_watchdog_on 0 adb shell settings put global captive_portal_detection_enabled 0 adb shell settings put global wifi_watchdog_background_check_enabled 0 adb shell settings put global captive_portal_server httpstat.us adb shell settings put global captive_portal_https_server "https://httpstat.us/204"
AdAway is a /etc/hosts
based DNS blocking solution. No DNS workarounds!
curl -L https://app.adaway.org/adaway.apk && adb install adaway.apk
- Enable AdAway in AFWall+.
adb shell
- Run the command below:
pm uninstall --user 0 com.android.bips
pm uninstall --user 0 com.android.bluetoothmidiservice
pm uninstall --user 0 com.android.cameraextensions
pm uninstall --user 0 com.android.cts.ctsshim
pm uninstall --user 0 com.android.dreams.phototable
pm uninstall --user 0 com.android.emergency
pm uninstall --user 0 com.android.internal.display.cutout.emulation.corner
pm uninstall --user 0 com.android.internal.display.cutout.emulation.double
pm uninstall --user 0 com.android.internal.display.cutout.emulation.hole
pm uninstall --user 0 com.android.internal.display.cutout.emulation.tall
pm uninstall --user 0 com.android.internal.display.cutout.emulation.waterfall
pm uninstall --user 0 com.android.internal.systemui.navbar.gestural
pm uninstall --user 0 com.android.internal.systemui.navbar.gestural_extra_wide_back
pm uninstall --user 0 com.android.internal.systemui.navbar.gestural_narrow_back
pm uninstall --user 0 com.android.internal.systemui.navbar.gestural_wide_back
pm uninstall --user 0 com.android.internal.systemui.navbar.threebutton
pm uninstall --user 0 com.android.printservice.recommendation
pm uninstall --user 0 com.android.providers.blockednumber
pm uninstall --user 0 com.android.providers.contacts
pm uninstall --user 0 com.android.quicksearchbox
pm uninstall --user 0 com.android.smspush
pm uninstall --user 0 com.android.theme.font.notoserifsource
pm uninstall --user 0 com.android.vending
pm uninstall --user 0 com.google.android.apps.restore
pm uninstall --user 0 com.google.android.gms.location.history
pm uninstall --user 0 com.google.android.overlay.gmsconfig.common
pm uninstall --user 0 com.google.android.syncadapters.calendar
pm uninstall --user 0 com.google.android.syncadapters.contacts
pm uninstall --user 0 com.onyx.aiassistant #AI Assistant app
pm uninstall --user 0 com.onyx.android.production.test #Test feature
pm uninstall --user 0 com.onyx.appmarket # Appmarket app
pm uninstall --user 0 com.onyx.calculator # Calculator app
pm uninstall --user 0 com.onyx.clock # Clock app
pm uninstall --user 0 com.onyx.dict # Dict app
pm uninstall --user 0 com.onyx.easytransfer # Easytransfer app
pm uninstall --user 0 com.onyx.gallery # Gallery app
pm uninstall --user 0 com.onyx.kime # Kime app
pm uninstall --user 0 com.onyx.latinime # Keyboard app, removing it will leave you with the Google Speech-to-text keyboard
pm uninstall --user 0 com.onyx.mail # Mail app
pm uninstall --user 0 com.onyx.musicplayer # Music player
pm uninstall --user 0 com.onyx.voicerecorder # Voice Recorder
pm uninstall --user 0 com.qualcomm.embms
pm uninstall --user 0 com.qualcomm.qti.seccamservice
pm uninstall --user 0 com.qualcomm.qti.server.qtiwifi
pm uninstall --user 0 com.qualcomm.qti.services.systemhelper
pm uninstall --user 0 com.qualcomm.qti.uim
pm uninstall --user 0 com.qualcomm.qti.uimGbaApp
pm uninstall --user 0 com.qualcomm.qti.xrcb
pm uninstall --user 0 com.qualcomm.qti.xrvd.service
pm uninstall --user 0 com.qualcomm.qtil.aptxui
pm uninstall --user 0 org.chromium.chrome # Chrome browser
NOTE: This will not remove the default Onyx launcher, as it is required for configuring the device.
Download the apps that you want to install either on APKMirror or F-Droid. Always verify those checksums!
- Change NTP servers:
adb shell settings put global ntp_server pool.ntp.org; adb shell settings put global ntp_server_2 en.pool.ntp.org
- Change captive portal endpoints:
adb shell settings put global captive_portal_http_url "http://connectivitycheck.android.com/generate_204"
adb shell settings put global captive_portal_https_url "https://connectivitycheck.android.com/generate_204"
adb shell settings put global captive_portal_fallback_url "http://connectivitycheck.gstatic.com/generate_204"
- Revisit your AFWall configuration and ensure that the apps you want whitelisted are whitelisted.
You're finally ready to connect your eReader to the world! Enjoy!
Optional Stuff
Migrating from one Boox to another locally
adb
and pull the entire SwiftBackup folder:adb pull /sdcard/SwiftBackup
adb
and push the entire SwiftBackup folder:adb push ./SwiftBackup /sdcard