NanoPi R2S

From FriendlyARM WiKi
Revision as of 03:13, 7 February 2020 by Yftan (Talk | contribs)

Jump to: navigation, search

查看中文

Contents

1 Introduction

Overview
Front
Back
Case
  • The NanoPi R2S(as "R2S") is an open source platform with dual-Gbps Ethernet ports designed and developed by FriendlyElec for IoT applications.
  • The NanoPi R2S uses the RK3328 SoC. It has two Gbps Ethernet ports and 1G DDR4 RAM. FriendlyElec ported an OpenWrt system for it. It works with Docker CE. It is a good platform for developing IoT applications, NAS applications, smart home gateways etc.

2 Hardware Spec

  • CPU: Rockchip RK3328, Quad-core Cortex-A53
  • DDR4 RAM: 1GB
  • Network:
    • Internal 10/100/1000M Ethernet Port x 1
    • USB3.0 converted 10/100/1000M Ethernet Port x 1
  • USB2.0 Host: Type-A x1
  • MicroSD Slot x 1
  • MicroUSB: power input and USB Slave
  • Debug Serial Port: 3.3V TTL, 3-pin 2.54mm pitch connector
  • LED: LED x 3
  • KEY: KEY x 1 programmable
  • PC Size: 55.6 x 52mm
  • Power Supply: DC 5V/2A
  • Temperature measuring range: 0℃ to 80℃
  • OS/Software: U-boot,Ubuntu-Core,OpenWrt


  • Network Transmission Rates
TX RX
WAN 941 Mbps 941 Mbps
LAN 941 Mbps 941 Mbps
Notes: 1. test utility: iperf
2. use indepedent IP address section and test with a PC in simplex communication mode

3 Diagram, Layout and Dimension

3.1 Layout

NanoPi R2S Layout

  • GPIO 24-Pin Spec
Pin# Name Linux gpio Pin# Name Linux gpio
1 SYS_3.3V 2 VDD_5V
3 I2C0_SDA / GPIO2_D1 89 4 VDD_5V
5 I2C0_SCL / GPIO2_D0 88 6 GND
7 GPIO2_A2 / IR_RX 66 8 UART1_TX / GPIO3_A4 100
9 GND 10 UART1_RX / GPIOG3_A6 102
For more details refer to:[http:0-1908.pdf NanoPi_R2S_V1.0_1912-Schematic.pdf]
Dimensional Diagram:NanoPi R2S PCB file in dxf format

4 Get Started

4.1 Essentials You Need

Before starting to use your NanoPi R2S get the following items ready

  • NanoPi R2S
  • MicroSD Card/TF Card: Class 10 or Above, minimum 8GB SDHC
  • MicroUSB 5V/2A power adapter
  • A host computer running Ubuntu 16.04 64-bit system

4.2 TF Cards We Tested

To make your NanoPi R2S boot and run fast we highly recommend you use a Class10 8GB SDHC TF card or a better one. The following cards are what we used in all our test cases presented here:

  • SanDisk TF 8G Class10 Micro/SD High Speed TF card:

SanDisk microSD 8G

  • SanDisk TF128G MicroSDXC TF 128G Class10 48MB/S:

SanDisk microSD 128G

  • 川宇 8G C10 High Speed class10 micro SD card:

chuanyu microSD 8G

4.3 Install OS

4.3.1 Download Image Files

Go to download link to download the image files under the officail-ROMs directory and the flashing utility under the tools directory:

使用以下固件:
rk3328-sd-friendlycore-bionic-5.4-arm64-YYYYMMDD.img.zip UbuntuCore 18.04系统固件,使用 5.4.12 内核
rk3328-sd-friendlywrt-5.4-YYYYMMDD.img.zip 基于 OpenWrt 构建的 FriendlyWrt 系统固件,使用 5.4.12 内核
烧写工具:
win32diskimager.rar Windows平台下的系统烧写工具,Linux平台下可以用dd命令烧写系统

4.3.2 烧写Linux系统

4.3.2.1 烧写到TF卡
  • FriendlyCore / FriendlyWrt 等系统都属于 Linux 系统,所以它们的烧写方法是一样。
  • 将 Linux 系统固件和烧写工具 win32diskimager.rar 分别解压,在 Windows 下插入TF卡(限4G及以上的卡),以管理员身份运行烧写工具 win32diskimager,在烧写工具 win32diskimager 的界面上,选择你的TF卡盘符,选择Linux 系统固件,点击 Write 按钮烧写。


