Difference between revisions of "APITestPage"

From FriendlyELEC WiKi
Jump to: navigation, search
(updated by API)
(updated by API)
(234 intermediate revisions by the same user not shown)
Line 1: Line 1:
[[NanoPC-T2/zh|查看中文]]
+
[[NanoPC-T6|English]]
 +
<!--
 +
[[File:NanoPC-T6-01B.jpg|thumb|Overview]]
 +
[[File:NanoPC-T6-A01.jpg|thumb|Front]]
 +
[[File:NanoPC-T6-B01.jpg|thumb|Back]]
 +
[[File:T6-01.jpg|thumb|frameless|250x250px|Case]]
 +
[[File:T6-02.jpg|thumb|frameless|250x250px|Case]]
 +
[[File:T6-03.jpg|thumb|frameless|250x250px|Case]]
 +
[[File:T6-04.jpg|thumb|frameless|250x250px|Case]]
 +
-->
 +
[[File:NanoPC-T6LTS-01B.jpg|thumb|Overview]]
 +
[[File:NanoPC-T6LTS-A01.jpg|thumb|Front]]
 +
[[File:NanoPC-T6LTS-B01.jpg|thumb|Back]]
 +
[[File:T6LTS-01.jpg|thumb|frameless|250x250px|Case]]
 +
[[File:T6LTS-02.jpg|thumb|frameless|250x250px|Case]]
 +
[[File:T6LTS-03.jpg|thumb|frameless|250x250px|Case]]
 +
<!--
 +
[[File:T6LTS-04.jpg|thumb|frameless|250x250px|Case]]
 +
-->
 +
==介绍==
 +
NanoPC-T6 LTS(简称”T6”)是友善电子团队设计出品的一款开源高性能一体化边缘计算平台,它带有双2.5G网口。它采用瑞芯微RK3588作为主控处理器, 配备4GB/8GB/16GB LPDDR4x内存,和32GB/64GB/256/0GB eMMC闪存,支持运行OpenMediaVault、FriendlyWrt、Android、Android TV、Debian和Ubuntu等多种系统, 支持GPU和VPU加速。<br/>
 +
<br/>
 +
T6接口丰富,布局紧凑,主板尺寸只有110x80mm,可选配安装一体化CNC氧化铝外壳。它带有2个HDMI输出接口和1个HDMI IN接口,可解码播放最高8K60p H.265/VP9, 以及8K30p H264等格式视频,并可录制4k60p H.265格式视频。T6还具备1个M.2 B-Key插槽,可安装使用M.2 NVME固态硬盘, 以及1个M.2 E-Key插槽, 可安装使用M.2 2230尺寸的WiFi无线模块。<br/>
 +
<br/>
 +
另外, T6带有1个USB3.0和2个USB2.0接口, 以及1个全功能的USB-C接口,采用DC-12V供电。<br/>
 +
<br/>
 +
T6非常适合企业客户定制开发带有多网口的迷你机器视觉系统,并适合嵌入式爱好者发掘、探索打造自己独具一格的玩法。
 +
==NanoPC-T6资源特性==
 +
* SoC: Rockchip RK3588
 +
** CPU: 四核 ARM Cortex-A76(up to 2.4GHz) + 四核 Cortex-A55 (up to 1.8GHz)
 +
** GPU: Mali-G610 MP4, 兼容 OpenGLES 1.1, 2.0, 3.2, 以及OpenCL (up to 2.2) 和 Vulkan1.2
 +
** VPU: 支持8K@60fps H.265 和 VP9 解码, 8K@30fps H.264 解码, 4K@60fps AV1 解码, 8K@30fps H.264 和 H.265 编码
 +
** NPU: 6TOPs, 支持INT4/INT8/INT16/FP16
 +
* RAM: 64-bit 4GB/8GB/16GB LPDDR4X 频率高达2133MHz
 +
* eMMC Flash: 32GB/64GB/256GB eMMC, 最高支持 HS400 模式
 +
* Nor Flash:32MB SPI Nor Flash
 +
* microSD: 最高支持SDR104模式
 +
* Ethernet: 2个PCIe扩展的2.5G以太网
 +
* 一个USB 3.0 Type-A
 +
* 一个全功能USB Type‑C™接口, 支持USB3.0数据传输和DP显示输出,分辨率高达4Kp60。
 +
* 两个USB 2.0 Type-A
 +
* 视频输入:
 +
** 1x Standard HDMI input port, up to 4Kp60
 +
** 2x 4-lane MIPI-CSI, compatible with MIPI V1.2
 +
* 视频输出:
 +
** 2个标准尺寸HDMI输出接口
 +
*** 兼容HDMI2.1, HDMI2.0, 以及HDMI1.4
 +
*** one support displays up to 7680x4320@60Hz, another one support up to 4Kp60
 +
*** Support RGB/YUV(up to 10bit) format
 +
** USB Type‑C™ DP显示输出,分辨率高达4Kp60
 +
** 2 x 4-lane MIPI-DSI, compatible with MIPI DPHY 2.0 or CPHY 1.1
 +
* 音频:
 +
** 3.5mm耳机输出接口
 +
** 2.0mm PH-2A模拟麦克风输入接口
 +
* GPIO:
 +
** 40-Pin 2.54mm双排针接口
 +
** up to 2 x SPIs, 6 x UARTs, 1x I2Cs, 8 x PWMs, 2 x I2Ss, 28 x GPIOs
 +
* M.2 Connectors
 +
** one M.2 M-Key connector with PCIe 3.0 x4 for NVMe SSDs up to 2,500 MB/s
 +
** one M.2 E-key connector with PCIe 2.1 x1 and USB2.0 Host
 +
* 其它:
 +
** 10 Pin 2.54mm排针,包含调试串口和两路USB2.0 Host
 +
** 2 Pin 1.27/1.25mm RTC battery input connector for low power RTC IC HYM8563TS
 +
** one 38Khz IR receiver
 +
** MASK button for eMMC update, reset button, and Power button
 +
** one 5V Fan connector
 +
** USB-C转调试串口, 1500000bps
 +
** 2 x GPIO Controlled LED (SYS, LED1)
 +
* Power supply: 5.5*2.1mm DC插座和2针3.5mm插拔式接线端子, 12VDC input.
 +
* PCB: 8 Layer, 110x80x1.6mm
 +
*Ambient Operating Temperature: 0℃ to 70℃
  
==Introduction==
+
==接口布局和尺寸==
[[File:NanoPC-T2-1B.jpg|thumb|Overview]]
+
===NanoPC-T6-LTS===
[[File:NanoPC-T2-A1.jpg|thumb|Front]]
+
[[File:NanoPC-T6LTS_Layout-L.jpg|1100px]]
[[File:NanoPC-T2-B1.jpg|thumb|Back]]
+
===NanoPC-T6===
* The NanoPC-T2 quad core Cortex A9 single board computer is designed and developed by FriendlyARM for professional and enterprise users. It uses the Samsung Quad Core Cortex-A9 S5P4418 SoC with dynamic frequency scaling up to 1.4GHz. Compared to FriendlyARM's existing 4418 based boards the NanoPC-T2 has 8G eMMC onboard, audio jack and video input/output interfaces. Compared to its predecessor the NanoPC-T1 the NanoPC-T2 has built-in WiFi, Bluetooth and Gbps Ethernet port. In addition the NanoPC-T2 has power management which the NanoPC-T1 doesn't support. To avoid overheat issues the NanoPC-T2 has a heat sink with mounting posts.
+
[[File:NanoPC-T6 Layout-L.jpg|1100px]]
* The NanoPC-T2 combines all the ports and interfaces the existing FriendlyARM 4418 boards have. Currently it has the most interfaces and ports among all existing ARM boards of this size. Its rich video interfaces and support for HDMI 1080P enable it to work with not only popular display devices but also various FriendlyARM LCDs (both resistive touch and capacitive touch).
+
===接口布局===
* The NanoPC-T2 is FriendlyARM's most complete solution based on Samsung 4418 for both commercial and industrial applications.
+
<!-- [[File:NanoPC-T6_Layout.jpg|thumb|frameless|300px|NanoPC-T6 Layout]] -->
 
+
* '''40-pin GPIO'''
==Hardware Spec==
+
* SoC: Samsung S5P4418 Quad Core Cortex-A9 with dynamic frequency scaling up to 1.4G Hz
+
* Power Management Unit: AXP228 PMU, it supports software power-off and wake-up.
+
* System Memory: 1GB 32bit DDR3 RAM
+
* eMMC: 8GB
+
* Storage: 1 x SD Card Slot
+
* Ethernet: Gbps Ethernet Port (RTL8211E) with unique MAC
+
* WiFi: 802.11b/g/n
+
* Bluetooth: 4.0 dual mode
+
* Antenna: Porcelain Antenna IPX Interface
+
* Video Input: DVP Camera/MIPI-CSI (two camera interfaces)
+
* Video Output: HDMI Type-A / LVDS / LCD / MIPI DSI (four video output interfaces)
+
* Audio: 3.5 mm audio jack / via HDMI
+
* Microphone: 1 x onboard Microphone
+
* USB: 4 x USB 2.0 Host, two standard type A ports and two 2.54mm pitch pin headers
+
* MicroUSB:  1 x MicroUSB 2.0 Client, Type A
+
* LCD Interface: 0.5mm pitch 45 pin FPC seat, full color RGB 8-8-8
+
* HDMI: 1.4A Type A, 1080P
+
* DVP Camera: 0.5mm pitch 24 pin FPC seat
+
* GPIO: 2.54 mm pitch 30 pin header
+
* Serial Debug Port: 2.54mm pitch 4pin header
+
* LED: 1 x power LED , 2 x GPIO LED
+
* User Key: 1 x K1 (power), 1 x Reset
+
* Other Resource: 1 x onboard thermistor
+
* RTC Battery: RTC Seat Pins
+
* Power: DC 5V/2A
+
* Heat Sink: 1 x Heat Sink with mounting holes
+
* PCB: Six Layer, ENIG
+
* PCB Dimension: 100 mm x 60 mm
+
* Working Temperature: -40℃ to 70℃
+
* OS/Software: u-boot, Android 4.4, Android5.1 and Debian8
+
 
