Assorted resources about the Allwinner Nezha D1 RISC-V development board

Some useful links

Hardware

Power supply

Robert Lipe notes that Apple hardware and Nezha D1 do not work together using a USB-C to USB-C cable. It should be possible to work around the problem using the USB-A to USB-C cable(s) supplied with the board.

SPI NAND layout

Kernel 5.4.61 (as reported by Gabe R):

mtd0: 00100000 00040000 "boot0"
mtd1: 00400000 00040000 "uboot"
mtd2: 00100000 00040000 "secure_storage"
mtd3: 0fa00000 00040000 "sys"

Kernel 5.16.0-rc2:

# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 10000000 00020000 "spi0.0"

Serial console

The USB serial adapter that comes with the board connects to the 3-pin "DEBUG" header on the board as follows:

Peter Gutmann notes that the supplied serial cable can be faulty. If this is the case, it needs to be replaced with a serial adapter that uses 3.3V levels.

RGB LED

With kernel 5.16.0 (which is available in some disk images and does not boot by default) it is possible to control the RGB LED of the board, which is labelled "LED" and sits next to the red "PWR" LED:

LED=/sys/class/leds/rgb:indicator
echo 0 50 50 >"$LED"/multi_intensity
echo mmc0 >"$LED"/trigger

Some files (may be mirrored, or not)

Filename and DescriptionPacked SizePacked SHA-1Unpacked SizeUnpacked SHA-1Notes
ubuntu-22.04.1-preinstalled-server-riscv64+nezha.img.xz
Ubuntu Server 22.04.1, xz-compressed plain disk image
787562356 bytes
(751.08 MiB, 787.56 MB)
f65ec64b9730a2dea307f5411457c15ee792c422 4831838208 bytes
(4.50 GiB, 4.83 GB)
065ec1585e06b1964d53088f4f5779115b746ce4 13
D1_boot_Ubuntu-22.04_complete_2022-10-23.txt
boot log for the above
    20150 bytes    
fedora-disk-developer-xfce_allwinner_d1_test-F36-20220716-000826.n.0-sda.raw.zst
Fedora, zstd-compressed plain disk image
2497462045 bytes
(2.33 GiB, 2.50 GB)
a81789198c1190c311a7b0c117046ded8830e605 13589544960 bytes
(12.66 GiB, 13.59 GB)
4781a8d449a497d2df0e545b791b351211c08e90 6
fedora-riscv64-d1-developer-xfce-rawhide-Rawhide-20220117-135925.n.0-sda.raw.zst
Fedora, zstd-compressed plain disk image
(original file)
3060402609 bytes
(2.85 GiB, 3.06 GB)
aadb8ca1fcd0b67f1f65466ab31418a1eb0ca030 13589544960 bytes
(12.66 GiB, 13.59 GB)
f18e69e165ef5520e0b36cb93241572b60b5de9d 6, 7, 8, 10, 11
fedora-2022-01-17_kernel_5.4.61_extlinux_manual_1GB.txt
boot log for the above Fedora image (kernel 5.4.61 via original U-Boot, extlinux and manual input)
    79549 bytes   7
fedora-riscv64-d1-developer-xfce-rawhide-Rawhide-20220104-012902.n.0-sda.raw.zst
Fedora, zstd-compressed plain disk image
(original file)
3071767070 bytes
(2.86 GiB, 3.07 GB)
a9b3314ee9fb420bfc60677db8c1d816ac98001c 13589544960 bytes
(12.66 GiB, 13.59 GB)
2633feda290654b549ebd4e231a2fb09b1f19457 6, 10
fedora-riscv64-d1-developer-xfce-rawhide-Rawhide-20211130-010217.n.0-sda.raw.zst
Fedora, zstd-compressed plain disk image
(original file)
2949853513 bytes
(2.75 GiB, 2.95 GB)
46d9baf4c2ab47bb476cee0ec5c68ab5fcd58929 13589544960 bytes
(12.66 GiB, 13.59 GB)
5fa09af0a1af148f7fe70a97aaf028ee47899fe0 6, 7, 8, 9, 10
fedora-2021-11-30_kernel_5.4.61_extlinux_manual_1GB.txt
boot log for the above Fedora image (kernel 5.4.61 via original U-Boot, extlinux and manual input)
    76059 bytes   7
fedora-2021-11-30_kernel_5.16.0-rc2_manual_GRUB.txt
boot log for the above Fedora image (kernel 5.16.0-rc2 via custom U-Boot, GRUB and manual input)
    73595 bytes   8
fedora-2021-11-30_D1-1GB_bootloader.bin
custom D1-1GB bootloader block for the above Fedora image
    1384960 bytes
(1.32 MiB, 1.38 MB)
8ac5752e14ef8db5cc6d82d26e70684c05e4d4eb 9
Fedora-riscv64-d1-developer-xfce-with-esp-Rawhide-20210912.n.0-sda.raw.zst
Fedora, zstd-compressed plain disk image
(original file)
3309078513 bytes
(3.08 GiB, 3.31 GB)
4e82f8712f818f929f21303a8b514bb543d2c16e 13589544960 bytes
(12.66 GiB, 13.59 GB)
35cdb5624ce839c8e4327b97f51443a8873adf14 6, 7, 10
D1_boot_Fedora_complete_2021-09-12.txt
boot log for the above
    64140 bytes    
minicom5.cap.txt
boot log for the above
    26595 bytes   5
RVBoards_D1_Debian_img_v0.6.1.zip
Debian 0.6.1, zip-compressed proprietary (PhoenixCard?) disk image
(original file)
1199870674 bytes
(1.12 GiB, 1.20 GB)
8737cd46c2ffa5e92b39c524b9fa74d2e06e616f 3685322752 bytes
(3.43 GiB, 3.69 GB)
548a7086417d58779e56844baaa63ac15e234868 2, 12
RVBoards_D1_Debian_lxde_img_linux_v0.4.1.img.zip
Debian 0.4.1, zip-compressed plain disk image
(original file)
1339477995 bytes
(1.25 GiB, 1.34 GB)
8ac24e9e7515fe3838fc46fe997a05ca93ab359f 4330408448 bytes
(4.03 GiB, 4.33 GB)
5bd7b5f573e9067b2408bfc9179d65e9650618d4 2, 4
minicom6.cap.txt
boot log for the above
    26712 bytes   5
RVBoards_D1_Debian_lxde_img_linux_v0.4.gz
Debian 0.4, gz-compressed plain disk image
(original file)
1223811642 bytes
(1.14 GiB, 1.22 GB)
e46f9d4e60c90d2a345352e8b279d64653156fab 31719424000 bytes
(29.54 GiB, 31.72 GB)
e9e7ed6262253b16587cc8c4348d1f55154b8300 2, 10
debian-hdmi-card.zip
Debian 0.3, zip-compressed proprietary (PhoenixCard?) disk image
1462120194 bytes
(1.36 GiB, 1.46 GB)
c076593e9642e0831979e85b972a67a9b7b6177d 4004597760 bytes
(3.73 GiB, 4.00 GB)
5132c0fb70d2581248abb91c004ad0faa0a89e07 3, 12
debian-mipi-card.zip
Debian 0.3, zip-compressed proprietary (PhoenixCard?) disk image
1462121334 bytes
(1.36 GiB, 1.46 GB)
7c0f931bed76613b04ba2e3e87140bd57f07565c 4004597760 bytes
(3.73 GiB, 4.00 GB)
89d7ad02ea6d40200fb2e0b33317aa444652d188 3, 12
micarr_0610
Debian 0.3, Sipeed mic array demo (RISC-V ELF, README)
    55064 bytes 511db5d9386a6e09c4233334d8b75cec64c7a6fe 3
RVBoards_D1_Debian_lxde_img_v0.2.zip
Debian 0.2, zip-compressed proprietary (PhoenixCard?) disk image
(original file)
888483224 bytes
(847.32 MiB, 888.48 MB)
74f25ba29f587644e6cb4d215778dc49fa1dec86 2858535936 bytes
(2.66 GiB, 2.86 GB)
19739ae540b39b114105574f5c7e0906bee0902a 2, 12
RVBoards_D1_Debian_console_img_v0.2.zip
Debian 0.2, zip-compressed proprietary (PhoenixCard?) disk image
(original file)
81186641 byte
(77.43 MiB, 81.19 MB)
deee14f826d05dd09aafcbf4c38d54e40c18b5f9 336188416 bytes
(320.61 MiB, 336.19 MB)
ba01bdf15494513e352e0c9e72ac976f97e65d48 2, 12
minicom1.cap.txt
OpenWrt boot log
    39125 bytes   5
minicom2.cap.txt
U-Boot default environment and available commands
    5053 bytes   5

Notes

