Fygo

Help Center

  • Getting Started
  • How to Install and Initialize FygoOS?
  • How to Install the App and Connect to Fygo NAS?
  • How to Install FygoOS on a Virtual Machine?
  • Troubleshooting System Installation Issues
  • Storage
  • How to Create a Volume?
  • Do Hard Drives Hibernate Automatically?
  • How to Use SSD Cache Acceleration?
  • Fygo TV
  • How to install Fygo TV and create a library?
  • How to create Fygo TV accounts for family and friends?
  • Cannot select a folder when creating a library?
  • Photos
  • How to Back Up Phone Photos?
  • How to Share Photos with Others?
  • AI Photos Feature Guide
  • How to Import Google Photos into Fygo?
  • Video Plays with Black Screen but Has Sound in Web Photos?
  • Remote Access
  • How to Remotely Access Your Fygo NAS?
  • System Settings
  • How to create a new user?
  • How to Use a Wireless Network Adapter?
  • How to Change FygoOS Ports?
  • How to Use the System Configuration Backup and Restore Feature?
  • Frequent Network Errors in System Settings?
  • How to Enable Two-Factor Authentication (2FA)
  • Unable to Complete Two-Factor Authentication (2FA)?
  • How to Enable Email Notification Service
  • Files
  • How to share My Files with other users?
  • How to share a Team Folder?
  • How do file permissions work and how can I configure them?
  • How to create an external share link for a file?
  • File Services
  • Notes on Mounting Fygo NAS via WebDAV on Windows
  • Notes on Mounting Fygo NAS via NFS on Windows
  • SMB 3 Multichannel Requirements
  • Media File Formats Supported by DLNA
  • Virtual Machine
  • How to Install and Use Virtual Machine?
  • How to Use Virtual Machine Hardware Passthrough?
  • Fygo Sync
  • Fygo Sync Feature Guide
  • How to Use On-Demand Sync
  • Frequently Asked Questions
  • Backup
  • Encrypted Backup Overview
  • iSCSI
  • iSCSI Glossary
  • iSCSI Basic Features
  • User Group Configuration
  • CHAP Configuration
  • Frequently Asked Questions
  • Security
  • How to Set Up and Use the Access Code?
  • Security Advisories
  • License
  • Fygo License overview and activation guide
  • Fygo License FAQ
  • More
  • Contact Us
  • What is the difference between a local account and a Fygo Account?
  • What is the difference between administrator and standard user permissions?
  • Fygo Beta Disclaimer
  • Rockchip Series eMMC USB Flashing Tutorial
  • Rockchip Series TF Card Flashing Tutorial
  • Boot FygoOS from NVMe on Rockchip Devices - Flash U-Boot to SPI
  • Public source code
  • Boot FygoOS from NVMe on Rockchip Devices - Flash U-Boot to SPI

    This guide explains how to install SPI boot firmware on supported Rockchip devices so they can boot FygoOS from NVMe. FygoOS must already be installed on the NVMe drive; the U-Boot image written in this guide only provides the boot path and does not install FygoOS to the drive.

    Important:

    An incompatible image, the wrong target storage, or a power loss during flashing can leave the device unable to boot. Back up important data and locate the board-specific Maskrom/Recovery procedure before you begin.

    Sections 2A and 2B below present two viable options—please choose the one that best suits your setup.

    1. Identify the device model

    Run the following commands in the device's existing Linux system:

    tr -d '\0' </proc/device-tree/model; echo
    tr '\0' '\n' </proc/device-tree/compatible
    

    Compare the output with the table below. Only the models in this table support using the supplied U-Boot image in SPI to boot FygoOS from NVMe. Do not flash an image when the model does not match exactly; similar product names do not guarantee firmware compatibility.

    Device modelFygoOS U-Boot downloadSHA-256
    ROCK 5 ITXDownloadce16775346accdbeb6e14e128df5af6a66d8a9fc06199eef214bd81396ff1011
    Orange Pi 5 PlusDownload17cb94f87b724fdf7945033cb05042afb0d70bd87cec0cbb82d3c7b8d02a87b3
    Orange Pi 3BDownload4e9bca18e7fc1892aa02fd89c62e1961186b7be7e2d95bbb5daacf58978a5d3f
    NanoPi M5 (UFS)Downloadd1c9769ce46a2537aa6bcb847b2687ddc3c41a8dee244c44f23616e8f90cdb96
    ROCK 5B PlusDownload0e5bbfaae3ccdc40aa3b057ec71e9d40a83cf5c7d8b0e87da94b0d09aa6cb656
    NanoPi M5Download2225cd2aed512c508196d89ea0e93a8787aeb2b1e6f3ab5be27d42d3670b4b94
    HinLink HNASDownload0f4b7fe08fe74544c3c91923924cc96608695b230fded4434881d8f127cb332a
    ROCK 4DDownloadae9338235d0e9baacc1176af21b6c5e964c99830f5010fba71a34dd8975d6390
    NanoPC T6Downloadeecff0a98277daa1b33ccc7f4f3c7e8eb7433d7a4277993a3abde4ac6cbedf82
    ROCK 4D (UFS)Download9cfeda0ef08b064a822420c36db7457be5d82209de1667ede60524a2ff89e82f
    ROCK 5B / 5B Plus / 5T universal buildDownloade23ac163b1105b19341fbfb01b4454427647908cb0dd1b53d607eb6c8dc21ac3
    Orange Pi 5Download8e5756fc7fa990d0cc6c68b5c743da08092a2a0a09a06accc906ec824a83a5a2
    ROCK 5BDownloadcb0ff7a51fd53196be55951f3ae4a8f51c6ece3f18c3d0916c3543f4030b7dcb
    ROCK 5TDownload20ce57b9325bdbf3be17f9033f24e35c57fbfbdad27a75d41458c83fae2fa6a0

    Save the selected file as

    u-boot-rockchip-spi.bin
    

    It is a good idea to confirm that a failed download did not produce an HTML page:

    file u-boot-rockchip-spi.bin
    stat -c '%n: %s bytes' u-boot-rockchip-spi.bin
    

    Choose one of the following SPI flashing methods: use another computer, or flash from Linux currently running on the device. You do not need to perform both methods.

    2A. Flash SPI from another computer

    Linux: use rkdeveloptool

    Prepare these files:

    • The u-boot-rockchip-spi.bin file that exactly matches the device model.
    • A Rockchip Loader that exactly matches the device SoC and supports SPI NOR. It is commonly named MiniLoaderAll.bin or *loader*.bin. The Loader initializes the device temporarily; it is not the U-Boot image being installed and must not be reused across different SoCs.

    On Debian/Ubuntu, build rkdeveloptool from this repository:

    sudo apt update
    sudo apt install -y build-essential autoconf automake libtool pkg-config \
      libusb-1.0-0-dev libudev-dev zlib1g-dev
    ./autogen.sh
    ./configure
    make -j"$(nproc)"
    
    1. Disconnect power, follow the board documentation to enter Maskrom mode, and connect the board to the computer through its USB OTG/upgrade port.
    2. Confirm that the tool detects the board. The detected device should end with Maskrom:
    sudo ./rkdeveloptool ld
    
    1. Download the matching Loader to RAM temporarily so the board enters Loader mode:
    sudo ./rkdeveloptool db /path/to/MiniLoaderAll.bin
    sudo ./rkdeveloptool ld
    
    1. Switch the target storage to SPI NOR. Storage ID 9 means SPINOR:
    sudo ./rkdeveloptool cs 9
    sudo ./rkdeveloptool rfi
    

    cs 9 must report Change Storage OK, and rfi must show a reasonable SPI capacity. Stop immediately if storage switching fails.

    1. Write U-Boot at the beginning of SPI, then reset the device:
    sudo ./rkdeveloptool wl 0 u-boot-rockchip-spi.bin
    sudo ./rkdeveloptool rd
    

    Do not disconnect USB or power until wl finishes successfully. Here, 0 is the starting sector in SPI, not a disk number on the computer.

    Windows: use the RKDevTool graphical interface

    The following steps use RKDevTool_Release_v3.28 as the example:

    1. Open the Rockchip development tool

    Run RKDevTool_Release_v3.28\RKDevTool.exe, put the board in Maskrom mode, and connect its USB OTG port to the computer. The status area at the bottom should report that one MASKROM device was found.

    • If the board has multiple USB ports, try them one by one until the tool detects the board. You can also consult the board manufacturer's Wiki to identify the USB OTG port.
    • On some USB Type-C-powered boards, the power connector also serves as the OTG port. If none of the other USB ports works, connect the power port to the computer.

    2. Configure the images

    image-20260723114243475

    • Loader: select the Loader for the board's actual SoC. The required Loader files are stored in the Firmware directory. For example, use .\Firmware\rk3399_loader_v1.30.130.bin for RK3399 and .\Firmware\rk3588_spl_loader_v1.10.112.bin for RK3588. The Loader must match the device SoC.
    • System: select the model-specific u-boot-rockchip-spi.bin using either a relative or absolute path. In the Storage column, select Flash. Some tool versions may label this option SPI or use a similar name.
    • Do not configure or enable any other items.

    3. Flash the image

    Enable Force write by address, then click Run. The tool starts flashing and automatically reboots the device after the operation completes. Do not disconnect USB or power until the tool reports success.

    If flashing fails, first verify that the Loader matches the device SoC. You can also retry with RKDevTool_Release_v2.86; use the same configuration, but do not enable Force write by address in that version.

    Stop if the tool does not provide a Flash/SPI storage option or if eMMC is still selected as the target. Do not click Run in that state.

    2B. Flash SPI from the device's current system

    Use this method when the board already boots Linux from an SD card, eMMC, or another medium, and the kernel exposes SPI NOR as /dev/mtdblock0.

    1. Download the U-Boot image for the exact model. The following example is for ROCK 5B; every other model must use its own URL from the table:
    curl -fL --retry 3 \
      -o /tmp/u-boot-rockchip-spi.bin \
      https://download.liveupdate.fygonas.com/arm/uboot/rock-5b/u-boot-rockchip-spi.bin
    
    1. Verify the SPI device. mtd0 in /proc/mtd must clearly identify the SPI NOR. Stop if the device is missing, the capacity is smaller than the image, or its purpose is uncertain:
    cat /proc/mtd
    ls -l /dev/mtd0 /dev/mtdblock0
    image_size=$(stat -c %s /tmp/u-boot-rockchip-spi.bin)
    flash_size=$(($(cat /sys/class/block/mtdblock0/size) * 512))
    printf 'image=%s bytes, spi=%s bytes\n' "$image_size" "$flash_size"
    test "$image_size" -le "$flash_size"
    
    1. Back up the existing SPI contents. Move this backup to another computer or storage that will not be affected by the procedure:
    sudo dd if=/dev/mtdblock0 of="$HOME/spi-backup.bin" \
      bs=1M status=progress
    sync
    
    1. Write and verify the image. Keep the device on stable power throughout the operation:
    sudo dd if=/tmp/u-boot-rockchip-spi.bin of=/dev/mtdblock0 \
      bs=1M conv=fsync,notrunc status=progress
    sync
    sudo cmp -n "$(stat -c %s /tmp/u-boot-rockchip-spi.bin)" \
      /tmp/u-boot-rockchip-spi.bin /dev/mtdblock0
    

    If cmp prints nothing and exits with status 0, the written bytes match:

    echo $?
    sudo reboot
    

    3. Verify the NVMe boot

    After the reboot, sign in to FygoOS and identify the device containing the root filesystem:

    findmnt -no SOURCE /
    lsblk -o NAME,TYPE,SIZE,FSTYPE,MOUNTPOINTS,MODEL
    

    An NVMe root device usually appears as /dev/nvme0n1p.... Use the actual findmnt result as the source of truth.

    If the board no longer boots, power it off and retry without the NVMe drive. If it still does not recover, enter Maskrom mode and restore SPI using the backup or the board vendor's recovery firmware.

    Was this article helpful?