Skip to content
Norman Zhi edited this page Apr 27, 2026 · 5 revisions

Build bootrom

Download source code from:
https://github.com/OpenNoah/bootrom

Build file zig-out/bin/jz4750.bin:

zig build --release=small

Build NoahSplit tool

Download source code from:
https://github.com/OpenNoah/NoahSplit

Build mkpkg tool:

make mkpkg

This tool is used to extract upgrade.bin.

Create disk images

Download upgrade.bin from official website:
https://downloads.youxuepai.com/source/list.shtml#118&name=NP6800/NP6800+

Get scripts from:
https://github.com/OpenNoah/tools

Create initial NAND image

See: qemu/create_system_image.sh

#!/bin/bash -x
src=$1 #upgrade.bin
pkg=upgrade.pkg
image=image.bin
qcow2=image.qcow2

# Extract data sections from upgrade.bin
[ -f $pkg ] || ./mkpkg --type=np1000 --extract $src $pkg

# Create NP6800 system image
# Ignore errors as it does not support ext3 file system format yet
rm -f $image
./create_system_image.py -s $((8*1024*1024*1024)) $pkg $image

# (Optional) Convert NAND image to qcow2 format
qemu-img convert -f raw -O qcow2 $image $qcow2

Create SD card image

See: qemu/create_mmc_image.sh

Script needs to be run as root.

#!/bin/bash -ex
in=upgrade.bin
out=mmc.bin
out_qcow2=mmc.qcow2

# Create sparse image file
rm -f $out
touch $out
truncate -s 4G $out

# Create partition table
sfdisk $out <<SFDISK
label: dos
start=2048, size=8386560, type=0c
SFDISK

# Format drive
lo=$(losetup -f --show $out -o $((512*2048)))
mkfs.vfat -F 32 $lo
mkdir -p mnt
mount -t vfat $lo mnt

# Copy files to mmc
cp $in mnt/upgrade.bin

# Done, clean up
df -h mnt
umount mnt
rmdir mnt
/sbin/losetup -d $lo

# (Optional) Convert to qcow2
qemu-img convert -f raw -O qcow2 $out $out_qcow2

Create qcow2 overlay files

Optionally create qcow2 overlay files, as snapshots.

qemu-img create -f qcow2 -F qcow2 -b image.qcow2 image_overlay.qcow2
qemu-img create -f qcow2 -F qcow2 -b mmc.qcow2 mmc_overlay.qcow2

Build QEMU

Download source code from:
https://github.com/OpenNoah/qemu

./configure --target-list=mipsel-softmmu --disable-docs --enable-spice
make -j8

Start QEMU

system_image=image_overlay.qcow2
mmc_image=mmc_overlay.qcow2

./qemu-system-mipsel \
    -M noah_np6800 -cpu JZ4750 \
    -d guest_errors,unimp \
    -bios jz4750.bin \
    -parallel null \
    -serial none \
    -serial none \
    -serial none \
    -serial mon:stdio \
    -spice port=5910,disable-ticketing=on \
    -display none \
    -audio spice \
    \
    -blockdev driver=file,node-name=mmc0_qcow2,filename=$system_image \
    -blockdev qcow2,node-name=mmc0,file=mmc0_qcow2 \
    -device sd-card,spec_version=3,drive=mmc0,bus=sd-bus-msc0 \
    \
    -blockdev driver=file,node-name=mmc1_qcow2,filename=$mmc_image \
    -blockdev qcow2,node-name=mmc1,file=mmc1_qcow2 \
    -device sd-card,spec_version=3,drive=mmc1,bus=sd-bus-msc1

Force PC17 to 0 in qemu/hw/mips/noah_np6800.c to flash firmware.

Gallery

Screenshot 2026-04-25 201250.png

System

Screenshot 2026-04-27 000530.png Screenshot 2026-04-27 000538.png Screenshot 2026-04-27 002307.png

Firmware update

Screenshot 2026-04-25 001041.png

Working in progress... Screenshot 2026-04-25 145512.png

Screenshot 2026-04-26 232131.png

Screenshot 2026-04-26 233503.png

Screenshot 2026-04-26 233816.png

Screenshot 2026-04-26 234732.png

Screenshot 2026-04-27 000004.png

Screenshot 2026-04-27 000113.png

OpenNoah

Software

Devices variants

Clone this wiki locally