Difference between revisions of "NanoPi R6S/zh"

From FriendlyELEC WiKi
Jump to: navigation, search
(updated by API)
(updated by API)
 
(15 intermediate revisions by the same user not shown)
Line 111: Line 111:
 
* MicroSD卡/TF卡: Class10或以上的 8GB SDHC卡
 
* MicroSD卡/TF卡: Class10或以上的 8GB SDHC卡
 
* 一个USB-C接口外接电源 (要求10W及以上规格),支持PD协议的电源适配器
 
* 一个USB-C接口外接电源 (要求10W及以上规格),支持PD协议的电源适配器
* 如果需要开发与编译,则需要一台可以联网的电脑,推荐安装Ubuntu 18.04 64位系统,并使用下面的脚本初始化开发环境: <br />
+
* 如果需要开发与编译,则需要一台可以联网的电脑,推荐安装Ubuntu 20.04 64位系统,并使用下面的脚本初始化开发环境, 也可以使用Docker容器: <br />
 
**[https://github.com/friendlyarm/build-env-on-ubuntu-bionic How to setup the Compiling Environment on Ubuntu bionic]<br />
 
**[https://github.com/friendlyarm/build-env-on-ubuntu-bionic How to setup the Compiling Environment on Ubuntu bionic]<br />
 +
**[https://github.com/friendlyarm/docker-cross-compiler-novnc docker-cross-compiler-novnc]<br />
 
===经测试可选用的TF卡===
 
===经测试可选用的TF卡===
 
请参考: [[Template:TFCardsWeTested/zh|TF Cards We Tested]]
 
请参考: [[Template:TFCardsWeTested/zh|TF Cards We Tested]]
Line 119: Line 120:
 
{{1500000SerialPortDebugSetting/zh}}
 
{{1500000SerialPortDebugSetting/zh}}
 
===安装系统===
 
===安装系统===
{{BurnLinuxToSD-RK3588/zh|NanoPi-R6S}}
+
{{Downloads-RK3588/zh|NanoPi-R6S}}
{{BurnLinuxToEMMC-RK3588/zh|NanoPi-R6S}}
+
{{BurnLinuxToSD-Rockchip/zh|NanoPi-R6S}}
{{RockchipBootPriority/zh|NanoPi-R6S}}
+
{{BurnLinuxToEMMC-Rockchip/zh|NanoPi-R6S}}
 +
{{BurnLinuxToExtDrive-Rockchip/zh|NanoPi-R6S}}
 
{{FriendlyWrt21/zh|NanoPi-R6S}}
 
{{FriendlyWrt21/zh|NanoPi-R6S}}
 
===Compile u-boot,kernel or friendlywrt===
 
===Compile u-boot,kernel or friendlywrt===
Line 132: Line 134:
 
{{UbuntuJammyDesktop-Common/zh|NanoPi-R6S}}
 
{{UbuntuJammyDesktop-Common/zh|NanoPi-R6S}}
 
{{UbuntuJammyDesktop-WithHDMI/zh|NanoPi-R6S}}
 
{{UbuntuJammyDesktop-WithHDMI/zh|NanoPi-R6S}}
==Android TV系统简介==
+
{{Android12/zh|NanoPi-R6S}}
'''Android TV''' 是专门为电视而创建的一个Android版本,具有如下特点:<br />
+
* 支持红外摇控器; <br />
+
* 支持有线网络; <br />
+
* 支持USB WiFi; <br />
+
* 支持视频硬解码等; <br />
+
[[File:AndroidTV12.png|600px]]<br />
+
===Android系统支持的WIFI型号===
+
====M.2 WiFi Module====
+
* RTW8822CE
+
====Usb Dongle====
+
* RTL8821CU  (Vid: 0BDA, Pid: C811)  (测试样品:TP-Link TL-WDN5200H)
+
* RTL8812AU  (Vid: 0BDA, Pid: 8812)
+
* MediaTek MT7662 (Vid: 0E8D, Pid: 7612)  (测试样品:COMFAST CF-WU782AC V2)
+
===ADB的使用===
+
***请注意: 开启ADB后, 该USB3端口将工作在Device模式, 如果需要连接U盘等设备,你需要关闭ADB并重启开发板***<br />
+
一般情况下adb是默认关闭的,请执行以下步骤开启:
+
* 用USB A-to-A数据线 (也叫USB公对公数据线), 将开发板与电脑进行连接, 连接方法参照下图, 需要连接靠近外侧的USB端口:<br />
+
[[File:Nanopir6s-usba-to-usba2.jpg|frameless|400px]]<br />
+
* 进入Android系统, 依次进入 Settings -> About tablet -> 连续点击7下屏幕最下面的Build number
+
* 再次进入Android系统的Settings -> System -> Advance -> Developer options, 勾选 USB debugging
+
* 基于你的操作系统安装 adb 驱动和命令
+
* 正常情况下, Android状态栏会提示 USB debugging connected,表示ADB已开启, 在电脑上输入如下命令检测连接:
+
<syntaxhighlight lang="bash">
+
$ adb devices
+
List of devices attached
+
27f7a63caa3faf16 device
+
</syntaxhighlight>
+
* 进入adb shell:
+
<syntaxhighlight lang="bash">
+
$ adb shell
+
nanopi3:/ $
+
</syntaxhighlight>
+
 
==Debian11 桌面系统的使用==
 
==Debian11 桌面系统的使用==
 
===Debian11桌面系统简介===
 
===Debian11桌面系统简介===
{{DebianBullseyeDesktop-Intro/zh|NanoPi-R6S}}
+
{{DebianBullseyeDesktop-XFCE-Intro/zh|NanoPi-R6S}}
{{DebianBullseyeDesktop-Common/zh|NanoPi-R6S}}
+
{{DebianBullseyeDesktop-XFCE-Common/zh|NanoPi-R6S}}
{{DebianBullseyeDesktop-WithHDMI/zh|NanoPi-R6S}}
+
{{DebianBullseyeDesktop-XFCE-WithHDMI/zh|NanoPi-R6S}}
 
==Debian10 桌面系统的使用==
 
==Debian10 桌面系统的使用==
 
* Refer to:
 
* Refer to:
 
** [[Debian Buster Desktop/zh|Debian Buster]]
 
** [[Debian Buster Desktop/zh|Debian Buster]]
 
{{OfficialUbuntuCore/zh|NanoPi-R6S}}
 
{{OfficialUbuntuCore/zh|NanoPi-R6S}}
 +
{{FriendlyCoreRemoveQt/zh}}
 
==如何编译系统==
 
==如何编译系统==
===编译 Openwrt/Friendlywrt===
+
{{Rockchip-DevEnv/zh|NanoPi-R6S}}
====下载源代码====
+
{{RK3588-BuildFromSource/zh|NanoPi-R6S}}
FriendlyWrt有两个版本, 请根据需要进行选择.
+
{{RK3588-HWAccess/zh|NanoPi-R6S}}
=====版本FriendlyWrt 22.03=====
+
{{RockchipMiscCustome/zh|RK3588}}
<syntaxhighlight lang="bash">
+
{{RockchipCommonLinuxTips/zh|rk3588}}
mkdir friendlywrt22-rk3588
+
{{RockchipUnbrick/zh|NanoPi-R6S}}
cd friendlywrt22-rk3588
+
git clone https://github.com/friendlyarm/repo --depth 1 tools
+
tools/repo init -u https://github.com/friendlyarm/friendlywrt_manifests -b master-v22.03 \
+
        -m rk3588.xml --repo-url=https://github.com/friendlyarm/repo  --no-clone-bundle
+
tools/repo sync -c  --no-clone-bundle
+
</syntaxhighlight>
+
=====版本FriendlyWrt 21.02=====
+
<syntaxhighlight lang="bash">
+
mkdir friendlywrt21-rk3588
+
cd friendlywrt21-rk3588
+
git clone https://github.com/friendlyarm/repo --depth 1 tools
+
tools/repo init -u https://github.com/friendlyarm/friendlywrt_manifests -b master-v21.02 \
+
        -m rk3588.xml --repo-url=https://github.com/friendlyarm/repo  --no-clone-bundle
+
tools/repo sync -c  --no-clone-bundle
+
</syntaxhighlight>
+
====首次编译====
+
下面的命令是编译不带docker的版本, 如需要编译带docker的版本, 请将'''rk3588.mk'''替换为'''rk3588-docker.mk''':
+
<syntaxhighlight lang="bash">
+
./build.sh rk3588.mk
+
</syntaxhighlight>
+
会编译所有组件(包含u-boot, kernel 和 friendlywrt)并生成sd卡镜像文件,再执行以下命令,可生成用于安装系统到emmc运行的镜像文件(eflahser固件):
+
<syntaxhighlight lang="bash">
+
./build.sh emmc-img
+
</syntaxhighlight>
+
对项目进行过修改后, 需要重新打包sd卡镜像, 可执行如下命令:
+
<syntaxhighlight lang="bash">
+
./build.sh sd-img
+
</syntaxhighlight>
+
====二次编译====
+
<syntaxhighlight lang="bash">
+
cd friendlywrt
+
make menuconfig #改动FriendlyWrt的配置
+
rm -rf ./tmp
+
make -j${nproc}
+
cd ../
+
./build.sh sd-img
+
./build.sh emmc-img
+
</syntaxhighlight>
+
===单独编译u-boot===
+
<syntaxhighlight lang="bash">
+
./build.sh uboot
+
</syntaxhighlight>
+
===单独编译kernel===
+
<syntaxhighlight lang="bash">
+
./build.sh kernel
+
</syntaxhighlight>
+
===单独编译friendlywrt===
+
<syntaxhighlight lang="bash">
+
./build.sh friendlywrt
+
</syntaxhighlight>
+
或者进入friendlywrt目录, 按标准openwrt的命令操作, 上面的命令出现错误时, 可尝试使用以下命令单线程编译:
+
<syntaxhighlight lang="bash">
+
cd friendlywrt
+
make -j1 V=s
+
</syntaxhighlight>
+
{{RockchipMiscCustome/zh}}
+
===更多文档===
+
* 请参考以下链接:
+
** [https://github.com/friendlyarm/sd-fuse_rk3588 sd-fuse_rk3588]
+
** [[How to Build FriendlyWrt/zh]]
+
 
==性能测试方法==
 
==性能测试方法==
 
===测试2.5G网口速率===
 
===测试2.5G网口速率===
Line 261: Line 172:
 
</syntaxhighlight>
 
</syntaxhighlight>
 
==Link to Rockchip Resources==
 
==Link to Rockchip Resources==
{{Link to Rockchip Resources|NanoPi-R6S}}
+
{{LinkToRockchipResources|NanoPi-R6S}}
 
==手册原理图等开发资料==
 
==手册原理图等开发资料==
 
*Schematic:  [https://wiki.friendlyelec.com/wiki/images/2/2f/NanoPi_R6S_2208_SCH.PDF NanoPi_R6S_2208_SCH.PDF]
 
*Schematic:  [https://wiki.friendlyelec.com/wiki/images/2/2f/NanoPi_R6S_2208_SCH.PDF NanoPi_R6S_2208_SCH.PDF]

Latest revision as of 11:04, 29 October 2024

English

Contents

1 介绍

Overview
Front
Back
Case
Case
Case
Case

NanoPi R6S(简称”R6S”)是友善电子团队设计出品的一款开源高性能一体化边缘计算平台,它带有双2.5G和1个千兆网口。它采用瑞芯微RK3588S作为主控处理器, 配备8GB LPDDR4x内存,和32GB eMMC闪存,支持运行FriendlyWrt, Android, Debian和Ubuntu等多种系统, 支持GPU和VPU加速。

R6S接口丰富,布局紧凑,主板尺寸只有90x62mm,可选配安装一体化CNC氧化铝外壳。它带有1个HDMI输出接口,可解码播放最高8K60p H.265/VP9, 以及8K30p H264等格式视频。

R6S带有2个USB接口,并支持USB C口当流行的PD快充电源供电,外接移动硬盘时无需担心供电不足。

R6S非常适合企业客户定制开发带有多网口的迷你机器视觉系统,并适合嵌入式爱好者发掘、探索打造自己独具一格的玩法。

2 NanoPi R6S资源特性

  • SoC: Rockchip RK3588S
    • CPU: Quad-core ARM Cortex-A76(up to 2.4GHz) and quad-core Cortex-A55 CPU (up to 1.8GHz)
    • GPU: Mali-G610 MP4, compatible with OpenGLES 1.1, 2.0, and 3.2, OpenCL up to 2.2 and Vulkan1.2
    • VPU: 8K@60fps H.265 and VP9 decoder, 8K@30fps H.264 decoder, 4K@60fps AV1 decoder, 8K@30fps H.264 and H.265 encoder
    • NPU: 6TOPs, supports INT4/INT8/INT16/FP16
  • RAM: 64-bit 8GB LPDDR4X at 2133MHz
  • Flash: 32GB eMMC, at HS400 mode
  • Ethernet: one Native Gigabit Ethernet, and two PCIe 2.5G Ethernet
  • USB: one USB 3.0 Type-A and one USB 2.0 Type-A
  • HDMI:
    • compatible with HDMI2.1, HDMI2.0, and HDMI1.4 operation
    • support up to 7680x4320@60Hz
    • Support RGB/YUV(up to 10bit) format
  • microSD: support up to SDR104 mode
  • GPIO:
    • 12-pin 0.5mm FPC connector
    • with up to 1x SPI, up to 3x UARTs, up to 1x I2Cs, up to 2x SPDIF, up to 8x GPIOs
  • Debug: one Debug UART, 3 Pin 2.54mm header, 3.3V level, 1500000bps
  • LEDs: 4 x GPIO Controlled LED (SYS, WAN, LAN1, LAN2)
  • others:
    • 2 Pin 1.27/1.25mm RTC battery input connector for low power RTC IC HYM8563TS
    • one IR receiver and the carrier frequency is 38Khz
    • MASK button for eMMC update
    • one user button
    • one 5V Fan connector
  • Power supply: USB-C, support PD, 5V/9V/12V/20V input
  • PCB: 8 Layer, 62x90x1.6mm
  • Ambient Operating Temperature: 0℃ to 70℃

3 接口布局和尺寸

3.1 接口布局

NanoPi R6S Layout
  • 12-pin GPIO
Pin# GPIO SPI UART I2C SPDIF POWER Description
1 VCC3V3_SYS_S3 3.3V power output
2 VCC3V3_SYS_S3 3.3V power output
3 GPIO1_B3 SPI0_CLK_M2 UART4_TX_M2 3.3V level
4 GND
5 GPIO1_B1 SPI0_MISO_M2 3.3V level
6 GPIO1_B4 SPI0_CS0_M2 3.3V level
7 GPIO1_B2 SPI0_MOSI_M2 UART4_RX_M2 3.3V level
8 GND
9 GPIO1_B7 UART1_RX_M1 I2C5_SDA_M3 SPDIF1_TX_M0 3.3V level
10 GPIO1_B6 UART1_TX_M1 I2C5_SCL_M3 SPDIF0_TX_M0 3.3V level
11 GPIO3_C4 UART5_TX_M1 3.3V level
12 GPIO3_C5 UART5_RX_M1 3.3V level
  • Debug UART Pin Spec
3.3V level signals, 1500000bps
Pin# Assignment Description
1 GND 0V
2 UART2_TX_M0_DEBUG output
3 UART2_RX_M0_DEBUG intput
  • USB Port
Each USB Type-A port has 1.4A overcurrent protection.
  • RTC
RTC backup current is 0.25μA TYP (VDD =3.0V, TA =25℃).
Connector P/N: Molex 53398-0271
  • IR receiver
Connected to PWM3_IR_M0
38Khz carrier frequency
compatible with NEC protocol, User code is 3B4C
Support power on via IR controller
Support FriendlyELEC RC100 IR controller

4 快速入门

4.1 准备工作

要开启你的NanoPi R6S新玩具,请先准备好以下硬件

  • NanoPi R6S主板
  • MicroSD卡/TF卡: Class10或以上的 8GB SDHC卡
  • 一个USB-C接口外接电源 (要求10W及以上规格),支持PD协议的电源适配器
  • 如果需要开发与编译,则需要一台可以联网的电脑,推荐安装Ubuntu 20.04 64位系统,并使用下面的脚本初始化开发环境, 也可以使用Docker容器:

4.2 经测试可选用的TF卡

请参考: TF Cards We Tested

4.3 经我们测试过的PD电源适配器

请参考: PD Power Adapters We Tested

4.4 调试串口参数配置

使用以下串口参数:

波特率 1500000
数据位 8
奇偶校验 None
停止位 1
流控制 None

4.5 安装系统

4.5.1 下载固件

4.5.1.1 官方固件

访问此处的下载地址下载固件文件 (位于网盘的"01_系统固件"目录):
下表列出了所有官方固件,文件名中的XYZ代表文件的不同用途,其含义如下:

  • sd: 安装系统到TF卡时使用
  • eflasher: 需要通过TF卡烧写系统到eMMC时使用
  • usb: USB线刷时使用
图标 文件名 版本 描述 内核版本
Debian-icon.svg rk3588-XYZ-debian-bookworm-core-6.1-arm64-YYYYMMDD.img.gz bookworm Debian12 精简版固件,没有桌面, 仅命令行 6.1.y
Debian-icon.svg rk3588-XYZ-debian-bullseye-minimal-6.1-arm64-YYYYMMDD.img.gz bullseye Debian11 系统固件,Xfce桌面, 不预装推荐软件包, 支持GPU/VPU硬件加速 6.1.y
Debian-icon.svg rk3588-XYZ-debian-bullseye-desktop-6.1-arm64-YYYYMMDD.img.gz bullseye Debian11 完整版固件,Xfce桌面, 预装推荐软件包, 支持GPU/VPU硬件加速 6.1.y
Ubuntu-icon.svg rk3588-XYZ-ubuntu-focal-desktop-6.1-arm64-YYYYMMDD.img.gz focal Ubuntu 20.04固件, LXQT桌面,支持GPU/VPU硬件加速 6.1.y
Ubuntu-icon.svg rk3588-XYZ-ubuntu-noble-desktop-6.1-arm64-YYYYMMDD.img.gz noble Ubuntu 24.04固件, 使用GNOME与Wayland,预装网页浏览器等推荐软件 6.1.y
Ubuntu-icon.svg rk3588-XYZ-ubuntu-noble-minimal-6.1-arm64-YYYYMMDD.img.gz noble 精简版Ubuntu 24.04固件, 使用GNOME与Wayland, 不预装推荐软件 6.1.y
Ubuntu-icon.svg rk3588-XYZ-ubuntu-jammy-x11-desktop-arm64-YYYYMMDD.img.gz jammy Ubuntu 22.04固件, 基于X11与Xubuntu,使用panfrost GPU驱动,集成rkmpp/mpv实现视频硬件加速 6.1.y
Ubuntu-icon.svg rk3588-XYZ-friendlycore-focal-6.1-arm64-YYYYMMDD.img.gz focal FriendlyCore系统固件,预装了Qt5, 仅命令行,基于Ubuntu core 20.04构建 6.1.y
Android-icon.svg rk3588-XYZ-androidtv-YYYYMMDD.img.zip 12 Android 12 TV 5.10.y
Android-icon.svg rk3588-XYZ-android12-YYYYMMDD.img.zip 12 Android 12 Tablet 5.10.y
Openmediavault250.png rk3588-XYZ-openmediavault-6.1-YYYYMMDD.img.gz Shaitan OpenMediaVault NAS系统,基于Debian12构建 6.1.y
Proxmox.svg rk3588-XYZ-proxmox-6.1-YYYYMMDD.img.gz 8.2.7 Proxmox VE 系统 (预览版),基于Debian12构建 6.1.y
Openwrt-icon.svg rk3588-XYZ-friendlywrt-21.02-YYYYMMDD.img.gz 21.02 FriendlyWrt, 基于OpenWrt 21.02 6.1.y
Openwrt-icon.svg rk3588-XYZ-friendlywrt-21.02-docker-YYYYMMDD.img.gz 21.02 预装了Docker的FriendlyWrt, 基于OpenWrt 21.02 6.1.y
Openwrt-icon.svg rk3588-XYZ-friendlywrt-23.05-YYYYMMDD.img.gz 23.05 FriendlyWrt, 基于OpenWrt 23.05 6.1.y
Openwrt-icon.svg rk3588-XYZ-friendlywrt-23.05-docker-YYYYMMDD.img.gz 23.05 预装了Docker的FriendlyWrt, 基于OpenWrt 23.05 6.1.y
Other Image
Openwrt-icon.svg Github Actions - FriendlyWrt云编译版本 21.02,23.05 FriendlyWrt 6.1.y
Linux-tux.svg rk3588-eflasher-multiple-os-YYYYMMDD-25g.img.gz - 内含了多个操作系统的eMMC烧写文件,方便测试各个OS,此固件不会开机自动烧写,需要手动选择要烧写的OS
4.5.1.2 工具软件(可选)

访问 此处的下载链接 下载所需要的工具软件 (位于网盘的"05_工具软件"目录).

文件名 描述
win32diskimager.rar 用于将映象文件写入SD卡
SD Card Formatter 用于清空SD卡中的引导数据
RKDevTool_Release_v2.84.zip 瑞芯微的刷机工具,USB线刷系统时需要使用此工具

4.5.2 通过TF卡运行系统

操作步骤如下:

  • 准备一张8G或以上容量的TF卡;
  • 访问此处的下载地址下载需要的固件(位于"01_系统固件/01_SD卡固件"目录);
  • 下载烧写工具 win32diskimager (位于"05_工具软件"目录),或者选用你喜爱的工具;
  • 解压 .gz 格式的压缩文件得到 .img 格式的镜像文件;
  • 在Windows下以管理员身份运行 win32diskimager,在界面上选择你的SD卡盘符,选择解压后的固件文件,点击 Write 按钮烧写到SD卡;
  • 将SD卡从电脑端弹出,插入NanoPi-R6S的microSD卡槽;
  • 连接NanoPi-R6S的电源,系统会从TF卡启动, 某些型号可能需要按下Power键才会启动;

4.5.3 烧写系统到eMMC

4.5.3.1 方法1: 用TF启动卡进行自动烧写

此方法是通过SD卡启动一个小型的Linux系统, 借助名为EFlasher的工具来烧写固件到eMMC。

如果有连接HDMI显示器, 可通过图形界面观察烧写进度, 也可以通过板载LED灯来掌握烧写进度:

进度

SYS灯 (红灯)

LAN灯(绿灯)

WAN灯(绿灯)

上电开机

长亮

系统启动

慢闪

正在烧写

快闪

烧写完成

慢闪

长亮

长亮

默认情况下烧写是上电自动开始的,所以要注意备份eMMC里的数据,如果不想自动,可以使用文件名含"multiple-os"字样的固件,在界面上手动选择要烧写的系统。

4.5.3.1.1 烧写官方固件到eMMC

详细操作步骤如下:

  • 准备一张8G或以上容量的SDHC卡;
  • 访问此处的下载地址下载需要的固件(位于"01_系统固件/02_SD卡刷机固件(SD-to-eMMC)"目录)和烧写工具win32diskimager(位于"05_工具软件"目录);
  • 解压 .gz 格式的压缩文件得到 .img 格式的镜像文件;
  • 在Windows下以管理员身份运行 win32diskimager,在界面上选择你的SD卡盘符,选择解压后的固件文件,点击 Write 按钮烧写到SD卡;
  • 将SD卡从电脑端弹出,插入NanoPi-R6S的microSD卡槽;
  • 连接NanoPi-R6S的电源,系统会从SD卡启动,并自动启动 EFlasher 烧写工具将系统安装到 eMMC;
  • 烧写完成后,从NanoPi-R6S弹出SD卡,NanoPi-R6S会自动重启并从eMMC启动你刚刚烧写的系统;
4.5.3.1.2 烧写第三方固件(镜像文件)到eMMC

1) 从网盘上下载文件名带 eflasher 字样的任意固件(位于"01_系统固件/02_SD卡刷机固件(SD-to-eMMC)"目录), 解压后烧进TF卡;
2) 重新拨插一次TF卡, PC上会出现一个名为FriendlyARM的盘符(Linux下是FriendlyARM目录), 将 .raw 或者 .gz 结尾的固件复制进去 (注:如果你的文件为 .img 格式那么请改名为 .raw 格式);
3) 编辑TF卡上的 eflasher.conf 配置文件, 修改 autoStart= 后面的值指定为你的固件文件名, 例如:

autoStart=openwrt-rockchip-armv8_nanopi-ext4-sysupgrade.img.gz

除了第三方固件,亦支持文件名带 "-sd-" 字样的官方固件文件, 例如: rk3NNN-sd-friendlywrt-21.02-YYYYMMDD.img.gz
4) 安全弹出TF卡, 将TF卡放在NanoPi-R6S上上电启动, 会自动烧写你的固件, 通过板载 LED 灯来了解安装进度;

4.5.3.2 方法2: 在网页上烧写

使用烧写了FriendlyWrt固件的TF卡启动NanoPi-R6S, 登录FriendlyWrt页面, 在网页菜单上点击 "系统" -> "eMMC刷机助手" 进入eMMC刷机助手界面, 点击界面上的 "选择文件" 按钮, 选择你要刷写的文件 (官方固件选用文件名有"-sd-"的文件), 亦可选择第三方固件, 文件支持 .gz 格式的压缩文件, 或者以 .img 作为扩展名的raw格式。

选择文件后, 点击 “上传并烧写” 按钮, 开始上传并烧写, 如下图所示:
Friendlywrt-emmctools2-cn.png
烧写完成后,请弹出SD卡,设备会自动重启, 并从eMMC引导新系统,可留意指示灯的状态, 在系统状态灯闪烁,同时网卡状态灯亮起时,表示系统启动完成, 如果eMMC安装的系统是 FriendlyWrt, 则可以通过点击“进入首页”进入FriendlyWrt管理页面。
官方固件需要选用文件名带 "-sd-" 字样的镜像文件, 例如: rk3NNN-sd-friendlywrt-21.02-YYYYMMDD.img.gz, 压缩文件只支持gz格式, 如果文件太大, 可以先压缩成gz格式再上传。

4.5.3.3 方法3: 通过USB烧写
4.5.3.3.1 USB烧写步骤1: 安装USB驱动和工具

网盘的tools目录下载瑞芯微的USB驱动: DriverAssitant_v5.12.zip, 解压后安装;
在相同目录下, 下载瑞芯微开发工具: RKDevTool_Release_v2.84.zip, 解压后备用;

4.5.3.3.2 USB烧写步骤2: 将NanoPi-R6S与电脑连接, 并进入刷机模式

1) 按住Mask按键不放, 插上电源, 保持按住Mask键, 状态灯亮起3秒后即可松开;
2) 用USB A-to-A数据线 (也叫USB公对公数据线), 将NanoPi-R6S与电脑进行连接, 连接方法参照下图, 需要连接靠近外侧的USB端口;
Nanopir6s-usba-to-usba2.jpg

