This repository is the maintained wiki and reference for the Miyoo Flip handheld (Rockchip RK3566) on mainline Linux. The documentation is kept up to date as the canonical device reference.
ROCKNIX images: Zetarancio/distribution — GitHub Actions publishes generic and device-specific builds on branch flip (use the device-specific artifact for Miyoo Flip). Day-to-day DTS and kernel integration for this wiki tracks branch next ahead of those freezes.
The distribution repo holds the build system and device sources; this main branch is documentation, reference material, and small helper assets. Legacy local build scripts live on branch buildroot.
Wiki flip stamp: 1becfbd — Merge upstream/next into flip (2026-07-08). RK3566 kernel: Linux 7.0.2 (7.0 patch dir; SM* platforms on 7.1.2 only). Recent Miyoo / RK3566 commits on flip: RK3566: raise PipeWire idle timeout to 60s · Miyoo Flip: low-battery feedback via existing led_flash · RK3566 linux: disable CONFIG_RK3568_SUSPEND_MODE while 1013 patches are .testing-disabled · RK3566 patches: renumber dfi pm 1011 → 1010 · earlier: DTS cleanup, audio prime. board DTS · commits/flip.
| Step | What to do |
|---|---|
| 1. Stock → ROCKNIX | Install the Preloader Eraser app on your SD (from preloader-stock-rocknix/App/), run it on stock, reboot with a ROCKNIX SD. |
| 2. ROCKNIX → stock | On ROCKNIX, run write-preloader-mtd.sh with preloader.img (bundled under preloader-stock-rocknix/preloader-restore/), reboot → internal stock again. |
Article: Try ROCKNIX without opening the device
Safety: This path does not brick the SoC. If anything misbehaves, you can still open the device, enter MASKROM, and flash with xrock like any other recovery — see the guide’s callout and Flashing.
| Component | Detail |
|---|---|
| SoC | Rockchip RK3566 (quad Cortex-A55 @ 1.8 GHz) |
| GPU | Mali-G52 2EE (Bifrost) |
| RAM | LPDDR4 |
| Storage | SPI NAND 128 MB + 2x MicroSD |
| Display | LMY35120-20p (marking 2503x). Confirmed: 640×480 MIPI DSI, 2-lane, RGB888 video mode (stock DTS). Presumed: FT8006M COG — details |
| WiFi/BT | RTL8733BU (USB) |
| Audio | RK817 codec + speaker amplifier |
| PMIC | RK817 (main) + VDD_CPU (RK8600 @ 0x40; see I2C0 note below) |
| Battery | Miyoo 755060, 3.7 V nominal, 3000 mAh, 11.1 Wh (typical pack marking) |
| UART | ttyS2 @ 1,500,000 baud (3.3V) |
VDD_CPU / I2C0: Current flip DTS has RK8600 @ 0x40 only. TCS4525 @ 0x1c was removed (1f129e89df — Miyoo Flip DTS: cleanup and fixes) after Miyoo officially confirmed to this project that there is no second CPU-regulator hardware variant (only RK8600 is populated). 2025 stock DTS still lists both addresses for BSP comparison only—not evidence of two production SKUs.
| Topic | Front page | Subpages |
|---|---|---|
| Boot and flash | boot-and-flash.md — specs, images, boot chain | Flashing, Boot from SD, Stock ↔ ROCKNIX (no disassembly) |
| RK3566 reference | rk3566-reference.md — SoC overview | Datasheet, TRM 1, TRM 2, Unused pins |
| Stock firmware | stock-firmware-and-findings.md — dumps, overview | BSP/DDR findings, SPI/boot chain |
| Drivers and DTS | drivers-and-dts.md — DTS evolution, drivers | Board DTS, Drivers, DTS porting, Display, WiFi power-off, Suspend |
| Power-off / RK817 drain | miyoo-flip-power-off-investigation.md | Long-form investigation; kernel patch 0007 (SYS_CAN_SD) |
| Troubleshooting | troubleshooting.md | — |
| Serial | serial.md | — |
Reference boot logs in logs/: logs/boot_log_ROCKNIX.txt (mainline; DMC after resume, power-down reaches reboot: Power down); logs/boot_log_STOCK_INCLUDE_SLEEP_POWEROFF_AND_DEBUG.txt (stock with DDR/sleep debug); logs/boot_log_STOCK_INCLUDE_SLEEP_POWEROFF.txt (stock, sleep/poweroff).
Note: logs/boot_log_ROCKNIX.txt may not match the latest kernel/DTS iteration at all times; it is kept as historical proof of a working mainline capture (e.g. DMC after resume, power-down), not as a live regression log.
| Subsystem | Status | Notes |
|---|---|---|
| Boot (U-Boot + kernel) | Working | Mainline 7.0+ on current flip (was 6.18+); SPI NAND or SD |
| Display (DSI panel) | Working | 640x480, panel driver |
| Backlight | Working | PWM4 |
| Audio (RK817) | Working | PipeWire + rk817 UCM; 099-audio_prime + idle.timeout=60s (79453c8, 32fa5f3) |
| WiFi (RTL8733BU) | Working | Out-of-tree 8733bu on kernel 7.0+. Optional GPIO power-off driver; see WiFi/BT power-off. |
| Bluetooth | Working | Unified firmware, btusb re-probe |
| GPU (Mali-G52) | Working | mali_kbase + libmali, 200–800 MHz |
| Storage | Working | SPI NAND MTD, both SD slots |
| HDMI | Working | Video and audio (when enabled in DTS) |
| HDMI audio | Working | With HDMI output |
| DMC (DDR devfreq) | Working (out-of-tree) | Scaling + resume confirmed; see BSP and DDR findings, SPI and boot chain |
| VPU / RGA | Working | hantro-vpu, rockchip-rga |
| IEP | Not working | BSP-only (MPP) |
| Suspend | Working | Standard suspend on flip. Deep suspend (1013 + vdd_logic off) deferred — patches .testing-disabled, CONFIG_RK3568_SUSPEND_MODE off (ca7bb4a9); ES upstream blocker — Suspend |
| Input (buttons + rumble) | Working | 17 GPIO buttons, joypad, rumble (PWM5) |
Findings that made mainline work on this device (details in the wiki).
-
VSEL register hang: The BSP DTS uses
rockchip,suspend-voltage-selectorbut mainlinefan53555readsfcs,suspend-voltage-selector. Wrong name causes VDD_CPU to drop and the board to hang immediately after "FAN53555 Detected!" on kernels 6.4+. -
DSI panel init in command mode: The stock driver sends init commands via a DT property. On mainline, commands must be sent during
prepare()(command mode), notenable()(video mode), or they collide with the video stream on the shared FIFO. -
PMIC dependency cycles:
vcc9-supply = <&dcdc_boost>and some sleep pinctrl arrangements create circular dependencies thatfw_devlinkcannot resolve. Fixed by using<&vccsys>and careful RK817 pinctrl. Deep sleep still uses patched rk8xx / suspend ordering from Zetarancio/distribution where applicable. -
DDR on mainline: The BSP DMC uses Rockchip V2 SIP (shared memory + MCU/IRQ). An out-of-tree DMC devfreq driver implements this for mainline 7.0+ (current
flip; older captures used 6.18+); see BSP and DDR findings and SPI and boot chain. -
Suspend: Standard suspend works on
flip. Deep sleep (1013 +vdd_logicoff) stays deferred (.testing-disabled,CONFIG_RK3568_SUSPEND_MODEoff) until EmulationStation upstream fix. See Suspend and vdd_logic. -
WiFi/BT full poweroff: The 8733bu driver only does software rfkill; it does not control the power-enable GPIO. Full hardware poweroff of the combo requires a separate driver that controls the enable GPIO and integrates with rfkill. See WiFi/BT power-off.
-
Boot chain: Any U-Boot for this board must include OP-TEE (BL31) in the FIT image; the boot chain expects ATF + OP-TEE + U-Boot. Bootrom/SPL behaviour for SD boot is documented in Boot and flash and SPI and boot chain.
-
Full power-off / off-state drain: The ~8 mA battery drain while “off” was traced to RK817 SYS_CAN_SD (charger block stays active). Kernel patch 0007 clears that bit in
rk817_battery_init()(BSP parity). See Power-off investigation, Troubleshooting, and 560a99c. Earlier guidance to omitsystem-power-controllerto “fix drain” is obsolete once 0007 is applied; DTS follows the currentfliptree (e.g. upstream-stylepmic_pins, a482d5c). -
2025 stock alignment: PMIC suspend/resume, battery OCV (descending table), shared SD
vqmmc, DMC devfreq tuning, and DSI/panel init have been refined against newer stock; see Stock firmware and findings and Board DTS / PMIC / DDR. Commit history: distributionflip. -
VDD_CPU / I2C0:
flipDTS uses RK8600 only; TCS4525 dropped after Miyoo’s official confirmation there is no alternate CPU-regulator SKU (1f129e89df). Board DTS — I2C0.
docs/ Documentation wiki (maintained)
miyoo355_fw_20250527/ Official May 2025 card-flash unpack (DTS, rootfs; raw `miyoo355_fw.img` not kept in git — see docs/stock-firmware-and-findings.md)
spi_20241119160817/ Unpacked 2024 SPI dump (DTS, rootfs, joystick study used to improve the rocknix driver) — see docs/stock-firmware-and-findings.md
bl31_v1.44_stock_disasm/ BL31 v1.44 disassembly + ELF (stock rkbin snapshot) — see docs/stock-firmware-and-findings.md
bl31_v1.45_rocknix_disasm/ BL31 v1.45 disassembly + ELF (ROCKNIX rk3566)
bl31_v1.44_vs_v1.45_diff.patch Diff of disassembly exports (v1.44 vs v1.45)
logs/ Boot logs + PMIC/debugfs dumps (reference)
test-scripts/ `miyoo-flip-power-dump.sh` — optional on-device capture
preloader-stock-rocknix/ Stock app + scripts: erase/restore SPI preloader to SD-boot ROCKNIX without opening — see docs/boot-and-flash/stock-rocknix-without-disassembly.md
Wiki: The docs/ tree is the device wiki and is maintained.
Boot logs: Under logs/ — same filenames as before (mainline/stock captures; not guaranteed current).
Build system: For current builds and images use Zetarancio/distribution. This main branch is documentation-focused; legacy local build scripts live on branch buildroot. Flashing steps are in docs/boot-and-flash/flashing.md.
For a current image and build, use the Zetarancio/distribution (ROCKNIX, branch flip) repo.
For legacy local build scripts, see branch buildroot.
For flashing and SD boot on this wiki, see Boot and flash.
Datasheets & TRM (Rockchip)
| Document | URL |
|---|---|
| RK3566 Datasheet V1.2 | FriendlyElec wiki |
| RK3568 TRM Part 1 | Radxa |
| RK3568 TRM Part 2 | Radxa |
steward-fu’s Miyoo Flip pages
| Topic | URL |
|---|---|
| UART | miyoo_flip_uart.htm |
| Specs | miyoo_flip_spec.htm |
| Pin mapping | miyoo_flip_pin.htm |
| MTD | miyoo_flip_mtd.htm |
- Release (many useful files): steward-fu/website — miyoo-flip — toolchain, U-Boot, xrock, SPI dumps, firmware, etc.
Related projects
- Zetarancio/distribution — Current ROCKNIX Miyoo Flip (branch
flip) - ROCKNIX
- GammaOS Core
Other reference
Documentation and scripts: GNU GPL v2. DTS/patches follow kernel GPL v2. Third-party components have their own licenses.
Thanks to steward-fu for the Miyoo Flip resource site and assets; beebono, sydarn, and the community behind SpruceOS for their work and support. This project wouldn’t be where it is without them.