成功烧写后,会看到如下界面:
win32disk-finish

  • 当制作完成TF卡后,拔出TF卡插入 BOOT 卡槽,上电启动(注意,这里需要5V/2A的供电),你可以看到STAT灯闪烁,这时你已经成功启动系统。;

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-R2S连接到互联网之前完成此设置。

5.4 连接网络

用网线连接NanoPi-R2S的WAN口到你的主路由器,默认将从你的主路由器通过DHCP自动获取IP地址,请登入你的路由器后台查看并记住NanoPi-R2S的IP地址。

5.5 登录FriendlyWrt

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

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

5.6 建议的安全性设置

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

  • 设置一个安全的密码

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

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

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

  • 只允许本地设备访问luci

编辑 /etc/config/uhttpd,将原来的0.0.0.0和[::]地址改为本地lan的地址,例如:

	# HTTP listen addresses, multiple allowed
	list listen_http	192.168.2.1:80
	list listen_http	[fd00:ab:cd::1]:80
 
	# HTTPS listen addresses, multiple allowed
	list listen_https	192.168.2.1:443
	list listen_https	[fd00:ab:cd::1]:443

完成后重启服务:

/etc/init.d/uhttpd restart

5.7 安全的关机操作

进入ttyd终端,输入poweroff命令敲回车,待led灯熄灭,再拔开电源。

5.8 安装软件包

5.8.1 更新可用软件包列表

安装软件前,先更新可用软件包列表:

$ opkg update

5.8.2 查看可安装的软件包

$ opkg list

5.8.3 查看已安装的软件

$ opkg list-installed

5.8.4 安装软件

$ opkg install <包各称>

5.8.5 删除软件

$ opkg remove <包各称>

5.9 FriendlyWrt的一些常见问题

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

5.10 让FriendlyWrt重新生成网络设置

此方法会触发 FriendlyWrt 重新识别硬件型号,并生成 /etc/config 下的网络配置,类拟但不完全等效于恢复出厂设置:

rm -f /etc/board.json /etc/config/system /etc/config/network /etc/config/wireless /etc/firstboot_*
reboot

/root/setup.sh 初始化脚本会在下次开机时再次被执行,所以你可以通过此途径来调试 /root/setup.sh 脚本.

5.11 禁用IPv6

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

sed -i -e "s/DISABLE_IPV6=0/DISABLE_IPV6=1/g" /root/setup.sh
rm -f /etc/board.json /etc/config/system /etc/config/network /etc/config/wireless /etc/firstboot_*
reboot

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

5.12 使用USB2LCD查看IP和温度

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

5.13 如何使用USB WiFi

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

(1) 点击“服务>ttyd”进入FriendlyWrt的命令行界面
R2s-wrt-jellyfin-002.jpg

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

lsusb

R2swrt+usbwifi-09.jpg
(3) 插入USB WiFi,再次输入以下命令

lsusb

可以看到多出一个设备,ID为0BDA:C811
R2swrt+usbwifi-10.jpg

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

5.13.2 如何使用USB WiFi作为AP

(1) 把USB WiFi插入NanoPi-R2S的USB端口,推荐使用以下列表中支持AP模式的WiFi芯片模块:
R2swrt+usbwifi-08.jpg
注:符合以上WiFi芯片型号并符合以上VID&PID信息的USB无线网卡都可以使用,支持的型号不局限于某个品牌某个型号

(2) 插入USB WiFi后,点击上方菜单栏的“系统>重启”,点击“执行重启”按钮重启NanoPi-R2S
R2swrt+usbwifi-01.jpg

R2swrt+usbwifi-02.jpg
(3) 点击“网络>无线”进入配置无线WiFi界面
R2swrt+usbwifi-03.jpg
(4) 点击“编辑”按钮可编辑WiFi设置
R2swrt+usbwifi-04.jpg
(5) 在“接口配置”中可设置WiFi 模式和SSID等,然后点击到“无线安全”项可修改加密方式和WiFi密码,默认密码为password,设置完成后点击“保存”
R2swrt+usbwifi-05.jpg

R2swrt+usbwifi-06.jpg
(4) 配置完成后使用手机端或电脑端搜索对应SSID的WiFi即可
R2swrt+usbwifi-07.png

