Прошивка RK3308 (Napi C / Radxa ROCK Pi S) в eMMC / NAND — инструкция для Manjaro/Arch

Коротко: подробная, пошаговая инструкция по сборке rkdeveloptool на Manjaro/Arch, переводу платы в Maskrom, загрузке загрузчика (loader) и записи образа Napi/Armbian в внутреннюю память (eMMC/NAND).


Введение

Многие одноплатные компьютеры на Rockchip (включая Napi C / Rock Pi S) позволяют записать полный образ Linux прямо во внутреннюю память (eMMC / NAND) в режиме Maskrom с помощью утилиты rkdeveloptool. Подход удобен для долгосрочной работы — устройство не зависит от SD-карты.

Эта инструкция адаптирована под Manjaro / Arch Linux (pacman), но команды в ней также легко переносимы на Debian/Ubuntu (apt).

Внимание: операция полностью перезаписывает внутреннюю память. Все данные на eMMC будут утрачены. Перед началом выньте SD-карту.


Что нужно и подготовка

Аппаратное

  • ПК с Linux (Manjaro/Arch) и портом USB-A
  • USB Type-C — USB-A кабель (кабель должен поддерживать передачу данных)
  • Napi C / Rock Pi S с кнопкой Maskrom (или комбинацией кнопок для входа в Maskrom)
  • SD-карта (для загрузки образа и/или тестов), но перед записью во внутреннюю память SD должна быть извлечена

Программное (на ПК, Manjaro)

  • Manjaro / Arch с доступом sudo
  • Пакеты: base-devel, libusb (для сборки rkdeveloptool)

Файлы, которые понадобятся

  • Загрузчик (loader) для вашего SoC (RK3308 или RK3308B-S) — см. раздел выбора loader.
  • Образ системы (napilinux / armbian / другой) в формате, который поддерживает устройство.

Как понять, какой у вас SoC (RK3308 vs RK3308B-S)

Если устройство загружается в Linux (по UART или по сети), выполните:

cat /proc/device-tree/compatible

Примеры вывода:

  • rockchip,rk3308RK3308 → используем rk3308_loader_uart0_m0_emmc_port_support_sd_20190717.bin
  • rockchip,rk3308bRK3308B
  • rockchip,rk3308bsRK3308B-S → используем rk3308_loader_ddr589MHz_uart0_m0_v2.06.136sd.bin

Примечание: у Napi C существуют ревизии на RK3308 и на RK3308B-S — важно не перепутать.


1. Установка зависимостей и сборка rkdeveloptool на Manjaro

Откройте терминал и выполните шаги ниже.

1.1 Устанавливаем зависимости

sudo pacman -Syu—needed base-devel libusb gitwget patch

  • base-devel включает gcc, make, autoconf, automake и т. д.
  • libusb — библиотека для доступа к USB-устройствам.

1.2 Клонируем репозиторий и собираем

git clone https://github.com/rockchip-linux/rkdeveloptool.git

cd rkdeveloptool

# Если в репозитории есть autogen.sh — запустите его

if [ -f autogen.sh ]; then

./autogen.sh

else

aclocal

autoconf

automake —add-missing

fi

./configure

make

1.3 Проблемы при сборке и патч

Если make падает из-за ошибок в main.cpp (частая проблема для новых версий libusb), примените патч, используемый в гайдах Napi:

wget https://raw.githubusercontent.com/dmnovikov/napiguide/main/patches/main.patch -O main.patch

patch main.cpp -i main.patch

make

После успешной сборки установите бинарник:

sudocp rkdeveloptool /usr/local/bin/

sudochmod755 /usr/local/bin/rkdeveloptool

rkdeveloptool —help


2. Подготовка файлов: loader и образ системы

2.1 Где взять загрузчик (loader)

Скачайте соответствующий loader для вашего чипа с сайта Radxa или зеркал.

  • Для RK3308 (старый) используйте:
    • rk3308_loader_uart0_m0_emmc_port_support_sd_20190717.bin
  • Для RK3308B-S используйте:
    • rk3308_loader_ddr589MHz_uart0_m0_v2.06.136sd.bin

Официальный каталог загрузчиков Radxa: https://dl.radxa.com/rockpis/images/loader/

2.2 Где взять образ системы

