u/Ok_Photograph6488

Tonal Rooted! Jailbreaking the Tonal Part 3 (preview)
▲ 245 r/tonalgym

Tonal Rooted! Jailbreaking the Tonal Part 3 (preview)

I'm way too exhausted to write a full post but I just wanted to share with you all, ladies and gentlemen: we're in!

I got everything, the whole unencrypted data dump from the emmc, even userdata and the tonal app. I enabled ADB shell super user access, and even cleverly wrote a patching app that will inject data into the boot ramdisk to unlock a suite of permissions and enable ADB SU access without ever touching the system partition.

The keen eyed will notice in my screenshot: yes I have magisk installed. This means that everything done to get me to this point is completely non-destructive and relatively safe. Yes this means the tonal is "rooted".

It was far more difficult to root than your common android phone: there was no guide, the boot patching couldn't be done on the device, and I had to basically learn from scratch how to write magisk code.

Anyways, I'll let people know more soon and give a more complete writeup. For now I'm going to bed.


P.S. A few people have asked about supporting this work. I’m currently between jobs and living off savings, so any help is appreciated if you feel inclined, no pressure at all. I might setup a patreon at some point, but for now just crypto.

Bitcoin:

1DW2HGqVp1qrG7AcqMCGEBBHH2EGRYphbw

ETH:

0x24201Ef392054b464De7c15DF871B93F9509b6E0

Either way, thanks for the interest and for following along. More details soon.

u/Ok_Photograph6488 — 5 days ago
▲ 103 r/tonalgym

My (still unsuccessful) attempt to Jailbreak the Tonal, Part 2: an Update.

See my previous post here for part 1: https://reddit.com/r/tonalgym/comments/1v1588e/my_unsuccessful_attempt_at_jailbreaking_the_tonal/