+
==Software Features==
+
===UbuntuCore===
+
<!---
+
* mainline kernel: Linux-4.11.2
+
* rpi-monitor: check system status and information
+
--->
+
* npi-config: system configuration utility for setting passwords, language, timezone, hostname, SSH and auto-login,and enabling/disabling i2c, spi, serial and PWM
+
<!---
+
* software utility: wiringNP to access GPIO pins
+
* software utility: RPi.GPIO_NP to access GPIO pins
+
--->
+
* networkmanager: manage network
+
* system log output from serial port
+
<!---
+
* nano editor
+
--->
+
* welcome window with basic system information and status
+
* auto-login with user account "pi" with access to npi-config
+
* UART2 enabled
+
* supports CAM500B
+
<!---
+
* sudoers include "fa"
+
* on first system boot file system will be automatically extended.
+
* supports file system auto check and repair on system boot.
+
* supports FriendlyElec's [http://wiki.friendlyarm.com/wiki/index.php/NanoHat_PCM5102A NanoHat-PCM5102A] 
+
* supports USB WiFi module: refer to [[#Connect USB WiFi to NEO]]
+
* supports audio recording and playing with 3.5mm audio jack
+
* supports USB Host and 100M Ethernet
+
* supports FriendlyElec BakeBit modules
+
* supports dynamic frequency scaling and voltage regulation
+
* relieves overheat compared to kernel Linux-3.4
+
* fixed MAC address
+
 
+
===Ubuntu OLED===
+
* mainline kernel: Linux-4.11.2
+
* supports FriendlyElec's OLED module
+
--->
+
 
+
===Debian===
+
* supports CAM500B
+
 
+
<!---
+
===Debian for NAS Dock===
+
* mainline kernel: Linux-4.11.2
+
* supports FriendlyElec's NAS Dock
+
* optimized OpenMediaVault configuration options
+
* allocated swap section
+
--->
+
===Android===
+
* supports setting up static IP
+
* supports accessing hardware with FriendlyElec's libfriendlyarm-hardware.so
+
* integrated iTest utility for testing hardware
+
 
+
==Diagram, Layout and Dimension==
+
===Layout===
+
[[File:NanoPC-T2-IF.png |thumb|600px|NanoPC-T2 Layout]]
+
 
+
* '''30Pin GPIO Pin Spec'''
+
 
::{| class="wikitable"
 
::{| class="wikitable"
 +
|-
 +
|'''Pin#'''            || '''GPIO'''  || '''SPI'''    || '''UART'''  || '''I2C'''  || '''I2S'''  || '''PWM''' ||'''POWER'''      ||'''Description'''
 
|-
 
|-
|Pin# || Name          ||Pin#  || Name   
+
|1,17                  ||             ||               ||             ||             ||           ||           ||   VCC3V3_SYS_S3 || 3.3V Power Output, 500mA Max
|-
+
|1    || SYS_3.3V  ||2    || DGND
+
 
|-
 
|-
|3    || UART2_TX/GPIOD20      ||4    || UART2_RX/GPIOD16
+
|2,4                  ||             ||               ||            ||            ||            ||          ||  VCC_5V0        || 5V Power Output, 500mA Max
 
|-  
 
|-  
|5    || I2C0_SCL      ||6    || I2C0_SDA
+
|6,9,14,20,25,30,34,39 ||             ||               ||            ||            ||            ||          ||  GND            || Power and Signal Ground
 
|-
 
|-
|7    || SPI0_MOSI/GPIOC31      ||8    || SPI0_MISO/GPIOD0
+
|3                    ||   GPIO1_D7  ||               ||             || I2C8_SDA_M2 ||            ||          ||                  || T6内部已经通过2.2K上拉到3.3V
 +
|- 
 +
|5                    ||  GPIO1_D6  ||              ||            || I2C8_SCL_M2 ||            ||          ||                  || T6内部已经通过2.2K上拉到3.3V
 
|-
 
|-
|9    || SPI0_CLK/GPIOC29          ||10    || SPI0_CS/GPIOC30
+
|7                    ||   GPIO3_B2  ||               ||             ||            || I2S2_SDI_M1||          ||                  || 3.3V
 
|-
 
|-
|11   || UART3_TX/GPIOD21      ||12    || UART3_RX/GPIOD17
+
|8                    ||   GPIO0_C5  ||              || UART0_TX_M0 ||            ||            || PWM4_M0  ||                 || 3.3V     
 
|-
 
|-
|13   || UART4_TX/GPIOB29      ||14    || UART4_RX/GPIOB28
+
|10                    ||  GPIO0_C4   ||               || UART0_RX_M0 ||            ||            ||          ||                 || 3.3V
 
|-
 
|-
|15  || GPIOB31      ||16    || GPIOB30
+
|11                    || GPIO3_C2    ||               ||            ||            ||            || PWM14_M0  ||                  || 3.3V
 
|-
 
|-
|17  || GPIOC4 ||18   || GPIOC7
+
|12                    || GPIO3_B7    ||               ||            ||            ||            ||          ||                  ||  3.3V
 +
|- 
 +
|13                    || GPIO3_C3   ||               ||            ||            ||            ||PWM15_IR_M0||                  ||  3.3V
 
|-
 
|-
|19  || GPIOC8    ||20    || GPIOC24
+
|15                    || GPIO1_A7    ||               ||            ||            ||            ||          ||                  || 3.3V
 
|-
 
|-
|21  || GPIOC28    ||22    || GPIOB26
+
|16                    || GPIO3_B3    ||               ||            ||            || I2S2_SDO_M1 ||          ||                || 3.3V
 
|-
 
|-
|23  || GPIOD1/PWM0    ||24    || GPIOD8/PPM
+
|18                    || GPIO3_B4    ||               ||            ||            || I2S2_MCLK_M1||          ||                || 3.3V
 
|-
 
|-
|25  || GPIOC13/PWM1   ||26    || AliveGPIO3
+
|19                    || GPIO1_B2   || SPI0_MOSI_M2  || UART4_RX_M2 ||            ||            ||          ||                  ||  3.3V
 
|-
 
|-
|27  || GPIOC14/PWM2   ||28    || AliveGPIO5
+
|21                    || GPIO1_B1   || SPI0_MISO_M2  ||             ||            ||            ||          ||                  ||  3.3V
 
|-
 
|-
|29   || VDD_5V      ||30    || DGND
+
|22                    || GPIO1_B5    || SPI0_CS1_M0   || UART7_TX_M2 ||            ||            ||           ||                 || 3.3V
|}
+
 
+
* '''20Pin LVDS Interface Pin Spec'''
+
::{| class="wikitable"
+
 
|-
 
|-
|Pin# || Name          ||Pin# || Name   
+
|23                    || GPIO1_B3    || SPI0_CLK_M2 || UART4_TX_M2 ||            ||            ||          ||                  ||  3.3V
 
|-
 
|-
|1   || SYS_3.3V ||2    || SYS_3.3V
+
|24                    || GPIO1_B4   || SPI0_CS0_M2  || UART7_RX_M2 ||             ||             ||          ||                  ||  3.3V  
 
|-
 
|-
|3   ||GPIOC16      ||4    || GPIOB18
+
|26                    || GPIO1_B0   ||               ||             ||             ||             ||           ||                 || 3.3V
|-
+
|5    || DGND      ||6    || DGND
+
 
|-
 
|-
|7   || LVDS_D0-      ||8    || LVDS_D0+
+
|27                    || GPIO1_A0   ||               || UART6_RX_M1 ||            ||            ||          ||                 || 3.3V
 
|-
 
|-
|9   || LVDS_D1-          ||10    || LVDS_D1+
+
|28                    || GPIO1_A1   ||               || UART6_TX_M1 ||            ||            ||          ||                  || 3.3V
 
|-
 
|-
|11  || LVDS_D2-      ||12    || LVDS_D2+
+
|29                    || GPIO3_B5    ||               || UART3_TX_M1 ||            || I2S2_SCLK_M1 || PWM12_M0 ||                  || 3.3V
 
|-
 
|-
|13  || DGND        ||14    || DGND
+
|31                    || GPIO3_B6    ||               || UART3_RX_M1 ||            || I2S2_LRCK_M1  ||  PWM13_M0 ||                  || 3.3V
 
|-
 
|-
|15  || LVDS_CLK-      ||16    || LVDS_CLK+
+
|32                    || GPIO0_C6    ||               ||            ||            ||              || PWM5_M1  ||                  || 3.3V
 
|-
 
|-
|17  || LVDS_D3- ||18    || LVDS_D3+
+
|33                    || GPIO3_B0    ||               ||            ||            ||              || PWM9_M0  ||                  || 3.3V
 
|-
 
|-
|19  ||I2C2_SCL    ||20    || I2C2_SDA
+
|35                    || GPIO3_A0    || SPI4_MISO_M1  ||            ||            ||  I2S3_MCLK  || PWM10_M0  ||                 || 3.3V
|}
+
 
+
* '''DVP Camera Interface Pin Spec'''
+
::{| class="wikitable"
+
 
|-
 
|-
|Pin# || Name     
+
|36                    || GPIO3_A3    || SPI4_CS0_M1  || UART8_RX_M1  ||            ||  I2S3_SDO    ||            ||                  || 3.3V
 
|-
 
|-
|1, 2 || SYS_3.3V
+
|37                    || GPIO3_A4    || SPI4_CS1_M1  ||              ||            ||  I2S3_SDI    ||            ||                  || 3.3V  
 
|-
 
|-
|7,9,13,15,24 || DGND
+
|38                    || GPIO3_A1    || SPI4_MOSI_M1    ||            ||            ||  I2S3_SCLK    ||            ||                  || 3.3V
 
|-
 
|-
|3    || I2C0_SCL
+
|40                    || GPIO3_A2    || SPI4_CLK_M1  ||  UART8_TX_M1  ||             || I2S3_LRCK   ||           ||                 || 3.3V
|-
+
|4    || I2C0_SDA  
+
|-
+
|5    || GPIOB14
+
|-
+
|6   || GPIOB16
+
|-
+
|8,10  || NC
+
|-
+
|11  || VSYNC
+
|-
+
|12  || HREF
+
|-
+
|14  || PCLK
+
|-
+
|16-23 || Data bit7-0
+
 
|}
 
|}
 
+
* '''MIPI-DSI'''
* '''RGB LCD IF Pin Spec'''
+
:: 0.5mm FPC Connector
 
::{| class="wikitable"
 
::{| class="wikitable"
 
|-
 
|-
|Pin# || Name   || Description   
+
|'''Pin#''' ||  '''MIPI-DSI0'''  || '''MIPI-DSI1'''  ||  '''Description '''    
 
|-
 
|-
|1, 2 || VDD_5V || 5V Output, it can be used to power LCD modules
+
|1,2,3      || VCC_5V0          || VCC_5V0            ||  5V Power ouput
 +
|-
 +
|4,7,9,11,15,18,21,24,27,30||GND  ||  GND              ||  Power and Signal Ground
 +
|-
 +
|5          || I2C5_SDA_M0        ||  I2C4_SDA_M3      ||  3.3V, I2C Data, T6内部已经通过2.2K上拉到3.3V
 
|-
 
|-
|11,20,29, 37,38,39,40, 45|| DGND || Ground
+
|6          || I2C5_SCL_M0        ||   I2C4_SCL_M3      ||  3.3V, I2C Clock, T6内部已经通过2.2K上拉到3.3V
 
|-
 
|-
|3-10    || Blue LSB to MSB  || RGB blue
+
|8          || GPIO3_C0          ||   GPIO4_A0        ||  3.3V, GPIO
 
|-  
 
|-  
|12-19   || Green LSB to MSB || RGB green
+
|10        || GPIO3_B1/PWM2_M1   || GPIO3_D5/PWM11_M3 ||   3.3V, GPIO/PWM
 
|-
 
|-
|21-28  || Red LSB to MSB  || RGB red
+
|12        || GPIO3_A6          || GPIO4_A3          ||  3.3V, GPIO
 
|-
 
|-
|30      || GPIOB25          || available for users
+
|13        || /NC                || /NC              ||  No Connection
 
|-
 
|-
|31      || GPIOC15          || occupied by FriendlyARM one wire technology to recognize LCD models and control backlight and implement resistive touch, not applicable for users
+
|14        || GPIO3_C1          || GPIO4_A1          ||   3.3V, GPIO
|-   
+
|32      || XnRSTOUT Form CPU || low when system is reset
+
 
|-
 
|-
|33      || VDEN || signal the external LCD that data is valid on the data bus
+
|16        || MIPI_DPHY0_TX_D3N || MIPI_DPHY1_TX_D3N  ||  MIPI TX Lane3 ouput N
 +
|-
 +
|17        || MIPI_DPHY0_TX_D3P  || MIPI_DPHY1_TX_D3P  ||  MIPI TX Lane3 ouput P
 +
|-
 +
|19        || MIPI_DPHY0_TX_D2N  || MIPI_DPHY1_TX_D2N  ||  MIPI TX Lane2 ouput N
 
|-
 
|-
|34      || VSYNC || vertical synchronization
+
|20        || MIPI_DPHY0_TX_D2P  || MIPI_DPHY1_TX_D2P  ||  MIPI TX Lane2 ouput P
 +
|-
 +
|22        || MIPI_DPHY0_TX_D1N  || MIPI_DPHY1_TX_D1N  ||  MIPI TX Lane1 ouput N
 
|-
 
|-
|35      || HSYNC || horizontal synchronization
+
|23        || MIPI_DPHY0_TX_D1P  || MIPI_DPHY1_TX_D1P  ||  MIPI TX Lane1 ouput P
|-
+
|-  
|36      || LCDCLK || LCD clock, Pixel frequency
+
|25        || MIPI_DPHY0_TX_D0N  || MIPI_DPHY1_TX_D0N  ||  MIPI TX Lane0 ouput N
|-
+
|41      || I2C2_SCL   || I2C2 clock signal, for capacitive touch data transmission
+
 
|-
 
|-
|42      || I2C2_SDA  || I2C2 data signal, for capacitive touch data transmission
+
|26        || MIPI_DPHY0_TX_D0P  || MIPI_DPHY1_TX_D0P  ||  MIPI TX Lane0 ouput P
 
|-
 
|-
|43      || GPIOC16 || interrupt pin for capacitive touch, used with I2C2
+
|28        || MIPI_DPHY0_TX_CLKN || MIPI_DPHY1_TX_CLKN ||  MIPI TX Clock ouput N
 
|-
 
|-
|44      || NC  || Not connected
+
|29        || MIPI_DPHY0_TX_CLKP || MIPI_DPHY1_TX_CLKP ||  MIPI TX Clock ouput P
 
|}
 
|}
 
+
* '''MIPI-CSI'''
* '''MIPI-DSI Interface Pin Spec'''
+
:: 0.5mm FPC Connector
 
::{| class="wikitable"
 
::{| class="wikitable"
 
|-
 
|-
|Pin# || Name     
+
|'''Pin#''' ||   '''MIPI-CSI0'''  ||  '''MIPI-CSI1'''  ||  '''Description ''' 
 
|-
 
|-
|1, 2, 3 || VDD_5V
+
|1,2       || VCC_5V0          || VCC_5V0            ||   5V Power ouput
|-
+
|-  
|4|| DGND
+
|3,13,15,18,21,24,27,30          || GND ||  GND      ||  Power and Signal Ground
|-
+
|5 || I2C2_SDA  
+
 
|-  
 
|-  
||| I2C2_SCL
+
|4,5,7      || /NC                || /NC                ||  No Connection
 
|-
 
|-
||| DGND
+
|6          || VCC_1V8_S3        || VCC_1V8_S3        ||  1.8V Power ouput, 100mA Max
 
|-
 
|-
|8     || GPIOC0
+
|8         || VSYNC_MASTER      || VSYNC_SLAVE        ||  用于两个摄像头的同步信号互联,T6内部已经短接了这两个Pin
 
|-
 
|-
|9     || DGND
+
|9         || I2C3_SCL_M0        || I2C7_SCL_M0      ||   1.8V, I2C Clock, T6内部已经通过2.2K上拉到1.8V
|-   
+
|10      || GPIOC1
+
 
|-
 
|-
|11      || DGND
+
|10        || I2C3_SDA_M0        ||  I2C7_SDA_M0      ||  1.8V, I2C Data, T6内部已经通过2.2K上拉到1.8V
 
|-
 
|-
|12     || GPIOA28
+
|11        ||  GPIO4_C4          ||  GPIO2_C1        ||  1.8V, GPIO
 +
|-
 +
|12         || GPIO4_C5          ||  GPIO2_C2          ||   1.8V, GPIO
 
|-
 
|-
|13      || nRESETOUT
+
|14        || MIPI_CAM1_CLKOUT  ||  MIPI_CAM2_CLKOUT  ||  1.8V, CLock ouput for Sensor
 
|-
 
|-
|14, 15      || DGND
+
|16        || MIPI_CSI0_RX_D3P  ||  MIPI_CSI1_RX_D3P  ||  MIPI RX Lane3 iuput P
 
|-
 
|-
|16      || MIPIDSI_DN3
+
|17        || MIPI_CSI0_RX_D3N  ||  MIPI_CSI1_RX_D3N  ||  MIPI RX Lane3 iuput N
 +
|-
 +
|19        || MIPI_CSI0_RX_D2P  ||  MIPI_CSI1_RX_D2P  ||  MIPI RX Lane2 iuput P
 +
|-
 +
|20        || MIPI_CSI0_RX_D2P  ||  MIPI_CSI1_RX_D2N  ||  MIPI RX Lane2 iuput N
 
|-
 
|-
|17      || MIPIDSI_DP3
+
|22        || MIPI_CSI0_RX_D1P  ||  MIPI_CSI1_RX_D1P  ||  MIPI RX Lane1 iuput P
 +
|-
 +
|23        || MIPI_CSI0_RX_D1N  || MIPI_CSI1_RX_D1N  ||  MIPI RX Lane1 iuput N
 
|-
 
|-
|18      || DGND
+
|25        || MIPI_CSI0_RX_CLK0P || MIPI_CSI1_RX_CLK0P ||  MIPI RX Clock iuput P
 +
|-
 +
|26        || MIPI_CSI0_RX_CLK0N || MIPI_CSI1_RX_CLK0N ||  MIPI RX Clock iuput N
 
|-
 
|-
|19      || MIPIDSI_DN2
+
|28        || MIPI_CSI0_RX_D0P  || MIPI_CSI1_RX_D0P  ||  MIPI RX Lane0 iuput P
 
|-
 
|-
|20    || MIPIDSI_DP2
+
|29        || MIPI_CSI0_RX_D0N  || MIPI_CSI1_RX_D0N  ||  MIPI RX Lane0 iuput N
 +
|}
 +
 
 +
* '''10 Pin Debug UART & USB 2.0 排针'''
 +
:: Debug UART is 3.3V level signals, 1500000bps
 +
::{| class="wikitable"
 
|-
 
|-
|21 || DGND
+
|'''Pin#''' ||'''Assignment'''  ||  '''Description '''    ||'''Pin#''' ||'''Assignment'''  ||  '''Description '''
 
|-
 
|-
|22 || MIPIDSI_DN1
+
|1          || USB 5V          ||  5V Power Output(1A Max) ||  2        ||    USB 5V        ||  5V Power Output(1A Max)
 +
|-
 +
|3          || USB_HS2_DM        ||  USB 2.0 Host DM        ||  4        ||  USB_HS3_DM      ||  USB 2.0 Host DM
 
|-
 
|-
|23 || MIPIDSI_DP1
+
|5          || USB_HS2_DP        ||  USB 2.0 Host DP        ||  6        ||  USB_HS3_DP      ||  USB 2.0 Host DP 
 
|-
 
|-
|24 || DGND
+
|7          || GND              ||  0V                      ||  8        ||  GND              ||  0V
 
|-
 
|-
|25 || MIPIDSI_DN0
+
|9          || UART2_TX_M0_DEBUG || Debug UART TX          || 10      || UART2_RX_M0_DEBUG || Debug UART RX
|-
+
|26 || MIPIDSI_DP0
+
|-
+
|27 || DGND
+
|-
+
|28 || MIPIDSI_DNCLK
+
|-
+
|29 || MIPIDSI_DPCLK
+
|-
+
|30 || DGND
+
 
|}
 
|}
  
* '''MIPI-CSI Interface Pin Spec'''
+
*'''关于电源'''
 +
** 提供2个电源输入接口,分别为5.5*2.1mm DC连接器和2针3.5mm插拔式接线端子。支持5V~20V输入, 推荐使用12V电源。
 +
**以下是各个外设接口的电源输出能力。请根据实际使用情况计算实际功耗,总和不能超过35W。注意电源适配器也要有足够的输出功率。
 
::{| class="wikitable"
 
::{| class="wikitable"
 
|-
 
|-
|Pin# || Name      
+
|'''Port''' ||'''Max Output'''     ||   '''Port'''  || '''Max Output'''
|-
+
|1, 2 || SYS_3.3V
+
|-
+
|3|| DGND
+
 
|-
 
|-
|4 || I2C0_SDA 
+
|USB-A 3.0  || 5V/2A                || USB-C/DP      || 5V/2A
 
|-  
 
|-  
||| I2C0_SCL
+
|M.2 M-Key  || 3.3V/3A              ||  M.2 E-Key    || 3.3V/3A
 
|-
 
|-
|6 || DGND
+
|MIPI-CSI0 || 5V/0.5A              || MIPI-CSI1    || 5V/0.5A
 
|-
 
|-
|7      || SPI2_MOSI/GPIOC12
+
|MIPI-DSI0  || 5V/1A                || MIPI-DSI1    || 5V/1A
 
|-
 
|-
|8      || SPI2_MISO/GPIOC11
+
|40 Pin GPIO|| 5V/0.5A, 3.3V/0.5A  || 10 Pin USB2.0 || 5V/2A
|-   
+
|9      || SPI2_CS/GPIOC10
+
 
|-
 
|-
|10      || SPI2_CLK/GPIOC9
+
|USB-A 2.0  || 5V/2A                || '''Total'''        || '''35W'''
 +
|}
 +
 
 +
* '''调试串口(旧版T6 2301)'''
 +
:: 3.3V电平, 波特率为1500000bps
 +
::{| class="wikitable"
 
|-
 
|-
|11      || DGND
+
|'''Pin#''' ||'''Assignment''' ||  '''Description ''' 
 
|-
 
|-
|12      || GPIOB9
+
|1    || GND                    || 0V
 +
|-
 +
|2  || UART2_TX_M0_DEBUG        || output
 
|-
 
|-
|13      || GPIOC2
+
||| UART2_RX_M0_DEBUG        || intput
 +
|}
 +
 
 +
*'''关于电源(旧版T6 2301)'''
 +
** 电源输入接口为5.5*2.1mm DC连接器。支持5V~20V输入, 推荐使用12V电源。
 +
** 以下是各个外设接口的电源输出能力。请根据实际使用情况计算实际功耗,总和不能超过35W。注意电源适配器也要有足够的输出功率。
 +
::{| class="wikitable"
 
|-
 
|-
|14, 15 || DGND
+
|'''Port''' ||'''Max Output'''      ||  '''Port'''  || '''Max Output'''
 
|-
 
|-
|16      || MIPICSI_DN3
+
|USB-A 3.0  || 5V/2A                || USB-C/DP    || 5V/2A
|-
+
|-  
|17      || MIPICSI_DP3
+
|M.2 M-Key  || 3.3V/3A              || M.2 E-Key    || 3.3V/3A
|-
+
|18      || DGND
+
|-
+
|19      || MIPICSI_DN2
+
|-
+
|20    || MIPICSI_DP2
+
|-
+
|21 || DGND
+
|-
+
|22 || MIPICSI_DN1
+
|-
+
|23 || MIPICSI_DP1
+
|-
+
|24 || DGND
+
|-
+
|25 || MIPICSI_DN0
+
|-
+
|26 || MIPICSI_DP0
+
 
|-
 
|-
|27 || DGND
+
|MIPI-CSI0  || 5V/0.5A              || MIPI-CSI1    || 5V/0.5A
 
|-
 
|-
|28 || MIPICSI_DNCLK
+
|MIPI-DSI0  || 5V/1A                || MIPI-DSI1    || 5V/1A
 
|-
 
|-
|29 || MIPICSI_DPCLK
+
|GPIO      || 5V/0.5A, 3.3V/0.5A  || miniPCIe      || 3.3V/3A
 
|-
 
|-
|30 || DGND
+
| Total    || 35W
 
|}
 
|}
:'''Note:'''
 
::#SYS_3.3V: 3.3V power output
 
::#VDD_5V: 5V power output
 
::#For more details refer to the document: [http://wiki.friendlyarm.com/wiki/images/0/00/NanoPC-T2_1601B_Schematic.pdf NanoPC-T2_1601B_Schematic.pdf]
 
  
===Board Dimension===
 
[[File:NanoPC-T2-T3-1603-Dimensions.png|frameless|800px|NanoPC-T2 Dimensions]]
 
  
::For more details refer to the document: [http://wiki.friendlyarm.com/wiki/images/2/24/NanoPC-T2-T3-1603-Dimensions%28dxf%29.zip NanoPC-T2-Dimensions(dxf)]
+
*'''RTC'''
 +
::RTC backup current is 0.25μA TYP (VDD =3.0V, TA =25℃).
 +
::Connector P/N: Molex 53398-0271
 +
[[File:T6-rtc.png|350px]]
  
*'''Power Jack'''
+
*'''IR receiver'''
::*DC 4.7~5.6V IN, 4.0*1.7mm Power Jack
+
::Connected to PWM3_IR_M0
::[[File:DC-023.png]]
+
::38Khz carrier frequency
 +
::compatible with NEC protocol, User code is 3B4C
 +
::Support FriendlyELEC RC100 IR controller
  
==Notes in Hardware Design==
+
==快速入门==
===EEPROM===
+
===准备工作===
* The board has an EEPROM(model: 24AA025E48T-I/OT) with a unique MAC. This EEPROM is connected to I2C0 and its address is 0x51 therefore some EEPROM chips cannot be connected to I2C0 which will cause conflicts of addresses.
+
要开启你的NanoPC-T6新玩具,请先准备好以下硬件
* In our tests these EEPROM chips cannot be connected to I2C0: 24C04, 24C08 and 24C16. There chips which we tested can be connected to I2C0: 24C01, 24C02 and 24C256
+
* NanoPC-T6主板
* For more details about EEPROM address issues refer to http://www.onsemi.com/pub_link/Collateral/CAT24C01-D.PDF
+
* MicroSD卡/TF卡: Class10或以上的 8GB SDHC卡
 +
* 一个DC接口的外接电源,要求输出为12V/2A
 +
* 如果需要开发与编译,则需要一台可以联网的电脑,推荐安装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/docker-cross-compiler-novnc docker-cross-compiler-novnc]<br />
 +
===经测试可选用的TF卡===
 +
请参考: [[Template:TFCardsWeTested/zh|TF Cards We Tested]]
 +
{{1500000SerialPortDebugSetting/zh}}
 +
===安装系统===
 +
{{Downloads-RK3588/zh|NanoPC-T6}}
 +
{{BurnLinuxToSD-Rockchip/zh|NanoPC-T6}}
 +
{{BurnLinuxToEMMC-Rockchip/zh|NanoPC-T6}}
 +
{{RockchipBootPriority/zh|NanoPC-T6}}
 +
{{FriendlyWrt21/zh|NanoPC-T6}}
 +
==Ubuntu 22.04 (Jammy)桌面系统的使用==
 +
===Ubuntu 22.04桌面系统简介===
 +
{{UbuntuJammyDesktop-Intro/zh|NanoPC-T6}}
 +
{{UbuntuJammyDesktop-Common/zh|NanoPC-T6}}
 +
{{UbuntuJammyDesktop-WithHDMI/zh|NanoPC-T6}}
 +
{{Android12/zh|NanoPC-T6}}
 +
==Debian11 桌面系统的使用==
 +
===Debian11桌面系统简介===
 +
{{DebianBullseyeDesktop-XFCE-Intro/zh|NanoPC-T6}}
 +
{{DebianBullseyeDesktop-XFCE-Common/zh|NanoPC-T6}}
 +
{{DebianBullseyeDesktop-XFCE-WithHDMI/zh|NanoPC-T6}}
 +
{{DebianBullseyeDesktop-XFCE-HDMIIN/zh|NanoPC-T6}}
 +
==Debian10 桌面系统的使用==
 +
* Refer to:
 +
** [[Debian Buster Desktop/zh|Debian Buster]]
 +
==Ubuntu 20.04 (Focal)桌面系统的使用==
 +
===Ubuntu 20.04桌面系统简介===
 +
{{UbuntuFocalDesktop-Intro/zh|NanoPC-T6}}
 +
{{UbuntuFocalDesktop-Common/zh|NanoPC-T6}}
 +
{{OfficialUbuntuCore/zh|NanoPC-T6}}
 +
{{FriendlyCoreRemoveQt/zh}}
 +
==如何编译系统==
 +
{{Rockchip-DevEnv/zh|NanoPC-T6}}
 +
{{RK3588-BuildFromSource/zh|NanoPC-T6}}
 +
{{RK3588-HWAccess/zh|NanoPC-T6}}
 +
{{RockchipMiscCustome/zh|RK3588}}
 +
{{Template:How to Initialize and Format New SSD And HDD/zh|NanoPC-T6}}
 +
{{RockchipCommonLinuxTips/zh|NanoPC-T6}}
 +
==性能测试方法==
 +
===测试2.5G网口速率===
 +
====软件下载====
 +
Windows下可以到官网下载 iperf3测速工具: https://iperf.fr/iperf-download.php <br >
 +
Linux系统可以用以下命令安装: sudo apt-get install iperf3<br >
 +
====开始测速====
 +
电脑需要配置2.5G或10G网卡, 用CAT6及以上规格的网线连接电脑到NanoPC-T6的Lan网口, <br>
 +
电脑上打开浏览器, 进入FriendlyWrt后台页面, 进入 "服务“ -> “终端”, 登录后输入以下命令启用 iperf3 服务: <br>
 +
<syntaxhighlight lang="bash">
 +
iperf3 -s -i 2
 +
</syntaxhighlight>
 +
再打开电脑的终端, 输入以下命令开始测试RX速率:
 +
<syntaxhighlight lang="bash">
 +
iperf3 -c 192.168.2.1 -i 2 -t 30 -P4
 +
</syntaxhighlight>
 +
输入以下命令开始测试TX速率:
 +
<syntaxhighlight lang="bash">
 +
iperf3 -c 192.168.2.1 -i 2 -t 30 -P4 -R
 +
</syntaxhighlight>
 +
==Link to Rockchip Resources==
 +
{{LinkToRockchipResources|NanoPC-T6}}
 +
==手册原理图等开发资料==
 +
*NanoPC-T6 2301 Schematic: https://wiki.friendlyelec.com/wiki/images/9/97/NanoPC-T6_2301_SCH.PDF
 +
*NanoPC-T6 LTS 2310 Schematic: https://wiki.friendlyelec.com/wiki/images/4/44/NanoPC-T6_LTS_2310_SCH.pdf
 +
*NanoPC-T6 2301 PCB CAD File:https://wiki.friendlyelec.com/wiki/images/9/90/NanoPC-T6_2301_DXF.zip
 +
*NanoPC-T6 LTS 2310 PCB CAD File: https://wiki.friendlyelec.com/wiki/images/0/08/NanoPC-T6_LTS_2310_DXF.zip
  
==Get Started==
+
==更新日志==
===Essentials You Need===
+
{{RK3588-UpdateLog/zh|NanoPC-T6}}
Before starting to use your NanoPC-T2 get the following items ready
+
* NanoPC-T2
+
* SD Card: Class 10 or Above, minimum 8GB SDHC
+
* A DC 5V/2A power is a must
+
* HDMI monitor or LCD
+
* USB keyboard, mouse and possible a USB hub(or a TTL to serial board)
+
* A host computer running Ubuntu 16.04 64 bit system
+
{{S5P4418BootFromSDCard|NanoPi-T2}}
+
{{BurnOSToEMMC|NanoPC-T2|s5p4418-eflasher}}
+
{{S5PXX18MakeSDCardViaSDFusing|NanoPC-T2|sd-fuse_nanopi2}}
+
{{ResizeTFCardFS|NanoPC-T2}}
+
{{S5Pxx18HDMI|NanoPC-T2|arch/arm/plat-s5p4418/nanopi2/lcds.c}}
+
{{S5Pxx18MofidyKernelCommandLineOnHostPC|NanoPC-T2|sd-fuse_nanopi2}}
+
{{NanoPCStartToUse|NanoPC-T2}}
+
{{S5P4418Software|NanoPi-T2}}
+
{{S5P4418ChangeLog}}
+

Revision as of 06:11, 17 May 2024

English

Overview
Front
Back
Case
Case
Case

Contents

1 介绍

NanoPC-T6 LTS(简称”T6”)是友善电子团队设计出品的一款开源高性能一体化边缘计算平台,它带有双2.5G网口。它采用瑞芯微RK3588作为主控处理器, 配备4GB/8GB/16GB LPDDR4x内存,和32GB/64GB/256/0GB eMMC闪存,支持运行OpenMediaVault、FriendlyWrt、Android、Android TV、Debian和Ubuntu等多种系统, 支持GPU和VPU加速。

T6接口丰富,布局紧凑,主板尺寸只有110x80mm,可选配安装一体化CNC氧化铝外壳。它带有2个HDMI输出接口和1个HDMI IN接口,可解码播放最高8K60p H.265/VP9, 以及8K30p H264等格式视频,并可录制4k60p H.265格式视频。T6还具备1个M.2 B-Key插槽,可安装使用M.2 NVME固态硬盘, 以及1个M.2 E-Key插槽, 可安装使用M.2 2230尺寸的WiFi无线模块。

另外, T6带有1个USB3.0和2个USB2.0接口, 以及1个全功能的USB-C接口,采用DC-12V供电。

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

2 NanoPC-T6资源特性

  • SoC: Rockchip RK3588
    • CPU: 四核 ARM Cortex-A76(up to 2.4GHz) + 四核 Cortex-A55 (up to 1.8GHz)
    • GPU: Mali-G610 MP4, 兼容 OpenGLES 1.1, 2.0, 3.2, 以及OpenCL (up to 2.2) 和 Vulkan1.2
    • VPU: 支持8K@60fps H.265 和 VP9 解码, 8K@30fps H.264 解码, 4K@60fps AV1 解码, 8K@30fps H.264 和 H.265 编码
    • NPU: 6TOPs, 支持INT4/INT8/INT16/FP16
  • RAM: 64-bit 4GB/8GB/16GB LPDDR4X 频率高达2133MHz
  • eMMC Flash: 32GB/64GB/256GB eMMC, 最高支持 HS400 模式
  • Nor Flash:32MB SPI Nor Flash
  • microSD: 最高支持SDR104模式
  • Ethernet: 2个PCIe扩展的2.5G以太网
  • 一个USB 3.0 Type-A
  • 一个全功能USB Type‑C™接口, 支持USB3.0数据传输和DP显示输出,分辨率高达4Kp60。
  • 两个USB 2.0 Type-A
  • 视频输入:
    • 1x Standard HDMI input port, up to 4Kp60
    • 2x 4-lane MIPI-CSI, compatible with MIPI V1.2
  • 视频输出:
    • 2个标准尺寸HDMI输出接口
      • 兼容HDMI2.1, HDMI2.0, 以及HDMI1.4
      • one support displays up to 7680x4320@60Hz, another one support up to 4Kp60
      • Support RGB/YUV(up to 10bit) format
    • USB Type‑C™ DP显示输出,分辨率高达4Kp60
    • 2 x 4-lane MIPI-DSI, compatible with MIPI DPHY 2.0 or CPHY 1.1
  • 音频:
    • 3.5mm耳机输出接口
    • 2.0mm PH-2A模拟麦克风输入接口
  • GPIO:
    • 40-Pin 2.54mm双排针接口
    • up to 2 x SPIs, 6 x UARTs, 1x I2Cs, 8 x PWMs, 2 x I2Ss, 28 x GPIOs
  • M.2 Connectors
    • one M.2 M-Key connector with PCIe 3.0 x4 for NVMe SSDs up to 2,500 MB/s
    • one M.2 E-key connector with PCIe 2.1 x1 and USB2.0 Host
  • 其它:
    • 10 Pin 2.54mm排针,包含调试串口和两路USB2.0 Host
    • 2 Pin 1.27/1.25mm RTC battery input connector for low power RTC IC HYM8563TS
    • one 38Khz IR receiver
    • MASK button for eMMC update, reset button, and Power button
    • one 5V Fan connector
    • USB-C转调试串口, 1500000bps
    • 2 x GPIO Controlled LED (SYS, LED1)
  • Power supply: 5.5*2.1mm DC插座和2针3.5mm插拔式接线端子, 12VDC input.
  • PCB: 8 Layer, 110x80x1.6mm
  • Ambient Operating Temperature: 0℃ to 70℃

3 接口布局和尺寸

3.1 NanoPC-T6-LTS

NanoPC-T6LTS Layout-L.jpg

3.2 NanoPC-T6

NanoPC-T6 Layout-L.jpg

3.3 接口布局

  • 40-pin GPIO
Pin# GPIO SPI UART I2C I2S PWM POWER Description
1,17 VCC3V3_SYS_S3 3.3V Power Output, 500mA Max
2,4 VCC_5V0 5V Power Output, 500mA Max
6,9,14,20,25,30,34,39 GND Power and Signal Ground
3 GPIO1_D7 I2C8_SDA_M2 T6内部已经通过2.2K上拉到3.3V
5 GPIO1_D6 I2C8_SCL_M2 T6内部已经通过2.2K上拉到3.3V
7 GPIO3_B2 I2S2_SDI_M1 3.3V
8 GPIO0_C5 UART0_TX_M0 PWM4_M0 3.3V
10 GPIO0_C4 UART0_RX_M0 3.3V
11 GPIO3_C2 PWM14_M0 3.3V
12 GPIO3_B7 3.3V
13 GPIO3_C3 PWM15_IR_M0 3.3V
15 GPIO1_A7 3.3V
16 GPIO3_B3 I2S2_SDO_M1 3.3V
18 GPIO3_B4 I2S2_MCLK_M1 3.3V
19 GPIO1_B2 SPI0_MOSI_M2 UART4_RX_M2 3.3V
21 GPIO1_B1 SPI0_MISO_M2 3.3V
22 GPIO1_B5 SPI0_CS1_M0 UART7_TX_M2 3.3V
23 GPIO1_B3 SPI0_CLK_M2 UART4_TX_M2 3.3V
24 GPIO1_B4 SPI0_CS0_M2 UART7_RX_M2 3.3V
26 GPIO1_B0 3.3V
27 GPIO1_A0 UART6_RX_M1 3.3V
28 GPIO1_A1 UART6_TX_M1 3.3V
29 GPIO3_B5 UART3_TX_M1 I2S2_SCLK_M1 PWM12_M0 3.3V
31 GPIO3_B6 UART3_RX_M1 I2S2_LRCK_M1 PWM13_M0 3.3V
32 GPIO0_C6 PWM5_M1 3.3V
33 GPIO3_B0 PWM9_M0 3.3V
35 GPIO3_A0 SPI4_MISO_M1 I2S3_MCLK PWM10_M0 3.3V
36 GPIO3_A3 SPI4_CS0_M1 UART8_RX_M1 I2S3_SDO 3.3V
37 GPIO3_A4 SPI4_CS1_M1 I2S3_SDI 3.3V
38 GPIO3_A1 SPI4_MOSI_M1 I2S3_SCLK 3.3V
40 GPIO3_A2 SPI4_CLK_M1 UART8_TX_M1 I2S3_LRCK 3.3V
  • MIPI-DSI
0.5mm FPC Connector
Pin# MIPI-DSI0 MIPI-DSI1 Description
1,2,3 VCC_5V0 VCC_5V0 5V Power ouput
4,7,9,11,15,18,21,24,27,30 GND GND Power and Signal Ground
5 I2C5_SDA_M0 I2C4_SDA_M3 3.3V, I2C Data, T6内部已经通过2.2K上拉到3.3V
6 I2C5_SCL_M0 I2C4_SCL_M3 3.3V, I2C Clock, T6内部已经通过2.2K上拉到3.3V
8 GPIO3_C0 GPIO4_A0 3.3V, GPIO
10 GPIO3_B1/PWM2_M1 GPIO3_D5/PWM11_M3 3.3V, GPIO/PWM
12 GPIO3_A6 GPIO4_A3 3.3V, GPIO
13 /NC /NC No Connection
14 GPIO3_C1 GPIO4_A1 3.3V, GPIO
16 MIPI_DPHY0_TX_D3N MIPI_DPHY1_TX_D3N MIPI TX Lane3 ouput N
17 MIPI_DPHY0_TX_D3P MIPI_DPHY1_TX_D3P MIPI TX Lane3 ouput P
19 MIPI_DPHY0_TX_D2N MIPI_DPHY1_TX_D2N MIPI TX Lane2 ouput N
20 MIPI_DPHY0_TX_D2P MIPI_DPHY1_TX_D2P MIPI TX Lane2 ouput P
22 MIPI_DPHY0_TX_D1N MIPI_DPHY1_TX_D1N MIPI TX Lane1 ouput N
23 MIPI_DPHY0_TX_D1P MIPI_DPHY1_TX_D1P MIPI TX Lane1 ouput P
25 MIPI_DPHY0_TX_D0N MIPI_DPHY1_TX_D0N MIPI TX Lane0 ouput N
26 MIPI_DPHY0_TX_D0P MIPI_DPHY1_TX_D0P MIPI TX Lane0 ouput P
28 MIPI_DPHY0_TX_CLKN MIPI_DPHY1_TX_CLKN MIPI TX Clock ouput N
29 MIPI_DPHY0_TX_CLKP MIPI_DPHY1_TX_CLKP MIPI TX Clock ouput P
  • MIPI-CSI
0.5mm FPC Connector
Pin# MIPI-CSI0 MIPI-CSI1 Description
1,2 VCC_5V0 VCC_5V0 5V Power ouput
3,13,15,18,21,24,27,30 GND GND Power and Signal Ground
4,5,7 /NC /NC No Connection
6 VCC_1V8_S3 VCC_1V8_S3 1.8V Power ouput, 100mA Max
8 VSYNC_MASTER VSYNC_SLAVE 用于两个摄像头的同步信号互联,T6内部已经短接了这两个Pin
9 I2C3_SCL_M0 I2C7_SCL_M0 1.8V, I2C Clock, T6内部已经通过2.2K上拉到1.8V
10 I2C3_SDA_M0 I2C7_SDA_M0 1.8V, I2C Data, T6内部已经通过2.2K上拉到1.8V
11 GPIO4_C4 GPIO2_C1 1.8V, GPIO
12 GPIO4_C5 GPIO2_C2 1.8V, GPIO
14 MIPI_CAM1_CLKOUT MIPI_CAM2_CLKOUT 1.8V, CLock ouput for Sensor
16 MIPI_CSI0_RX_D3P MIPI_CSI1_RX_D3P MIPI RX Lane3 iuput P
17 MIPI_CSI0_RX_D3N MIPI_CSI1_RX_D3N MIPI RX Lane3 iuput N
19 MIPI_CSI0_RX_D2P MIPI_CSI1_RX_D2P MIPI RX Lane2 iuput P
20 MIPI_CSI0_RX_D2P MIPI_CSI1_RX_D2N MIPI RX Lane2 iuput N
22 MIPI_CSI0_RX_D1P MIPI_CSI1_RX_D1P MIPI RX Lane1 iuput P
23 MIPI_CSI0_RX_D1N MIPI_CSI1_RX_D1N MIPI RX Lane1 iuput N
25 MIPI_CSI0_RX_CLK0P MIPI_CSI1_RX_CLK0P MIPI RX Clock iuput P
26 MIPI_CSI0_RX_CLK0N MIPI_CSI1_RX_CLK0N MIPI RX Clock iuput N
28 MIPI_CSI0_RX_D0P MIPI_CSI1_RX_D0P MIPI RX Lane0 iuput P
29 MIPI_CSI0_RX_D0N MIPI_CSI1_RX_D0N MIPI RX Lane0 iuput N
  • 10 Pin Debug UART & USB 2.0 排针
Debug UART is 3.3V level signals, 1500000bps
Pin# Assignment Description Pin# Assignment Description
1 USB 5V 5V Power Output(1A Max) 2 USB 5V 5V Power Output(1A Max)
3 USB_HS2_DM USB 2.0 Host DM 4 USB_HS3_DM USB 2.0 Host DM
5 USB_HS2_DP USB 2.0 Host DP 6 USB_HS3_DP USB 2.0 Host DP
7 GND 0V 8 GND 0V
9 UART2_TX_M0_DEBUG Debug UART TX 10 UART2_RX_M0_DEBUG Debug UART RX
  • 关于电源
    • 提供2个电源输入接口,分别为5.5*2.1mm DC连接器和2针3.5mm插拔式接线端子。支持5V~20V输入, 推荐使用12V电源。
    • 以下是各个外设接口的电源输出能力。请根据实际使用情况计算实际功耗,总和不能超过35W。注意电源适配器也要有足够的输出功率。
Port Max Output Port Max Output
USB-A 3.0 5V/2A USB-C/DP 5V/2A
M.2 M-Key 3.3V/3A M.2 E-Key 3.3V/3A
MIPI-CSI0 5V/0.5A MIPI-CSI1 5V/0.5A
MIPI-DSI0 5V/1A MIPI-DSI1 5V/1A
40 Pin GPIO 5V/0.5A, 3.3V/0.5A 10 Pin USB2.0 5V/2A
USB-A 2.0 5V/2A Total 35W
  • 调试串口(旧版T6 2301)
3.3V电平, 波特率为1500000bps
Pin# Assignment Description
1 GND 0V
2 UART2_TX_M0_DEBUG output
3 UART2_RX_M0_DEBUG intput
  • 关于电源(旧版T6 2301)
    • 电源输入接口为5.5*2.1mm DC连接器。支持5V~20V输入, 推荐使用12V电源。
    • 以下是各个外设接口的电源输出能力。请根据实际使用情况计算实际功耗,总和不能超过35W。注意电源适配器也要有足够的输出功率。
Port Max Output Port Max Output
USB-A 3.0 5V/2A USB-C/DP 5V/2A
M.2 M-Key 3.3V/3A M.2 E-Key 3.3V/3A
MIPI-CSI0 5V/0.5A MIPI-CSI1 5V/0.5A
MIPI-DSI0 5V/1A MIPI-DSI1 5V/1A
GPIO 5V/0.5A, 3.3V/0.5A miniPCIe 3.3V/3A
Total 35W


  • RTC
RTC backup current is 0.25μA TYP (VDD =3.0V, TA =25℃).
Connector P/N: Molex 53398-0271

T6-rtc.png

  • IR receiver
Connected to PWM3_IR_M0
38Khz carrier frequency
compatible with NEC protocol, User code is 3B4C
Support FriendlyELEC RC100 IR controller

4 快速入门

4.1 准备工作

要开启你的NanoPC-T6新玩具,请先准备好以下硬件

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线刷时使用
图标 文件名 版本 描述 内核版本
Debian-icon.svg rk3588-XYZ-debian-bullseye-core-6.1-arm64-YYYYMMDD.img.gz bullseye Debian11 精简版固件,没有桌面, 仅命令行 6.1.y
Debian-icon.svg rk3588-XYZ-debian-bullseye-minimal-6.1-arm64-YYYYMMDD.img.gz bullseye Debian11 系统固件,Xfce桌面, 不预装推荐软件包, 支持GPU/VPU硬件加速 6.1.y
Debian-icon.svg rk3588-XYZ-debian-bullseye-desktop-6.1-arm64-YYYYMMDD.img.gz bullseye Debian11 完整版固件,Xfce桌面, 预装推荐软件包, 支持GPU/VPU硬件加速 6.1.y
Ubuntu-icon.svg rk3588-XYZ-ubuntu-focal-desktop-6.1-arm64-YYYYMMDD.img.gz focal Ubuntu 20.04固件, LXQT桌面,支持GPU/VPU硬件加速 6.1.y
Ubuntu-icon.svg rk3588-XYZ-ubuntu-jammy-desktop-6.1-arm64-YYYYMMDD.img.gz jammy Ubuntu 22.04固件, 使用GNOME与Wayland,预装网页浏览器等推荐软件 6.1.y
Ubuntu-icon.svg rk3588-XYZ-ubuntu-jammy-minimal-6.1-arm64-YYYYMMDD.img.gz jammy 精简版Ubuntu 22.04固件, 使用GNOME与Wayland, 不预装推荐软件 6.1.y
Ubuntu-icon.svg rk3588-XYZ-ubuntu-jammy-x11-desktop-arm64-YYYYMMDD.img.gz jammy Ubuntu 22.04固件, 基于X11与Xubuntu,使用panfrost GPU驱动,集成rkmpp/mpv实现视频硬件加速 6.1.y
Ubuntu-icon.svg rk3588-XYZ-friendlycore-focal-6.1-arm64-YYYYMMDD.img.gz focal FriendlyCore系统固件,预装了Qt5, 仅命令行,基于Ubuntu core 20.04构建 6.1.y
Android-icon.svg rk3588-XYZ-androidtv-YYYYMMDD.img.zip 12 Android 12 TV 6.1.y
Android-icon.svg rk3588-XYZ-android12-YYYYMMDD.img.zip 12 Android 12 Tablet 6.1.y
Openmediavault250.png rk3588-XYZ-openmediavault-6.1-YYYYMMDD.img.gz Shaitan OpenMediaVault NAS系统,基于Debian12构建 6.1.y
Openwrt-icon.svg rk3588-XYZ-friendlywrt-21.02-YYYYMMDD.img.gz 21.02 FriendlyWrt, 基于OpenWrt 21.02 6.1.y
Openwrt-icon.svg rk3588-XYZ-friendlywrt-21.02-docker-YYYYMMDD.img.gz 21.02 预装了Docker的FriendlyWrt, 基于OpenWrt 21.02 6.1.y
Openwrt-icon.svg rk3588-XYZ-friendlywrt-23.05-YYYYMMDD.img.gz 23.05 FriendlyWrt, 基于OpenWrt 23.05 6.1.y
Openwrt-icon.svg rk3588-XYZ-friendlywrt-23.05-docker-YYYYMMDD.img.gz 23.05 预装了Docker的FriendlyWrt, 基于OpenWrt 23.05 6.1.y
Other Image
Openwrt-icon.svg Github Actions - FriendlyWrt云编译版本 21.02,23.05 FriendlyWrt 6.1.y
Linux-tux.svg rk3588-eflasher-multiple-os-YYYYMMDD-25g.img.gz - 内含了多个操作系统的eMMC烧写文件,方便测试各个OS
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卡从电脑端弹出,插入NanoPC-T6的microSD卡槽;
  • 连接NanoPC-T6的电源,系统会从TF卡启动, 某些型号可能需要按下Power键才会启动;

4.4.3 烧写系统到eMMC

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

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

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

进度

SYS灯 (红灯)

上电开机

长亮

系统启动

慢闪

正在烧写

快闪

烧写完成

慢闪

默认情况下烧写是上电自动开始的,所以要注意备份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卡从电脑端弹出,插入NanoPC-T6的microSD卡槽;
  • 连接NanoPC-T6的电源,系统会从SD卡启动,并自动启动 EFlasher 烧写工具将系统安装到 eMMC;
  • 烧写完成后,从NanoPC-T6弹出SD卡,NanoPC-T6会自动重启并从eMMC启动你刚刚烧写的系统;
4.4.3.1.2 烧写第三方固件(镜像文件)到eMMC

1) 从网盘上下载文件名带 eflasher 字样的任意固件(位于"01_系统固件/02_SD卡刷机固件(SD-to-eMMC)"目录), 解压后烧进TF卡;
2) 重新拨插一次TF卡, PC上会出现一个名为FriendlyARM的盘符(Linux下是FriendlyARM目录), 将 .img 或者 .gz结尾的固件复制进去;
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卡放在NanoPC-T6上上电启动, 会自动烧写你的固件, 通过板载 LED 灯来了解安装进度;

