Difference between revisions of "ROCKPro64 Hardware compatibility"

From PINE64
Jump to navigation Jump to search
(→‎PCIe devices: color the result column)
m (Adding note about 9211-8i HBA.)
 
(25 intermediate revisions by 12 users not shown)
Line 1: Line 1:
= ROCKPro64 accessories - by type =
Hardware accessory compatibility for the [[ROCKPro64]]. Please contribute to the hardware compatibility page, which lists hardware which has been tested with the rockpro64, whether successful or not.


== PCIe devices ==
== Hardware compatibility ==
=== PCIe devices ===
{| class="wikitable sortable"
{| class="wikitable sortable"
!Type || Make/Model || Hardware IDs || Kernel || Result || Notes
!Type || Make/Model || Hardware IDs || Kernel || Result || Notes || Tester
|-
|-
| NIC || Intel I350 Dual Port ||  || Mainline-5.4 || style="background:PaleGreen;" | good || SR-IOV fails
| NIC || Intel I350 Dual Port ||  || Mainline-5.4 || style="background:PaleGreen;" | good || SR-IOV fails
Line 10: Line 11:
|-
|-
| NIC || Intel X520 Dual Port || 8086:10fb || Mainline-5.6 || style="background:PaleGreen;" | good || SR-IOV fails
| NIC || Intel X520 Dual Port || 8086:10fb || Mainline-5.6 || style="background:PaleGreen;" | good || SR-IOV fails
|-
| NIC || Intel X550-T2 Dual Port || 8086:1563 || 5.15.0-trunk-arm64 (Debian) || style="background:PaleGreen;" | good || netperf throughput in FW mode, 20 streams:  between 4136-6613mb/s across use cases.
|-
|-
| NIC || Intel 82571EB Dual Port (HP NC360T) ||  || Mainline-5.6 || style="background:#F99;" | crash || kernel crash on boot
| NIC || Intel 82571EB Dual Port (HP NC360T) ||  || Mainline-5.6 || style="background:#F99;" | crash || kernel crash on boot
|-
| NIC || Intel 82575EB Dual Port (AOC-SG-I2) ||  || Mainline-5.10 || style="background:#F99;" | crash || kernel crash on boot
|-
|-
| NIC || Intel 82575/82576 || 8086:1521 || OpenWrt 21.02-rc1 ; 5.4.111-1 || style="background:PaleGreen;" | good ||opkg: kmod-igb ; [https://wiki.pine64.org/wiki/ROCKPro64_Software_Release#OpenWrt_21.02 OpenWrt 21.02-rc1] 5.4.111-1 ; ~92.8 KB ; Kernel modules for Intel(R) 82575/82576 PCI-Express Gigabit Ethernet adapters.
| NIC || Intel 82575/82576 || 8086:1521 || OpenWrt 21.02-rc1 ; 5.4.111-1 || style="background:PaleGreen;" | good ||opkg: kmod-igb ; [https://wiki.pine64.org/wiki/ROCKPro64_Software_Release#OpenWrt_21.02 OpenWrt 21.02-rc1] 5.4.111-1 ; ~92.8 KB ; Kernel modules for Intel(R) 82575/82576 PCI-Express Gigabit Ethernet adapters.
|-
| NIC || Aquantia 10GBps AQC107 || 1d6a:07b1 || Mainline 5.16 || style="background:PaleGreen;" | good || Works perfectly out of the box.
|-
|-
| GPU || nVidia GTX-645 ||  || Mainline-5.4 || style="background:#F99;" | crash || BAR size too small, triggers PCIe error handling bug
| GPU || nVidia GTX-645 ||  || Mainline-5.4 || style="background:#F99;" | crash || BAR size too small, triggers PCIe error handling bug
Line 28: Line 35:
|-
|-
| SATA Controller || BEYMEI RAID 4-Port, Marvell 88SE9230 chip || 1b4b:9230 || Ayufan-5.6.0-1137 || style="background:PaleGreen;" | good || Tested with 3 disks in RAID 5. I added pci=nomsi to /boot/extlinux/extlinux.conf kernel parameters and an udev rule before the disks were recognized: ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x1b4b", ATTR{device}=="0x9230", RUN+="/bin/bash -c 'echo %k > /sys/bus/pci/drivers/ahci/bind'"
| SATA Controller || BEYMEI RAID 4-Port, Marvell 88SE9230 chip || 1b4b:9230 || Ayufan-5.6.0-1137 || style="background:PaleGreen;" | good || Tested with 3 disks in RAID 5. I added pci=nomsi to /boot/extlinux/extlinux.conf kernel parameters and an udev rule before the disks were recognized: ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x1b4b", ATTR{device}=="0x9230", RUN+="/bin/bash -c 'echo %k > /sys/bus/pci/drivers/ahci/bind'"
|-
| SATA Controller || BEYIMEI SATA Card 6-Port, ASM1166 chip ||  || 5.10.0-16-arm64 (Debian) || style="background:PaleGreen;" | good || Tested with 4 disks. Built 2 separate software RAID-1 arrays without errors. Performance seems good enough for a NAS on gigabit LAN.
|-
| SATA Controller || PCE8SAT-A02 VER006S<br/> 2 Lanes, 8-Port, ASM1166 chip <br/> Odd because chip got only 6 ports?|| 1b21:1166 || 6.1.50-current-rockchip64 <br>Armbian 23.8.1 Bookworm || style="background:#F99;" | unstable || Tested with 3 disks in SW-RAID 5. After 10 hours of burn in test one disk dropped from system *and* RAID. Hotplug does not work. || [[User:JPT|JPT]]
|-
| SATA Controller || BEYIMEI SATA Card 2-Port, ASM1062 chip || 1b21:0612 || 5.10.0-19-arm64 (Debian) || style="background:PaleGreen;" | good || Using with 2 SSDs in a software RAID-1 array (~190MB/sec for reading and writing)
|-
|-
| SATA Controller || QNINE 4-Port, Marvell 88SE9215 chip || || Ayufan-5.6.0-1137 || style="background:LightYellow;" | very slow || Tested with 3 disks in RAID 5. Top speeds were around 50 MiB/s but quickly dropped to below 2 MiB/s due to SATA CRC errors
| SATA Controller || QNINE 4-Port, Marvell 88SE9215 chip || || Ayufan-5.6.0-1137 || style="background:LightYellow;" | very slow || Tested with 3 disks in RAID 5. Top speeds were around 50 MiB/s but quickly dropped to below 2 MiB/s due to SATA CRC errors
|-
|-
| Host Bus Adapter || LSI SAS 9211-4i || 1000:0070 || Ayufan-4.4.197 || style="background:PaleGreen;" | good || tested with four disks attached
| SATA Controller || DELOCK 90498, JMicron Technology Corp. JMB58x AHCI SATA controller || 197b:0585 || 5.18.0-0.bpo.1-arm64 (Debian bullseye + backports) || style="background:LightYellow;" | good, but…
|| Tested with 3 disks, two in RAID1, one standalone.
u-boot-rockchip_2023.07 cannot initialize the controller to boot off it.
 
|| [[User:Lrissman|Lrissman?]]
 
[[User:ChriChri|ChriChri(u-boot)]]
|-
| Host Bus Adapter || LSI SAS 9211-4i <br/> SAS2008 chip, 4-Port SAS/SATA, PCI 2.0, 8 lanes || 1000:0070 || Ayufan-4.4.197 || style="background:PaleGreen;" | good || tested with four disks attached
|-
| Host Bus Adapter || Fujitsu SAS MEGARAID LSI 2008B2 <br/> SAS2008 chip, 8-Port SAS/SATA, PCI 2.0, 8 lanes || TODO ||  6.1.50-current-rockchip64 <br>Armbian 23.8.1 Bookworm  || style="background:PaleGreen;" | TODO || needs special MicroSAS cables. Must be flashed to HBA mode? <br/> ordered, not yet received || [[User:JPT|JPT]]
|-
| Host Bus Adapter || LSI SAS 9211-8i <br />8-Port SAS/SATA, PCI 2.0 x8 ||  || Kernel 6.1, 6.10 from Debian || style="background:#f99;" | boot fails || causes asynchronous SError during kernel PCIe enumeration || [[User:flying-kestrel|flying-kestrel]]
|-
| USB Controller || ASMedia Technology Inc. ASM1142 USB 3.1 Host Controller || 1b21:1242 || Mainline-5.15.0-rc5 || style="background:PaleGreen;" | good ||
|-
| DTMB Quad Tuner || TBS Technologies || TSS6514 || Mainline-5.10.21 || style="background:PaleGreen;" | good || TV -> LAN streaming server, 7W idle, 8-10W with one FHD channel streaming
|-
| DVB-T2/C Quad Tuner || TBS Technologies || TBS6205 || 5.10.0-16-arm64 (Debian) || style="background:PaleGreen;" | good || Working well with Tvheadend
|-
| DVB-S2 Dual Tuner || Digital Devices || Octopus CI S2 Pro || 6.1.42-rockchip64 (armbian) || style="background:PaleGreen;" | good || All features are working flawlessly with the latest drivers from Digital Devices
|-
|-
| USB Controller || ASMedia Technology Inc. ASM1142 USB 3.1 Host Controller || 1b21:1242 || Mainline-5.15.0-rc5 || style="background:PaleGreen;" | good ||
| Audio interface || MARIAN GmbH || Clara E || Armbian 23.8.3, Kernel 6.1 || ? || Dante interface. [https://www.marian.de/updates/linux-support-starting-now/?lang=en Manufacturer driver page] claims it is tested on ROCKPro64/Armbian
|}
|}


== NVMe SSD drives ==
=== NVMe SSD drives ===
 
{| class="wikitable sortable"
{| class="wikitable sortable"
!Type || Make/Model || Size || Hardware IDs || Kernel || Result || Notes || Power options<br/>Active only || Save<br/>power<br/>setting?
!Type || Make/Model || Size || Hardware IDs || Kernel || Result || Notes || Power options<br/>Active only || Save<br/>power<br/>setting?
|-
|-
| NVMe || Samsung 970 Evo || 500 GB || || Mainline 5.6 || good || - || defaults || defaults
| NVMe || Samsung 970 Evo || 500 GB || || Mainline 5.6 || style="background:PaleGreen;" | good || - || defaults || defaults
|-
|-
| NVMe || Samsung 960 Evo || 500 GB || 144d:a804 || Mainline 5.13-rc4 || doesn't work || Likely due to 64/32 BAR mismatch issue on Linux 5.11+ || defaults || defaults
| NVMe || Samsung 960 Evo || 500 GB || 144d:a804 || Mainline 5.13-rc4 || style="background:#F99;" | doesn't work || Likely due to 64/32 BAR mismatch issue on Linux 5.11+ || defaults || defaults
|}
|}


== USB hardware ==
=== USB hardware ===
 
{| class="wikitable sortable"
{| class="wikitable sortable"
!Type || Make/Model || Hardware IDs || Kernel || Result || Notes
 
{| class="wikitable sortable"
!Type || Make/Model || Hardware IDs || Kernel || Result || Notes || Tester
|-
|-
||Zigbee Bridge || Conbee II  || 1cf1:0030 || 6.1.50-current-rockchip64 <br/> Armbian 23.8.1 Bookworm || style="background:PaleGreen;" | good || seems to work fine || [[User:JPT|JPT]] ([[User talk:JPT|talk]])
|}
|}


== USB C alternate mode DP ==
=== USB C alternate mode DP ===
 
Note that only USB C alternate mode Display Port will pass video. Any HDMI, DVI or VGA port must be converted internally by the device from Display Port - or the device won't work for video.
Note that only USB C alternate mode Display Port will pass video. Any HDMI, DVI or VGA port must be converted internally by the device from Display Port - or the device won't work for video.
{| class="wikitable sortable"
{| class="wikitable sortable"
!Type || Make/Model || Hardware IDs || Kernel || Result || Notes
!Type || Make/Model || Hardware IDs || Kernel || Result || Notes
Line 58: Line 98:
|}
|}


== Other hardware ==
=== eMMC / SD drives ===
 
{| class="wikitable sortable"
!Type || Make/Model || Hardware IDs || Kernel || Read Speed || Write Speed ||Result || Notes
|-
|}
 
=== Other hardware ===
 
{| class="wikitable sortable"
{| class="wikitable sortable"
!Type || Make/Model || Hardware IDs || Kernel || Result || Notes  
!Type || Make/Model || Hardware IDs || Kernel || Result || Notes  
|-
|-
|}
|}
== Limitations ==
=== Older firmware overwrites actively used memory ===
Some people get system freeze when:
* use SATA disk with ROCKPro64 PCIe card. (maybe on newer PCIe card ASM1062 vs ASM1061)
* or do read or write 4GB to the flash. (not using PCIe)
If you connect the serial console you will see a Linux kernel oops: (a)synchronous external abort.
Both issues are in fact the same software BUG. There is no hardware problem. Currently, most OS do use uboot with a rockpro blob FW which use memory that Linux kernel is not aware of.
People are currently fixing this BUG, but it may take some time. In the mean time, you can fix it manually.
The latest u-boot can boot the rockpro64 without any blobs from rockchip.
Install first arm-none-eabi-gcc and aarch64-linux-gnu-gcc compiler, then run the following commands:
Prerequisite packages (Debian/Ubuntu): <code>device-tree-compiler python gcc-arm-non-eabi flex bison gcc-aarch64-linux-gnu gcc make</code>
git clone https://github.com/ARM-software/arm-trusted-firmware.git atf
make -C atf CROSS_COMPILE=aarch64-linux-gnu- PLAT=rk3399 bl31
git clone https://gitlab.denx.de/u-boot/u-boot.git u-boot
cd u-boot/
git checkout v2020.01-rc5
make rockpro64-rk3399_defconfig
BL31=../atf/build/rk3399/release/bl31/bl31.elf make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu-
Which gives you idbloader.img and u-boot.itb. Copy them to the rockpro64, and run the following: (Or put your SD card into your PC)
sudo dd if=idbloader.img of=/dev/mmcblk0 seek=64
sudo dd if=u-boot.itb of=/dev/mmcblk0 seek=16384
sync
=== PCIe Controller Hardware Error Handling Bug ===
There is an issue with the rk3399 pcie controller that is currently unmitigated:
* [https://lore.kernel.org/linux-pci/CAMdYzYoTwjKz4EN8PtD5pZfu3+SX+68JL+dfvmCrSnLL=K6Few@mail.gmail.com/ LKML Original Thread]
* [https://lkml.org/lkml/2020/4/6/320 LKML Additional Information]
The rk3399 pcie controller throws either a synchronous abort or a SError when a pcie device sends an unknown message.
The error type is determined by which cpu cluster handles the message.
=== Virtualization ===
The PCIe controller on the rk3399 is not behind an IOMMU. This means it is not possible to safely pass through PCIe devices to a virtual machine.
[[Category:ROCKPro64]]
[[Category:ROCKPro64]]

Latest revision as of 23:54, 21 September 2024

Hardware accessory compatibility for the ROCKPro64. Please contribute to the hardware compatibility page, which lists hardware which has been tested with the rockpro64, whether successful or not.

Hardware compatibility

PCIe devices

Type Make/Model Hardware IDs Kernel Result Notes Tester
NIC Intel I350 Dual Port Mainline-5.4 good SR-IOV fails
NIC Intel I350 Quad Port ?
NIC Intel X520 Dual Port 8086:10fb Mainline-5.6 good SR-IOV fails
NIC Intel X550-T2 Dual Port 8086:1563 5.15.0-trunk-arm64 (Debian) good netperf throughput in FW mode, 20 streams: between 4136-6613mb/s across use cases.
NIC Intel 82571EB Dual Port (HP NC360T) Mainline-5.6 crash kernel crash on boot
NIC Intel 82575EB Dual Port (AOC-SG-I2) Mainline-5.10 crash kernel crash on boot
NIC Intel 82575/82576 8086:1521 OpenWrt 21.02-rc1 ; 5.4.111-1 good opkg: kmod-igb ; OpenWrt 21.02-rc1 5.4.111-1 ; ~92.8 KB ; Kernel modules for Intel(R) 82575/82576 PCI-Express Gigabit Ethernet adapters.
NIC Aquantia 10GBps AQC107 1d6a:07b1 Mainline 5.16 good Works perfectly out of the box.
GPU nVidia GTX-645 Mainline-5.4 crash BAR size too small, triggers PCIe error handling bug
PCIe Switch PCIE-EUX1-04 Ver.002 Mainline-5.4 good
SATA Controller ASM1062 4-Port Mainline-5.6 good tested only with one disk attached
SATA Controller ASM1062 (rev 02) 4-Port 1d87:0100 Ayufan-4.4.190 good tested with four disks, 3 in raid 5
SATA Controller IOCrest (Same as Syba?) SI-PEX40063 4-port, Marvell 88SE9235 chip 1b4b:9235 Debian unstable 5.7, 5.8 good Tested with two disks. SATA errors occurred with a WD Red drive in a cheap enclosure; resolved by connecting the same drive directly to the card.
SATA Controller Ziyituod SATA Card ASM 1062+1093 6-Port 1b21:0625 Mainline-4.4 (armbian) good tested with 6 disks
SATA Controller BEYMEI RAID 4-Port, Marvell 88SE9230 chip 1b4b:9230 Ayufan-5.6.0-1137 good Tested with 3 disks in RAID 5. I added pci=nomsi to /boot/extlinux/extlinux.conf kernel parameters and an udev rule before the disks were recognized: ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x1b4b", ATTR{device}=="0x9230", RUN+="/bin/bash -c 'echo %k > /sys/bus/pci/drivers/ahci/bind'"
SATA Controller BEYIMEI SATA Card 6-Port, ASM1166 chip 5.10.0-16-arm64 (Debian) good Tested with 4 disks. Built 2 separate software RAID-1 arrays without errors. Performance seems good enough for a NAS on gigabit LAN.
SATA Controller PCE8SAT-A02 VER006S
2 Lanes, 8-Port, ASM1166 chip
Odd because chip got only 6 ports?
1b21:1166 6.1.50-current-rockchip64
Armbian 23.8.1 Bookworm
unstable Tested with 3 disks in SW-RAID 5. After 10 hours of burn in test one disk dropped from system *and* RAID. Hotplug does not work. JPT
SATA Controller BEYIMEI SATA Card 2-Port, ASM1062 chip 1b21:0612 5.10.0-19-arm64 (Debian) good Using with 2 SSDs in a software RAID-1 array (~190MB/sec for reading and writing)
SATA Controller QNINE 4-Port, Marvell 88SE9215 chip Ayufan-5.6.0-1137 very slow Tested with 3 disks in RAID 5. Top speeds were around 50 MiB/s but quickly dropped to below 2 MiB/s due to SATA CRC errors
SATA Controller DELOCK 90498, JMicron Technology Corp. JMB58x AHCI SATA controller 197b:0585 5.18.0-0.bpo.1-arm64 (Debian bullseye + backports) good, but… Tested with 3 disks, two in RAID1, one standalone.

u-boot-rockchip_2023.07 cannot initialize the controller to boot off it.

Lrissman?

ChriChri(u-boot)

Host Bus Adapter LSI SAS 9211-4i
SAS2008 chip, 4-Port SAS/SATA, PCI 2.0, 8 lanes
1000:0070 Ayufan-4.4.197 good tested with four disks attached
Host Bus Adapter Fujitsu SAS MEGARAID LSI 2008B2
SAS2008 chip, 8-Port SAS/SATA, PCI 2.0, 8 lanes
TODO 6.1.50-current-rockchip64
Armbian 23.8.1 Bookworm
TODO needs special MicroSAS cables. Must be flashed to HBA mode?
ordered, not yet received
JPT
Host Bus Adapter LSI SAS 9211-8i
8-Port SAS/SATA, PCI 2.0 x8
Kernel 6.1, 6.10 from Debian boot fails causes asynchronous SError during kernel PCIe enumeration flying-kestrel
USB Controller ASMedia Technology Inc. ASM1142 USB 3.1 Host Controller 1b21:1242 Mainline-5.15.0-rc5 good
DTMB Quad Tuner TBS Technologies TSS6514 Mainline-5.10.21 good TV -> LAN streaming server, 7W idle, 8-10W with one FHD channel streaming
DVB-T2/C Quad Tuner TBS Technologies TBS6205 5.10.0-16-arm64 (Debian) good Working well with Tvheadend
DVB-S2 Dual Tuner Digital Devices Octopus CI S2 Pro 6.1.42-rockchip64 (armbian) good All features are working flawlessly with the latest drivers from Digital Devices
Audio interface MARIAN GmbH Clara E Armbian 23.8.3, Kernel 6.1 ? Dante interface. Manufacturer driver page claims it is tested on ROCKPro64/Armbian

NVMe SSD drives

Type Make/Model Size Hardware IDs Kernel Result Notes Power options
Active only
Save
power
setting?
NVMe Samsung 970 Evo 500 GB Mainline 5.6 good - defaults defaults
NVMe Samsung 960 Evo 500 GB 144d:a804 Mainline 5.13-rc4 doesn't work Likely due to 64/32 BAR mismatch issue on Linux 5.11+ defaults defaults

USB hardware

Type Make/Model Hardware IDs Kernel Result Notes Tester
Zigbee Bridge Conbee II 1cf1:0030 6.1.50-current-rockchip64
Armbian 23.8.1 Bookworm
good seems to work fine JPT (talk)

USB C alternate mode DP

Note that only USB C alternate mode Display Port will pass video. Any HDMI, DVI or VGA port must be converted internally by the device from Display Port - or the device won't work for video.

Type Make/Model Hardware IDs Kernel Result Notes

eMMC / SD drives

Type Make/Model Hardware IDs Kernel Read Speed Write Speed Result Notes

Other hardware

Type Make/Model Hardware IDs Kernel Result Notes

Limitations

Older firmware overwrites actively used memory

Some people get system freeze when:

  • use SATA disk with ROCKPro64 PCIe card. (maybe on newer PCIe card ASM1062 vs ASM1061)
  • or do read or write 4GB to the flash. (not using PCIe)

If you connect the serial console you will see a Linux kernel oops: (a)synchronous external abort.

Both issues are in fact the same software BUG. There is no hardware problem. Currently, most OS do use uboot with a rockpro blob FW which use memory that Linux kernel is not aware of.

People are currently fixing this BUG, but it may take some time. In the mean time, you can fix it manually.

The latest u-boot can boot the rockpro64 without any blobs from rockchip.

Install first arm-none-eabi-gcc and aarch64-linux-gnu-gcc compiler, then run the following commands:

Prerequisite packages (Debian/Ubuntu): device-tree-compiler python gcc-arm-non-eabi flex bison gcc-aarch64-linux-gnu gcc make

git clone https://github.com/ARM-software/arm-trusted-firmware.git atf
make -C atf CROSS_COMPILE=aarch64-linux-gnu- PLAT=rk3399 bl31
git clone https://gitlab.denx.de/u-boot/u-boot.git u-boot
cd u-boot/
git checkout v2020.01-rc5
make rockpro64-rk3399_defconfig
BL31=../atf/build/rk3399/release/bl31/bl31.elf make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu-

Which gives you idbloader.img and u-boot.itb. Copy them to the rockpro64, and run the following: (Or put your SD card into your PC)

sudo dd if=idbloader.img of=/dev/mmcblk0 seek=64
sudo dd if=u-boot.itb of=/dev/mmcblk0 seek=16384
sync

PCIe Controller Hardware Error Handling Bug

There is an issue with the rk3399 pcie controller that is currently unmitigated:

The rk3399 pcie controller throws either a synchronous abort or a SError when a pcie device sends an unknown message.

The error type is determined by which cpu cluster handles the message.

Virtualization

The PCIe controller on the rk3399 is not behind an IOMMU. This means it is not possible to safely pass through PCIe devices to a virtual machine.