4.5.3.3.3 USB烧写步骤3: 开始烧写

固件格式一般有两种格式, 一种是单个的image文件, 通常第三方固件会使用这种打包方式, 另一种是多个分区镜像, FriendlyELEC的固件采用这种方式, 下面分别对这两种格式的固件进行说明:

  • 选项1: 烧写打包成单个image文件的固件

在电脑上双击 RKDevTool_Release_v2.84 目录下的 RKDevTool.exe 启动瑞芯微开发工具, 与电脑连接正常的情况下, 瑞芯微开发工具界面上会显示 "发现一个Maskrom设备";
在瑞芯微开发工具界面上, 点击 “升级固件”, 再点击 “固件” 按钮, 选择你要烧写的image文件, 点击 “升级” 然后等待烧写完成即可, 完成后设备会自动重启, 并从eMMC启动你刚刚安装的系统;

  • 选项2: 烧写由多个分区镜像组成的固件

根据需要到网盘上下载对应的压缩包(位于"01_系统固件/03_USB线刷固件(USB-to-eMMC)"目录), 在电脑上解压: 解压后, 可以看到固件目录下已内置了瑞芯微开发工具和预设好的配置文件, 双击 RKDevTool.exe 启动瑞芯微开发工具, 界面上会显示 "发现一个Maskrom设备", 点击界面上的“执行”按钮, 稍等片刻即可完成烧写, 完成后设备会自动重启, 并从eMMC启动你安装的系统;