4.4.3.2 方法2: 在网页上烧写

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

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

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

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

4.4.3.3.2 USB烧写步骤2: 将NanoPC-T6与电脑连接, 并进入刷机模式

1) 断开NanoPC-T6上连接的USB和电源线, 弹出TF卡;
2) 按住Mask按键不放, 插上电源, 保持按住Mask键, 状态灯亮起3秒后即可松开;
3) 用USB C-to-A数据线, 将NanoPC-T6与电脑进行连接, 连接到NanoPC-T6的USB C接口
T6LTS-usbflash.jpg

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.5 eMMC与TF卡的启动优先级说明 (救砖办法)

默认情况下, 会优先从 TF卡启动系统, 但并不是所有条件下都是这样, 本节内容将详细说明所有情况;

引用Rockchip官方文档[1]的描述,系统引导程序(Loader)分为以下2种:
1) U-Boot TPL/SPL (即upsream U-Boot, 也叫主线U-Boot)
2) Rockchip MiniLoader

需要留意的是:
1) FriendlyELEC发布的所有Rom均采用的都是第2种,即Rockchip MiniLoader
2) 第三方固件通常采用的是第1种, 即 U-Boot TPL/SPL

以下情况将总是从 eMMC 启动 (意味着无法通过TF卡烧写系统了):
1) 如果eMMC里的系统, 或者TF卡里的系统是采用第一种Loader类型U-Boot TPL/SPL的, 上电将总是从 eMMC启动;
2) eMMC内的系统并没有适配NanoPC-T6, 也就是说Loader压根就是坏的;

