Overall Status

Core Components

[ATTACH]

Boot Standard Kernel:

{OK}

LAN network card:

{OK}

Detect hard drives (NVMe):

{OK}

Detect hard drives (microSD):

{OK}

USB ports

{OK}

Analog audio output

{OK}

HDMI

{X}

Extra Features

CPU Frequency Scaling

{OK}

Hibernation

[?]

Sleep / Suspend

[?]

Power Off / Reboot

{OK}

Xorg

[?]

Legend :
{OK} = OK ; {X} = Unsupported(No Driver) ; /!\ = Error (Couldn't get it working); [?] Unknown, Not Test ; [-] Not-applicable
{i} = Configuration Required; X-( = Only works with a non-free driver and or firmware

Current support state could be followed at RVSpace JH7110 Upstream Status page.

Installation

Be sure to set the DIP switches correctly for your boot medium. Boot methods SD and eMMC directly from StarFive JH7110 CPU loader are deprecated and should not be used as they have been removed from vendor documentation and are incompatible to GUID Partition Table disk representation. Remaining valid boot methods are UART for recovery action and SPI NOR flash for U-Boot bootloader (which can then itself correctly boot from SD and eMMC). See VisionFive 2 Boot Mode Settings for more details.

Update firmware (U-Boot)

It is required to update SPI NOR flash to contain a version of U-Boot upstream release v2025.01 or newer: https://packages.debian.org/trixie/riscv64/u-boot-starfive/download

wget http://deb.debian.org/debian/pool/main/u/u-boot/u-boot-starfive_2025.01-3_riscv64.deb

dpkg -x u-boot-starfive_2025.01-3_riscv64.deb u-boot-starfive_2025.01-3_riscv64

Downloading U-Boot using a USB media

Copy u-boot-spl.bin.normal.out and u-boot.itb from u-boot-starfive_2025.01-3_riscv64/usr/lib/u-boot/starfive_visionfive2 to a USB media using a FAT partition.

Insert the USB media in one of the port of the board, power-on the board and get ready to interrupt the boot process

U-Boot 2025.01-2 (Mar 08 2025 - 03:17:41 +0000)

CPU:   sifive,u74-mc
Model: StarFive VisionFive 2 v1.2A
DRAM:  4 GiB
Core:  136 devices, 26 uclasses, devicetree: board
WDT:   Not starting watchdog@13070000
MMC:   mmc@16010000: 0, mmc@16020000: 1
Loading Environment from SPIFlash... SF: Detected gd25lq128 with page size 256 Bytes, erase size 4 KiB, total 16 MiB
OK
StarFive EEPROM format v2

--------EEPROM INFO--------
Vendor : StarFive Technology Co., Ltd.
Product full SN: VF7110A1-2243-XXXXXXXX-XXXXXXXX
data version: 0x2
PCB revision: 0xa1
BOM revision: A
Ethernet MAC0 address: 6c:cf:39:xx:xx:xx
Ethernet MAC1 address: 6c:cf:39:xx:xx:xx
--------EEPROM INFO--------

starfive_7110_pcie pcie@2b000000: Starfive PCIe bus probed.
starfive_7110_pcie pcie@2c000000: Starfive PCIe bus probed.
In:    serial@10000000
Out:   serial@10000000
Err:   serial@10000000
Net:   eth0: ethernet@16030000, eth1: ethernet@16040000
starting USB...
Bus xhci_pci: Register 5000420 NbrPorts 5
Starting the controller
USB XHCI 1.00
scanning bus xhci_pci for devices... 3 USB Device(s) found
       scanning usb for storage devices... 1 Storage Device(s) found
Working FDT set to ff72da10
Hit any key to stop autoboot:  0
StarFive #

sf probe

SF: Detected gd25lq128 with page size 256 Bytes, erase size 4 KiB, total 16 MiB
StarFive #

load usb 0:1 $loadaddr u-boot-spl.bin.normal.out && sf update $loadaddr 0 $filesize

147274 bytes read in 3 ms (46.8 MiB/s)
device 0 offset 0x0, size 0x23f4a
12288 bytes written, 134986 bytes skipped in 0.92s, speed 1587458 B/s
StarFive #

load usb 0:1 $loadaddr u-boot.itb && sf update $loadaddr 0x100000 $filesize

1024523 bytes read in 13 ms (75.2 MiB/s)
device 0 offset 0x100000, size 0xfa20b
925696 bytes written, 98827 bytes skipped in 7.590s, speed 138168 B/s
StarFive #

eraseenv

Erasing Environment on SPIFlash... OK
StarFive #

reset

resetting ...

Downloading U-Boot through the serial port

cd u-boot-starfive_2025.01-3_riscv64/usr/lib/u-boot/starfive_visionfive2

Connect a USB-to-Serial converter to the board’s GPIO header. Set the boot mode DIP switch to enable system recovery via UART boot mode. Start a serial terminal such as tio on the host PC and run:

tio /dev/ttyUSB0 -o 1

You should see output similar to the following:

[18:59:33.964] tio 3.9
[18:59:33.964] Press ctrl-t q to quit
[18:59:33.981] Connected to /dev/ttyUSB0

Power on the board. The console will display boot messages and you will be ready to enter commands over the UART serial connection.

(C)StarFive
CC
(C)StarFive
CCC

^t-x

[19:51:55.164] Please enter which X modem protocol to use:
[19:51:55.164]  (0) XMODEM-1K send
[19:51:55.164]  (1) XMODEM-CRC send
[19:51:55.164]  (2) XMODEM-CRC receive

0

[19:51:55.928] Send file with XMODEM-1K
[19:51:55.928] Enter file name: 

u-boot-spl.bin.normal.out

[19:52:10.856] Sending file 'u-boot-spl.bin.normal.out'  
[19:52:10.856] Press any key to abort transfer
...…|
[19:52:24.880] Done

U-Boot SPL 2025.01-3 (Apr 08 2025 - 23:07:41 +0000)
DDR version: dc2e84f0.
Trying to boot from UART
CCC

^t-y

[19:52:42.978] Send file with YMODEM
[19:52:42.978] Enter file name: 

u-boot.itb

[19:53:13.244] Sending file 'u-boot.itb'  
[19:53:13.244] Press any key to abort transfer
...…|
[19:54:49.926] Done
Loaded 1024523 bytes

U-Boot 2025.01-3 (Apr 08 2025 - 23:07:41 +0000)

CPU:   sifive,u74-mc
Model: Pine64 Star64
DRAM:  4 GiB
Core:  136 devices, 26 uclasses, devicetree: board
WDT:   Not starting watchdog@13070000
MMC:   mmc@16010000: 0, mmc@16020000: 1
Loading Environment from SPIFlash... SF: Detected gd25lq128 with page size 256 Bytes, erase size 4 KiB, total 16 MiB
OK
StarFive EEPROM format v2

--------EEPROM INFO--------
Vendor : PINE64
Product full SN: STAR64V1-2310-D004E000-0000xxxx
data version: 0x2
PCB revision: 0xc1
BOM revision: A
Ethernet MAC0 address: 6c:cf:39:00:xx:xx
Ethernet MAC1 address: 6c:cf:39:00:xx:xx
--------EEPROM INFO--------

starfive_7110_pcie pcie@2b000000: Starfive PCIe bus probed.
starfive_7110_pcie pcie@2c000000: Starfive PCIe bus probed.
In:    serial@10000000
Out:   serial@10000000
Err:   serial@10000000
Net:   eth0: ethernet@16030000, eth1: ethernet@16040000
libfdt fdt_check_header(): FDT_ERR_BADMAGIC
Card did not respond to voltage select! : -110
Card did not respond to voltage select! : -110
bootmode flash device 0
Card did not respond to voltage select! : -110
Hit any key to stop autoboot:  2 1 0 

press enter i.e. or any other key to interrupt autoboot here

StarFive # 

sf probe

StarFive # sf probe
SF: Detected gd25lq128 with page size 256 Bytes, erase size 4 KiB, total 16 MiB
StarFive # 

loady $loadaddr && sf update $loadaddr 0 $filesize

StarFive # loady $loadaddr && sf update $loadaddr 0 $filesize
## Ready for binary (ymodem) download to 0xA0000000 at 115200 bps...
CCC

^t-y

[19:56:10.630] Send file with YMODEM
[19:56:10.630] Enter file name: 

u-boot-spl.bin.normal.out

[19:56:24.803] Sending file 'u-boot-spl.bin.normal.out'  
[19:56:24.803] Press any key to abort transfer
...…|
[19:56:42.619] Done
## Total Size      = 0x00023f4a = 147274 Bytes
## Start Addr      = 0xA0000000
device 0 offset 0x0, size 0x23f4a
147274 bytes written, 0 bytes skipped in 0.783s, speed 191868 B/s
StarFive # 

loady $loadaddr && sf update $loadaddr 100000 $filesize

StarFive # loady $loadaddr && sf update $loadaddr 100000 $filesize
## Ready for binary (ymodem) download to 0xA0000000 at 115200 bps...
CCC

^t-y

[19:57:40.296] Send file with YMODEM
[19:57:40.296] Enter file name: 

u-boot.itb

[19:58:01.384] Sending file 'u-boot.itb'  
[19:58:01.384] Press any key to abort transfer
...…|
[19:59:37.930] Done
## Total Size      = 0x000fa20b = 1024523 Bytes
## Start Addr      = 0xA0000000
device 0 offset 0x100000, size 0xfa20b
925696 bytes written, 98827 bytes skipped in 7.517s, speed 139509 B/s
StarFive # 

env erase

StarFive # env erase
Erasing Environment on SPIFlash... OK
StarFive # 

Debian 13 Trixie installation

Adjust the boot mode DIP switch to select the 'QSPI NOR Flash' boot mode for normal operation.

Booting debian-installer from USB media

Prepare the USB image on a Linux host: wget https://deb.debian.org/debian/dists/trixie/main/installer-riscv64/current/images/netboot/mini.iso

or

wget https://cdimage.debian.org/cdimage/trixie_di_rc2/riscv64/iso-cd/debian-trixie-DI-rc2-riscv64-netinst.iso

or any other debian-installer flavour.

Dump the corresponding ISO image to the USB media. In the following command, the "X" is a letter in the range a-z. You should be able to see to which device the USB stick was mapped by running the command lsblk before and after inserting it. (The output of dmesg (as root) is another possible method for that.)

cp mini.iso /dev/sdX

sync

Insert the USB media in one of the port of the board and power-on the board

U-Boot SPL 2025.01-2 (Mar 08 2025 - 03:17:41 +0000)
DDR version: dc2e84f0.
Trying to boot from SPI


U-Boot 2025.01-2 (Mar 08 2025 - 03:17:41 +0000)

CPU:   sifive,u74-mc
Model: StarFive VisionFive 2 v1.2A
DRAM:  4 GiB
Core:  136 devices, 26 uclasses, devicetree: board
WDT:   Not starting wathdog@13070000
MMC:   mmc@16010000: 0, mmc@16020000: 1
Loading Environment from SPIFlash... SF: Detected gd25lq128 with page size 256 Bytes, erase size 4 KiB, total 16 MiB
OK
StarFive EEPROM format v2

--------EEPROM INFO--------
Vendor : StarFive Technology Co., Ltd.
Product full SN: VF7110A1-2243-XXXXXXXX-XXXXXXXX
data version: 0x2
PCB revision: 0xa1
BOM revision: A
Ethernet MAC0 address: 6c:cf:39:xx:xx:xx
Ethernet MAC1 address: 6c:cf:39:xx:xx:xx
--------EEPROM INFO--------

starfive_7110_pcie pcie@2b000000: Starfive PCIe bus probed.
starfive_7110_pcie pcie@2c000000: Starfive PCIe bus probed.
In:    serial@10000000
Out:   serial@10000000
Err:   serial@10000000
Net:   eth0: ethernet@16030000, eth1: ethernet@16040000
starting USB...
Bus xhci_pci: Register 5000420 NbrPorts 5
Starting the controller
USB XHCI 1.00
scanning bus xhci_pci for devices... 3 USB Device(s) found
       scanning usb for storage devices... 1 Storage Device(s) found
Working FDT set to ff72da10
Hit any key to stop autoboot:  2 1 0

Device 0: Vendor: 0x126f Rev: T0928A0  Prod: 12282220A0365
            Type: Hard Disk
            Capacity: 228936.5 MB = 223.5 GB (468862128 x 512)
... is now current device
Scanning nvme 0:1...
37516 bytes read in 0 ms
Card did not respond to voltage select! : -110
Card did not respond to voltage select! : -110
Booting: usb 0
error: no suitable video mode found.

At this point, the GRUB menu should appear, select Install or another installation method in the sub-menus. In case GRUB does not start automatically, you can try the following commands from U-Boot:

usb start

run bootcmd_usb0

Booting debian-installer from serial port

wget https://deb.debian.org/debian/dists/trixie/main/installer-riscv64/current/images/netboot/mini.efi

tio /dev/ttyUSB0 -o 1

Use a suitable serial terminal i.e. tio described herein:

[21:18:47.463] tio 3.9
[21:18:47.463] Press ctrl-t q to quit
[21:18:47.480] Connected to /dev/ttyUSB0

power-on the board ready to enter commands over UART serial

U-Boot SPL 2025.01-3 (Apr 08 2025 - 23:07:41 +0000)
DDR version: dc2e84f0.
Trying to boot from SPI


U-Boot 2025.01-3 (Apr 08 2025 - 23:07:41 +0000)

CPU:   sifive,u74-mc
Model: Pine64 Star64
DRAM:  4 GiB
Core:  136 devices, 26 uclasses, devicetree: board
WDT:   Not starting watchdog@13070000
MMC:   mmc@16010000: 0, mmc@16020000: 1
Loading Environment from SPIFlash... SF: Detected gd25lq128 with page size 256 Bytes, erase size 4 KiB, total 16 MiB
*** Warning - bad CRC, using default environment

StarFive EEPROM format v2

--------EEPROM INFO--------
Vendor : PINE64
Product full SN: STAR64V1-2310-D004E000-0000xxxx
data version: 0x2
PCB revision: 0xc1
BOM revision: A
Ethernet MAC0 address: 6c:cf:39:00:xx:xx
Ethernet MAC1 address: 6c:cf:39:00:xx:xx
--------EEPROM INFO--------

starfive_7110_pcie pcie@2b000000: Starfive PCIe bus probed.
starfive_7110_pcie pcie@2c000000: Starfive PCIe bus probed.
In:    serial@10000000
Out:   serial@10000000
Err:   serial@10000000
Net:   eth0: ethernet@16030000, eth1: ethernet@16040000
starting USB...
No USB controllers found
Working FDT set to ff72da10
Hit any key to stop autoboot:  2 1 0

press enter i.e. or any other key to interrupt autoboot here

StarFive # 

(optional) Set devicetree search path in U-Boot if needed i.e. Milk-V Mars CM and Milk-V Mars CM Lite on U-Boot v2025.01: env set fdtfile starfive/jh7110-milkv-mars.dtb ; env save

If you want to avoid the long wait (~2h) of transferring the 70 MiB+ mini.efi over a 115 kbps serial connection, you can instead transfer it via a TFTP server, from MMC storage, or from USB on board variants that support USB in U-Boot. See the U-Boot documentation for more details on alternatives to serial data transfer.

loady $loadaddr && bootefi $loadaddr

StarFive # loady $loadaddr && bootefi $loadaddr
## Ready for binary (ymodem) download to 0x82000000 at 115200 bps...
CCC

^t-y

[21:24:32.232] Send file with YMODEM
[21:24:32.232] Enter file name: 

mini.efi

[21:24:51.255] Sending file 'mini.efi'  
[21:24:51.255] Press any key to abort transfer
...…|
[23:17:31.511] Done
## Total Size      = 0x047cba00 = 75282944 Bytes
## Start Addr      = 0x82000000
Card did not respond to voltage select! : -110
Card did not respond to voltage select! : -110
Cannot persist EFI variables without system partition
Booting /MemoryMapped(0x0,0x82000000,0x867cba00)
EFI stub: Booting Linux Kernel...
EFI stub: Loaded initrd from LINUX_EFI_INITRD_MEDIA_GUID device path
EFI stub: Using DTB from configuration table
EFI stub: Exiting boot services...
[    0.000000] Linux version 6.12.33+deb13-riscv64 (debian-kernel@lists.debian.org) (riscv64-linux-gnu-gcc-14 (Debian 14.2.0-19) 14.2.0, GNU ld (GNU Binutils for Debian) 2.44) #1 SMP Debian 6.12.33-1 (2025-06-19)
[    0.000000] Machine model: Pine64 Star64

Common part

From then on are the familiar steps in sequence for a debian-installer workflow.

Installation notes:

U-Boot Linux Access

To access and edit U-Boot environment from a running OS, one can use u-boot-tools which are available in Debian repositories.

u-boot-tools should be configured to read the environment:

# Edit /etc/fw_env.config and set to content as below:

# NOR example
# MTD device name       Device offset   Env. size       Flash sector size       Number of sectors
/dev/mtd1               0x0000          0x10000         0x1000

When configuration above is complete, one can try to read environment using fw_printenv and set using fw_setenv commands.

LUA Support

At the moment (Feb 10th, 2024), LUA JIT compilation support is not implemented for RISC-V, see Add support for RISC-V issue for the current state. A work in progress JIT support is available at LuaJIT.


CategoryHardware