Difference between revisions of "NanoPi R2C Plus/zh"
(updated by API) |
(updated by API) |
||
(19 intermediate revisions by the same user not shown) | |||
Line 75: | Line 75: | ||
* MicroSD卡/TF卡: Class10或以上的 8GB SDHC卡 | * MicroSD卡/TF卡: Class10或以上的 8GB SDHC卡 | ||
* 一个USB Type-C接口的外接电源,建议使用传统5V/2A及以上的电源适配器(可使用同规格的手机充电器) | * 一个USB Type-C接口的外接电源,建议使用传统5V/2A及以上的电源适配器(可使用同规格的手机充电器) | ||
− | * 如果需要开发与编译,则需要一台可以联网的电脑,推荐安装Ubuntu | + | * 如果需要开发与编译,则需要一台可以联网的电脑,推荐安装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]] | ||
{{1500000SerialPortDebugSetting/zh}} | {{1500000SerialPortDebugSetting/zh}} | ||
===安装系统=== | ===安装系统=== | ||
+ | {{Downloads-RK3328/zh|NanoPi-R2C-Plus}} | ||
{{BurnLinuxToSD-Rockchip/zh|NanoPi-R2C-Plus}} | {{BurnLinuxToSD-Rockchip/zh|NanoPi-R2C-Plus}} | ||
{{BurnLinuxToEMMC-Rockchip/zh|NanoPi-R2C-Plus}} | {{BurnLinuxToEMMC-Rockchip/zh|NanoPi-R2C-Plus}} | ||
− | {{ | + | {{BurnLinuxToExtDrive-Rockchip/zh|NanoPi-R2C-Plus}} |
{{FriendlyWrt21/zh|NanoPi-R2C-Plus}} | {{FriendlyWrt21/zh|NanoPi-R2C-Plus}} | ||
{{OfficialUbuntuCore/zh|NanoPi-R2C-Plus}} | {{OfficialUbuntuCore/zh|NanoPi-R2C-Plus}} | ||
+ | {{FriendlyCoreRemoveQt/zh}} | ||
+ | {{OfficialDebianCore/zh|NanoPi-R2C-Plus}} | ||
==Buildroot Linux系统的使用== | ==Buildroot Linux系统的使用== | ||
{{RK3399 Buildroot Intro/zh|NanoPi-R2C-Plus}} | {{RK3399 Buildroot Intro/zh|NanoPi-R2C-Plus}} | ||
<br /> | <br /> | ||
关于Buildroot系统更详细的说明,请参考: [[Buildroot/zh|Buildroot]]<br /> | 关于Buildroot系统更详细的说明,请参考: [[Buildroot/zh|Buildroot]]<br /> | ||
+ | |||
==如何编译系统== | ==如何编译系统== | ||
− | + | {{Rockchip-DevEnv/zh|NanoPi-R2C-Plus}} | |
− | + | {{RK3328-BuildFromSource/zh|NanoPi-R2C-Plus}} | |
− | + | {{RK3328-HWAccess/zh|NanoPi-R2C-Plus}} | |
− | + | ||
− | + | {{RockchipMiscCustome/zh|RK3328}} | |
− | + | {{RockchipCommonLinuxTips/zh|rk3328}} | |
− | + | {{RockchipUnbrick/zh|NanoPi-R2C-Plus}} | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
==性能测试方法== | ==性能测试方法== | ||
===测试网口速率=== | ===测试网口速率=== | ||
Line 176: | Line 123: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==Link to Rockchip Resources== | ==Link to Rockchip Resources== | ||
+ | {{LinkToRockchipResources|NanoPi-R2C-Plus}} | ||
{{MoreOS/zh}} | {{MoreOS/zh}} | ||
==资源链接== | ==资源链接== |
Latest revision as of 11:03, 29 October 2024
Contents
- 1 介绍
- 2 NanoPi R2C Plus资源特性
- 3 接口布局和尺寸
- 4 快速入门
- 5 FriendlyWrt的使用
- 5.1 FriendlyWrt简介
- 5.2 首次开机的初始化
- 5.3 帐户与密码
- 5.4 登录FriendlyWrt
- 5.5 建议的安全性设置
- 5.6 更改LAN口的IP地址
- 5.7 安全的关机操作
- 5.8 恢复出厂设置
- 5.9 安装软件包
- 5.10 FriendlyWrt的一些常见问题
- 5.11 禁用IPv6
- 5.12 配置用户按键的功能
- 5.13 配置移远EC20(4G模块)拨号上网
- 5.14 使用USB2LCD查看IP和温度
- 5.15 如何使用USB WiFi
- 5.16 玩转Docker应用
- 5.17 挂载外接存储设备
- 5.18 挂载smbfs共享资源
- 5.19 使用Aria2下载网络资源
- 5.20 在Windows10系统下使用WinSCP共享文件
- 5.21 设置Samba网络文件共享
- 5.22 更改Mac地址
- 5.23 如何超频
- 5.24 使用sdk编译软件包
- 5.25 使用 GitHub Actions 编译 FriendlyWrt
- 6 FriendlyCore的使用
- 7 Debian Core的使用
- 8 Buildroot Linux系统的使用
- 9 如何编译系统
- 10 备份文件系统并创建SD映像(将系统及应用复制到另一块开发板)
- 11 Linux操作系统的常见操作
- 12 救砖办法
- 13 性能测试方法
- 14 Link to Rockchip Resources
- 15 更多OS
- 16 资源链接
- 17 更新日志
- 17.1 2024-04-21
- 17.2 2024-01-31
- 17.3 2023-12-01
- 17.4 2023-10-31
- 17.5 2023-05-29
- 17.6 2023-05-26
- 17.7 2023-04-26
- 17.8 2023-02-10
- 17.9 2023-01-09
- 17.10 2022-12-04
- 17.11 2022-09-06
- 17.12 2022-08-03
- 17.13 2022-08-01
- 17.14 2022-07-27
- 17.15 2021-12-02
- 17.16 2021-10-29
- 17.17 2021-08-30
- 17.18 2021-03-05
- 17.19 2021-01-15
- 17.20 2020-09-04
- 17.21 2020-08-31
- 17.22 2020-07-10
- 17.23 2020-05-14
- 17.24 2020-02-28
- 17.25 2020-02-25
- 17.26 2020-02-20
1 介绍
- NanoPi R2C Plus(以下简称R2C Plus)是友善电子团队最新推出的一款实现满速率双千兆的、完全开源的开发板。
- NanoPi R2C Plus使用RK3328 CPU,有两个千兆网络,1G DDR4内存和8GB闪存,友善电子团队为NanoPi R2C Plus专门移植了OpenWrt系统,支持Docker CE, 完全开源,用于企业物联网二次开发,个人定制NAS等。
2 NanoPi R2C Plus资源特性
- CPU: Rockchip RK3328, Quad-core Cortex-A53
- DDR4 RAM: 1GB
- Flash: 8GB eMMC 5.1 Flash
- Network:
- 10/100/1000M以太网口 x 1
- USB3.0转10/100/1000M以太网口 x 1
- USB2.0 Host: Type-A x1
- MicroSD Slot x 1
- MicroUSB: 供电和Slave功能
- Debug Serial Port: 3.3V TTL电平,3Pin 2.54mm间距排针
- LED: LED x 3
- KEY: KEY x 1 用户自定义功能
- PC Size: 57.5 x 54.3mm
- Power Supply: DC 5V/2A
- Temperature measuring range: 0℃ to 80℃
- OS/Software: U-boot,Ubuntu-Core,OpenWrt
- 实测网络速率
TX RX WAN 941 Mbps 941 Mbps LAN 941 Mbps 941 Mbps Notes: 1、测试工具:iperf
2、使用独立IP地址段和PC机单向通讯测试
3 接口布局和尺寸
3.1 接口布局
- 8 Pin 1.25mm间距GPIO管脚定义
Pin# Name Linux gpio 1 GND 2 GND 3 VDD_5V 4 VDD_5V 5 I2C0_SDA 6 I2C0_SCL 7 UART1_TX / GPIO3_A4 100 8 UART1_RX / GPIOG3_A6 102
- 更详细的信息请查看原理图:NanoPi_R2C_Plus_2109_SCH.PDF
- 详细PCB尺寸图:NanoPi_R2C_Plus_2109_DXF.zip
4 快速入门
4.1 准备工作
要开启你的NanoPi R2C Plus新玩具,请先准备好以下硬件
- NanoPi R2C Plus主板
- MicroSD卡/TF卡: Class10或以上的 8GB SDHC卡
- 一个USB Type-C接口的外接电源,建议使用传统5V/2A及以上的电源适配器(可使用同规格的手机充电器)
- 如果需要开发与编译,则需要一台可以联网的电脑,推荐安装Ubuntu 20.04 64位系统,并使用下面的脚本初始化开发环境, 也可以使用Docker容器:
4.2 经测试可选用的TF卡
请参考: TF Cards We Tested
4.3 调试串口参数配置
使用以下串口参数:
波特率 | 1500000 |
数据位 | 8 |
奇偶校验 | None |
停止位 | 1 |
流控制 | None |
4.4 安装系统
4.4.1 下载固件
4.4.1.1 官方固件
访问此处的下载地址下载固件文件 (位于网盘的"01_系统固件"目录):
下表列出了所有官方固件,文件名中的XYZ代表文件的不同用途,其含义如下:
- sd: 安装系统到TF卡时使用
- eflasher: 需要通过TF卡烧写系统到eMMC时使用
- usb: USB线刷时使用
图标 | 文件名 | 版本 | 描述 | 内核版本 |
---|---|---|---|---|
rk3328-XYZ-debian-bookworm-core-6.1-arm64-YYYYMMDD.img.gz | bookworm | Debian12 精简版固件,没有桌面, 仅命令行 | 6.1.y | |
rk3328-XYZ-friendlycore-focal-4.19-arm64-YYYYMMDD.img.gz | focal | 64位FriendlyCore系统固件 (内置Qt 5.10.0),基于Ubuntu core 20.04构建 | 4.19.y | |
rk3328-XYZ-ubuntu-noble-core-6.1-arm64-YYYYMMDD.img.zip | noble | 精简版64位Ubuntu系统固件,基于Ubuntu core 24.04构建 | 6.1.y | |
rk3328-XYZ-openmediavault-6.1-YYYYMMDD.img.gz | Shaitan | OpenMediaVault NAS系统,基于Debian12构建 | 6.1.y | |
rk3328-XYZ-buildroot-4.19-arm64-YYYYMMDD.img.gz | -- | Buildroot 固件,基于Rockchip Linux SDK,带Qt5-wayland图形界面 | 4.19.y | |
rk3328-XYZ-friendlywrt-21.02-YYYYMMDD.img.gz | 21.02 | FriendlyWrt, 基于OpenWrt 21.02 | 6.1.y | |
rk3328-XYZ-friendlywrt-21.02-docker-YYYYMMDD.img.gz | 21.02 | 预装了Docker的FriendlyWrt, 基于OpenWrt 21.02 | 6.1.y | |
rk3328-XYZ-friendlywrt-23.05-YYYYMMDD.img.gz | 23.05 | FriendlyWrt, 基于OpenWrt 23.05 | 6.1.y | |
rk3328-XYZ-friendlywrt-23.05-docker-YYYYMMDD.img.gz | 23.05 | 预装了Docker的FriendlyWrt, 基于OpenWrt 23.05 | 6.1.y | |
Other Image | ||||
Github Actions - FriendlyWrt云编译版本 | 21.02,23.05 | FriendlyWrt | 6.1.y | |
rk3328-XYZ-multiple-os-YYYYMMDD-25g.img.gz | - | 内含了多个操作系统的eMMC烧写文件,方便测试各个OS,此固件不会开机自动烧写,需要手动选择要烧写的OS |
4.4.1.2 工具软件(可选)
访问 此处的下载链接 下载所需要的工具软件 (位于网盘的"05_工具软件"目录).
文件名 | 描述 |
---|---|
win32diskimager.rar | 用于将映象文件写入SD卡 |
SD Card Formatter | 用于清空SD卡中的引导数据 |
RKDevTool_Release_v2.84.zip | 瑞芯微的刷机工具,USB线刷系统时需要使用此工具 |
4.4.2 通过TF卡运行系统
操作步骤如下:
- 准备一张8G或以上容量的TF卡;
- 访问此处的下载地址下载需要的固件(位于"01_系统固件/01_SD卡固件"目录);
- 下载烧写工具 win32diskimager (位于"05_工具软件"目录),或者选用你喜爱的工具;
- 解压 .gz 格式的压缩文件得到 .img 格式的镜像文件;
- 在Windows下以管理员身份运行 win32diskimager,在界面上选择你的SD卡盘符,选择解压后的固件文件,点击 Write 按钮烧写到SD卡;
- 将SD卡从电脑端弹出,插入NanoPi-R2C-Plus的microSD卡槽;
- 连接NanoPi-R2C-Plus的电源,系统会从TF卡启动, 某些型号可能需要按下Power键才会启动;
4.4.3 烧写系统到eMMC
4.4.3.1 方法1: 用TF启动卡进行自动烧写
此方法是通过SD卡启动一个小型的Linux系统, 借助名为EFlasher的工具来烧写固件到eMMC。
如果有连接HDMI显示器, 可通过图形界面观察烧写进度, 也可以通过板载LED灯来掌握烧写进度:
默认情况下烧写是上电自动开始的,所以要注意备份eMMC里的数据,如果不想自动,可以使用文件名含"multiple-os"字样的固件,在界面上手动选择要烧写的系统。
4.4.3.1.1 烧写官方固件到eMMC
详细操作步骤如下:
- 准备一张8G或以上容量的SDHC卡;
- 访问此处的下载地址下载需要的固件(位于"01_系统固件/02_SD卡刷机固件(SD-to-eMMC)"目录)和烧写工具win32diskimager(位于"05_工具软件"目录);
- 解压 .gz 格式的压缩文件得到 .img 格式的镜像文件;
- 在Windows下以管理员身份运行 win32diskimager,在界面上选择你的SD卡盘符,选择解压后的固件文件,点击 Write 按钮烧写到SD卡;
- 将SD卡从电脑端弹出,插入NanoPi-R2C-Plus的microSD卡槽;
- 连接NanoPi-R2C-Plus的电源,系统会从SD卡启动,并自动启动 EFlasher 烧写工具将系统安装到 eMMC;
- 烧写完成后,从NanoPi-R2C-Plus弹出SD卡,NanoPi-R2C-Plus会自动重启并从eMMC启动你刚刚烧写的系统;
4.4.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-R2C-Plus上上电启动, 会自动烧写你的固件, 通过板载 LED 灯来了解安装进度;
4.4.3.2 方法2: 在网页上烧写
使用烧写了FriendlyWrt固件的TF卡启动NanoPi-R2C-Plus, 登录FriendlyWrt页面, 在网页菜单上点击 "系统" -> "eMMC刷机助手" 进入eMMC刷机助手界面, 点击界面上的 "选择文件" 按钮, 选择你要刷写的文件 (官方固件选用文件名有"-sd-"的文件), 亦可选择第三方固件, 文件支持 .gz 格式的压缩文件, 或者以 .img 作为扩展名的raw格式。
选择文件后, 点击 “上传并烧写” 按钮, 开始上传并烧写, 如下图所示:
烧写完成后,请弹出SD卡,设备会自动重启, 并从eMMC引导新系统,可留意指示灯的状态, 在系统状态灯闪烁,同时网卡状态灯亮起时,表示系统启动完成, 如果eMMC安装的系统是 FriendlyWrt, 则可以通过点击“进入首页”进入FriendlyWrt管理页面。
官方固件需要选用文件名带 "-sd-" 字样的镜像文件, 例如: rk3NNN-sd-friendlywrt-21.02-YYYYMMDD.img.gz, 压缩文件只支持gz格式, 如果文件太大, 可以先压缩成gz格式再上传。
4.4.3.3 方法3: 通过USB烧写
4.4.3.3.1 USB烧写步骤1: 安装USB驱动和工具
从网盘的tools目录下载瑞芯微的USB驱动: DriverAssitant_v5.12.zip, 解压后安装;
在相同目录下, 下载瑞芯微开发工具: RKDevTool_Release_v2.84.zip, 解压后备用;
4.4.3.3.2 USB烧写步骤2: 将NanoPi-R2C-Plus与电脑连接, 并进入刷机模式
按住Mask按键不放, 用USB数据线, 将NanoPi-R2C-Plus与电脑进行连接, 保持按住Mask键, 状态灯亮起3秒后即可松开;
4.4.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.4.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-R2C-Plus上连接好存储设备,插入TF卡上电开机,接下来要在界面上操作,如果没有显示设备,可以使用VNC代替,请参考使用VNC操作eFlasher;
- 在eFlasher界面上,首先选择要安装的OS,然后选择引导安装的目的地 (通常选eMMC),以及选择系统安装的目的地(可以选eMMC,M.2硬盘,USB存储设备等),如下图所示:
- 没有eMMC时可使用TF卡作为引导,方法是将另一个TF卡通过USB读卡器插入USB端口,然后选择USB设备作为引导安装目的地,从而实现从TF卡引导,但系统存放在M.2或USB硬盘的目的;
- 烧写完成后,从NanoPi-R2C-Plus弹出SD卡,引导在eMMC的情况下,NanoPi-R2C-Plus会自动重启至你刚刚烧写的系统,如果引导安装在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-R2C-Plus连接到互联网之前完成此设置。
5.4 登录FriendlyWrt
将电脑连接到 NanoPi-R2C-Plus 的LAN口,如果电脑没有网口,可将无线AP的LAN口与NanoPi-R2C-Plus的LAN口相连接,电脑再通过WiFi连接到无线AP,在电脑浏览器上输入以下网址即可进入FriendlyWrt管理页面:
- http://friendlywrt/
- http://192.168.2.1/
- http://[fd00:ab:cd::1]
以上是NanoPi-R2C-Plus的LAN口地址,WAN口会从你的主路由器动态获取IP地址。
5.5 建议的安全性设置
以下设置事项非常建议在将 NanoPi-R2C-Plus 接入互联网之前完成,因为在空密码或弱密码的状态下将NanoPi-R2C-Plus接入互联网,极易受到网络攻击。
- 设置一个安全的密码
进入 系统->管理权 界面设置密码。
- 禁止从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-R2C-Plus工作在IPv6,电脑有可能无法连接互联网,建议关闭IPv6 (本WiKi后面有介绍方法),或将主路由切换到IPv6;
- 如果你有问题,或有更好的建议,欢迎发送邮件到 techsupport@friendlyarm.com;
5.11 禁用IPv6
要关掉 IPv6,可在ssh终端输入如下命令:
. /root/setup.sh disable_ipv6 reboot
待NanoPi-R2C-Plus重启完毕,电脑也需要重新插拨一下网线(或重启网络端口)以便重新获得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后台会进行拨号上网,拨号成功的状态如下所示:
- 连接到Lan的设备将可以连接互联网,如有WiFi模块,可进入“无线”界面开启无线AP功能,通过无线接入的设备亦可连接到互联网。
5.14 使用USB2LCD查看IP和温度
在终端输入如下命令设置lcd2usb服务开机自动启动:
. /root/setup.sh init_lcd2usb poweroff
将USB2LCD模块Plug到 NanoPi-R2C-Plus 的USB接口再开机,IP地址和CPU温度将显示在LCD上:
5.15 如何使用USB WiFi
5.15.1 如何在终端使用命令查询USB无线网卡型号
(1) 点击“服务>ttyd”进入FriendlyWrt的命令行界面
(2) 在开发板没有插入任何USB设备时输入以下命令以查看挂在USB主线上的现有设备
lsusb
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-R2C-Plus的USB端口,推荐使用以下列表中支持AP模式的WiFi芯片模块:
注:符合以上WiFi芯片型号并符合以上VID&PID信息的USB无线网卡都可以使用,支持的型号不局限于某个品牌某个型号
(2) 插入USB WiFi后,点击上方菜单栏的“系统>重启”,点击“执行重启”按钮重启NanoPi-R2C-Plus
(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影音服务器
5.16.1.1 安装JellyFin
(1) 准备一个已烧好FriendlyWrt的NanoPi-R2C-Plus(或任意H3/RK3399 平台的友善开发板),接上电源和网线,网线接入NanoPi-R2C-Plus的WAN口;
(2) 在电脑端的浏览器输入 http://friendlywrt/ 或者开发板的IP地址即可进入FriendlyWrt管理页面,默认情况下,LAN口的IP地址为192.168.2.1,WAN会从你的主路由器动态获取IP地址;
(3) 点击上方菜单栏的“服务->ttyd”进入命令行界面;
(4) 输入以下命令安装JellyFin:
创建一个目录用于存放 JellyFin 的配置:
mkdir -p /jellyfin/config
创建一个专门供JellyFin访问的目录,存放影片和视频:
mkdir -p /jellyfin/videos
然后安装JellyFin,请耐心等待安装过程:
docker run --restart=always -d -p 8096:8096 -v /jellyfin/config:/config -v /jellyfin/videos:/videos jellyfin/jellyfin:10.1.0-arm64 -name myjellyfin
主要参数说明:
8096:8096: 指定端口号为 8096,安装完后,可能通过 http://路由器IP:8096 访问jellyFin
/jellyfin/videos: 指定用于存放影片的目录,本地目录为 /jellyfin/videos,在jellyFin界面上可以通过路径 /videos访问到这些影片
5.16.1.2 为JellyFin添加媒体库
(1) 在浏览器输入NanoPi-R2C-Plus的IP地址+端口8096 进入JellyFin界面:
如:192.168.1.126:8096
(2) 点击右上角的“设置”图标进入控制台:
(3) 点击左边的“媒体库”,然后点击“添加媒体库”:
(4) 建议打开“显示高级设置”选项,内容类型等选项根据情况选择,勾选“将媒体图像保存到媒体所在文件夹”的话JellyFin会在网上搜索电影封面等信息下载到媒体文件夹中,设置完成后点击“确定”:
(5) 设置完成后回到“控制台”,可看到“Scan media library”任务,即JellyFin正在扫描媒体库并下载媒体信息,视网络情况而定可能需要几分钟至几十分钟:
(6) 扫描完成后返回主界面,可看到媒体库已添加成功:
5.16.1.3 在JellyFin下播放媒体
5.16.1.3.1 在电脑端播放媒体
在浏览器中输入NanoPi-R2C-Plus的IP地址+端口8096 进入JellyFin,点击媒体库中其中一部影片,即可开始播放:
5.16.1.3.2 在手机端播放媒体
(1) 从应用商店下载安装JellyFin APP,打开APP输入NanoPi-R2C-Plus的IP地址+端口8096登录进入:
(2) 点击媒体库可看到库中所有影片,点击其中一部影片可查看影片详情:
(3) 点击播放按钮即可观看影片:
详细使用教程请参考: 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.17 挂载外接存储设备
(1) 把移动硬盘连接NanoPi-R2C-Plus作为外接存储设备,将移动硬盘插入NanoPi-R2C-Plus的USB接口,在FriendlyWrt中点击“系统->挂载点”进入挂载点设置界面:
(2) 在界面下方找到挂载点存储设备设置,点击“添加”按钮:
(3) 在弹出的对话框中UUID一栏选中刚刚接入的移动硬盘 /dev/sda1(实际情况请根据自身设备选择,如硬盘有多个分区可能会显示sda1/sda2……等):
(4) 在挂载点一栏中使用自定义,填入要挂载到的目标目录,这里以/jellyfin/videos 目录为例,勾选上方的“已启用”,然后点击“保存”:
(5) 设置完后点击“系统->重启”重启NanoPi-R2C-Plus使挂载点生效:
(6) 重启后再回到“挂载点”界面可看到“已挂载的文件系统”中显示刚刚挂载的移动硬盘信息,即设置成功(以后需要再新增或删减编辑挂载点都可以在下面的“挂载点”设置中操作):
注:每次操作后都需要重启后才能生效
5.17.1 使用外接硬盘来扩展Docker可用空间
- 先停止docker服务:
/etc/init.d/dockerd stop
- 把原来的/opt目录改个名, 建一个空的/opt目录:
mv /opt /opt-old && mkdir /opt
- 参考章节“8 初始化NVME固态硬盘和USB移动硬盘”, 将你的硬盘格式化为ext4, 然后挂载至 /opt 目录:
- 输入命令 "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空间已扩容:
5.17.2 Docker的常见问题与解决办法
5.17.2.1 无法访问Docker提供的网络服务
解决办法:
- 进入 "防火墙" 的设置,把 "转发" 设置成 "接受";
- 关闭 ”软件流量分载“;
5.18 挂载smbfs共享资源
mount -t cifs //192.168.1.10/shared /movie -o username=xxx,password=yyy,file_mode=0644
5.19 使用Aria2下载网络资源
使用 Aria2 之前,需要先设置一个目录专门用于存放 Aria2 下载的文件,这个目录需要 让aria2 用户有读写权限,如果你是挂载外部的硬盘作为下载目录,硬盘建议格式化为 ext4 格式。
下面以 /jellyfin/videos/Disk/download 目录为例,点击上方菜单栏“服务->ttyd”, 输入以下命令创建目录,并设置目录拥有者为 aria2:
mkdir -p /jellyfin/videos/Disk/download chown aria2:aria2 /jellyfin/videos/Disk/download
(2) 点击“服务->Aria2”
(3) 勾选“已启用”复选框,将下载目录设置为/jellyfin/videos/Disk/download,然后点击“保存并应用”按钮:
(4) 保存完成后,点击 “AriaNg”即可进入 Aria2 前端界面,点击“新建”按钮即可创建下载任务:
5.20 在Windows10系统下使用WinSCP共享文件
(1)下载安装WinSCP后打开,新建一个连接,主机名填写NanoPi-R2C-Plus的IP地址,然后填写NanoPi-R2C-Plus的用户名和密码,默认用户名:root,密码为空,文件协议改为“SCP”,点击“登录”
使用WinSCP可以远程访问NanoPi-R2C-Plus并传输文件。
WinSCP下载地址:https://winscp.net/eng/download.php
(2) 登录后可看到左边是本地的目录,右边是NanoPi-R2C-Plus的文件目录,打开需要共享文件的目录,这里以/jellyfin/videos目录为例,把媒件文件拖到右边即可开始传输,等待文件传输完成:
5.21 设置Samba网络文件共享
(1)在FriendlyWrt中点击上方菜单栏的“服务->网络共享”
(2) 点击底部的“添加”按钮:
(3) 填写你要共享目录,这里以设置共享 /jellyfin/videos 目录为例(如目录文件夹有大小写请注意区分),填写完成后点击“保存并应用”:
5.21.1 在Windows10系统下访问Samba共享
默认情况下,你的Windows10可能没有启动网络发现与共享,请先参考下面这二份文档,对你的Windows10做一些设置:
(1) 启用Samba v1/v2的访问:https://www.windowscentral.com/how-access-files-network-devices-using-smbv1-windows-10
(2) 启用网络发现:https://www.dummies.com/computers/operating-systems/windows-10/how-to-enable-network-discovery-and-configure-sharing-options-in-windows-10/
具体操作可以百度“Windows10 开启SMBv1” 与 "Win10启用网络发现"了解中文版的设置方法;
设置完成后,在资源管理器的地址栏输入 \\friendlywrt 即可访问共享目录, 用户名为root, 密码为password;
5.21.2 在OS X系统下访问Samba共享
右击 Finder 图标,选择“连接到服务器“,输入地址 smb://root@friendlywrt 后点击“连接“按钮,
在要求输入用户名与密码时,输入用户名为root, 密码为password,最后点击 mnt 即可进入 /mnt/的共享目录。
5.21.3 在Linux系统下访问Samba共享
在文件管理器的地址栏中输入 smb://root@friendlywrt 后敲回车,在提示输入密码时输入 password,最后点击 mnt 即可进入 /mnt/的共享目录。
5.22 更改Mac地址
注1:这里以更改WAN口的MAC地址为例进行说明;
注2:MAC的格式是严格的,不能胡乱编造,格式不合规的地址会导致无法接入网络,建议参考其他设备的MAC地址,做少量修改作为新的MAC地址;
新建一个服务文件 /etc/init.d/custom-mac,内容如下,其中的MAC地址,请替换成你需要更改的MAC地址,eth0更改为你想要更换MAC地址的网口(例如R2S的WAN口对应eth0):
#!/bin/sh /etc/rc.common # Copyright (C) 2014 OpenWrt.org START=94 STOP=15 start() { ifconfig eth0 down ifconfig eth0 hw ether 80:1F:12:EF:BC:99 ifconfig eth0 up } stop() { echo "Stop." }
运行一下服务,测试一下MAC地址有没有按预期改变,除了用ifconfig命令查看,如果你的NanoPi的WAN口连接的是主路由器,推荐登录主路由器的后台去确认新的MAC地址是否已生效:
chmod 755 /etc/init.d/custom-mac /etc/init.d/custom-mac start ifconfig eth0 | grep HWaddr
如果一切正常,再执下以下命令,让该服务开机自动运行:
/etc/init.d/custom-mac enable
以后开机都会自动应用新的MAC地址了。
5.23 如何超频
5.23.1 选择合格的电源
超频使用NanoPi-R2C-Plus需要保证有稳定可靠的电源供应,这包括标称真实,质量可靠的电源适配器,以及低阻抗的Type-C连接线(通俗讲就是铜芯足够粗,旧款为MicroUSB连接线)。
5.23.2 保证散热措施
超频会令NanoPi-R2C-Plus发热增加,必须使用金属外壳进行散热,或DIY使用风扇进行主动散热。
另外TF卡也建议使用能支持高温条件下正常工作的TF卡,可以选购行车记录仪专用的TF卡;
5.23.3 超频测试固件
暂时没有NanoPi-R2C-Plus固件,请自行参考以下内容,修改内核重新进行编译。
进入ssh终端,输入以下命令:
cat /sys/devices/system/cpu/cpu[04]/cpufreq/scaling_max_freq
就可以看到NanoPi-R2C-Plus已经运行在 1.51G:
5.23.4 超频前后的性能测试
测试命令:
openssl speed -evp aes-256-gcm
超频前的SSL性能(CPU主频:1.29G):
The 'numbers' are in 1000s of bytes per second processed. type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes aes-256-gcm 68976.85k 189985.39k 342481.66k 432472.75k 466349.46k 466414.25k
超频后的SSL性能(CPU主频:1.51G):
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes aes-256-gcm 80187.19k 222333.58k 399549.27k 504449.02k 542182.06k 545855.70k
可以看到aes-256-gcm该项的性能提升了16%。
5.23.5 超频方法
5.23.5.1 修改内核解锁更高的CPU频率
在FriendlyWrt Repo源代码的目录下,用vim打开以下文件:
vim kernel/arch/arm64/boot/dts/rockchip/rk3328.dtsi
在文件中搜索文本 opp-1296000000,在opp-1296000000定义后面,增加CPU频率1.51G的定义,修改后的内容如下所示:
opp-1296000000 { opp-hz = /bits/ 64 <1296000000>; opp-microvolt = <1300000>; clock-latency-ns = <40000>; }; opp-1512000000 { opp-hz = /bits/ 64 <1512000000>; opp-microvolt = <1450000>; clock-latency-ns = <40000>; };
修改完成后,重新编译内核,并制作SD固件:
./build.sh kernel ./build.sh sd-img
5.23.5.2 验证CPU是否超频成功
执行以下命令让CPU产生负载:
dd if=/dev/zero of=/dev/null bs=1& dd if=/dev/zero of=/dev/null bs=1& dd if=/dev/zero of=/dev/null bs=1& dd if=/dev/zero of=/dev/null bs=1&
再用如下命令查看当前的CPU频率,可以看到频率已经是1.5G:
root@FriendlyWrt:~# cat /sys/devices/system/cpu/cpu[04]/cpufreq/cpuinfo_cur_freq 1512000
5.24 使用sdk编译软件包
5.24.1 安装编译环境
在64位的Ubuntu (版本18.04+)下载并运行如下脚本: How to setup the Compiling Environment on Ubuntu bionic
5.24.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.24.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.24.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.25 使用 GitHub Actions 编译 FriendlyWrt
项目地址: https://github.com/friendlyarm/Actions-FriendlyWrt
6 FriendlyCore的使用
6.1 FriendlyCore默认帐户
- 普通用户:
用户名: pi 密码: pi
- Root用户:
用户名: Root用户: 密码: fa
6.2 更新软件包
$ sudo apt-get update
6.3 配置网络
6.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
6.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
6.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
6.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。
6.4.1 重点支持的WIFI型号
6.4.1.1 M.2 WiFi Module
- RTL8822CE
6.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)
6.5 安装内核头文件
sudo dpkg -i /opt/linux-headers-*.deb
6.6 编译内核头文件安装包
请参考 https://github.com/friendlyarm/sd-fuse_rk3328/blob/master/test/test-build-kernel-header-deb.sh
6.7 配置状态灯
先确定一下系统是否已经存在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/lan_led/trigger echo eth1 > /sys/class/leds/lan_led/device_name echo 1 > /sys/class/leds/lan_led/link
6.8 删除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}
7 Debian Core的使用
7.1 帐户与密码
普通用户:
用户名: pi
密码: pi
Root用户:
默认没有设置root密码,可通过sudo passwd root命令配置root密码
7.2 查看IP地址
由于Debian Bullseye主机名默认为硬件型号, 所以可以使用ping命令来获得IP地址: ping NanoPi-R2C-Plus
Debian Bullseye使用network-manager管理网络, 网口默认配置成DHCP自动获取IP地址 (包括有多网口的设备)。
7.3 通过ssh登录Debian
使用以下命令:ssh pi@NanoPi-R2C-Plus
默认密码为pi
7.4 更新软件包
7.4.1 更换软件源为国内镜像源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.org sudo sed -i -e 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list sudo sed -i -e 's/security.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list sudo apt update
7.5 更改时区
7.5.1 检查当前时区
timedatectl
7.5.2 列出所有时区
timedatectl list-timezones
7.5.3 设置时区 (比如上海)
sudo timedatectl set-timezone Asia/Shanghai
7.6 更换开机LOGO
替换内核下面的两个文件,重新编译内核:
kernel/logo.bmp
kernel/logo_kernel.bmp
或者使用脚本来操作,如下所示:
- 下载脚本
git clone https://github.com/friendlyarm/sd-fuse_rk3328.git -b kernel-4.19 --single-branch cd sd-fuse_rk3328
- 编译内核并重新打包固件
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-bookworm-core-arm64 sudo ./mk-sd-image.sh debian-bookworm-core-arm64 sudo ./mk-emmc-image.sh debian-bookworm-core-arm64
7.6.1 恢复出厂设置
在终端上执行如下命令:
sudo firstboot && sudo reboot
7.7 在Debian系统上安装Docker
请参考此链接: How to Install Docker on Debian/zh
8 Buildroot Linux系统的使用
Buildroot是Linux平台上一个构建嵌入式Linux系统的框架,由Makefile脚本和Kconfig配置文件构成,旨在简化系统制作步骤,可实现一站式生成可烧写的系统固件,最终的固件包含boot-loader、kernel和rootfs,以及rootfs中的各种库和应用程序 (例如qt, gstreamer, busybox等)。
由 FriendlyELEC 提供的 Buildroot 项目是基于Rockchip原厂的 linux-sdk 制作, 项目使用 git 管理,与原厂的linux sdk更新保持同步;
- Rockchip原厂Buildroot项目: https://github.com/rockchip-linux/buildroot
- Buildroot官网: https://buildroot.org
关于Buildroot系统更详细的说明,请参考: Buildroot
9 如何编译系统
9.1 搭建编译环境
9.1.1 方法1: 使用Docker进行交叉编译
请参考 docker-cross-compiler-novnc,也可使用网盘 “04_SDK与编译器/docker” 目录下的本地镜像,参考README.md用docker load命令导入即可。
9.1.2 方法2: 本地搭建交叉编译环境
9.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 |
9.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)
9.2 编译 Openwrt/Friendlywrt
9.2.1 下载源代码
FriendlyWrt有两个版本, 请根据需要进行选择.
9.2.1.1 版本FriendlyWrt 21.02
mkdir friendlywrt21-rk3328 cd friendlywrt21-rk3328 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 rk3328.xml --repo-url=https://github.com/friendlyarm/repo --no-clone-bundle tools/repo sync -c --no-clone-bundle
9.2.1.2 版本FriendlyWrt 23.05
mkdir friendlywrt23-rk3328 cd friendlywrt23-rk3328 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 rk3328.xml --repo-url=https://github.com/friendlyarm/repo --no-clone-bundle tools/repo sync -c --no-clone-bundle
9.2.2 首次编译
下面的命令是编译不带docker的版本, 如需要编译带docker的版本, 请将rk3328.mk替换为rk3328-docker.mk:
./build.sh rk3328.mk
会编译所有组件(包含u-boot, kernel 和 friendlywrt)并生成sd卡镜像文件,再执行以下命令,可生成用于安装系统到emmc运行的镜像文件(eflahser固件):
./build.sh emmc-img
对项目进行过修改后, 需要重新打包sd卡镜像, 可执行如下命令:
./build.sh sd-img
9.2.3 二次编译
cd friendlywrt make menuconfig #改动FriendlyWrt的配置 rm -rf ./tmp make -j${nproc} cd ../ ./build.sh sd-img ./build.sh emmc-img
9.2.4 单独编译u-boot
./build.sh uboot
9.2.5 单独编译kernel
./build.sh kernel
9.2.6 单独编译friendlywrt
./build.sh friendlywrt
或者进入friendlywrt目录, 按标准openwrt的命令操作, 上面的命令出现错误时, 可尝试使用以下命令单线程编译:
cd friendlywrt make -j1 V=s
9.3 编译Buildroot
请参考: Buildroot
9.4 其他Linux系统编译
9.4.1 各个OS对应的内核与u-boot版本
操作系统 | 内核版本 | uboot版本 | 交叉编译器 | 分区类型 | 构建工具集 | 内核代码分支 | 内核配置 | uboot代码分支 | uboot配置 |
---|---|---|---|---|---|---|---|---|---|
buildroot | linux v4.19.y | u-boot v2017.09 |
11.3-aarch64 | GPT | sd-fuse | nanopi4-v4.19.y | nanopi4_linux_defconfig | nanopi4-v2017.09 | nanopi_r2_defconfig |
friendlycore-focal-arm64 | |||||||||
openmediavault-arm64 | linux v6.1.y | GPT | sd-fuse |
nanopi-r2-v6.1.y | nanopi-r2_linux_defconfig | ||||
ubuntu-noble-core-arm64 | GPT | ||||||||
debian-bookworm-core-arm64 | |||||||||
friendlywrt21 | nanopi-r2_linux_defconfig +friendlywrt.config | ||||||||
friendlywrt21-docker | |||||||||
friendlywrt23 | |||||||||
friendlywrt23-docker |
- 内核源代码仓库地址:https://github.com/friendlyarm/kernel-rockchip
- u-boot源代码仓库地址:https://github.com/friendlyarm/uboot-rockchip
- 交叉编译工具链存放在如下路径: /opt/FriendlyARM/toolchain/,使用前需导出到PATH环境变量,例如需要使用11.3-aarch64版本的编译器,使用如下命令:
export PATH=/opt/FriendlyARM/toolchain/11.3-aarch64/bin/:$PATH
- sd-fuse构建脚本可以用于快速编译kernel和uboot、重新打包sd卡固件与卡刷固件等
9.4.2 编译内核linux-v4.19.y
本节内容适用于如下OS:
buildroot | friendlycore-focal-arm64 |
下载源代码并编译:
git clone https://github.com/friendlyarm/kernel-rockchip --single-branch --depth 1 -b nanopi4-v4.19.y kernel-rockchip cd kernel-rockchip export PATH=/opt/FriendlyARM/toolchain/11.3-aarch64/bin/:$PATH touch .scmversion # 配置内核 # option1: 加载Linux系统配置 make ARCH=arm64 CROSS_COMPILE=aarch64-linux- nanopi4_linux_defconfig # option2: 加载FriendlyWrt系统配置 # make ARCH=arm64 CROSS_COMPILE=aarch64-linux- nanopi4_linux_defconfig friendlywrt.config # 启动配置界面 # make ARCH=arm64 CROSS_COMPILE=aarch64-linux- menuconfig # 编译内核 make ARCH=arm64 CROSS_COMPILE=aarch64-linux- nanopi4-images -j$(nproc) # 编译驱动模块 mkdir -p out-modules make ARCH=arm64 CROSS_COMPILE=aarch64-linux- INSTALL_MOD_PATH="$PWD/out-modules" modules -j$(nproc) make ARCH=arm64 CROSS_COMPILE=aarch64-linux- INSTALL_MOD_PATH="$PWD/out-modules" modules_install KERNEL_VER=$(make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 kernelrelease) rm -rf $PWD/out-modules/lib/modules/${KERNEL_VER}/kernel/drivers/gpu/arm/mali400/ [ ! -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 | 驱动模块位于out-modules目录 |
安装内核:
请参考 #应用新编译的uboot与内核
9.4.3 编译内核linux-v6.1.y
本节内容适用于如下OS:
friendlywrt21 | friendlywrt21-docker | friendlywrt23 | friendlywrt23-docker | ubuntu-noble-core-arm64 | openmediavault-arm64 | debian-bookworm-core-arm64 |
下载源代码并编译:
git clone https://github.com/friendlyarm/kernel-rockchip --single-branch --depth 1 -b nanopi-r2-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 nanopi-r2_linux_defconfig # option2: 加载FriendlyWrt系统配置 # make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 nanopi-r2_linux_defconfig friendlywrt.config # 启动配置界面 # make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 menuconfig # 编译内核 make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 -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:
wget https://raw.githubusercontent.com/friendlyarm/sd-fuse_rk3328/kernel-6.1.y/tools/mkkrnlimg && chmod 755 mkkrnlimg wget https://raw.githubusercontent.com/friendlyarm/sd-fuse_rk3328/kernel-6.1.y/tools/resource_tool && chmod 755 resource_tool wget https://raw.githubusercontent.com/friendlyarm/sd-fuse_rk3328/kernel-6.1.y/prebuilt/boot/logo.bmp wget https://raw.githubusercontent.com/friendlyarm/sd-fuse_rk3328/kernel-6.1.y/prebuilt/boot/logo_kernel.bmp ./mkkrnlimg arch/arm64/boot/Image kernel.img ./resource_tool --dtbname arch/arm64/boot/dts/rockchip/rk3328-nanopi*-rev*.dtb logo.bmp logo_kernel.bmp
完成后会得到如下文件:
kernel.img | resource.img | 驱动模块位于out-modules目录 |
安装内核:
请参考 #应用新编译的uboot与内核
9.4.4 编译u-boot v2017.09
本节内容适用于如下OS:
buildroot | friendlycore-focal-arm64 | friendlywrt21 | friendlywrt21-docker | friendlywrt23 | friendlywrt23-docker | ubuntu-noble-core-arm64 | openmediavault-arm64 | debian-bookworm-core-arm64 |
下载源代码并编译:
git clone https://github.com/friendlyarm/rkbin --single-branch --depth 1 -b friendlyelec git clone https://github.com/friendlyarm/uboot-rockchip --single-branch --depth 1 -b nanopi4-v2017.09 export PATH=/opt/FriendlyARM/toolchain/11.3-aarch64/bin/:$PATH cd uboot-rockchip/ ./make.sh nanopi_r2
编译完成后会生成如下文件:
uboot.img | trust.img | rk3328_loader_v1.16.250.bin (打包时改名为MiniLoaderAll.bin) |
安装u-boot:
请参考 #应用新编译的uboot与内核
9.4.5 应用新编译的uboot与内核
9.4.5.1 安装到目标板
本节内容适用于如下OS:
buildroot | friendlycore-focal-arm64 | friendlywrt21 | friendlywrt21-docker | friendlywrt23 | friendlywrt23-docker | ubuntu-noble-core-arm64 | openmediavault-arm64 | debian-bookworm-core-arm64 |
由于RK3328的OS默认均采用GPT分区, 可以用dd命令将image文件烧写至image对应的分区,SD卡与eMMC的设备节点如下:
- SD/TF Card设备节点为 /dev/mmcblk0
- eMMC设备节点为 /dev/mmcblk2
下面将演示如何将内核更新到eMMC:
使用parted命令查看分区布局:
parted /dev/mmcblk2 print
得到如下输出:
Model: MMC BJTD4R (sd/mmc) Disk /dev/mmcblk2: 31.3GB 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 trust 3 16.8MB 21.0MB 4194kB misc 4 21.0MB 25.2MB 4194kB dtbo 5 25.2MB 41.9MB 16.8MB resource 6 41.9MB 83.9MB 41.9MB kernel 7 83.9MB 134MB 50.3MB boot 8 134MB 2500MB 2366MB ext4 rootfs 9 2500MB 31.3GB 28.8GB ext4 userdata
resource分区的序号为5, kernel分区的序号为6,对应的设备节点为/dev/mmcblk2p5和/dev/mmcblk2p6, dd命令如下:
dd if=resource.img of=/dev/mmcblk2p5 bs=1M dd if=kernel.img of=/dev/mmcblk2p6 bs=1M
如果要更新uboot:
dd if=uboot.img of=/dev/mmcblk2p1 bs=1M
如果要更新内核驱动模块,将新驱动模块目录上传并替换以下目录下的文件即可:/lib/modules。
9.4.5.2 打包新的SD Image
sd-fuse 提供一些工具和脚本, 用于制作SD卡固件, 具体用途如下:
- 制作分区镜像文件, 例如将rootfs目录打包成rootfs.img
- 将多个分区镜像文件打包成可直接写SD卡的单一镜像文件
- 简化内核和uboot的编译, 一键编译内核、第三方驱动, 并更新rootfs.img中的内核模块
请根据所用的内核版本点击对应的链接了解详细的使用方法:
内核版本 | 构建脚本 |
---|---|
linux v4.19.y | sd-fuse_rk3328/kernel-4.19 |
linux v6.1.y | sd-fuse_rk3328/kernel-6.1.y |
9.4.5.3 线刷
9.4.5.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以上版本。
9.5 使用脚本进行编译
9.5.1 下载工具与固件
以friendlycore-focal系统为例,从github克隆下载脚本, 并解压friendlycore-focal系统的映象文件,映象文件可以在网盘的"03_分区镜像文件"目录找到:
git clone https://github.com/friendlyarm/sd-fuse_rk3328.git -b kernel-4.19 cd sd-fuse_rk3328 tar xvzf /path/to/netdrive/03_分区镜像文件/friendlycore-focal-arm64-images.tgz
9.5.2 编译内核
下载内核源代码并编译,编译完成后会自动更新 friendlycore-focal-arm64 目录下的相关映象文件,包括文件系统中的内核模块 (rootfs.img会被解包并重新打包):
git clone https://github.com/friendlyarm/kernel-rockchip --depth 1 -b nanopi4-v4.19.y kernel-rk3328 KERNEL_SRC=$PWD/kernel-rk3328 ./build-kernel.sh friendlycore-focal-arm64
9.5.3 编译内核头文件
git clone https://github.com/friendlyarm/kernel-rockchip --depth 1 -b nanopi4-v4.19.y kernel-rk3328 MK_HEADERS_DEB=1 BUILD_THIRD_PARTY_DRIVER=0 KERNEL_SRC=$PWD/kernel-rk3328 ./build-kernel.sh friendlycore-focal-arm64
9.5.4 编译uboot
下载uboot源代码并编译,编译完成后会自动更新 friendlycore-focal-arm64 目录下的相关映象文件:
git clone https://github.com/friendlyarm/uboot-rockchip --depth 1 -b nanopi4-v2017.09 UBOOT_SRC=$PWD/uboot-rockchip ./build-uboot.sh friendlycore-focal-arm64
9.5.5 生成新固件
将friendlycore-focal-arm64目录下的映象文件重新打包成sd卡固件:
./mk-sd-image.sh friendlycore-focal-arm64
命令完成后,固件位于out目录,可以用 dd 命令制作sd启动卡,举例说明:
dd if=out/rk3328-sd-friendlycore-focal-4.19-arm64-YYYYMMDD.img of=/dev/sdX bs=1M
10 备份文件系统并创建SD映像(将系统及应用复制到另一块开发板)
10.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 /
注:备份时,如果系统中有挂载目录,最后会出现一个错误提示信息,可以无视它,我们本来就是要忽略这些目录
10.2 从根文件系统制作一个可启动的SD卡
在Linux PC上执行以下shell命令,为了简洁起见,这里以friendlycore-ite-focal-arm64系统为例,但方法适用于所有Linux系统。
su root git clone https://github.com/friendlyarm/sd-fuse_rk3328 --single-branch -b kernel-6.1.y cd sd-fuse_rk3328 tar xvzf /path/to/netdrive/03_Partition\ image\ files/ubuntu-noble-core-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 ubuntu-noble-core-arm64 ./mk-sd-image.sh ubuntu-noble-core-arm64 ./mk-emmc-image.sh ubuntu-noble-core-arm64 autostart=yes
11 Linux操作系统的常见操作
11.1 Linux系统下使用adb
11.1.1 buildroot系统下开启adb功能
开机自动开启
mv /etc/init.d/K50usbdevice.sh /etc/init.d/S50usbdevice.sh reboot
临时开启
usbdevice-wrapper start
11.1.2 ubuntu和debian系统下开启adb功能
开机自动开启
sudo systemctl enable usbdevice sudo reboot
临时开启
usbdevice-wrapper start
11.1.3 如何连接
使用adb时,与电脑相连接的端口与usb线刷的端口相同。
11.2 安装内核头文件
安装位于/opt/archives目录下的deb文件:
sudo dpkg -i /opt/archives/linux-headers-*.deb
在线下载并更新内核头文件:
wget http://112.124.9.243/archives/rk3328/linux-headers-$(uname -r)-latest.deb
sudo dpkg -i ./linux-headers-latest.deb
可以访问 http://112.124.9.243/archives/rk3328 查看有哪些内核deb包。
11.3 设置内核启动参数 (仅支持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
12 救砖办法
如何固件没有正确安装,导致开发板变砖,而且可能没有机会通过SD卡重新安装固件,这时,就需要进入Maskrom模式,通过擦除存储设备的办法救砖。
12.1 Windows用户
12.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
12.1.2 进入Maskrom模式擦除存储设备
- 在电脑上启动 RKDevTool
- 按住Mask按键不放, 用USB数据线, 将NanoPi-R2C-Plus与电脑进行连接, 保持按住Mask键, 状态灯亮起3秒后即可松开
- 正常情况下,界面下方会显示 Found One MASKROM Device, 如下图所示:
- 在 RKDevTool 界面上点击 Advanced Function 选项卡
- 在 Boot 编辑框中选择 MiniLoaderAll.bin,然后点击 Download 按钮
- 选中 EMMC,点 Switch Storage,再点击 ErashAll 按钮擦除eMMC
- (可选): 如果你的NanoPi-R2C-Plus上有SPI Nor Flash,选中 SPINOR, 点 Switch Storage,再点击 ErashAll 按钮擦除SPI Nor Flash
- 至此,NanoPi-R2C-Plus恢复至初始状态,可以正常通过SD卡或eMMC引导系统了
12.2 Linux
12.2.1 下载所需文件
- 获取所需工具:访问这里,在 05_Tools 目录中找到 upgrade_tool_v2.30_for_linux.tgz 下载到本地
- 获取loader: 访问这里,进入CPU型号对应的tools目录,下载 MiniLoaderAll.bin
12.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
12.2.3 进入Maskrom模式擦除存储设备
- 使用USB数据线将NanoPi-R2C-Plus与电脑相连接
- 将NanoPi-R2C-Plus断开电源,按住 MASK 键,连接电源,4秒后松开按键
- 用如下命令检查连接:
upgrade_tool LD
显示类似 "DevNo=1 Vid=0x2207,Pid=0x350b,LocationID=13 Mode=Maskrom SerialNo=" 的内容表示已检测到设备。
- 用如下命令擦除eMMC:
upgrade_tool EF MiniLoaderAll.bin
- (可选): 如果你的NanoPi-R2C-Plus上有SPI Nor Flash,用如下命令擦除SPI Nor Flash:
upgrade_tool DB MiniLoaderAll.bin upgrade_tool SSD #选5, SPINOR dd if=/dev/zero of=zero.img bs=1M count=16 # 针对16M NOR FLASH upgrade_tool WL 0 zero.img
- 至此,NanoPi-R2C-Plus恢复至初始状态,可以正常通过SD卡或eMMC引导系统了
12.3 Mac Users
我们测试发现Mac下的upgrade_tool_v2.25无法正常工作,因此建议使用Windows和Linux,除非获得了更新版本的upgrade_tool。
13 性能测试方法
13.1 测试网口速率
13.1.1 软件下载
Windows下可以到官网下载 iperf3测速工具: https://iperf.fr/iperf-download.php
Linux系统可以用以下命令安装: sudo apt-get install iperf3
13.1.2 开始测速
用网线连接电脑到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
14 Link to Rockchip Resources
15 更多OS
15.1 DietPi
DietPi is a highly optimised & minimal Debian-based Linux distribution. DietPi is extremely lightweight at its core, and also extremely easy to install and use.
Setting up a single board computer (SBC) or even a computer, for both regular or server use, takes time and skill. DietPi provides an easy way to install and run favourite software you choose.
For more information, please visit this link https://dietpi.com/docs/.
DietPi supports many of the NanoPi board series, you may download the image file from here:
16 资源链接
16.1 手册原理图等开发资料
- PCB尺寸图
- 芯片规格书
- RK3328芯片手册 Rockchip_RK3328_Datasheet.pdf
17 更新日志
17.1 2024-04-21
17.1.1 OpenMediaVault
- 更新到 7.0.5-1
- 更新到 Debian12
17.2 2024-01-31
17.2.1 Debian/Ubuntu/FriendlyCore/Buildroot
- 增加adb支持
17.3 2023-12-01
17.3.1 FriendlyWrt
- 更新到 6.1.63 内核
- 更新到 OpenWrt 23.05.2
17.4 2023-10-31
17.4.1 增加新系统
- 增加NAS系统 OpenMediaVault,基于Debian11构建,使用6.1内核
17.4.2 Debian Core/FriendlyCore-Lite-Core
- 更新到 6.1 内核
17.4.3 FriendlyWrt
- 更新到 6.1 内核
- 更新到 OpenWrt 23.05
17.5 2023-05-29
17.5.1 Debian11 Core
- 修正在 R2C Plus 上无法启动的问题
17.6 2023-05-26
17.6.1 FriendlyWrt更新
- 更新 v22.03 到新版本 openwrt-22.03.5
- 更新 v21.02 到新版本 openwrt-21.02.7
17.7 2023-04-26
17.7.1 FriendlyWrt更新
- 更新 v22.03 到新版本 openwrt-22.03.4
- 更新 v21.02 到新版本 openwrt-21.02.6
17.8 2023-02-10
- 新增 Debian11 Core系统
17.9 2023-01-09
17.9.1 FriendlyCore更新说明:
- 优化了开机服务
17.10 2022-12-04
17.10.1 FriendlyWrt更新
- 修正存储空间某些情况下无法扩展的问题
- 加强eMMC刷机工具的刷机稳定性
17.11 2022-09-06
17.11.1 FriendlyWrt更新说明:
- 增加Fullcone NAT支持 (默认开启)
- 版本升级到 22.03.0 正式版
17.12 2022-08-03
17.12.1 FriendlyWrt更新说明:
- 升级FriendlyWrt至最新版本22.03-rc6
17.13 2022-08-01
17.13.1 FriendlyWrt更新说明:
- 防火墙设置调整: 单网口的设备(使如NEO3)默认设置为允许WAN入站流量以方便网页配置,多网口的设备仍然保持默认拒绝WAN入站流量
17.14 2022-07-27
17.14.1 FriendlyWrt更新说明:
- 提供docker与非docker两个版本,除了docker外其他特性相同
- 提供测试版22.03-rc3, 可根据软件包的需求情况进行选择, 推荐使用稳定版本 21.02.3
- 改善了第三方软件包的安装兼容性问题
- 增加支持 “恢复出厂设置” 功能
- 增加网页刷机工具 eMMC-Tools, 支持安装FriendlyElec及部分第三方固件到eMMC, 除了raw-image还支持rockchip打包格式的固件
- 其他一些细节调整: 默认设置时区设置为上海、新增NAS分类菜单、去掉lcd2usb、改进安全性设置、调优sysctl参数、修正docker防火墙设置等
17.15 2021-12-02
17.15.1 FriendlyWrt更新说明:
- 改进了FriendlyWrt系统上软件包安装的兼容性
- 修正某些sd卡会导致reboot命令无响应的问题 (更新了5.10内核)
- 将NanoPi-NEO3上的USB排针默认配置成Host模式
17.16 2021-10-29
17.16.1 FriendlyWrt更新说明:
- FriendlyWrt更新至官方稳定版本 21.02.1,特性与19.07.5基本保持一致,支持docker、usb wifi等
17.17 2021-08-30
17.17.1 FriendlyWrt更新说明:
- FriendlyWrt内核更新到 5.10.60
- 新增一款高速5G USB WiFi的支持,网卡型号为 Comfast CF-WU782AC V2,芯片型号为 MediaTek MT7662
- 改进了USB WiFi的兼容性
- 改进了首次启动的稳定性 (之前的版本,首次启动时,某些情况下会出现bpfilter错误)
17.17.2 FriendlyCore更新说明:
- FriendlyCore内核更新到 5.10.60
17.18 2021-03-05
- FriendlyCore更新到20.04 (基于ubuntu focal)
17.19 2021-01-15
- FriendlyWrt内核更新到 5.10
- FriendlyWrt升级到19.07.5
17.20 2020-09-04
- 提高了usb3.0驱动的稳定性 (整合了rockchip官方更新),以及r8153网卡的稳定性
- 更新8153以太网卡的驱动为主线内核中的,版本为v1.11.11
- 启用R2S和NEO3的串口UART1
17.21 2020-08-31
- 内核更新到 5.4.61
- 采用Realtek官网下载的驱动 r8152-2.13.0 (https://www.realtek.com/en/downloads)
- 改进usb网卡驱动,WLAN<->LAN桥接速度可达 700/500 Mbits/sec
- 增加rockhip rng(硬件随机数)驱动
17.22 2020-07-10
17.22.1 FriendlyWrt更新说明:
- 内核版本升至5.4.50
- 增加NanoPi-NEO3的支持
17.23 2020-05-14
17.23.1 FriendlyWrt更新说明:
- 内核升至5.4.40内核, 增强防火墙稳定性
- 增加usb wifi 的支持(rtl8812au)
- 加强了 overlayfs 的稳定性
17.24 2020-02-28
17.24.1 FriendlyWrt更新说明:
- 默认不启用 lan 口的dhcp ipv6
- 增加usb wifi 的支持(RTL8821CU)
17.25 2020-02-25
17.25.1 FriendlyWrt更新说明:
17.25.1.1 更新代码到 openwrt v19.07.1 版本,请使用 master-v19.07.1 分支的代码,下载方法:
mkdir friendlywrt-rk3328 cd friendlywrt-rk3328 repo init -u https://github.com/friendlyarm/friendlywrt_manifests -b master-v19.07.1 -m rk3328.xml --repo-url=https://github.com/friendlyarm/repo --no-clone-bundle repo sync -c --no-clone-bundle
17.25.1.2 修复初版固件发现的一些issues,如下:
- 优化加载bpfilter 模块
- 设置 dist-feeds 指向最新版本, 解决opkg update 异常
- 缺省config中移除 modemmanager和mwan3 插件 (可自行添加)
- 优化 cpu 调频策略和开机速度
17.26 2020-02-20
17.26.1 FriendlyWrt
- 优化了 openssl 性能
- 增加pwm风扇的支持,支持温控 (平台: rk3328/rk3399)