The following is wholly generated by AI. I had put all my findings into the AI, and had it spit out a report. (I've been trying to jailbreak my tonal using its guidance). It may have factual inaccuracies or be hallucinating success stories that are too optimistic. I will give a human summary at the end ok where I'm actually at.


#Technical Update: Tonal Hardware Analysis, Silicon Identification, and Low-Level BootROM Access

This is a technical progress report following a previous post regarding the feasibility of modifying the Tonal exercise machine's embedded Android computer.

Over the past two weeks, investigation into the InnoComm Android board and micro-USB interface has provided confirmation of the core hardware architecture, the motherboard pinouts, and the device's low-level recovery interfaces.

Below is a factual summary of the hardware identification, the diagnostic probing results, and the technical pathway for reading and modifying the system software.

##Summary of Findings

  • Core Silicon: The display is powered by an InnoComm Hercules module running a MediaTek MT8163V quad-core processor on a (suspected, not confirmed android version) Android 6.0 Marshmallow.

  • Hardware Strap Pins: Multimeter probing of exposed test pads identified a hardware strap pin that functions as a physical Volume Up button. Grounding this pad during power-on opens the stock MediaTek Select Boot Mode menu ([Recovery Mode], [Fastboot Mode], and [Normal Boot]) on the display.

  • BootROM (BROM) Access: Using the open-source utility mtkclient, the processor's preloader was successfully intercepted over the micro-USB data lines and transitioned into bare-metal BootROM mode without physical soldering or shorting. The chip reported that Serial Link Authorization (SLA), Download Agent Authentication (DAA), and Root Certificate checks are disabled (False), confirming unblocked block-level read/write access to the internal storage.


##Hardware Identification Under the RF Shield

Removing the central EMI/RF shielding over the processor cluster allowed visual identification of the surface-mount integrated circuits on the InnoComm Hercules board:

  • System on a Chip (SoC) — MT8163V: A 64-bit quad-core MediaTek ARM Cortex-A53 processor released around 2015. Processors from this architecture contain a well-documented hardware-level vulnerability in the read-only BootROM (MaskROM) etched into the silicon. Because this instruction set is hardcoded at the factory, the vulnerability cannot be patched via software or over-the-air (OTA) updates.

  • Power Management IC (PMIC) — MT6323LGA: MediaTek's companion power regulation chip responsible for voltage distribution and boot sequencing.

  • Memory & Storage Package — leahkinn: A multi-chip memory package containing both the system RAM (DRAM) and the physical eMMC NAND flash storage housing the Android 6 operating system.

  • Audio Amplifier — TPA3110D2: A Texas Instruments Class-D audio amplifier driving the machine's speakers.

##Motherboard Probing and Diagnostic Interfaces

Between the MT8163V processor and the leahkinn eMMC package, there is a cluster of four exposed gold test pads. Multimeter voltage testing and grounding tests revealed the following assignments:

Pad (Left to Right) Measured Voltage / State Function Technical Significance
Pad 1 Pulled High (~1.75V) Volume Up (Hardware Strap) Grounding during boot simulates holding Volume Up, forcing the preloader to display the Select Boot Mode menu on screen.
Pad 2 Fluctuating (1.785V–1.792V) UART TX (Serial Transmit) Broadcasts Linux kernel boot logs over serial at 1.8V logic levels. Drops to 0.84V when idle in the boot menu.
Pad 3 Steady (~1.75V) UART RX (Serial Receive) Serial receive line for console input.
Pad 4 0.00V GND (Ground) System ground reference.

##The VBUS Power Dependency Testing confirmed that the MediaTek Select Boot Mode menu only renders on screen when the micro-USB cable is connected to a host computer providing 5V VBUS power. When powered solely by internal DC power without an active USB connection, shorting Pad 1 halts boot execution without initializing the display driver.

##Software-Induced BootROM (BROM) Mode

While [Fastboot Mode] offers basic diagnostic commands, modifying or backing up the system requires low-level block access to the eMMC flash storage. Because standard Android in kiosk mode disables user-facing USB services (such as MTP or ADB), connecting a USB cable while the OS is running does not expose the filesystem. However, during the first two seconds of power-up, the MediaTek Preloader exposes a COM port (MediaTek PreLoader USB VCOM, VID 0E8D / PID 2000) over the micro-USB data pins (DM and DP) before loading Android. Using the open-source utility mtkclient, this initial USB handshake was intercepted to inject a software payload that crashes the preloader in RAM. This forced the MT8163 processor to drop directly into bare-metal BootROM (BROM) mode (PID 0003) without requiring physical shorting on the motherboard.

###Terminal output confirmed by the processor in BROM mode:

Preloader - Get Target info
Preloader - BROM mode detected.
Preloader -   HW subcode:          0x8a00
Preloader -   HW Ver:              0xcb00
Preloader -   SW Ver:              0x1
Preloader -   ME_ID: xxxxxxxxxxxxxxxxxxx
Preloader -   SLA enabled:         False
Preloader -   DAA enabled:         False
Preloader -   Root cert required:  False

###Security Flag Evaluation

  • SLA enabled: False indicates no Serial Link Authorization password is required to interface with the bootloader.

  • DAA enabled: False indicates no Download Agent Authentication is required.

  • Root cert required: False indicates no cryptographic root certificate verification blocks block-level read/write operations.

##Windows vs. Linux USB Enumeration Timing

During Windows testing, the host operating system requires approximately 1.0 to 1.5 seconds to register default serial COM drivers (usbser.sys) when the processor switches from Preloader mode (PID 2000) to BROM mode (PID 0003). This latency can cause device timeouts during payload injection. Booting the host computer into a native Linux environment (or a Live Linux USB) reduces USB enumeration time via udev to under 50 milliseconds, allowing reliable capture of the 2-second preloader handshake.

##Technical Roadmap and Architectural Feasibility

With block-level BootROM communication established, the remaining technical steps focus on storage extraction, filesystem modification, and hardware safety verification:

  • Partition Extraction: Using mtkclient under Linux, full binary dumps of the internal eMMC partitions (boot.img, system.img, recovery.img, and vendor.img) can be extracted for offline analysis.

  • HAL & Permission Bypass: Android 6 restricts standard user-space applications from interacting with the Hardware Abstraction Layer (HAL) using cryptographic signature verification and Mandatory Access Control (SELinux). With offline partition access, Dalvik bytecode in /system/framework/services.jar can be modified to disable signature verification (signature spoofing). Additionally, the kernel command line in boot.img can be patched to set SELinux to Permissive mode, allowing an unsigned custom interface to communicate with system services.

  • Hardware Safety Architecture: The InnoComm Android board functions exclusively as the UI and networking controller. Control of the 200 lbs of electromagnetic resistance is handled autonomously by separate microcontrollers (MCUs, likely STM32s) running a Real-Time Operating System (RTOS). Critical physical safety interlocks, rate limiting, and tension cut-offs execute at the MCU firmware level rather than within Android app logic. A custom frontend interacts with the system by issuing standard API commands (e.g., setTension(50)), while the underlying microcontrollers manage physical limits.

  • Stateless "Live USB" Dongle Concept: Because mtkclient can inject payloads directly into volatile RAM, it is architecturally possible to boot an external operating system without altering the internal eMMC. An active USB host (such as a Raspberry Pi Zero configured as a USB OTG dongle) can push a custom bootloader into memory, switch into USB Mass Storage Gadget Mode, and serve a modified system image. When the dongle is removed and the machine is power-cycled, the volatile RAM clears and the device boots natively from its untouched internal storage.

  • Further updates will cover the decompilation of the stock APKs and the Binder Inter-Process Communication (IPC) calls used to address the Hardware Abstraction Layer.


#Human Written Update

Where I actually am: the AI summary is a bit more optimistic than I am about this project.

I did get mtkclient to produce that screenshot, but it didn’t seem to be in bootrom or preloader mode. It just sat at that screen for a while waiting for me to do something, while the Tonal itself was already fully booted.

The AI suggests the next step is to try mtkclient on a lightweight Linux machine instead of Windows. Its theory is that the preloader window is only open for 1.5–2 seconds, and Windows takes longer than that to load the USB interface.

Separately, as shown in the other screenshot, I can reach the boot selection screen (fastboot / recovery / normal boot) by grounding the gold pad on the far left of the MediaTek chip (labeled “1” in my photo) for about 5 seconds while the Tonal powers on. This only works when the device is plugged into the laptop’s USB; otherwise the same grounding just produces a black screen. That pad acts as Volume Up.

I still haven’t found a pad that functions as Volume Down, which is needed to actually select fastboot or recovery. If I can get into fastboot, everything after that becomes straightforward: enable ADB, escape kiosk mode, run apps, and potentially dump the vendor-level application. At that point mtkclient would only be necessary if I also wanted a full eMMC dump.

I tried grounding the other two pads with no luck. So if anyone has ideas for triggering Volume Down, I’d appreciate them.

In the meantime I’ll try the Linux route and see whether that helps with mtkclient. One longer-term idea, if I can get it working, is to turn this into a Raspberry Pi Zero project and release a script people can just run from an SD card, something Tonal couldn’t easily patch away.

u/Ok_Photograph6488 — 15 days ago

My Unsuccessful Attempt at Jailbreaking the Tonal

Because I hate the subscription fee, I recently decided to take a crack at hardware hacking my Tonal.

My goals were simple: get out of kiosk mode and possibly run my own Android app on the tablet. I was hoping to use the vendor-level HAL API to enable eccentric and chains modes, or at the very least, patch the Tonal app to give us a better "no subscription" interface, one that isn't perpetually trying to sell you something every time you lift.

The TL;DR: My dreams were crushed. The security engineers at Tonal know exactly what they are doing (maybe even better than Nintendo does). The Tonal V1 is tightly locked down against basic Android hardware hacking, and I wasn't willing to risk bricking my machine to push further.

Here is a breakdown of what I tried, followed by a hardware info dump for anyone brave enough to take this further.

What I Tried

1. Physical Access Opening the Tonal is straightforward if you have the right tools. There are four security screws on the right side that require a specific 4-inch Metric Tamper Hex Bit, Size H3. Once those are removed, the tablet swings to the side like a cabinet door, revealing the Android computer.

2. ADB via USB OTG I connected a micro-USB OTG cable to the Android board and ran it to my laptop to use ADB. While Windows Device Manager recognized that an Android device was plugged in, Tonal completely disabled ADB debugging. Both adb devices and fastboot devices returned nothing. If debugging over USB had been enabled, I could have easily installed custom packages or dumped the Tonal app. No such luck.

3. Breaking Kiosk Mode Since ADB was a bust, I tried to force the machine out of kiosk mode (the security feature that locks Android to a single app). I plugged in a keyboard and mouse and tried every known Android keyboard shortcut to trigger the notifications dialog, open settings, or force the base UI to render.

  • The result: Nothing worked. I actually did manage to crash the Tonal app, but the system immediately auto-restored it before I could escape to the OS.

4. Bootloader / Recovery Mode My last basic attempt was treating it like a standard Android phone by trying to boot into recovery or fastboot mode (normally achieved by holding Power + Volume Down during startup) to enable ADB debugging from there.

  • The roadblock: There are no physical buttons on the Tonal's Android computer. Some Android boards allow you to trigger recovery via a USB keyboard during boot, but the Tonal doesn't even send power to the USB port until well after the bootloader has loaded.

Passing the Baton: Hardware Specs & Potential Exploits

I gave jailbreaking a good college try, but I’m not a hardware engineer and I draw the line at methods that risk bricking the device. However, if any of you have the skills and want to give it a shot, here is what I found inside:

Component Details
Board Model Innocomm Hercules Series System on Module (SoM)
FCC ID YAI-TONAL
Unused Connectors Two white 5-pin JST connectors (labeled "GPIO1" and "GPIO2")
Test Pads Two bare copper test pads (highly likely to be an unlabeled JTAG connection)
Chipset (SoC) NXP i.MX6 or an older MediaTek SoC (hidden under an EMI shield)

Where to go from here

If you are willing to brave desoldering the EMI aluminum shielding, the chipset underneath is your next attack vector:

  • If it's MediaTek: It is likely vulnerable to a BootROM exploit (such as the kamakiri exploit).

  • If it's NXP: Shorting a specific data pin to ground during startup should force the chip into a low-level boot mode.

Will Tonal Know if you opened your machine?

Surprisingly, no. Not that I could tell. There's no entry sensor, no motion sensor, or even a basic reed switch on the cabinet door. If I were trying to make it ultimately secure: I would have enabled a software lock as soon as someone opens the door, or at least send a silent log to the server. That could be happening: but I highly doubt it, as there was nowhere I could find any kind of sensor that would do such a thing.

I hope this info dump is useful to someone out there. If anyone manages to take the jailbreaking baton further than I did, let us know!


P.S. A quick note on the subscription requirement:

Before anyone comments, "You should have known about the subscription before you bought it". I did. At the time, I was okay with it, but I'm not anymore. Ultimately, it’s my hardware, and I should be able to do what I want with it. Locking the machine down to the point where even entirely local features (like chains, eccentric, and spotter modes) require a monthly fee is just scummy.

When I initially bought the Tonal, I figured the "no subscription mode" would at least retain basic functionality. Instead, the UI is incredibly hostile. You can't just leave it in basic mode without being accosted by "your account is not active" messages, forcing you to use a clunky "demo mode" just to lift the weights you already paid for. It would be nice if the non-subscription interface was actually functional and friendly, rather than a perpetual billboard demanding a ransom for your own hardware.


P.P.S

To the hardware security engineers at Tonal, I tip my hat to you! You all did a fine job.

reddit.com
u/Ok_Photograph6488 — 1 month ago