Skip to main content

On This Page

Solving eMMC I/O Errors on Remix Mini PC: The Importance of VccQ Rail Configuration

2 min read
Share

These articles are AI-generated summaries. Please check the original sources for full details.

the eMMC Finally Talks

Engineer Matt Miller spent over a year debugging a ‘brick wall’ on the Remix Mini PC, an Allwinner A64-based Android desktop. Despite successful SD card booting, the internal 14.6 GiB eMMC remained inaccessible due to a single missing line in the device tree.

Why This Matters

This case highlights the gap between software-level diagnostics and hardware reality. The developer attempted multiple signal-layer tweaks—reducing clock speeds from 150 MHz to 1 MHz and disabling HS400 modes—yet the failure mode remained identical. This proves that when tunable parameters do not shift the symptom, the failure exists at a lower physical layer (power delivery) rather than a configuration layer (signaling).

Key Insights

  • Mainline Linux support for the Remix Mini PC was established in 2023 via sun50i-h64-remix-mini-pc.dts by Andre Przywara at ARM.
  • eMMC requires two distinct voltage domains: Vcc (vmmc) for internal logic and VccQ (vqmmc) for I/O signaling (CLK, CMD, DAT lines).
  • The fdtput tool can be used to patch live Device Tree Binaries (DTB) to map regulators like eldo1 to specific hardware consumers.
  • EXT_CSD registers provide the definitive source of truth for write-protection status, whereas kernel force_ro flags are merely software overlays.

Working Examples

Patching the DTB to assign phandle 0x4e (eldo1 regulator) to the vqmmc-supply property.

sudo fdtput -t i /boot/dtb/allwinner/sun50i-a64-bananapi-m64.dtb /soc/mmc@1c11000 vqmmc-supply 0x4e

Verifying eMMC readability after applying the device tree fix.

sudo dd if=/dev/mmcblk2 bs=1M count=1 of=/tmp/test.bin status=progress

Practical Applications

    • Use Case: Porting Armbian or mainline Linux to legacy Android hardware using official DTS files from arch/arm64/boot/dts/allwinner/.
  • Pitfall: Relying on generic board defconfigs (e.g., BananaPi-M64) for different hardware with similar SoCs, leading to missing power rail definitions.
    • Use Case: Debugging embedded storage failures using mmc-utils to query EXT_CSD registers.
  • Pitfall: Assuming hardware is permanently write-protected based on I/O errors without verifying register states.

References:

Continue reading

Next article

Custom Evals: A Unified Evaluation Framework for 17+ LLM Agent Frameworks

Related Content