这时, 可以用如下方法让NanoPC-T6从TF卡启动系统, 进行系统重装或Flash擦除:
1) 插入一张烧写有FriendlyWrt系统的TF卡 (制作方法请参考上面的章节);
2) 按下Maskrom按键, 并上电开机 (或短接Maskrom触点);
3) 重要: 上电后默数4秒左右立即松开Maskrom按键;
4) NanoPC-T6将会从TF卡启动FriendlyWrt系统;
5) 用网线连接电脑到NanoPC-T6的LAN网口, 在电脑上输入网址 http://192.168.2.1 进入FriendlyWrt管理页面, 使用系统菜单中的eMMC刷机工具重新烧写系统到 eMMC;
6) 如果你仅仅想清除eMMC上的数据, 可以上传一个内容全是零的img文件刷进eMMC, 该文件在电脑上可以用如下命令生成, 因eMMC刷机工具在烧写系统时会先对eMMC进行全面擦除, 所以img文件的大小是不重要的:

dd if=/dev/zero of=~/empty.img bs=8M count=1

或者, 进入命令终端, 输入以下命令尝试清除eMMC上的 Loader:

dd if=/dev/zero of=/dev/mmcblk2 bs=8M count=25


常见问题:
如果用TF卡启动系统后,发现系统检测不到eMMC,可能的原因是上电后按下Markrom键太长时间, 正确方法是按住4秒立即松开;
请确认你使用了最新固件(日期2022-07-25之后的固件), 然后重新操作一次;

总结如下:

eMMC当前系统 TF卡当前系统 启动优先级
无系统 任意固件 TF卡
FriendlyELEC的固件 FriendlyELEC的固件 TF卡
FriendlyELEC的固件 采用主线U-boot的固件 eMMC
采用主线U-boot的固件 FriendlyELEC的固件 eMMC
采用主线U-boot的固件 采用主线U-boot的固件 eMMC

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登录,建议在将NanoPC-T6连接到互联网之前完成此设置。

5.4 登录FriendlyWrt

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

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

5.5 建议的安全性设置

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

  • 设置一个安全的密码

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

  • 禁止从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.cloud.tencent.com/openwrt/releases/23.05.2/packages/aarch64_cortex-a53/base
src/gz openwrt_luci https://mirrors.cloud.tencent.com/openwrt/releases/23.05.2/packages/aarch64_cortex-a53/luci
src/gz openwrt_packages https://mirrors.cloud.tencent.com/openwrt/releases/23.05.2/packages/aarch64_cortex-a53/packages
src/gz openwrt_routing https://mirrors.cloud.tencent.com/openwrt/releases/23.05.2/packages/aarch64_cortex-a53/routing
src/gz openwrt_telephony https://mirrors.cloud.tencent.com/openwrt/releases/23.05.2/packages/aarch64_cortex-a53/telephony
src/gz friendlywrt_packages file://opt/packages
  • 注意, friendlywrt_packages需要保留, 否则会缺少一些系统依赖;
  • 如果你使用的是 friendlywrt 21.02 的固件, 则将上面的 23.05.2 替换成 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,而NanoPC-T6工作在IPv6,电脑有可能无法连接互联网,建议关闭IPv6 (本WiKi后面有介绍方法),或将主路由切换到IPv6;
  • 如果你有问题,或有更好的建议,欢迎发送邮件到 techsupport@friendlyarm.com;

