Orange Pi RV2 - first steps

This board is a fairly new riscv64. It uses a Ky X1 riscv processor.
Orange website shows ports for openwrt and ubuntu.
I wanted to see how far FreeBSD 15 would get.

The u-boot process is concealed from the user. It does not allow a break out at the boot countdown. During boot all you see is the orange logo on the hdmi. On new boards it is better to use a serial port connection anyway.

I got into the the u-boot to check the environment variables. It had
Code:
bootdelay=0

I set it to 10 and removed the bootcmd (it is for linux)
Code:
setenv bootdelay '10'
setenv bootcmd ' '
saveenv

The u-boot is a version that Orange (Xunlong) compiled.
I think it is compiled to ignore the break on bootdelay.
The normal u-boot on github does not address the RV2, yet.
I saw in the u-boot mailing list Xunlong programmers only talking about u-boot coding style at this time.

I found the boot with sdcard will hang during device enumeration and spontaneously reboot.
Also, I needed some monitor or a hdmi dummy plug to get FreeBSD past the EFI framebuffer to boot.
So, using a usb stick to boot.
FreeBSD does not find any devices with drivers. It hangs at the
mountroot prompt.

Until we get drivers this board it not useful for FreeBSD.
Boot commands:
Code:
-->usb start

starting USB...
[  49.269] Bus ehci1@c0980100: ehci_x1_ci ehci1@c0980100: ehci_mv_probe Enter ...
[  49.278] mv_usb_phy usbphy1@c09c0000: x1-ci-usb-phy-probe: Enter...
[  49.283] ehci_x1_ci ehci1@c0980100: ehci-x1-ci: init hccr c0980100 and hcor c0980140 hc_length 64
[  49.305] USB EHCI 1.00
[  49.305] Bus dwc3@c0a00000: No USB maximum speed specified. Using super speed
[  49.318] mv_usb_phy usb2phy@0xc0a30000: x1-ci-usb-phy-probe: Enter...
[  49.322] x1_combphy phy@c0b10000: USB3 PHY init.
[  49.326] dwc3-generic-host dwc3@c0a00000: this is a DesignWare USB3 DRD Core
[  49.743] Register 2000140 NbrPorts 2
Starting the controller
[  49.745] USB XHCI 1.10
[  49.748] scanning bus ehci1@c0980100 for devices... 1 USB Device(s) found
[  50.886] scanning bus dwc3@c0a00000 for devices... 4 USB Device(s) found
[  52.413]        scanning usb for storage devices... 1 Storage Device(s) found

--> usb dev 0
--> load usb 0:1 ${fdt_addr_r}  dtb/x1_orangepi-rv2.dtb
--> load usb 0:1 ${kernel_addr_r} efi/boot/bootriscv64.efi
--> bootefi ${kernel_addr_r} ${fdt_addr_r}

+-------- Welcome to FreeBSD ----------+ 
Set boot options--> verbose
Set Console --> Dual (Serial primary)
Hit Enter -->  to boot
Loading kernel...
Found 8 CPUs in the device tree
Copyright (c) 1992-2025 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
        The Regents of the University of California. All rights reserved.
FreeBSD is a registered trademark of The FreeBSD Foundation.
FreeBSD 15.0-CURRENT #0 main-n277212-79e70e12f5c9: Tue May 13 08:20:21 EEST 2025
    root@riscv.smallcatbrain.com:/usr/obj/usr/src/riscv.riscv64/sys/GENERIC-NODEBUG riscv
FreeBSD clang version 19.1.7 (https://github.com/llvm/llvm-project.git llvmorg-19.1.7-0-gcd708029e0b2)
VT(efifb): resolution 1920x1080

---8<-- snip----8<-

IPsec: Initialized Security Association Processing.
tcp_init: net.inet.tcp.tcbhashsize auto tuned to 65536
sbi_ipi0: using for IPIs
Release APs
Secondary CPU 2 fully online
Secondary CPU 6 fully online
Secondary CPU 5 fully online
Secondary CPU 7 fully online
Secondary CPU 4 fully online
Secondary CPU 3 fully online
Secondary CPU 1 fully online
regulator: shutting down unused regulators
Trying to mount root from ufs:/dev/gpt/rootfs [rw]...
mountroot: waiting for device /dev/gpt/rootfs...
Mounting from ufs:/dev/gpt/rootfs failed with error 19.

Loader variables:
  vfs.root.mountfrom=ufs:/dev/gpt/rootfs
  vfs.root.mountfrom.options=rw

Manual root filesystem specification:
  <fstype>:<device> [options]
      Mount <device> using filesystem <fstype>
      and with the specified (optional) option list.

    eg. ufs:/dev/da0s1a
        zfs:zroot/ROOT/default
        cd9660:/dev/cd0 ro
          (which is equivalent to: mount -t cd9660 -o ro /dev/cd0 /)

  ?               List valid disk boot devices
  .               Yield 1 second (for background tasks)
  <empty line>    Abort manual input

mountroot> ?

List of GEOM managed disk devices:

mountroot>
 
rdunkle Can I ask how you actually got access to the u-boot prompt to inspect and set variables? I've been poking at this for a couple days on and off (via serial, a USB-TTL) and haven't managed to make that work. (Though I can boot about as far as you show above just by letting it boot.)
 
You need to do a control c .... but it has to be right at the spot where it tries to actually start the OS. I just spent time pounding on the contrl c it was more like luck. After you get the prompt get in and change the bootdelay so it does not happen ever again. Of course this is all using your usb-ttl connection.
 
Back
Top