Например, официальный NapiLinux / Armbian:

  • Napi: https://download.napilinux.ru/linuximg/
  • Armbian: https://www.armbian.com/ (или образ, подготовленный для Rock Pi S)

Скачайте .img файл, подходящий для вашей платы.


3. Запись в внутреннюю память (Maskrom + rkdeveloptool)

Важное предупреждение: SD-карта должна быть извлечена перед тем, как вы начнёте процедуру записи в eMMC/nand. В противном случае запись будет заблокирована.

3.1 Ввод платы в Maskrom (аппаратный режим)

  1. Подключите плату к ПК кабелем USB-C → USB-A.
  2. Зажмите аппаратную кнопку Maskrom (или эквивалентную на вашей плате).
  3. Пока держите Maskrom, нажмите коротко Reset и отпустите Reset, не отпуская Maskrom.
  4. Через 2–3 секунды отпустите Maskrom.

Поведение кнопок зависит от ревизии платы — на некоторых платах комбинация другая (узнайте по документации платы).

3.2 Проверяем, что устройство видно в системе

lsusb | grep2207

Должно появиться устройство с VID:PID 2207:330e или похожим, вывод rkdeveloptool ld покажет Maskrom.

rkdeveloptool ld

# Ожидаемый вывод:

# DevNo=1 Vid=0x2207,Pid=0x330e Maskrom

Если не видно — проверьте кабель и повторите процедуру Maskrom.

3.3 Загружаем bootloader (loader) в оперативную память платы

Пример (loader имя loader.bin — переименуйте ваш файл):

sudo rkdeveloptool db rk3308_loader_uart0_m0_emmc_port_support_sd_20190717.bin

Успешный вывод — утилита завершится без ошибок.

3.4 Записываем образ системы в eMMC

sudo rkdeveloptool wl 0 napilinux-image-file.img

  • wl 0 — записать образ в нулевой слот eMMC.
  • Запись может занять несколько минут.

В документации написано — При успешной загрузке прошивки через некоторое время замигает красный индикатор. Но у меня ничего незамигало красным. Так же горел зеленый индикатор.


4. Очистка eMMC (если нужно)

Если нужно стереть ранее записанный образ и вернуть eMMC в «нулевое» состояние, можно записать нулевой образ.

dd if=/dev/zero of=zero.img bs=4M count=10

Запустите плату в Maskrom, загрузите loader и выполните:

sudo rkdeveloptool wl 0 zero.img

После — перезагрузите устройство:

sudo rkdeveloptool rd


5. Проверка и отладка после прошивки

5.1 Проверяем UART-лог (через minicom / picocom)

Подключитесь к UART-у (обычно /dev/ttyUSB0) со скоростью 1500000. Пример команды:

sudo picocom -b1500000 /dev/ttyUSB0

# или

sudo minicom -D /dev/ttyUSB0 -b1500000

Смотрите на загрузочные сообщения: U-Boot должен загрузиться, затем ядро — и вы увидите приглашение login.

5.2 Если устройство не загружается

  • Убедитесь, что использован правильный loader для вашего SoC (см. раздел выбора loader).
  • Проверьте, что SD-карта извлечена (в режиме записи — SD блокирует запись).
  • Проверьте вывод rkdeveloptool ld — устройство должно быть в Maskrom.
  • Убедитесь в целостности образа (sha256sum), попробуйте другой образ.

6. Частые ошибки и решения

«Device not found» или rkdeveloptool ld ничего не возвращает

  • Используйте другой USB кабель (многие кабели — только для зарядки).
  • Подключайте кабель к заднему USB порту ПК (не через хаб).
  • Попробуйте другой USB порт.

«Permission denied» при доступе к USB

  • Запускайте rkdeveloptool с sudo.

Сборка rkdeveloptool даёт ошибки компиляции

  • Примените патч main.patch (см. раздел 1.3).
  • Убедитесь, что установлены base-devel, libusb.

«Image too large» при записи во внутреннюю память

  • eMMC маленького объёма (4 ГБ) не вмещает стандартный образ. В этом случае:
    • Используйте схему: загрузчик в eMMC, система на SD/NVMe/USB.
    • Или подготовьте минимальный образ, уменьшив rootfs.

9. Ссылки и ресурсы