5.11 禁用IPv6

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

. /root/setup.sh
disable_ipv6
reboot

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

5.12 配置用户按键的功能

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

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

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

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

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

Friendlywrt-ec20-config-cn.png

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

Friendlywrt-ec20-netstatus-cn.png

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

5.14 使用USB2LCD查看IP和温度

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

. /root/setup.sh
init_lcd2usb
poweroff

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


5.15 如何使用M.2 WiFi

  • NanoPC-T6支持的M.2 WiFi型号为: rtl8822ce

5.15.1 AP模式

  • FriendlyWrt系统的无线功能默认是关闭状态, 要启用WiFi, 可点击“网络>无线”进入配置无线WiFi界面, 找到“无线未启用”那一行, 点击后面的“启用”按钮即可
  • 启用后, 在手机上搜索连接名称类拟 FriendlyWrt-xx:yy:zz 名称的WiFi热点, 输入默认密码password即可连接

5.15.2 无线中继模式

NanoPiAPMode.jpg

  • 连接到主无线路由器

点击 "网络" -> "无线", 在界面上点击 "Generic MAC80211 802.11ac/b/g/n" 后面的 "扫描" 按钮扫描网络,点击无线路由器后面的 "加入网络" 按钮,
在加入网络的配置页面中,勾选 "重置无线配置",在 "WPA密钥"一栏中输入密钥,其他配置保持默认,点 "提交",
点击 "高级设置", 在 “接口名称” 中输入 "wlan0", 再点击 "保存",
最后点 "保存并应用", 连接成功后,可以在FriendlyWrt首页看到IP地址。

  • 创建无线热点

点击 "网络" -> "无线",在界面上点击 "Generic MAC80211 802.11ac/b/g/n" 后面的 "添加" 按钮,将会弹出 "编辑无线网络" 页面,
在 "工作频率" 一栏中设置无线信道(例如"40 (5200 MHz)"),
在 "ESSID" 一栏中,输入热点名称,
在 "网络" 一栏中,钩选 "lan",
点击 "无线安全", 设置加密类型 (例如 "WPA2-PSK(强安全性)")和密钥,
点击 "高级设置", 在 “接口名称” 中输入 "wlan1",
然后点击 "保存", 然后点击 "保存并应用",
由于需要重启才能生效,点击 "系统" 选择 "重启"。

5.16 如何使用USB WiFi

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

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

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

lsusb

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

lsusb

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

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

5.16.2 如何使用USB WiFi作为AP

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

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

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

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

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

5.16.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.16.4 更改系统默认的WiFi热点配置

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

/lib/wifi/mac80211.sh

5.17 玩转Docker应用

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

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

5.17.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.3 使用外接硬盘来扩展Docker可用空间

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

Friendlywrt mount nvme opt-zh.jpg

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

Friendlywrt docker info-zh.jpg

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

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

解决办法:

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

5.18 挂载smbfs共享资源

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


5.19 使用sdk编译软件包

5.19.1 安装编译环境

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

5.19.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.19.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.19.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.20 使用 GitHub Actions 编译 FriendlyWrt

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

6 Ubuntu 22.04 (Jammy)桌面系统的使用

6.1 Ubuntu 22.04桌面系统简介

Ubuntu 22.04 桌面 具有如下特点:

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

Ubuntu2204desktop.png

6.2 Account & Password

6.3 帐户与密码

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

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

6.4 查看IP地址

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

ping FriendlyElec.lan

6.5 通过ssh登录Ubuntu

ssh pi@FriendlyElec.lan

默认密码为pi

6.6 更新软件包

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

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

6.6.2 更新软件包列表

$ sudo apt-get update

6.7 安装软件中心

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

6.8 安装内核头文件

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

测试编译内核模块:

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

6.9 更改时区

6.9.1 检查当前时区

timedatectl

6.9.2 列出所有时区

timedatectl list-timezones

6.9.3 设置时区 (比如上海)

sudo timedatectl set-timezone Asia/Shanghai

6.10 更换开机LOGO和桌面墙纸

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

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

