Skip to content

Zetarancio/Miyoo-Flip-Mainline-Linux-Reverse-Engineering

Repository files navigation

Miyoo Flip — Device Wiki & Reference

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: 1becfbdMerge 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.


Stock ↔ ROCKNIX without opening the device

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.


Hardware

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 (1f129e89dfMiyoo 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.


Documentation

Full index → docs/README.md

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.


Status

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)

Key Discoveries

Findings that made mainline work on this device (details in the wiki).

  • VSEL register hang: The BSP DTS uses rockchip,suspend-voltage-selector but mainline fan53555 reads fcs,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), not enable() (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 that fw_devlink cannot 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_logic off) stays deferred (.testing-disabled, CONFIG_RK3568_SUSPEND_MODE off) 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 omit system-power-controller to “fix drain” is obsolete once 0007 is applied; DTS follows the current flip tree (e.g. upstream-style pmic_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: distribution flip.

  • VDD_CPU / I2C0: flip DTS uses RK8600 only; TCS4525 dropped after Miyoo’s official confirmation there is no alternate CPU-regulator SKU (1f129e89df). Board DTS — I2C0.


Project structure

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.


Quick start

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.


External references

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

Related projects

Other reference


License

Documentation and scripts: GNU GPL v2. DTS/patches follow kernel GPL v2. Third-party components have their own licenses.


Thanks

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.

About

A place where I summarize all the stuff related to the miyoo flip. I do not think it will ever be updated but I did not want all the researches I did on the stock firmware to be lost.

Resources

Stars

12 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors