NanoPi R2S/zh
Contents
- 1 介绍
- 2 NanoPi R2S资源特性
- 3 接口布局和尺寸
- 4 快速入门
- 5 FriendlyWrt的使用
- 5.1 FriendlyWrt简介
- 5.2 首次开机的初始化
- 5.3 帐户与密码
- 5.4 连接网络
- 5.5 登录FriendlyWrt
- 5.6 建议的安全性设置
- 5.7 安全的关机操作
- 5.8 安装软件包
- 5.9 FriendlyWrt的一些常见问题
- 5.10 让FriendlyWrt重新生成网络设置
- 5.11 禁用IPv6
- 5.12 配置用户按键的功能
- 5.13 使用USB2LCD查看IP和温度
- 5.14 如何使用USB WiFi
- 5.15 玩转Docker应用
- 5.16 挂载外接存储设备
- 5.17 挂载smbfs共享资源
- 5.18 使用Aria2下载网络资源
- 5.19 在Windows10系统下使用WinSCP共享文件
- 5.20 设置Samba网络文件共享
- 5.21 更改Mac地址
- 5.22 如何超频
- 5.23 使用sdk编译软件包
- 6 FriendlyCore的使用
- 7 如何编译系统
- 8 资源链接
- 9 更新日志
- 9.1 2024-04-21
- 9.2 2024-01-31
- 9.3 2023-12-01
- 9.4 2023-10-31
- 9.5 2023-05-29
- 9.6 2023-05-26
- 9.7 2023-04-26
- 9.8 2023-02-10
- 9.9 2023-01-09
- 9.10 2022-12-04
- 9.11 2022-09-06
- 9.12 2022-08-03
- 9.13 2022-08-01
- 9.14 2022-07-27
- 9.15 2021-12-02
- 9.16 2021-10-29
- 9.17 2021-08-30
- 9.18 2021-03-05
- 9.19 2021-01-15
- 9.20 2020-09-04
- 9.21 2020-08-31
- 9.22 2020-07-10
- 9.23 2020-05-14
- 9.24 2020-02-28
- 9.25 2020-02-25
- 9.26 2020-02-20
1 介绍
- NanoPi R2S(以下简称R2S)是友善电子团队最新推出的一款实现满速率双千兆的、完全开源的Iot应用神器。
- NanoPi R2S 使用RK3328 CPU,有两个千兆网络,1G DDR4内存,友善电子团队为NanoPi R2S专门移植了OpenWrt系统,支持Docker CE, 完全开源,用于企业物联网二次开发,个人定制NAS,家庭物联网网关等。
2 NanoPi R2S资源特性
- CPU: Rockchip RK3328, Quad-core Cortex-A53
- DDR4 RAM: 1GB
- 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: 55.6 x 52mm
- 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 接口布局
- GPIO 24Pin管脚定义
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
- 更详细的信息请查看原理图:NanoPi_R2S_V1.0_1912-Schematic.pdf
- 详细PCB尺寸图:NanoPi R2S PCB的dxf文件
4 快速入门
4.1 准备工作
要开启你的NanoPi R2S新玩具,请先准备好以下硬件
- NanoPi R2S主板
- MicroSD卡/TF卡: Class10或以上的 8GB SDHC卡
- 一个MicroUSB接口的外接电源,要求输出为5V/2A(可使用同规格的手机充电器)
- 一台电脑,需要联网,建议使用Ubuntu 16.04 64位系统
4.2 经测试使用的TF卡
制作启动NanoPi R2S的TF卡时,建议Class10或以上的 8GB SDHC卡。以下是经友善电子测试验证过的高速TF卡:
- SanDisk闪迪 TF 8G Class10 microSD 高速 TF卡:
- SanDisk闪迪 TF 128G 至尊高速 Class10 microSDXC TF 128G 48MB/S:
- 川宇 8G手机内存卡 TF 8G 卡存储卡 C10 高速 Class10 microSD卡:
4.3 串口调试
用screen登入串口调试:
screen /dev/ttyUSB0 1500000 8N1
4.4 安装系统
4.4.1 下载系统固件
首先访问下载地址下载需要的固件文件(officail-ROMs目录)和烧写工具(tools目录):
使用以下固件: 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.4.2 烧写Linux系统
4.4.2.1 烧写到TF卡
- FriendlyCore / FriendlyWrt 等系统都属于 Linux 系统,所以它们的烧写方法是一样。
- 将 Linux 系统固件和烧写工具 win32diskimager.rar 分别解压,在 Windows 下插入TF卡(限4G及以上的卡),以管理员身份运行烧写工具 win32diskimager,在烧写工具 win32diskimager 的界面上,选择你的TF卡盘符,选择Linux 系统固件,点击 Write 按钮烧写。
- 当制作完成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管理页面:
- http://friendlywrt/
- http://192.168.2.1/
- http://[fd00:ab:cd::1]
以上是NanoPi-R2S的LAN口地址,WAN口会从你的主路由器动态获取IP地址。
5.6 建议的安全性设置
以下设置事项非常建议在将 NanoPi-R2S 接入互联网之前完成,因为在空密码或弱密码的状态下将NanoPi-R2S接入互联网,极易受到网络攻击。
- 设置一个安全的密码
进入 系统->管理权 界面设置密码。
- 禁止从wan访问ssh,更换端口
进入 系统->管理权->SSH访问,将接口限制为 lan,将端口设置为其他非常用端口,例如 23333。
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 -rf /etc/board.json /etc/config/system /etc/config/network /etc/config/wireless /etc/firstboot_* /root/.friendlyelec 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 -rf /etc/board.json /etc/config/system /etc/config/network /etc/config/wireless /etc/firstboot_* /root/.friendlyelec reboot
待NanoPi-R2S重启完毕,电脑也需要重新插拨一下网线(或重启网络端口)以便重新获得IP地址。
5.12 配置用户按键的功能
默认情况下, 用户按键配置成用于重启设备(软重启), 如下所示:
echo 'BTN_1 1 /sbin/reboot' >> /etc/triggerhappy/triggers.d/example.conf
你可以通过更改上面的配置文件改变它的行为.
5.13 使用USB2LCD查看IP和温度
将USB2LCD模块Plug到 NanoPi-R2S 的USB接口再开机,IP地址和CPU温度将显示在LCD上:
5.14 如何使用USB WiFi
5.14.1 如何在终端使用命令查询USB无线网卡型号
(1) 点击“服务>ttyd”进入FriendlyWrt的命令行界面
(2) 在开发板没有插入任何USB设备时输入以下命令以查看挂在USB主线上的现有设备
lsusb
lsusb
(4) 以“0BDA:C811”或“VID_0BDA&PID_C811”作为关键词在搜索引擎上搜索,搜索结果显示VID_0BDA&PID_C811的对应WIFI芯片为Realtek 8811CU
5.14.2 如何使用USB WiFi作为AP
(1) 把USB WiFi插入NanoPi-R2S的USB端口,推荐使用以下列表中支持AP模式的WiFi芯片模块:
注:符合以上WiFi芯片型号并符合以上VID&PID信息的USB无线网卡都可以使用,支持的型号不局限于某个品牌某个型号
(2) 插入USB WiFi后,点击上方菜单栏的“系统>重启”,点击“执行重启”按钮重启NanoPi-R2S
(3) 点击“网络>无线”进入配置无线WiFi界面
(4) 点击“编辑”按钮可编辑WiFi设置
(5) 在“接口配置”中可设置WiFi 模式和SSID等,然后点击到“无线安全”项可修改加密方式和WiFi密码,默认密码为password,设置完成后点击“保存”
(4) 配置完成后使用手机端或电脑端搜索对应SSID的WiFi即可
5.14.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 玩转Docker应用
5.15.1 Docker使用:安装JellyFin影音服务器
5.15.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地址;
(3) 点击上方菜单栏的“服务->ttyd”进入命令行界面;
创建一个目录用于存放 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.15.1.2 为JellyFin添加媒体库
(1) 在浏览器输入NanoPi-R2S的IP地址+端口8096 进入JellyFin界面:
如:192.168.1.126:8096
(4) 建议打开“显示高级设置”选项,内容类型等选项根据情况选择,勾选“将媒体图像保存到媒体所在文件夹”的话JellyFin会在网上搜索电影封面等信息下载到媒体文件夹中,设置完成后点击“确定”:
(5) 设置完成后回到“控制台”,可看到“Scan media library”任务,即JellyFin正在扫描媒体库并下载媒体信息,视网络情况而定可能需要几分钟至几十分钟:
5.15.1.3 在JellyFin下播放媒体
5.15.1.3.1 在电脑端播放媒体
在浏览器中输入NanoPi-R2S的IP地址+端口8096 进入JellyFin,点击媒体库中其中一部影片,即可开始播放:
5.15.1.3.2 在手机端播放媒体
(1) 从应用商店下载安装JellyFin APP,打开APP输入NanoPi-R2S的IP地址+端口8096登录进入:
(2) 点击媒体库可看到库中所有影片,点击其中一部影片可查看影片详情:
详细使用教程请参考: How to setup JellyFin media system on NanoPi-R2S/zh
5.15.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 挂载外接存储设备
(1) 把移动硬盘连接NanoPi-R2S作为外接存储设备,将移动硬盘插入NanoPi-R2S的USB接口,在FriendlyWrt中点击“系统->挂载点”进入挂载点设置界面:
(2) 在界面下方找到挂载点存储设备设置,点击“添加”按钮:
(3) 在弹出的对话框中UUID一栏选中刚刚接入的移动硬盘 /dev/sda1(实际情况请根据自身设备选择,如硬盘有多个分区可能会显示sda1/sda2……等):
(4) 在挂载点一栏中使用自定义,填入要挂载到的目标目录,这里以/jellyfin/videos 目录为例,勾选上方的“已启用”,然后点击“保存”:
(5) 设置完后点击“系统->重启”重启NanoPi-R2S使挂载点生效:
(6) 重启后再回到“挂载点”界面可看到“已挂载的文件系统”中显示刚刚挂载的移动硬盘信息,即设置成功(以后需要再新增或删减编辑挂载点都可以在下面的“挂载点”设置中操作):
注:每次操作后都需要重启后才能生效
5.17 挂载smbfs共享资源
mount -t cifs //192.168.1.10/shared /movie -o username=xxx,password=yyy,file_mode=0644
5.18 使用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.19 在Windows10系统下使用WinSCP共享文件
(1)下载安装WinSCP后打开,新建一个连接,主机名填写NanoPi-R2S的IP地址,然后填写NanoPi-R2S的用户名和密码,默认用户名:root,密码为空,文件协议改为“SCP”,点击“登录”
使用WinSCP可以远程访问NanoPi-R2S并传输文件。
WinSCP下载地址:https://winscp.net/eng/download.php
(2) 登录后可看到左边是本地的目录,右边是NanoPi-R2S的文件目录,打开需要共享文件的目录,这里以/jellyfin/videos目录为例,把媒件文件拖到右边即可开始传输,等待文件传输完成:
5.20 设置Samba网络文件共享
(1)在FriendlyWrt中点击上方菜单栏的“服务->网络共享”
(2) 点击底部的“添加”按钮:
(3) 填写你要共享目录,这里以设置共享 /jellyfin/videos 目录为例(如目录文件夹有大小写请注意区分),填写完成后点击“保存并应用”:
5.20.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.20.2 在OS X系统下访问Samba共享
右击 Finder 图标,选择“连接到服务器“,输入地址 smb://root@friendlywrt 后点击“连接“按钮,
在要求输入用户名与密码时,输入用户名为root, 密码为password,最后点击 mnt 即可进入 /mnt/的共享目录。
5.20.3 在Linux系统下访问Samba共享
在文件管理器的地址栏中输入 smb://root@friendlywrt 后敲回车,在提示输入密码时输入 password,最后点击 mnt 即可进入 /mnt/的共享目录。
5.21 更改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.22 如何超频
5.22.1 选择合格的电源
超频使用NanoPi-R2S需要保证有稳定可靠的电源供应,这包括标称真实,质量可靠的电源适配器,以及低阻抗的Type-C连接线(通俗讲就是铜芯足够粗,旧款为MicroUSB连接线)。
5.22.2 保证散热措施
超频会令NanoPi-R2S发热增加,必须使用金属外壳进行散热,或DIY使用风扇进行主动散热。
另外TF卡也建议使用能支持高温条件下正常工作的TF卡,可以选购行车记录仪专用的TF卡;
5.22.3 超频测试固件
该FriendlyWrt固件已解锁1.51G的CPU频率,可从以下地址下载:https://pan.baidu.com/s/1qGf9LtNFzxrcDsIKHpRMlg 密码: 80gs
进入ssh终端,输入以下命令:
cat /sys/devices/system/cpu/cpu[04]/cpufreq/scaling_max_freq
5.22.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.22.5 超频方法
5.22.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.22.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.23 使用sdk编译软件包
5.23.1 安装编译环境
在64位的Ubuntu (版本18.04+)下载并运行如下脚本: How to setup the Compiling Environment on Ubuntu bionic
5.23.2 在网盘上下载并解压sdk
sdk位于网盘的toolchain目录,解压后,需要先下载feeds软件包:
tar xvf ~/dvd/RK3328/toolchain/friendlywrt/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.23.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.23.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 配置网络
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
7 如何编译系统
7.1 编译 Openwrt/Friendlywrt
7.1.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
7.1.2 开始编译
./build.sh nanopi_r2.mk
会编译所有组件(包含u-boot, kernel 和 friendlywrt)并生成sd卡镜像文件。
7.2 单独编译u-boot,kernel或friendlywrt
8 资源链接
8.1 手册原理图等开发资料
- PCB尺寸图
- 芯片规格书
- RK3328芯片手册 Rockchip_RK3328_Datasheet.pdf
9 更新日志
9.1 2024-04-21
9.1.1 OpenMediaVault
- 更新到 7.0.5-1
- 更新到 Debian12
9.2 2024-01-31
9.2.1 Debian/Ubuntu/FriendlyCore/Buildroot
- 增加adb支持
9.3 2023-12-01
9.3.1 FriendlyWrt
- 更新到 6.1.63 内核
- 更新到 OpenWrt 23.05.2
9.4 2023-10-31
9.4.1 增加新系统
- 增加NAS系统 OpenMediaVault,基于Debian11构建,使用6.1内核
9.4.2 Debian Core/FriendlyCore-Lite-Core
- 更新到 6.1 内核
9.4.3 FriendlyWrt
- 更新到 6.1 内核
- 更新到 OpenWrt 23.05
9.5 2023-05-29
9.5.1 Debian11 Core
- 修正在 R2C Plus 上无法启动的问题
9.6 2023-05-26
9.6.1 FriendlyWrt更新
- 更新 v22.03 到新版本 openwrt-22.03.5
- 更新 v21.02 到新版本 openwrt-21.02.7
9.7 2023-04-26
9.7.1 FriendlyWrt更新
- 更新 v22.03 到新版本 openwrt-22.03.4
- 更新 v21.02 到新版本 openwrt-21.02.6
9.8 2023-02-10
- 新增 Debian11 Core系统
9.9 2023-01-09
9.9.1 FriendlyCore更新说明:
- 优化了开机服务
9.10 2022-12-04
9.10.1 FriendlyWrt更新
- 修正存储空间某些情况下无法扩展的问题
- 加强eMMC刷机工具的刷机稳定性
9.11 2022-09-06
9.11.1 FriendlyWrt更新说明:
- 增加Fullcone NAT支持 (默认开启)
- 版本升级到 22.03.0 正式版
9.12 2022-08-03
9.12.1 FriendlyWrt更新说明:
- 升级FriendlyWrt至最新版本22.03-rc6
9.13 2022-08-01
9.13.1 FriendlyWrt更新说明:
- 防火墙设置调整: 单网口的设备(使如NEO3)默认设置为允许WAN入站流量以方便网页配置,多网口的设备仍然保持默认拒绝WAN入站流量
9.14 2022-07-27
9.14.1 FriendlyWrt更新说明:
- 提供docker与非docker两个版本,除了docker外其他特性相同
- 提供测试版22.03-rc3, 可根据软件包的需求情况进行选择, 推荐使用稳定版本 21.02.3
- 改善了第三方软件包的安装兼容性问题
- 增加支持 “恢复出厂设置” 功能
- 增加网页刷机工具 eMMC-Tools, 支持安装FriendlyElec及部分第三方固件到eMMC, 除了raw-image还支持rockchip打包格式的固件
- 其他一些细节调整: 默认设置时区设置为上海、新增NAS分类菜单、去掉lcd2usb、改进安全性设置、调优sysctl参数、修正docker防火墙设置等
9.15 2021-12-02
9.15.1 FriendlyWrt更新说明:
- 改进了FriendlyWrt系统上软件包安装的兼容性
- 修正某些sd卡会导致reboot命令无响应的问题 (更新了5.10内核)
- 将NanoPi-NEO3上的USB排针默认配置成Host模式
9.16 2021-10-29
9.16.1 FriendlyWrt更新说明:
- FriendlyWrt更新至官方稳定版本 21.02.1,特性与19.07.5基本保持一致,支持docker、usb wifi等
9.17 2021-08-30
9.17.1 FriendlyWrt更新说明:
- FriendlyWrt内核更新到 5.10.60
- 新增一款高速5G USB WiFi的支持,网卡型号为 Comfast CF-WU782AC V2,芯片型号为 MediaTek MT7662
- 改进了USB WiFi的兼容性
- 改进了首次启动的稳定性 (之前的版本,首次启动时,某些情况下会出现bpfilter错误)
9.17.2 FriendlyCore更新说明:
- FriendlyCore内核更新到 5.10.60
9.18 2021-03-05
- FriendlyCore更新到20.04 (基于ubuntu focal)
9.19 2021-01-15
- FriendlyWrt内核更新到 5.10
- FriendlyWrt升级到19.07.5
9.20 2020-09-04
- 提高了usb3.0驱动的稳定性 (整合了rockchip官方更新),以及r8153网卡的稳定性
- 更新8153以太网卡的驱动为主线内核中的,版本为v1.11.11
- 启用R2S和NEO3的串口UART1
9.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(硬件随机数)驱动
9.22 2020-07-10
9.22.1 FriendlyWrt更新说明:
- 内核版本升至5.4.50
- 增加NanoPi-NEO3的支持
9.23 2020-05-14
9.23.1 FriendlyWrt更新说明:
- 内核升至5.4.40内核, 增强防火墙稳定性
- 增加usb wifi 的支持(rtl8812au)
- 加强了 overlayfs 的稳定性
9.24 2020-02-28
9.24.1 FriendlyWrt更新说明:
- 默认不启用 lan 口的dhcp ipv6
- 增加usb wifi 的支持(RTL8821CU)
9.25 2020-02-25
9.25.1 FriendlyWrt更新说明:
9.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
9.25.1.2 修复初版固件发现的一些issues,如下:
- 优化加载bpfilter 模块
- 设置 dist-feeds 指向最新版本, 解决opkg update 异常
- 缺省config中移除 modemmanager和mwan3 插件 (可自行添加)
- 优化 cpu 调频策略和开机速度
9.26 2020-02-20
9.26.1 FriendlyWrt
- 优化了 openssl 性能
- 增加pwm风扇的支持,支持温控 (平台: rk3328/rk3399)