6.10.2 恢复出厂设置

在终端上执行如下命令:

sudo firstboot && sudo reboot

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

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

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

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

sudo systemctl mask udisks2
sudo reboot

6.13 设置中文语言与输入法

6.13.1 设置中文语言

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

sudo dpkg-reconfigure locales

添加环境变量到 .bashrc:

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

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

sudo reboot

6.14 硬解播放视频

6.14.1 界面播放

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

6.14.2 命令行播放

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

6.15 安装Plex多媒体服务器

运行以下命令安装:

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

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

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

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

6.16 安装Docker

6.16.1 安装docker

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

验证是否安装成功:

sudo docker info

6.16.2 不使用sudo运行docker

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

验证是否成功:

docker images

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

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

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

6.17 取消桌面的自动登录

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

[daemon]
AutomaticLoginEnable = false

6.18 设置WiFi无线链接

6.18.1 图形界面操作

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

6.18.2 命令行操作

请参考 Use NetworkManager to configure network settings/zh

6.19 测试OpenGL ES性能

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

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

然后启动glmark2-es2-wayland:

glmark2-es2-wayland

6.20 Chromium网页浏览器

6.20.1 GPU支持情况

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

6.20.2 VPU支持情况

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

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

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

6.20.3 查看支持的硬解格式

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

7 Android系统的使用

Android系统特性:

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

AndroidTV12.png

7.1 Android系统支持的WIFI型号

7.1.1 M.2 WiFi Module

  • RTL8822CE

7.1.2 Usb Dongle

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

7.2 Android系统支持的蓝牙型号

7.2.1 蓝牙模块

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

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

7.2.2 蓝牙遥控器

  • Amazon Fire TV Remote

7.3 ADB的使用

7.3.1 Android Tablet界面下开启

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

7.3.2 Android TV界面下开启

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

7.3.3 通过USB使用adb

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

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

7.3.4 通过网络使用adb

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

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

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

7.4 更换Android TV默认的Launcher桌面

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

Androidtv-default-launcher.png

7.5 Android下的有线网络

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

7.6 Andorid下使用EC20 4G模块

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

su
getprop persist.vendor.radio.no_modem_board

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

su
setprop persist.vendor.radio.no_modem_board 0

8 Debian11 桌面系统的使用

8.1 Debian11桌面系统简介

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

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

Debian11-xfce.png

8.2 帐户与密码

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

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

8.3 查看IP地址

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

8.4 通过ssh登录Debian

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

8.5 更新软件包

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

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

8.6 安装x11vnc远程桌面

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

8.6.1 安装x11vnc

sudo apt-get install x11vnc

8.6.2 设置VNC登录密码

sudo x11vnc -storepasswd /etc/x11vnc.pwd

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

新建如下文件:

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

内容如下:

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

设置systemd服务:

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

8.6.4 测试远程桌面

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

8.7 安装内核头文件

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

测试编译内核模块:

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

8.8 更改时区

8.8.1 检查当前时区

timedatectl

8.8.2 列出所有时区

timedatectl list-timezones

8.8.3 设置时区 (比如上海)

sudo timedatectl set-timezone Asia/Shanghai

8.9 更换开机LOGO和桌面墙纸

8.9.1 更换开机LOGO

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

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

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

8.9.2 更换桌面墙纸

修改如下配置文件:

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

8.9.3 恢复出厂设置

在终端上执行如下命令:

sudo firstboot && sudo reboot

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

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

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

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

sudo systemctl mask udisks2
sudo reboot

8.12 设置中文语言与输入法

8.12.1 设置中文语言

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

sudo dpkg-reconfigure locales

添加环境变量到 .bashrc:

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

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

sudo reboot

8.12.2 安装中文输入法

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

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

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

8.13 安装Plex多媒体服务器

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

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

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

8.14 在Debian系统上安装Docker

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

8.15 如何测试NPU

请参考此链接: NPU/zh

8.16 设置WiFi无线链接

8.16.1 图形界面操作

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

8.16.2 命令行操作

请参考 Use NetworkManager to configure network settings/zh

8.17 取消自动登录

编辑文件:

sudo vim /etc/lightdm/lightdm.conf

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

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

8.18 测试OpenGL ES性能

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

glmark2-es2

8.19 设置HDMI/DP屏幕分辨率

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

8.20 设置HiDPI屏幕缩放

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

8.21 调节HDMI边界

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

export DISPLAY=:0.0

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

xrandr -q

输出示例:

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

8.21.2 设置分辨率

例如设置为 1920X1080@60Hz:

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

8.21.3 设节HDMI输出边界

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

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

8.21.4 开机自动调整

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

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

8.22 Chromium网页浏览器

8.22.1 GPU支持情况

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

8.22.2 VPU支持情况

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

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

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

8.22.3 查看支持的硬解格式

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

8.23 测试mpp视频硬件编码

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

8.24 HDMI-IN的使用

8.24.1 使用脚本

debian集成了hdmirx_preview.sh测试脚本,直接运行该脚本即可:

pi@NanoPC-T6:~$ hdmirx_preview.sh

脚本路径: /usr/local/bin/hdmirx_preview.sh
请留意,只有NV12格式才能达到最佳性能。

8.24.2 使用V4L2命令

HDMI-IN 设备的节点为:/dev/video0,可以通过v4l2的命令来操作它。

  • 获取设备信息
pi@NanoPC-T6:~$ v4l2-ctl -d /dev/video0  -V -D
Driver Info:
	Driver name      : rk_hdmirx
	Card type        : rk_hdmirx
	Bus info         : fdee0000.hdmirx-controller
	Driver version   : 5.10.110
	Capabilities     : 0x84201000
		Video Capture Multiplanar
		Streaming
		Extended Pix Format
		Device Capabilities
	Device Caps      : 0x04201000
		Video Capture Multiplanar
		Streaming
		Extended Pix Format
Format Video Capture Multiplanar:
	Width/Height      : 3840/2160
	Pixel Format      : 'NV12' (Y/CbCr 4:2:0)
	Field             : None
	Number of planes  : 1
	Flags             : premultiplied-alpha, 0x000000fe
	Colorspace        : Unknown (0x11507070)
	Transfer Function : Unknown (0x000000b8)
	YCbCr/HSV Encoding: Unknown (0x000000ff)
	Quantization      : Default
	Plane 0           :
	   Bytes per Line : 3840
	   Size Image     : 12441600
  • 查看当前连接的设备的分辨率与图像格式
pi@NanoPC-T6:~$ v4l2-ctl -d /dev/video0 --get-fmt-video
Format Video Capture Multiplanar:
	Width/Height      : 3840/2160
	Pixel Format      : 'NV12' (Y/CbCr 4:2:0)
	Field             : None
	Number of planes  : 1
	Flags             : premultiplied-alpha, 0x000000fe
	Colorspace        : Unknown (0x1193b008)
	Transfer Function : Unknown (0x000000b8)
	YCbCr/HSV Encoding: Unknown (0x000000ff)
	Quantization      : Default
	Plane 0           :
	   Bytes per Line : 3840
	   Size Image     : 12441600
  • 获取一帧图像
pi@NanoPC-T6:~$ v4l2-ctl  -d /dev/video0 --set-fmt-video=width=3840,height=2160,pixelformat='NV12' \
    --stream-mmap=4 --stream-skip=10  --stream-to=/home/pi/4k_nv12.yuv --stream-count=1 \
    --stream-poll
  • 预览图像

使用ffplay:

ffplay -f rawvideo -video_size 3840x2160 -pixel_format nv12 4k_nv12.yuv

使用mpv:

mpv 4k_nv12.yuv --demuxer=rawvideo --demuxer-rawvideo-w=3840 --demuxer-rawvideo-h=2160 \
    --demuxer-rawvideo-mp-format=nv12 --demuxer-rawvideo-fps=60
  • 查看HDMI-IN音频设备
pi@NanoPC-T6:~$ cat /proc/asound/card*
 0 [rockchipdp0    ]: rockchip_dp0 - rockchip,dp0
                      rockchip,dp0
 1 [rockchiphdmi0  ]: rockchip_hdmi0 - rockchip,hdmi0
                      rockchip,hdmi0
 2 [realtekrt5616co]: realtek_rt5616- - realtek,rt5616-codec
                      realtek,rt5616-codec
 3 [rockchiphdmi1  ]: rockchip_hdmi1 - rockchip,hdmi1
                      rockchip,hdmi1
 4 [rockchiphdmiin ]: rockchip_hdmiin - rockchip,hdmiin
                      rockchip,hdmiin

可以看到,rockchiphdmiin的声卡号为4

  • 录制音频(录制10秒)
pi@NanoPC-T6:~$ arecord -D hw:4,0 -f cd test.wav -d 10
  • 回放所录制的音频(输出到HDMI0)
pi@NanoPC-T6:~$ aplay test.wav -D 'hw:rockchiphdmi0'

8.24.3 使用GStreamer

  • 实时预览
pi@NanoPC-T6:~$ export DISPLAY=:0.0
pi@NanoPC-T6:~$ gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-raw,format=NV12,width=3840,height=2160,framerate=60/1 \
	! queue ! xvimagesink
  • 音视频录制
pi@NanoPC-T6:~$ gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-raw,format=NV12,width=3840,height=2160,framerate=60/1 \
	! queue ! mpph265enc ! h265parse ! queue ! mux. alsasrc device=hw:CARD=rockchiphdmiin ! audio/x-raw,channels=2 \
	! audioconvert ! voaacenc ! queue ! mux. matroskamux name=mux ! filesink location="4kp60.mkv"
  • 实时预览+音视频录制
pi@NanoPC-T6:~$ export DISPLAY=:0.0
pi@NanoPC-T6:~$ gst-launch-1.0 -e v4l2src device=/dev/video0 ! 'video/x-raw,format=NV12,width=3840,height=2160' \
	! tee name=t t. ! mpph265enc bps=20000000 bps-max=40000000 rc-mode=vbr ! h265parse ! mp4mux name=mux \
	! filesink location=4k60.mp4 alsasrc device=hw:CARD=rockchiphdmiin ! opusenc ! mux. t. ! queue leaky=1 ! autovideosink sync=false

9 Debian10 桌面系统的使用

10 Ubuntu 20.04 (Focal)桌面系统的使用

10.1 Ubuntu 20.04桌面系统简介

Ubuntu 20.04 桌面 具有如下特点:

  • 基于Xorg, 采用 LXQT 作为桌面环境;
  • 使用SDDM作为显示管理器(display manager);
  • 提供基于 Mali GPU 的 OpenGL ES 支持;
  • 支持Rockhip MPP视频硬编和硬解码;
  • 预装基于mpv, 支持视频硬解码;

Ubuntu2004desktop.png

10.2 Account & Password

10.3 帐户与密码

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

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

10.4 关闭自动休眠和屏幕保护

sed -i 's/enableIdlenessWatcher=true/enableIdlenessWatcher=false/g' .config/lxqt/lxqt-powermanagement.conf
echo "mode:           off" > ~/.xscreensaver
sudo reboot

10.5 设置自动登录

创建目录与文件

sudo mkdir /etc/sddm.conf.d
sudo vim /etc/sddm.conf.d/autologin

autologin文件内容如下:

[Autologin]
User=pi
Session=lxqt.desktop
Relogin=false

重启。

10.6 测试视频播放

  • mpv
mpv ~/Videos/demo.mp4
  • gsteamer命令行
gst-play-1.0 ~/Videos/demo.mp4 --videosink=xvimagesink

详请可搜索并参考官方文档<<rockchip_user_guide_linux_gstreamer_en.pdf>>

10.7 切换成中文语言

菜单进入 "Preferences" -> "Locale",在 "Region" 处选择 "中国 - 简体中文(zh_CN)" 保存,然后注销或者重启系统即可。

11 FriendlyCore的使用

11.1 FriendlyCore默认帐户

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

11.2 更新软件包

$ sudo apt-get update

11.3 配置网络

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