4.5.4 安装系统到M.2或USB硬盘

可以通过使用TF卡启动eFlasher系统,将引导和系统分别安装到不同存储设备,但是由于CPU不支持直接从M.2和USB设备引导,所以虽然系统可以安装到M.2和USB设备,但是引导仍然需要安装到eMMC或者TF卡。
操作步骤如下:

  • 准备一张32G或以上容量的TF卡;
  • 访问此处的下载地址下载文件名为XXXX-eflasher-multiple-os-YYYYMMDD-30g.img.gz的固件(位于"01_系统固件/02_SD卡刷机固件(SD-to-eMMC)"目录);
  • 将固件写入TF卡,在NanoPi-R6S上连接好存储设备,插入TF卡上电开机,接下来要在界面上操作,如果没有显示设备,可以使用VNC代替,请参考使用VNC操作eFlasher;
  • 在eFlasher界面上,首先选择要安装的OS,然后选择引导安装的目的地 (通常选eMMC),以及选择系统安装的目的地(可以选eMMC,M.2硬盘,USB存储设备等),如下图所示:

Eflasher-select-boot-and-system-device.png

  • 没有eMMC时可使用TF卡作为引导,方法是将另一个TF卡通过USB读卡器插入USB端口,然后选择USB设备作为引导安装目的地,从而实现从TF卡引导,但系统存放在M.2或USB硬盘的目的;
  • 烧写完成后,从NanoPi-R6S弹出SD卡,引导在eMMC的情况下,NanoPi-R6S会自动重启至你刚刚烧写的系统,如果引导安装在TF卡,则需要拨掉电源,插入TF引导卡再上电开机;
  • 更详细的安装指南请参考此处;

5 FriendlyWrt的使用

5.1 FriendlyWrt简介

FriendlyWrt是友善电子基于OpenWrt定制的系统,完全开源,用于企业物联网二次开发,个人定制NAS等。

5.2 首次开机的初始化

首次上电开机,系统需要做以下一些初始化工作:
1)扩展根文件系统
2)初始化设置(会执行/root/setup.sh)
所以第一次开机需要等待片刻(约2~3分钟),再对FriendlyWrt进行设置,可以在openwrt网页上进入ttyd终端,当提示符显示为 root@FriendlyWrt 表示系统已经初始化完成。

root@FriendlyWrt

5.3 帐户与密码

默认的密码是password(某些版本是空密码),请设置或更改一个较安全的密码用于web登录与ssh登录,建议在将NanoPi-R6S连接到互联网之前完成此设置。

5.4 登录FriendlyWrt

将电脑连接到 NanoPi-R6S 的LAN口,如果电脑没有网口,可将无线AP的LAN口与NanoPi-R6S的LAN口相连接,电脑再通过WiFi连接到无线AP,在电脑浏览器上输入以下网址即可进入FriendlyWrt管理页面:

以上是NanoPi-R6S的LAN口地址,WAN口会从你的主路由器动态获取IP地址。

5.5 建议的安全性设置

以下设置事项非常建议在将 NanoPi-R6S 接入互联网之前完成,因为在空密码或弱密码的状态下将NanoPi-R6S接入互联网,极易受到网络攻击。

  • 设置一个安全的密码

进入 系统->管理权 界面设置密码。

  • 禁止从wan访问ssh,更换端口

进入 系统->管理权->SSH访问,将接口限制为 lan,将端口设置为其他非常用端口,例如 23333。

  • 检查防火墙设置

根据实际情况调整设置

5.6 更改LAN口的IP地址

1) 菜单栏导航到:"网络" -> "接口", 点击“LAN”右边的“编辑”按钮;
2) 在“常规设置”页面上找到“IPv4 地址”, 输入新的IP地址 (例如192.168.11.1), 然后点击“保存”, 再点击“保存并应用”;
3) 在弹出的“连接更改“询问界面上, 选择"Apply and revert on connectivity loss";
4) 稍等片刻, 在电脑的浏览器上输入新的地址登录 FriendlyWrt;

5.7 安全的关机操作

进入"服务"->"终端",输入poweroff命令敲回车,待led灯熄灭,再拔开电源。

5.8 恢复出厂设置

进入"系统"->"备份/升级",点击“执行重置“按钮,在弹出的询问界面上点击“确定”,设备会重启并擦除data分区, 所有的设置和数据都会被清除, 并恢复至出厂时的状态。
恢复出厂设置也可以通过命令行来操作, 进入“服务”-》“终端”界面, 输入如下命令:

firstboot && reboot

5.9 安装软件包

5.9.1 设置第三方软件源

进入菜单”系统“-》”软件包“, 在界面上点击”okpg配置“按钮, 在新弹出的界面上, 更改/etc/opkg/distfeeds.conf的文件内容即可,
比如要切换至国内腾讯源, 可以替换成如下内容, 然后点击 “保存” 按钮:

src/gz openwrt_base https://mirrors.tuna.tsinghua.edu.cn/openwrt/releases/23.05.4/packages/aarch64_cortex-a53/base
src/gz openwrt_luci https://mirrors.tuna.tsinghua.edu.cn/openwrt/releases/23.05.4/packages/aarch64_cortex-a53/luci
src/gz openwrt_packages https://mirrors.tuna.tsinghua.edu.cn/openwrt/releases/23.05.4/packages/aarch64_cortex-a53/packages
src/gz openwrt_routing https://mirrors.tuna.tsinghua.edu.cn/openwrt/releases/23.05.4/packages/aarch64_cortex-a53/routing
src/gz openwrt_telephony https://mirrors.tuna.tsinghua.edu.cn/openwrt/releases/23.05.4/packages/aarch64_cortex-a53/telephony
src/gz friendlywrt_packages file://opt/packages
  • 注意, friendlywrt_packages需要保留, 否则会缺少一些系统依赖;
  • 如果你使用的是 friendlywrt 21.02 的固件, 则将上面的 23.05.4 替换成 21.02.5;
  • CPU架构可选择 aarch64_cortex-a53和aarch64_generic这两种;
  • 通过命令行切换国内源:
sed -i -e 's/downloads.openwrt.org/mirrors.cloud.tencent.com/g' /etc/opkg/distfeeds.conf
opkg update

5.9.2 在线安装软件包

回到”软件包“界面, 点击 “更新列表” 更新软件包信息, 更新完成后, 就可以在“筛选器”一栏中输入软件包的关键字, 搜索软件包安装了。

5.9.3 安装离线ipk软件包

在”软件包“界面上点击“上传软件包“, 定位你本地的ipk文件, 上传并安装即可。

5.10 FriendlyWrt的一些常见问题

  • 无法拨号上网
    • 进入“网络“->“防火墙“,将 “WAN区域“ 的“入站数据“,“出站数据“与“转发“均设置为 “接受”;
    • 如仍无法上网,可尝试关闭IPV6;
  • 拨号成功,但没有外网流量
    • 进入"服务"->"终端",输入fw4 reload尝试重新加载一次防火墙设置;
  • 无法开机,LED灯不亮
    • 尝试更换电源适配器和电缆,推荐使用 5V/2A 以上规格的电源供应;
    • 注意,部分Type-C接口的快速充电器会有延迟,可能需要几秒钟才开始提供电量;
  • 做二级路由时,电脑无法连接互联网
    • 如果你的主网络是IPv4,而NanoPi-R6S工作在IPv6,电脑有可能无法连接互联网,建议关闭IPv6 (本WiKi后面有介绍方法),或将主路由切换到IPv6;
  • 如果你有问题,或有更好的建议,欢迎发送邮件到 techsupport@friendlyarm.com;

5.11 禁用IPv6

要关掉 IPv6,可在ssh终端输入如下命令:

. /root/setup.sh
disable_ipv6
reboot

待NanoPi-R6S重启完毕,电脑也需要重新插拨一下网线(或重启网络端口)以便重新获得IP地址。

5.12 配置用户按键的功能

默认情况下, 用户按键配置成用于重启设备(软重启), 如下所示:

echo 'BTN_1 1 /sbin/reboot' >> /etc/triggerhappy/triggers.d/example.conf

你可以通过更改上面的配置文件改变它的行为.

5.13 配置移远EC20(4G模块)拨号上网

  • 进入“网络“->“接口“;
  • 点击 “WAN6“ 后面的 “删除“, 点击 "保存及应用";
  • 点击 “WAN“ 后面的 “编辑“,在 “设备“ 下拉选单中选择 "以太网适配器:wwan0",在“协议”下拉选单中选择“QMI蜂窝”,然后点击“切换协议“;
  • 在“调制解调器设备“下拉选单中选择”/dev/cdc-wdm0“,如果是中国联通,在“APN“中填入3gnet,如果是中国移动则填入cmnet,填写完成后,如下图所示:

Friendlywrt-ec20-config-cn.png

  • 点击“保存”关闭界面,最后点击下方的“保存并应用",FriendlyWrt后台会进行拨号上网,拨号成功的状态如下所示:

Friendlywrt-ec20-netstatus-cn.png

  • 连接到Lan的设备将可以连接互联网,如有WiFi模块,可进入“无线”界面开启无线AP功能,通过无线接入的设备亦可连接到互联网。

5.14 使用USB2LCD查看IP和温度

在终端输入如下命令设置lcd2usb服务开机自动启动:

. /root/setup.sh
init_lcd2usb
poweroff

将USB2LCD模块Plug到 NanoPi-R6S 的USB接口再开机,IP地址和CPU温度将显示在LCD上:
Xxx-usb2lcd-01.png


5.15 如何使用USB WiFi

5.15.1 如何在终端使用命令查询USB无线网卡型号

(1) 点击“服务>ttyd”进入FriendlyWrt的命令行界面

(2) 在开发板没有插入任何USB设备时输入以下命令以查看挂在USB主线上的现有设备

lsusb

(3) 插入USB WiFi,再次输入以下命令

lsusb

可以看到多出一个设备,ID为0BDA:C811

(4) 以“0BDA:C811”或“VID_0BDA&PID_C811”作为关键词在搜索引擎上搜索,搜索结果显示VID_0BDA&PID_C811的对应WIFI芯片为Realtek 8811CU

5.15.2 如何使用USB WiFi作为AP

(1) 把USB WiFi插入NanoPi-R6S的USB端口,推荐使用以下列表中支持AP模式的WiFi芯片模块:
R2swrt+usbwifi-20210831.jpg
注:符合以上WiFi芯片型号并符合以上VID&PID信息的USB无线网卡都可以使用,支持的型号不局限于某个品牌某个型号
(2) 插入USB WiFi后,点击上方菜单栏的“系统>重启”,点击“执行重启”按钮重启NanoPi-R6S

(3) 点击“网络>无线”进入配置无线WiFi界面

(4) 点击“编辑”按钮可编辑WiFi设置

(5) 在“接口配置”中可设置WiFi 模式和SSID等,然后点击到“无线安全”项可修改加密方式和WiFi密码,默认密码为password,设置完成后点击“保存”

(4) 配置完成后使用手机端或电脑端搜索对应SSID的WiFi即可

5.15.3 常见的USB WiFi问题及应对方法

1) 建议在关机状态下插入usb wifi, 再上电开机,FriendlyWrt会自动生成配置文件 /etc/config/wireless,如果没有生成,通过 ifconfig -a 看看有没有 wlan0,如果没有 wlan0,通常是没有驱动。
2) 如果 ifconfig -a 能看到 wlan0,但是热点没有正常工作,可以尝试更改 频道 和 国家代号,不合适的国家代号也会导致 WiFi 不工作。
3) 某些USB WiFi(例如MTK MT7662)默认工作在CD-ROM模式,需要经过usb_modeswitch来进行切换,可以尝试自行添加 usb_modeswitch 配置到以下目录:/etc/usb_modeswitch.d 。

5.15.4 更改系统默认的WiFi热点配置

FriendlyWrt默认会为USB WiFi设置国家、热点名称等参数,目的是尽量的做到即插即用,但这不能保证所有的模块都能兼容此设置,你可以通过修改以下文件,来更改这些行为:

/lib/wifi/mac80211.sh

5.16 玩转Docker应用

5.16.1 Docker使用:安装JellyFin影音服务器

请参考: How to setup JellyFin media system on NanoPi-R2S/zh

5.16.2 Docker使用:安装个人网盘nextcloud

mkdir /nextcloud -p
docker run -d -p 8888:80  --name nextcloud  -v /nextcloud/:/var/www/html/ --restart=always --privileged=true  arm64v8/nextcloud

安装完成后,使用8888端口进行访问。


5.16.3 使用外接硬盘来扩展Docker可用空间

  • 先停止docker服务:
/etc/init.d/dockerd stop
  • 把原来的/opt目录改个名, 建一个空的/opt目录:
mv /opt /opt-old && mkdir /opt
  • 参考章节“8 初始化NVME固态硬盘和USB移动硬盘”, 将你的硬盘格式化为ext4, 然后挂载至 /opt 目录:

Friendlywrt mount nvme opt-zh.jpg

  • 输入命令 "mount | grep /opt" 确实一下硬盘被正常挂载到 /opt 下:
root@FriendlyWrt:~# mount | grep /opt
/dev/nvme0n1p1 on /opt type ext4 (rw,relatime)
root@FriendlyWrt:~#
  • 把原来 /opt 目录下的文件复制到新的 /opt 目录:
