Difference between revisions of "APITestPage"

From FriendlyELEC WiKi
Jump to: navigation, search
(updated by API)
(updated by API)
Line 1: Line 1:
[[NanoPi M4B|English]]
+
[[NanoPi R2S|English]]
 +
 
 
==介绍==
 
==介绍==
[[File:NanoPi M4B-01B.jpg|thumb|Overview]]
+
[[File:NanoPi R2S-1.jpg|thumb|frameless|250x250px|概览]]
[[File:NanoPi M4B-A01.jpg|thumb|Front]]
+
[[File:NanoPi R2S_TOP.jpg|thumb|frameless|250x250px|正面]]
[[File:NanoPi M4B-B01.jpg|thumb|Back]]
+
[[File:NanoPi R2S-BOT.jpg|thumb|frameless|250x250px|背面]]
*NanoPi M4B是基于RK3399 SoC设计的一款接口尺寸与树莓派3兼容的嵌入式ARM计算机。它的尺寸只有85x56mm,接口丰富, 布局紧凑, 非常适合二次开发, 并方便嵌入到最终产品中去。
+
[[File:NanoPi R1S-case1.jpg|thumb|frameless|250x250px|外壳]]
*NanoPi M4B板载2.4G & 5G双频WiFi蓝牙模组, 除了带有2个USB3.0 A型主口, 2个USB2.0 A型主口 1个千兆以太网口, 1个HDMI 2.0 A型口, 1个3.5mm耳机输出, 还带有丰富的扩展接口,包括40Pin树莓派兼容口, 双摄像头接口MIPI-CSI, PCIe x2,红外输入接口, eMMC模块接口, RTC等接口。
+
* NanoPi R2S(以下简称R2S)是友善电子团队最新推出的一款实现满速率双千兆的、完全开源的Iot应用神器。
*NanoPi M4B 标配双通道2GB DDR3, 可使用TF卡启动运行系统,并可外扩eMMC模块启动运行系统。
+
* NanoPi R2S 使用RK3328 CPU,有两个千兆网络,1G DDR4内存,友善电子团队为NanoPi R2S专门移植了OpenWrt系统,支持Docker CE, 完全开源,用于企业物联网二次开发,个人定制NAS,家庭物联网网关等。
*NanoPi M4B支持运行Ubuntu Desktop 18.04 (64-bit), Lubuntu 16.04(32-bit), Ubuntu Core 18.04(64-bit), Android 8等多种系统, 它们均带有GPU和VPU加速处理,依托于强大的计算性能和丰富接口,它非常适用于基于机器视觉和人工智能的门禁系统,深度计算,自主机器人,工业控制,工业相机,广告机,游戏机,区块链等方面的应用。
+
  
