Geniatech XPI-3566-ZERO SBC impressions

SBC

While the Maker-Revolution made possible to have cheap and reasonably powerful general computing devices, one thing is unchanged: the unpaved roads are still unpaved.

As I was looking for an SBC lately my preferences were the following:

I found the Geniatech’s XPI-3566-Zero, which is a Raspberry PI Zero 2W alternative built around a Rockchip SOC. Lets check the hardware details:

Hardware

CPU Quad-core ARM Cortex-A55 CPU up to 1.8GHz
GPU ARM G52 2EE GPU;Supports OpenGL ES, 1.1/2.0/3.2. OpenCL 2.0. Vulkan 1.1
RAM 512MB LPDDR4(up to 8GB optional)
Storage 8GB eMMC (up to 128GB Optional)
WiFi AMPAK AP6256 SDIO Wi-Fi 2.4 and 5 Ghz
Interface 1x Mini HDMI Out, 1x Type-C for USB 2.0 OTG, 1x Type-C for USB Host with 5VDC input, 1x MIPI-CSI, 1x Standard 40-pin GPIO header Can be expanded to UART, SPI, I2C ,PWM function
Power DC 5V / 2A
Size 65*30mm

Both the RK3566 SOC and the AMPAK wifi module became supported recently on OpenBSD, so this seems to be a good pick, with only one caveat: there is no on-board TF/SD card slot and sadly almost every BSD related guide relies on SD-Card boot. We will see if we can find a workaround for this..

First impressions

The board is small, and boots into a Debian 10 install real quick. I did some basic test, wlan and USB works ok.

Experiments

I have read the easiest way to get graphical output over HDMI using OpenBSD on ARM board is to boot via UEFI. Tianocore EDK2 is an open-source UEFI implementation. I have found the Quartz64 UEFI project which provides EDK2 builds for RK3566 based boards, but the XPI-3566-ZERO is not yet supported. I have analyzed the hardware of the supported boards and found the ROC-3566-PC to be pretty similar to my board. So as first step i decided to try that image, and if it doesn’t work, i can always revert it using the recovery procedures described in the official documentation. So i flashed this image (it needs to be extracted first) using this method

