Skip to content

Instantly share code, notes, and snippets.

@carlosonunez
Last active February 13, 2025 03:01
Show Gist options
  • Save carlosonunez/a0ec3f02576867329bc313bae889563d to your computer and use it in GitHub Desktop.
Save carlosonunez/a0ec3f02576867329bc313bae889563d to your computer and use it in GitHub Desktop.
Debloating the Go Color 7, Go 10.3, and Page 7, step by step

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!)

Why?

  • 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!

Steps

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.

  1. "Apps" -> Hamburger Menu -> "App Management" -> "USB Debug Mode"
  2. Connect the device via USB.
  3. Tap "OK" on the device, then click "Allow" on your Mac.

Helpful Screenshots

image image

Drop into EDL

  1. Install adb: brew install android-platform-tools
  2. Confirm the device shows up; should not be blank: adb devices
  3. Determine the boot slot that your device is using; will be _a or _b: adb shell getprop ro.boot.slot_suffix
  4. Reboot into Emergency Download Mode: adb reboot edl

Extract the boot image

NOTE: Steps 3, 4 and 5 can be skipped if you're rooting a Page 7.

  1. Install the edl utility: here

  2. Ensure that you are still in the edl directory: pwd

  3. 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.

  4. Unzip the loader: unzip ./loader.zip

    NOTE: Skip this step if you're rooting at Page 7.

  5. 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.

  6. 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 run edl --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.

  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.

  8. Push the boot image to the device: adb push boot.img /sdcard/Download/boot.img

  9. Install Magisk: curl -Lo magisk.apk https://github.com/topjohnwu/Magisk/releases/download/v28.0/Magisk-v28.0.apk ; adb install magisk.apk

  10. 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.

  11. Retrieve the patched boot image: adb pull /sdcard/Download/magisk_patched-28000-[ID].img ./boot-patched.img

  12. Re-enter EDL: adb reboot edl

  13. 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.

  14. 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

AFWall uses iptables to grant or deny Internet access to all applications on your tablet.

  1. curl -Lo afwall.apk https://github.com/ukanth/afwall/releases/download/v3.6.0/AFWall_3.6.0_Free.apk

  2. Install it: adb install afwall.apk

  3. Open AFWall+ on the device and grant it superuser access.

  4. Check all three boxes next to apps that should have internet access.

  5. 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

AdAway is a /etc/hosts based DNS blocking solution. No DNS workarounds!

  1. curl -L https://app.adaway.org/adaway.apk && adb install adaway.apk
  2. Enable AdAway in AFWall+.
  1. adb shell
  2. 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!

  1. 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
  2. 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"
  1. 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!

Credits

  • MobileRead: Help me root the Go Color 7. link
  • MobileRead: Help me root the Go Color 10.3. link
  • @RenateUSB: THANK YOU for extracting the Qualcomm EDL loaders for these devices. link
  • Debloating the Onyx Boox Go 10.3: Thanks for the list of apps that can be removed and the firewall suggestion. link
@carlosonunez
Copy link
Author

carlosonunez commented Feb 13, 2025

Optional Stuff

Migrating from one Boox to another locally

  • Download Swift Backup from here and install it to the source and target tablets.
  • On the source device, open Swift Backup, then tap "Continue without an account" twice. On the home screen, scroll down to "Backup all apps." Follow the instructions.
  • Connect to the source device via adb and pull the entire SwiftBackup folder: adb pull /sdcard/SwiftBackup
  • Connect to the target device via adb and push the entire SwiftBackup folder: adb push ./SwiftBackup /sdcard
  • Open Swift Backup on the target device. Tap "Continue without an account" twice. On the home screen, tap "Restore all apps." Follow the instructions.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment