From FriendlyELEC WiKi
查看中文
1
IntroductionFront
Back
with heatsink
2
Hardware Spec3
Diagram, Layout and Dimension
positive differential data line
118 MIPI_TX1/RX1_D0P In/Out float MIPI CSI1/DSI1positive differential data line
119 GND Power / System Ground(0V) 120 GND Power / System Ground(0V) 121 MIPI_RX0_D2N In float MIPI CSI0 negative differential data line 122 MIPI_TX1/RX1_D1N In/Out float MIPI CSI1/DSI1 negative differential data line 123 MIPI_RX0_D2P In float MIPI CSI0positive differential data line
124 MIPI_TX1/RX1_D1P In/Out float MIPI CSI1/DSI1positive differential data line
125 GND Power / System Ground(0V) 126 GND Power / System Ground(0V) 127 MIPI_RX0_CLKN In float MIPI CSI0 negative differential clock line 128 MIPI_TX1/RX1_CLKN In/Out float MIPI CSI1/DSI1 negative differential clock line 129 MIPI_RX0_CLKP In float MIPI CSI0positive differential clock line
130 MIPI_TX1/RX1_CLKP In/Out float MIPI CSI1/DSI1positive differential clock line
131 GND Power / System Ground(0V) 132 GND Power / System Ground(0V) 133 MIPI_RX0_D1N In float MIPI CSI0 negative differential data line 134 MIPI_TX1/RX1_D2N In/Out float MIPI CSI1/DSI1 negative differential data line 135 MIPI_RX0_D1P In float MIPI CSI0positive differential data line
136 MIPI_TX1/RX1_D2P In/Out float MIPI CSI1/DSI1positive differential data line
137 GND Power / System Ground(0V) 138 GND Power / System Ground(0V) 139 MIPI_RX0_D0N In float MIPI CSI0 negative differential data line 140 MIPI_TX1/RX1_D3N In/Out float MIPI CSI1/DSI1 negative differential data line 141 MIPI_RX0_D0P In float MIPI CSI0positive differential data line
142 MIPI_TX1/RX1_D3P In/Out float MIPI CSI1/DSI1positive differential data line
143 GND Power / System Ground(0V) 144 GND Power / System Ground(0V) Connector Key Connector Key 145 HDMI_CEC In/Out float HDMI CEC signal, 3V level 146 GND Power / System Ground(0V) 147 HDMI_HPD In float HDMI hot plug 148 MIPI_TX0_D3N Out float MIPI DSI0 negetive differential data line 149 GND Power / System Ground(0V) 150 MIPI_TX0_D3P Out float MIPI DSI0 positive differential data line 151 HDMI_TXCN Out float HDMI differential clock line negative 152 GND Power / System Ground(0V) 153 HDMI_TXCP Out float HDMI differential clock line positive 154 MIPI_TX0_D2N Out float MIPI DSI0 negetive differential data line 155 GND Power / System Ground(0V) 156 MIPI_TX0_D2P Out float MIPI DSI0 positive differential data line 157 HDMI_TX0N Out float HDMI differential data line negative 158 GND Power / System Ground(0V) 159 HDMI_TX0P Out float HDMI differential data line positive 160 MIPI_TX0_CLKN Out float MIPI DSI0 negetive differential clock line 161 GND Power / System Ground(0V) 162 MIPI_TX0_CLKP Out float MIPI DSI0 positive differential clock line 163 HDMI_TX1N Out float HDMI differential data line negative 164 GND Power / System Ground(0V) 165 HDMI_TX1P Out float HDMI differential data line positive 166 MIPI_TX0_D1N Out float MIPI DSI0 negetive differential data line 167 GND Power / System Ground(0V) 168 MIPI_TX0_D1P Out float MIPI DSI0 positive differential data line 169 HDMI_TX2N Out float HDMI differential data line negative 170 GND Power / System Ground(0V) 171 HDMI_TX2P Out float HDMI differential data line positive 172 MIPI_TX0_D0N Out float MIPI DSI0 negetive differential data line 173 GND Power / System Ground(0V) 174 MIPI_TX0_D0P Out float MIPI DSI0 positive differential data line 175 USB3.0/TYPE-C1_DP In/Out float TYPEC1 USB 2.0 data+ 176 GND Power / System Ground(0V) 177 USB3.0/TYPE-C1_DM In/Out float TYPEC1 USB 2.0 data- 178 PCIE_RX3_N In float PCIe negative differential data line 179 GND Power / System Ground(0V) 180 PCIE_RX3_P In float PCIe positive differential data line 181 USB3.0/TYPEC1_TX1P Out float TYPEC1 USB3.0 PHY0 SuperSpeed TX1P 182 GND Power / System Ground(0V) 183 USB3.0/TYPEC1_TX1M Out float TYPEC1 USB3.0 PHY0 SuperSpeed TX1M 184 PCIE_TX3N Out float PCIe negative differential data line 185 GND Power / System Ground(0V) 186 PCIE_TX3P Out float PCIe positive differential data line 187 USB3.0/TYPEC1_RX1P In float TYPEC1 USB3.0 PHY0 SuperSpeed RX1P 188 GND Power / System Ground(0V) 189 USB3.0/TYPEC1_RX1M In float TYPEC1 USB3.0 PHY0 SuperSpeed RX1M 190 PCIE_RX2_N In float PCIe negative differential data line 191 GND Power / System Ground(0V) 192 PCIE_RX2_P In float PCIe positive differential data line 193 TYPEC1_TX2P Out float TYPEC1 USB3.0 PHY0 SuperSpeed TX2P 194 GND Power / System Ground(0V) 195 TYPEC1_TX2M Out float TYPEC1 USB3.0 PHY0 SuperSpeed TX2M 196 PCIE_TX2N Out float PCIe negative differential data line 197 GND Power / System Ground(0V) 198 PCIE_TX2P Out float PCIe positive differential data line 199 TYPEC1_RX2P In float TYPEC1 USB3.0 PHY0 SuperSpeed RX2P 200 GND Power / System Ground(0V) 201 TYPEC1_RX2M In float TYPEC1 USB3.0 PHY0 SuperSpeed RX2M 202 PCIE_RX1_N In float PCIe negative differential data line 203 GND Power / System Ground(0V) 204 PCIE_RX1_P In float PCIe positive differential data line 205 TYPEC1_SBU1 In/Out float TYPEC1 SBU1 206 GND Power / System Ground(0V) 207 TYPEC1_SBU2 In/Out float TYPEC1 SBU2 208 PCIE_TX1N Out float PCIe negative differential data line 209 GND Power / System Ground(0V) 210 PCIE_TX1P Out float PCIe positive differential data line 211 TYPEC1_SBU1_DC Out float TYPEC1 SBU1 DC Bias 212 GND Power / System Ground(0V) 213 TYPEC1_SBU2_DC Out float TYPEC1 SBU2 DC Bias 214 PCIE_RX0_N In float PCIe negative differential data line 215 TYPEC1_U2VBUSDET In float TYPEC1 Vbus detect 216 PCIE_RX0_P In float PCIe positive differential data line 217 GND Power / System Ground(0V) 218 GND Power / System Ground(0V) 219 HOST0_DP In/Out float USB 2.0 Host0 data+ 220 PCIE_TX0N Out float PCIe negative differential data line 221 HOST0_DM In/Out float USB 2.0 Host0 data- 222 PCIE_TX0P Out float PCIe positive differential data line 223 GND Power / System Ground(0V) 224 GND Power / System Ground(0V) 225 HOST1_DP In/Out float USB 2.0 Host1 data+ 226 PCIE_REF_CLKN Out float PCIe negative differential reference clock line 227 HOST1_DM In/Out float USB 2.0 Host1 data- 228 PCIE_REF_CLKP Out float PCIe positive differential reference clock line 229 GND Power / System Ground(0V) 230 GND Power / System Ground(0V) 231 EDP_TX3N Out float eDP data line negative 232 LAN_LED0_BLINK Out float 10/100/1000M Ethernet Status LED0 233 EDP_TX3P Out float eDP data line positive 234 LAN_LED1_LINK Out float 10/100/1000M Ethernet Status LED1 235 GND Power / System Ground(0V) 236 GND Power / System Ground(0V) 237 EDP_TX2N Out float eDP data line negative 238 MDI3- In/Out float 10/100/1000M Ethernet MDI3- 239 EDP_TX2P Out float eDP data line positive 240 MDI3+ In/Out float 10/100/1000M Ethernet MDI3+ 241 GND Power / System Ground(0V) 242 GND Power / System Ground(0V) 243 EDP_TX1N Out float eDP data line negative 244 MDI2- In/Out float 10/100/1000M Ethernet MDI2- 245 EDP_TX1P Out float eDP data line positive 246 MDI2+ In/Out float 10/100/1000M Ethernet MDI2+ 247 GND Power / System Ground(0V) 248 GND Power / System Ground(0V) 249 EDP_TX0N Out float eDP data line negative 250 MDI1- In/Out float 10/100/1000M Ethernet MDI1- 251 EDP_TX0P Out float eDP data line positive 252 MDI1+ In/Out float 10/100/1000M Ethernet MDI1+ 253 GND Power / System Ground(0V) 254 GND Power / System Ground(0V) 255 EDP_AUXP In/Out float eDP AUX line positive 256 MDI0- In/Out float 10/100/1000M Ethernet MDI0- 257 EDP_AUXN In/Out float eDP AUX line negative 258 MDI0+ In/Out float 10/100/1000M Ethernet MDI0+ 259 GND Power / System Ground(0V) 260 GND Power / System Ground(0V)4
Carrier Board
5
Get Started5.1
Essentials You NeedBefore starting to use your SOM-RK3399 get the following items ready
5.2
Install OS5.2.1
Downloads5.2.1.1
Official imageVisit download link to download official image files (in the "01_Official images" directory).
The table below lists all official images, the word 'XYZ' in image filename meaning:
Visit download link to download tools (in the "05_Tools" directory).
5.2.2
Flashing the OS to the microSD cardFollow the steps below:
5.2.3
Install OS to eMMC5.2.3.1
Option 1: Install OS via TF CardThis method firstly boots a mini Linux from a TF card and then automatically runs an EFlasher utility to install the OS to eMMC. You can connect your system to an HDMI monitor and watch its progress.
This is optional. You can watch its progress by observing its LEDs as well:
By default, flashing starts automatically upon power-up, so be sure to back up the data in eMMC. If you don't want it to start automatically, you can use image file with a filename containing the words 'multiple-os' and manually select the OS you want to flash on the interface.
5.2.3.1.1
Flash Official OS to eMMCFollow the steps below:
5.2.3.1.2
Flash third party OS (Image file) to eMMC1) Download an “eflasher” firmware from network drive(in the "01_Official images/02_SD-to-eMMC images" directory), extract it and install it to a TF card ;
2) Eject and insert the TF card to your PC, after a “FriendlyARM” device shows up(Under Linux, it is a “FriendlyARM” directory), copy an .img or .gz file to the TF card.
3) Open the eflasher.conf file on the TF card, set “autoStart=” to the name of your image file, such as:
autoStart
=openwrt-rockchip-armv8_nanopi-ext4-sysupgrade.img.gz
In addition to third-party image, official image files which with the '-sd-' word in the filename are also supported, for example: rk3NNN-sd-friendlywrt-21.02-YYYYMMDD.img.gz
4) Eject the TF card, insert the TF card to SOM-RK3399, power it on it will automatically install your firmware. You can watch the installation progress by observing the LEDs’ status.
5.2.3.2
Option 2: Install OS on Web PageGet a TF card which has been installed with FriendlyWrt, log in FriendlyWrt on the web page, click on “System” ->”eMMC Tools”. Click on “Select file” to select your wanted image file, either an official image (filename containing '-sd-') or a third party image. The file should be a “.gz” or “.img” file.
After a file is selected, click on “Upload and Write” to start installing an OS.
After installation is done, eject the SD card, the system will automatically reboot and load the OS from eMMC. After the OS begins to load, if the system LED is flashing and the network LED is on, it means the the OS has loaded successfully. If the OS is FriendlyWrt, you can click on “Go to Homepage” to enter the homepage.
For official OS, you need select the file with the filename containing '-sd-', for example: rk3NNN-sd-friendlywrt-21.02-YYYYMMDD.img.gz, the compression file only supports the .gz format. If the file is too large, you can compress it into .gz format before uploading.
5.2.3.3
Option 3: Install OS via USBDownload a driver file DriverAssitant_v5.1.1.zip under the “tools” directory from network drive, extract and install it.
Under the same directory, download a utility RKDevTool_Release_v2.84.zip and extract it.
5.2.3.3.2
Step 2: Connect SOM-RK3399 to PC and Enter Installation Mode1) Disconnect the connected USB cable and the power cord from SOM-RK3399, eject the TF card;
5.2.3.3.3
Step 3: Install image to eMMCA firmware in general is packaged in either of the two options: the first is an whole image (ie, update.img) which is often offered by third party developers, the second is that an image is packaged and placed in multiple partition images. FriendlyElec offers an image in the latter option.
On a PC which has the extracted RKDevTool_Release_v2.84 utility, go to the RKDevTool_Release_v2.84 directory, run the RKDevTool.exe file. If everything works, you will see a “Found a new Maskrom device” message on the utility;
Go to “Upgrade Firmware(升级固件)”, click on “Firmware(固件)”, select your wanted image file, and click on “Upgrade(升级)” to install. After installation is done, your board will reboot automatically and load the system from eMMC;
Go to network drive to download your needed package and extract it (in the "01_Official images/03_USB upgrade images).
After it is extracted, you will see some utilities and a configuration file under the directory. double click on RKDevTool.exe, you will see a “Found a new Maskrom device” message on the utility. Click on the “Execute”, wait a moment and it will be installed. After installation is done your system will automatically reboot and load the system from eMMC.
5.3
The Boot order between eMMC and SD cardBy default, the system will be booted from the TF card first, but this is not the case under all conditions. This section will explain all situations in detail;
Refer to rockchip official document [1], there are two types of loader program:
1) U-Boot TPL/SPL (i.e. upsream U-Boot, also called mainline U-Boot)
2) Rockchip MiniLoader
Things to note:
1) FriendlyELEC's image uses Rockchip MiniLoader
2) The third-party image usually uses U-Boot TPL/SPL
The following situations will always start from eMMC:
If the system in the eMMC, or the system in the TF card uses the first Loader type U-Boot TPL/SPL, it will always boot from the eMMC;
If you want to boot from the TF card, there are the following methods:
Method 1: Clear the Loader on the eMMC, the clearing method is as follows, after starting from the eMMC, enter the following command on the command line to clear the Loader on the eMMC:
dd
if
=/
dev/
zeroof
=/
dev/
mmcblk2bs
=8Mcount
=1
Method 2: Insert the TF card, Press Maskrom Key (or short-circuit the Maskrom contacts) and then power on (need to keep the short-circuit for about 3 seconds), it will start from the TF card
The summary is as follows:
6
Access hardware6.1
Access Serial InterfaceFor now only UART4 is available for users:
7
Work with Debian11 Desktop7.1
Introduction to Debian11 DesktopDebian11 Desktop is a light-weighted debian desktop system,it has the following features:
7.2
Account & PasswordRegular Account:
User Name: pi
Password: pi
Root:
the root user account is disabled by default, you may configure the root password through the 'sudo passwd root' command.
7.3
View IP addressSince the Debian Bullseye hostname is the hardware model by default, you can use the ping command to get the IP address:ping SOM-RK3399
7.4
Connect to Debian via SSHRun the following commandssh pi@SOM-RK3399
The default password is: pi
$
sudo
apt-get update
7.6
Install x11vnc Server on Debian for Remote Access7.6.1
Install x11vnc serverThe following command to install x11vnc server:
sudo
apt-get install
x11vnc
7.6.2
Set your passwordsudo
x11vnc-storepasswd
/
etc/
x11vnc.pwd
7.6.3
Setup x11vnc server with systemd auto start upCreate service configuration file:
sudo
vi
/
lib/
systemd/
system/
x11vnc.service
Let’s copy and paste the following configuration into our newly create service file:
[
Unit]
Description
=Start x11vnc at startup.Requires
=display-manager.serviceAfter
=syslog.target network-online.targetWants
=syslog.target network-online.target[
Service]
Type
=simpleExecStart
=/
usr/
bin/
x11vnc-display
:0
-forever
-loop
-noxdamage
-repeat
-rfbauth
/
etc/
x11vnc.pwd-rfbport
5900
-shared
-capslock
-nomodtweak
ExecStop
=/
usr/
bin/
x11vnc-R
stopRestart
=on-failure[
Install]
WantedBy
=multi-user.target
The following commands to reload the systmd system and to enable and start the x11vnc service:
sudo
systemctl daemon-reloadsudo
systemctlenable
x11vnc.servicesudo
systemctl start x11vnc
7.6.4
Testing remote accessStart the VNC client software, input IP:5900 to connect:
7.7
Install the kernel-header packagesudo
dpkg
-i
/
opt/
linux-headers-*
.deb
try to compile a kernel module:
sudo
apt updatesudo
aptinstall
git
gcc
make
bc
git clone
https://
github.com/
RinCat/
RTL88x2BU-Linux-Driver.gitcd
RTL88x2BU-Linux-Drivermake
-j$(
nproc)
sudo
make
install
sudo
modprobe 88x2bu
7.8
Change time zone7.8.1
Check the current time zonetimedatectl
7.8.2
List all available time zonestimedatectl list-timezones
7.8.3
Set the time zone (e.g. Shanghai)sudo
timedatectl set-timezone Asia/
Shanghai
7.9
Change startup LOGO and Wallpaper7.9.1
Change startup LOGOReplace the following two files in the kernel source code directory and recompile the kernel:
kernel/logo.bmp
kernel/logo_kernel.bmp
Or use the script to operate, as shown below:
git clone
https://
github.com/
friendlyarm/
sd-fuse_rk3399.git-b
kernel-4.19
--single-branch
cd
sd-fuse_rk3399
convert files/
logo.jpg-type
truecolor/
tmp/
logo.bmp convert files/
logo.jpg-type
truecolor/
tmp/
logo_kernel.bmpsudo
LOGO
=/
tmp/
logo.bmpKERNEL_LOGO
=/
tmp/
logo_kernel.bmp ./
build-kernel.sh debian-bullseye-desktop-arm64sudo
./
mk-sd-image.sh debian-bullseye-desktop-arm64sudo
./
mk-emmc-image.sh debian-bullseye-desktop-arm64
Note: If your system is not debian-bullseye-desktop-arm64, please specify according to the actual situation
7.9.2
Change WallpaperModify the following configuration file:
/
home/
pi/
.config/
pcmanfm/
LXDE/
desktop-items-0
.conf
7.10
Soft Factory ResetExecute the following command in a terminal:
sudo
firstboot&&
sudo
reboot
7.11
Start the program automatically at startup(For example Kodi)Put the desktop file in the ~/.config/autostart/ directory, for example:
mkdir
~/
.config/
autostart/
cp
/
usr/
share/
applications/
kodi.desktop ~/
.config/
autostart/
7.12
Disable auto-mountingsudo
systemctl mask udisks2sudo
reboot
7.13
Setup Chinese language and Input method7.13.1
Setup Chinese languageEnter the following command and select 'zh_CN.UTF-8':
sudo
dpkg-reconfigure locales
Add environment variables to .bashrc:
echo
"export LC_ALL=zh_CN.UTF-8"
>>
~/
.bashrcecho
"export LANG=zh_CN.UTF-8"
>>
~/
.bashrcecho
"export LANGUAGE=zh_CN.UTF-8"
>>
~/
.bashrc
Reboot device:
sudo
reboot
7.13.2
Installing Chinese input methodEnter the following command to install fcitx and Pinyin input method:
sudo
apt updatesudo
apt-get install
fcitx fcitx-pinyinsudo
apt-get install
im-configsudo
apt-get install
fcitx-table*
sudo
apt-get install
fcitx-ui-classic fcitx-ui-lightsudo
apt-get install
fcitx-frontend-gtk2 fcitx-frontend-gtk3 fcitx-frontend-qt4sudo
apt-get remove
--purge
scim*
ibus*
sudo
reboot
After reboot, press Ctrl+Space to switch between Chinese and English input methods, and the input method icon will appear in the upper right corner, right-click the input method icon in the upper right corner to switch input methods in the pop-up menu, as shown below:
7.14
Installing Plex Multimedia ServerVisit the Plex website: https://www.plex.tv/media-server-downloads/
On the download page, select the category "Plex Media Server", choose "Linux" for the platform and "Ubuntu(16.04+)/Debian(8+) - ARMv8" for the version,
After downloading the deb package, use the dpkg command to install the package:
sudo
dpkg
-i
plexmediaserver_1.31.0.6654-02189b09f_arm64.deb
After installation, login to the Plex server by typing the following URL into your computer browser: http://IP地址:32400/web/
7.15
Install Docker on DebianPlease refer to: How to Install Docker on Debian
7.16
How to test NPUPlease refer to: NPU
7.17
WiFi Connection7.17.1
GuiClick on the icon on the top right in the Debian's main window, select your wanted WiFi hotspot and proceed with prompts
7.17.2
ConsolePlease visit: Use NetworkManager to configure network settings
7.18
Cancel auto-loginEdit file:
sudo
vim
/
etc/
lightdm/
lightdm.conf
Comment out the following two lines (insert # in front of them):
autologin-user=pi autologin-user-timeout=0
7.19
Test OpenGL ESYou can test it by clicking on the Terminator icon to start a commandline utility in the System Tools and run the following commands:
glmark2-es2
7.20
HDMI/DP LCD ResolutionOpen the system's menu and go to Perferences -> Monitor Settings to customize your settings.
Recommended resolution: 1920x1080@60Hz
7.21
Adjust HDMI overscanOpen the command line terminal and enter the command to operate, Note:
1) You need to login to the desktop;
2) If you are using ssh terminal, please use the same username as the desktop login. The default is pi. You cannot use the root user. you also need to assign the DISPLAY variable:
export
DISPLAY
=:0.0
7.21.1
Query which resolutions the display supportsxrandr-q
7.21.2
Set resolutionFor example set to 1920X1080@60Hz:
xrandr--output
HDMI-1
--mode
1920x1080--refresh
60
7.21.3
Adjust the HDMI overscanFor 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
7.21.4
Automatic adjustment at bootEdit ~/.config/autostart/lxrandr-autostart.desktop,Write the full xrandr command to the key at the beginning of "Exec= as shown below:
[
Desktop Entry]
Type
=ApplicationName
=LXRandR autostartComment
=Start xrandr with settingsdone
in
LXRandRExec
=sh
-c
'xrandr --output HDMI-1 --mode 1920x1080 --refresh 50 --transform 1.04,0,-35,0,1.05,-30,0,0,1'
OnlyShowIn
=LXDE
7.22
Chromium web browser7.22.1
GPUChromium web browser has enabled hardware acceleration by default, supports WebGL, and can view hardware acceleration details by entering the URL chrome://gpu, as shown below:
7.22.2
VPUPlay a video in the browser, then use fuser on the command line to view the mpp device node to confirm that the vpu interface is being called:
pi@FriendlyElec:~$
fuser
/
dev/
mpp_service/
dev/
mpp_service:3258
If there is no content output from the fuser command, it means software decoding.
7.23
Test hardware encodingmpi_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
7.23.1
Check Supported Hardware Decoding FormatsEnter about://gpu in your browser's address bar and scroll to the bottom of the page to view the "Video Acceleration Information" table.
After playing a video, enter about://media-internals in your browser's address bar to check if hardware decoding was enabled for the most recent playback.
8
Work with Debian10 Desktop9
Work with FriendlyDesktop
Arduino
Firefox
Scratch
FriendlyDesktop is a light-weighted Ubuntu desktop system. It is based on LXDE and has the following features:
Latest Version - Based on Ubuntu 18.04 64
Various Development Utilities - It is compatible with FriendlyCore and has integrated an optimized Qt5.10, QtCreator and Arduino IDE.
Light-weighted - it consumes relatively less CPU resources than a common desktop system. When a system's RAM is sufficient it can achieve much better performance.
Less Power Consumption - it consumes relatively less power or resources than a common desktop system to achieve the same performance.
Compact and Neat - its desktop is based on GTK+ 2 and it supports multiple languages.
Easy to Use - its GUI looks similar to MS Windows'.
Customizable - Users can customize LXDE's GUI.
Compatible - it is compatible with freedesktop.org.
FriendlyELEC has optimized support for Mali GPU and VPU in FriendlyDesktop for RK3399 and integrated drivers for X.org. FriendlyDesktop supports Hardware Cursor, OpenGL graphic acceleration, 4K video playing with hardware decoding.
9.1
Account & PasswordRegular Account:
User Name: pi Password: pi
Root:
User Name: root Password: fa
9.2
WiFi ConnectionClick on the icon on the top right in the FriendlyDesktop's main window, select your wanted WiFi hotspot and proceed with prompts
9.3
HDMI/DP LCD ResolutionOpen the system's menu and go to Perferences -> Monitor Settings to customize your settings.
Recommended resolution: 1920x1080@60Hz
9.4
Adjust HDMI overscanOpen the command line terminal and enter the command to operate, Note:
1) You need to login to the desktop;
2) If you are using ssh terminal, please use the same username as the desktop login. The default is pi. You cannot use the root user. you also need to assign the DISPLAY variable:
export
DISPLAY
=:0.0
9.4.1
Query which resolutions the display supportsxrandr-q
9.4.2
Set resolutionFor example set to 1920X1080@60Hz:
xrandr--output
HDMI-1
--mode
1920x1080--refresh
60
9.4.3
Adjust the HDMI overscanFor 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
9.4.4
Automatic adjustment at bootEdit ~/.config/autostart/lxrandr-autostart.desktop,Write the full xrandr command to the key at the beginning of "Exec= as shown below:
[
Desktop Entry]
Type
=ApplicationName
=LXRandR autostartComment
=Start xrandr with settingsdone
in
LXRandRExec
=sh
-c
'xrandr --output HDMI-1 --mode 1920x1080 --refresh 50 --transform 1.04,0,-35,0,1.05,-30,0,0,1'
OnlyShowIn
=LXDE
9.5
eDP LCD Display RotationIf you want to rotate an eDP LCD's display you can do it by commanding "xrotate.sh" to rotate its display to 90/180/270 degrees. You can rotate display clockwise by 90 degrees by running the following command as root. This command calls lightdm to make your change effective immediately:
sudo
xrotate.sh-m
CW-r
For more details about its options you can run "xrotate -h".
Note: this command doesn't support HDMI display's rotation. If you want to rorate an HDMI's display you need to refer to X11's tech documents and make changes in "/etc/X11/xorg.conf".
Note: when you play a video with hardware decoding your player's display window doesn't rotate with your LCD's display
9.6
Test OpenGL ESYou can test it by clicking on the Terminator icon to start a commandline utility in the System Tools and run the following commands:
taskset-c
4
-5
glmark2-es2
9.7
4K Video Playing9.7.1
Play with Qt Player with Hardware DecodingFriendlyDesktop has integrated a Qt5-VideoPlayer utility. This utility has support for Rockchip's gstreamer plug-in and supports 4K video playing with hardware decoding. You can start it by following the steps below:
On FriendlyDesktop's main window open "Sound & Video" and click on "Qt5-VideoPlayer".
On the player's main window click on the bottom left's "Open" button to load a video file and double-click on its name on the file list to start video playing. Here is how it looks like. You can set the display window to full screen and adjust the volume:
Qt5-VideoPlayer source code: https://github.com/friendlyarm/rk-player-qt
9.7.2
Play with Linux CommandYou can play it by running the following command in a commandline utility:
gst-player.sh
By default its voice will be output to audio jack. You can locate this script by commanding "which gst-player.sh". You can customize its behavior by making changes in this script.
9.8
Work with USB CameraInsert the USB camera (such as Logitech C270/C920) into the development board. Double click the "USB Camera" icon on desktop will pop up the luvcview gui (need to use the 2019/05/11+ version firmware).
the luvcview tool is an open source software that you can compile yourself:
git clone
https://
github.com/
ksv1986/
luvcviewcd
luvcviewmake
View the usage of luvcview:
./
luvcview-h
Parameter Description:
luvcview version 0.2.1 Usage: uvcview[
-h-d
-g
-f
-s
-i
-c
-o
-C
-S
-L
-l
-r]
-h
print this message-d
/
dev/
videoX use videoX device-g
useread
methodfor
grab instead mmap-w
disable SDL hardware accel.-f
video format default jpg others options are yuv jpg-i
fps use specified frame interval-s
widthxheight use specified inputsize
-c
enable
raw frame capturingfor
the first frame-C
enable
raw frame stream capturing from the start-S
enable
raw stream capturing from the start-o
avifile create avifile, default video.avi-L
query valid video formats-l
query valid controls and settings-r
read
andset
control settings from luvcview.cfg
To preview USB camera (640x360@30fps), you can use the following command:
./
luvcview-d
/
dev/
video8-i
30
-s
640x360
As you can see from the output of luvcview, hardware acceleration has been turned on:
pi@
NanoPC-T4:/
etc/
xrdp$ luvcview-d
/
dev/
video8-i
30
-s
640x360 luvcview version 0.2.1 interval:30
fps Hardware acceleration available video/
dev/
video8
9.9
File Transfer with BluetoothClick on the "Preferences" in the main window's menu to start Bluetooth Manager and click on "Search" to search surrounding Bluetooth devices. Click on your wanted device, pair the device with your board and you will be able to do file transfer, here is how it looks like:
9.10
Install OpenCVOpenCV has been pre-installed in FriendlyCore/FriendlyDesktop (Version after 201905) and does not require manual installation.
Please refre this link: https://github.com/friendlyarm/install-opencv-on-friendlycore/blob/rk3399/README.md
9.11
Develop Qt ApplicationsFriendlyDesktop has a Qt 5.10.0 which supports RK3399's OpenGL ES and Gstreamer 1.0 hardware acceleration and a QtCreator IDE which is ready and can be used to compile and run applications. Here is how it looks like:
When running the Qt app, you need to specify the platform parameter to xcb as follows:
./
HelloQt--platform
xcb
9.12
WiringPi and Python Wrapper9.13
Switch audio default output device9.13.1
View the current default output deviceOn the terminal of the non-root user, enter the following command:
pactl info-vvv
The information displayed contains the following, indicating that the current audio output is directed to the headset:
Default Sink: alsa_output.platform-rt5651-sound.stereo-fallback
The information displayed contains the following, indicating that the current audio output is to HDMI:
Default Sink: alsa_output.platform-hdmi-sound.stereo-fallback
9.13.2
Set headphone jack as the default output deviceOn the terminal of the non-root user, enter the following command:
pactl set-default-sink alsa_output.platform-rt5651-sound.stereo-fallback
Set default volume to 20%:
pactl--
set-sink-volume alsa_output.platform-rt5651-sound.stereo-fallback20
%
9.13.3
Set hdmi as the default output deviceOn the terminal of the non-root user, enter the following command:
pactl set-default-sink alsa_output.platform-hdmi-sound.stereo-fallback
9.13.4
View settings have taken effectcat
/
var/
lib/
pulse/*
-default-sink
9.13.5
Temporary switching during playbackThis method is only valid for the current playback process:
Open the menu "Sound & Video" -> "PulseAudio Volume Control", click the "Built-in Audio Stereo" button on the interface to switch between different output devices, such as switching between HDMI and headphone jack.
9.14
Play RTSP video stream (or IP Camera)Open a command line terminal and enter the following command:
gst-launch-1.0
rtspsrclocation
="rtsp://admin:12345@192.168.1.120:554/live/main"
!
rtph264depay!
decodebin!
rkximagesink
Change the address after rtsp:// to the real address.
9.15
Chromium web browserChromium web browser has enabled hardware acceleration by default, supports WebGL, and can view hardware acceleration details by entering the URL chrome://gpu, as shown below:
9.16
Screen saver and auto sleep related settingsThe screen saver configuration file is /etc/xdg/autostart/xset_command.desktop. The default factory settings are that the screen saver and DPMS are both closed. You can change the configuration by modifying this file.
9.17
Install Scratchenter the following command:
sudo
apt-get install
scratch:arm64
9.18
Install Arduino IDEenter the following command:
sudo
apt-get install
arduino:arm64
9.19
Start the program automatically at startupPut the desktop file in the ~/.config/autostart/ directory, for example:
cp
/
usr/
share/
applications/
org.qt-project.qtcreator.desktop ~/
.config/
autostart/
9.20
Login to the desktop as the root userEdit the /root/.profile file:
sudo
vim
/
root/
.profile
Replace with the following:
if
[
-n
"
$BASH_VERSION
"]
;then
if
[
-f
"
$HOME
/.bashrc"]
;then
."
$HOME
/.bashrc"fi
fi
if
[
-d
"
$HOME
/bin"]
;then
PATH
="
$HOME
/bin:$PATH
"fi
Run the following command to modify the lightdm configuration file and change the automatically logged-in user name to root:
sudo
sed
-i
's/autologin-user=pi/autologin-user=root/g'
/
usr/
share/
lightdm/
lightdm.conf.d/
20
-defaultsession.conf
Run the reboot command to restart:
sudo
reboot
If you want to log in, the desktop icons and configuration are the same as the pi user, you can copy the relevant directory from the /home/pi directory:
sudo
rm
-rf
/
root/
Desktop/
root/
Pictures/
root/
.configsudo
cp
-af
/
home/
pi/
Desktop/
home/
pi/
Pictures/
home/
pi/
.config/
root/
sudo
chown
root:root/
root/
Desktop/
root/
Pictures/
root/
.config
9.21
Using NVME SSD on FriendlyDesktopPlease see this article: How to Initialize and Format New SSD And HDD
10
Work with FriendlyCore10.1
IntroductionFriendlyCore is a Ubuntu core based OS which doesn't have X Desktop. Its current version is 18.04
FriendlyCore targets enterprise users and is customized for industrial applications. FriendlyCore and Ubuntu base target different users. FriendlyCore has both a commandline utility and a two GUI utilities:
1)Qt 5.10.0 cuustomized for ROCKCHIP3399. It supports GPU and VPU acceleration and has modules like: QtQuick/QtWebEngine/QtMultimedia/WebGL and three display plug-ins:KMS, EGLFS and XCB;
2) Xorg system. It can run X11 applications and supports hardware acceleration;
FriendlyCore for RK3399 has the following features:
10.2
System LoginYou can use a USB to Serial on SOM-RK3399:
Non-root User:
User Name: pi Password: pi
Root:
User Name: root Password: fa
The system is automatically logged in as "pi". You can do "sudo npi-config" to disable auto login.
$
sudo
apt-get update
10.3
Configure System with npi-configThe npi-config is a commandline utility which can be used to initialize system configurations such as user password, system language, time zone, Hostname, SSH switch , Auto login and etc. Type the following command to run this utility.
$
sudo
npi-config
Here is how npi-config's GUI looks like:
10.4
Develop Qt ApplicationPlease refer to: How to Build and Install Qt Application for FriendlyELEC Boards
10.5
Setup Program to AutoRunYou can setup a program to autorun on system boot with npi-config:
sudo
npi-config
Go to Boot Options -> Autologin -> Qt/Embedded, select Enable and reboot.
10.6
Extend TF Card's SectionWhen FriendlyCore is loaded the TF card's section will be automatically extended.You can check the section's size by running the following command:
$
df
-h
10.7
Transfer files using BluetoothTake the example of transferring files to the mobile phone. First, set your mobile phone Bluetooth to detectable status, then execute the following command to start Bluetooth search.:
hcitool scan
Search results look like:
Scanning ... 2C:8A:72
:1D:46
:02 HTC6525LVW
This means that a mobile phone named HTC6525LVW is searched. We write down the MAC address in front of the phone name, and then use the sdptool command to view the Bluetooth service supported by the phone:
sdptool browser 2C:8A:72
:1D:46
:02
Note: Please replace the MAC address in the above command with the actual Bluetooth MAC address of the mobile phone.
This command will detail the protocols supported by Bluetooth for mobile phones. What we need to care about is a file transfer service called OBEX Object Push. Take the HTC6525LVW mobile phone as an example. The results are as follows:
Service Name: OBEX Object Push Service RecHandle: 0x1000b Service Class ID List:"OBEX Object Push"
(
0x1105)
Protocol Descriptor List:"L2CAP"
(
0x0100)
"RFCOMM"
(
0x0003)
Channel:12
"OBEX"
(
0x0008)
Profile Descriptor List:"OBEX Object Push"
(
0x1105)
Version: 0x0100
As can be seen from the above information, the channel used by the OBEX Object Push service of this mobile phone is 12, we need to pass it to the obexftp command, and finally the command to initiate the file transfer request is as follows:
obexftp--nopath
--noconn
--uuid
none--bluetooth
-b
2C:8A:72
:1D:46
:02-B
12
-put
example.jpg
Note: Please replace the MAC address, channel and file name in the above command with the actual one.
After executing the above commands, please pay attention to the screen of the mobile phone. The mobile phone will pop up a prompt for pairing and receiving files. After confirming, the file transfer will start.
Bluetooth FAQ:
1) Bluetooth device not found on the development board, try to open Bluetooth with the following command:
rfkill unblock0
2) Prompt can not find the relevant command, you can try to install related software with the following command:
apt-get install
bluetooth bluez obexftp openobex-apps python-gobject ussp-push
10.8
WiFiFor either an SD WiFi or a USB WiFi you can connect it to your board in the same way. The APXX series WiFi chips are SD WiFi chips. By default FriendlyElec's system supports most popular USB WiFi modules. Here is a list of the USB WiFi modules we tested:
You can use the NetworkManager utility to manage network. You can run "nmcli" in the commandline utility to start it. Here are the commands to start a WiFi connection:
$
su
root
$
nmcli dev
Note: if the status of a device is "unmanaged" it means that device cannot be accessed by NetworkManager. To make it accessed you need to clear the settings under "/etc/network/interfaces" and reboot your system.
$
nmcli r wifi on
$
nmcli dev wifi
$
nmcli dev wifi connect"SSID"
password"PASSWORD"
ifname wlan0
The "SSID" and "PASSWORD" need to be replaced with your actual SSID and password.If you have multiple WiFi devices you need to specify the one you want to connect to a WiFi source with iface
If a connection succeeds it will be automatically setup on next system reboot.
For more details about NetworkManager refer to this link: Use NetworkManager to configure network settings
If your USB WiFi module doesn't work most likely your system doesn't have its driver. For a Debian system you can get a driver from Debian-WiFi and install it on your system. For a Ubuntu system you can install a driver by running the following commands:
$
apt-get install
linux-firmware
In general all WiFi drivers are located at the "/lib/firmware" directory.
10.9
Ethernet ConnectionIf a board is connected to a network via Ethernet before it is powered on it will automatically obtain an IP with DHCP activated after it is powered up. If you want to set up a static IP refer to: Use NetworkManager to configure network settings。
10.10
Custom welcome messageThe welcome message is printed from the script in this directory:
/
etc/
update-motd.d/
For example, to change the FriendlyELEC LOGO, you can change the file /etc/update-motd.d/10-header. For example, to change the LOGO to HELLO, you can change the following line:
TERM
=linux toilet-f
standard-F
metal$BOARD_VENDOR
To:
TERM
=linux toilet-f
standard-F
metal HELLO
10.11
Modify timezoneFor exampe, change to Shanghai timezone:
sudo
rm
/
etc/
localtimesudo
ln
-ls
/
usr/
share/
zoneinfo/
Asia/
Shanghai/
etc/
localtime
10.12
Select the system default audio deviceYou can set the system default audio device by following the steps below.
Use the following command to view all the sound card devices in the system (Note: different development boards will have different results):
pi@NanoPi:~$
aplay
-l
****
List of PLAYBACK Hardware Devices****
card0
: realtekrt5651co[
realtek,rt5651-codec]
, device0
: ff880000.i2s-rt5651-aif1 rt5651-aif1-0
[
]
Subdevices:1
/
1
Subdevice#0: subdevice #0
card1
: rockchiphdmi[
rockchip,hdmi]
, device0
: ff8a0000.i2s-i2s-hifi i2s-hifi-0
[
]
Subdevices:1
/
1
Subdevice#0: subdevice #0
card2
: ROCKCHIPSPDIF[
ROCKCHIP,SPDIF]
, device0
: ff870000.spdif-dit-hifi dit-hifi-0
[
]
Subdevices:1
/
1
Subdevice#0: subdevice #0
As you can see, the following sound card devices are available on the hardware:
To configure the audio output to the 3.5mm jack, modify the configuration file /etc/asound.conf and modify it to the following:
defaults.pcm.card0
defaults.pcm.device0
To configure to output audio to HDMI, change the defaults.pcm.card above to 1.
Note that some boards do not have a Realtek sound card (no 3.5mm jack interface), so the card number of the HDMI device will be 0, so the configuration should be based on the result of the aplay -l command.
10.13
Change the behavior of the PWM fanBy default, the speed of the fan is dynamically adjusted according to the CPU temperature. If you need to let the fan run, you can modify the script /usr/bin/start-rk3399-pwm-fan.sh to the following:
#!/bin/bash
echo
0
>
/
sys/
class/
pwm/
pwmchip1/
export
sleep
1
echo
0
>
/
sys/
class/
pwm/
pwmchip1/
pwm0/
enable
echo
50000
>
/
sys/
class/
pwm/
pwmchip1/
pwm0/
periodecho
1
>
/
sys/
class/
pwm/
pwmchip1/
pwm0/
enable
echo
45000
>
/
sys/
class/
pwm/
pwmchip1/
pwm0/
duty_cycle
10.14
Run the X11 applicationFriendlyCore system built-in lightweight Xorg,although there is no window manager, you can still run a single X-Windows application,For example, the program to run is ~/YourX11App,use the following command:
./
usr/
bin/
setqt5env-xcb startx ~/
YourX11App-geometry
1280x800
Note that there is a space between "." and /usr/bin/setqt5env-xcb. In addition, the resolution after -geometry should be changed to the actual resolution of your screen.
10.15
Mpv hardware decoding video playerFriendlyCore comes pre-installed with the ffmpeg-based command line video player mpv, which also includes libmpv.
The mpv player supports Rockchip MPP video decoder, so it supports 4K hardware decoding. There are many parameters of mpv. In order to simplify the use, we provide a script start-mpv. After simplification, there is only one parameter: video file name, as follows:
start-mpv/
home/
pi/
demo.mp4
It should be noted that the pi user needs to log in during playback, because there are no mpv related settings in other users' directories. Of course, you can copy one from the pi user directory. The mpv settings file is stored in the following path:
/
home/
pi/
.config/
mpv/
mpv.conf
The contents of the mpv.conf file are as follows:
vo
=gpu gpu-context=drmhwdec
=rkmpp demuxer-max-bytes=41943040
demuxer-max-back-bytes=41943040
drm-osd-plane-id=1
drm-video-plane-id=0
audio-device=alsa/
default:CARD
=rockchiphdmi
These will be passed as parameters to mpv. When the value of hwdec is rkmpp, it means using hardware decoding, audio-device is used to specify the audio output device, and the default output is to HDMI. You can use the following command to query which audio devices are in the system:
mpv--audio-device
=help
Another important parameter is drm-osd-size. When playing video in full screen, drm-osd-size is specified as the resolution of the screen. This parameter is automatically obtained by start-mpv and passed to mpv, start-mpv script will do one more important thing. It needs to ensure that the libmali library in the system uses the correct version, because mpv renders the image through gbm, so libmali.so needs to use this version: libmali-midgard-t86x -r14p0-gbm.so, which means that this version of mpv can only be used under FriendlyCore, can not be used under X11 Desktop.
Mpv official use guide:https://github.com/mpv-player/mpv/wiki
11
Features applicable to FriendlyDesktop and FriendlyCore11.1
Using Camera on Linux (MIPI Camera OV13850 & OV4689, and webcam logitect C920)Hardware Setting:
The Camera module can be connected to a MIPI port:
FriendlyELEC provides some scripts use to test a camera's functions. You can run it in a commandline to test picture taking and video recording.
You may try update this script to the lastest version by using the following commands:
cd
/
tmp/
git clone
https://
github.com/
friendlyarm/
gst-camera-sh.gitsudo
cp
gst-camera-sh/*
.sh/
usr/
bin/
There are three scripts:
gst-camera.sh: preview, photo and video of a single camera
dual-camera.sh: preview two cameras
stop-gst-camera.sh: stop preview
11.1.1
Options in "gst-camera.sh"The script gst-camera.sh will automatically recognize OV13850, OV4689 and C920 camera, and then pass the appropriate parameters to gst-launch-1.0.
11.1.2
Usage of gst-camera.shgst-camera.sh--action
preview
You can run the following command to take a picture and save it as a "1.jpg" file,
gst-camera.sh-a
photo-o
1
.jpg
You can run the following command to record video and save your video to a "1.ts" file. Hardware encoding is activated when it is recording video.
gst-camera.sh--action
video-output
1
.ts
If you add the "--verbose yes" option it will show a complete gsteamer command.
gst-camera.sh--action
video--output
1
.ts--verbose
yes
Here is the complete gsteamer command you will see:
gst-launch-1.0
rkisp num-buffers=512
device
=/
dev/
video0 io-mode=1
!
\ video/
x-raw,format
=NV12,width
=1280
,height
=720
,framerate
=30
/
1
!
\ mpph264enc!
queue!
h264parse!
mpegtsmux!
\ filesinklocation
=/
tmp/
camera-record.ts
Connect two mipi cameras, or one mipi camera and one usb camera (tested only: Logitech C920 pro), call the following command:
dual-camera.sh
Note: It is recommended to test this on FriendlyDesktop.
11.1.3
gst-launch-1.0 parameter descriptionPreview camera on FriendlyDesktop:
gst-launch-1.0
rkispdevice
=/
dev/
video1 io-mode=4
!
video/
x-raw,format
=NV12,width
=1280
,height
=720
,framerate
=30
/
1
!
rkximagesink
Important parameters
11.1.4
Access the camera in OpenCVMIPI camera:
cv.VideoCapture
(
'rkisp device=/dev/video1 io-mode=4 ! video/x-raw,format=NV12,width=640,height=480,framerate=30/1 ! videoconvert ! appsink'
,
cv.CAP_GSTREAMER
)
USB camera:
cv.VideoCapture
(
'rkisp device=/dev/video8 io-mode=4 ! videoconvert ! video/x-raw,format=NV12,width=640,height=480,framerate=30/1 ! videoconvert ! appsink'
,
cv.CAP_GSTREAMER
)
Please refer to the sample code here for details:https://github.com/friendlyarm/install-opencv-on-friendlycore/tree/rk3399/examples
11.1.5
Camera application tutorial: Push video streamPlease refre this guide: How to setup RTMP server on NanoPC-T4
11.1.6
Reference resourcehttp://blog.iotwrt.com/media/2017/10/01/camera/ http://www.360doc.com/content/16/1019/17/496343_599664458.shtml
11.2
How to install and use docker11.2.1
How to Install DockerRun the following commands:
wget
https://
download.docker.com/
linux/
ubuntu/
dists/
bionic/
pool/
stable/
arm64/
containerd.io_1.2.6-3
_arm64.debwget
https://
download.docker.com/
linux/
ubuntu/
dists/
bionic/
pool/
stable/
arm64/
docker-ce-cli_19.03.2~3
-0
~ubuntu-bionic_arm64.debwget
https://
download.docker.com/
linux/
ubuntu/
dists/
bionic/
pool/
stable/
arm64/
docker-ce_19.03.2~3
-0
~ubuntu-bionic_arm64.debsudo
dpkg
-i
containerd.io_1.2.6-3
_arm64.debsudo
dpkg
-i
docker-ce-cli_19.03.2~3
-0
~ubuntu-bionic_arm64.debsudo
dpkg
-i
docker-ce_19.03.2~3
-0
~ubuntu-bionic_arm64.deb
11.2.2
Test Docker installationTest that your installation works by running the simple docker image:
git clone
https://
github.com/
friendlyarm/
debian-jessie-arm-dockercd
debian-jessie-arm-docker ./
rebuild-image.sh ./
run.sh
11.3
Using ffmpeg (video hardware decoding)Both FriendlyCore and FriendlyDesktop systems are built-in ffmpeg, with bin file, static libraries, and header files, all stored in the /usr/ffmpeg-rkmp directory.
ffmpeg supports the RockChip MPP video decoder, for details, please refer to: https://trac.ffmpeg.org/wiki/HWAccelIntro
Test the decoding performance of 4K video:
/
usr/
ffmpeg-rkmp/
bin/
ffmpeg
-benchmark
-loglevel
48
-vcodec
h264_rkmpp-i
4K-Chimei-inn-60mbps.mp4-map
0
:v:0
-f
null -
The results are shown below:
To play the video, you can use the ffmpeg-based player mpv. The 4K video used for the above test can be found in the test-video directory of the network disk. The network address is http://dl.friendlyelec.com/nanopct4.
12
Connect NVME SSD High Speed Hard Disk12.1
Detection of SSDroot@FriendlyELEC:~#
cat
/
proc/
partitions major minor#blocks name
1
0
4096
ram0259
0
125034840
nvme0n1
If there is a nvme0n1 device node it means an SSD is recognized.
12.2
Partition of SSDTo mount an SSD under Linux we re-partition it as one section by running the following command:
(
echo
g;echo
n;echo
p;echo
1
;echo
""
;echo
""
;echo
w
;echo
q)
|
fdisk
/
dev/
nvme0n1
If you want to re-partition it to multiple sections you can run "fdisk /dev/nvme0n1". For more detail about this command refer to the fdisk's manual.
12.3
Format Section to EXT4After an SSD is successfully partitioned you can check its sections by running "cat /proc/partitions". The /dev/nvme0n1p1 section is used to store data:
root@FriendlyELEC:~#
cat
/
proc/
partitions major minor#blocks name
1
0
4096
ram0259
0
125034840
nvme0n1259
2
125033816
nvme0n1p1
The following command formats a section to ext4:
mkfs.ext4/
dev/
nvme0n1p1
12.4
Auto Mount SSD on System StartupBefore we mount an SSD's section you need to know its Block ID. You can check it by running "blkid":
blkid/
dev/
nvme0n1p1/
dev/
nvme0n1p1:UUID
="d15c4bbf-a6c3-486f-8f81-35a8dbd46057"
TYPE
="ext4"
PARTUUID
="887628f0-01"
Add a "Block ID" to "/etc/fstab" and here is what it looks like
UUID
=<
Block ID>
/
media/
nvme ext4 defaults0
0
You need to replace <Block ID> with the UUID obtained by running "blkid". To mount the SSD in our example we made the "/etc/fstab" file as follows:
UUID
=d15c4bbf-a6c3-486f-8f81-35a8dbd46057/
media/
nvme ext4 defaults0
0
We want to mount an SSD to "/media/nvme" but this directory doesn't exist. Therefore we create it and change its access right by running the following commands:
mkdir
-p
/
media/
nvmechmod
777
/
media/
nvme
Run "mount" to check if the SSD is mounted successfully:
mount
/
media/
nvme
You can reboot your board to check if your SSD will be automatically mounted:
reboot
12.5
Fan speed settingThe fan uses PWM to automatically adjust the speed. It determines the fan switch and the fan speed according to the current CPU temperature. If the current CPU temperature is not high, the fan will be turned off or rotated at a lower speed (reducing unnecessary environmental noise). ),
If you want the fan to start working immediately, you can use the following command to get the CPU running at high load immediately. This is one way to test if the fan works:
cpuburn
if you want to change the speed regulation behavior of the fan, please modify the following file:
/
usr/
bin/
start-rk3399-pwm-fan.sh
Need to cancel the boot automatically start the fan (such as you need to connect the other PWM device), please enter the following command:
systemctl stop pwm-fan systemctl disable pwm-fan
Or delete the two files below:
/
etc/
systemd/
system/
pwm-fan.service/
etc/
systemd/
system/
multi-user.target.wants/
pwm-fan.service
12.6
Using 4G Module EC20 on LinuxPlease see this article: How to use 4G Module on SOM-RK3399
13
Buildroot LinuxBuildroot is a simple, efficient and easy-to-use tool to generate embedded Linux systems through cross-compilation. It contains a boot-loader, kernel, rootfs, various libraries and utilities(e.g. qt, gstreamer, busybox etc).
FriendlyELEC's Buildroot is based on Rockchip's version which is made with linux-sdk and maintained with git. FriendlyELEC's version is synced with Rockchip's version;
Here is what Buildroot for rockchip looks like
For a more detailed description of the Buildroot system, please refer to: Buildroot
14
Work with LubuntuSee here: Lubuntu desktop 16.04 for RK3399
Using NVME SSD on Lubuntu: How to Initialize and Format New SSD And HDD
15
Work with Android 8.1FriendlyElec provides a full Android8.1 BSP for SOM-RK3399. The source code is hosted at gitlab.com and is open source. The BSP supports GPU and VPU hardware acceleration.
15.1
Connect MIPI Camera to SOM-RK3399FriendlyElec developed a MIPI camera CAM1320 for board and it works under Android. You can use this camera to take pictures and record video. The operation is straightforward. You just need to connect the camera at your board's MIPI interface, boot your board to Android and start Android's camera app.
15.2
Use dual MIPI camera preview and videoDownload the sample source code below from github and compile and run it:
git clone
https://
github.com/
friendlyarm/
Dual-Camera.git-b
working-branch
After the application is installed, you need to Set Android permissions to make the demo run normally. The method is enter system ui: Settings -> Apps & notifications -> Dual Camera -> Permissions, Select the following permissions:
Camera Microphone Storage
The gui looks like this:
Click the "CAPTURE VIDEO" button on the gui to record the video (two cameras at the same time), and the video file will be saved to the following location.:/storage/emulated/0/Download/dualcamera_h264.mp4.
Known issue:
Recorded video file will play faster than normal, may need to adjust some parameters of mediacodec.
15.3
Change system languageThe default system language of Android system is English. For example, if we want to set it to Chinese, the steps are as follows:
1) Go to Android settings:Settings -> System -> Languages & Input -> Languages;
2)Click "Add a language", Select "简体中文", and then select "中国";
3) At this time, there will be two languages, Chinese and English. Drag the Chinese item to the top of the list. Note that if you are using a mouse, drag it by placing the mouse pointer on the right side of the list item. On the icon and then press the middle mouse button to drag;
15.4
Android8.1 hardware accessYou can use the FriendlyThings SDK to access and control hardware resources on the motherboard in the Android App, such as Uart, SPI, I2C, GPIO and other interfaces. For details, please refer to the following two documents.:
15.5
Android Neural Networks SDK SampleAndroid8.1 BSP comes pre-installed with Rockchip's Android NN SDK for Android 8.1, supporting GPU acceleration.。
Sample program for Android NN pre-installed in the Android8 firmware we provide:TfLiteCameraDemo,This is a MobileNet classifier demo using Rockchip AndroidNN GPU acceleration,The camera module is required to be connected to the motherboard during operation. The USB camera and CSI camera are supported,The sample program is launched by clicking the "TfLiteCameraDemo" icon on the home page. The running effect is as follows:
For a detailed description of the Android NN SDK, you can refer to this document:[RK3399_Android8.1_AndroidNN_SDK_V1.0_20180605发布说明.pdf]
TfLiteCameraDemo sample source code download link:[TfLiteCameraDemo source code]
15.6
Using the adb1. The first time you start the system, if you need to change the system files, you need to turn off security verification (note: apk installation does not need to be closed), and restart after turning off security verification
adb root adb disable-verity adb reboot
2. After restarting, get root and remount /system to enable write permissions
adb root adb remount
3. Upload a file
adb push example.txt/
system/
15.7
HDMI resolution and overscan settingIf an HDMI display device is connected, go to Android Settings -> Display -> Advanced -> HDMI & Rotation to set it up.
15.8
Screen rotationgo to Android Settings -> Display -> Advanced -> HDMI & Rotation to set it up.
Use the following command in shell to test screen rotation (Settings not saved):
wm rotation90
15.9
Hide Navigation barEnter Settings -> Accessibility, Turn on immersive mode, and then open an Android application, For example: Lightning, it will be in full screen mode.
15.10
Switch audio output channelYou can configure the audio output to the HDMI or headphone jack, Setting interface entry method: Android Settings -> Accessibility -> Force audio output. If the Force audio output menu item is gray, that is, it is in an unselectable state, the hardware you are using will automatically detect the headphone plug-in status and automatically switch the audio channel without setting.
15.11
Adjust the volume of the recording1) First use the amix command to adjust the volume of the recording through the serial port or the adb shell with root privileges, for example:
Amix"IN2 Boost"
Amix"ADC Capture Volume"
The above command is used to view the current settings.
2) After debugging, modify the value of the corresponding configuration item in the rt5651_main_mic_capture_controls array in the hardware/rockchip/audio/tinyalsa_hal/codec_config/rt5651_config.h file, compile the Android source code and test it.
15.12
Custom logo and boot animation15.12.1
On/OffChange:
BOOT_SHUTDOWN_ANIMATION_RINGING := false
to:
BOOT_SHUTDOWN_ANIMATION_RINGING := true
in device/rockchip/common/BoardConfig.mk file.
15.12.2
Boot animationCreate or replace the following files in the Android source code directory:
kernel/logo.bmp
kernel/logo_kernel.bmp
device/rockchip/common/bootshutdown/bootanimation.zip
15.12.3
Shutdown animationCreate or replace the following files in the Android source code directory:
device/rockchip/common/bootshutdown/shutdownanimation.zip
15.12.4
How to make animationPlease refre to:http://blog.sina.com.cn/s/blog_4960586c0100vu5v.html
15.13
Remove Google FrameworkIf you don't need to use the google service, you can delete the Google framework to save system resources by deleting the following directory in the Android source code and recompiling Android:
vendor/google
15.14
Navigate Android with Remote ControlThe SOM-RK3399 supports the FriendlyARM RC-100 remote control under Android. To get a better experience your can connect your T4 to an HDMI monitor and navigate Android.
Here is a table for the remote control's keys and corresponding functions:
15.15
Work with USB Camera to Take Pictures and Record VideoFriendlyELEC's Android system supports picture taking and video recording with a USB camera, Android's camera app has these functions. When you use the app to take pictures or record video you need to be aware of the following two things:
1) Make sure your camera's resolution works. We suggest you try a camera with a lower CIF resolution first. If it works you may switch to a camera with a higher resolution:
;
2)A USB camera cannot work simultaneously with a MIPI camera. Plug and play is not supporter for camera modules. After you connect a camera to a board you need to reboot your board to enable the camera.
Here are the camera modules we tested: Logitech C270 and LogitechC922 PRO
In our test the resolution was 1080P when we used a Logitech C922 PRO to take pictures or record video.
15.16
Using 4G Module EC20 on Android15.16.1
Hardware SetupConnect an EC20 module to a USB to miniPCIe board and connect the board to an ARM board's USB Host. Here is a hardware setup:
Power on the board and you will be able to surf the internet with the 4G module like using an Android phone.
15.16.2
Activate EC20's GPS FunctionsBy default GPS functions are disabled in Android. If GPS functions are enabled in Android but no GPS module is detected Android will continuously output log messages. After an EC20 module is connected you can enable GPS functions.
To enable the GPS functions open the "vendor/quectel/ec20/BoardConfigPartial.mk" file and change the following line:
BOARD_HAS_GPS :=false
to
BOARD_HAS_GPS :=true
and recompile Android。
15.17
Using SSD on Android15.17.1
Step1: Format SSD as ext4These steps need to be operated under the LINUX system.
For the convenience of operation, please switch to the root user with the following command on the terminal:
su
-
The default password for the root user is fa.
15.17.1.1
Detection of SSDroot@FriendlyELEC:~#
cat
/
proc/
partitions major minor#blocks name
1
0
4096
ram0259
0
125034840
nvme0n1
If there is a nvme0n1 device node it means an SSD is recognized.
15.17.1.2
Partition of SSDTo mount an SSD under Linux we re-partition it as one section by running the following command:
(
echo
o;echo
n;echo
p;echo
1
;echo
""
;echo
""
;echo
w
;echo
q)
|
fdisk
/
dev/
nvme0n1
If you want to re-partition it to multiple sections you can run "fdisk /dev/nvme0n1". For more detail about this command refer to the fdisk's manual.
15.17.1.3
Format partition to EXT4After an SSD is successfully partitioned you can check its partitions by running "cat /proc/partitions". The /dev/nvme0n1p1 partition is used to store data:
root@FriendlyELEC:~#
cat
/
proc/
partitions major minor#blocks name
1
0
4096
ram0259
0
125034840
nvme0n1259
2
125033816
nvme0n1p1
The following command formats a section to ext4:
mkfs.ext4/
dev/
nvme0n1p1-L
SSD
15.17.2
Step2: Auto Mount SSD on Android System StartupAndroid will automatically mount the SSD as an external storage device. No additional settings are required. Open the built-in Files application of Android and you can see that the SSD device is mounted:
third-party software can recognize SSDs normally.
15.18
Fan speed settingThe fan uses PWM to achieve automatic speed regulation. It determines the fan switch and the fan speed according to the current CPU temperature. If the current CPU temperature is not high, the fan will be turned off or rotated at a lower speed (reducing unnecessary environment). Noise), if you want to change the fan's speed behavior, please modify the following files in the Android bsp source code:
device/
rockchip/
rk3399/
nanopc-t4/
pwm_fan.sh
Need to cancel the boot automatically start the fan (such as you need to connect other PWM devices), please modify the following files in the Android bsp source code:
device/
rockchip/
rk3399/
init.rk3399.rc
After modifying the source code, you need to recompile Android.
16
Work with Android7.1See here: Android7
17
How to Compile17.1
Setup Development Environment17.1.1
Method 1: Using docker to cross-compilePlease refre to docker-cross-compiler-novnc
17.1.2
Method 2: Setup build environment on the host machine17.1.2.1
Install required packagesInstall and run requirements ubuntu 20.04, install required packages using the following commands:
sudo
apt-get
-y
updatesudo
apt-get install
-y
sudo
curlsudo
bash
-c
\"
$(curl -fsSL https://raw.githubusercontent.com/friendlyarm/build-env-on-ubuntu-bionic/master/install.sh)
"
The following cross-compilers will be installed:
Version Architecture Compiler path Purpose 4.9.3 armhf /opt/FriendlyARM/toolchain/4.9.3 Can be used to build 32-bit ARM applications 6.4 aarch64 /opt/FriendlyARM/toolchain/6.4-aarch64 Can be used to build kernel 4.4 11.3 aarch64 /opt/FriendlyARM/toolchain/11.3-aarch64 Can be used to build kernel 4.19 or higher and U-Boot17.1.2.2
Setting the compiler pathBased on the table in the previous section, select the appropriate version of the compiler and add the compiler's path to PATH. For example, if you want to use the 11.3 cross-compiler, edit ~/.bashrc using vi and add the following content to the end:
export
PATH
=/
opt/
FriendlyARM/
toolchain/
11.3
-aarch64/
bin:$PATH
export
GCC_COLORS
=auto
Run the ~/.bashrc script to make it effective in the current commandline. Note: there is a space after ".":
. ~/
.bashrc
To verify if the installation was successful:
$ aarch64-linux-gcc-v
Using built-in specs.COLLECT_GCC
=aarch64-linux-gccCOLLECT_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: zlibgcc
version 11.3.0(
ctng-1.25.0-119g-FA)
17.2
Build Openwrt/Friendlywrt17.2.1
Download CodeTwo versions are available, please choose as required:
17.2.1.1
FriendlyWrt 21.02mkdir
friendlywrt21-rk3399cd
friendlywrt21-rk3399git clone
https://
github.com/
friendlyarm/
repo--depth
1
tools tools/
repo init-u
https://
github.com/
friendlyarm/
friendlywrt_manifests-b
master-v21.02 \-m
rk3399.xml--repo-url
=https://
github.com/
friendlyarm/
repo--no-clone-bundle
tools/
reposync
-c
--no-clone-bundle
17.2.1.2
FriendlyWrt 23.05mkdir
friendlywrt23-rk3399cd
friendlywrt23-rk3399git clone
https://
github.com/
friendlyarm/
repo--depth
1
tools tools/
repo init-u
https://
github.com/
friendlyarm/
friendlywrt_manifests-b
master-v23.05 \-m
rk3399.xml--repo-url
=https://
github.com/
friendlyarm/
repo--no-clone-bundle
tools/
reposync
-c
--no-clone-bundle
17.2.2
First compilation step./
build.sh rk3399.mk# or rk3399-docker.mk
All the components (including u-boot, kernel, and friendlywrt) are compiled and the sd card image will be generated, then execute the following command to generate the image file for installing the system into the emmc:
./
build.sh emmc-img
After making changes to the project, the sd card image needs to be repackaged by running the following command:
./
build.sh sd-img
17.2.3
Secondary compilation stepscd
friendlywrtmake
menuconfigrm
-rf
./
tmpmake
-j
${nproc}
cd
../
./
build.sh sd-img ./
build.sh emmc-img
17.2.4
Build u-boot only./
build.sh uboot
17.2.5
Build kernel only./
build.sh kernel
17.2.6
Build friendlywrt only./
build.sh friendlywrt
Or go to the friendlywrt directory and follow the standard openwrt commands. If you get an error with the above command, try using the following command to compile in a single thread:
cd
friendlywrtmake
-j1
V
=s
17.3
Build Buildrootplease refer to: Buildroot
17.4
Build Other Linux17.4.1
Kernel and u-boot versions Operating System Kernel Version U-boot version Cross-compiler Partition type Packaging Tool Kernel branch Kernel configuration U-boot branch U-boot configuration lubuntu linux v4.4.y u-boot v2014.10 6.4-aarch6417.4.2
Build kernel linux-v4.4.yThis section applies to the following operating systems:
lubuntu eflasher friendlydesktop-arm64 friendlycore-arm64Clone the repository to your local drive then build:
git clone
https://
github.com/
friendlyarm/
kernel-rockchip--single-branch
--depth
1
-b
nanopi4-linux-v4.4.y kernel-rockchipcd
kernel-rockchipexport
PATH
=/
opt/
FriendlyARM/
toolchain/
6.4
-aarch64/
bin/
:$PATH
touch
.scmversion# Load configuration
make
ARCH
=arm64CROSS_COMPILE
=aarch64-linux- nanopi4_linux_defconfig# Optionally, if you want to change the default kernel config
# make ARCH=arm64 CROSS_COMPILE=aarch64-linux- menuconfig
# Start building kernel
make
ARCH
=arm64CROSS_COMPILE
=aarch64-linux- nanopi4-images -j$(
nproc)
# Start building kernel modules
mkdir
-p
out-modulesmake
ARCH
=arm64CROSS_COMPILE
=aarch64-linux-INSTALL_MOD_PATH
="
$PWD
/out-modules" modules -j$(
nproc)
make
ARCH
=arm64CROSS_COMPILE
=aarch64-linux-INSTALL_MOD_PATH
="
$PWD
/out-modules" modules_installKERNEL_VER
=$(
make
CROSS_COMPILE
=aarch64-linux-gnu-ARCH
=arm64 kernelrelease)
rm
-rf
$PWD
/
out-modules/
lib/
modules/
${KERNEL_VER}
/
kernel/
drivers/
gpu/
arm/
mali400/
[
!
-f
"
$PWD
/out-modules/lib/modules/${KERNEL_VER}
/modules.dep"]
&&
depmod
-b
$PWD
/
out-modules-E
Module.symvers-F
System.map-w
${KERNEL_VER}
(
cd
$PWD
/
out-modules&&
find
.-name
\*
.ko|
xargs
aarch64-linux-strip --strip-unneeded)
After the compilation, the following files will be generated:
kernel.img resource.img The kernel modules are located in the out-modules directoryRun your build:
Please refre to #Running the build
17.4.3
Build u-boot v2014.10This section applies to the following operating systems:
lubuntu eflasher friendlydesktop-arm64 friendlycore-arm64Clone the repository to your local drive then build:
git clone
https://
github.com/
friendlyarm/
uboot-rockchip--single-branch
--depth
1
-b
nanopi4-v2014.10_oreocd
uboot-rockchipexport
PATH
=/
opt/
FriendlyARM/
toolchain/
6.4
-aarch64/
bin/
:$PATH
make
CROSS_COMPILE
=aarch64-linux- rk3399_defconfigmake
CROSS_COMPILE
=aarch64-linux-
After the compilation, the following files will be generated:
uboot.img trust.img rk3399_loader_v1.22.119.bin (aka MiniLoaderAll.bin)Installing the u-boot:
Please refre to #Running the build
17.4.4
Build kernel linux-v4.19.yThis section applies to the following operating systems:
ubuntu-focal-desktop-arm64 debian-bullseye-desktop-arm64 debian-bullseye-minimal-arm64 friendlycore-focal-arm64 buildrootClone the repository to your local drive then build:
git clone
https://
github.com/
friendlyarm/
kernel-rockchip--single-branch
--depth
1
-b
nanopi4-v4.19.y kernel-rockchipcd
kernel-rockchipexport
PATH
=/
opt/
FriendlyARM/
toolchain/
11.3
-aarch64/
bin/
:$PATH
touch
.scmversion# Configuring the Kernel
# Load default configuration
make
ARCH
=arm64CROSS_COMPILE
=aarch64-linux- nanopi4_linux_defconfig# Optionally, load configuration for FriendlyWrt
# make ARCH=arm64 CROSS_COMPILE=aarch64-linux- nanopi4_linux_defconfig friendlywrt.config
# Optionally, if you want to change the default kernel config
# make ARCH=arm64 CROSS_COMPILE=aarch64-linux- menuconfig
# Start building kernel
make
ARCH
=arm64CROSS_COMPILE
=aarch64-linux- nanopi4-images -j$(
nproc)
# Start building kernel modules
mkdir
-p
out-modulesmake
ARCH
=arm64CROSS_COMPILE
=aarch64-linux-INSTALL_MOD_PATH
="
$PWD
/out-modules" modules -j$(
nproc)
make
ARCH
=arm64CROSS_COMPILE
=aarch64-linux-INSTALL_MOD_PATH
="
$PWD
/out-modules" modules_installKERNEL_VER
=$(
make
CROSS_COMPILE
=aarch64-linux-gnu-ARCH
=arm64 kernelrelease)
rm
-rf
$PWD
/
out-modules/
lib/
modules/
${KERNEL_VER}
/
kernel/
drivers/
gpu/
arm/
mali400/
[
!
-f
"
$PWD
/out-modules/lib/modules/${KERNEL_VER}
/modules.dep"]
&&
depmod
-b
$PWD
/
out-modules-E
Module.symvers-F
System.map-w
${KERNEL_VER}
(
cd
$PWD
/
out-modules&&
find
.-name
\*
.ko|
xargs
aarch64-linux-strip --strip-unneeded)
After the compilation, the following files will be generated:
kernel.img resource.img The kernel modules are located in the out-modules directoryRun your build:
Please refre to #Running the build
17.4.5
Build kernel linux-v6.1.yThis section applies to the following operating systems:
friendlywrt21 friendlywrt21-docker friendlywrt23 friendlywrt23-docker friendlycore-lite-focal-arm64 openmediavault-arm64 debian-bullseye-core-arm64Clone the repository to your local drive then build:
git clone
https://
github.com/
friendlyarm/
kernel-rockchip--single-branch
--depth
1
-b
nanopi-r2-v6.1.y kernel-rockchipcd
kernel-rockchipexport
PATH
=/
opt/
FriendlyARM/
toolchain/
11.3
-aarch64/
bin/
:$PATH
touch
.scmversion# Configuring the Kernel
# Load default configuration
make
CROSS_COMPILE
=aarch64-linux-gnu-ARCH
=arm64 nanopi4_linux_defconfig# Optionally, load configuration for FriendlyWrt
# make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 nanopi4_linux_defconfig friendlywrt.config
# Optionally, if you want to change the default kernel config
# make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 menuconfig
# Start building kernel
make
CROSS_COMPILE
=aarch64-linux-gnu-ARCH
=arm64 -j$(
nproc)
# Start building kernel modules
mkdir
-p
out-modules&&
rm
-rf
out-modules/*
make
CROSS_COMPILE
=aarch64-linux-gnu-ARCH
=arm64INSTALL_MOD_PATH
="
$PWD
/out-modules" modules -j$(
nproc)
make
CROSS_COMPILE
=aarch64-linux-gnu-ARCH
=arm64INSTALL_MOD_PATH
="
$PWD
/out-modules" modules_installKERNEL_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)
Pack the kernel.img and resource.img:
wget
https://
raw.githubusercontent.com/
friendlyarm/
sd-fuse_rk3399/
kernel-6.1
.y/
tools/
mkkrnlimg&&
chmod
755
mkkrnlimgwget
https://
raw.githubusercontent.com/
friendlyarm/
sd-fuse_rk3399/
kernel-6.1
.y/
tools/
resource_tool&&
chmod
755
resource_toolwget
https://
raw.githubusercontent.com/
friendlyarm/
sd-fuse_rk3399/
kernel-6.1
.y/
prebuilt/
boot/
logo.bmpwget
https://
raw.githubusercontent.com/
friendlyarm/
sd-fuse_rk3399/
kernel-6.1
.y/
prebuilt/
boot/
logo_kernel.bmp ./
mkkrnlimg arch/
arm64/
boot/
Image kernel.imgmkdir
kernel-dtbscp
-f
arch/
arm64/
boot/
dts/
rockchip/
rk3399-nanopi-r4s.dtb kernel-dtbs/
rk3399-nanopi4-rev09.dtbcp
-f
arch/
arm64/
boot/
dts/
rockchip/
rk3399-nanopi-r4s.dtb kernel-dtbs/
rk3399-nanopi4-rev0a.dtbcp
-f
arch/
arm64/
boot/
dts/
rockchip/
rk3399-nanopi-r4se.dtb kernel-dtbs/
rk3399-nanopi4-rev0b.dtbcp
-f
arch/
arm64/
boot/
dts/
rockchip/
rk3399-nanopc-t4.dtb kernel-dtbs/
rk3399-nanopi4-rev00.dtb ./
resource_tool--dtbname
kernel-dtbs/*
.dtb logo.bmp logo_kernel.bmp
After the compilation, the following files will be generated:
kernel.img resource.img The kernel modules are located in the out-modules directoryRun your build:
Please refre to #Running the build
17.4.6
Build u-boot v2017.09This section applies to the following operating systems:
ubuntu-focal-desktop-arm64 debian-bullseye-desktop-arm64 debian-bullseye-minimal-arm64 friendlycore-focal-arm64 buildrootClone the repository to your local drive then build:
git clone
https://
github.com/
friendlyarm/
rkbin--single-branch
--depth
1
-b
friendlyelecgit clone
https://
github.com/
friendlyarm/
uboot-rockchip--single-branch
--depth
1
-b
nanopi4-v2017.09export
PATH
=/
opt/
FriendlyARM/
toolchain/
11.3
-aarch64/
bin/
:$PATH
cd
uboot-rockchip/
./
make.sh nanopi4
After the compilation, the following files will be generated:
uboot.img trust.img rk3399_loader_v1.24.126.bin (aka MiniLoaderAll.bin)Run your build:
Please refre to #Running the build
17.4.7
Running the build17.4.7.1
Install to target board17.4.7.1.1
MBR partitionThis section applies to the following operating systems:
lubuntu eflasher friendlydesktop-arm64 friendlycore-arm64The MBR partitioning is only used by the Linux v4.4 kernel. You can check the partition layout by clicking on this link: partmap. To write an image file, you can use the dd command. For example, in the parameter.template file, "0x00014000@0x00014000(kernel)" specifies that the kernel partition starts at 0x00014000, which is equivalent to 81920 in decimal. Therefore, the dd command should be as follows:
dd
if
=kernel.imgof
=/
dev/
mmcblk0seek
=81920
17.4.7.1.2
GPT partitionThis section applies to the following operating systems:
ubuntu-focal-desktop-arm64 debian-bullseye-core-arm64 debian-bullseye-desktop-arm64 debian-bullseye-minimal-arm64 friendlycore-focal-arm64 friendlycore-lite-focal-arm64 friendlywrt21-kernel4 buildroot friendlywrt21 friendlywrt21-docker friendlywrt23 friendlywrt23-dockerThe OS uses GPT partitions by default which is using the Linux v4.19 and Linux v5.15 kernel, you can use the dd command, but be careful to choose the right output device:
The following is an example of how to update the kernel to eMMC:
Use the 'parted' command to view the partition layout:
parted/
dev/
mmcblk2 print
Sample outputs:
Model: MMC BJTD4R(
sd/
mmc)
Disk/
dev/
mmcblk2: 31.3GB Sectorsize
(
logical/
physical)
: 512B/
512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags1
8389kB 12.6MB 4194kB uboot2
12.6MB 16.8MB 4194kB trust3
16.8MB 21.0MB 4194kB misc4
21.0MB 25.2MB 4194kB dtbo5
25.2MB 41.9MB 16.8MB resource6
41.9MB 83.9MB 41.9MB kernel7
83.9MB 134MB 50.3MB boot8
134MB 2500MB 2366MB ext4 rootfs9
2500MB 31.3GB 28.8GB ext4 userdata
as shown above, the resource partition is located at 5 and the kernel partition is located at 6. Use the dd command to write the resource.img and kernel.img files to these partitions, the commands are as follows:
dd
if
=resource.imgof
=/
dev/
mmcblk2p5bs
=1Mdd
if
=kernel.imgof
=/
dev/
mmcblk2p6bs
=1M
If you want to update u-boot:
dd
if
=uboot.imgof
=/
dev/
mmcblk2p1bs
=1M
To update new driver modules, copy the newly compiled driver modules to the appropriate directory under /lib/modules.
17.4.7.2
Packaging and creating an SD imageTo create a new OS image file, you need to use the "sd-fuse" packaging tool.
"sd-fuse" is a collection of scripts that can be used to create bootable SD card images for FriendlyElec boards. Its main features include:
Please click on the following link to find out more:
Kernel version Packaging Tool linux v4.4.y sd-fuse linux v4.19.y17.4.7.3
USB flashingNote: kernel v4.4.y is not supported
17.4.7.3.1
LinuxReboot the board and enter loader mode with the following command:
sudo
reboot loader
To flash U-Boot and kernel using the "upgrade_tool_v2.17_for_linux" tool, please use the following command:
sudo
upgrade_tool di-k
kernel.imgsudo
upgrade_tool di-re
resource.imgsudo
upgrade_tool di-u
uboot.imgsudo
upgrade_tool RD
Note: "upgrade_tool" is a command-line tool provided by Rockchip for Linux operating systems (Linux_Upgrade_Tool).
17.5
Build the code using scripts17.5.1
Download scripts and image filesgit clone
https://
github.com/
friendlyarm/
sd-fuse_rk3399.git-b
kernel-4.19
cd
sd-fuse_rk3399wget
http://
112.124.9.243/
dvdfiles/
RK3399/
images-for-eflasher/
friendlycore-focal-arm64-images.tgztar
xvzf friendlycore-focal-arm64-images.tgz
17.5.2
Compile the kernelDownload the kernel source code and compile it. the relevant image files in the friendlycore-focal-arm64 directory will be automatically updated, including the kernel modules in the file system:
git clone
https://
github.com/
friendlyarm/
kernel-rockchip--depth
1
-b
nanopi4-v4.19.y kernel-rk3399KERNEL_SRC
=$PWD
/
kernel-rk3399 ./
build-kernel.sh friendlycore-focal-arm64
17.5.3
Compile the kernel headersgit clone
https://
github.com/
friendlyarm/
kernel-rockchip--depth
1
-b
nanopi4-v4.19.y kernel-rk3399MK_HEADERS_DEB
=1
BUILD_THIRD_PARTY_DRIVER
=0
KERNEL_SRC
=$PWD
/
kernel-rk3399 ./
build-kernel.sh friendlycore-focal-arm64
17.5.4
Compile the ubootDownload the uboot source code and compile it. the relevant image files in the friendlycore-focal-arm64 directory will be automatically updated:
git clone
https://
github.com/
friendlyarm/
uboot-rockchip--depth
1
-b
nanopi4-v2017.09UBOOT_SRC
=$PWD
/
uboot-rockchip ./
build-uboot.sh friendlycore-focal-arm64
17.5.5
Generate new imageRepackage the image file in the friendlycore-focal-arm64 directory into sd card image:
./
mk-sd-image.sh friendlycore-focal-arm64
After the command is completed, the image is in the out directory, you can use the dd command to make the SD boot card, for example:
dd
if
=out/
rk3399-sd-friendlycore-focal-4.19
-arm64-YYYYMMDD.imgof
=/
dev/
sdXbs
=1M
17.6
Building AOSP from source17.6.1
Hardware and Software Requirements17.6.2
Compile Android1017.6.2.1
Download Android10 Source CodeThere are two ways to download the source code:
Netdisk URL: Click here
File location on netdisk:"07_Source codes/rk3399-android-10.git-YYYYMMDD.tar.xz" (YYYYMMDD means the date of packaging)
After extracting the repo package from the network disk, you need to execute the sync.sh script, which will pull the latest code from gitlab:
tar
xf"/path/to/netdisk/07_Source codes/rk3399-android-10.git-YYYYMMDD.tar.xz"
cd
rk3399-android-10
./
sync.sh
SOM-RK3399 source code is maintained in gitlab, You can download it by running the following command:
git clone
--recursive
https://
gitlab.com/
friendlyelec/
rk3399-android-10
.git-b
main
Note: If the following error "error: unknown option `recurse-submodules'" appears, please upgrade git to v2.0.0 or above.
17.6.2.2
Generate Image FileYou can compile an Android source code and generate an image file (non-root user is recommended):
cd
rk3399-android-10
./
build-nanopc-t4.sh-F
-M
If you need to include google apps, you need to set an environment variable and then compile, as shown below:
cd
rk3399-android-10
export
INSTALL_GAPPS_FOR_TESTING
=yes
./
build-nanopc-t4.sh-F
-M
17.6.2.3
Make OTA PackagesIf you need the support of A/B (Seamless) System Updates, you need to do the following:
a) Build your own update server for http download of update files;
b) Customize the Updater application, the code is located in packages/apps/Updater, let it connect and download file from your server;
c) Use the quick compilation script parameter -O or --ota to compile OTA Packages, as shown below:
cd
rk3399-android-10
./
build-nanopc-t4.sh-F
-O
-M
After the compilation is successfully completed, the OTA update related packages are located in the directory: rockdev/otapackage/ ,Please do not delete this directory.
After you have made some changes, compiling again with the parameter -O will generate ota-update-XXXXXXXX.zip, which is an incremental update package.
OTA Packages decides whether to generate incremental update package according to BUILD_NUMBER, for details, please refer to build-nanopc-t4.sh.
To disable the A/B feature, you can refer to the following to modify device/rockchip/rk3399/nanopc-t4/BoardConfig.mk, and then recompile uboot and android:
BOARD_USES_AB_IMAGE :=false
After compilation is done a new image file will be generated in the "rockdev/Image-nanopc_t4/" directory under Android 10's source code directory. You can follow the steps below to update the OS in SOM-RK3399:
1) Insert an SD card which is processed with EFlasher to an SD card reader and insert this reader to a PC running Ubuntu. The SD card's partitions will be automatically mounted;
2) Copy all the files under the "rockdev/Image-nanopc_t4/" directory to the SD card's android10 directory in the "FRIENDLYARM" partition;
3) Insert this SD card to SOM-RK3399 and reflash Android
When flashing Android 10, EFlasher requires v1.3 or above. When flashing with Type-C, please use the tool AndroidTool v2.71 or Linux_Upgrade_Tool v1.49 provided by Rockchip.
17.6.3
Compile Android8.117.6.3.1
Download Android8.1 Source CodeThere are two ways to download the source code:
Netdisk URL: Click here
File location on netdisk:sources/rk3399-android-8.1.git-YYYYMMDD.tgz (YYYYMMDD means the date of packaging)
After extracting the repo package from the network disk, you need to execute the sync.sh script, which will pull the latest code from gitlab:
tar
xvzf/
path/
to/
netdisk/
sources/
rk3399-android-8.1
.git-YYYYMMDD.tgzcd
rk3399-android-8.1
./
sync.sh
SOM-RK3399 source code is maintained in gitlab, You can download it by running the following command:
git clone
https://
gitlab.com/
friendlyelec/
rk3399-android-8.1
--depth
1
-b
master
17.6.3.2
Generate Image FileYou can compile an Android source code and generate an image file:
cd
rk3399-android-8.1
./
build-nanopc-t4.sh-F
-M
After compilation is done a new image file will be generated in the "rockdev/Image-nanopc_t4/" directory under Android 8.1's source code directory. You can follow the steps below to update the OS in SOM-RK3399:
1) Insert an SD card which is processed with EFlasher to an SD card reader and insert this reader to a PC running Ubuntu. The SD card's partitions will be automatically mounted;
2) Copy all the files under the "rockdev/Image-nanopc_t4/" directory to the SD card's android8 directory in the "FRIENDLYARM" partition;
3) Insert this SD card to SOM-RK3399 and reflash Android
Here is an alternative guide to update OS: sd-fuse_rk3399
17.6.4
Compile Android717.6.4.1
Download Android7 Source CodeThere are two ways to download the source code:
Netdisk URL: Click here
File location on netdisk:sources/rk3399-android-7.git-YYYYMMDD.tgz (YYYYMMDD means the date of packaging)
After extracting the repo package from the network disk, you need to execute the sync.sh script, which will pull the latest code from gitlab:
tar
xvzf/
path/
to/
netdisk/
sources/
rk3399-android-7
.git-YYYYMMDD.tgzcd
rk3399-nougat ./
sync.sh
SOM-RK3399 source code is maintained in gitlab, You can download it by running the following command:
git clone
https://
gitlab.com/
friendlyelec/
rk3399-nougat--depth
1
-b
nanopc-t4-nougat
17.6.4.2
Generate Image FileYou can compile an Android7 source code and generate an image file:
cd
rk3399-nougat ./
build-nanopc-t4.sh-F
-M
After compilation is done a new image file will be generated in the "rockdev/Image-nanopc_t4/" directory under Android7's source code directory. You can follow the steps below to update the OS in SOM-RK3399:
1) Insert an SD card which is processed with EFlasher to an SD card reader and insert this reader to a PC running Ubuntu. The SD card's partitions will be automatically mounted;
2) Copy all the files under the "rockdev/Image-nanopc_t4/" directory to the SD card's android8 directory in the "FRIENDLYARM" partition;
3) Insert this SD card to SOM-RK3399 and reflash Android
Here is an alternative guide to update OS: sd-fuse_rk3399
18
Access hardware18.1
Access Serial InterfaceFor now only UART4 is available for users:
19
Backup rootfs and create custom SD image (to burn your application into other boards)19.1
Backup rootfsRun the following commands on your target board. These commands will back up the entire root partition:
sudo
passwd
rootsu
rootcd
/
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
/
Note: if there is a mounted directory on the system, an error message will appear at the end, which can be ignored.
19.2
Making a bootable SD card from a root filesystemRun the following script on your Linux PC host, we'll only mention "debian-bullseye-desktop-arm64 os" for brevity, but you can apply the same process for every linux OS.
su
rootgit clone
https://
github.com/
friendlyarm/
sd-fuse_rk3399--single-branch
-b
kernel-4.19
cd
sd-fuse_rk3399tar
xvzf/
path/
to/
netdrive/
03_Partition\ image\ files/
debian-bullseye-desktop-arm64-images.tgztar
xvzf/
path/
to/
netdrive/
03_Partition\ image\ files/
emmc-eflasher-images.tgzscp
pi@
BOARDIP:/
rootfs.tar.gz/
rootfs.tar.gzmkdir
rootfstar
xzf rootfs.tar.gz-C
rootfs ./
build-rootfs-img.sh rootfs debian-bullseye-desktop-arm64 ./
mk-sd-image.sh debian-bullseye-desktop-arm64 ./
mk-emmc-image.sh debian-bullseye-desktop-arm64autostart
=yes
20
Configuring kernel command line parameters20.1
eMMC BootHere are the steps:
Make an eflahser bootable SD card (use the firmware file starting with rk3xxxx-eflasher-),
Insert the SD card into your computer, go to the SD card's OS-related directory, and edit the file parameter.txt, which is a text file containing command-line parameters,
Then boot from the SD card and burn the system to the eMMC.
20.2
SD BootTo modify the command line parameters of the SD card, you need to repackage the SD card image file,
you can use the sd-fuse script we provide to assist packaging:
git clone
https://
github.com/
friendlyarm/
sd-fuse_rk3399.git-b
kernel-6.1
.y--single-branch
cd
sd-fuse_rk3399tar
xvzf/
path/
to/
netdrive/
03_Partition\ image\ files/
friendlywrt23-images.tgztar
xvzf/
path/
to/
netdrive/
03_Partition\ image\ files/
emmc-flasher-images.tgzvim
friendlywrt23/
parameter.txt# Edit command-line parameters
./
mk-sd-image.sh friendlywrt23# Repackage sd image file
./
mk-emmc-image.sh friendlywrt23# Repackage sd-to-emmc image file
21
More OS Support21.1
DietPi
DietPi is a highly optimised & minimal Debian-based Linux distribution. DietPi is extremely lightweight at its core, and also extremely easy to install and use.
Setting up a single board computer (SBC) or even a computer, for both regular or server use, takes time and skill. DietPi provides an easy way to install and run favourite software you choose.
For more information, please visit this link https://dietpi.com/docs/.
DietPi supports many of the NanoPi board series, you may download the image file from here:
22
Link to Rockchip Resources23
Schematic, PCB CAD File24.1
2024-03-1524.1.1
Ubuntu focal desktop24.2
2024-01-3124.2.1
Debian/Ubuntu/FriendlyCore/Buildroot24.3
2023-12-0124.3.1
FriendlyWrt24.4
2023-10-3124.4.1
Add a new system24.4.2
Debian Core/FriendlyCore-Lite-Core24.4.3
FriendlyWrt24.5
2023-07-0124.5.1
Debian1124.6
2023-05-2624.6.1
FriendlyWrt24.7
2023-05-2124.7.1
Debian11:24.8
2023-04-2624.8.1
FriendlyWrt:24.9
2023-02-1024.9.1
Added Debian11There are three versions:
24.10
2023-01-0924.10.1
FriendlyCore:24.11
2022-12-0424.11.1
FriendlyWrt:24.12
2022-09-0624.12.1
FriendlyWrt:24.13
2022-08-1924.13.1
Lubuntu/Android8/FriendlyDesktop:24.13.2
Buildroot:24.14
2022-08-0324.14.1
FriendlyWrt:24.15
2022-07-2724.15.1
FriendlyWrt:24.16
2022-07-0424.16.1
Debian 10(buster) Desktop (New)24.17
2021-12-0224.18
2021-10-2924.18.1
FriendlyWrt:24.18.2
Friendlycore-Focalrkisp_3A_server--mmedia
/
dev/
media0&
gst-launch-1.0
v4l2srcdevice
=/
dev/
video1 io-mode=4
!
\ video/
x-raw,format
=NV12,width
=1280
,height
=720
,framerate
=30
/
1
!
queue!
kmssink
24.19
2021-08-3124.19.1
FriendlyWrt:24.20
2021-03-1124.20.1
FriendlyWrt:24.21
2020-12-2424.21.1
FriendlyWrt:24.22
2020-12-1724.22.1
FriendlyWrt:1) FriendlyWrt provides two versions, using 4.19 kernel and 5.4 kernel, 5.4 is for R4S, other models please use 4.19 version
2) Improve the compatibility of the software package
24.22.2
FriendlyCore/FriendlyDesktop:Update wiringPi to support more pins
24.23
2020-10-271) Linux kernel version: 4.19.111
2) Base on Ubuntu 20.04, keep the original features of FriendlyCore such as Qt5, OpenCV, WiringPi, etc. ffmpeg/mpv is not currently supported
3) U-Boot version: 2017.09
4) Integrate Rockchip's latest GPU, video codec, and Camera support
24.24
2020-09-2724.24.1
Android 10:24.25
2020-09-161) Update SDK to Rockchip android-10.0-mid-rkr9
2) HDMI enable more resolution options
3) Fix the problem of no display on DisplayPort
4) Update the Bluetooth firmware to fix the issue that the NanoPi M4B cannot enable Bluetooth
5) Fix the logo display issue
1) Update the Bluetooth firmware and fix the issue that the Bluetooth firmware was not successfully loaded
2) Update bcmdhd driver to 1.579.77.41.22
3) Fixed the issue that the permissions of the /tmp/ directory were modified to read-only
24.26
2020-08-171) Optimized the steps and stability of installing the system through typc-c. AndroidTool and configuration files are preset for each system's compressed package, and there is no need to manually load files (Note: When changing the OS type in EMMC, you still need to wipe In addition to Flash, then burn the new OS);
2) Fixed the issue that the FriendlyWrt serial port could not be logged in;
24.27
2020-07-101) Enable HDMI IN audio input and headphone port audio output by default for SOM-RK3399
2) Added support for 2 USB cameras to work together, Camera application can switch the front/rear camera preview
3) Pre-installed browser Chrome and input method Gboard
24.28
2020-06-231) base on android-10.0-mid-rkr8:
- AOSP: android-10.0.0_r32
- Linux version 4.19.111
- U-Boot 2017.09
2) Support MIPI-CSI camera and USB camera
3) Support HDMI IN video input
4) Built-in Google Play
5) Built-in Lightning Browser
6) Enabled dynamic partitions
7) Built-in FriendlyThings demo
8) Built-in Quectel EC20 driver
9) Support RC-100 infrared remote control
10) Provides Settings to automatically hide navigation bars
11) Update tools:AndroidTool_Release_v2.71.zip,Linux_Upgrade_Tool_v1.49.zip
Provides Settings to automatically hide navigation bars
24.29
2020-03-241) Update Android8.1_SDK to Rockchip official version v8.32_20200218
2) Upgrade OpenCV to 4.2
3) Upgrade OpenWrt to 19.07.1
4) DDR loader updated to 1.24, support multiple frequency set points
5) Improved camera driver stability
6) Optimization of kernel stability
24.30
2019-12-271) Pre-installed wiringPi for python3, non-root users can access hardware resources such as gpio
2) Fixed virtual env permissions for pi user
3) Fixed /tmp directory permissions
4) Updated kernel configuration, improved docker compatibility
Upgrade to OpenWrt r19-snapshot 64bit, support Docker CE
1) Supports flashing only some files, such as updating only the kernel and uboot in emmc
2) Added gui option to disable overlay filesystem
3) Add command line parameters to achieve one-click installation without interaction
4) Fix the issue that the same mac address will appear on different devices after backup and restore image
5) UI interface can now be configured with title, hide interface menus and buttons
24.31
2019-09-26Fix Qt5 demo touch screen related issue
24.32
2019-09-031) Upgrade Android8.1_SDK to Rockchip v8.20_20190801 (Kernel: 4.4.167)
2) Increase the recording volume by 15dB
3) Fixed an issue where some HDMI display scales were not displayed correctly
4) USB Host: Enable DWC3's AutoRetry feature to improve the stability of some USB3.0 industrial cameras
1) Merge the official kernel update and upgrade the kernel to 4.4.179
2) USB Host: Enable DWC3's AutoRetry feature to improve the stability of some USB3.0 industrial cameras
3) Fixed HDMI IN issue
1) Upgrade Buildroot's version to Rockchip_v2.2.0_20190628
2) Merge the official kernel update and upgrade the kernel to 4.4.179
3) Fix bluetooth issue
24.33
2019-07-181) Modify SDIO's maximum frequency to 150M to improve Wi-Fi performance
2) Fixed some unrecognized problems with NVMe M.2 SSDs, improving compatibility
1) Modify SDIO's maximum frequency to 150M to improve Wi-Fi performance
2) Bluetooth BLE enabled
24.34
2019-06-25Linux(Ubuntu 16.04/18.04) uses OverlayFS to enhance filesystem stability.
24.35
2019-05-231) Fix the Pulseaudio issue
2) Fix the Bluetooth issue
24.36
2019-05-111) Added support for PWM fan, support fan speed control
2) Add SSD support (Note: SSD partition needs to be ext4 format)
1) Kernel version updated to v4.4.167
2) the isp driver of the camera is upgraded from cif_isp10 to rk_isp1, supporting dual mipi cameras to work at the same time
3) OpenCV is upgraded to the latest version 4.1, supporting dual mipi camera and USB camera (logitech C920)
4) 4G network support is added to the Linux system (module: Quectel EC20)
5) Add Aanopc-t4 PWM fan support
1) Reduced file system size
2) The network configuration is changed from DHCP to static IP address (192.168.1.231)
24.37
2019-03-08Add Buildroot Linux system, based on Rockchip original RK3399 Linux SDK, project open source, please refer to the details:Buildroot
1) Optimized LCD and HDMI screen rotation settings, support for command line operations (command: wm rotation 90)
2) Fix the problem that the microphone cannot sound after forcing the audio output to the headphones
1) Kernel version updated to v4.4.154
2) Docker support
3) Kernel configuration items are optimized to enable more features and device drivers
4) Fixed an issue where USB WiFi could not be used
5) Fix the stability problem of ISP camera
24.38
2018-12-191) Update the AOSP source version to Android8.1-SDK v5.00-20181109
2) Add HDMI resolution and HDMI overscan setting UI
3) Add audio output settings, you can set the default output to headphones or HDMI
4) Add OV13850 and wide dynamic OV4689 camera support
1) Added OV13850 and wide dynamic OV4689 camera support
2) Added ffmpeg support, provides static libraries and header files, supports 4K hardware decoding (does not support hardware encoding)
3) Added mpv player, supports 4K hardware decoding
1) Added OV13850 and wide dynamic OV4689 camera support
2) Add Chrome-browser browser, support web page 1080P hardware decoding, support WebGL
3) Added ffmpeg support, provides static libraries and header files, supports 4K hardware decoding (does not support hardware encoding)
4) Fix the volume adjustment Issue
5) Set the audio output channel to HDMI by default (can be modified by /etc/pulse/default.pa)
6) Optimize the local player, associated with the mp4 file
7) Automatically enable swap partitioning for NEO4
8) Fix the issue of hostapd related issues
9) Adjust DPMS settings, turn off automatic sleep by default
1) Added OV13850 and wide dynamic OV4689 camera support
2) Add Chrome-browser browser, support web page 1080P hardware decoding, support WebGL
3) Set the audio output channel to HDMI by default (can be modified by /etc/asound.conf)
4) Optimize the local hard disk player, associated with the local mp4 file, double-click the local video to start the local hard disk player playback (only mp4 files are supported)
5) Fixed some issues regarding the package error reported in the previous version
6) Adjust DPMS settings, turn off automatic sleep by default
24.39
2018-11-121) Add support for USB-C display
2) Add support for 4G network, the model number of the support module is: Quectel EC20
3) Add Android hardware access library FriendlyThing for programming various hardware resources under Android, such as Uart, SPI, I2C, GPIO, etc.
4) Optimize kernel configuration to improve PCIe performance, and connect NVME SSD will have a large performance improvement
5) Integrate the Google Play app store
6) Improve the underlying support of the camera so that it can automatically adapt to vertical screen (HD702E) and landscape (HDMI)
7) Fix the problem that the partition table is abnormal when Android8 is connected to NVME SSD and Android8 cannot be started.
1) Add support for 4G network, the model number of the support module is: Quectel EC20
2) Add Android hardware access library FriendlyThing for programming various hardware resources under Android, such as Uart, SPI, I2C, GPIO, etc.
3) Optimize kernel configuration to improve PCIe performance, and connect NVME SSD will have a large performance improvement
4) Improve the underlying support of the camera so that it can automatically adapt to vertical screen (HD702E) and landscape (HDMI)
5) Fix the problem that the partition table is abnormal when Android8 is connected to NVME SSD and Android8 cannot be started.
1) Added support for OV13850 camera, provides gsteamer plugin to support ISP
2) Add WiringPi support for C language programming to access hardware resources such as GPIO
3) Added WiringPi-Python support for Python programming access to hardware resources such as GPIO
4) Optimize kernel configuration to improve PCIe performance, and connect NVME SSD will have a large performance improvement
24.40
2018-09-2124.41
2018-09-051) Support 2 CAM1320 (OV13850) at the same time, you can choose to switch between before and after camera use
2) Support USB camera (1 way, can not be used simultaneously with CAM1320)
3) Support AndroidNN GPU acceleration solution, which provides general acceleration support for AI related applications developed with AndroidNN API
4) Integrate the Tensorflow Lite item identification demo provided by Rockchip: TfLiteCameraDemo (connect CAM1320 or USB camera before starting)
5) Integrated Lightning is the default browser application (Note: Android official does not provide Browser application by default)
6) Support RC-100 infrared remote control, support pull-down notification bar, screen capture
7) Support Android full disk encryption function, system partition has Verity enabled, when using adb, adb root; adb disable-verity command disable Verity
8) Support MTP function, after connecting Type-C, you can enter Settings -> Connected devices -> USB to select the corresponding function
9) Upgrade the kernel version to 4.4.126
10) Update the AOSP source to the version android-8.1.0_r41 and update the August security patch
Want more information on Microcontroller and SBC, System on Chip? Click the link below to contact us.