==硬件特性==
+
==NanoPi R2S资源特性==
* 主控芯片: Rockchip RK3399
+
* CPU: Rockchip RK3328, Quad-core Cortex-A53
** CPU: big.LITTLE大小核架构,双Cortex-A72大核(up to 2.0GHz)+四Cortex-A53小核结构(up to 1.5GHz)
+
* DDR4 RAM: 1GB         
** GPU: Mali-T864 GPU,支持OpenGL ES1.1/2.0/3.0/3.1, OpenCL, DX11, 支持AFBC(帧缓冲压缩)
+
* Network:
** VPU: 支持4K VP9 and 4K 10bits H265/H264 视频解码,高达60fps, 双VOP显示等视频编解码功能
+
**10/100/1000M以太网口 x 1
* 电源管理单元: RK808-D PMIC, 搭配独立DC/DC, 支持动态调压, 软件关机, 按键开机, RTC唤醒, 睡眠唤醒等功能
+
**USB3.0转10/100/1000M以太网口 x 1<br />
* 内存: 双通道2GB DDR3
+
* USB2.0 Host: Type-A x1
* Flash: 支持扩展eMMC模块
+
* MicroSD Slot x 1
* 有线网络: 原生千兆以太网
+
* MicroUSB: 供电和Slave功能
* Wi-Fi/蓝牙: 802.11a/b/g/n/ac, Bluetooth 5.0 双频Wi-Fi蓝牙模块, 单天线
+
* Debug Serial Port: 3.3V TTL电平,3Pin 2.54mm间距排针
* 视频输入:  1个或2个4线MIPI-CSI, 双ISP像素处理能力高达13MPix/s,支持双路摄像头数据同时输入
+
* LED: LED x 3
* 视频输出
+
* KEY: KEY x 1 用户自定义功能
** HDMI: HDMI 2.0a, 支持4K@60Hz显示,支持HDCP 1.4/2.2
+
* PC Size: 55.6 x 52mm
** LCD Interface: 一个4线MIPI-DSI
+
* Power Supply: DC 5V/2A
* Audio Out: 3.5mm 双通道耳机接口, 或者通过HDMI输出
+
* Temperature measuring range: 0℃ to 80℃
* Audio In: 3.5mm耳机接口集成麦克风输入
+
* OS/Software: U-boot,Ubuntu-Core,OpenWrt <br />
* USB: 2个独立带宽USB 3.0 Host,2个独立带宽USB 2.0 Host
+
<br />
* microSD Slot x 1
+
* '''实测网络速率'''
* 40Pin GPIO 扩展接口:  
+
::{| class="wikitable"  
** 2 X 3V/1.8V I2C, up to 1 x 3V UART, 1 X 3V SPI, 1 x SPDIF_TX, up to 8 x 3V GPIOs
+
** 1 x 1.8V 8通道 I2S
+
* 24Pin 扩展接口:  
+
** PCIe x2
+
** PWM x1, PowerKey, 红外输入
+
* 按键:一个电源按键(PowerKey),一个系统恢复按键(RecoveryKey)
+
* 调试串口: 4 Pin 2.54mm 调试串口, 3V电平, 波特率为1500000
+
* LED: 1 x power LED and 1 x GPIO Controled LED
+
* RTC电池座子: 2 Pin 1.27/1.25mm RTC备份电池接口
+
* 供电电源: DC 5V/3A
+
* PCB: 8 Layer, 85 mm x 56 mm
+
* 环境工作温度: -20℃ to 70℃
+
 
+
==接口布局和尺寸==
+
===接口布局===
+
[[File:NanoPi_M4B_Layout.jpg |thumb|600px|NanoPi M4B Layout]]
+
[[File:NanoPi_M4B_eMMC.jpg |thumb|600px|NanoPi M4B eMMC]]
+
* '''40-Pin GPIO1 引脚定义'''
+
::{| class="wikitable"
+
 
|-
 
|-
|'''Pin#''' || '''Assignment'''          ||'''Pin#'''  || '''Assignment'''   
+
! width=100px style="background: Light grey; color: black" |  
 +
! width=150px style="background: Light grey; color: black" align="center" | TX
 +
! width=150px style="background: Light grey; color: black" align="center" | RX         
 
|-
 
|-
|1    || VCC3V3_SYS ||2    || VDD_5V
+
|WAN      ||align="center" | 941 Mbps ||align="center" | 941 Mbps 
 
|-
 
|-
|3    || I2C2_SDA(3V)      ||4    || VDD_5V
+
|LAN      ||align="center" | 941 Mbps  ||align="center" | 941 Mbps 
 
|-  
 
|-  
|5    || I2C2_SCL(3V)      ||6    || GND
+
|Notes:   ||colspan="2" | 1、测试工具:iperf <br />  2、使用独立IP地址段和PC机单向通讯测试
|-
+
|7    || GPIO1_A0(3V)      ||8    || GPIO4_C1/I2C3_SCL(3V)
+
|-
+
|9    || GND          ||10    || GPIO4_C0/I2C3_SDA(3V)
+
|-
+
|11   || GPIO1_A1(3V)      ||12    || GPIO1_C2(3V)
+
|-
+
|13  || GPIO1_A3(3V)      ||14    || GND
+
|-
+
|15  || GPIO1_A4(3V)      ||16    || GPIO1_C6(3V)
+
|-
+
|17  || VCC3V3_SYS ||18    || GPIO1_C7(3V)
+
|-
+
|19  || SPI1_TXD/UART4_TX(3V)  ||20    || GND
+
|-
+
|21  || SPI1_RXD/UART4_RX(3V)    ||22    || GPIO1_D0(3V)
+
|-
+
|23  || SPI1_CLK(3V)    ||24    || SPI1_CSn0(3V)
+
|-
+
|25  || GND          ||26    || GPIO4_C5/SPDIF_TX(3V)
+
|-
+
|27  || I2C2_SDA(1.8V)      ||28    || I2C2_SCL(1.8V)
+
|-
+
|29  || I2S0_LRCK_RX(1.8V)      ||30    || GND
+
|-
+
|31  ||I2S0_LRCK_TX(1.8V)    ||32    || I2S_CLK(1.8V)
+
|-
+
|33  || I2S0_SCLK(1.8V)      ||34    || GND
+
|-
+
|35  || I2S0_SDI0(1.8V)    ||36    || I2S0_SDO0(1.8V)
+
|-
+
|37  || I2S0_SDI1SDO3(1.8V)    ||38    || I2S0_SDI2SDO2(1.8V)
+
|-
+
|39  || GND          ||40    || I2S0_SDI3SDO1(1.8V)
+
 
|}
 
|}
  
* '''24-Pin GPIO2 引脚定义'''
+
==接口布局和尺寸==
 +
===接口布局===
 +
[[File:NanoPi R2S-layout.jpg |frameless|550px|NanoPi R2S接口布局]]
 +
* '''GPIO 24Pin管脚定义'''
 