Then the board did not boot anymore. Only the orange power LED lights up, no output on HDMI or over UART. Not even the small green LED didn’t light up anymore. :(

I have tried to use the recovery methods described in the Debian upgrade guide but i was unable to get the board recognized (neither in LOADER nor in MASK MODE).

I have seen other boards have test-points which one can short to enforce mask-mode, but the official documents doesn’t provides any info regarding this and the board have no mask-mode button or any marking or hints on the silkscreen prints. :(

So i had to contact the manufacturer and they provided me the following picture:

Test points to short for recovery

Short the marked points using a metal object (i use a short wire) and connect the SBC via USB-C (the correct port is the one far away from the HDMI port), the board will be enumerated as “Rockchip USB download gadget” Vid=0x2207,Pid=0x350A, it means the board is in mask mode and the flash uploader software can recognize and communicate with it. Reinstalling the original firmware was a breeze, but we are at step 1 again: How do we install OpenBSD on the board???

Researching

While the 40 pin GPIO have UART pins, i wasn’t able to get any useful output using them in the bootloader: the manufacturer mentioned the UART debug log is “temporarily” disabled. I have seen on some boards the UART is used for the Bluetooth serial support and to eliminate the interference it needs to be disabled in U-Boot. Maybe this is the reason why it is disabled on my board, but i can’t confirm yet. We will see, if we can re-enable it later on. The manufacturer later stated they will provide a software update to enable the UART ports in the bootloader.

By the way, the board uses 1.500.000 baud speed, 8N1 settings in default.

Because the mentioned reasons i can’t provide yet any U-Boot log and also can’t boot OpenBSD using U-Boot, so lets attack the problem from a different direction.

There is a project called rkdeveloptool, they trying to develop an open source alternative for the propertiary update_tool. You can grab the sources and patch it with the FreeBSD patches, it runs even on OpenBSD. Let’s dive in:

~/K/rkdeveloptool> ./rkdeveloptool --version
rkdeveloptool ver 1.3
~/K/rkdeveloptool [1]> doas ./rkdeveloptool ld
DevNo=1	Vid=0x2207,Pid=0x350a,LocationID=4	Loader
~/K/rkdeveloptool> doas ./rkdeveloptool ppt
**********Partition Info(GPT)**********
NO  LBA       Name
00  00004000  uboot
01  00006000  misc
02  00008000  boot
03  00028000  recovery
04  00068000  backup
05  00078000  rootfs
06  00C78000  oem
07  00CB8000  userdata

Ok, we got some partitions, i have dumped and binwalked them. I was looking mainly for the official U-Boot version, for the wifi firmware and for any additional hints.

Using the stings command on the dumped partitions i found the U-Boot banner:

U-Boot 2017.09

Ok, this is pretty old, we will see if we can update it to a more recent version later on.

I have also found the dtb files embedded in the U-Boot and also extracted it from Linux. The two dtb differs, i suspect either U-Boot or the Linux kernel processing / patching the supplied dtb during the boot.

From U-Boot: DTB DTS

From Linux: DTB DTS

I just received the official unprocessed DTB files and the electrical schematic of the SBC from Geniatech, you can find them here: DTBs and the schematics.

Software hacking

The UART ports arent disabled in the DTB, as far as i can see. As the manufacturer said they can fix UART in sw, then maybe it is just simply disabled in U-Boot and i can somehow re-enable it using theofficial SDK and just replace it somehow. So i dived int othe SDK an dwhile i was able to make some small changes in U-Boot and compile it, i was unable to find and re-enable the UART port usage. The config options i have found related to this topic seems to be undeclared:

#define CONFIG_DISABLE_CONSOLE
#define CONFIG_SILENT_CONSOLE
#define CONFIG_SYS_DEVICE_NULLDEV

Grepping the whole source tree doesn’t gives any real hint. No idea, how the UART is disabled. So i can’t build an alternative U-Boot and replace the original one.

Maybe we can adopt EDK2 to our board, we got the DTB, i have forked the quartz_64 source tree and started to adopt it for my board. Currently most files are vanilla copies of the ROC-3566-PC files, but i have managed to declare the new target, replace the DTB file and it builds just fine. however it still doesn’t boots.

I have read somewhere those boards needs significant amount time to boot into EDK2, so i spent a bit time today with them, but they just simply stays silent no output at all. Probably something wrong. I have wrote an email regardingthis to Geniatech and i hope they will provide a feedback promptly.

Suspicious things

As i previously explained, i managed to restore the original firmware using the provided Windows based RkDevTool. But as i don’t really own any device running Windows, i was happy to learn there is a linux based propertiary flasher tool (upgrade_tool) and also an open source version (rkdeveloptool). For all my experiments i have used both the propertiary and the open source flasher tool. They are command line application and for both the user have to manually upload a bootrom code to be able to flash the device. In the begining i have used the rk356x_spl_loader_ddr1056_v1.06.110.bin bootrom, as i found this is accepted by the board, but later on i found the /u-boot/bin/rk3568_loader_v1.05.106.bin file in the SDK and repeated my experiments with that aswell but it had no impact on the outcome.

Device is recognized by the operating system:

# dmesg
(...)
[ 6973.387625] usb 1-2: new high-speed USB device number 44 using xhci_hcd
[ 6973.535893] usb 1-2: New USB device found, idVendor=2207, idProduct=350a, bcdDevice= 1.00
[ 6973.535908] usb 1-2: New USB device strings: Mfr=0, Product=0, SerialNumber=0

And recognized by the flasher tool aswell. The device is in maskrom mode:

# ./rkdeveloptool ld
DevNo=1	Vid=0x2207,Pid=0x350a,LocationID=102	Maskrom

We upload the bootrom…

# ./rkdeveloptool db rk356x_spl_loader_ddr1056_v1.06.110.bin 
Downloading bootloader succeeded.

And also update it…

# ./rkdeveloptool ul rk356x_spl_loader_ddr1056_v1.06.110.bin
Upgrading loader...

The device is still in maskrom mode

# ./rkdeveloptool ld
DevNo=1	Vid=0x2207,Pid=0x350a,LocationID=102	Maskrom

The tests are OK…

# ./rkdeveloptool td
Test Device OK.

Now we erase the content of the flash…

# ./rkdeveloptool ef
Erasing flash complete.

And flash the official, vanilla image…

# ./rkdeveloptool wl 0 './rk3566-xpz-debian_RKS221221-base_hwV1.0_20230926161435/rockdev/update.img' 
Write LBA from file (100%)

Let’s reset the device…

# ./rkdeveloptool rd
Reset Device OK.

And it is still in Maskrom mode after the reboot, which is not good:

# ./rkdeveloptool ld
DevNo=1	Vid=0x2207,Pid=0x350a,LocationID=102	Maskrom

The parttition table is borked for some reason:

# ./rkdeveloptool ppt
Read GPT failed!
Read parameter failed!
Not found any partition table!

This is the flasher tool I use:

# ./rkdeveloptool --version
rkdeveloptool ver 1.32

On this operating system:

# uname -a
Linux debian 6.1.0-13-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.55-1 (2023-09-29) x86_64 GNU/Linux

As you can see, i got the eMMC flashed without any error, but there is something clearly wrong with the partition table, and the device can’t boot, so it goes automatically into maskrom mode. What am i doing wrong here? The same image flashed via the windows RkDevTool works just fine. This is puzzling…

I suspect, maybe the LOADER is wrong, but i am not sure yet. In any case i need to find a reliable way to flash the device first, before i continue my journey.

I clearly can’t flash the board properly from linux or from OpenBSD. I plan to do a full linux image build later, but currently the only way to properly flash the board is using Windows, which is PITA as idon’t have any windows install here. Also the windows tool doesn’t lets me to flash the EDK2 image on the board. So far it allowed me to flash only the official vanilla firmware, nothing else. I assume the images have some kind of taging and either the EDK2 firmware doesn’t have any, or it is not accepted by the flasher tool. And as long i can’t flash the original firmware properly, i can’t learn anything from flashing the EDK2, because probably thats gets flashed improperly aswell…

Flashing using linux

I have managed to extract the official update.img (rk3566-xpz-debian_RKS221221-base_hwV1.0_20230926161435.tar.gz) using the windows flasher tool and now i have the correct loader! And i have also managed to properly flash the board using linux:

Check if the board is in maskrom mode:

root@debian ~> rkdeveloptool ld
DevNo=1	Vid=0x2207,Pid=0x350a,LocationID=101	Maskrom

Upload the bootcode into the device from the extracted update.img:

root@debian ~> rkdeveloptool db boot.bin
Downloading bootloader succeeded

Check the partition table:

root@debian ~> rkdeveloptool ppt
Not found any partition table!

Create the partitions using the extracted parameter file:

root@debian ~ [1]> rkdeveloptool gpt parameter.txt 
Writing gpt succeeded.

Check the partition table again:

root@debian ~> rkdeveloptool ppt
**********Partition Info(GPT)**********
NO  LBA       Name                
00  00004000  uboot
01  00006000  misc
02  00008000  boot
03  00028000  recovery
04  00068000  backup
05  00078000  rootfs
06  00C78000  oem
07  00CB8000  userdata

Now flash the partitions one-by-one using the extracted images:

root@debian ~> rkdeveloptool  wlx uboot uboot.img
Write LBA from file (100%)
root@debian ~> rkdeveloptool  wlx misc misc.img
Write LBA from file (100%)
root@debian ~> rkdeveloptool  wlx boot boot.img
Write LBA from file (100%)
root@debian ~> rkdeveloptool  wlx recovery recovery.img
Write LBA from file (100%)
root@debian ~> rkdeveloptool  wlx rootfs rootfs.img
Write LBA from file (100%)
root@debian ~> rkdeveloptool  wlx oem oem.img
Write LBA from file (100%)
root@debian ~> rkdeveloptool  wlx userdata userdata.img
Write LBA from file (100%)

It seems upgrading the bootcode is necessary, so lets do that aswell:

root@debian ~> rkdeveloptool  ul boot.bin
Upgrading loader succeeded.

And reboot the device:

root@debian ~> rkdeveloptool  rd
Reset Device OK.

If you have a serial terminal attached to the UART3 pins (see the silkscreen markings on the rear side of the PCB), you can watch the kernel messages scrolling by with 1500000 baud, 8N1…

We still haven’t managed to boot EDK2, but this is a good start.

Breaktrough

I have spent countless hours to get it working but i was unable to get any UART log from U-Boot with the original firmware and neither with my own built U-Boot. I have contacted Geniatech and they confirmed a fix is in the works. A new firmware was released on 2023-11-14, i have downloaded the firmware, unpacked with the Windows flasher tool, compared the bootrom/miniloader, confirmed it is different. Then I have used it to boot the device and lo and behold: now i can interact with U-Boot! They haven’t gave any info what the issue was, but i suspect it was in the miniloader, as now my own built uboot works aswell. So it can’t be an U-Boot or a DTB issue. Here is the new miniloader in case you need it.

So, i tried to boot OpenBSD on it:

I have downloaded the arm64 miniroot74.img and loop-mounted it using Linux. Mounted the EFI partition and inserted my own DTB file, while removed all the unnecessary ones. Then I have dumped both the EFI and the OpenBSD data partition into a separate image-file (dd if=/dev/loop0p1 of=./EFI.img and dd if=/dev/loop0p4 of=./BSD.img ).

Then i manually created a parameter.txt file, which describes the partition layout. I have created 4 partitions: UBOOT, EFI, ROOT, USERDATA and wrote it into the MMC using rkdeveloptool.

FIRMWARE_VER: 1.0
MACHINE_MODEL: RK3568
MACHINE_ID: 007
MANUFACTURER: RK3568
MAGIC: 0x5041524B
ATAG: 0x00200800
MACHINE: 0xffffffff
CHECK_MASK: 0x80
PWR_HLD: 0,0,A,0,1
TYPE: GPT
GROW_ALIGN: 0
CMDLINE: mtdparts=:0x00002000@0x00004000(uboot),0x00040000@0x00028000(EFI),0x00c00000@0x00078000(rootfs),-@0x00cb8000(userdata:grow)

Then i have flashed the images to the correct partition using rkdeveloptool, so i have flashed u-boot to UBOOT, the EFI.img to the EFI partition, the BSD.img to the ROOT partition and i have kept the USERDATA empty for now.

I have booted the board and it went straight into the U-Boot prompt where i have loaded the DTB and the EFI loader and started it. It jumped into the OpenBSD bootloader just fine, but then I got stuck as the bootloader doesn’t want to boot the ROOT partition, it complains the partition is bad. See the logs below.

I have also tried to boot the other partitions, but the result is the same.

LOG:

=> mmc part

Partition Map for MMC device 0  --   Partition Type: EFI

Part    Start LBA       End LBA         Name
        Attributes
        Type GUID
        Partition GUID
  1     0x00004000      0x00005fff      "uboot"
        attrs:  0x0000000000000000
        type:   8dcd1602-5214-43f9-ffef-c49a4ee450b7
        guid:   5a30833f-8c43-47b1-a41d-84d40883d0c6
  2     0x00028000      0x00067fff      "EFI"
        attrs:  0x0000000000000000
        type:   1124e418-9008-41f8-9e3d-8d872216c8a1
        guid:   ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
  3     0x00078000      0x00c77fff      "rootfs"
        attrs:  0x0000000000000000
        type:   fbd4486a-e42c-448d-d4e9-7f5c324a7843
        guid:   824cc7a0-36a8-11e3-890a-952519ad3f61
  4     0x00cb8000      0x00e8ffde      "userdata"
        attrs:  0x0000000000000000
        type:   bbaf4f47-230d-45b6-feae-e4b35f300b00
        guid:   824cc7a0-36a8-11e3-890a-952519ad3f62
=> load mmc 0:2 ${fdt_addr_r} dtb_from_linux.dtb
reading dtb_from_linux.dtb
110592 bytes read in 11 ms (9.6 MiB/s)
=> load mmc 0:2 ${kernel_addr_r} efi/boot/bootaa64.efi
reading efi/boot/bootaa64.efi
219050 bytes read in 37 ms (5.6 MiB/s)
=> bootefi ${kernel_addr_r} ${fdt_addr_r}
## Starting EFI application at 00a80000 ...

(...)

disks: sd0* sd1 sd2 sd3 sd4
>> OpenBSD/arm64 BOOTAA64 1.18
boot> set device sd3
boot> boot
cannot open sd3:/etc/random.seed: bad partition
booting sd3:/bsd: open sd3:/bsd: bad partition
 failed(99). will try /bsd
boot> 

I have expected this to work, and i don’t see see what am i doing wrong. I have flashed the OpenBSD partition, but it seems the rkdeveloptool randomly picks a type-ID, and it lets to define only the partition UUID, so the partition-type is clearly wrong.

So i am looking for ideas now and try to understand the issues I am facing…

Btw: i have also tried to boot into EDK2 with the new bootrom, but no dice, yet.

Success!

The factory U-Boot can’t boot via EFI, so we need to enable it first, so edit the rk356x_xpi_sdk-202305121258/u-boot/configs/rk3568_defconfig file and add :

CONFIG_SPL_LEGACY_IMAGE_SUPPORT=y
CONFIG_CMD_ELF=y
CONFIG_EFI=y
CONFIG_CMD_BOOTEFI=y
CONFIG_EFI_LOADER=y
CONFIG_BLK=y
CONFIG_PARTITIONS=y
CONFIG_CMD_MBR=y
CONFIG_IMAGE_FORMAT_LEGACY=y
CONFIG_BOOTM_NETBSD=y
CONFIG_DOS_PARTITION=y
PARTITION_TYPE_GUID=y

Probably not all of them is actually needed…

Then build a new u-boot using the following command in the rk356x_xpi_sdk-202305121258 folder:

build.sh uboot

It will create a new uboot.img in the rk356x_xpi_sdk-202305121258/u-boot folder.

We have to update the U-Boot on the board using the following commands:

# ./rkdeveloptool db 'boot.bin'
Downloading bootloader succeeded.
# ./rkdeveloptool wlx uboot '/rk356x_xpi_sdk-202305121258/u-boot/uboot.img'
Write LBA from file (100%)
# ./rkdeveloptool ul 'boot.bin'
Upgrading loader succeeded.

FYI: boot.bin is the bootrom we covered here earlier.

Then prepare 2 USB thumbdrive + a usb-c hub:

Attach both drive using the hub and power up the board. Press Ctrl-C to interrupt U-Boot, then:

usb start
load usb 1:1 ${fdt_addr_r} rk3568-evb.dtb
load usb 1:1 ${kernel_addr_r} efi/boot/bootaa64.efi
bootefi ${kernel_addr_r} ${fdt_addr_r}

Keep in mind your usb device or partition number can be different!

This will drop you into the OpenBSD EFI bootloader, here need to set the default com port and it’s baud rate. We also need to select the correct drive/partition to boot from and then proceed with the boot! Keep in mind the correct partition would be probably different on your setup. Try all the disks!

stty com7 1500000
set tty com7
set device sd11a 
b

This will boot us straight into OpenBSD:

boot> b                                                                                 
cannot open sd11a:/etc/random.seed: No such file or directory
booting sd11a:/bsd: 2861736+1091248+12711584+634544 \
[233295+91+666048+260913]=0x13d5cf8 Copyright (c) 1982, 1986, 1989, 1991, 1993
        The Regents of the University of California.  All rights reserved.
Copyright (c) 1995-2023 OpenBSD. All rights reserved.  https://www.OpenBSD.org

OpenBSD 7.4 (RAMDISK) #2131: Sun Oct  8 13:35:40 MDT 2023
    deraadt@arm64.openbsd.org:/usr/src/sys/arch/arm64/compile/RAMDISK
real mem  = 2036940800 (1942MB)
avail mem = 1937518592 (1847MB)
random: boothowto does not indicate good seed
mainbus0 at root: Rockchip RK3566 EVB2 LP4X V10 Board
psci0 at mainbus0: PSCI 1.1, SMCCC 1.2, SYSTEM_SUSPEND
efi0 at mainbus0: UEFI 2.0.5
cpu0 at mainbus0 mpidr 0: ARM Cortex-A55 r2p0
cpu0: 32KB 64b/line 4-way L1 VIPT I-cache, 32KB 64b/line 4-way L1 D-cache
cpu0: 512KB 64b/line 16-way L2 cache
cpu0: DP,RDM,Atomic,CRC32,SHA2,SHA1,AES+PMULL,LRCPC,DPB,ASID16,PAN+ATS1E1,LO,HPDS,VH,HAFDBS,SBSS
 scmi0 at mainbus0: SCMI 2.0
"sdei" at mainbus0 not configured
"drm-logo" at mainbus0 not configured
"drm-cubic-lut" at mainbus0 not configured
"ramoops" at mainbus0 not configured
agintc0 at mainbus0 shift 4:4 nirq 352 nredist 4: "interrupt-controller"
agintcmsi0 at agintc0
syscon0 at mainbus0: "syscon"
rkiovd0 at syscon0
"reboot-mode" at syscon0 not configured
syscon1 at mainbus0: "syscon"
syscon2 at mainbus0: "syscon"
syscon3 at mainbus0: "syscon"
syscon4 at mainbus0: "syscon"
syscon5 at mainbus0: "syscon"
syscon6 at mainbus0: "syscon"
syscon7 at mainbus0: "syscon"
syscon8 at mainbus0: "syscon"
rkclock0 at mainbus0: PMUCRU
rkclock1 at mainbus0: CRU
rkclock_set_parent: 0x00000106
rkclock_set_frequency(rkclock1, 262, 300000000)
rkclock_set_parent: 0x0000010b
rkclock_set_frequency(rkclock1, 267, 300000000)
rkclock_set_frequency(rkclock0, 43, 100000000)
rkclock_set_frequency(rkclock1, 3, 1000000000)
rkclock_set_frequency(rkclock1, 411, 500000000)
rkclock_set_frequency(rkclock1, 9, 333000000)
rkclock_set_frequency(rkclock1, 412, 250000000)
rk3568_set_pll: 1188000000 Hz
rkclock_set_frequency(rkclock1, 269, 150000000)
rkclock_set_frequency(rkclock1, 270, 100000000)
rkclock_set_frequency(rkclock1, 371, 500000000)
rkclock_set_frequency(rkclock1, 372, 400000000)
rkclock_set_frequency(rkclock1, 373, 150000000)
rkclock_set_frequency(rkclock1, 374, 100000000)
rkclock_set_frequency(rkclock1, 201, 300000000)
rkclock_set_frequency(rkclock1, 202, 150000000)
rkclock_set_frequency(rkclock1, 6, 1200000000)
rkclock_set_frequency(rkclock1, 126, 400000000)
rkclock_set_frequency(rkclock1, 127, 100000000)
rkclock_set_frequency(rkclock1, 61, 1188000000)
rkclock_set_frequency(rkclock1, 65, 1188000000)
rkclock_set_frequency(rkclock1, 69, 1188000000)
rkclock_set_frequency(rkclock1, 73, 1188000000)
rkclock_set_frequency(rkclock1, 77, 1188000000)
rkclock_set_frequency(rkclock1, 77, 1188000000)
rkclock_set_frequency(rkclock1, 85, 1188000000)
rkclock_set_frequency(rkclock1, 81, 1188000000)
rkclock_set_frequency(rkclock1, 93, 1188000000)
rkclock_set_frequency(rkclock1, 221, 500000000)
syscon9 at mainbus0: "power-management"
"power-controller" at syscon9 not configured
syscon10 at mainbus0: "qos"
syscon11 at mainbus0: "qos"
syscon12 at mainbus0: "qos"
syscon13 at mainbus0: "qos"
syscon14 at mainbus0: "qos"
syscon15 at mainbus0: "qos"
syscon16 at mainbus0: "qos"
syscon17 at mainbus0: "qos"
syscon18 at mainbus0: "qos"
syscon19 at mainbus0: "qos"
syscon20 at mainbus0: "qos"
syscon21 at mainbus0: "qos"
syscon22 at mainbus0: "qos"
syscon23 at mainbus0: "qos"
syscon24 at mainbus0: "qos"
syscon25 at mainbus0: "qos"
syscon26 at mainbus0: "qos"
syscon27 at mainbus0: "qos"
syscon28 at mainbus0: "qos"
syscon29 at mainbus0: "qos"
syscon30 at mainbus0: "qos"
syscon31 at mainbus0: "qos"
syscon32 at mainbus0: "qos"
syscon33 at mainbus0: "qos"
rkcomphy0 at mainbus0
rkcomphy1 at mainbus0
rkusbphy0 at mainbus0: phy 0
rkusbphy1 at mainbus0: phy 1
rkpinctrl0 at mainbus0: "pinctrl"
rkgpio0 at rkpinctrl0
rkgpio1 at rkpinctrl0
rkgpio2 at rkpinctrl0
rkgpio3 at rkpinctrl0
rkgpio4 at rkpinctrl0
"ddr3-params" at mainbus0 not configured
"ddr4-params" at mainbus0 not configured
"lpddr3-params" at mainbus0 not configured
"lpddr4-params" at mainbus0 not configured
"lpddr4x-params" at mainbus0 not configured
"cpu0-opp-table" at mainbus0 not configured
"arm-pmu" at mainbus0 not configured
"cpuinfo" at mainbus0 not configured
"display-subsystem" at mainbus0 not configured
"firmware" at mainbus0 not configured
"rockchip-suspend" at mainbus0 not configured
"rockchip-system-monitor" at mainbus0 not configured
agtimer0 at mainbus0: 24000 kHz
"external-gmac1-clock" at mainbus0 not configured
"xpcs-gmac1-clock" at mainbus0 not configured
"i2s1-mclkin-rx" at mainbus0 not configured
"i2s1-mclkin-tx" at mainbus0 not configured
"i2s2-mclkin" at mainbus0 not configured
"i2s3-mclkin" at mainbus0 not configured
"mpll" at mainbus0 not configured
"xin24m" at mainbus0 not configured
"xin32k" at mainbus0 not configured
"scmi-shmem" at mainbus0 not configured
rkdwusb0 at mainbus0: "usbdrd"
xhci0 at rkdwusb0, xHCI 1.10
usb0 at xhci0: USB revision 3.0
uhub0 at usb0 configuration 1 interface 0 "Generic xHCI root hub" rev 3.00/1.00 addr \
1 rkdwusb1 at mainbus0: "usbhost"
xhci1 at rkdwusb1, xHCI 1.10
usb1 at xhci1: USB revision 3.0
uhub1 at usb1 configuration 1 interface 0 "Generic xHCI root hub" rev 3.00/1.00 addr \
1 "sram" at mainbus0 not configured
rkiic0 at mainbus0
iic0 at rkiic0
"atmel,24c02" at iic0 addr 0x50 not configured
"tcs,tcs4525" at iic0 addr 0x1c not configured
rkpmic0 at iic0 addr 0x20: RK809
rkpmic0: can't read register 0xbb
rkpmic0: can't read register 0xbb
rkpmic0: can't write register 0xbb
rkpmic0: can't read register 0xbb
rkpmic0: can't read register 0xbe
rkpmic0: can't read register 0xbe
rkpmic0: can't write register 0xbe
rkpmic0: can't read register 0xc1
rkpmic0: can't read register 0xc4
rkpmic0: can't read register 0xc4
rkpmic0: can't write register 0xc4
rkpmic0: can't read register 0xc4
rkpmic0: can't read register 0xcc
rkpmic0: can't read register 0xcc
rkpmic0: can't write register 0xcc
rkpmic0: can't read register 0xce
rkpmic0: can't read register 0xce
rkpmic0: can't write register 0xce
rkpmic0: can't read register 0xd0
rkpmic0: can't read register 0xd0
rkpmic0: can't write register 0xd0
rkpmic0: can't read register 0xd2
rkpmic0: can't read register 0xd2
rkpmic0: can't write register 0xd2
rkpmic0: can't read register 0xd4
rkpmic0: can't read register 0xd4
rkpmic0: can't write register 0xd4
rkpmic0: can't read register 0xd6
rkpmic0: can't read register 0xd6
rkpmic0: can't write register 0xd6
rkpmic0: can't read register 0xd6
rkpmic0: can't read register 0xd6
rkpmic0: can't read register 0xd6
rkpmic0: can't read register 0xd8
rkpmic0: can't read register 0xd8
rkpmic0: can't write register 0xd8
rkpmic0: can't read register 0xd8
rkpmic0: can't read register 0xda
rkpmic0: can't read register 0xda
rkpmic0: can't write register 0xda
rkpmic0: can't read register 0xdc
rkpmic0: can't read register 0xdc
rkpmic0: can't write register 0xdc
rkpmic0: can't read register 0xde
rkpmic0: can't read register 0xde
rkpmic0: can't write register 0xde
rkpmic0: can't read register 0xde
rkpmic0: can't read register 0xde
"pvtm" at mainbus0 not configured
"npu" at mainbus0 not configured
"npu-opp-table" at mainbus0 not configured
"bus-npu-opp-table" at mainbus0 not configured
"iommu" at mainbus0 not configured
"gpu" at mainbus0 not configured
"opp-table2" at mainbus0 not configured
"pvtm" at mainbus0 not configured
"pvtm" at mainbus0 not configured
"vdpu" at mainbus0 not configured
"iommu" at mainbus0 not configured
"rk_rga" at mainbus0 not configured
"vepu" at mainbus0 not configured
"iommu" at mainbus0 not configured
"rkvenc" at mainbus0 not configured
"rkvenc-opp-table" at mainbus0 not configured
"iommu" at mainbus0 not configured
"rkvdec" at mainbus0 not configured
"rkvdec-opp-table" at mainbus0 not configured
"iommu" at mainbus0 not configured
"iommu" at mainbus0 not configured
"rkisp" at mainbus0 not configured
"iommu" at mainbus0 not configured
"rkisp-vir0" at mainbus0 not configured
"vop" at mainbus0 not configured
"iommu" at mainbus0 not configured
"hdmi" at mainbus0 not configured
"nocp-cpu" at mainbus0 not configured
"nocp-gpu-vpu-rga-venc" at mainbus0 not configured
"nocp-vdec" at mainbus0 not configured
"nocp-vi-usb-peri-pipe" at mainbus0 not configured
"nocp-vo" at mainbus0 not configured
"dmc-fsp" at mainbus0 not configured
"dmc-opp-table" at mainbus0 not configured
dwmmc0 at mainbus0: 50 MHz base clock
sdmmc0 at dwmmc0: 4-bit, sd high-speed, dma
"spi" at mainbus0 not configured
dwmshc0 at mainbus0
dwmshc0: SDHC 4.20, 200 MHz base clock
sdmmc1 at dwmshc0: 8-bit, sd high-speed, mmc high-speed, dma
"nandc" at mainbus0 not configured
rkrng0 at mainbus0: ver 2
"otp" at mainbus0 not configured
"i2s" at mainbus0 not configured
"dmac" at mainbus0 not configured
"dmac" at mainbus0 not configured
rkiic1 at mainbus0
iic1 at rkiic1
"goodix,gt1x" at iic1 addr 0x14 not configured
rkiic2 at mainbus0
iic2 at rkiic2
"ovti,ov5647" at iic2 addr 0x36 not configured
"galaxycore,gc8034" at iic2 addr 0x37 not configured
rkiic3 at mainbus0
iic3 at rkiic3
"timer" at mainbus0 not configured
"watchdog" at mainbus0 not configured
"spi" at mainbus0 not configured
com0 at mainbus0: dw16550, 64 byte fifo
com1 at mainbus0: dw16550, 64 byte fifo
com2 at mainbus0: dw16550, 64 byte fifo
com3 at mainbus0: dw16550, 64 byte fifo
com3: console
com4 at mainbus0: dw16550, 64 byte fifo
rkpwm0 at mainbus0rkclock_get_frequency(rkclock1, 346)
> no clock
rkpwm1 at mainbus0rkclock_get_frequency(rkclock1, 346)
> no clock
"tsadc" at mainbus0 not configured
"saradc" at mainbus0 not configured
"csi2-dphy-hw" at mainbus0 not configured
"csi2-dphy1" at mainbus0 not configured
"adc-keys" at mainbus0 not configured
"backlight" at mainbus0 not configured
"backlight1" at mainbus0 not configured
"dc-12v" at mainbus0 not configured
"hdmi-sound" at mainbus0 not configured
"leds" at mainbus0 not configured
"rk809-sound" at mainbus0 not configured
"spdif-sound" at mainbus0 not configured
"spdif-out" at mainbus0 not configured
"vcc3v3-sys" at mainbus0 not configured
"vcc5v0-sys" at mainbus0 not configured
"vcc5v0-usb" at mainbus0 not configured
"vcc5v0-host-regulator" at mainbus0 not configured
"vcc5v0-otg-regulator" at mainbus0 not configured
"vcc3v3-lcd0-n" at mainbus0 not configured
"vcc3v3-lcd1-n" at mainbus0 not configured
"sdio-pwrseq" at mainbus0 not configured
"wireless-wlan" at mainbus0 not configured
"wireless-bluetooth" at mainbus0 not configured
"test-power" at mainbus0 not configured
"vcc-camera-regulator" at mainbus0 not configured
"external-camera-clock" at mainbus0 not configured
"gpio-regulator" at mainbus0 not configured
"debug" at mainbus0 not configured
"cspmu" at mainbus0 not configured
"framebuffer" at mainbus0 not configured
rk3568_pmu_enable: 0x00000005
bwfm0 at sdmmc0 function 1
bwfm0: SoC interconnect SB not implemented
bwfm0: cannot attach chip
manufacturer 0x02d0, product 0xa9bf at sdmmc0 function 2 not configured
manufacturer 0x02d0, product 0xa9bf at sdmmc0 function 3 not configured
sdmmc1: can't enable card
uhub2 at uhub1 port 1 configuration 1 interface 0 "Terminus Technology USB2.0 HUB" \
rev 2.00/1.00 addr 2 umass0 at uhub2 port 1 configuration 1 interface 0 "Sony Storage \
                Media" rev 2.10/1.00 addr 3
umass0: using SCSI over Bulk-Only
scsibus0 at umass0: 2 targets, initiator 0
sd0 at scsibus0 targ 1 lun 0: <Sony, Storage Media, PMAP> removable \
                serial.054c09c2593A1D156A65
sd0: 29637MB, 512 bytes/sector, 60698112 sectors
umass1 at uhub2 port 3 configuration 1 interface 0 "USB SanDisk 3.2Gen1" rev \
                2.10/1.00 addr 4
umass1: using SCSI over Bulk-Only
scsibus1 at umass1: 2 targets, initiator 0
sd1 at scsibus1 targ 1 lun 0: <USB, SanDisk 3.2Gen1, 1.00> removable \
                serial.0781558381075e2a041c
sd1: 29340MB, 512 bytes/sector, 60088320 sectors
softraid0 at root
scsibus2 at softraid0: 256 targets
root on rd0a swap on rd0b dump on rd0b
rkpmic0: can't read RTC
WARNING: bad clock chip time
WARNING: CHECK AND RESET THE DATE!
cpu0: regulator not implemented
erase ^?, werase ^W, kill ^U, intr ^C, status ^T

Welcome to the OpenBSD/arm64 7.4 installation program.
(I)nstall, (U)pgrade, (A)utoinstall or (S)hell?

Maybe we can have a glass terminal over the HDMI? I have to check tomorrow. Update: i haven’t managed to get signal out of the HDMI port yet.

But this is a big win: after countless hours of messing with this I have managed to boot OpenBSD on the board! But i tought it would be much easier…