2
Pristine disk images as published by PerfXLab & RVBoards.
3
Pristine disk images from MEGA as published by Sipeed.
4
This disk image requires a 2 TiB device, of which it allocates only the first 29.5 GiB with GPT, of which it fills only the first 4.03 GiB with data. Because of these discrepancies D1 cannot boot from this disk image.
5
By Gary E. Miller.
6
As published on Fedora RISC-V wiki and openkoji service of Institute of Software, Chinese Academy of Sciences.
7
The Linux kernel in this disk image does not auto-detect the RAM size, but uses a hard-coded size from a DeviceTree file. Each boot menu item has its own DeviceTree file, and the default boot menu item (1) stands for 2 GB:
Fedora-riscv64-d1-developer-xfce-with-esp-Rawhide-20210912.n.0 Boot Options.
1:      Fedora-riscv64-d1-developer-xfce-with-esp-Rawhide (5.4.61+ 2G)
2:      Fedora-riscv64-d1-developer-xfce-with-esp-Rawhide (5.4.61+ 1G)
3:      Fedora-riscv64-d1-developer-xfce-with-esp-Rawhide (5.4.61+ 512M)
4:      Fedora-riscv64-d1-developer-xfce-with-esp-Rawhide (5.4.61+ 128M)
Enter choice: 1:        Fedora-riscv64-d1-developer-xfce-with-esp-Rawhide (5.4.61+ 2G)
[...]
Retrieving file: /aw_nezha_d1_2G.dtb
If you try to use more RAM than the D1 board actually has, it will sooner or later crash. The following commands can be used to change the default to 1 GB:
# For the 2021-09-12 revision:
echo 'default Fedora-riscv64-d1-developer-xfce-with-esp-Rawhide (5.4.61+ 1G)' >>/boot/extlinux/extlinux.conf

# For the 2021-11-30 revision:
echo 'default Fedora-riscv64-d1-developer-xfce-with-esp-Rawhide (5.4.16.riscv64.fc33.riscv64 1G)' >>/boot/extlinux/extlinux.conf

# For the 2022-01-17 revision:
echo 'default Fedora-riscv64-d1-developer-xfce-with-esp-Rawhide (kernel-5.4.61 HDMI 1080p 1G RAM)' >>/boot/extlinux/extlinux.conf
8
To boot the latest kernel, this image requires booting through GRUB. This can be done manually during the boot sequence as follows:
[...]
Importing environment from mmc0 ...
Autoboot in 2 seconds  <---------------------------------- press "v"
[Nezha]#
[Nezha]# run boot_grub
4681728 bytes read in 808 ms (5.5 MiB/s)
Scanning disk mmc@4020000.blk...
Scanning disk mmc@4021000.blk...
Disk mmc@4021000.blk not ready
Found 4 disks
No EFI system partition
Booting /\EFI\fedora\grubriscv64.efi
Welcome to GRUB!
[...]
The following command can be used after booting to have U-Boot load GRUB by default:
echo 'bootcmd=run boot_grub' >>/boot/boot/uEnv.txt
9
When booting the latest kernel from this image, it will use the RAM size provided by U-Boot, not the RAM size in DeviceTree files. However, U-Boot in this image has the RAM size hard-coded to 2GB, so to work with the latest kernel on D1-1GB this image requires to replace the bootloader with a custom version (provided by Fu Wei):
dd if=fedora-2021-11-30_D1-1GB_bootloader.bin bs=512 seek=32800 of=/dev/mmcblk0
10
All files hosted here are stored as ZIP archives, so if the original file is not a ZIP archive, the mirror copy has an extra ZIP container around it. This way, a .zip file is stored as is, but a .raw.zst file becomes a .raw.zst.zip file, the "Packed Size" column refers to the .raw.zst file and the "Unpacked Size" column refers to the .raw file, and so on.
11
In this image U-boot is hard-coded to 2GB RAM and there is no replacement version as of time of this writing. Also kernel 5.4.61 does not detect the MTD. Also GRUB defaults to the 2GB RAM menu entry and uses incorrect DeviceTree file paths. The error messages about the paths can be squelched using the commands below:
sed --in-place=.orig 's/\/dtbs\/5.16.0+\//\/5.16.0-rc2+\//g' /boot/grub.cfg
# 0 is the default (2GB), 1 is 1GB
sed --in-place 's/^set default=0/set default=1/' /boot/grub.cfg
However, kernel 5.16.0 in this disk image disregards DeviceTree data anyway and boots assuming 2GB RAM (possibly using the memory size from U-boot). In all likelihood this disk image cannot boot kernel 5.16.0 on D1-1GB.
12
Allwinner PhoenixCard images should be readable on Linux using the OpenixCard free software.
13
The file is available for download here, additional information is available here. This image by default omits much of the boot progress from the serial console (Ubuntu bug 1994072). Clang 14 package is broken (Ubuntu bug 1994071).