|
|
(31 intermediate revisions by 10 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"|PINE64 ROCK64
| |
− | |-
| |
− | |colspan="2"|[[File:ROCK64.jpg|frameless|256px|A PINE A64-LTS with eMMC.]]
| |
− | |-
| |
− | !Manufacturer
| |
− | |PINE64 (Pine Microsystems Inc.)
| |
− | |-
| |
− | !Architecture
| |
− | |AArch64
| |
− | |-
| |
− | !Bootloader
| |
− | |Downstream (ayufan) U-Boot<ref>https://github.com/ayufan-rock64/linux-u-boot</ref>
| |
− | |-
| |
− | !Boot options
| |
− | |SD, eMMC, SPI NOR Flash
| |
− | |}
| |
− | </div>
| |
| | | |
− | The ROCK64 is a single board computer built around the Rockchip RK3328 SoC.
| + | ⇒ '''[https://wiki.nixos.org/wiki/NixOS_on_ARM/PINE64_ROCK64 NixOS on ARM/PINE64 ROCK64]''' |
| | | |
− | There are three models of the board, with 1, 2 or 4 GB of RAM. It can boot from an microSD card or an eMMC. It also has a 128 Mbit SPI flash that can be used to store the bootloader.
| + | ''— samueldr, Lead of NixOS on ARM.'' |
− | | |
− | == Status ==
| |
− | | |
− | It is possible to run NixOS on this board using a downstream U-Boot and kernel. This can be done with manual partitioning and <code>nixos-install</code> or possibly by building an SD image with the correct kernel and bootloader, but the latter has not been tested.
| |
− | | |
− | The upstream aarch64 SD image may boot if U-Boot is placed at the correct location as described below, but this has not been tested. There may be issues with ethernet and USB with the mainline kernel.
| |
− | | |
− | U-Boot for this board is packaged in nixpkgs, and Hydra builds can be found here: https://hydra.nixos.org/job/nixpkgs/trunk/ubootRock64.aarch64-linux
| |
− | This bootloader is not entirely open, incorporating a blob for the tertiary program loader (TPL).
| |
− | | |
− | == Board-specific installation notes ==
| |
− | | |
− | U-Boot needs to be copied to sector 64 on the microSD card or eMMC with <code>dd</code>. Download/build U-Boot for the board, and copy <code>idbloader.img</code> to the correct location with (replace <code>/dev/mmcblkX</code> with the correct path to the SD card device):
| |
− | | |
− | <syntaxhighlight lang="bash">sudo dd if=idbloader.img of=/dev/mmcblkX bs=512 seek=64</syntaxhighlight>
| |
− | | |
− | On many kernels, the ethernet driver cannot handle hardware check-summing of large packets, therefore this feature must be disabled for the ethernet to be stable. This can be done with the following NixOS configuration:
| |
− | <syntaxhighlight lang="nix">
| |
− | networking.localCommands = ''
| |
− | ${pkgs.ethtool}/bin/ethtool -K eth0 rx off tx off
| |
− | ''; | |
− | </syntaxhighlight>
| |
− | | |
− | == Serial console==
| |
− | | |
− | The ROCK64 uses a GPIO pinout compatible with the Raspberry Pi 2 and newer. This means that the following pins can be used to connect a serial adapter:
| |
− | | |
− | {| class="table"
| |
− | |-
| |
− | !colspan="2" style="background: #fafafa"| Pi-2 Bus
| |
− | |-
| |
− | ! Pin
| |
− | ! Function
| |
− | |-
| |
− | | 6
| |
− | | GND
| |
− | |-
| |
− | | 8
| |
− | | UART0_TX
| |
− | |-
| |
− | | 10
| |
− | | UART0_RX
| |
− | |}
| |
− | | |
− | The serial console runs at 1500000 baud in the bootloader.
| |
− | | |
− | == Compatibility notes ==
| |
− | | |
− | {{Expansion | Need to verify hardware support on different kernels, this was written from memory}}
| |
− | | |
− | {| class="table arm-compatibility"
| |
− | !colspan="2" style="background: #fafafa"| Mainline kernel
| |
− | |-
| |
− | ! Ethernet
| |
− | |
| |
− | * Works on 4.20, if hardware check-summing is disabled (see above)
| |
− | |-
| |
− | ! USB
| |
− | |
| |
− | * As of 4.20, USB 3.0 does not work
| |
− | |-
| |
− | !colspan="2" style="background: #fafafa"| ayufan-rock64/linux-mainline-kernel
| |
− | |-
| |
− | ! Ethernet
| |
− | |
| |
− | * Works if hardware check-summing is disabled (see above)
| |
− | |-
| |
− | ! USB
| |
− | |
| |
− | * USB hot plugging does not work
| |
− | |}
| |
− | | |
− | === Downstream kernel ===
| |
− | | |
− | To use all hardware functionality, it is currently necessary to use a downstream kernel:
| |
− | | |
− | * [https://github.com/ayufan-rock64/linux-kernel ayufan-rock64/linux-kernel] 4.4 based on Rockchip BSP
| |
− | * [https://github.com/ayufan-rock64/linux-mainline-kernel ayufan-rock64/linux-mainline-kernel] mainline based, with potentially fewer hardware features supported. This kernel is not based on a kernel stable branch, so it may have more bugs (unrelated to the hardware).
| |
− | | |
− | {{note|Keep in mind that using non-upstream forks of the kernel always incurs some security risk.}}
| |
− | | |
− | == Resources ==
| |
− | | |
− | * [https://www.pine64.org/?page_id=7147 Official product page]
| |