另1个网口设置了静态IP地址, 设置如下:
eth1: 192.168.2.1

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

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

11.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。

11.4.1 重点支持的WIFI型号

11.4.1.1 M.2 WiFi Module
  • RTL8822CE
11.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)

11.5 安装内核头文件

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

11.6 配置状态灯

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

sudo systemctl status leds

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

/etc/init.d/leds.sh

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

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

下面的脚本代码将板载LED1与第一个网卡相关联, 需要加入到开机自动运行的脚本中:

echo netdev > /sys/class/leds/usr_led/trigger
echo eth0 > /sys/class/leds/usr_led/device_name
echo 1 > /sys/class/leds/usr_led/link

11.7 删除Qt5及相关文件

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

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

12 如何编译系统

12.1 搭建编译环境

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

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

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

12.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
12.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)

12.2 编译 Openwrt/Friendlywrt

12.2.1 下载源代码

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

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

12.2.2 首次编译

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

./build.sh rk3588.mk

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

./build.sh emmc-img

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

./build.sh sd-img

12.2.3 二次编译

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

12.2.4 单独编译u-boot

./build.sh uboot

12.2.5 单独编译kernel

./build.sh kernel

12.2.6 单独编译friendlywrt

./build.sh friendlywrt

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

cd friendlywrt
make -j1 V=s

12.3 编译Buildroot

请参考: Buildroot

12.4 其他Linux系统编译

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

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

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

下载源代码并编译:

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

完成后会得到如下文件:

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

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

12.4.3 编译u-boot v2017.09

下载源代码并编译:

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

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

uboot.img rk3588_spl_loader_v1.08.111.bin (打包时改名为MiniLoaderAll.bin)

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

12.4.4 应用新编译的uboot与内核

12.4.4.1 安装到目标板

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

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

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

parted /dev/mmcblk2 print

得到如下输出:

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

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

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

如果要更新uboot:

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

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

12.4.4.2 打包新的SD Image

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

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

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

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

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

sudo reboot loader

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

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

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

12.5 使用脚本进行编译

12.5.1 下载工具与固件

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

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

12.5.2 编译内核

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

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

12.5.3 编译内核头文件

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

12.5.4 编译uboot

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

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

12.5.5 生成新固件

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

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

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

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

12.6 Android系统编译

12.6.1 电脑的软硬件要求

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

12.6.2 从网盘下载Android源代码

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

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

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

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

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

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

12.6.5 二次编译

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

12.6.6 安装Android

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

12.6.6.1 USB线刷

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

12.6.6.2 SD卡烧写

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

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

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

12.6.7 打包成新的SD Image

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

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

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

13.1 备份根文件系统

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

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

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

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

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

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


14 初始化NVME固态硬盘和USB移动硬盘

14.1 检查是否检测到了硬盘

安装好硬盘后, 上电开机, 在终端上输入以下命令:

cat /proc/partitions

看到有 nvme0n1 设备的节点,说明NVME固态硬盘已经成功被识别到了:

major minor  #blocks  name
   1        0       4096 ram0
 259        0  125034840 nvme0n1

看到有 sda 设备的节点,说明USB移动硬盘已经成功被识别到了:

 179      105   30646767 mmcblk0p9
   8        0 3907018584 sda
   8        1 3907017543 sda1

14.2 给硬盘重新分区并格式化为ext4格式

为了简化操作, 我们会将硬盘整个空间分成一个分区, 如果你用的是NVME固态硬盘, 输入以下命令进行操作:

(echo g; echo n; echo p; echo 1; echo ""; echo ""; echo w; echo q) | fdisk /dev/nvme0n1
mkfs.ext4 /dev/nvme0n1p1

如果要对USB移动硬盘进行操作, 输入以下命令:

(echo g; echo n; echo p; echo 1; echo ""; echo ""; echo w; echo q) | fdisk /dev/sda
mkfs.ext4 /dev/sda1

14.3 硬盘的自动挂载

14.3.1 在FriendlyWrt系统下挂载

在FriendlyWrt菜单中, 点击"系统"->"挂载点"界面, 在页面底部的"挂载点"的区域中, 点击"新增"按钮, 在UUID一栏中,选择你的硬盘分区, NVME固态硬盘选择 /dev/nvme0n1p1, 如果是USB移动硬盘, 则选择 /dev/sda1, 然后钩选"已启动“, 填写挂载硬盘的目标位置, 本例中选择将 NVME固态硬盘 挂载到 /mnt 目录, 如下图所示:
Friendlywrt mount disk-zh.jpg
点击"Save"按钮保存设置, 挂载完成后界面会列出所挂载的硬盘, 如下图所示:
Friendlywrt mount disk finish-zh.jpg

14.3.2 在FriendlyCore系统下挂载

首先,我们需要了解分区的Block ID,用blkid查看, NVME固态硬盘输入如下命令查看:

blkid /dev/nvme0n1p1

USB移动固态硬盘输入如下命令查看:

blkid /dev/sda1

输入信息如下所示, 我们需要的是UUID:

/dev/sda1: UUID="de29e869-f442-414a-8dc4-9c47c05b229f" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="b026f952-01"

然后需要把 UUID 添加到 /etc/fstab 文件中去,为了挂载本例中使用的硬盘,/etc/fstab内容如下所示:

UUID=de29e869-f442-414a-8dc4-9c47c05b229f /media/mydisk ext4 defaults 0 0

硬盘将挂载到 /media/mydisk 目录,这个目录默认是不存在的,我们用以下命令手动创建它,并设置为普通用户可以读写:

mkdir -p /media/mydisk
chmod 777 /media/mydisk

接下来就可以输入mount命令,测试一下是否能正常挂载了:

mount /media/mydisk

如果成功挂载, 接下来我们关机测试一下,看下次开机是否会自动挂载:

reboot

14.4 为硬盘设置网络共享

14.4.1 提升硬件挂载目录的权限

为了方便普通用户的读取, 进入终端, 输入以下命令先提升硬件挂载目录的权限:

chmod 777 /mnt

14.4.2 FriendlyWrt下设置网络共享

进入 “服务” -> "网络共享" 菜单, 在页面底部的 “共享目录” 区域, 点击 “新增” 按钮, 分别填写 "名称" 与 "路径" 为 mnt 和 /mnt, 其他默认, 点击 "保存并应用" 即可.

14.4.3 在电脑上访问共享

在Windows电脑上输入以下地址访问共享目录:

\\192.168.2.1\mnt

在Ubuntu/Mac电脑上使用以下地址访问共享目录:

smb://192.168.2.1/mnt

在询问身份验证时, 输入如下信息:
连接方式: 已注册用户
用户名: root
域: WORKGROUP
密码: password

14.5 本机上进行硬盘速度测试

14.5.1 NVME固态硬盘速度测试

测试硬盘: Samsung 970 PRO NVMe M.2 SSD 1TB

14.5.1.1 写入速度

测试命令:

dd if=/dev/zero of=/mnt/deleteme.dat bs=32M count=64 oflag=direct,nonblock

结果如下:

2147483648 bytes (2.1 GB, 2.0 GiB) copied, 1.22343 s, 1.8 GB/s
14.5.1.2 读取速度

测试命令:

dd if=/mnt/deleteme.dat of=/dev/null bs=32M count=64 iflag=direct,nonblock

结果如下:

2147483648 bytes (2.1 GB, 2.0 GiB) copied, 0.845979 s, 2.5 GB/s

14.5.2 USB移动机械硬盘速度测试

14.5.2.1 写入速度

测试命令:

dd if=/dev/zero of=/mnt/deleteme.dat bs=32M count=64 oflag=direct,nonblock

结果如下:

2147483648 bytes (2.1 GB, 2.0 GiB) copied, 20.3973 s, 105 MB/s
14.5.2.2 读取速度

测试命令:

dd if=/mnt/deleteme.dat of=/dev/null bs=32M count=64 iflag=direct,nonblock

结果如下:

2147483648 bytes (2.1 GB, 2.0 GiB) copied, 18.9168 s, 114 MB/s

15 Linux操作系统的常见操作

15.1 Linux系统下使用adb

15.1.1 buildroot系统下开启adb功能

开机自动开启

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

临时开启

usbdevice-wrapper start

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

开机自动开启

sudo systemctl enable usbdevice
sudo reboot

临时开启

usbdevice-wrapper start

15.1.3 如何连接

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

15.2 安装内核头文件

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

16 性能测试方法

16.1 测试2.5G网口速率

16.1.1 软件下载

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

16.1.2 开始测速

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

iperf3 -s -i 2

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

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

17 Link to Rockchip Resources

18 手册原理图等开发资料

19 更新日志

19.1 2024-05-14

19.1.1 Debian/Ubuntu Desktop

  • 修正alsa音频问题

19.2 2024-05-11

19.2.1 Linux内核

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

19.2.2 Debian11 Desktop

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

19.2.3 Ubuntu Focal Desktop

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

19.2.4 OpenMediaVault

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

19.2.5 其他

19.3 2024-04-21

19.3.1 OpenMediaVault

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

19.4 2024-03-15

19.4.1 Ubuntu focal desktop

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

19.4.2 Debian/Ubuntu/FriendlyCore

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

19.5 2024-01-31

19.5.1 Debian/Ubuntu/FriendlyCore/Buildroot

  • 增加 adb 的支持

19.5.2 Android 12 & Android TV

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

19.5.3 FriendlyWrt

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

19.6 2024-01-24

19.6.1 Buildroot

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

19.7 2024-01-17

19.7.1 Linux

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

19.7.2 Android 12

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

19.8 2023-12-23

19.8.1 Android 12 & Android TV

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

19.8.2 FriendlyWrt

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

19.9 2023-12-01

19.9.1 FriendlyWrt

  • 更新到 OpenWrt 23.05.2

19.10 2023-11-13

19.10.1 Debian/Ubuntu/FriendlyCore

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

19.10.2 Android 12

19.11 2023-10-31

19.11.1 增加新系统

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

19.11.2 Debian/Ubuntu/FriendlyCore

  • 更新到 6.1 内核

19.11.3 FriendlyWrt

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

19.12 2023-09-09

19.12.1 Android 12

19.13 2023-08-15

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

19.14 2023-07-19

19.14.1 Ubuntu Jammy Desktop

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

19.14.2 Debian/Ubuntu/Android

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

19.14.3 Ubuntu Focal Desktop

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

19.14.4 Ubuntu Jammy X11 Desktop

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

19.15 2023-07-01

19.15.1 Debian11

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

19.16 2023-06-25

19.16.1 Debian11

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

19.16.2 Android TV & Android 12

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

19.16.3 FriendlyCore

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

19.17 2023-06-16

19.17.1 Debian11更新

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

19.18 2023-06-09

19.18.1 FriendlyWrt更新

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

19.18.2 Ubuntu22更新

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

19.19 2023-06-06

19.19.1 Android TV & Android 12更新

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

19.20 2023-06-01

19.20.1 Android TV & Android 12更新

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

19.21 2023-05-27

19.21.1 Ubuntu22更新

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

19.22 2023-05-26

19.22.1 Ubuntu22更新

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

19.22.2 FriendlyWrt更新

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

19.23 2023-05-21

19.23.1 Debian11更新

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

19.24 2023-05-15

19.24.1 FriendlyCore Focal

  • 增加Qt 5.10支持

19.25 2023-05-05

19.25.1 Android更新

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

19.26 2023-04-26

19.26.1 FriendlyWrt更新

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

19.27 2023-02-10

19.27.1 Android更新

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

19.27.2 新增 Debian11

分为以下三个版本:

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

19.28 2023-01-09

19.28.1 新增系统:

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

19.28.2 Android更新说明:

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

19.28.3 Ubuntu jammy更新说明:

  • 优化了开机服务

19.29 2022-12-13

19.29.1 Ubuntu jammy:

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

19.30 2022-12-04

19.30.1 FriendlyWrt:

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

19.31 2022-11-17

19.31.1 FriendlyWrt:

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

19.31.2 Ubuntu jammy desktop:

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

19.32 2022-10-25

首次发布