Skip to content
Norman Zhi edited this page May 9, 2026 · 1 revision

NP2300+-specific steps.

Create system image

Download NP2300+(INAND V1.02).* from NP2300+TF卡修复升级程序V1.02.rar from official website:
https://downloads.youxuepai.com/source/list.shtml#117&name=NP2300+

#!/bin/bash -ex
in="NP2300+(INAND V1.02).idx"
# Create NP7000 system image
./dump_mop_image.py -s $((8*1024*1024*1024)) "$in" .
# (Optional) Convert NAND image to qcow2 format
qemu-img convert -f raw -O qcow2 image.bin image.qcow2

Create qcow2 overlay files

Optionally create qcow2 overlay files, as snapshots, like this:

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

Keyboard mapping file

The gpio-matrix-keypad device includes a very basic config parser for mapping keyboard input to device matrix keyboard.

Key names can be found in qemu/qapi/ui.json,
Or use --trace gpio_matrix_keypad_event QEMU trace log option to see key events.

Create a yaml mapping file named keymap.yaml:

---
keymap:
  pin-0: "home"   # HOME
  pin-1: "up"     # UP
  pin-2: "down"   # DOWN
  pin-3: "left"   # LEFT
  pin-4: "right"  # RIGHT
  pin-5: "ret"    # ENTER
  pin-6: "esc"    # ESC
  pin-7: "pgup"   # VOL+
  pin-8: "pgdn"   # VOL-
  pin-9: "f12"    # POWER

  pin-28: "1"     # charging not done
  pin-29: "2"     # charger & USB not connected
  pin-30: "3"     # MSC1 SD card removed
  pin-31: "4"     # BOOT_SEL1: 0: MSC0, 1: NAND

Start QEMU

system_image=image_overlay.qcow2
mmc_image=mmc_overlay.qcow2

./qemu-system-mipsel \
    -M noah_np2300p -cpu JZ4755 \
    -d guest_errors,unimp \
    -bios jz4750.bin \
    -parallel null \
    -serial none \
    -serial tcp:localhost:7646 \
    -global gpio-matrix-keypad.map-file=keymap.yaml \
    -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

Note that we are using jz4750.bin bootrom, although the SoC is JZ4755.
The jz4755.bin bootrom does not support booting from MSC0 yet.

Gallery

TODO

OpenNoah

Software

Devices variants

Clone this wiki locally