::{| class="wikitable"
 
::{| class="wikitable"
 
|-
 
|-
|'''Pin#''' || '''Assignment'''         ||'''Pin#''' || '''Assignment'''     
+
| style="background: PaleTurquoise; color: black" colspan="1"| '''Pin#''' || style="background: PaleTurquoise; color: black" colspan="1"| '''Name'''|| style="background: PaleTurquoise; color: black" colspan="1"| '''Linux gpio'''|| style="background: PaleTurquoise; color: black" colspan="1"| '''Pin#'''|| style="background: PaleTurquoise; color: black" colspan="1"| '''Name'''|| style="background: PaleTurquoise; color: black" colspan="1"| '''Linux gpio'''     
 
|-
 
|-
|1    || VCC5V0_SYS  ||2    || VCC5V0_SYS
+
|1    || SYS_3.3V              ||    ||2    || VDD_5V              ||
 
|-
 
|-
|3    || PCIE_RX1_P      ||4    || PCIE_TX1P
+
|3    || I2C0_SDA / GPIO2_D1  || 89  ||4    || VDD_5V              ||
 
|-  
 
|-  
|5    || PCIE_RX1_N      ||6    || PCIE_TX1N
+
|5    || I2C0_SCL / GPIO2_D0  || 88  ||6    || GND                  ||
 
|-
 
|-
|7    || GND      ||8     || GND
+
|7    || GPIO2_A2 / IR_RX        || 66  ||8   || UART1_TX / GPIO3_A4  || 100
 
|-
 
|-
|9    || PCIE_RX0_P          ||10    || PCIE_TX0P
+
|9    || GND                   ||    ||10   || UART1_RX / GPIOG3_A6 || 102
|-
+
|11  || PCIE_RX0_N      ||12    || PCIE_TX0N
+
|-
+
|13  || GND     ||14    || GND
+
|-
+
|15  || PCIE_REF_CLKP      ||16    ||
+
|-
+
|17  || PCIE_REF_CLKN ||18    ||
+
|-
+
|19  || GND     ||20   || GND
+
|-
+
|21  || PWR_KEY    ||22    ||
+
|-
+
|23  || GPIO4_C6/PWM1(3V)    ||24    || IR_RX
+
 
|}
 
|}
  
