-
Notifications
You must be signed in to change notification settings - Fork 0
orangepi_5plus
| Hardware | Implementation |
|---|---|
| Chipset | RK3588 |
| CPU | 8-core 64-bit processor |
| * 4 Cortex-A76 @ 2.4 GHz | |
| * 4 Cortex-A55 @ 1.8 GHz) with independent NEON co-processor | |
| GPU | Integrated ARM Mali-G610 with Built-in 3D GPU |
| compatible with | |
| * OpenGL ES1.1/2.0/3.2 | |
| * OpenCL 2.2 | |
| * Vulkan 1.2 | |
| RAM (LPDDR4) | 32 GB |
| M.2 M-KEY | NVMe 2280 PCIe 3.0 x4 Lanes |
| USB | 4(2(3.0) 2(2.0)), one type-C |
| HDMI | 2(2.1 8k@60FPS) |
| * 1x Type-C with DP TX 1.4A up to 8K@30FPS | |
| * 1x HDMI in with up to 4K@60FPS | |
| * 1x MIPI DSI TX 4 Lanes up to 4K @60Hz | |
| Ethernet | 2xPCIe 2.5G LAN RTL8125BG) |
| Wifi+BT | Module AP6611 (0xaabf) |
| Wifi | 6E SDIO3.0 |
| Power | Type-C 5V@5A |
| The type-C power interface does not support PD negotiation | |
| UART | 3.3V USB to TTL (1500000 baud rate) |
- GND (USB) to GND (board, first pin under the Type-C power supply port)
- TX (USB) to RXD (board, second pin, after GND)
- RX (USB) to TXD (board, third pin, after RXD)
screen -fnL /dev/ttyUSB0 1500000
- Do not use "flow control" (-fn)
- Log output (-L)
- Make sure the storage device is unmounted
lslbk -f - Ensure the beginning of the device is empty
dd if=/dev/zero of=/dev/sd? bs=1M count=20
The first partition starts at 16MB (32768 sectors with 512 byte sectors)
U-Boot expects a GPT partition map and a boot directory structure with files on the SD card.
Partition Map for MMC device 0 -- Partition Type: EFI Part Start LBA End LBA Name 1 0x00000040 0x00001f7f "loader1" 2 0x00004000 0x00005fff "loader2" 3 0x00006000 0x00007fff "trust" 4 0x00008000 0x0003ffff "boot" 5 0x00040000 0x00ed7fde "rootfs"
sfdisk /dev/sd? <<EOF
label: gpt
first-lba: 64
start=64 size=7104 name="loader1" type=L attrs="RequiredPartition"
start=16384 size=8192 name="loader2" type=L attrs="RequiredPartition"
start=24576 size=8192 name="trust" type=L attrs="RequiredPartition"
start=32768 name="root" type=L attrs="RequiredPartition LegacyBIOSBootable"
EOF
sync
Verify sectors created as intended:
sfdisk -uS -d /dev/sd?
Format for root file system with label:
mkfs.ext4 -L <label>_<size>_<year>[_<number>] /dev/sd?4
Make a note of the PARTUUID:
blkid
Either
- Compile U-boot
- or copy from a working Orange Pi OS:
idbloader.imgu-boot.itbrk3588-orangepi-5-plus.dtb
dd if=idbloader.img of=/dev/sd? seek=64dd if=u-boot.itb of=/dev/sd? seek=16384sync
Either
Compile Linux or- copy from a working Orange Pi OS:
- Image
- initramfs-linux.img
- modules
The applied method was to download the official Orange Pi 5 plus Arch Linux OS:
- Copy it to an SD-card
cat Opios-arch-aarch64-gnome-opi5plus-24.04-linux5.10.160.img > /dev/mmcblk0 - Boot using the SD-card installation and deploy ArchLinuxArm to the local eMMC
-
arch-chrootto the ArchLinuxARM on eMMC and update system
This did work but Ethernet was not found:
-
Image<-- Although, I did not try this; I was using the ArchLinuxARM image idbloader.imgu-boot.itbrk3588-orangepi-5-plus.dtb
Note that the username and password provided in the official manual does not work:
- User account and password is: oem
- Mount the root partition
# mount /dev/sd?4 /mnt - Extract Arch Linux ARM distribution to mount point as root user and not as
sudoin order to preserve the extended attributes and ACL:
-
tar -xvpf ArchLinuxARM-aarch64-latest.tar -C /mntor -
bsdtar -xpf ArchLinuxARM-aarch64-latest.tar -C /mntand sync
- Configure boot directory:
chmod +r /boot/initramfs-linux.img
- Copy the
rk3588-orangepi-5-plus.dtbto/mnt/boot/dtbs/rockchip/from- the
compiled kernel orthe U-boot - Permit it to execute
chmod +x rk3588-orangepi-5-plus.dtb
- the
- Copy or create the
extlinux/extlinux.conf- [NOT TESTED] Add any required overlay, for example
fdtoverlays /dtbs/rockchip/overlay/rk3588-opi5max-cam0.dtbo
- [NOT TESTED] Add any required overlay, for example
- If pre-configuring the system:
arch-chroot /mntand- Basic system configuration
- Initialize key ring
- System update
- Install necessary packages, for example to read manuals, compile, copy files, network.
- Exit
arch-chroot
- If intending to install on the eMMC.
- Copy
idbloader.img,u-boot.itb,rk3588-orangepi-5-plus.dtb - Copy
ArchLinuxARM-aarch64-latest.taror ensure thatrsyncis installed - Boot with SD-Card then mount local eMMC:
-
Partition the eMMC, for example
/dev/mmcblk0instead of/dev/sd? - Extract Arch Linux Arm to mounted root (step 2 above) or
- Copy OS from SD to local eMMC
rsync -avxHAXhn --exclude='/mnt' / /mnt - Remember to update PARTUUID for extlinux!
-
Partition the eMMC, for example
- Copy
unmount /mnt- The system should boot, with working Wifi and Bluetooth.
- User account and password: alarm
- Root password: root
- Full system update to the latest Linux kernel (6.15 when writing this).
| package | description |
|---|---|
| wireless-regdb | Central Regulatory Domain Database. |
A minimal configuration to expand depending on additional functional requirements.
| file | package | configure |
|---|---|---|
/etc/adjtime |
(base) | Adjust the hardware clock from the system clock with the assumption that the hardware clock is in UTC: # hwclock --systohc --utc. |
/etc/hostname |
(base) | Edit file in a text editor; add <hostname>. Alternatively, use SystemD # hostnamectl set-hostname <hostname>. |
/etc/hosts |
(base) | Edit file in a text editor: 127.0.0.1 <hostname>.localdomain <hostname>. |
/etc/localtime |
(base) | A syslink from the Time Zone Database database to localtime: $ ln -sf /usr/share/zoneinfo/<region>/<city> /etc/localtime. |
/etc/locale.conf |
(base) | Add locale, for example, LANG=en_US.UTF-8. |
/etc/locale.gen |
(base) | Uncomment locale in locale.gen and generate locale.conf and resources in /usr/lib/locale with locale-gen. Remember, any additional language later assigned requires to be uncommented in the locale.gen and locale-gen re-generated. |
| /etc/vconsole.conf | (base) | Add keyboard loadkeys keymap as KEYMAP=<keymap>. |
pacman-key --init
pacman-key --populate archlinuxarm
Back up:
-
cp /boot/dtbs/rockchip/rk3588-orangepi-5-[max, plus].dtb /boot/dtbs/rockchip/rk3588-orangepi-5-[max, plus].dtb.bkup-<YY-MM> -
cp /boot/Image /boot/Image.bkup-<YY-MM> -
pacman -Syy -
pacman -Sy archlinux-keyring -
pacman -Syu
Ensure:
-
Not necessarychmod +x /boot/dtbs/rockchip/rk3588-orangepi-5-[max, plus].dtb -
chmod +r /boot/initramfs-linux.imgNot necessary?
Reboot
error: failed to commit transaction (conflicting files)
linux-aarch64: /boot/dtbs/rockchip/rk3588-orangepi-5-[max, plus].dtb exists in filesystem
Errors occurred, no packages were upgraded.
| Required firmware | Distro | Pacakge | Path |
|---|---|---|---|
mali_csffw.bin.zst |
Arch Linux | linux-firmware-other |
/usr/lib/firmware/arm/mali/arch10.8/ |
The driver seems to be opencl-mesa
- The group of
ls -l /dev/dri"renderD128" should be "render" - and add user to the "render" group
usermod -aG render user
The program clinfo prints platform information but does not confirm it;
- "number of devices" is 0 (should be 1)
The driver vulkan-panfrost seems to work
-
vulkaninfoinvulkan-toolsprints information that confirms it -
eglinfoinmesa-utilsprints information that confirms it
The jack output worked with:
- pipewire
- pipewire-jack
- pipewire-pulse
Start sevices:
systemctl status --user wireplumbersystemctl status --user pipewire
If sound is not working:
systemctl --user restart pipewire pipewire-pulse wireplumber