{
  "version": "https://jsonfeed.org/version/1",
  "title": "Ian's Digital Garden",
  "home_page_url": "https://blog.ianwwagner.com/",
  "feed_url": "https://blog.ianwwagner.com//tag-arm.json",
  "description": "",
  "items": [
    {
      "id": "https://blog.ianwwagner.com//adventures-in-freebsd-bringup-on-an-rk3588-part-1.html",
      "url": "https://blog.ianwwagner.com//adventures-in-freebsd-bringup-on-an-rk3588-part-1.html",
      "title": "Adventures in FreeBSD Bringup on an RK3588 (Part 1)",
      "content_html": "<p>Last month while sitting in a cafe, my friend Andrew showed me an article about a quirky new E Ink device that was launching\n(we're both huge fans of the technology).\nIt was cheap enough to be impulse purchase material,\nso I went to order it.\nAnd on the checkout page, something happened which has literally never happened to me... ever...\nI saw a &quot;you might also like&quot; style sales pitch, and the product was actually so compelling that I bought it 😱\nThe company was basically nerd sniping me.</p>\n<p>The item in question is a Rockchip 3588 (RK3588) mini PC from Seeed Studio.\nI was excited because it's rare to see an ARM-based system with a bit of oomph\nwhich isn't locked down like Fort Knox.\nI've long believed (since the early days of the iPhone)\nthat ARM systems have an extremely attractive power to watt ratio.\nAnd while platforms like Apple Silicon run circles around the competition,\nit seems like Apple is the only company that even cares in the consumer PC space these days.\nThere are a few datacenter-class chips that are starting to become widely available,\nbut the entry price isn't exactly cheap, and they are relatively difficult to obtain.</p>\n<p>Asd so I become aware of this RK3588 system.\nThe RK3588 has 8 cores (4x A76 and 4x A55).\nThe cores aren't blazing fast but they aren't slow either,\nand it's configurable with respectable amounts of DDR5.\nIt even comes with 2x 2.5GbE NICs (very handy!)\nand an NPU (maybe useful; maybe not).\nAnd you can buy it with delivery in a month for what I considered to be a fair price.</p>\n<p><a href=\"https://files.seeedstudio.com/wiki/reComputer_RK/Documents/recomputer_rk3588/RECOMPUTER_RK3588_V10_0119.pdf\">Schematics</a> included!</p>\n<p>Wait, schematics?\nYeh, so there's this other thing...\nI'd <em>really</em> prefer to run FreeBSD on it (or maybe NetBSD <a href=\"https://netbsd-cells.petermann-digital.de/\">now that they have cells</a>?).\nAnd for that, I'll probably need some schematics and other documentation.</p>\n<p>How hard can it be?\nI guess that's what we'll find out in this series.\nHere's the first post.</p>\n<h1><a href=\"#getting-some-help-from-armbian\" aria-hidden=\"true\" class=\"anchor\" id=\"getting-some-help-from-armbian\"></a>Getting some help from Armbian</h1>\n<p>The first thing I learned is that most ARM SBCs don't actually have a BIOS or UEFI or anything in firmware.\nThere's no boot menu to say &quot;why yes, I'd like the USB stick, please.&quot;\nInstead, you usually boot off of SD, eMMC, or SPI flash (I did not even know what this was to be honest).\nIf you're familiar with the idea of burning an ISO to a CDR or flashing an image to a USB stick with <code>dd</code>,\nthe process for these devices is similar.\nBut in addition to the OS, you also need a bootloader, and these are often chip- or board-specific.</p>\n<p>The Seeed studio reComputer has official Armbian support.\nSo my first idea was to pull the boot images from the Armbian distro that I'd already installed\nand write that to the relevant early sectors of the card,\non top of a FreeBSD system image designed for a similar chipset.\nThe FreeBSD project publishes official images for a few device families,\nincluding RockPro, which is a reasonable starting point.</p>\n<p>I first used the Armbian Installer to create a bootable SD card from my other computer\n(a MacBook in this case) which has an SD card reader.\nAt the time of this writing, the version was <code>v26.8.5 for reComputer RK3588 running Armbian Linux 6.1.172-vendor-seeed-rk3588</code>.\n(NB: I set up an SSH host config with <code>recomputer</code> as an alias to make things easier.)</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner language-shell\"><a-f>mkdir</a-f> ~/recomputer-rk3588-boot\n\n<a-f>scp</a-f> recomputer:/usr/lib/linux-u-boot-vendor-recomputer-rk3588-devkit/idbloader.img ~/recomputer-rk3588-boot/\n<a-f>scp</a-f> recomputer:/usr/lib/linux-u-boot-vendor-recomputer-rk3588-devkit/u-boot.itb ~/recomputer-rk3588-boot/\n<a-f>scp</a-f> recomputer:/boot/dtb-6.1.172-vendor-seeed-rk3588/rockchip/rk3588-recomputer-rk3588-devkit.dtb ~/recomputer-rk3588-boot/</code></pre>\n<p>The next thing I did was to prepare for the eventuality of not having a regular video connection like with the older systems I was used to.\nGiven that FreeBSD doesn't fully support the RK3588 yet, we'll need to set up a serial UART connection\nas HDMI probably won't work on the first boot.</p>\n<p>To do this, we need to figure out the baud rate.\nArmbian, which works out of the box, can help us.\nPoking around <code>/boot</code>, I found the DTB (Device Tree Blob).\nThis file describes the hardware of the system.\nWe can convert the blob back to source like this:</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner language-shell\"><a-f>dtc</a-f> <a-co>-I</a-co> dtb <a-co>-O</a-co> dts \\\n  /boot/dtp-6.1.172-vendor-seeed-rk3588/rockchip/rk3588-recomputer-rk3588-devkit.dtb \\\n  <a-o>&gt;</a-o> /tmp/recomputer.dts</code></pre>\n<p>I was able to discover that the UART console is on <code>fiq-debugger</code>,\nso I poked around for that block in the DTS.\nI found the line <code>rockchip,baudrate = &lt;0x16e360&gt;</code>, which translates into 1500000 in decimal.\nSo there's our baudrate.</p>\n<h1><a href=\"#getting-our-first-console\" aria-hidden=\"true\" class=\"anchor\" id=\"getting-our-first-console\"></a>Getting our first console</h1>\n<p>As mentioned above, the board firmware is barebones, so we can't take HDMI or anything for granted.\nARM SBCs like this give us GPIO headers instead.</p>\n<p>GPIO headers are just raw pins that you wire up with cables to... something you can work with.\nFor most people, that &quot;something you can work with&quot; is a USB to TTL adapter.\nIt has has USB connector on one side, maybe a jumper for voltage configuration, and 4 pins (VCC, TX, RX, and GND),\nand we can use it with tools like <code>cu</code> to get a console\n(which is incidentally WAY nicer once set up than most standard monitor setups!).</p>\n<p>I purchased a cheap adapter off Coupang.\nActually, I purchased TWO adapters, since I mistakenly ordered a 5V one the first time,\nand realized my mistake looking at the schematic (this board needs 3.3V).</p>\n<p>The 40-pin GPIO header is next to the CPU, but there are no labels.\nWhile Seeed Studio does publish full schematics, I couldn't find any indication on the top side of the board which pins were which.</p>\n<p>After a few minutes of scrutinizing for microscopic markings,\nI flipped the board over and found they had helpfully marked GND, RX, and TX pins on the underside!</p>\n<p>The cables were VERY short so it took a bit of desk tetris to get things oriented.</p>\n<p><figure><img src=\"media/usb-ttl.jpeg\" alt=\"A photo of the USB to TTL connection\" /></figure></p>\n<p>FreeBSD recognized the USB device as a serial console at <code>/dev/cuaU0</code> on my machine.\nSo now with the baud rate, we have all we need to open up the connection: <code>cu -l /dev/cuaU0 -s 1500000</code>\n(NB: you need to run this as root).</p>\n<p>Powering on the device, I got the following output from an Armbian boot. Success: we have a console!</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\">DDR b8ce94f14b cym 25/09/26-15:48.05,fwver: v1.20\nch0 ttot6\nch1 ttot6\nch2 ttot6\nch3 ttot6\nch0 ttot7\nLPDDR5, 2400MHz\nchannel[0] BW=16 Col=10 Bk=16 CS0 Row=16 CS1 Row=16 CS=2 Die BW=16 Size=4096MB\nch1 ttot7\nchannel[1] BW=16 Col=10 Bk=16 CS0 Row=16 CS1 Row=16 CS=2 Die BW=16 Size=4096MB\nch2 ttot7\nchannel[2] BW=16 Col=10 Bk=16 CS0 Row=16 CS1 Row=16 CS=2 Die BW=16 Size=4096MB\nch3 ttot7\nchannel[3] BW=16 Col=10 Bk=16 CS0 Row=16 CS1 Row=16 CS=2 Die BW=16 Size=4096MB\nManufacturer ID:0xff\nDQS rds:l0,l0\nCH0 RX Vref:27.1%, TX Vref:22.0%,21.0%\nDQ rds:h4 h4 h3 h1 h6 h4 h4 h2, l1 l0 h2 h7 h1 l0 l0 h1\n\nDQS rds:h1,l1\nCH1 RX Vref:27.5%, TX Vref:22.0%,21.0%\nDQ rds:h2 h1 h7 h5 h2 h4 h6 h4, h5 h3 h3 h3 h1 h2 h4 h1\n\nDQS rds:l0,l0\nCH2 RX Vref:27.1%, TX Vref:23.0%,23.0%\nDQ rds:h3 h1 h1 h5 h2 h7 h3 h3, h1 h3 h7 h1 h2 l0 h2 h1\n\nDQS rds:l0,l0\nCH3 RX Vref:30.1%, TX Vref:22.0%,22.0%\nDQ rds:h2 h2 h2 h2 h4 h1 h4 h1, h5 h2 h1 l0 h3 h3 h2 l0\n\nstride=0x2, ddr_config=0x6\nhash ch_mask0-1 0x20 0x40, bank_mask0-3 0x0 0x2400 0x44800 0x89000, rank_mask0 0x2000\nchange to F1: 534MHz\nch0 ttot6\nch1 ttot6\nch2 ttot6\nch3 ttot6\nchange to F2: 1320MHz\nch0 ttot8\nch1 ttot8\nch2 ttot8\nch3 ttot8\nchange to F3: 1968MHz\nch0 ttot6\nch1 ttot6\nch2 ttot6\nch3 ttot6\nchange to F0: 2400MHz\nch0 ttot7\nch1 ttot7\nch2 ttot7\nch3 ttot7\nout\nU-Boot SPL board init\nU-Boot SPL 2017.09_armbian-2017.09-S39cd-P3cf6-H5af5-V6ae2-B6a81-R448a (Sep 16 2026 - 02:12:42)\nSPL Hotkey: ctrl+`\nsfc cmd=03H(6BH-x4)\nTrying to boot from MMC2\nMMC: no card present\nmmc_init: -123, time 0\nspl: mmc init failed with error: -123\nTrying to boot from MTD2\nTrying fit image at 0x4000 sector\n## Verified-boot: 0\n## Checking atf-1 0x00040000 ... sha256(7612223b82...) + OK\n## Checking uboot 0x00200000 ... sha256(23eb671700...) + OK\n## Checking fdt 0x0035b190 ... sha256(3e1835469d...) + OK\n## Checking atf-2 0xff100000 ... sha256(70505bb764...) + OK\n## Checking atf-3 0x000f0000 ... sha256(b2af21b504...) + OK\nJumping to U-Boot(0x00200000) via ARM Trusted Firmware(0x00040000)\nTotal: 503.254/895.848 ms\n\nINFO:    Preloader serial: 2\nNOTICE:  BL31: v2.3():v2.3-868-g040d2de11:derrick.huang, fwver: v1.48\nNOTICE:  BL31: Built : 15:02:44, Dec 19 2024\nINFO:    spec: 0x1\nINFO:    code: 0x88\nINFO:    ext 32k is not valid\nINFO:    ddr: stride-en 4CH\nINFO:    GICv3 without legacy support detected.\nINFO:    ARM GICv3 driver initialized in EL3\nINFO:    valid_cpu_msk=0xff bcore0_rst = 0x0, bcore1_rst = 0x0\nINFO:    l3 cache partition cfg-0\nINFO:    system boots from cpu-hwid-0\nINFO:    bypass memory repair\nINFO:    idle_st=0x21fff, pd_st=0x11fff9, repair_st=0xfff70001\nINFO:    dfs DDR fsp_params[0].freq_mhz= 2400MHz\nINFO:    dfs DDR fsp_params[1].freq_mhz= 534MHz\nINFO:    dfs DDR fsp_params[2].freq_mhz= 1320MHz\nINFO:    dfs DDR fsp_params[3].freq_mhz= 1968MHz\nINFO:    BL31: Initialising Exception Handling Framework\nINFO:    BL31: Initializing runtime services\nWARNING: No OPTEE provided by BL2 boot loader, Booting device without OPTEE initialization. SMC`s destined for OPTEE will return SMC_UNK\nERROR:   Error initializing runtime service opteed_fast\nINFO:    BL31: Preparing for EL3 exit to normal world\nINFO:    Entry point address = 0x200000\nINFO:    SPSR = 0x3c9\nusb dr_mode not found\nusb dr_mode not found\n\n\nU-Boot 2017.09_armbian-2017.09-S39cd-P3cf6-H5af5-V6ae2-B6a81-R448a (Sep 16 2026 - 02:12:42 +0000)\n\nModel: Seeed Studio reComputer RK3588 DevKit\nMPIDR: 0x0\nPreSerial: 2, raw, 0xfeb50000\nDRAM:  16 GiB\nSysmem: init\nRelocation Offset: eda03000\nRelocation fdt: eb7f6e50 - eb7fecc0\nCR: M/C/I\nusb dr_mode not found\nusb dr_mode not found\nDM: v2\nRESC: No bootdev\nFailed to load DTB, ret=-2\nNo valid DTB, ret=-22\nFailed to get kernel dtb, ret=-22\nBooted from SPI NOR; scanning OS boot devices\nmmc@fe2c0000: 1, mmc@fe2e0000: 0\nMMC: no card present\nmmc_init: -123, time 0\npcie@fe180000: PCIe Linking... LTSSM is 0x0\npcie@fe180000: PCIe Linking... LTSSM is 0x0\npcie@fe180000: PCIe Linking... LTSSM is 0x2\npcie@fe180000: PCIe Linking... LTSSM is 0x2\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe-0 Link Fail\npcie@fe190000: PCIe Linking... LTSSM is 0x0\npcie@fe190000: PCIe Link up, LTSSM is 0x130011\npcie@fe190000: PCIE-0: Link up (Gen2-x1, Bus0)\npcie@fe150000: PCIe Linking... LTSSM is 0x1\npcie@fe150000: PCIe Linking... LTSSM is 0x210023\npcie@fe150000: PCIe Link up, LTSSM is 0x230011\npcie@fe150000: PCIE-2: Link up (Gen3-x4, Bus2)\npcie@fe170000: PCIe Linking... LTSSM is 0x0\npcie@fe170000: PCIe Link up, LTSSM is 0x130011\npcie@fe170000: PCIE-4: Link up (Gen2-x1, Bus4)\n\nDevice 0: Vendor: 0x1e0f Rev: ECFA17.3 Prod: 65PA20KEKQLP\n            Type: Hard Disk\n            Capacity: 1907729.0 MB = 1863.0 GB (3907029168 x 512)\n... is now current device\nBoot from nvme\nBootdev(scan): nvme 0\nPartType: EFI\n*** Warning - bad CRC, using default environment\n\nModel: Seeed Studio reComputer RK3588 DevKit\n[Vendor ERROR]:Invalid boot device type(0)\n## Error: Can't overwrite &quot;ethaddr&quot;\n## Error inserting &quot;ethaddr&quot; variable, errno=1\n## Error: Can't overwrite &quot;eth1addr&quot;\n## Error inserting &quot;eth1addr&quot; variable, errno=1\n[Vendor ERROR]:Invalid boot device type(0)\nrockchip_set_ethaddr: vendor_storage_write failed -19\n[Vendor ERROR]:Invalid boot device type(0)\nBooted from SPI NOR; scanning OS boot devices\nMMC: no card present\nmmc_init: -123, time 0\npcie@fe180000: PCIe Linking... LTSSM is 0x0\npcie@fe180000: PCIe Linking... LTSSM is 0x0\npcie@fe180000: PCIe Linking... LTSSM is 0x2\npcie@fe180000: PCIe Linking... LTSSM is 0x2\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe-6 Link Fail\n\nDevice 0: Vendor: 0x1e0f Rev: ECFA17.3 Prod: 65PA20KEKQLP\n            Type: Hard Disk\n            Capacity: 1907729.0 MB = 1863.0 GB (3907029168 x 512)\n... is now current device\nBoot from nvme\nBootdev(scan): nvme 0\nstarting USB...\nBus usb@fc000000: usb maximum-speed not found\nRegister 2000140 NbrPorts 2\nStarting the controller\nUSB XHCI 1.10\nBus usb@fc800000: USB EHCI 1.00\nBus usb@fc840000: USB OHCI 1.0\nBus usb@fc880000: USB EHCI 1.00\nBus usb@fc8c0000: USB OHCI 1.0\nBus usb@fc400000: usb maximum-speed not found\nRegister 2000140 NbrPorts 2\nStarting the controller\nUSB XHCI 1.10\nscanning bus usb@fc000000 for devices... 1 USB Device(s) found\nscanning bus usb@fc800000 for devices... 1 USB Device(s) found\nscanning bus usb@fc840000 for devices... 1 USB Device(s) found\nscanning bus usb@fc880000 for devices... 1 USB Device(s) found\nscanning bus usb@fc8c0000 for devices... 1 USB Device(s) found\nscanning bus usb@fc400000 for devices... cannot reset port 1!?\n1 USB Device(s) found\n       scanning usb for storage devices... 0 Storage Device(s) found\nNo usb mass storage found\nNo bootdev\ndev_desc is NULL!\nboot mode: None\nNo bootdev\nCLK: (sync kernel. arm: enter 1008000 KHz, init 1008000 KHz, kernel 0N/A)\n  b0pll 24000 KHz\n  b1pll 24000 KHz\n  lpll 24000 KHz\n  v0pll 24000 KHz\n  aupll 24000 KHz\n  cpll 1500000 KHz\n  gpll 1188000 KHz\n  npll 24000 KHz\n  ppll 1100000 KHz\n  aclk_center_root 702000 KHz\n  pclk_center_root 100000 KHz\n  hclk_center_root 396000 KHz\n  aclk_center_low_root 500000 KHz\n  aclk_top_root 750000 KHz\n  pclk_top_root 100000 KHz\n  aclk_low_top_root 396000 KHz\nNo bootdev\nNet:   No ethernet found.\nHit key to stop autoboot('CTRL+C'):  0\n\nDevice 0: unknown device\nMMC: no card present\nmmc_init: -123, time 0\npcie@fe180000: PCIe Linking... LTSSM is 0x0\npcie@fe180000: PCIe Linking... LTSSM is 0x0\npcie@fe180000: PCIe Linking... LTSSM is 0x2\npcie@fe180000: PCIe Linking... LTSSM is 0x2\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe Linking... LTSSM is 0x3\npcie@fe180000: PCIe-6 Link Fail\n\nDevice 0: Vendor: 0x1e0f Rev: ECFA17.3 Prod: 65PA20KEKQLP\n            Type: Hard Disk\n            Capacity: 1907729.0 MB = 1863.0 GB (3907029168 x 512)\n... is now current device\nCould not find misc partition\nANDROID: reboot reason: &quot;(none)&quot;\nNot AVB images, AVB skip\nandroid_image_load_by_partname: Can't find part: boot\nAndroid image load failed\nAndroid boot failed, error -1.\nScanning nvme 0:1...\nFound U-Boot script /boot/boot.scr\n8646 bytes read in 2 ms (4.1 MiB/s)\n## Executing script at 00500000\nBoot script loaded from nvme 0:1\n243 bytes read in 2 ms (118.2 KiB/s)\n300175 bytes read in 9 ms (31.8 MiB/s)\nUnknown command ':' - try 'help'\nSetting bus to 4\nI2c4 speed: 100000Hz\nDetected board: reComputer RK3588 Devkit, using DTB: rockchip/rk3588-recomputer-rk3588-devkit.dtb\nUsing fdtfile=rockchip/rk3588-recomputer-rk3588-devkit.dtb\n16437252 bytes read in 21 ms (746.5 MiB/s)\n45464064 bytes read in 52 ms (833.8 MiB/s)\n300175 bytes read in 9 ms (31.8 MiB/s)\n** File not found /boot/dtb/rockchip/overlay/seeed-rk3588-rockchip-rk3588-panthor-gpu.dtbo **\n441 bytes read in 14 ms (30.3 KiB/s)\nApplying kernel provided DT overlay rockchip-rk3588-panthor-gpu.dtbo\nTrying kaslrseed command... Info: Unknown command can be safely ignored since kaslrseed does not apply to all boards.\nUnknown command 'kaslrseed' - try 'help'\nFdt Ramdisk skip relocation\nNo misc partition\n## Loading init Ramdisk from Legacy Image at 0a200000 ...\n   Image Name:   uInitrd\n   Image Type:   AArch64 Linux RAMDisk Image (gzip compressed)\n   Data Size:    16437188 Bytes = 15.7 MiB\n   Load Address: 00000000\n   Entry Point:  00000000\n   Verifying Checksum ... OK\n## Flattened Device Tree blob at 0x08300000\n   Booting using the fdt blob at 0x08300000\n   reserving fdt memory region: addr=8300000 size=af000\n   Using Device Tree in place at 0000000008300000, end 00000000083b1fff\nJEDEC id bytes: 5e, 40, 18\nSF: Detected sfc_nor with page size 256 Bytes, erase size 4 KiB, total 16 MiB\n## reserved-memory:\n  cma: addr=10000000 size=10000000\n  ramoops@110000: addr=110000 size=e0000\nAdding bank: 0x00200000 - 0xf0000000 (size: 0xefe00000)\nAdding bank: 0x100000000 - 0x3fc000000 (size: 0x2fc000000)\nAdding bank: 0x3fc500000 - 0x3fff00000 (size: 0x03a00000)\nAdding bank: 0x4f0000000 - 0x500000000 (size: 0x10000000)\nTotal: 14284.180/14297.174 ms\n\nStarting kernel ...\n\n\nArmbian 26.8.5 Trixie ttyFIQ0\n\nrecomputer-rk3588-devkit login:\n</code></pre>\n<h1><a href=\"#flashing-an-sd-card\" aria-hidden=\"true\" class=\"anchor\" id=\"flashing-an-sd-card\"></a>Flashing an SD card</h1>\n<p>Okay, now we can finally flash an SD card.\nThe FreeBSD images have a similar layout to the Armbian ones,\nso theoretically we can just overwrite the boot area with U-Boot\nusing a version that's already been patched for this exact board by Armbian and the vendor.\nI downloaded the latest current image,\nflashed it, and then overwrote the bootloader we lifted from Armbian.\nNB: I use <code>nushell</code> but this shuld be easy to adopt to another shell.</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner language-shell\"><a-c># Look at availabe disks</a-c>\n<a-f>diskutil</a-f> list\n<a-c># Find the SD card and note its disk number; for me it&#39;s disk4</a-c>\n<a-f>diskutil</a-f> unmountDisk /dev/disk4 <a-c># Probably not necessary, but just in case...</a-c>\n<a-c># rdisk devs are faster on macOS; the block size is 1 megabyte but in a portable representation</a-c>\n<a-f>sudo</a-f> dd if=FreeBSD-16.0-CURRENT-arm64-aarch64-ROCKPRO64-20260916-32878e64e687-289242.img of=/dev/rdisk4 bs=1048576\n<a-f>let</a-f> BOOT = <a-o>$</a-o><a-s>&quot;(</a-s><a-o>$</a-o><a-pr>env</a-pr><a-s>.HOME)/recomputer-rk3588-boot&quot;</a-s>\n<a-f>sudo</a-f> dd if=<a-o>$</a-o><a-s>&quot;(</a-s><a-o>$</a-o><a-pr>BOOT</a-pr><a-s>)/idbloader.img&quot;</a-s> of=/dev/rdisk4 bs=512 seek=64 conv=notrunc\n<a-f>sudo</a-f> dd if=<a-o>$</a-o><a-s>&quot;(</a-s><a-o>$</a-o><a-pr>BOOT</a-pr><a-s>)/u-boot.itb&quot;</a-s> of=/dev/rdisk4 bs=512 seek=16384 conv=notrunc\n<a-f>sync</a-f></code></pre>\n<p>Skipping the boring parts, this fails.\nIt seems like the vendor version of U-Boot (2017.09, but built on August 31, 2026... interesting...) doesn't have UEFI support.\nHowever, the newer Armbian mainline U-boot packages do!\nTo get this, we need to turn to the edge branch.\nAn internet search turned up <a href=\"https://apt-test.next.armbian.com/pool/main/l/linux-u-boot-recomputer-rk3588-devkit-edge/\">apt-test.next.armbian.com</a>,\nwhich had an <code>edge</code> variant deb package for download.\nI grabbed that and then extracted just the pieces to flash on the SD card.\nNOTE: These commands will not work exactly as it's a datestamped package.</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner language-shell\"><a-f>wget</a-f> https://apt-test.next.armbian.com/pool/main/l/linux-u-boot-recomputer-rk3588-devkit-edge/linux-u-boot-recomputer-rk3588-devkit-edge_26.09.23-1999_arm64.deb\n<a-f>mkdir</a-f> /tmp/recomputer-edge-uboot\n<a-f>dpkg-deb</a-f> <a-co>-x</a-co> linux-u-boot-recomputer-rk3588-devkit-edge_*.deb /tmp/recomputer-edge-uboot</code></pre>\n<p>In there, I found what I was looking for: <code>/tmp/recomputer-edge-uboot/usr/lib/linux-u-boot-edge-recomputer-rk3588-devkit/u-boot-rockchip.bin</code>.\nThis actually does the duty of both the separate images we had to line up before.\nNote how the first idbloader.img was offset by 32K (512 x 64).</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner language-shell\"><a-f>shell</a-f>\n<a-f>sudo</a-f> dd if=<a-o>$</a-o><a-s>&quot;(</a-s><a-o>$</a-o><a-pr>env</a-pr><a-s>.HOME)/recomputer-rk3588-boot/u-boot-rockchip.bin&quot;</a-s> of=/dev/rdisk4 bs=32768 seek=1 conv=notrunc\n<a-f>sync</a-f></code></pre>\n<p>Then it's off to boot.\nAnd this looks something much more like a first boot... ish!\nHere's the first part of the boot sequence.</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\">DDR b8ce94f14b cym 25/09/26-15:48.05,fwver: v1.20\nch0 ttot6\nch1 ttot6\nch2 ttot6\nch3 ttot6\nch0 ttot7\nLPDDR5, 2400MHz\nchannel[0] BW=16 Col=10 Bk=16 CS0 Row=16 CS1 Row=16 CS=2 Die BW=16 Size=4096MB\nch1 ttot7\nchannel[1] BW=16 Col=10 Bk=16 CS0 Row=16 CS1 Row=16 CS=2 Die BW=16 Size=4096MB\nch2 ttot7\nchannel[2] BW=16 Col=10 Bk=16 CS0 Row=16 CS1 Row=16 CS=2 Die BW=16 Size=4096MB\nch3 ttot7\nchannel[3] BW=16 Col=10 Bk=16 CS0 Row=16 CS1 Row=16 CS=2 Die BW=16 Size=4096MB\nManufacturer ID:0xff\nDQS rds:l0,l0\nCH0 RX Vref:27.1%, TX Vref:22.0%,20.0%\nDQ rds:h4 h4 h3 h1 h6 h3 h4 h2, l1 l0 h2 h7 h2 l0 l0 h1\n\nDQS rds:h1,l1\nCH1 RX Vref:27.5%, TX Vref:21.0%,21.0%\nDQ rds:h2 h1 h7 h5 h2 h4 h5 h3, h5 h4 h3 h4 h1 h3 h4 l0\n\nDQS rds:l0,l0\nCH2 RX Vref:27.1%, TX Vref:24.0%,22.0%\nDQ rds:h3 h1 h1 h6 h2 h7 h3 h3, h1 h3 h7 h1 h2 l0 h2 h1\n\nDQS rds:l0,l0\nCH3 RX Vref:30.1%, TX Vref:21.0%,21.0%\nDQ rds:h1 h1 h2 h2 h4 h1 h3 h1, h4 h1 h1 l0 h3 h3 h1 l0\n\nstride=0x2, ddr_config=0x6\nhash ch_mask0-1 0x20 0x40, bank_mask0-3 0x0 0x2400 0x44800 0x89000, rank_mask0 0x2000\nchange to F1: 534MHz\nch0 ttot6\nch1 ttot6\nch2 ttot6\nch3 ttot6\nchange to F2: 1320MHz\nch0 ttot8\nch1 ttot8\nch2 ttot8\nch3 ttot8\nchange to F3: 1968MHz\nch0 ttot6\nch1 ttot6\nch2 ttot6\nch3 ttot6\nchange to F0: 2400MHz\nch0 ttot7\nch1 ttot7\nch2 ttot7\nch3 ttot7\nout\nU-Boot SPL board init\nU-Boot SPL 2017.09_armbian-2017.09-S39cd-P3cf6-H5af5-V6ae2-B6a81-R448a (Sep 16 2026 - 02:12:42)\nsfc cmd=03H(6BH-x4)\nTrying to boot from MMC2\nspl: partition error\nTrying fit image at 0x4000 sector\n## Verified-boot: 0\n## Checking atf-1 0x00040000 ... sha256(38af45e591...) + OK\n## Checking u-boot 0x00800000 ... sha256(76020c775a...) + OK\n## Checking fdt-1 0x00950150 ... sha256(dba4ede5fc...) + OK\n## Checking atf-2 0x0005f000 ... sha256(498d3d780d...) + OK\n## Checking atf-3 0xff100000 ... sha256(98ca41a3ef...) + OK\nJumping to U-Boot(0x00800000) via ARM Trusted Firmware(0x00040000)\nTotal: 677.349/1069.752 ms\n\nNOTICE:  BL31: v2.13.0(release):armbian\nNOTICE:  BL31: Built : 13:13:21, Sep 23 2026\nINFO:    GICv3 without legacy support detected.\nINFO:    ARM GICv3 driver initialized in EL3\nINFO:    Maximum SPI INTID supported: 511\nINFO:    BL31: Initializing runtime services\nINFO:    BL31: Preparing for EL3 exit to normal world\nINFO:    Entry point address = 0x800000\nINFO:    SPSR = 0x3c9\n\n\nU-Boot 2026.07_armbian-2026.07-Sece3-P1da1-He361-V493b-B6a81-R448a (Sep 23 2026 - 13:13:38 +0000)\n\nModel: Seeed Studio reComputer RK3588 Dev Kit\nSoC:   RK3588\nDRAM:  16 GiB\nPMIC:  RK806 (on=0x80, off=0x80)\nCore:  848 devices, 36 uclasses, devicetree: separate\nMMC:   mmc@fe2c0000: 1, mmc@fe2e0000: 0\nLoading Environment from SPIFlash... SF: Detected zb25vq128 with page size 256 Bytes, erase size 4 KiB, total 16 MiB\n*** Warning - bad CRC, using default environment\n\nIn:    serial@feb50000\nOut:   serial@feb50000\nErr:   serial@feb50000\nModel: Seeed Studio reComputer RK3588 Dev Kit\nSoC:   RK3588\nNet:   No ethernet found.\nHit any key to stop autoboot: 0\nScanning for bootflows in all bootdevs\nSeq  Method       State   Uclass    Part  Name                      Filename\n---  -----------  ------  --------  ----  ------------------------  ----------------\nScanning global bootmeth 'efi_mgr':\nCard did not respond to voltage select! : -110\nNo EFI variables loaded\n  0  efi_mgr      ready   (none)       0  &lt;NULL&gt;\n** Booting bootflow '&lt;NULL&gt;' with efi_mgr\nBooting: Label: mmc 1 Device path: /VenHw(e61d73b9-a384-4acc-aeab-82e828f3628b,0000000000000000)/SD(1)/SD(0)\n[image_setup_libfdt] called\n[image_setup_libfdt] calling fdt_fixup_ethernet\n[fdt_fixup_ethernet] called\n[fdt_fixup_ethernet] alias #0: name='gpio0', path='/pinctrl/gpio@fd8a0000'\n[fdt_fixup_ethernet] alias #1: name='gpio1', path='/pinctrl/gpio@fec20000'\n[fdt_fixup_ethernet] alias #2: name='gpio2', path='/pinctrl/gpio@fec30000'\n[fdt_fixup_ethernet] alias #3: name='gpio3', path='/pinctrl/gpio@fec40000'\n[fdt_fixup_ethernet] alias #4: name='gpio4', path='/pinctrl/gpio@fec50000'\n[fdt_fixup_ethernet] alias #5: name='i2c0', path='/i2c@fd880000'\n[fdt_fixup_ethernet] alias #6: name='i2c1', path='/i2c@fea90000'\n[fdt_fixup_ethernet] alias #7: name='i2c2', path='/i2c@feaa0000'\n[fdt_fixup_ethernet] alias #8: name='i2c3', path='/i2c@feab0000'\n[fdt_fixup_ethernet] alias #9: name='i2c4', path='/i2c@feac0000'\n[fdt_fixup_ethernet] alias #10: name='i2c5', path='/i2c@fead0000'\n[fdt_fixup_ethernet] alias #11: name='i2c6', path='/i2c@fec80000'\n[fdt_fixup_ethernet] alias #12: name='i2c7', path='/i2c@fec90000'\n[fdt_fixup_ethernet] alias #13: name='i2c8', path='/i2c@feca0000'\n[fdt_fixup_ethernet] alias #14: name='serial0', path='/serial@fd890000'\n[fdt_fixup_ethernet] alias #15: name='serial1', path='/serial@feb40000'\n[fdt_fixup_ethernet] alias #16: name='serial2', path='/serial@feb50000'\n[fdt_fixup_ethernet] alias #17: name='serial3', path='/serial@feb60000'\n[fdt_fixup_ethernet] alias #18: name='serial4', path='/serial@feb70000'\n[fdt_fixup_ethernet] alias #19: name='serial5', path='/serial@feb80000'\n[fdt_fixup_ethernet] alias #20: name='serial6', path='/serial@feb90000'\n[fdt_fixup_ethernet] alias #21: name='serial7', path='/serial@feba0000'\n[fdt_fixup_ethernet] alias #22: name='serial8', path='/serial@febb0000'\n[fdt_fixup_ethernet] alias #23: name='serial9', path='/serial@febc0000'\n[fdt_fixup_ethernet] alias #24: name='spi0', path='/spi@feb00000'\n[fdt_fixup_ethernet] alias #25: name='spi1', path='/spi@feb10000'\n[fdt_fixup_ethernet] alias #26: name='spi2', path='/spi@feb20000'\n[fdt_fixup_ethernet] alias #27: name='spi3', path='/spi@feb30000'\n[fdt_fixup_ethernet] alias #28: name='spi4', path='/spi@fecb0000'\n[fdt_fixup_ethernet] alias #29: name='ethernet0', path='/pcie@fe190000/pcie@0,0/ethernet@0,0'\n[fdt_fixup_ethernet] env var for alias 'ethernet0' is 'ethaddr', value='c6:1e:45:d5:c3:11'\n[fdt_fixup_ethernet] Patching node '/pcie@fe190000/pcie@0,0/ethernet@0,0' (offset 41640) with MAC c6:1e:45:d5:c3:11\n[fdt_fixup_ethernet] alias #30: name='ethernet1', path='/pcie@fe170000/pcie@0,0/ethernet@0,0'\n[fdt_fixup_ethernet] env var for alias 'ethernet1' is 'eth1addr', value='c6:1e:45:d5:c3:10'\n[fdt_fixup_ethernet] Patching node '/pcie@fe170000/pcie@0,0/ethernet@0,0' (offset 133268) with MAC c6:1e:45:d5:c3:10\n[fdt_fixup_ethernet] alias #31: name='mmc0', path='/mmc@fe2e0000'\n[fdt_fixup_ethernet] alias #32: name='mmc1', path='/mmc@fe2c0000'\n[fdt_fixup_ethernet] alias #33: name='spi5', path='/spi@fe2b0000'\n[fdt_fixup_ethernet] SUMMARY: aliases found=34, attempted=2, skipped=0, patched=2\n[image_setup_libfdt] calling ft_board_setup\n</code></pre>\n<p>After this, the console clears and we get handed off te the classic FreeBSD loader.</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\">Consoles: EFI console\n    Reading loader env vars from /efi/freebsd/loader.env\nSetting currdev to disk0p1:\nFreeBSD/arm64 EFI loader, Revision 3.0\n(Wed Sep 16 09:23:43 UTC 2026 root@releng3.nyi.freebsd.org)\n\n   Command line arguments: loader.efi\n   Image base: 0xec9e0000\n   EFI version: 2.110\n   EFI Firmware: Das U-Boot (rev 8230.1792)\n   Console: efi,comconsole (0)\n   Load Path: /\\EFI\\BOOT\\BOOTAA64.EFI\n   Load Device: /VenHw(e61d73b9-a384-4acc-aeab-82e828f3628b,0000000000000000)/SD(1)/SD(0)/HD(1,GPT,361fb9b1-b1b3-11f1-8781-0cc47ad8b808,0x8000,0x19000)\n   BootCurrent: 0000\n   BootOrder: 0000[*]\nSetting currdev to md0:\nMD not present\n   BootInfo Path: /VenHw(e61d73b9-a384-4acc-aeab-82e828f3628b,0000000000000000)/SD(1)/SD(0)\nIgnoring Boot0000: Only one DP found\nTrying ESP device: /VenHw(e61d73b9-a384-4acc-aeab-82e828f3628b,0000000000000000)/SD(1)/SD(0)/HD(1,GPT,361fb9b1-b1b3-11f1-8781-0cc47ad8b808,0x8000,0x19000)\nTrying: /VenHw(e61d73b9-a384-4acc-aeab-82e828f3628b,0000000000000000)/SD(1)/SD(0)\nSetting currdev to disk0:\nLoading /boot/defaults/loader.conf\nLoading /boot/defaults/loader.conf\nLoading /boot/device.hints\nLoading /boot/loader.conf\nLoading /boot/loader.conf.local\n\nLoading kernel...\n/boot/kernel/kernel text=0x318 text=0xa94cb0 text=0x300818 data=0x190120 data=0x0+0x373000 0x8+0x182748+0x8+0x150085\\\nLoading configured modules...\ncan't find '/boot/entropy'\ncan't find '/etc/hostid'\n/boot/kernel/umodem.ko text=0x20c0 text=0x1678 data=0x718+0x4 0x8+0xc78+0x8+0x913\nloading required module 'ucom'\n/boot/kernel/ucom.ko text=0x263d text=0x3258 data=0x988+0x858 0x8+0x1050+0x8+0x9e5\n\nHit [Enter] to boot immediately, or any other key for command prompt.\nBooting [/boot/kernel/kernel]...\nUsing DTB provided by EFI at 0xecb64000.\nLoading splash ok\nLoading shutdown splash ok\n</code></pre>\n<p>And then the boot:</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\">---&lt;&lt;BOOT&gt;&gt;---\nGDB: debug ports: uart\nGDB: current port: uart\nKDB: debugger backends: ddb gdb\nKDB: current backend: ddb\nWARNING: Cannot find freebsd,dts-version property, cannot check DTB compliance\nCopyright (c) 1992-2026 The FreeBSD Project.\nCopyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994\n        The Regents of the University of California. All rights reserved.\nFreeBSD is a registered trademark of The FreeBSD Foundation.\nFreeBSD 16.0-CURRENT #0 main-n289242-32878e64e687: Wed Sep 16 09:38:19 UTC 2026\n    root@releng3.nyi.freebsd.org:/usr/obj/usr/src/arm64.aarch64/sys/GENERIC arm64\nFreeBSD clang version 21.1.8 (https://github.com/llvm/llvm-project.git llvmorg-21.1.8-0-g2078da43e25a)\nWARNING: WITNESS option enabled, expect reduced performance.\nVT: init without driver.\nreal memory  = 17171271680 (16375 MB)\navail memory = 16774291456 (15997 MB)\nStarting CPU 1 (100)\nStarting CPU 2 (200)\nStarting CPU 3 (300)\nStarting CPU 4 (400)\nStarting CPU 5 (500)\nStarting CPU 6 (600)\nStarting CPU 7 (700)\nFreeBSD/SMP: Multiprocessor System Detected: 8 CPUs\nrandom: unblocking device.\nrandom: entropy device external interface\nkbd0 at kbdmux0\nofwbus0: &lt;Open Firmware Device Tree&gt;\nofw_firmware0: &lt;OFW Firmware Group&gt; on ofwbus0\nregfix0: &lt;Fixed Regulator&gt; on ofwbus0\nregfix1: &lt;Fixed Regulator&gt; on ofwbus0\nregfix2: &lt;Fixed Regulator&gt; on ofwbus0\nregfix3: &lt;Fixed Regulator&gt; on ofwbus0\nregfix4: &lt;Fixed Regulator&gt; on ofwbus0\nregfix5: &lt;Fixed Regulator&gt; on ofwbus0\nregfix6: &lt;Fixed Regulator&gt; on ofwbus0\nregfix7: &lt;Fixed Regulator&gt; on ofwbus0\nregfix8: &lt;Fixed Regulator&gt; on ofwbus0\nregfix9: &lt;Fixed Regulator&gt; on ofwbus0\nsimple_mfd0: &lt;Simple MFD (Multi-Functions Device)&gt; mem 0xfd58a000-0xfd599fff on ofwbus0\nsimple_mfd1: &lt;Simple MFD (Multi-Functions Device)&gt; mem 0xfd5d0000-0xfd5d3fff on ofwbus0\nsimple_mfd2: &lt;Simple MFD (Multi-Functions Device)&gt; mem 0xfd5d8000-0xfd5dbfff on ofwbus0\nsimple_mfd3: &lt;Simple MFD (Multi-Functions Device)&gt; mem 0xfd5dc000-0xfd5dffff on ofwbus0\nsimple_mfd4: &lt;Simple MFD (Multi-Functions Device)&gt; mem 0xfd8d8000-0xfd8d83ff on ofwbus0\nsimple_mfd5: &lt;Simple MFD (Multi-Functions Device)&gt; mem 0xfd5d4000-0xfd5d7fff on ofwbus0\npsci0: &lt;ARM Power State Co-ordination Interface Driver&gt; on ofwbus0\nsmccc0: &lt;ARM SMCCC v1.5&gt; on psci0\ncpulist0: &lt;Open Firmware CPU Group&gt; on ofwbus0\ncpu0: &lt;Open Firmware CPU&gt; on cpulist0\ngic0: &lt;ARM Generic Interrupt Controller v3.0&gt; mem 0xfe600000-0xfe60ffff,0xfe680000-0xfe77ffff irq 93 on ofwbus0\nits0: &lt;ARM GIC Interrupt Translation Service&gt; mem 0xfe640000-0xfe65ffff on gic0\nits1: &lt;ARM GIC Interrupt Translation Service&gt; mem 0xfe660000-0xfe67ffff on gic0\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfd880000-0xfd880fff irq 24 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfea90000-0xfea90fff irq 98 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfeab0000-0xfeab0fff irq 100 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfeac0000-0xfeac0fff irq 101 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfec80000-0xfec80fff irq 120 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfec90000-0xfec90fff irq 121 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfd880000-0xfd880fff irq 24 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfea90000-0xfea90fff irq 98 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfeab0000-0xfeab0fff irq 100 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfeac0000-0xfeac0fff irq 101 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfec80000-0xfec80fff irq 120 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfec90000-0xfec90fff irq 121 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfd880000-0xfd880fff irq 24 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfea90000-0xfea90fff irq 98 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfeab0000-0xfeab0fff irq 100 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfeac0000-0xfeac0fff irq 101 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfec80000-0xfec80fff irq 120 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfec90000-0xfec90fff irq 121 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfd880000-0xfd880fff irq 24 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfea90000-0xfea90fff irq 98 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfeab0000-0xfeab0fff irq 100 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfeac0000-0xfeac0fff irq 101 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfec80000-0xfec80fff irq 120 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfec90000-0xfec90fff irq 121 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\ngeneric_timer0: &lt;ARMv8 Generic Timer&gt; irq 2,3,4,5,6 on ofwbus0\nTimecounter &quot;ARM MPCore Timecounter&quot; frequency 24000000 Hz quality 1000\nEvent timer &quot;ARM MPCore Eventtimer&quot; frequency 24000000 Hz quality 1000\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfd880000-0xfd880fff irq 24 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfea90000-0xfea90fff irq 98 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfeab0000-0xfeab0fff irq 100 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfeac0000-0xfeac0fff irq 101 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfec80000-0xfec80fff irq 120 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfec90000-0xfec90fff irq 121 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfd880000-0xfd880fff irq 24 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfea90000-0xfea90fff irq 98 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfeab0000-0xfeab0fff irq 100 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfeac0000-0xfeac0fff irq 101 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfec80000-0xfec80fff irq 120 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfec90000-0xfec90fff irq 121 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfd880000-0xfd880fff irq 24 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfea90000-0xfea90fff irq 98 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfeab0000-0xfeab0fff irq 100 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfeac0000-0xfeac0fff irq 101 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfec80000-0xfec80fff irq 120 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfec90000-0xfec90fff irq 121 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfd880000-0xfd880fff irq 24 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfea90000-0xfea90fff irq 98 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfeab0000-0xfeab0fff irq 100 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfeac0000-0xfeac0fff irq 101 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfec80000-0xfec80fff irq 120 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfec90000-0xfec90fff irq 121 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfd880000-0xfd880fff irq 24 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfea90000-0xfea90fff irq 98 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfeab0000-0xfeab0fff irq 100 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfeac0000-0xfeac0fff irq 101 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfec80000-0xfec80fff irq 120 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfec90000-0xfec90fff irq 121 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfd880000-0xfd880fff irq 24 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfea90000-0xfea90fff irq 98 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfeab0000-0xfeab0fff irq 100 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfeac0000-0xfeac0fff irq 101 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfec80000-0xfec80fff irq 120 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfec90000-0xfec90fff irq 121 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfd880000-0xfd880fff irq 24 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfea90000-0xfea90fff irq 98 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfeab0000-0xfeab0fff irq 100 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfeac0000-0xfeac0fff irq 101 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfec80000-0xfec80fff irq 120 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfec90000-0xfec90fff irq 121 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfd880000-0xfd880fff irq 24 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfea90000-0xfea90fff irq 98 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfeab0000-0xfeab0fff irq 100 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfeac0000-0xfeac0fff irq 101 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfec80000-0xfec80fff irq 120 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfec90000-0xfec90fff irq 121 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfd880000-0xfd880fff irq 24 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfea90000-0xfea90fff irq 98 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfeab0000-0xfeab0fff irq 100 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfeac0000-0xfeac0fff irq 101 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfec80000-0xfec80fff irq 120 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfec90000-0xfec90fff irq 121 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfd880000-0xfd880fff irq 24 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfea90000-0xfea90fff irq 98 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfeab0000-0xfeab0fff irq 100 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfeac0000-0xfeac0fff irq 101 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfec80000-0xfec80fff irq 120 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfec90000-0xfec90fff irq 121 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nmmio_sram0: &lt;MMIO SRAM&gt; mem 0xfd600000-0xfd6fffff on ofwbus0\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfd880000-0xfd880fff irq 24 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfea90000-0xfea90fff irq 98 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfeab0000-0xfeab0fff irq 100 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfeac0000-0xfeac0fff irq 101 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfec80000-0xfec80fff irq 120 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfec90000-0xfec90fff irq 121 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nmmio_sram1: &lt;MMIO SRAM&gt; mem 0xff001000-0xff0effff on ofwbus0\nscmi_smc0: &lt;ARM SCMI SMC Transport driver&gt; on ofw_firmware0\nscmi_smc0: smc id 82000010\nscmi_smc0: scmi_shmem_get: Can't get shmem device.\nscmi_smc0: A2P shmem dev not found.\ndevice_attach: scmi_smc0 attach returned 6\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfd880000-0xfd880fff irq 24 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfea90000-0xfea90fff irq 98 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfeab0000-0xfeab0fff irq 100 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfeac0000-0xfeac0fff irq 101 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfec80000-0xfec80fff irq 120 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nrk_i2c0: &lt;RockChip I2C&gt; mem 0xfec90000-0xfec90fff irq 121 on ofwbus0\nrk_i2c0: cannot get i2c clock\ndevice_attach: rk_i2c0 attach returned 19\nsmbios0: &lt;System Management BIOS&gt;\nsmbios0: Entry point: v3 (64-bit), Version: 3.7\ncpufreq_dt0: &lt;Generic cpufreq driver&gt; on cpu0\ncpufreq_dt0: no clock for cpu@0\ndevice_attach: cpufreq_dt0 attach returned 6\ncpufreq_dt1: &lt;Generic cpufreq driver&gt; on cpu1\ncpufreq_dt1: no clock for cpu@100\ndevice_attach: cpufreq_dt1 attach returned 6\ncpufreq_dt2: &lt;Generic cpufreq driver&gt; on cpu2\ncpufreq_dt2: no clock for cpu@200\ndevice_attach: cpufreq_dt2 attach returned 6\ncpufreq_dt3: &lt;Generic cpufreq driver&gt; on cpu3\ncpufreq_dt3: no clock for cpu@300\ndevice_attach: cpufreq_dt3 attach returned 6\ncpufreq_dt4: &lt;Generic cpufreq driver&gt; on cpu4\ncpufreq_dt4: no clock for cpu@400\ndevice_attach: cpufreq_dt4 attach returned 6\ncpufreq_dt5: &lt;Generic cpufreq driver&gt; on cpu5\ncpufreq_dt5: no clock for cpu@500\ndevice_attach: cpufreq_dt5 attach returned 6\ncpufreq_dt6: &lt;Generic cpufreq driver&gt; on cpu6\ncpufreq_dt6: no clock for cpu@600\ndevice_attach: cpufreq_dt6 attach returned 6\ncpufreq_dt7: &lt;Generic cpufreq driver&gt; on cpu7\ncpufreq_dt7: no clock for cpu@700\ndevice_attach: cpufreq_dt7 attach returned 6\nscmi_smc0: &lt;ARM SCMI SMC Transport driver&gt; on ofw_firmware0\nscmi_smc0: smc id 82000010\nscmi_smc0: scmi_shmem_get: Can't get shmem device.\nscmi_smc0: A2P shmem dev not found.\ndevice_attach: scmi_smc0 attach returned 6\npcm0: &lt;simple-audio-card&gt; on ofwbus0\npmu0: &lt;Performance Monitoring Unit&gt; irq 0 on ofwbus0\npmu1: &lt;Performance Monitoring Unit&gt; irq 1 on ofwbus0\nsnps_dwc3_fdt0: Found dr_mode 'peripheral' but only 'host' supported. s=11\nehci0: &lt;Generic EHCI Controller&gt; mem 0xfc880000-0xfc8bffff irq 13 on ofwbus0\nusbus0: EHCI version 1.0\nusbus0 on ehci0\nohci0: &lt;Generic OHCI Controller&gt; mem 0xfc8c0000-0xfc8fffff irq 14 on ofwbus0\n</code></pre>\n<p>And that's it for the first boot!\nIt just hung there.\nUnsurprisingly, without clocks, many devices fail to come online.\nNo surprise really given the <a href=\"https://cgit.freebsd.org/src/tree/sys/conf/files.arm64?id=355f02cddbf017706d3293f09ed6c2b5570936c1&amp;h=main#n687\">current code</a>\nwhich has no entries for this chip.</p>\n<p>I'm hoping with the <a href=\"https://files.seeedstudio.com/wiki/reComputer_RK/Documents/recomputer_rk3588/RECOMPUTER_RK3588_V10_0119.pdf\">schematics</a>\nthat I'll be able to sort through this, given that many similar chips already have a modicum of support on the BSDs\nand there is already quite good Linux support.\nBut it was still pretty exciting to see the familiar FreeBSD copyright over the serial console!</p>\n<p>That's all I have time for today, but I'll be back later with more updates as I have time.\nHit me up on Mastodon if you're interested to collaborate on this.</p>\n",
      "summary": "",
      "date_published": "2026-09-26T00:00:00-00:00",
      "image": "media/usb-ttl.jpeg",
      "authors": [
        {
          "name": "Ian Wagner",
          "url": "https://fosstodon.org/@ianthetechie",
          "avatar": "media/avi.jpeg"
        }
      ],
      "tags": [
        "FreeBSD",
        "ARM"
      ],
      "language": "en"
    }
  ]
}