* '''MIPI-CSI接口引脚定义'''
+
:更详细的信息请查看原理图:[http:0-1908.pdf NanoPi_R2S_V1.0_1912-Schematic.pdf]
:: 0.5mm FPC 连接器
+
:详细PCB尺寸图:[http://wik104.rar NanoPi R2S PCB的dxf文件]
:: MIPI-CSI2也可作为MIPI-DSI接口连接LCD显示屏
+
 
::{| class="wikitable"
+
==快速入门==
|-
+
===准备工作===
|'''Pin#''' ||  '''MIPI-CSI1'''  ||  '''MIPI-CSI2'''  ||  '''Description ''' 
+
要开启你的NanoPi R2S新玩具,请先准备好以下硬件
|-
+
* NanoPi R2S主板
|1    ||  VCC5V0_SYS  || VCC5V0_SYS  ||  5V Power ouput
+
* MicroSD卡/TF卡: Class10或以上的 8GB SDHC卡
|-
+
* 一个MicroUSB接口的外接电源,要求输出为5V/2A(可使用同规格的手机充电器)
|2    ||  VCC5V0_SYS || VCC5V0_SYS    ||  5V Power ouput
+
* 一台电脑,需要联网,建议使用Ubuntu 16.04 64位系统
|-
+
 
|3    ||    GND    ||  GND          ||  Return current path
+
===经测试使用的TF卡===
|-
+
制作启动NanoPi R2S的TF卡时,建议Class10或以上的 8GB SDHC卡。以下是经友善电子测试验证过的高速TF卡:
|4    || VCC_CSI_AF2.8V || VCC_CSI_AF2.8V || 2.8V Power for VCM
+
*SanDisk闪迪 TF 8G Class10 microSD 高速 TF卡:
|-
+
[[File:SanDisk MicroSD.png|frameless|100px|SanDisk microSD 8G]]
|5    || VCC_CSI_1.2V  || VCC_CSI_1.2V  || 1.2V Power for image sensor core circuit
+
*SanDisk闪迪 TF 128G 至尊高速 Class10 microSDXC TF 128G 48MB/S:
|-
+
[[File:SanDisk MicroSD-01.png|frameless|100px|SanDisk microSD 128G]]
|6    ||  VCC1V8_CAM  ||  VCC1V8_CAM  || 1.8V power for I/O circuit
+
*川宇 8G手机内存卡 TF 8G 卡存储卡 C10 高速 Class10 microSD卡:
|-
+
[[File:SanDisk MicroSD-02.png|frameless|100px|chuanyu microSD 8G]]
|7    ||  VCC_CSI_2.8V || VCC_CSI_2.8V || 2.8V power for image sensor analog circuit
+
 
|-
+
===安装系统===
|8    ||  VCC_CSI_1.0V || VCC_CSI_1.0V || 1.0V Power for image sensor core circuit
+
====下载系统固件====
|-
+
首先访问[http://download.friendlyarm.com/nanopir2s下载地址]下载需要的固件文件(officail-ROMs目录)和烧写工具(tools目录):<br />
|9    || I2C1_SCL ||  I2C2_SCL        || 1.8V I2C clock signal
+
|-
+
|10    || I2C1_SDA || I2C2_SDA        ||  1.8V I2C data signal
+
|-
+
|11    || MIPI_CSI0_RST || MIPI_CSI1_RST || reset  camera module
+
|-
+
|12    || MIPI_CSI0_PWN || MIPI_CSI1_PWN  || Power down camera module
+
|-
+
|13    ||  GND          ||      GND          || Return current path
+
|-
+
|14    || GPIO2_B3_CIF_CLKOUTA || GPIO2_B3_CIF_CLKOUTA || MCLK to camera module
+
|-
+
|15      || GND          ||    GND            || Return current path
+
|-
+
|16   ||  MIPI_RX0_D3P  || MIPI_TX1/RX1_D3P  || MIPI CSI positive differential data line transceiver output
+
|-
+
|17    ||  MIPI_RX0_D3N || MIPI_TX1/RX1_D3N    || MIPI CSI negative differential data line transceiver output
+
|-
+
|18    ||  GND    || GND                      || Return current path
+
|-
+
|19    || MIPI_RX0_D2P || MIPI_TX1/RX1_D2P  || MIPI CSI positive differential data line transceiver output
+
|-
+
|20    || MIPI_RX0_D2N || MIPI_TX1/RX1_D2N    || MIPI CSI negative differential data line transceiver output
+
|-
+
|21    || GND || GND    || Return current path
+
|-
+
|22    ||  MIPI_RX0_D1P  || MIPI_TX1/RX1_D1P  || MIPI CSI positive differential data line transceiver output
+
|-
+
|23    || MIPI_RX0_D1N || MIPI_TX1/RX1_D1N    || MIPI CSI negative differential data line transceiver output
+
|-
+
|24    || GND || GND    || Return current path
+
|-
+
|25    || MIPI_RX0_CLKP || MIPI_TX1/RX1_CLKP  || MIPI CSI positive differential clock line transceiver output
+
|-
+
|26    || MIPI_RX0_CLKN || MIPI_TX1/RX1_CLKN    || MIPI CSI negative differential clock line transceiver output
+
|-
+
|27    || GND ||  GND  || Return current path
+
|-
+
|28    || MIPI_RX0_D0P || MIPI_TX1/RX1_D0P || MIPI CSI positive differential data line transceiver output
+
|-
+
|29    || MIPI_RX0_D0N || MIPI_TX1/RX1_D0N  || MIPI CSI negative differential data line transceiver output
+
|-
+
|30    || GND      ||  GND    || Return current path
+
|}
+
  
* '''eMMC Socket接口引脚定义'''
 
 
::{| class="wikitable"
 
::{| class="wikitable"
 
|-
 
|-
|'''Pin#''' || '''Assignment'''          ||'''Pin#'''  || '''Assignment'''   
+
|colspan=2|使用以下固件:
 
|-
 
|-
|1    || EMMC_D0  ||2    || EMMC_D1
+
|rk3328-sd-friendlycore-bionic-4.4-arm64-YYYYMMDD.img.zip || UbuntuCore 18.04系统固件,使用 5.4.12 内核
 
|-
 
|-
|3    || EMMC_D2    ||4     || EMMC_D3
+
|rk3328-sd-friendlywrt-4.4-YYYYMMDD.img.zip || 基于 OpenWrt 构建的 FriendlyWrt 系统固件,使用 5.4.12 内核
|-
+
|5   || EMMC_D4      ||6    || EMMC_D5
+
 
|-
 
|-
|7    || EMMC_D6    ||8    || EMMC_D7
+
|colspan=2|烧写工具: 
 
|-
 
|-
|9    || EMMC_STRB          ||10    || GND
+
|win32diskimager.rar || Windows平台下的系统烧写工具,Linux平台下可以用dd命令烧写系统
|-
+
|11  || EMMC_CMD      ||12    || EMMC_CLKO
+
|-
+
|13  || N/C    ||14    || GND
+
|-
+
|15  || N/C    ||16    || VCC1V8_S3
+
|-
+
|17  || eMMC_RST  ||18    || VCC3V3_S3
+
|-
+
|19  || GND    ||20    || GND
+
|}
+
 
+
* '''调试串口引脚定义'''
+
:: 3V电平, 波特率1500000bps
+
::{| class="wikitable"
+
|-
+
|'''Pin#''' ||'''Assignment''' ||  '''Description ''' 
+
|-
+
|1    || GND                || 0V
+
|-
+
|2    || VCC5V0_SYS          || 5V power output
+
 
|-  
 
|-  
|3    || UART2DBG_TX        || output
 
|-
 
|4    || UART2DBG_RX        || intput
 
 
|}
 
|}
 +
{{BurnOS-Allwinner/zh|NanoPi-R2S}}
 +
{{FriendlyWrt19/zh|NanoPi-R2S}}
 +
{{FriendlyCoreGeneral/zh|NanoPi-R2S}}
 +
{{FriendlyCoreAllwinnerH3/zh|NanoPi-R2S}}
 +
{{NetworkPerformanceTest/zh|NanoPi-R2S}}
 +
{{DeveloperGuildH3/zh|NanoPi-R2S}}
  
*'''USB接口'''
+
==资源链接==
::每个USB 3.0 接口独立输出2A电流, 独立带宽, 其中上面的接口可切换为ADB调试接口。
+
===手册原理图等开发资料===
::2个USB 2.0 接口共享2A输出电流, 独立带宽。
+
* 原理图
 
+
** [http://wiki.fr08.pdf NanoPi_R2S_V1.0_1912-Schematic.pdf]
*'''RTC'''
+
::我们实测的RTC备份电流为27uA.
+
::连接器型号: Molex 53398-0271
+
:'''其他说明'''
+
::#只能从Type-C或40-pin GPIO接口的第2和第4脚给板子供电, 电压范围4.7~5.5V
+
::#板子原理图: [http://wiki.friendlyarm.com/wiki/images/1/16/NanoPi-M4B-1909-Schematic.pdf NanoPi-M4B-1909-Schematic.pdf]
+
 
+
===尺寸===
+
::PCB dxf文件, 仅供做产品时结构设计使用: [http://wiki.friendlyarm.com/wiki/images/0/0b/NanoPi_M4B_1909_dxf.zip NanoPi_M4B_1909_dxf.zip]
+
 
+
==快速入门==
+
===准备工作===
+
要开启你的NanoPi-M4B,请先准备好以下硬件:
+
* NanoPi-M4B主板
+
* Type-C数据线
+
* TF卡: Class10或以上的8GB microSD卡
+
* USB转串口适配器(可选,用于调试或PC上进行操作)
+
* 一个5V/3A或以更大功率的电源适配器
+
* 一台支持HDMI输入的显示器或者电视(或选购LCD配件)
+
* 一套USB键盘鼠标,同时连接更多USB的设备时还需要USB HUB
+
* 一台电脑,需要联网,建议使用<b>Ubuntu 18.04 64位系统</b>
+
 
+
{{RK3399-BootFromSDCard/zh|NanoPi-M4B}}
+
{{RK3399-DebugPort/zh|NanoPi-M4B}}
+
==FriendlyDesktop系统的使用==
+
{{FriendlyDesktop-Intro/zh|NanoPi-M4B}}
+
{{FriendlyDesktop-Contents/zh|NanoPi-M4B}}
+
===FriendlyDesktop下使用NVME SSD===
+
请参考: [[Template:RK3399 Linux Using NVME SSD|Linux-Using-NVME-SSD]]<br />
+
{{FriendlyCoreGeneral/zh|NanoPi-M4B}}
+
{{FriendlyCoreRunX11Application/zh|NanoPi-M4B}}
+
{{RK3399 Linux mpv/zh|NanoPi-M4B}}
+
==同时适用于FriendlyDesktop与FriendlyCore系统的功能特性==
+
{{Linux-RK3399MIPICamera/zh|NanoPi-M4B}}
+
{{RK3399-Linux-Install-Docker/zh|NanoPi-M4B}}
+
{{RK3399 Linux FFmpeg/zh|NanoPi-M4B}}
+
{{RK3399 Linux Using NVME SSD/zh|NanoPi-M4B}}
+
===Linux下使用4G EC20模块===
+
请参考: [[How to use 4G Module on NanoPC-T4/zh]]<br />
+
==Buildroot Linux系统的使用==
+
{{RK3399 Buildroot Intro/zh|NanoPi-M4B}}
+
<br />
+
关于Buildroot系统更详细的说明,请参考: [[Buildroot for RK3399/zh|Buildroot for RK3399]]<br />
+
==Lubuntu 系统的使用==
+
看这里: [[Lubuntu desktop 16.04 for RK3399/zh]]<br />
+
Lubuntu下使用NVME SSD: [[Template:RK3399 Linux Using NVME SSD/zh|Linux-Using-NVME-SSD]]<br />
+
{{RK3399-Android8/zh|NanoPi-M4B}}
+
{{RK3399-Android-USBCamera/zh|NanoPi-M4B}}
+
{{RK3399-Android-4G-EC20/zh|NanoPi-M4B}}
+
{{RK3399-Android-SSD/zh|NanoPi-M4B}}
+
==Android7.1 系统的使用==
+
看这里: [[RK3399-Android7|Android7]]
+
{{RK3399-BuildFromSource/zh|NanoPi-M4B}}
+
==选配配件eMMC模块的使用==
+
[[File:nanopim4emmc.jpg|frameless|500px]]
+
{{RK3399-BurnOS-To-EMMC/zh|NanoPi-M4B}}
+
{{RK3399-HWAccess/zh|NanoPi-M4B}}
+
{{RK3399-SourceCodeURLs/zh|NanoPi-M4B}}
+
 
+
== 查看瑞芯微原厂资料==
+
*请访问以下网址查看:https://gitlab.com/friendlyelec/rk3399-nougat/tree/nanopc-t4-nougat/RKDocs
+
*[http://opensource.rock-chips.com/images/6/60/Rockchip_RK3399_Datasheet_V1.6-20170301.pdf RK3399 datasheet V1.6]
+
*[http://opensource.rock-chips.com/images/e/ee/Rockchip_RK3399TRM_V1.4_Part1-20170408.pdf RK3399TRM V1.4]
+
  
==原理图、尺寸图==
+
* PCB尺寸图
*原理图: [http://wiki.friendlyarm.com/wiki/images/1/16/NanoPi-M4B-1909-Schematic.pdf NanoPi-M4B-1909-Schematic.pdf]  
+
** [http://wiki1104.rar NanoPi_R2S_V1.0_1912 PCB的dxf文件]
*尺寸图:[http://wiki.friendlyarm.com/wiki/images/0/0b/NanoPi_M4B_1909_dxf.zip NanoPi_M4B_1909_dxf.zip]
+
* 芯片规格书
 +
** RK3328芯片手册 [http://wiki.friendlyarm.com/wiki/images/d/d7/Rockchip_RK3328_Datasheet_V1.1-20170309.pdf Rockchip_RK3328_Datasheet.pdf]
  
 
==更新日志==
 
==更新日志==
{{RK3399-UpdateLog/zh|NanoPi-M4B}}
+
{{RK3328-UpdateLog/zh|NanoPi-R2S}}

Revision as of 05:57, 18 January 2020

English

Contents

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 接口布局

NanoPi R2S接口布局

  • 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
更详细的信息请查看原理图:[http:0-1908.pdf 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 microSD 8G

  • SanDisk闪迪 TF 128G 至尊高速 Class10 microSDXC TF 128G 48MB/S:

SanDisk microSD 128G

  • 川宇 8G手机内存卡 TF 8G 卡存储卡 C10 高速 Class10 microSD卡:

chuanyu microSD 8G

4.3 安装系统

4.3.1 下载系统固件

首先访问[1]下载需要的固件文件(officail-ROMs目录)和烧写工具(tools目录):

使用以下固件:
rk3328-sd-friendlycore-bionic-4.4-arm64-YYYYMMDD.img.zip UbuntuCore 18.04系统固件,使用 5.4.12 内核
rk3328-sd-friendlywrt-4.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。

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上:
R2S-usb2lcd-01.jpg


5.14 如何使用USB WiFi

5.14.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.14.2 如何使用USB WiFi作为AP

(1) 把USB WiFi插入NanoPi-R2S的USB端口,推荐使用以下列表中支持AP模式的WiFi芯片模块:
R2swrt+usbwifi-20210831.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.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地址;
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.15.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.15.1.3 在JellyFin下播放媒体
5.15.1.3.1 在电脑端播放媒体

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

5.15.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.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中点击“系统->挂载点”进入挂载点设置界面:
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.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

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.19 在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.20 设置Samba网络文件共享

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

5.20.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.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

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

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的使用

Template:FriendlyCoreRK3328Introduce/zh

6.1 运行FriendlyCore

  • 对于有HDMI接口的板子,如果要在电视上进行操作,您需要连接USB鼠标和键盘。
  • 如果您需要进行内核开发,最好选购一个串口配件,连接了串口,则可以通过串口终端对开发板进行操作。

使用串口模块能有效地提升开发效率,以下是串口模块的连接方法:
接上串口后,请注意串口模块的DC口和NanoPi都需要供电:
PSU-ONECOM-R1S.jpg
也可以使用USB转串口模块调试,请注意需要使用5V/2A电源给开发板供电:
500px

  • FriendlyCore默认帐户:

普通用户:

   用户名: pi
   密码: pi

Root用户:

   用户名: root
   密码: fa

默认会以 pi 用户自动登录,你可以使用 sudo npi-config 命令取消自动登录。

  • 更新软件包:
$ sudo apt-get update

Template:FriendlyCoreRK3328QtDev/zh

6.2 开机自动运行Qt示例程序

使用npi-config工具进行开启:

sudo npi-config

进入Boot Options -> Autologin -> Qt/Embedded,选择Enable然后重启即可。

6.3 扩展TF卡文件系统

第一次启动FriendlyCore系统时,系统会自动扩展文件系统分区,请耐心等待,TF卡/eMMC的容量越大,需要等待的时间越长,进入系统后执行下列命令查看文件系统分区大小:

df -h


6.4 连接WiFi

无论是SD WiFi还是USB WiFi, 它们的连接方式都是一样的。正基科技的APXX系列芯片属于SD WiFi,另外系统默认也已经支持市面上众多常见的USB WiFi,已测试过的USB WiFi型号如下:

序号 型号
1 RTL8188CUS/8188EU 802.11n WLAN Adapter
2 RT2070 Wireless Adapter
3 RT2870/RT3070 Wireless Adapter
4 RTL8192CU Wireless Adapter
5 小米WiFi mt7601
6 5G USB WiFi RTL8821CU
7 5G USB WiFi RTL8812AU

目前使用 NetworkManager 工具来管理网络,其在命令行下对应的命令是 nmcli,要连接WiFi,相关的命令如下:

  • 切换到root账户
$ su root
  • 查看网络设备列表
$ nmcli dev

注意,如果列出的设备状态是 unmanaged 的,说明网络设备不受NetworkManager管理,你需要清空 /etc/network/interfaces下的网络设置,然后重启.

  • 开启WiFi
$ nmcli r wifi on
  • 扫描附近的 WiFi 热点
$ nmcli dev wifi
  • 连接到指定的 WiFi 热点
$ nmcli dev wifi connect "SSID" password "PASSWORD" ifname wlan0

请将 SSID和 PASSWORD 替换成实际的 WiFi名称和密码。
连接成功后,下次开机,WiFi 也会自动连接。

更详细的NetworkManager使用指南可参考这篇文章: Use NetworkManager to configure network settings

如果你的USB WiFi无法正常工作, 大概率是因为文件系统里缺少了对应的USB WiFi固件。对于Debian系统, 可以在Debian-WiFi里找到并安装USB WiFi芯片的固件。而对于Ubuntu系统, 则可以通过下列命令安装所有的USB WiFi固件:

$ apt-get install linux-firmware

一般情况下, 各种WiFi芯片的固件都存放在/lib/firmware目录下。


6.5 连接以太网

默认插上网线开机,会自动连接并通过DHCP获取IP地址,如需要配置静态IP地址,请参考 NetworkManager 的相关文档: Use NetworkManager to configure network settings


6.6 定制命令行的欢迎信息(文字LOGO)

欢迎信息主要是这个目录下的脚本来打印的:

/etc/update-motd.d/

比如要修改 FriendlyELEC 的大字LOGO,可以修改/etc/update-motd.d/10-header 这个文件,比如要将LOGO改为HELLO,可将以下行:

TERM=linux toilet -f standard -F metal $BOARD_VENDOR

改为:

TERM=linux toilet -f standard -F metal HELLO

6.7 修改时区

例如更改为Shanghai时区:

sudo rm /etc/localtime
sudo ln -ls /usr/share/zoneinfo/Asia/Shanghai /etc/localtime



6.8 连接USB摄像头模块(FA-CAM202)

FA-CAM202是一款200万像素的USB摄像头模块,连接开发板和摄像头,然后上电启动系统,连接网络,以root用户登录终端并编译运行mjpg-streamer:

$ cd /root/C/mjpg-streamer
$ make
$ ./start.sh

请自行修改start.sh, 确保使用正确的/dev/videoX节点, 下列命令可以用来确定摄像头的video节点:

$ apt-get install v4l-utils
$ v4l2-ctl -d /dev/video0 -D
# fa-cam202有2个型号
Driver Info (not using libv4l2):
        Driver name   : uvcvideo
        Card type     : HC 3358+2100: HC 3358+2100  / USB 2.0 Camera: USB 2.0 Camera
        Bus info      : usb-1c1b000.usb-1
	...

上述信息表示/dev/video0是摄像头的设备节点。mjpg-streamer是一个开源的网络视频流服务器,在板子上成功运行mjpg-streamer后会打印下列信息:

$ ./start.sh 
 i: Using V4L2 device.: /dev/video0
 i: Desired Resolution: 1280 x 720
 i: Frames Per Second.: 30
 i: Format............: YUV
 i: JPEG Quality......: 90
 o: www-folder-path...: ./www/
 o: HTTP TCP port.....: 8080
 o: username:password.: disabled
 o: commands..........: enabled

start.sh脚本里执行了下列2个命令:

export LD_LIBRARY_PATH="$(pwd)"
./mjpg_streamer -i "./input_uvc.so -d /dev/video0 -y 1 -r 1280x720 -f 30 -q 90 -n -fb 0" -o "./output_http.so -w ./www"

mjpg_streamer相关参数的含义如下:
-i: 选择输入插件,input_uvc.so表示从摄像头采集数据;
-o: 选择输出插件,output_http.so表示使用http协议传输数据;
-d: 输入插件的子参数,指定摄像头设备节点;
-y: 输入插件的子参数,指定摄像头采集数据的格式,1:yuyv, 2:yvyu, 3:uyvy 4:vyuy,如果不使用-y参数,则表示采集MJPEG格式;
-r: 输入插件的子参数,指定摄像头采集分辨率;
-f: 输入插件的子参数,指定想使用的摄像头采集fps,具体是否支持依赖于驱动;
-q: 输入插件的子参数,指定libjpeg软编码的图像质量;
-n: 输入插件的子参数, 禁止dynctrls功能;
-fb: 输入插件的子参数, 指定是否在/dev/fbX上显示采集的图像;
-w: 输出插件的子参数, 指定包含网页的目录;

成功运行start.sh脚本后,假设开发板的IP地址为192.168.1.230,在PC的浏览器中输入 192.168.1.230:8080 就能浏览摄像头采集的画面了,效果如下:
mjpg-streamer-cam500a

6.9 查看CPU温度和频率

命令行查看:

$ cpu_freq 
Aavailable frequency(KHz):
        480000 624000 816000 1008000
Current frequency(KHz):
        CPU0 online=1 temp=26548C governor=ondemand freq=624000KHz
        CPU1 online=1 temp=26548C governor=ondemand freq=624000KHz
        CPU2 online=1 temp=26548C governor=ondemand freq=624000KHz
        CPU3 online=1 temp=26548C governor=ondemand freq=624000KHz

上述信息表示当前有4个CPU核在线, 温度均约为26.5摄氏度, 运行的策略均为根据需求来决定运行频率, 当前的运行频率均为624MHz,设置频率的命令如下:

$ cpu_freq -s 1008000
Aavailable frequency(KHz):
        480000 624000 816000 1008000
Current frequency(KHz):
        CPU0 online=1 temp=36702C governor=userspace freq=1008000KHz
        CPU1 online=1 temp=36702C governor=userspace freq=1008000KHz
        CPU2 online=1 temp=36702C governor=userspace freq=1008000KHz
        CPU3 online=1 temp=36702C governor=userspace freq=1008000KHz

上述命令将4个CPU核的频率设置为1008MHz。


6.10 运行Qt示例程序

执行以下命令:

$ sudo /opt/QtE-Demo/run.sh

运行结果如下,这是一个开源的QtDemo:
K2-QtE

6.11 Docker在armhf系统下的安装与使用

6.11.1 安装 Docker

执行下列命令:

sudo apt-get update
sudo apt-get install docker.io

6.11.2 测试 Docker

执行下列命令运行一个简单的docker image:

git clone https://github.com/friendlyarm/debian-jessie-arm-docker
cd debian-jessie-arm-docker
./rebuild-image.sh
./run.sh


7 测试网络性能

7.1 测试前的准备

  • 我们在friendlycore系统下使用iperf工具来测试网络的性能,测试前请先确保测试环境没有问题,请确保网线、路由器和PC机端口满足要求

Network cable.jpg

  • 为避免干扰、保证测试稳定可靠,请使用独立IP网段和PC机测试

7.2 测试开发板发送性能

PC机做server,开发板做client,测试开发板向PC机发送数据的性能。

  • 1、使用以下命令查看PC机的IP地址,例如本机的IP地址为192.168.10.100
 ifconfig
  • 2、在PC机终端使用以下命令运行iperf软件,并设置PC机为server
 iperf -s
  • 3、在开发板的调试终端执行以下命令,运行iperf软件,并设置开发板为client,开始测试,请注意IP地址需改成你的PC机实际的IP地址
 iperf -c 192.168.10.100 -t 60 -i 1

NanoPi-R2S发送性能实际测试如下图所示:
650px

7.3 测试开发板接收性能

开发板做server,PC机做client,测试开发板接收PC机数据的性能。

  • 1、使用以下命令查看开发板的IP地址,例如本开发板的IP地址为192.168.10.102
 ifconfig
  • 2、在开发板终端使用以下命令运行iperf软件,并设置开发板为server
 iperf -s
  • 3、在PC机的终端执行以下命令,运行iperf软件,并设置PC机为client,开始测试,请注意IP地址需改成你的开发板实际的IP地址
 iperf -c 192.168.10.102 -t 60 -i 1

NanoPi-R2S接收性能实际测试如下图所示:
650px

8 开发者指南

9 资源链接

9.1 手册原理图等开发资料

10 更新日志

10.1 2024-04-21

10.1.1 OpenMediaVault

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

10.2 2024-01-31

10.2.1 Debian/Ubuntu/FriendlyCore/Buildroot

  • 增加adb支持

10.3 2023-12-01

10.3.1 FriendlyWrt

  • 更新到 6.1.63 内核
  • 更新到 OpenWrt 23.05.2

10.4 2023-10-31

10.4.1 增加新系统

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

10.4.2 Debian Core/FriendlyCore-Lite-Core

  • 更新到 6.1 内核

10.4.3 FriendlyWrt

  • 更新到 6.1 内核
  • 更新到 OpenWrt 23.05

10.5 2023-05-29

10.5.1 Debian11 Core

  • 修正在 R2C Plus 上无法启动的问题

10.6 2023-05-26

10.6.1 FriendlyWrt更新

  • 更新 v22.03 到新版本 openwrt-22.03.5
  • 更新 v21.02 到新版本 openwrt-21.02.7

10.7 2023-04-26

10.7.1 FriendlyWrt更新

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

10.8 2023-02-10

  • 新增 Debian11 Core系统

10.9 2023-01-09

10.9.1 FriendlyCore更新说明:

  • 优化了开机服务

10.10 2022-12-04

10.10.1 FriendlyWrt更新

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

10.11 2022-09-06

10.11.1 FriendlyWrt更新说明:

  • 增加Fullcone NAT支持 (默认开启)
  • 版本升级到 22.03.0 正式版

10.12 2022-08-03

10.12.1 FriendlyWrt更新说明:

  • 升级FriendlyWrt至最新版本22.03-rc6

10.13 2022-08-01

10.13.1 FriendlyWrt更新说明:

  • 防火墙设置调整: 单网口的设备(使如NEO3)默认设置为允许WAN入站流量以方便网页配置,多网口的设备仍然保持默认拒绝WAN入站流量

10.14 2022-07-27

10.14.1 FriendlyWrt更新说明:

  • 提供docker与非docker两个版本,除了docker外其他特性相同
  • 提供测试版22.03-rc3, 可根据软件包的需求情况进行选择, 推荐使用稳定版本 21.02.3
  • 改善了第三方软件包的安装兼容性问题
  • 增加支持 “恢复出厂设置” 功能
  • 增加网页刷机工具 eMMC-Tools, 支持安装FriendlyElec及部分第三方固件到eMMC, 除了raw-image还支持rockchip打包格式的固件
  • 其他一些细节调整: 默认设置时区设置为上海、新增NAS分类菜单、去掉lcd2usb、改进安全性设置、调优sysctl参数、修正docker防火墙设置等

10.15 2021-12-02

10.15.1 FriendlyWrt更新说明:

  • 改进了FriendlyWrt系统上软件包安装的兼容性
  • 修正某些sd卡会导致reboot命令无响应的问题 (更新了5.10内核)
  • 将NanoPi-NEO3上的USB排针默认配置成Host模式

10.16 2021-10-29

10.16.1 FriendlyWrt更新说明:

  • FriendlyWrt更新至官方稳定版本 21.02.1,特性与19.07.5基本保持一致,支持docker、usb wifi等

10.17 2021-08-30

10.17.1 FriendlyWrt更新说明:

  • FriendlyWrt内核更新到 5.10.60
  • 新增一款高速5G USB WiFi的支持,网卡型号为 Comfast CF-WU782AC V2,芯片型号为 MediaTek MT7662
  • 改进了USB WiFi的兼容性
  • 改进了首次启动的稳定性 (之前的版本,首次启动时,某些情况下会出现bpfilter错误)

10.17.2 FriendlyCore更新说明:

  • FriendlyCore内核更新到 5.10.60

10.18 2021-03-05

  • FriendlyCore更新到20.04 (基于ubuntu focal)

10.19 2021-01-15

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

10.20 2020-09-04

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

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

10.22 2020-07-10

10.22.1 FriendlyWrt更新说明:

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

10.23 2020-05-14

10.23.1 FriendlyWrt更新说明:

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

10.24 2020-02-28

10.24.1 FriendlyWrt更新说明:

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

10.25 2020-02-25

10.25.1 FriendlyWrt更新说明:

10.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
10.25.1.2 修复初版固件发现的一些issues,如下:
  • 优化加载bpfilter 模块
  • 设置 dist-feeds 指向最新版本, 解决opkg update 异常
  • 缺省config中移除 modemmanager和mwan3 插件 (可自行添加)
  • 优化 cpu 调频策略和开机速度

10.26 2020-02-20

10.26.1 FriendlyWrt

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