cp -af /opt-old/* /opt/ && rm -rf /opt-old
  • 操作完后, 重启
reboot
  • 重启后, 进入"Docker"->"概览"页面, 查看"Docker根目录"这一行的信息, 可以确认Docke空间已扩容:

Friendlywrt docker info-zh.jpg

5.16.4 Docker的常见问题与解决办法

5.16.4.1 无法访问Docker提供的网络服务

解决办法:

  • 进入 "防火墙" 的设置,把 "转发" 设置成 "接受";
  • 关闭 ”软件流量分载“;

5.17 挂载smbfs共享资源

mount -t cifs //192.168.1.10/shared /movie -o username=xxx,password=yyy,file_mode=0644


5.18 使用sdk编译软件包

5.18.1 安装编译环境

在64位的Ubuntu (版本18.04+)下载并运行如下脚本: How to setup the Compiling Environment on Ubuntu bionic

5.18.2 在网盘上下载并解压sdk

sdk位于网盘的toolchain目录,解压后,需要先下载feeds软件包:

tar xvf openwrt-sdk-*-rockchip-armv8_gcc-11.2.0_musl.Linux-x86_64.tar.xz
# 路径太长会导致有些包编译出错,所以这里改一下目录名
mv openwrt-sdk-*-rockchip-armv8_gcc-11.2.0_musl.Linux-x86_64 sdk
cd sdk
./scripts/feeds update -a
./scripts/feeds install -a

5.18.3 将软件包编译并打包成ipk文件

此处以mwarning的示例作为演示,下载例子的源代码(共3个分别为example1, example2, example3),并拷到package目录:

git clone https://github.com/mwarning/openwrt-examples.git
cp -rf openwrt-examples/example* package/
rm -rf openwrt-examples/

再通过以下命令进入配置菜单:

make menuconfig

在菜单中选中以下我们要编译的软件包(默认实际上已经选中):

"Utilities" => "example1"
"Utilities" => "example3"
"Network" => "VPN" => "example2"

退出配置菜单的界面,在提示是否保存设置时需要选择Yes,然后执下以下命令,分别编译这三个软件包:

make package/example1/compile V=99
make package/example2/compile V=99
make package/example3/compile V=99

编译成功后,可以在bin目录下找到ipk文件,如下所示:

$ find ./bin -name example*.ipk
./bin/packages/aarch64_generic/base/example3_1.0.0-220420.38257_aarch64_generic.ipk
./bin/packages/aarch64_generic/base/example1_1.0.0-220420.38257_aarch64_generic.ipk
./bin/packages/aarch64_generic/base/example2_1.0.0-220420.38257_aarch64_generic.ipk

5.18.4 将编译生成的ipk安装到NanoPi上

可以用scp命令将ipk文件上传到NanoPi上:

cd ./bin/packages/aarch64_generic/base/
scp example*.ipk root@192.168.2.1:/root/

然后用opkg命令进行安装他们:

cd /root/
opkg install example3_1.0.0-220420.38257_aarch64_generic.ipk
opkg install example1_1.0.0-220420.38257_aarch64_generic.ipk
opkg install example2_1.0.0-220420.38257_aarch64_generic.ipk

5.19 使用 GitHub Actions 编译 FriendlyWrt

项目地址: https://github.com/friendlyarm/Actions-FriendlyWrt

5.20 Compile u-boot,kernel or friendlywrt

6 Ubuntu 22.04 桌面系统的使用

6.1 Ubuntu 22.04桌面系统简介

Ubuntu 22.04 桌面 具有如下特点:

  • 桌面环境采用 GNOME 42;
  • 默认使用Wayland 会话, 性能更好;
  • 提供基于 Mali GPU 的 OpenGL ES 支持;
  • 支持Rockhip MPP视频硬编和硬解码;
  • 预装基于mpv与kodi, 支持视频硬解码;
  • 支持安装Docker和Plex, 玩法丰富;

Ubuntu2204desktop.png

6.2 Account & Password

6.3 帐户与密码

普通用户:
    用户名: pi
    密码: pi

Root用户:
    用户名: root
    密码: fa

6.4 查看IP地址

由于主机名默认为FriendlyElec.lan, 所以可以使用ping命令来获得IP地址:

ping FriendlyElec.lan

6.5 通过ssh登录Ubuntu

ssh pi@FriendlyElec.lan

默认密码为pi

6.6 更新软件包

6.6.1 更换软件源为国内镜像源

$ sudo cp /etc/apt/sources.list /etc/apt/sources.list.org
$ sudo sed -i -e 's/ports.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list

6.6.2 更新软件包列表

$ sudo apt-get update

6.7 安装软件中心

$ sudo apt-get install snapd
$ sudo snap install snap-store

6.8 安装内核头文件

sudo dpkg -i /opt/linux-headers-*.deb

测试编译内核模块:

sudo apt update
sudo apt install git gcc make bc
git clone https://github.com/RinCat/RTL88x2BU-Linux-Driver.git
cd RTL88x2BU-Linux-Driver
make -j$(nproc)
sudo make install
sudo modprobe 88x2bu

6.9 更改时区

6.9.1 检查当前时区

timedatectl

6.9.2 列出所有时区

timedatectl list-timezones

6.9.3 设置时区 (比如上海)

sudo timedatectl set-timezone Asia/Shanghai

6.10 更换开机LOGO和桌面墙纸

替换内核下面的两个文件,重新编译内核:
kernel/logo.bmp
kernel/logo_kernel.bmp
或者使用脚本来操作,如下所示:

  • 下载脚本
git clone https://github.com/friendlyarm/sd-fuse_rk3588.git -b kernel-6.1.y
cd sd-fuse_rk3588
  • 编译内核并重新打包固件
convert files/logo.jpg -type truecolor /tmp/logo.bmp
convert files/logo.jpg -type truecolor /tmp/logo_kernel.bmp
LOGO=/tmp/logo.bmp KERNEL_LOGO=/tmp/logo_kernel.bmp ./build-kernel.sh ubuntu-jammy-desktop-arm64
./mk-emmc-image.sh ubuntu-jammy-desktop-arm64

6.10.2 恢复出厂设置

在终端上执行如下命令:

sudo firstboot && sudo reboot

6.11 开机自动启动程序(例如Firefox)

把要开机启动的程序的desktop文件放入~/.config/autostart/目录即可,例如:

mkdir ~/.config/autostart/
cp /usr/share/applications/firefox.desktop ~/.config/autostart/

6.12 取消USB存储设备自动挂载

sudo systemctl mask udisks2
sudo reboot

6.13 设置中文语言与输入法

6.13.1 设置中文语言

输入以下命令,用空格选中 'zh_CN.UTF-8'

sudo dpkg-reconfigure locales

添加环境变量到 .bashrc:

echo "export LC_ALL=zh_CN.UTF-8" >> ~/.bashrc
echo "export LANG=zh_CN.UTF-8" >> ~/.bashrc
echo "export LANGUAGE=zh_CN.UTF-8" >> ~/.bashrc

重启确认一下设置是否生效:

sudo reboot

6.14 硬解播放视频

6.14.1 界面播放

  • 在文件浏览器定位到视频文件,右击选择使用"Play with mpv media player"播放视频
  • 通过Kodi播放, 默认会调用mpv进行硬解播放
  • 使用Chromium网页浏览器, 可以硬解播放网页上视频 (限CPU能支持的视频格式)

6.14.2 命令行播放

  • 播放本地视频
export DISPLAY=:0.0
mpv --fs /home/pi/Videos/demo.mp4
  • 播放网络视频
export DISPLAY=:0.0
mpv --fs https://www.youtube.com/watch?v=lK-nYDmC1Dk

6.15 安装Plex多媒体服务器

运行以下命令安装:

echo deb https://downloads.plex.tv/repo/deb public main | sudo tee /etc/apt/sources.list.d/plexmediaserver.list
curl https://downloads.plex.tv/plex-keys/PlexSign.key | sudo apt-key add -
sudo apt update
sudo apt install plexmediaserver

成功安装后,启用 Plex(系统启动时自动启动):

sudo systemctl enable plexmediaserver
sudo systemctl start plexmediaserver
sudo systemctl status plexmediaserver

安装完成后, 在电脑浏览器上输入以下地址登录Plex服务器后台: http://IP地址:32400/web/

6.16 安装Docker

6.16.1 安装docker

sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin

验证是否安装成功:

sudo docker info

6.16.2 不使用sudo运行docker

sudo groupadd docker
sudo gpasswd -a ${USER} docker
sudo systemctl restart docker
sudo chmod a+rw /var/run/docker.sock

验证是否成功:

docker images

6.16.3 测试运行docker映像: 安装nextcloud网盘

mkdir ~/nextcloud -p
docker run -d -p 8888:80  --name nextcloud  -v ~/nextcloud/:/var/www/html/ --restart=always --privileged=true  arm64v8/nextcloud

安装完成后, 在电脑浏览器上访问: http://设备IP地址:8888, 即可查看nextcloud网盘页面。

6.17 取消桌面的自动登录

编辑文件/etc/gdm3/custom.conf, 设置字段AutomaticLoginEnable为false:

[daemon]
AutomaticLoginEnable = false

6.18 设置WiFi无线链接

6.18.1 图形界面操作

点击右上角的网络图标,选择你要连接的WiFi热点,按界面提示操作即可。

6.18.2 命令行操作

请参考 Use NetworkManager to configure network settings/zh

6.19 测试OpenGL ES性能

首先, 将CPU设置为性能模式:

sudo sh -c 'echo performance > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor'
sudo sh -c 'echo performance > /sys/devices/system/cpu/cpufreq/policy4/scaling_governor'
sudo sh -c 'echo performance > /sys/devices/system/cpu/cpufreq/policy6/scaling_governor'

然后启动glmark2-es2-wayland:

glmark2-es2-wayland

6.20 Chromium网页浏览器

6.20.1 GPU支持情况

系统预装的Chromium网页浏览器已经默认启用硬件加速,支持WebGL,可以通过输入网址 chrome://gpu 了解硬件加速情况,如下图所示:
Rk35xx-ubuntu-chromium-gpu.png

6.20.2 VPU支持情况

在浏览器上播放一个视频,然后在命令行使用fuser查看mpp设备节点的使用情况来确认已经调用了vpu:

pi@FriendlyElec:~$ fuser /dev/mpp_service
/dev/mpp_service:     3258

如果fuser命令没有内容输出, 则表示当前是软解.

6.20.3 查看支持的硬解格式

在浏览器地址栏输入 about://gpu,翻页到页面最底部,查看 "Video Acceleration Information" 表格;
播放一个视频后,再在浏览器地址栏输入 about://media-internals, 可以查看最近播放的视频是否启用了硬解;

7 Android系统的使用

Android系统特性:

  • 分为TV与Tablet两个版本,对应不同的应用场景;
  • 支持红外摇控器 (仅限板载红外接收器的型号);
  • 支持蓝牙摇控器 (需外接USB或M.2蓝牙模块);
  • 支持有线网络;
  • 支持WiFi (需外接USB或M.2 WIFI模块);
  • 支持视频硬解码等;

AndroidTV12.png

7.1 Android系统支持的WIFI型号

7.1.1 M.2 WiFi Module

  • RTL8822CE

7.1.2 Usb Dongle

  • RTL8821CU (Vid: 0BDA, Pid: C811) (测试样品:TP-Link TL-WDN5200H)
  • RTL8812AU (Vid: 0BDA, Pid: 8812)
  • MediaTek MT7662 (Vid: 0E8D, Pid: 7612) (测试样品:COMFAST CF-WU782AC V2)

7.2 Android系统支持的蓝牙型号

7.2.1 蓝牙模块

  • RTL8822CE
  • RTL8761B
  • CSR8510 A10 Bluetooth Dongle 0a12:0001

(Note: unsupported device ID 0x2B89:0x8761)

7.2.2 蓝牙遥控器

  • Amazon Fire TV Remote

7.3 ADB的使用

7.3.1 Android Tablet界面下开启

  • Android Tablet界面下, 依次进入 Settings -> About tablet -> 连续点击7下屏幕最下面的Build number
  • 再次进入Android系统的Settings -> System -> Advance -> Developer options, 勾选 USB debugging, 重新开机
  • 如需通过网络使用adb,需要先连接WiFi,然后勾选Wireless debuging, 在弹出的 "Allow wireless debuggin on the network" 询问窗口中选中 "Always allow on this network",点 "Allow"

7.3.2 Android TV界面下开启

  • Android TV界面下, 点击右上角的Settings图标(齿轮形状的图标), 依次进入 Device Preferences -> About -> 连续点击7下屏幕最下面的Android TV OS build
  • 再次点击右上角的Settings图标(齿轮形状的图标) -> Device Preferences -> Developer options, 如需通过网络使用adb,可同时勾选 USB debugging, 重新开机
  • 如需通过网络使用adb,Android TV下支持WiFi和有线网络, 在 Developer options 界面中勾选Internet Adb启用网络adb

7.3.3 通过USB使用adb

请注意: 开启ADB后, 该USB3端口将工作在Device模式, 如果需要连接U盘等设备,你需要关闭ADB并重启开发板
一般情况下adb是默认关闭的,请执行以下步骤开启:

  • 用USB A-to-A数据线 (也叫USB公对公数据线), 将开发板与电脑进行连接, 连接方法参照下图, 需要连接靠近外侧的USB端口:
  • 基于你的操作系统安装 adb 驱动和命令
  • 正常情况下, Android状态栏会提示 USB debugging connected,表示ADB已开启, 在电脑上输入如下命令检测连接:
$ adb devices
List of devices attached
27f7a63caa3faf16	device
  • 进入adb shell:
$ adb shell
nanopi3:/ $

7.3.4 通过网络使用adb

  • Android Tablet进入Android系统的Settings -> System -> Advance -> Developer options, 点击Wireless debugging,查看IP地址与端口
  • Android TV默认的网络adb端口为5555

这里假设Wireless debugging界面上的IP地址与端口显示为192.168.1.167:45055,adb命令如下:

  • 连接设备:
$ adb connect 192.168.1.167:45055
connected to 192.168.1.167:45055
  • 进入adb shell:
$ adb shell
nanopi3:/ $
  • 如有多个设备,需要用-s参数指定设备的IP与端口,如下所示:
$ adb -s 192.168.1.167:45055 shell
nanopi3:/ $

7.4 更换Android TV默认的Launcher桌面

  • 参考上一个章节开启adb
  • 这里以通过apk安装第三方启动器Emotn UI为例, 访问网页 https://app.emotn.com/ui/ 下载apk,然后用adb安装:
$ adb install com.oversea.aslauncher_1.0.9.0_5094.apk
Performing Streamed Install
Success
  • 安装完成后,在界面上启动它,然后输入以下adb命令获得它的包名:
$ adb shell dumpsys window | grep mCurrentFocus
mCurrentFocus=Window{7a950fb u0 com.oversea.aslauncher/com.oversea.aslauncher.ui.main.MainActivity}
  • 可以看到,Emotn UI的包名为: com.oversea.aslauncher,设置它为默认Launcher:
$ adb shell pm set-home-activity com.oversea.aslauncher
Success
  • 然后比较关键的一步,需要禁用原生的Launcher,使用以下命令禁用:
$ adb shell pm disable-user --user 0 com.google.android.tvlauncher
Package com.google.android.tvlauncher new state: disabled-user
  • 最后,重启设备查看效果,正常情况下,开机直接进入Emotn UI了:
$ adb shell reboot
  • 以后再安装其他Launcher, 可以通过界面进行切换,设置界面位于 Settings -> Device Preferences -> Advanced setting -> Default Launcher, 如下图所示:

Androidtv-default-launcher.png

7.5 Android下的有线网络

  • 任何一个网口都能通过DHCP连接网络
  • 如果想要配置静态IP,则只有 eth0 接口支持
  • 某些应用可能有兼容性问题,会报没有网络连接的错误,但实际上网络是通的

7.6 Andorid下使用EC20 4G模块

EC20 默认已禁用,您可以使用以下命令查看它的状态,已禁用状态下会显示数字1:

su
getprop persist.vendor.radio.no_modem_board

要启用 EC20,请使用以下命令(重启后生效):

su
setprop persist.vendor.radio.no_modem_board 0

8 Debian11 桌面系统的使用

8.1 Debian11桌面系统简介

Debian11 Desktop 是一个轻量级的Debian桌面环境,具有如下特点:

  • 桌面环境采用 Xfce, Xfce 是一个快捷的、轻量级的,功能齐全的桌面环境;
  • 提供基于 Mali GPU 的 OpenGL 支持;
  • 支持Rockhip MPP视频硬编和硬解码;
  • 预装基于mpv的SMPlayer播放器, 支持视频硬解码;
  • 预装Chromium浏览器, 支持vpu/gpu硬件加速 (视频硬解限h264/mp4格式);
  • 支持安装Plex Server, Docker与wps等应用, 玩法丰富;

Debian11-xfce.png

8.2 帐户与密码

普通用户:
    用户名: pi
    密码: pi

Root用户:
    默认没有设置root密码,可通过sudo passwd root命令配置root密码

8.3 查看IP地址

由于Debian主机名默认为硬件型号, 所以可以使用ping命令来获得IP地址: ping NanoPi-R6S

8.4 通过ssh登录Debian

使用以下命令:ssh pi@NanoPi-R6S
默认密码为pi

8.5 更新软件包

8.5.1 更换软件源为国内镜像源

sudo sed -i -e 's/deb.debian.org/mirrors.cloud.tencent.com/g' /etc/apt/sources.list
sudo sed -i -e 's/security.debian.org/mirrors.cloud.tencent.com/g' /etc/apt/sources.list
sudo apt update

8.6 安装x11vnc远程桌面

x11vnc是一个VNC服务器, 安装后我们可以不依赖外部的显示设备, 通过网络远程登录Debian桌面。

8.6.1 安装x11vnc

sudo apt-get install x11vnc

8.6.2 设置VNC登录密码

sudo x11vnc -storepasswd /etc/x11vnc.pwd

8.6.3 设置x11vnc在开机时自动启动

新建如下文件:

sudo vi /lib/systemd/system/x11vnc.service

内容如下:

[Unit]
Description=Start x11vnc at startup.
Requires=display-manager.service
After=syslog.target network-online.target
Wants=syslog.target network-online.target
 
[Service]
Type=simple
ExecStart=/usr/bin/x11vnc -display :0 -forever -loop -noxdamage -repeat -rfbauth /etc/x11vnc.pwd -rfbport 5900 -shared -capslock -nomodtweak
ExecStop=/usr/bin/x11vnc -R stop
Restart=on-failure
 
[Install]
WantedBy=multi-user.target

设置systemd服务:

sudo systemctl daemon-reload
sudo systemctl enable x11vnc.service
sudo systemctl start x11vnc

8.6.4 测试远程桌面

在电脑上启动VNC客户端软件, 在地址栏输入: IP地址:5900 连接即可, 效果如下图所示, 图中设备IP地址为192.168.1.123, 使用端口5900进行连接:
Debian11-x11vnc.png

8.7 安装内核头文件

sudo dpkg -i /opt/linux-headers-*.deb

测试编译内核模块:

sudo apt update
sudo apt install git gcc make bc
git clone https://github.com/RinCat/RTL88x2BU-Linux-Driver.git
cd RTL88x2BU-Linux-Driver
make -j$(nproc)
sudo make install
sudo modprobe 88x2bu

8.8 更改时区

8.8.1 检查当前时区

timedatectl

8.8.2 列出所有时区

timedatectl list-timezones

8.8.3 设置时区 (比如上海)

sudo timedatectl set-timezone Asia/Shanghai

8.9 更换开机LOGO和桌面墙纸

8.9.1 更换开机LOGO

替换内核下面的两个文件,重新编译内核:
kernel/logo.bmp
kernel/logo_kernel.bmp
或者使用脚本来操作,如下所示:

  • 下载脚本
git clone https://github.com/friendlyarm/sd-fuse_rk3588.git -b kernel-6.1.y --single-branch
cd sd-fuse_rk3588
  • 编译内核并重新打包固件
convert files/logo.jpg -type truecolor /tmp/logo.bmp
convert files/logo.jpg -type truecolor /tmp/logo_kernel.bmp
sudo LOGO=/tmp/logo.bmp KERNEL_LOGO=/tmp/logo_kernel.bmp ./build-kernel.sh debian-bullseye-desktop-arm64
sudo ./mk-sd-image.sh debian-bullseye-desktop-arm64
sudo ./mk-emmc-image.sh debian-bullseye-desktop-arm64

注: 如果你的系统不是debian-bullseye-desktop-arm64,请根据实际情况指定

8.9.2 更换桌面墙纸

修改如下配置文件:

/home/pi/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml

8.9.3 恢复出厂设置

在终端上执行如下命令:

sudo firstboot && sudo reboot

8.10 开机自动启动程序(例如Kodi)

把要开机启动的程序的desktop文件放入~/.config/autostart/目录即可,例如:

mkdir ~/.config/autostart/
cp /usr/share/applications/kodi.desktop ~/.config/autostart/

8.11 取消USB存储设备自动挂载

sudo systemctl mask udisks2
sudo reboot

8.12 设置中文语言与输入法

8.12.1 设置中文语言

输入以下命令,用空格选中 'zh_CN.UTF-8'

sudo dpkg-reconfigure locales

添加环境变量到 .bashrc:

echo "export LC_ALL=zh_CN.UTF-8" >> ~/.bashrc
echo "export LANG=zh_CN.UTF-8" >> ~/.bashrc
echo "export LANGUAGE=zh_CN.UTF-8" >> ~/.bashrc

重启确认一下设置是否生效:

sudo reboot

8.12.2 安装中文输入法

输入如下命令安装fcitx和拼音输入法:

sudo apt update
sudo apt-get install fcitx fcitx-pinyin
sudo apt-get install im-config
sudo apt-get install fcitx-table*
sudo apt-get install fcitx-ui-classic fcitx-ui-light
sudo apt-get install fcitx-frontend-gtk2 fcitx-frontend-gtk3 fcitx-frontend-qt4
sudo apt-get remove --purge scim* ibus*
sudo reboot

重启后, 按Ctrl+Space即可切换中英文输入法, 右上角也出现了输入法图标, 右击右上角的输入法图标, 在弹出菜单中可以切换输入法, 如下图所示:
Debian11-chinese-im.png

8.13 安装Plex多媒体服务器

访问 Plex官网的如下地址: https://www.plex.tv/media-server-downloads/
在下载页面上, 选择 ”Plex Media Server” 分类, 平台选择 ”Linux“, 版本选择 "Ubuntu(16.04+)/Debian(8+) - ARMv8",
下载得到deb包后, 使用 dpkg 命令安装软件包即可:

sudo dpkg -i plexmediaserver_1.31.0.6654-02189b09f_arm64.deb

安装完成后, 在电脑浏览器上输入以下地址登录Plex服务器后台: http://IP地址:32400/web/

8.14 在Debian系统上安装Docker

请参考此链接: How to Install Docker on Debian/zh

8.15 如何测试NPU

请参考此链接: NPU/zh

8.16 设置WiFi无线链接

8.16.1 图形界面操作

点击右上角的网络图标,选择你要连接的WiFi热点,按界面提示操作即可。

8.16.2 命令行操作

请参考 Use NetworkManager to configure network settings/zh

8.17 取消自动登录

编辑文件:

sudo vim /etc/lightdm/lightdm.conf

注释掉如下两行内容 (在前面插入#):

autologin-user=pi
autologin-user-timeout=0

8.18 测试OpenGL ES性能

在系统菜单 System Tools 中点击 Terminator 打开命令行终端,输入以下命令即可测试:

glmark2-es2

8.19 设置HDMI/DP屏幕分辨率

进入系统菜单 Settings -> Display界面进行设置即可。

8.20 设置HiDPI屏幕缩放

Xfce支持HiDPI缩放,可以使用设置管理器启用: 进入Settings Manager > Appearance > Settings > Window Scaling,选择2作为缩放系数。
或者编辑文件 ~/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml

8.21 调节HDMI边界

打开命令行终端,输入命令进行操作,有几个注意事项:
1) 需要登录桌面才能操作,如果Desktop停留在Login是无法设置的;
2) 如果你是在 ssh 登录的终端,请使用与桌面登录相同的用户名,默认是 pi,不能使用root用户,同时,你需要赋值 DISPLAY 变量:

export DISPLAY=:0.0

8.21.1 查询显示器支持哪些分辨率

xrandr -q

输出示例:

Screen 0: minimum 320 x 200, current 1920 x 1080, maximum 8192 x 8192
eDP-1 disconnected primary (normal left inverted right x axis y axis)
HDMI-1 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
   1920x1080     60.00*+  50.00  
   1280x720      60.00    50.00  
   720x576       50.00  
   720x480       59.94

8.21.2 设置分辨率

例如设置为 1920X1080@60Hz:

xrandr --output HDMI-1 --mode 1920x1080 --refresh 60

8.21.3 设节HDMI输出边界

For example, the transformation scaling horizontal coordinates by 0.8, vertical coordinates by 1.04 and moving the screen by 35 pixels right and 19 pixels down:

xrandr --output HDMI-1 --transform 0.80,0,-35,0,1.04,-19,0,0,1

8.21.4 开机自动调整

编辑~/.config/autostart/lxrandr-autostart.desktop,将完整的xrandr命令写入到Exec=开头的键中,如下所示:

[Desktop Entry]
Type=Application
Name=LXRandR autostart
Comment=Start xrandr with settings done in LXRandR
Exec=sh -c 'xrandr --output HDMI-1 --mode 1920x1080 --refresh 50 --transform 1.04,0,-35,0,1.05,-30,0,0,1'

8.22 Chromium网页浏览器

8.22.1 GPU支持情况

系统预装的Chromium网页浏览器已经默认启用硬件加速,支持WebGL,可以通过输入网址 chrome://gpu 了解硬件加速情况,如下图所示:
Rk35xx-debian-chromium-gpu.png

8.22.2 VPU支持情况

在浏览器上播放一个视频,然后在命令行使用fuser查看mpp设备节点的使用情况来确认已经调用了vpu:

pi@FriendlyElec:~$ fuser /dev/mpp_service
/dev/mpp_service:     3258

如果fuser命令没有内容输出, 则表示当前是软解.

8.22.3 查看支持的硬解格式

在浏览器地址栏输入 about://gpu,翻页到页面最底部,查看 "Video Acceleration Information" 表格;
播放一个视频后,再在浏览器地址栏输入 about://media-internals, 可以查看最近播放的视频是否启用了硬解;

8.23 测试mpp视频硬件编码

mpi_enc_test -w 1920 -h 1080 -t 7 -f 0 -o test.h264 -n 300
export XDG_RUNTIME_DIR=/run/user/0
ffplay test.h264

9 Debian10 桌面系统的使用

10 FriendlyCore的使用

10.1 FriendlyCore默认帐户

  • 普通用户:
   用户名: pi
   密码: pi
  • Root用户:
   用户名: Root用户:
   密码: fa

10.2 更新软件包

$ sudo apt-get update

10.3 配置网络

10.3.1 设置静态IP地址

默认已将 eth0 配置成 dhcp 自动获取IP地址,要更改配置,可以修改这个文件:

vi /etc/network/interfaces.d/eth0

比如修改成静态IP地址,如下所示:

auto eth0
iface eth0 inet static
    address 192.168.1.231
    netmask 255.255.255.0
    gateway 192.168.1.1

另外两个网口设置了静态IP地址, 设置如下:
eth1: 192.168.2.1
eth2: 192.168.3.1 (注:如果有第三个网口的话)

10.3.2 设置DNS

还需要修改如下文件加入DNS的配置:

vi /etc/systemd/resolved.conf

例如设置为192.168.1.1:

[Resolve]
DNS=192.168.1.1

再用以下命令重新启动systemd-resolved服务:

sudo systemctl restart systemd-resolved.service
sudo systemctl enable systemd-resolved.service

10.3.3 设置使用另一个网络接口

要配置另一个网口, 例如eth1,可以在 /etc/network/interfaces.d/ 下复制 eth0 成 eth1,然后编辑eth1, 把其中的eth0改为eth1, 根据需要指定网络配置:

cp /etc/network/interfaces.d/eth0 /etc/network/interfaces.d/eth1
vi /etc/network/interfaces.d/eth1

10.4 连接WiFi

先用以下命令检查一下系统是否有安装Network-Manager:

which nmcli

如果有安装Network-Manager, 则参考此链接的方法连接WiFi: Use NetworkManager to configure network settings/zh, 如果没有安装, 则参考如下方法配置WiFi,
输入以下命令查询一下WiFi的网络接口,wlan开头的就是WiFi:

ifconfig -a

默认情况下是wlan0,在/etc/network/interfaces.d/目录下新建一个与网络接口同名的配置文件 ,以wlan0为例,用vi命令新建以下文件:

sudo vi /etc/network/interfaces.d/wlan0

wlan0文件的内容如下:

auto lo
iface lo inet loopback
auto wlan0
iface wlan0 inet dhcp
wpa-driver wext
wpa-ssid YourWiFiESSID
wpa-ap-scan 1
wpa-proto RSN
wpa-pairwise CCMP
wpa-group CCMP
wpa-key-mgmt WPA-PSK
wpa-psk YourWiFiPassword

其中,YourWiFiESSID和YourWiFiPassword请替换成你要连接的无线AP名称和密码, 保存文件后输入以下命令, 或者重启以应用配置:

sudo systemctl daemon-reload
sudo systemctl restart networking

需要注意的是,如果你的SD卡在多个硬件上运行,WiFi的网络接口可能会被重命名为wlan1, wlan2等,你可以通过清空这个文件的内容并重启让它恢复为默认值:/etc/udev/rules.d/70-persistent-net.rules。

10.4.1 重点支持的WIFI型号

10.4.1.1 M.2 WiFi Module
  • RTL8822CE
10.4.1.2 Usb Dongle
  • RTL8821CU (Vid: 0BDA, Pid: C811) (测试样品:TP-Link TL-WDN5200H)
  • RTL8812AU (Vid: 0BDA, Pid: 8812)
  • MediaTek MT7662 (Vid: 0E8D, Pid: 7612) (测试样品:COMFAST CF-WU782AC V2)

10.5 安装内核头文件

sudo dpkg -i /opt/linux-headers-*.deb

10.6 配置状态灯

先确定一下系统是否已经存在leds初始化的服务:

sudo systemctl status leds

如果已经存在leds服务, 则通过编辑如下文件改变状态灯的默认行为:

/etc/init.d/leds.sh

早期的固件由于没有leds服务, 需要参考以下指南手动配置状态灯, 首先, 设置开机自动加载以下内核模块:

modprobe ledtrig-netdev
echo ledtrig-netdev > /etc/modules-load.d/ledtrig-netdev.conf

下面的脚本代码将状态灯与网卡相关联, 需要加入到开机自动运行的脚本中:

echo netdev > /sys/class/leds/wan_led/trigger
echo eth0 > /sys/class/leds/wan_led/device_name
echo 1 > /sys/class/leds/wan_led/link
 
echo netdev > /sys/class/leds/lan1_led/trigger
echo eth1 > /sys/class/leds/lan1_led/device_name
echo 1 > /sys/class/leds/lan1_led/link
 
echo netdev > /sys/class/leds/lan2_led/trigger
echo eth2 > /sys/class/leds/lan2_led/device_name
echo 1 > /sys/class/leds/lan2_led/link

10.7 删除Qt5及相关文件

在root用户下执行如下命令:

su root
cd /
rm -rf usr/local/Trolltech/Qt-5.10.0-rk64one usr/local/Trolltech/Qt-5.10.0-rk64one-sdk usr/bin/setqt5env* usr/bin/qt5demo etc/qt5
rm -rf opt/{qt5-browser,Qt5_CinematicExperience,qt5-multi-screen-demo,qt5-nmapper,qt5-player,qt5-smarthome,QtE-Demo,qt5-qml-image-viewer,dual-camera}

11 如何编译系统

11.1 搭建编译环境

11.1.1 方法1: 使用Docker进行交叉编译

请参考 docker-cross-compiler-novnc,也可使用网盘 “04_SDK与编译器/docker” 目录下的本地镜像,参考README.md用docker load命令导入即可。

11.1.2 方法2: 本地搭建交叉编译环境

11.1.2.1 安装编译所需软件包

建议使用amd64架构Ubuntu 20.04操作系统,参考如下内容安装编译及打包所需要的软件包:

sudo apt-get -y update
sudo apt-get install -y sudo curl
sudo bash -c \
  "$(curl -fsSL https://raw.githubusercontent.com/friendlyarm/build-env-on-ubuntu-bionic/master/install.sh)"

对于中国大陆的用户亦可使用以下地址:

sudo bash -c \
  "$(curl -fsSL http://112.124.9.243:3000/friendlyelec/build-env-on-ubuntu-bionic/raw/branch/cn/install.sh)"

你的电脑上会安装好如下交叉编译器:

版本 架构 编译器路径 用途
4.9.3 armhf /opt/FriendlyARM/toolchain/4.9.3 用于编译armhf架构的应用程序
6.4 aarch64 /opt/FriendlyARM/toolchain/6.4-aarch64 用于交叉编译4.4内核
11.3 aarch64 /opt/FriendlyARM/toolchain/11.3-aarch64 用于交叉编译4.19及以上内核(含5.10,6.1)及uboot
11.1.2.2 设置交叉编译器

参考上一节的表格,选用合适版本的编译器,然后将编译器的路径加入到PATH中,例如要使用11.3的交叉编译器,用vi编辑~/.bashrc,在末尾加入以下内容:

export PATH=/opt/FriendlyARM/toolchain/11.3-aarch64/bin:$PATH
export GCC_COLORS=auto

执行一下~/.bashrc脚本让设置立即在当前shell窗口中生效,注意"."后面有个空格:

. ~/.bashrc

验证是否安装成功:

$ aarch64-linux-gcc -v
Using built-in specs.
COLLECT_GCC=aarch64-linux-gcc
COLLECT_LTO_WRAPPER=/opt/FriendlyARM/toolchain/11.3-aarch64/libexec/gcc/aarch64-cortexa53-linux-gnu/11.3.0/lto-wrapper
Target: aarch64-cortexa53-linux-gnu
Configured with: /home/cross/arm64/src/gcc/configure --build=x86_64-build_pc-linux-gnu --host=x86_64-build_pc-linux-gnu --target=aarch64-cortexa53-linux-gnu --prefix=/opt/FriendlyARM/toolchain/11.3-aarch64 --exec_prefix=/opt/FriendlyARM/toolchain/11.3-aarch64 --with-sysroot=/opt/FriendlyARM/toolchain/11.3-aarch64/aarch64-cortexa53-linux-gnu/sysroot --enable-languages=c,c++ --enable-fix-cortex-a53-843419 --with-arch=armv8-a+crypto+crc --with-cpu=cortex-a53 --with-pkgversion=ctng-1.25.0-119g-FA --with-bugurl=http://www.friendlyelec.com/ --enable-objc-gc --enable-__cxa_atexit --disable-libmudflap --disable-libgomp --disable-libssp --disable-libquadmath --disable-libquadmath-support --disable-libsanitizer --disable-libmpx --with-gmp=/home/cross/arm64/buildtools --with-mpfr=/home/cross/arm64/buildtools --with-mpc=/home/cross/arm64/buildtools --with-isl=/home/cross/arm64/buildtools --enable-lto --enable-threads=posix --disable-libstdcxx-pch --enable-clocale=gnu --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-indirect-function --enable-gnu-unique-object --enable-default-pie --enable-linker-build-id --with-linker-hash-style=gnu --enable-plugin --enable-gold --with-libintl-prefix=/home/cross/arm64/buildtools --disable-multilib --with-local-prefix=/opt/FriendlyARM/toolchain/11.3-aarch64/aarch64-cortexa53-linux-gnu/sysroot --enable-long-long --enable-checking=release --enable-link-serialization=2
Thread model: posix
Supported LTO compression algorithms: zlib
gcc version 11.3.0 (ctng-1.25.0-119g-FA)

11.2 编译 Openwrt/Friendlywrt

11.2.1 下载源代码

FriendlyWrt有两个版本, 请根据需要进行选择.

11.2.1.1 版本FriendlyWrt 21.02
mkdir friendlywrt21-rk3588
cd friendlywrt21-rk3588
git clone https://github.com/friendlyarm/repo --depth 1 tools
tools/repo init -u https://github.com/friendlyarm/friendlywrt_manifests -b master-v21.02 \
        -m rk3588.xml --repo-url=https://github.com/friendlyarm/repo  --no-clone-bundle
tools/repo sync -c  --no-clone-bundle
11.2.1.2 版本FriendlyWrt 23.05
mkdir friendlywrt23-rk3588
cd friendlywrt23-rk3588
git clone https://github.com/friendlyarm/repo --depth 1 tools
tools/repo init -u https://github.com/friendlyarm/friendlywrt_manifests -b master-v23.05 \
        -m rk3588.xml --repo-url=https://github.com/friendlyarm/repo  --no-clone-bundle
tools/repo sync -c  --no-clone-bundle

11.2.2 首次编译

下面的命令是编译不带docker的版本, 如需要编译带docker的版本, 请将rk3588.mk替换为rk3588-docker.mk:

./build.sh rk3588.mk

会编译所有组件(包含u-boot, kernel 和 friendlywrt)并生成sd卡镜像文件,再执行以下命令,可生成用于安装系统到emmc运行的镜像文件(eflahser固件):

./build.sh emmc-img

对项目进行过修改后, 需要重新打包sd卡镜像, 可执行如下命令:

./build.sh sd-img

11.2.3 二次编译

cd friendlywrt
make menuconfig #改动FriendlyWrt的配置
rm -rf ./tmp
make -j${nproc}
cd ../
./build.sh sd-img
./build.sh emmc-img

11.2.4 单独编译u-boot

./build.sh uboot

11.2.5 单独编译kernel

./build.sh kernel

11.2.6 单独编译friendlywrt

./build.sh friendlywrt

或者进入friendlywrt目录, 按标准openwrt的命令操作, 上面的命令出现错误时, 可尝试使用以下命令单线程编译:

cd friendlywrt
make -j1 V=s

11.3 编译Buildroot

请参考: Buildroot

11.4 其他Linux系统编译

11.4.1 各个OS对应的内核与u-boot版本

操作系统 内核版本 uboot版本 交叉编译器 分区类型 构建工具集 内核代码分支 内核配置 uboot代码分支 uboot配置
buildroot linux v5.10.y u-boot
v2017.09
11.3-aarch64 GPT sd-fuse nanopi5-v5.10.y_opt nanopi6_linux_defconfig nanopi6-v2017.09 nanopi6_defconfig
openmediavault-arm64 linux v6.1.y GPT sd-fuse nanopi6-v6.1.y
ubuntu-jammy-desktop-arm64 GPT
ubuntu-jammy-minimal-arm64
ubuntu-jammy-x11-desktop-arm64
ubuntu-focal-desktop-arm64
friendlycore-focal-arm64
debian-bookworm-core-arm64
debian-bullseye-desktop-arm64
debian-bullseye-minimal-arm64
friendlywrt21 nanopi6_linux_defconfig
friendlywrt.config
friendlywrt21-docker
friendlywrt23
friendlywrt23-docker
export PATH=/opt/FriendlyARM/toolchain/11.3-aarch64/bin/:$PATH
  • sd-fuse构建脚本可以用于快速编译kernel和uboot、重新打包sd卡固件与卡刷固件等

11.4.2 编译内核linux-v6.1.y

下载源代码并编译:

git clone https://github.com/friendlyarm/kernel-rockchip --single-branch --depth 1 -b nanopi6-v6.1.y kernel-rockchip
cd kernel-rockchip
export PATH=/opt/FriendlyARM/toolchain/11.3-aarch64/bin/:$PATH
touch .scmversion
# 配置内核
# option1: 加载Linux系统配置
make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 nanopi6_linux_defconfig
# option2: 加载FriendlyWrt系统配置
# make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 nanopi6_linux_defconfig friendlywrt.config
# 启动配置界面
# make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 menuconfig
# 编译内核
make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 nanopi6-images -j$(nproc)
# 编译驱动模块
mkdir -p out-modules && rm -rf out-modules/*
make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 INSTALL_MOD_PATH="$PWD/out-modules" modules -j$(nproc)
make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 INSTALL_MOD_PATH="$PWD/out-modules" modules_install
KERNEL_VER=$(make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 kernelrelease)
[ ! -f "$PWD/out-modules/lib/modules/${KERNEL_VER}/modules.dep" ] && depmod -b $PWD/out-modules -E Module.symvers -F System.map -w ${KERNEL_VER}
(cd $PWD/out-modules && find . -name \*.ko | xargs aarch64-linux-strip --strip-unneeded)

完成后会得到如下文件:

kernel.img resource.img boot.img (此img弃用) 驱动模块位于out-modules目录

安装内核:
请参考 #应用新编译的uboot与内核

11.4.3 编译u-boot v2017.09

下载源代码并编译:

git clone https://github.com/friendlyarm/rkbin --single-branch --depth 1 -b nanopi6
git clone https://github.com/friendlyarm/uboot-rockchip --single-branch --depth 1 -b nanopi6-v2017.09
export PATH=/opt/FriendlyARM/toolchain/11.3-aarch64/bin/:$PATH
cd uboot-rockchip/
./make.sh nanopi6

编译完成后会生成如下文件:

uboot.img rk3588_spl_loader_xx.yy.zzz.bin (打包时改名为MiniLoaderAll.bin)

安装u-boot:
请参考 #应用新编译的uboot与内核

11.4.4 应用新编译的uboot与内核

11.4.4.1 安装到目标板

由于rk3588的OS默认均采用GPT分区, 可以用dd命令将image文件烧写至image对应的分区,SD卡与eMMC的设备节点如下:

  • SD/TF Card设备节点为 /dev/mmcblk0
  • eMMC设备节点为 /dev/mmcblk2

下面将演示如何将内核更新到eMMC:
使用parted命令查看分区布局:

parted /dev/mmcblk2 print

得到如下输出:

Model: MMC A3A551 (sd/mmc)
Disk /dev/mmcblk2: 31.0GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
 
Number  Start   End     Size    File system  Name      Flags
 1      8389kB  12.6MB  4194kB               uboot
 2      12.6MB  16.8MB  4194kB               misc
 3      16.8MB  21.0MB  4194kB               dtbo
 4      21.0MB  37.7MB  16.8MB               resource
 5      37.7MB  79.7MB  41.9MB               kernel
 6      79.7MB  113MB   33.6MB               boot
 7      113MB   147MB   33.6MB               recovery
 8      147MB   31.0GB  30.9GB  ext4         rootfs

resource分区的序号为4, kernel分区的序号为5,对应的设备节点为/dev/mmcblk2p4和/dev/mmcblk2p5, dd命令如下:

dd if=resource.img of=/dev/mmcblk2p4 bs=1M
dd if=kernel.img of=/dev/mmcblk2p5 bs=1M

如果要更新uboot:

dd if=uboot.img of=/dev/mmcblk2p1 bs=1M

如果要更新内核驱动模块,将新驱动模块目录上传并替换以下目录下的文件即可:/lib/modules。

11.4.4.2 打包新的SD Image

sd-fuse 提供一些工具和脚本, 用于制作SD卡固件, 具体用途如下:

  • 制作分区镜像文件, 例如将rootfs目录打包成rootfs.img
  • 将多个分区镜像文件打包成可直接写SD卡的单一镜像文件
  • 简化内核和uboot的编译, 一键编译内核、第三方驱动, 并更新rootfs.img中的内核模块

请根据所用的内核版本点击对应的链接了解详细的使用方法:

内核版本 构建脚本
linux v6.1.y sd-fuse_rk3588
11.4.4.3 线刷
11.4.4.3.1 Linux系统

用以下命令让开发板进入loader模式:

sudo reboot loader

用 upgrade_tool_v2.17_for_linux 工具烧写uboot与内核, 命令如下所示:

sudo upgrade_tool di -k kernel.img
sudo upgrade_tool di -re resource.img
sudo upgrade_tool di -u uboot.img
sudo upgrade_tool RD

注:upgrade_tool是Rockchip提供的Linux下的命令行工具(Linux_Upgrade_Tool),需要使用v2以上版本。

11.5 使用脚本进行编译

11.5.1 下载工具与固件

以friendlycore-focal系统为例,从github克隆下载脚本, 并解压friendlycore-focal系统的映象文件,映象文件可以在网盘的"03_分区镜像文件"目录找到:

git clone https://github.com/friendlyarm/sd-fuse_rk3588.git --single-branch -b kernel-6.1.y
cd sd-fuse_rk3588
tar xvzf /path/to/netdrive/03_分区镜像文件/friendlycore-focal-arm64-images.tgz

11.5.2 编译内核

下载内核源代码并编译,编译完成后会自动更新 friendlycore-focal-arm64 目录下的相关映象文件,包括文件系统中的内核模块 (rootfs.img会被解包并重新打包):

git clone https://github.com/friendlyarm/kernel-rockchip --depth 1 -b nanopi6-v6.1.y kernel-rk3588
KERNEL_SRC=$PWD/kernel-rk3588 ./build-kernel.sh friendlycore-focal-arm64

11.5.3 编译内核头文件

git clone https://github.com/friendlyarm/kernel-rockchip --depth 1 -b nanopi6-v6.1.y kernel-rk3588
MK_HEADERS_DEB=1 BUILD_THIRD_PARTY_DRIVER=0 KERNEL_SRC=$PWD/kernel-rk3588 ./build-kernel.sh friendlycore-focal-arm64

11.5.4 编译uboot

下载uboot源代码并编译,编译完成后会自动更新 friendlycore-focal-arm64 目录下的相关映象文件:

git clone https://github.com/friendlyarm/uboot-rockchip --depth 1 -b nanopi6-v2017.09
UBOOT_SRC=$PWD/uboot-rockchip ./build-uboot.sh friendlycore-focal-arm64

11.5.5 生成新固件

将friendlycore-focal-arm64目录下的映象文件重新打包成sd卡固件:

./mk-sd-image.sh friendlycore-focal-arm64

命令完成后,固件位于out目录,可以用 dd 命令制作sd启动卡,举例说明:

dd if=out/rk3588-sd-friendlycore-focal-5.10-arm64-YYYYMMDD.img of=/dev/sdX bs=1M

11.6 Android系统编译

11.6.1 电脑的软硬件要求

  • 至少配置16G以上内存+300G磁盘空间,建议使用32G内存+大容量高速SSD的机器,不建议使用虚拟机;
  • 如遇到编译错误,可能是编译环境问题,推荐使用如下Docker容器进行编译:docker-cross-compiler-novnc

11.6.2 从网盘下载Android源代码

网盘地址:点击进入
网盘路径:07_源代码/rk35xx-android12-xxxxxxx-YYYYMMDD.tgz (YYYYMMDD表示打包的日期, xxxxxxx表示最后的commit-id)
使用如下命令解压并拉取更新:

tar xzf /path/to/netdisk/07_源代码/rk35xx-android12-xxxxxxx-YYYYMMDD.tgz
cd rk35xx-android12
git pull

11.6.3 编译Android Tablet版本(首次编译)

echo "ROCKCHIP_DEVICE_DIR := device/rockchip/rk3588/nanopi6" > .rockchip_device.mk
# export INSTALL_GAPPS_FOR_TESTING=yes  # 是否包含google apps
. setenv.sh
./build.sh -FMu

11.6.4 编译Android TV版本(首次编译)

echo "ROCKCHIP_DEVICE_DIR := device/rockchip/rk3588/nanopi6_box" > .rockchip_device.mk
# export INSTALL_GAPPS_FOR_TESTING=yes  # 是否包含google apps
. setenv.sh
./build.sh -FMu

11.6.5 二次编译

# export INSTALL_GAPPS_FOR_TESTING=yes  # 是否包含google apps
. setenv.sh
make
./build.sh -Mu

11.6.6 安装Android

Android编译完成后,image文件会存放在Android源代码目录的 rockdev/Image-aosp_nanopi3 子目录下。

11.6.6.1 USB线刷

用rockchip的工具刷入如下文件:rockdev/Image-aosp_nanopi3/update.img

11.6.6.2 SD卡烧写

参考以下步骤:
1) 将安装了 eflasher 系统的SD卡插入电脑;
2) 将 rockdev/Image-aosp_nanopi3 子目录下的文件更新到SD卡 FRIENDLYARM 分区里的android12或androidtv目录:

sudo cp -af parameter.txt config.cfg MiniLoaderAll.bin uboot.img \
    dtbo.img vbmeta.img boot.img recovery.img \
    misc.img pcba_small_misc.img pcba_whole_misc.img \
    baseparameter.img super.img /media/$USER/FriendlyARM/android12

3) 将SD卡插入NanoPi-R6S,重新烧写Andorid系统即可;

11.6.7 打包成新的SD Image

git clone https://github.com/friendlyarm/sd-fuse_rk3588.git
SDFUSE=$PWD/sd-fuse_rk3588
mkdir $SDFUSE/android12
 
cd /path/to/rk35xx-android12/rockdev/Image-aosp_nanopi3
cp -af parameter.txt config.cfg MiniLoaderAll.bin uboot.img \
    dtbo.img vbmeta.img boot.img recovery.img \
    misc.img pcba_small_misc.img pcba_whole_misc.img \
    baseparameter.img super.img $SDFUSE/android12
 
cd $SDFUSE/
./mk-sd-image.sh android12
 
tar xvzf /path/to/netdrive/03_Partition\ image\ files/emmc-flasher-images.tgz
./mk-emmc-image.sh android12

更多信息,请参考 #打包新的SD Image

12 板载资源的使用

12.1 使用VPU

请参考 VPU/zh

12.2 使用NPU

请参考 NPU/zh

13 备份文件系统并创建SD映像(将系统及应用复制到另一块开发板)

13.1 备份根文件系统

开发板上执行以下命令,备份整个文件系统(包括OS与数据):

sudo passwd root
su root
cd /
tar --warning=no-file-changed -cvpzf /rootfs.tar.gz \
    --exclude=/rootfs.tar.gz --exclude=/var/lib/docker/runtimes \
    --exclude=/etc/firstuser --exclude=/etc/friendlyelec-release \
    --exclude=/usr/local/first_boot_flag --one-file-system /

注:备份时,如果系统中有挂载目录,最后会出现一个错误提示信息,可以无视它,我们本来就是要忽略这些目录

13.2 从根文件系统制作一个可启动的SD卡

在Linux PC上执行以下shell命令,为了简洁起见,这里以debian-bullseye-desktop-arm64系统为例,但方法适用于所有Linux系统。

su root
git clone https://github.com/friendlyarm/sd-fuse_rk3588 --single-branch -b kernel-6.1.y
cd sd-fuse_rk3588
tar xvzf /path/to/netdrive/03_Partition\ image\ files/debian-bullseye-desktop-arm64-images.tgz
tar xvzf /path/to/netdrive/03_Partition\ image\ files/emmc-eflasher-images.tgz
scp pi@BOARDIP:/rootfs.tar.gz /rootfs.tar.gz
mkdir rootfs
tar xvzfp rootfs.tar.gz -C rootfs --numeric-owner --same-owner
./build-rootfs-img.sh rootfs debian-bullseye-desktop-arm64
./mk-sd-image.sh debian-bullseye-desktop-arm64
./mk-emmc-image.sh debian-bullseye-desktop-arm64 autostart=yes


14 Linux操作系统的常见操作

14.1 Linux系统下使用adb

14.1.1 buildroot系统下开启adb功能

开机自动开启

mv /etc/init.d/K50usbdevice.sh /etc/init.d/S50usbdevice.sh
reboot

临时开启

usbdevice-wrapper start

14.1.2 ubuntu和debian系统下开启adb功能

开机自动开启

sudo systemctl enable usbdevice
sudo reboot

临时开启

usbdevice-wrapper start

14.1.3 如何连接

使用adb时,与电脑相连接的端口与usb线刷的端口相同。

14.2 安装内核头文件

安装位于/opt/archives目录下的deb文件:

sudo dpkg -i /opt/archives/linux-headers-*.deb

在线下载并更新内核头文件:

wget http://112.124.9.243/archives/rk3588/linux-headers-$(uname -r)-latest.deb
sudo dpkg -i ./linux-headers-latest.deb

可以访问 http://112.124.9.243/archives/rk3588 查看有哪些内核deb包。

14.3 更新内核到最新版本

会更新内核到kernel和resource分区,同时更新内核模块:

wget http://112.124.9.243/archives/rk3588/linux-image-$(uname -r)-latest.deb
sudo dpkg -i ./linux-image-latest.deb
sudo reboot

14.4 设置内核启动参数 (仅支持eMMC)

将固件XXXX-eflasher-multiple-os-YYYYMMDD-30g.img.gz烧写到TF卡,将TF卡插入电脑,Windows电脑一般会自动识别TF卡的分区,该分区为exfat格式,Linux或Mac用户,请手动挂载TF卡的第一个分区,假设TF卡的设备名为/dev/sdX,挂载/dev/sdX1即可。

编辑TF卡对应OS目录下的info.conf配置文件,增加bootargs-ext参数,例如:

bootargs-ext=rockchipdrm.fb_max_sz=2048

如果要删除某个已经指定的参数,可以设置为空,例如删除userdata参数:

bootargs-ext=userdata=

编辑完成后,再用此TF卡烧写系统到eMMC即可。

要在制作量产卡的过程中设置好内核启动参数,可参考如下脚本 (以RK3588为例): https://github.com/friendlyarm/sd-fuse_rk3588/blob/kernel-6.1.y/test/test-custom-bootargs.sh

15 救砖办法

如何固件没有正确安装,导致开发板变砖,而且可能没有机会通过SD卡重新安装固件,这时,就需要进入Maskrom模式,通过擦除存储设备的办法救砖。

15.1 Windows用户

15.1.1 下载所需文件

  • 获取所需工具:访问这里,在 05_Tools 目录中找到 RKDevTool_v3.19_for_window.zip, DriverAssitant_v5.12.zip 下载到本地
  • 安装Rockchip USB驱动和RKDevTool: 解压 DriverAssitant_v5.12.zip 安装Rockchip USB驱动, 解压 RKDevTool_v3.19_for_window.zip 获得 Rockchip烧写工具 RKDevTool
  • 获取loader: 访问这里,进入CPU型号对应的tools目录,下载 MiniLoaderAll.bin

15.1.2 进入Maskrom模式擦除存储设备

  • 使用USB数据线将NanoPi-R6S与电脑相连接

Nanopir6s-usba-to-usba2.jpg

  • 在电脑上启动 RKDevTool
  • 将NanoPi-R6S断开电源,按住 MASK 键,连接电源,当看到界面下方显示 Found One MASKROM Device 时松开按键, 如下图所示:

Rkdevtool found one maskrom device.png

  • RKDevTool 界面上点击 Advanced Function 选项卡
  • Boot 编辑框中选择 MiniLoaderAll.bin,然后点击 Download 按钮
  • 选中 EMMC,点 Switch Storage,再点击 ErashAll 按钮擦除eMMC

Rkdevtool erase emmc.png

  • 至此,NanoPi-R6S恢复至初始状态,可以正常通过SD卡或eMMC引导系统了

15.2 Linux

15.2.1 下载所需文件

  • 获取所需工具:访问这里,在 05_Tools 目录中找到 upgrade_tool_v2.30_for_linux.tgz 下载到本地
  • 获取loader: 访问这里,进入CPU型号对应的tools目录,下载 MiniLoaderAll.bin

15.2.2 安装upgrade_tool工具

输入如下命令:

tar xzf upgrade_tool_v2.30_for_linux.tgz
cd upgrade_tool_v2.30_for_linux
sudo cp upgrade_tool /usr/local/sbin/
sudo chmod 755 /usr/local/sbin/upgrade_tool

15.2.3 进入Maskrom模式擦除存储设备

  • 使用USB数据线将NanoPi-R6S与电脑相连接
  • 将NanoPi-R6S断开电源,按住 MASK 键,连接电源,4秒后松开按键
  • 用如下命令检查连接:
upgrade_tool LD

显示类似 "DevNo=1 Vid=0x2207,Pid=0x350b,LocationID=13 Mode=Maskrom SerialNo=" 的内容表示已检测到设备。

  • 用如下命令擦除eMMC:
upgrade_tool EF MiniLoaderAll.bin
  • 至此,NanoPi-R6S恢复至初始状态,可以正常通过SD卡或eMMC引导系统了

15.3 Mac Users

我们测试发现Mac下的upgrade_tool_v2.25无法正常工作,因此建议使用Windows和Linux,除非获得了更新版本的upgrade_tool。

16 性能测试方法

16.1 测试2.5G网口速率

16.1.1 软件下载

Windows下可以到官网下载 iperf3测速工具: https://iperf.fr/iperf-download.php
Linux系统可以用以下命令安装: sudo apt-get install iperf3

16.1.2 开始测速

电脑需要配置2.5G或10G网卡, 用CAT6及以上规格的网线连接电脑到NanoPi-R6S的Lan网口,
电脑上打开浏览器, 进入FriendlyWrt后台页面, 进入 "服务“ -> “终端”, 登录后输入以下命令启用 iperf3 服务:

iperf3 -s -i 2

再打开电脑的终端, 输入以下命令开始测试RX速率:

iperf3 -c 192.168.2.1 -i 2 -t 30 -P4
输入以下命令开始测试TX速率:
iperf3 -c 192.168.2.1 -i 2 -t 30 -P4 -R

17 Link to Rockchip Resources

18 手册原理图等开发资料

19 更新日志

19.1 2024-10-16

19.1.1 新系统

  • 新增系统 Ubuntu 24.04 Destkop,使用Wayland,支持VPU/GPU加速,集成新版本Chromium
  • 新增系统 Proxmox VE

19.1.2 Linux内核

  • 内核默认开启KVM

19.1.3 Linux系统

  • 更新Buidroot系统到linux-5.10-gen-rkr8
  • 更新Debian bullseye系统到linux-5.10-gen-rkr8 (更新mpp/xserver/rkaiq/gsteamer-rockchip/rga2/libv4l-rkmpp等软件包)
  • 更新Ubuntu focal desktop系统中的rockchip硬件相关软件包 (同Debian bullseye)
  • 升级Chromium到最新版本(stable版本129),相比上一版提升50%,支持GPU加速和视频硬解加速,支持HiDPI分辨率
  • 更新FriendlyWrt到openwrt-23.05.05版本

19.1.4 其他

  • eflasher卡刷固件支持选择目标存储设备,可将Linux系统根分区安装至M.2硬盘或U盘 (但仍需eMMC/TF卡引导)
  • eflasher可通过配置文件定制内核启动参数
  • 更新ramdisk支持btrfs文件系统 (可使用sd-fuse_rk3568打包btrfs的固件)
  • 更新ramdisk提升文件系统修复的兼容性

19.2 2024-06-13

19.2.1 Android

  • 增加PWM风扇的支持
  • 增强了HDMI输出的兼容性
  • 增加支持Intel RealSense Depth Camera,通过配置内核选项CONFIG_USB_VIDEO_CLASS_REALSENSE来启用
  • 更新了Android视频解码的支持

19.3 2024-05-22

19.3.1 Linux Kernel

  • 修复hdmi输出4K 120p时显示不正常的问题
  • 修复双HDMI输出时可能只有一个有显示的问题
  • 修复rga3失败时导致系统异常的问题
  • 修改内核配置LSM, 增加apparmor,selinux

19.4 2024-05-14

19.4.1 Debian/Ubuntu Desktop

  • 修正alsa音频问题

19.5 2024-05-11

19.5.1 Linux内核

  • 同步原厂内核更新到 6.1.57
  • 增加NVMe hardware monitoring的支持,可通过/sys/class/hwmon节点查看NVMe设备的温度
  • 增加pwm风扇的支持,可通过卸载模块pwm_fan来停用它
  • 调整rknpu (v0.9.3) 为模块,方便更新或版本更换
  • 增强了HDMI输出的兼容性
  • 增加了一个简单驱动用于查询输入电源的电压 (节点:/sys/class/power_supply/simple-vin/voltage_now)
  • 增加支持Intel RealSense Depth Camera,通过配置内核选项CONFIG_USB_VIDEO_CLASS_REALSENSE来启用

19.5.2 Debian11 Desktop

  • 同步原厂debian版本到linux-5.10-gen-rkr7.1
  • 更新基础库libmali,mpp,rga2,npu,gstreamer等到新版本
  • 更新网页浏览器chromeium到新版本

19.5.3 Ubuntu Focal Desktop

  • 增加多语言的支持(含中文)
  • 修正开机后再连接显示屏有可能会无显示的问题
  • 更新基础库libmali,mpp,rga2,npu,gstreamer等到新版本

19.5.4 OpenMediaVault

  • 改进NVME硬盘的兼容性,相同ID的硬盘现在可以被识别

19.5.5 其他

19.6 2024-04-21

19.6.1 OpenMediaVault

  • 更新到 7.0.5-1
  • 更新到 Debian12

19.7 2024-03-15

19.7.1 Ubuntu focal desktop

  • 修正蓝牙无法使用的问题

19.7.2 Debian/Ubuntu/FriendlyCore

  • 更新uboot: 修复DVI模式可能无显示的问题
  • 更新6.1内核: 修复了rknpu无法调频和指定不同core的问题

19.8 2024-01-31

19.8.1 Debian/Ubuntu/FriendlyCore/Buildroot

  • 增加 adb 的支持

19.8.2 Android 12 & Android TV

  • 增加 wifidisplay (no hdcp) 的支持
  • 增加无线网卡rtl8822ce与rtl8812au的Wi-Fi direct特性支持

19.8.3 FriendlyWrt

  • rtl8822ce增加无线中断模式的支持

19.9 2024-01-24

19.9.1 Buildroot

  • 修复NanoPC-T6上的耳机插孔无声音问题

19.10 2024-01-17

19.10.1 Linux

  • 修改6.1内核中的NPU的中断异常和动态调频问题
  • 修复T6下Buildroot缺省音频输出设置没有得到正确设置的问题
  • 修复Buildroot下mpp解码问题

19.10.2 Android 12

  • 修正T6下连接了HDMI-In之后无法输出音频到耳机口的问题

19.11 2023-12-23

19.11.1 Android 12 & Android TV

  • 修复USB摄像头预览异常的问题
  • 修复PS5手柄无法使用的问题
  • 改进HDMI输出非16:9分辨率的支持
  • 更新SDK为 Rockchip Anroid12.1 rkr14.2

19.11.2 FriendlyWrt

  • 修复eMMC Tools对256G eMMC的兼容性问题

19.12 2023-12-01

19.12.1 FriendlyWrt

  • 更新到 OpenWrt 23.05.2

19.13 2023-11-13

19.13.1 Debian/Ubuntu/FriendlyCore

  • 更新npu驱动到0.9.2,修正已知问题

19.13.2 Android 12

19.14 2023-10-31

19.14.1 增加新系统

  • 增加NAS系统 OpenMediaVault,基于Debian11构建,使用6.1内核

19.14.2 Debian/Ubuntu/FriendlyCore

  • 更新到 6.1 内核

19.14.3 FriendlyWrt

  • 更新到 6.1 内核
  • 更新到 openwrt-23.05

19.15 2023-09-09

19.15.1 Android 12

19.16 2023-08-15

  • 增加Buildroot系统,rksdk版本为linux-5.10-gen-rkr5.1

19.17 2023-07-19

19.17.1 Ubuntu Jammy Desktop

  • 升级chromium为全新编译的114.0.5735.198版本
  • 更新libmali驱动到新版本g13p0-6

19.17.2 Debian/Ubuntu/Android

  • 修复RTL9210 enclosures速度下降的问题

19.17.3 Ubuntu Focal Desktop

  • 增加Ubuntu 20.04桌面系统,使用LXQT轻量化桌面

19.17.4 Ubuntu Jammy X11 Desktop

  • 新增X11的Ubuntu桌面系统,基于Xubuntu, 使用panfrost驱动实现UI加速,rkmpp/mpv等实现视频加速

19.18 2023-07-01

19.18.1 Debian11

  • 更新到Rockchip sdk版本linux-5.10-gen-rkr5, 升级gpu与xserver驱动等,提升UI与媒体播放性能
  • 内核升级到版本5.10.160
  • 修正已知问题

19.19 2023-06-25

19.19.1 Debian11

  • 更新软件包 mpp/ffmpeg/gsteamer-rockchip/libv4l-rkmpp/libdrm-cursor
  • 修正某些场景下鼠标光标会消失的问题
  • 修正T6耳机口没有声音的问题

19.19.2 Android TV & Android 12

  • 更新至rockchip sdk版本 android-12.1-mid-rkr14
  • 内核升级到以下版本 5.10.160
  • 增加MediaTek MT7921网卡的支持 (仅WiFi可用)

19.19.3 FriendlyCore

  • 修正T6耳机口没有声音的问题

19.20 2023-06-16

19.20.1 Debian11更新

  • 更新到Rockchip sdk版本linux-5.10-gen-rkr4.1
  • 改善了UI性能与视频播放性能
  • 桌面切换至XFCE
  • 增加 MediaTek MT7921 无线网卡的支持
  • 一些易用性方面的调整, 修正已知问题
  • WiKi增加HDMI-IN视频采集的使用说明

19.21 2023-06-09

19.21.1 FriendlyWrt更新

  • 增加 MediaTek MT7921 无线网卡的支持

19.21.2 Ubuntu22更新

  • 增加 MediaTek MT7921 无线网卡的支持
  • 增加 panfrost GPU驱动 (位于/opt/panfrost)

19.22 2023-06-06

19.22.1 Android TV & Android 12更新

  • 增加支持SD卡空间自动扩容,通过SD卡运行Android时,能使用完整的SD卡存储空间

19.23 2023-06-01

19.23.1 Android TV & Android 12更新

  • 修正红外遥控器与蓝牙遥控器上的Home键不响应的问题

19.24 2023-05-27

19.24.1 Ubuntu22更新

  • 修正多屏显示问题 (4K+4K+4K或8K+4K)

19.25 2023-05-26

19.25.1 Ubuntu22更新

  • 修正DP音频问题
  • 修正8K显示 (需连接HDMI TX0端口,使用HDMI2.1线缆)
  • 优化r8125网卡驱动的性能与稳定性

19.25.2 FriendlyWrt更新

  • 更新 v22.03 到新版本 openwrt-22.03.5
  • 更新 v21.02 到新版本 openwrt-21.02.7
  • 优化r8125网卡驱动的性能与稳定性

19.26 2023-05-21

19.26.1 Debian11更新

  • 更新到Rockchip sdk版本linux-5.10-gen-rkr4
  • 为了流畅性,将桌面切换至LXDE

19.27 2023-05-15

19.27.1 FriendlyCore Focal

  • 增加Qt 5.10支持

19.28 2023-05-05

19.28.1 Android更新

  • 增加USB蓝牙模块rtl8761bu, 以及RTL8822CE内置蓝牙的支持

19.29 2023-04-26

19.29.1 FriendlyWrt更新

  • 更新 v22.03 到新版本 openwrt-22.03.4
  • 更新 v21.02 到新版本 openwrt-21.02.6

19.30 2023-02-10

19.30.1 Android更新

  • android支持从sd卡直接启动
  • 修复在某些情况下hdmi无信号输出需拨插一次才能恢复的问题
  • 支持通过android界面启用usb a端口的adb功能

19.30.2 新增 Debian11

分为以下三个版本:

  • Debian11 Core: 仅命令行
  • Debian11 Minimal: LXDE桌面,精简版
  • Debian11 Desktop: LXDE桌面,完整版

19.31 2023-01-09

19.31.1 新增系统:

  • Android12: Android 12的Tablet界面版本
  • FrienclyCore: 轻量版的Linux, 基于Ubuntu Core 20.04, 没有桌面系统

19.31.2 Android更新说明:

  • Android系统(含TV和Tablet版本)下增加USB WiFi模块与M.2 WiFi模块的支持 (型号: RTL8822CE/RTL8812AU/MediaTek MT7662)
  • 更新SDK为Rockchip android-12.1-mid-rkr12

19.31.3 Ubuntu jammy更新说明:

  • 优化了开机服务

19.32 2022-12-13

19.32.1 Ubuntu jammy:

  • 修正无法在界面上配置WiFi的问题

19.33 2022-12-04

19.33.1 FriendlyWrt:

  • 修正存储空间某些情况下无法扩展的问题
  • 加强eMMC刷机工具的刷机稳定性

19.34 2022-11-17

19.34.1 FriendlyWrt:

  • 修正1G以太网口无法工作的问题

19.34.2 Ubuntu jammy desktop:

  • Chromium浏览器增加视频硬解码的支持
  • 增加硬件光标的支持

19.35 2022-10-25

首次发布