5.14 玩转Docker应用

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

5.14.1.1 安装JellyFin

(1) 准备一个已烧好FriendlyWrt的NanoPi-R2S(或任意H3/RK3399 平台的友善开发板),接上电源和网线,网线接入NanoPi-R2S的WAN口;

(2) 在电脑端的浏览器输入 http://friendlywrt/ 或者开发板的IP地址即可进入FriendlyWrt管理页面,默认情况下,LAN口的IP地址为192.168.2.1,WAN会从你的主路由器动态获取IP地址;
R2s-001.jpg

(3) 点击上方菜单栏的“服务->ttyd”进入命令行界面;

R2s-wrt-jellyfin-002.jpg
R2s-wrt-jellyfin-003.jpg
(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访问到这些影片
R2s-wrt-jellyfin-004.jpg

(5) 等到可再次操作命令行界面时即完成安装,如下图:
R2s-wrt-jellyfin-005.jpg

5.14.1.2 为JellyFin添加媒体库

(1) 在浏览器输入NanoPi-R2S的IP地址+端口8096 进入JellyFin界面:
如:192.168.1.126:8096
R2s-wrt-jellyfin-015.jpg

(2) 点击右上角的“设置”图标进入控制台:
R2s-wrt-jellyfin-016.jpg

(3) 点击左边的“媒体库”,然后点击“添加媒体库”:
R2s-wrt-jellyfin-017.jpg

(4) 建议打开“显示高级设置”选项,内容类型等选项根据情况选择,勾选“将媒体图像保存到媒体所在文件夹”的话JellyFin会在网上搜索电影封面等信息下载到媒体文件夹中,设置完成后点击“确定”:
R2s-wrt-jellyfin-018.jpg

R2s-wrt-jellyfin-019.jpg

(5) 设置完成后回到“控制台”,可看到“Scan media library”任务,即JellyFin正在扫描媒体库并下载媒体信息,视网络情况而定可能需要几分钟至几十分钟:
R2s-wrt-jellyfin-020.jpg

(6) 扫描完成后返回主界面,可看到媒体库已添加成功:
R2s-wrt-jellyfin-021.jpg

5.14.1.3 在JellyFin下播放媒体
5.14.1.3.1 在电脑端播放媒体

在浏览器中输入NanoPi-R2S的IP地址+端口8096 进入JellyFin,点击媒体库中其中一部影片,即可开始播放:
R2s-wrt-jellyfin-022.jpg

5.14.1.3.2 在手机端播放媒体

(1) 从应用商店下载安装JellyFin APP,打开APP输入NanoPi-R2S的IP地址+端口8096登录进入:
R2s-wrt-jellyfin-035.jpg R2s-wrt-jellyfin-036.jpg

(2) 点击媒体库可看到库中所有影片,点击其中一部影片可查看影片详情:
R2s-wrt-jellyfin-037.jpg R2s-wrt-jellyfin-038.jpg R2s-wrt-jellyfin-039.jpg

(2) 点击播放按钮即可观看影片:
R2s-wrt-jellyfin-040.jpg

详细使用教程请参考: How to setup JellyFin media system on NanoPi-R2S/zh

5.14.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.15 挂载外接存储设备

(1) 把移动硬盘连接NanoPi-R2S作为外接存储设备,将移动硬盘插入NanoPi-R2S的USB接口,在FriendlyWrt中点击“系统->挂载点”进入挂载点设置界面:
R2s-wrt-jellyfin-006.jpg

(2) 在界面下方找到挂载点存储设备设置,点击“添加”按钮:
R2s-wrt-jellyfin-007.jpg

(3) 在弹出的对话框中UUID一栏选中刚刚接入的移动硬盘 /dev/sda1(实际情况请根据自身设备选择,如硬盘有多个分区可能会显示sda1/sda2……等):
R2s-wrt-jellyfin-008.jpg

(4) 在挂载点一栏中使用自定义,填入要挂载到的目标目录,这里以/jellyfin/videos 目录为例,勾选上方的“已启用”,然后点击“保存”:
R2s-wrt-jellyfin-009.jpg

R2s-wrt-jellyfin-010.jpg

(5) 设置完后点击“系统->重启”重启NanoPi-R2S使挂载点生效:
R2s-wrt-jellyfin-011.jpg

(6) 重启后再回到“挂载点”界面可看到“已挂载的文件系统”中显示刚刚挂载的移动硬盘信息,即设置成功(以后需要再新增或删减编辑挂载点都可以在下面的“挂载点”设置中操作):
注:每次操作后都需要重启后才能生效
R2s-wrt-jellyfin-012.jpg

5.16 挂载smbfs共享资源

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

5.17 使用Aria2下载网络资源

使用 Aria2 之前,需要先设置一个目录专门用于存放 Aria2 下载的文件,这个目录需要 让aria2 用户有读写权限,如果你是挂载外部的硬盘作为下载目录,硬盘建议格式化为 ext4 格式。
下面以 /jellyfin/videos/Disk/download 目录为例,点击上方菜单栏“服务->ttyd”, 输入以下命令创建目录,并设置目录拥有者为 aria2:

mkdir -p /jellyfin/videos/Disk/download
chown aria2:aria2 /jellyfin/videos/Disk/download

R2s-wrt-jellyfin-047.jpg
(2) 点击“服务->Aria2”
R2s-wrt-jellyfin-048.jpg
(3) 勾选“已启用”复选框,将下载目录设置为/jellyfin/videos/Disk/download,然后点击“保存并应用”按钮:
R2s-wrt-jellyfin-049.jpg
(4) 保存完成后,点击 “AriaNg”即可进入 Aria2 前端界面,点击“新建”按钮即可创建下载任务:
R2s-wrt-jellyfin-050.jpg

5.18 在Windows10系统下使用WinSCP共享文件

(1)下载安装WinSCP后打开,新建一个连接,主机名填写NanoPi-R2S的IP地址,然后填写NanoPi-R2S的用户名和密码,默认用户名:root,密码为空,文件协议改为“SCP”,点击“登录”
使用WinSCP可以远程访问NanoPi-R2S并传输文件。
WinSCP下载地址:https://winscp.net/eng/download.php
R2s-wrt-jellyfin-013.jpg
(2) 登录后可看到左边是本地的目录,右边是NanoPi-R2S的文件目录,打开需要共享文件的目录,这里以/jellyfin/videos目录为例,把媒件文件拖到右边即可开始传输,等待文件传输完成:
R2s-wrt-jellyfin-014.jpg

5.19 设置Samba网络文件共享

(1)在FriendlyWrt中点击上方菜单栏的“服务->网络共享”
R2s-wrt-jellyfin-041.jpg
(2) 点击底部的“添加”按钮:
R2s-wrt-jellyfin-042.jpg
(3) 填写你要共享目录,这里以设置共享 /jellyfin/videos 目录为例(如目录文件夹有大小写请注意区分),填写完成后点击“保存并应用”:
R2s-wrt-jellyfin-043.jpg

5.19.1 在Windows10系统下访问Samba共享

默认情况下,你的Windows10可能没有启动网络发现与共享,请先参考下面这二份文档,对你的Windows10做一些设置:
(1) 启用Samba v1/v2的访问:https://www.windowscentral.com/how-access-files-network-devices-using-smbv1-windows-10
R2s-wrt-jellyfin-044.jpg
(2) 启用网络发现:https://www.dummies.com/computers/operating-systems/windows-10/how-to-enable-network-discovery-and-configure-sharing-options-in-windows-10/
R2s-wrt-jellyfin-045.jpg
具体操作可以百度“Windows10 开启SMBv1” 与 "Win10启用网络发现"了解中文版的设置方法;
设置完成后,在资源管理器的地址栏输入 \\friendlywrt 即可访问共享目录, 用户名为root, 密码为password;
R2s-wrt-jellyfin-046.jpg

5.19.2 在OS X系统下访问Samba共享

右击 Finder 图标,选择“连接到服务器“,输入地址 smb://root@friendlywrt 后点击“连接“按钮,
在要求输入用户名与密码时,输入用户名为root, 密码为password,最后点击 mnt 即可进入 /mnt/的共享目录。

5.19.3 在Linux系统下访问Samba共享

在文件管理器的地址栏中输入 smb://root@friendlywrt 后敲回车,在提示输入密码时输入 password,最后点击 mnt 即可进入 /mnt/的共享目录。

5.20 更改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.21 如何超频

5.21.1 选择合格的电源

超频使用NanoPi-R2S需要保证有稳定可靠的电源供应,这包括标称真实,质量可靠的电源适配器,以及低阻抗的Type-C连接线(通俗讲就是铜芯足够粗,旧款为MicroUSB连接线)。

5.21.2 保证散热措施

超频会令NanoPi-R2S发热增加,必须使用金属外壳进行散热,或DIY使用风扇进行主动散热。
另外TF卡也建议使用能支持高温条件下正常工作的TF卡,可以选购行车记录仪专用的TF卡;

5.21.3 超频测试固件

该FriendlyWrt固件已解锁1.51G的CPU频率,可从以下地址下载:https://pan.baidu.com/s/1qGf9LtNFzxrcDsIKHpRMlg 密码: 80gs
进入ssh终端,输入以下命令:

cat /sys/devices/system/cpu/cpu[04]/cpufreq/scaling_max_freq

就可以看到NanoPi-R2S已经运行在 1.51G:
Nanopir2s-wrt-overclock.png

5.21.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.21.5 超频方法

5.21.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.21.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.22 使用sdk编译软件包

5.22.1 安装编译环境

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

5.22.2 在网盘上下载并解压sdk

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

tar xvf ~/dvd/RK3328/toolchain/friendlywrt-kernel-5.x.y/openwrt-sdk-19.07.5-rockchip-rk3328_gcc-7.5.0_musl.Linux-x86_64.tar.xz
# 路径太长会导致有些包编译出错,所以这里改一下目录名
mv openwrt-sdk-19.07.5-rockchip-rk3328_gcc-7.5.0_musl.Linux-x86_64 sdk
cd sdk
./scripts/feeds update -a
./scripts/feeds install -a


5.22.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_cortex-a53/base/example2_0.1-1_aarch64_cortex-a53.ipk
./bin/packages/aarch64_cortex-a53/base/example3_0.1-1_aarch64_cortex-a53.ipk
./bin/packages/aarch64_cortex-a53/base/example1_0.1-1_aarch64_cortex-a53.ipk

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

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

cd ./bin/packages/aarch64_cortex-a53/base/
scp example*.ipk root@192.168.2.1:/root/

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

cd /root/
opkg install example2_0.1-1_aarch64_cortex-a53.ipk
opkg install example3_0.1-1_aarch64_cortex-a53.ipk
opkg install example1_0.1-1_aarch64_cortex-a53.ipk

6 FriendlyCore的使用

6.1 FriendlyCore默认帐户

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

6.2 更新软件包

$ sudo apt-get update

6.3 配置网络

默认已将 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

还需要修改如下文件加入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

要配置另一个网口 eth1,可以在 /etc/network/interfaces.d/ 下新增一个 eth1 文件,配置格式可以参考 eth0。

7 资源链接

7.1 手册原理图等开发资料

8 更新日志

8.1 2021-01-15

  • FriendlyWrt内核更新到 5.10
  • FriendlyWrt升级到19.07.5

8.2 2020-09-04

  • 提高了usb3.0驱动的稳定性 (整合了rockchip官方更新),以及r8153网卡的稳定性
  • 更新8153以太网卡的驱动为主线内核中的,版本为v1.11.11
  • 启用R2S和NEO3的串口UART1

8.3 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(硬件随机数)驱动

8.4 2020-07-10

8.4.1 FriendlyWrt更新说明:

  • 内核版本升至5.4.50
  • 增加NanoPi-NEO3的支持

8.5 2020-05-14

8.5.1 FriendlyWrt更新说明:

  • 内核升至5.4.40内核, 增强防火墙稳定性
  • 增加usb wifi 的支持(rtl8812au)
  • 加强了 overlayfs 的稳定性

8.6 2020-02-28

8.6.1 FriendlyWrt更新说明:

  • 默认不启用 lan 口的dhcp ipv6
  • 增加usb wifi 的支持(RTL8821CU)

8.7 2020-02-25

8.7.1 FriendlyWrt更新说明:

8.7.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
8.7.1.2 修复初版固件发现的一些issues,如下:
  • 优化加载bpfilter 模块
  • 设置 dist-feeds 指向最新版本, 解决opkg update 异常

  • 缺省config中移除 modemmanager和mwan3 插件 (可自行添加)
  • 优化 cpu 调频策略和开机速度

8.8 2020-02-20

8.8.1 FriendlyWrt

  • 优化了 openssl 性能
  • 增加pwm风扇的支持,支持温控 (平台: rk3328/rk3399)