|
|
(5 intermediate revisions by 5 users not shown) |
Line 1: |
Line 1: |
− | {{ARM/breadcrumb}}
| + | This page has been moved to the official NixOS Wiki: |
− | <div class="infobox">
| |
− | {|class="table"
| |
− | !colspan="2" class="title"|[https://radxa.com/rock5b/ Radxa ROCK 5B]
| |
− | |-
| |
− | |colspan="2"|[[File:Radxa_ROCK_5B.jpg|frameless|256px|Radxa R SBC]]
| |
− | |-
| |
− | !Manufacturer
| |
− | |[https://radxa.com/ Radxa]
| |
− | |-
| |
− | !Architecture
| |
− | |AArch64
| |
− | |-
| |
− | !Bootloader
| |
− | |Vendor BSP
| |
− | |-
| |
− | !Boot order
| |
− | |SPI NOR Flash, eMMC, SD
| |
− | |-
| |
− | !Maintainer
| |
− | |[https://github.com/jakubgs jakubgs]
| |
− | |}
| |
− | </div>
| |
| | | |
− | The [https://wiki.radxa.com/Rock5/5B Radxa ROCK 5B] is a Single-Board Computer with a Rockchip RK3588 SoC.
| + | ⇒ '''[https://wiki.nixos.org/wiki/NixOS_on_ARM/Radxa_ROCK5_Model_B NixOS on ARM/Radxa ROCK5 Model B]''' |
| | | |
− | * '''CPU''': ARM Cortex-A76 and Cortex-A55
| + | ''— samueldr, Lead of NixOS on ARM.'' |
− | * '''GPU''': Mali-G610 MP4
| |
− | * '''RAM''': 4GB/8GB/16GB LPDDR4X at 2133MHz
| |
− | * '''MMC''': eMMC Connector for up to 512GB
| |
− | * '''NET''': 2.5 Gigabit Ethernet
| |
− | * '''USB''': 2x USB 3.1 Type-A, 2x USB 2.0 Type-A
| |
− | * '''PCIe''': 1x M.2 Key M connector with PCIe 2.1 x1
| |
− | | |
− | == Status ==
| |
− | | |
− | Support of this system is YMMV (your mileage may vary), and depends on vendor-provided BSP (Board Support Package) based components.
| |
− | | |
− | Three types of bootloaders are available:
| |
− | | |
− | * [https://dl.radxa.com/rock5/sw/images/loader/rock-5b/ Vendor U-Boot] - Works well for eMMC and SD card boot, not for NVMe.
| |
− | * [https://github.com/samueldr/Tow-Boot/tree/wip/rock5-vendor Community U-Boot] - Supports eMMC and SD card, NVMe sometimes.
| |
− | * [https://github.com/edk2-porting/edk2-rk3588 EDK2 UEFI Firmware] - Supports all storage boot options, including NVMe.
| |
− | | |
− | The official hardware documentation can be found [https://wiki.radxa.com/Rock5/hardware/5b on the Radxa wiki].
| |
− | | |
− | == Bootloader Firmware ==
| |
− | | |
− | === Vendor U-Boot Firmware ===
| |
− | | |
− | Booting the system with the vendor-provided platform firmware may not work due to a [https://github.com/samueldr/u-boot/commit/a0af72272b8db4b5d83df2f14ad950d3e30b3e04 known issue in older U-Boot].
| |
− | | |
− | If using the vendor-provided platform firmware is desired, [https://gitlab.com/K900/nix/-/blob/1ae5db476aee96fab9c445d7b690a8f5cf7fbe75/hacks/orangepi5/kernel/default.nix#L20 renaming the kernel derivation to a shorter name] should allow boot to succeed.
| |
− | | |
− | {{note|The Vendor Platform Firmware operates at the 1500000 baud rate. Your system may need to be configured to use 1500000 baud rate to make the serial console usable.}}
| |
− | | |
− | === Community UEFI Firmware ===
| |
− | | |
− | The best available bootloader is [EDK2 UEFI firmware for Rockchip RK3588 platforms](https://github.com/edk2-porting/edk2-rk3588). The [`0.9.1`](https://github.com/edk2-porting/edk2-rk3588/releases/tag/v0.9.1) release is confirmed working.
| |
− | | |
− | In order to flash this bootloader we'll need to download two files:
| |
− | | |
− | * [https://dl.radxa.com/rock5/sw/images/loader/rock-5b/release/rk3588_spl_loader_v1.08.111.bin <tt>rk3588_spl_loader_v1.08.111.bin</tt>] - SPI bootloader image.
| |
− | * [https://github.com/edk2-porting/edk2-rk3588/releases/download/v0.9.1/rock-5b_UEFI_Release_v0.9.1.img <tt>rock-5b_UEFI_Release_v0.9.1.img</tt>] - UEFI bootloader image.
| |
− | | |
− | Then use the <tt>rkdeveloptool</tt> tool in version <tt>1.32</tt> or higher as described in [https://wiki.radxa.com/Rock5/install/spi SPI flashing documentation]:
| |
− | <syntaxhighlight lang="bash">
| |
− | > nix-shell -p rkdeveloptool
| |
− | | |
− | [nix-shell:~/rk3588]$ rkdeveloptool --version
| |
− | rkdeveloptool ver 1.32
| |
− | | |
− | [nix-shell:~/rk3588]$ sudo rkdeveloptool db rk3588_spl_loader_v1.08.111.bin
| |
− | Downloading bootloader succeeded.
| |
− | | |
− | [nix-shell:~/rk3588]$ sudo rkdeveloptool wl 0 rock-5b_UEFI_Release_v0.9.1.img
| |
− | Write LBA from file (100%)
| |
− | | |
− | [nix-shell:~/rk3588]$ sudo rkdeveloptool rb
| |
− | </syntaxhighlight>
| |
− | | |
− | Now the device has a graphical bootloader available when pressing <tt>Escape</tt> at boot time:
| |
− | | |
− | [[File:Radxa_ROCK_5B_UEFI_Firmware.png|frameless|600px|NanoPi-R6C UEFI Firmware screen]]
| |
− | | |
− | {{note|The standard NixOS SD card image supports only <tt>extlinux</tt> so <strong>ISO NixOS image</strong> needs to be used.}}
| |
− | | |
− | === Community U-Boot Firmware ===
| |
− | | |
− | {{note|This Platform Firmware operates at the 115200 baud rate. The 115200 baud rate is more standard, so it may or may not need to be adapted to be usable.}}
| |
− | | |
− | A WIP tree to build U-Boot using the infrastructure for Tow-Boot is available. (The end-result is <em>not</em> a proper Tow-Boot build.)
| |
− | | |
− | * https://github.com/samueldr/Tow-Boot/tree/wip/rock5-vendor
| |
− | | |
− | This uses [https://github.com/u-boot/u-boot/compare/d892cca08d5da230a6690f504ba7a06044b840c8...samueldr:u-boot:wip/rock5/not-tb-2023-03-30 a fork with some fixes], so that an installation on the SPI Flash will work, and allow OS booting from NVMe, eMMC or SD. NVMe support may be YMMV depending on the specific hardware.
| |
− | | |
− | The [https://github.com/samueldr/Tow-Boot/blob/wip/rock5-vendor/boards/radxa-rock5b/README.md board-specific README] has further notes.
| |
− | | |
− | Using from shared storage (SD, eMMC) or from SPI should work, and both are as supported.
| |
− | | |
− | To build:
| |
− | | |
− | <syntaxhighlight lang="bash">
| |
− | nix-build -A radxa-rock5b
| |
− | </syntaxhighlight>
| |
− | | |
− | The SD or eMMC shared storage image can be flashed as usual:
| |
− | | |
− | <syntaxhighlight lang="bash">
| |
− | dd if=shared.disk-image.img of=/dev/XXX bs=1M oflag=direct,sync status=progress
| |
− | </syntaxhighlight>
| |
− | | |
− | The SPI image <strong>cannot</strong> be installed using the usual installer. For now you should [https://wiki.radxa.com/Rock5/install/spi follow the vendor instructions] to write the <code>binaries/Tow-Boot.spi.bin</code> file to SPI. In other words using <code>rkdeveloptool</code> for the installation, or any other way to write to SPI flash.
| |
− | | |
− | == System configuration ==
| |
− | | |
− | A [https://github.com/jakubgs/nixos-config/blob/16cc3ccf5448259e6d88a24bdfa70ee2f455e200/hosts/arael/configuration.nix#L21-L33 working bootloader configuration] looks like this:
| |
− | | |
− | <syntaxHighlight lang=nix>
| |
− | boot.loader = {
| |
− | efi.canTouchEfiVariables = true;
| |
− | systemd-boot.enable = true;
| |
− | grub.enable = false;
| |
− | };
| |
− | </syntaxHighlight>
| |
− | | |
− | The current NixOS 23.05 release with 6.1 Linux kernel detects NVMe but not the eMMC.
| |
− | | |
− | === @aciceri's flake ===
| |
− | | |
− | Nix flake for building OS image: https://github.com/aciceri/rock5b-nixos
| |
− | | |
− | Flash result to a new second legacy bootable ext4 partition on the installation media
| |
− | | |
− | Boot into system:
| |
− | <syntaxhighlight lang="bash">
| |
− | sudo nixos-rebuild switch --flake github:jonahbron/config/aciceri-rebooted-into-this#rock5b
| |
− | </syntaxhighlight>
| |
− | | |
− | [[Category:Hardware]]
| |