SnapmakerU1-Extended-Firmware

Building from Source

Prerequisites

The dev.sh script automatically sets up a Debian Trixie ARM64 environment with all required dependencies.

Option 2: Native Build

Quick Start

Build tools and download firmware:

./dev.sh make tools
./dev.sh make firmware

Build basic firmware:

./dev.sh make build PROFILE=basic OUTPUT_FILE=firmware/U1_basic.bin

Build extended firmware:

./dev.sh make build PROFILE=extended OUTPUT_FILE=firmware/U1_extended.bin

Open a shell in the development environment:

./dev.sh bash

Native Build

Build tools and download firmware:

make tools
make firmware

Build basic firmware:

sudo make build PROFILE=basic OUTPUT_FILE=firmware/U1_basic.bin

Build extended firmware:

sudo make build PROFILE=extended OUTPUT_FILE=firmware/U1_extended_fluidd.bin

Note: The build process requires root privileges due to squashfs root filesystem operations.

Profiles

The build system supports two profiles:

Overlays

Overlays are organized into categories based on their scope and build profile. Each overlay is numbered to indicate its application order within its category.

Build Options

Devel Profile Features

When running firmware built with the -devel profile, additional development tools are available:

Entware Package Manager

The Entware is considered highly untrusted component, and might be removed at any point in the future without notice.

The devel profile includes Entware support for installing additional packages. After booting the devel firmware, initialize Entware:

entware-ctrl init

This sets up the Entware environment in /userdata/extended/entware and installs the bootstrap packages.

Other entware-ctrl commands:

Once initialized, use opkg to install packages from the Entware repository.

Directory Structure

├── common/                          Core overlays applied to all profiles
├── devel/                           Devel overlays applied to all profiles when `-devel`
└── firmware-${profile}/             Profile-specific firmware overlays

Overlay Structure

Each overlay directory can contain:

Application Order

Overlays are applied in the following order:

  1. All overlays from common/ (in numeric order)
  2. Profile-specific overlays from firmware-${profile}/ (in numeric order)

Project Structure

.
├── .github/                     Automated release builds
├── overlays/                    Profile overlay directories
│   ├── common/                  Core overlays for all profiles
│   ├── devel/                   Devel overlays for all profiles
│   └── firmware-${profile}/     Profile-specific firmware overlays
├── firmware/                    Downloaded and generated firmware files
├── scripts/                     Build and modification scripts
├── tmp/                         Temporary build artifacts
├── tools/                       Firmware manipulation tools
│   ├── rk2918_tools/            Rockchip image tools
│   └── upfile/                  Firmware unpacking tool
├── Makefile                     Build configuration
└── vars.mk                      Firmware version and kernel configuration

Configuration

Edit vars.mk to configure base firmware and kernel.

Extract Firmware

To extract and examine the base firmware:

make extract

Output: tmp/extracted/

Release Process

The project uses GitHub Actions for automated releases:

  1. Changes pushed to main trigger a pre-release build
  2. Both basic and extended firmwares are built
  3. Version is auto-incremented using scripts/next_version.sh
  4. Release artifacts are published to GitHub Releases

Tools

rk2918_tools

upfile

Firmware unpacking utility for Snapmaker update files.