Orange Pi RK3399 User manual

Orange Pi User Manual Shenzhen Xunlong Software Co., Ltd.
www.orangepi.org Iwww.xunlong.tv
Orange Pi RK3399
User Manual

Orange Pi User Manual Shenzhen Xunlong Software Co., Ltd.
www.orangepi.org II www.xunlong.tv
History
Ver
Data
Author
Brief
Publish
Memo
1.1
2017-07-14
Younix
Create Document
2018-1-31
1.2
2018-02-01
Younix
Update Compilation of Android
SDK in chapter Ⅲ(3)
2018-3-6
1.3
2018-03-19
Younix
Update Frequency FAQⅤ(3)
2018-3-19

Orange Pi User Manual Shenzhen Xunlong Software Co., Ltd.
www.orangepi.org III www.xunlong.tv
Contents
I. Orange Pi RK3399 Introduction............................................................................................................ 1
1. What is Orange Pi RK3399?..........................................................................................................1
2. What can I do with Orange Pi RK3399?.......................................................................................1
3. Whom is it for?.............................................................................................................................. 1
4. Orange Pi RK3399 Hardware specification.................................................................................. 1
5. GPIO Specifications...................................................................................................................... 5
II. Using Method Introduction...................................................................................................................8
1.Hardware Requirement..............................................................................................................8
2.Software Requirement............................................................................................................... 8
3.Power Supply Requirement.......................................................................................................8
III. Android Compilation Environment Construction............................................................................... 9
1.Download SDK compression package......................................................................................9
2.Construct Compilation Environment.........................................................................................9
3.Compilation of SDK Source Code.......................................................................................... 10
4.Generated Firmware................................................................................................................ 11
IV. Android Firmware Flashing............................................................................................................... 12
1.Flashing image on Windows....................................................................................................13
2.Flashing image on Linux.........................................................................................................15
3.FAQ of Image Flashing........................................................................................................... 18
V. Linux Environment Construction and Firmware Compilation...........................................................21
1.Download SDK compression package....................................................................................21
2.Construct Compilation Environment.......................................................................................21
3.Install Software Package......................................................................................................... 21
4.Compile Linux SDK and Make Firmware.............................................................................. 21
5.Flash Linux Firmware............................................................................................................. 23
VI. Construct Compilation Environment and Make Rootfs Image.........................................................25
1.Construct Compilation Environment...............................................................................................25
2.Download Linux Rootfs Source Code Package.............................................................................. 25
3.Modify Rootfs and Add Customize Software................................................................................. 25
4.Make Rootfs Image..........................................................................................................................26

Orange Pi User Manual Shenzhen Xunlong Software Co., Ltd.
www.orangepi.org 1www.xunlong.tv
I. Orange Pi RK3399 Introduction
1. What is Orange Pi RK3399?
It’s an open-source single-board computer. It can run Android 6.0, Ubuntu,
Debian, it uses the RK3399 SoC, and has 2GB DDR3 SDRAM
2. What can I do with Orange Pi RK3399?
You can use it to build…
A computer
A wireless server
Games
Music and sounds
HD video
A speaker
Android
Scratch
......
Pretty much anything else, because Orange Pi RK3399 is open source.
3. Whom is it for?
Orange Pi RK3399is for anyone who wants to create with technology– not
just consuming. It's a simple, fun, useful tool and you can use it to take
control of the world around you.
4. Orange Pi RK3399 Hardware specification
Hardware Specification
Soc
Rockchip RK3399 (28nm HKMG Process)
CPU
Six-CoreARM® 64-bit processor, up to 2.0GHz
frequency

Orange Pi User Manual Shenzhen Xunlong Software Co., Ltd.
www.orangepi.org 2www.xunlong.tv
Dual-Core Cortex-A72 and Quad-Core Cortex-A53
GPU
ARM Mali-T860 MP4 Quad-Core GPU
Completely compatible with OpenGL ES1.1/2.0/3.0/3.1,
OpenVG1.1, OpenCL, DX11
Support AFBC
VPU
Supports multi-format video decoders including
H.264/H.265/VP9 4Kx2K@60fps
1080P Multi format video decoding (WMV,
MPEG-1/2/4, VP8)
1080PVideo encoding, supporting H.264, VP8 format
Video post processor: anti interleaving, denoising, edge/
detail / color optimization
PMU
RK808 PMU
BQ25700 Charger IC
CW2015 Fuel Gas
Memory
2GB DDR3
Storage
16GB High-Speed eMMC
MicroSD (TF) Card Slot
miniPCIe (for LTE / mSATA)
mSATA interface
Wireless
Integrated WiFi Combo Module(AP6356S):
2.4GHz/5GHz Dual-Band WiFi
Support 802.11a/b/g/n/ac
2x2 MIMO standard Bluetooth 4.1(Support BLE)
Ethernet
10/100/1000Mbps Ethernet ( Realtek RTL8211E )
Display
1 x HDMI 2.0 ( Type-A ), Support maximum 4K@60Hz
display
1 x DP 1.2 (DisplayPort) , Support maximum 4K@60Hz
display
2 x MIPI , support 2560x1600@60fps output with dual
channel
1 x eDP 1.3 ( 4 lanes with 10.8Gbps )
1 x HDMI IN
Audio
1 x HDMI or 1 x DP ( DispalyPort ) for audio output
1 x Analog audio (via 3.5mm Combo Audio Jack for

Orange Pi User Manual Shenzhen Xunlong Software Co., Ltd.
www.orangepi.org 3www.xunlong.tv
audio input and ouput)
1 x Speaker for audio output ( 1.5W 8Ω or 2.5W 4Ω )
1 x SPDIF
1 x On-board Microphone
1 x I2S (up to 8 channels) for audio input and output
1 x Mic Array Interface
Camera
2 x MIPI-CSI (13Mpixel Max for each port )
(OV13850(13M))
Support USB Camera
Sensor
1 x Gyroscope+G-Sensor(MPU6500)
1 x Gyroscope(LSM6DS3)
1 x HALL Sensor(HAL248TWCL)
1 x Light Sensor(CM32181)
1 x Compass(AK09911)
PCIe
1 x Mini PCIe
Compatible USB, used for LTE or TF Card
Compatible mSATA, used for expand SATA harddisk or
SSD
SIM
1 x SIM slot, use as LTE module for miniPCIe extension
USB
4 x USB2.0 HOST, 1 x USB3.0 Type-C
IR
1 x IR, Support IR control function
LED
2 x Power Status LED (Red and Green)
1 x SATA Power Status LED(Green)
Key
1x Reset Button, 1 x Power Button, 1 x Recovery Button,
1 x Menu Button, 1 x Return Button, 1 x Vol+ Button,
1 x Vol- Button
Debugging
1 x Serial Console
Reserved
Interface
40pin 2.54mm header
4 x I2C , 1 x SPI, 2 x UART, 5 x GPIO
External
Power supply
interface
DC12V - 2A (2 pins)
DC5V - 2A (2 pins)
Power
DC12V-2A (via DC 5.5*2.1mm Jack)
TypeC 5V-3A
Battery (Dual Battery 7.4V)

Orange Pi User Manual Shenzhen Xunlong Software Co., Ltd.
www.orangepi.org 4www.xunlong.tv
OS / Software
OS
Android 6.0, Debian 9
Programming
support
C, C++, Kotlin, Java, Shell, Pyhon
Interface definition
Size
129 mm × 99 mm
Weight
100g

Orange Pi User Manual Shenzhen Xunlong Software Co., Ltd.
www.orangepi.org 5www.xunlong.tv
5. GPIO Specifications
The following is GPIO Pin of Orange Pi RK3399:
PIN1
3V3-1
Power 3.3V
PIN2
5V-1
Power 5V
PIN3
SDA
GPIO1_B3
I2C4_SDA
Default used as I2C
PIN4
5V-2
Power 5V
PIN5
SCL
GPIO1_B4
I2C4_SCL
Default used as I2C
PIN6
GND4
Ground
PIN7
GPIO4
GPIO2_A0
I2C2_SDA

Orange Pi User Manual Shenzhen Xunlong Software Co., Ltd.
www.orangepi.org 6www.xunlong.tv
PIN8
TX
GPIO4_C4
UART2DBG_TX
Default used as Debug
PIN9
GND1
Ground
PIN10
RX
GPIO4_C3
UART2DBG_RX
Default used as Debug
PIN11
GPIO17
GPIO2_C0
UART0_RXD
PIN12
GPIO18
GPIO2_A1
I2C2_SCL
PIN13
GPIO27
GPIO2_C1
UART0_TXD
PIN14
GND5
Ground
PIN15
GPIO22
GPIO2_C2
UART0_CTS
PIN16
GPIO23
GPIO2_A2
PIN17
3V3-2
Power 3.3V
PIN18
GPIO24
GPIO2_A3
PIN19
MOSI
GPIO1_A7
SPI1_RXD
PIN20
GND6
Ground
PIN21
MISO
GPIO1_B0
SPI1_TXD
PIN22
GPIO25
GPIO2_C3
UART0_RTS
PIN23
SCLK
GPIO1_B1
SPI1_CLK
PIN24
CS0
GPIO1_B2
PIN25
GND2
Ground
PIN26
CS1
GPIO2_D4
When use J90005 to
connect Camera, this pin
has been occupied,
DVP_PDN0_H
PIN27
DNP1
GPIO4_D2
PIN28
DNP2
GPIO1_C2
PIN29
GPIO5
GPIO2_A4
Default used as
PCIE_PERST
PIN30
GND7
Ground
PIN31
GPIO6
GPIO2_A5
Default used as
HDMIIN_PWREN33
PIN32
GPIO12
GPIO2_B4
SPI2_CSN
When use J4601 to
connect Camera, this pin
has been occupied,
DVP_PDN0_H

Orange Pi User Manual Shenzhen Xunlong Software Co., Ltd.
www.orangepi.org 7www.xunlong.tv
PIN33
GPIO13
GPIO2_A6
Default used as
HDMIIN_PWREN
PIN34
GND8
Ground
PIN35
GPIO19
GPIO2_A7
I2C7_SDA
PIN36
GPIO16
GPIO2_B1
SPI2_RXD
I2C6_SDA
Default used as
HDMIIN_PWREN18
PIN37
GPIO26
GPIO2_B0
I2C7_SCL
PIN38
GPIO20
GPIO2_B2
SPI2_TXD
I2C6_SCL
PIN39
GND3
Ground
PIN40
GPIO21
GPIO2_B3
SPI2_CLK

Orange Pi User Manual Shenzhen Xunlong Software Co., Ltd.
www.orangepi.org 8www.xunlong.tv
II. Using Method Introduction
1.Hardware Requirement
Orange Pi RK3399 Development Board
A PC for compilation with following specs:
64bit CPU
Up to 16GB RAM
UP to 40GB spare disk space
Operation system should up to Ubuntu12.04, it would be better if it is Ubuntu16.04
You could refer to Google file for more details: https://source.android.com/source/building
2.Software Requirement
Orange Pi RK3399 SDK
Orange Pi RK3399 Firmware
Android-image-flash-tool
3.Power Supply Requirement
There are three methods for power supply:
DC (12V 2A)in for power
TypeC (5V 3A)in for power
Battery (Dual Battery 7.4V)in for power, connect the battery with our BAT interface
If insert TypeC and DC connector in the same time, the system would default charge by DC in. It
would not recommend to power by the battery, because different batteries need matching with
BQ25700 battery management IC according to their respective parameters.

Orange Pi User Manual Shenzhen Xunlong Software Co., Ltd.
www.orangepi.org 9www.xunlong.tv
III. Android Compilation Environment Construction
1.Download SDK compression package
Take OrangePi-RK3399_Android6.0_V1.0_2017_0720.tgz as am example, after get the original
compression package:
mkdir OrangePi-rk3399
tar xvf OrangePi-rk3399_Android6.0_V1.0_2017_0720.tgz -C OrangePi-rk3399
cd OrangePi-rk3399
2.Construct Compilation Environment
It could also refer to Google file: http://source.android.com/source/initializing.html
Install JDK
Compilation of Android6.0 is based on JAVA7, it needs to first install OpenJDK before compilation.
Command for installing:
sudo apt-get install openjdk-7-jdk
Configure environment variable of JAVA, here is the path for installation:
/usr/lib/jvm/java-7-openjdk-amd64
It could configure on the terminal with the following command:
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
Install Software Package
For Ubuntu12.04:

Orange Pi User Manual Shenzhen Xunlong Software Co., Ltd.
www.orangepi.org 10 www.xunlong.tv
sudo apt-get update
sudo apt-get install git gnupg flex bison gperf build-essential \
zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \
libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \
g++-multilib mingw32 tofrodos gcc-multilib ia32-libs \
python-markdown libxml2-utils xsltproc zlib1g-dev:i386
For Ubuntu14.04:
sudo apt-get update
sudo apt-get install git-core gnupg flex bison gperf libsdl1.2-dev \
libesd0-dev libwxgtk2.8-dev squashfs-tools build-essential zip curl \
libncurses5-dev zlib1g-dev pngcrush schedtool libxml2 libxml2-utils \
xsltproc lzop libc6-dev schedtool g++-multilib lib32z1-dev lib32ncurses5-dev \
lib32readline-gplv2-dev gcc-multilib libswitch-perl
The relevant software package for installing ARM cross compilation tool chain and kernel:
sudo apt-get install gcc-arm-linux-gnueabihf \
lzop libncurses5-dev \
libssl1.0.0 libssl-dev
3.Compilation of SDK Source Code
Compilation with auto-building shell scripts
We can make use of the RKTool/make.sh script in the SDK root directory for automatic compilation,
using the following methods(Please ensure that it runs in the root directory):
U-boot Compilation:
./RKTools/make.sh -u -j4
Kernel Compilation:
./RKTools/make.sh -k -j4
Android Compilation:
./RKTools/make.sh -a -j4
Compile u-boot、Kernel、Android in the same time:
cd SDK_ROOT/
./RKTools/make.sh -j4

Orange Pi User Manual Shenzhen Xunlong Software Co., Ltd.
www.orangepi.org 11 www.xunlong.tv
Manual Compilation with Different Module
U-boot Compilation:
cd u-boot
make rk3399_defconfig
make ARCHV=aarch64 -j4
Kernel Compilation:
cd kernel
make ARCH=arm64 orangepi_defconfig
make ARCH=arm64 rk3399-orangepi.img -j4
Android Compilation:
source build/envsetup.sh
lunch rk3399_mid-userdebug
make -j4
4.Generated Firmware
./mkimages.sh
After execute ./mkimages.sh, it will generate a full firmware package on the directory of
rockdev/Image-rk3399_mid.
rockdev/Image-xxx/
├── boot.img
├── kernel.img
├── misc.img
├── parameter.txt
├── recovery.img
├── resource.img
├── RK3399MiniLoaderAll_V1.05.bin
├── system.img
├── trust.img
└── uboot.img
Except the above method, the unity image(update.img) could also be generated via
Linux_Pack_Firmware.

Orange Pi User Manual Shenzhen Xunlong Software Co., Ltd.
www.orangepi.org 12 www.xunlong.tv
IV. Android Firmware Flashing
Relevant keys and connectors for firmware flashing of Orange Pi RK3399 :
There are two types of Firmware file:
Multi-partition images: generated uboot.img, recovery.img, trust.img, kernel.img, resource.img,
system.img, usually used for debug.
One image: generated into update.img with packing tool from several partition image files,
usually used for Firmware release.
(The official has already made Android image, also you could try to compile you own image with
reference of our manual.)
Supporting OS of PC:
Windows XP (32/64bit)
Windows 7 (32/64bit)
Windows 8 (32/64bit)
Linux (32/64bit)

Orange Pi User Manual Shenzhen Xunlong Software Co., Ltd.
www.orangepi.org 13 www.xunlong.tv
We use AndroidTool on Windows
Download path: AndroidTool
We use upgrade_tool on Linux:
Download path: upgrade_tool
Please select the corresponding tool according to your PC environment.。
1.Flashing image on Windows
The tool we should use on Windows is AndroidTool, you could use it for multi-partition image
flashing or one image file: update.img.
Before image writing, we need to first install RK USB driver on Windows.
1) Install RK USB Driver
Download path: DriverAssitant
Run this after unzip: DriverInstall.exe
In order to use the latest driver of all device, please first click Drive unload and then click Drive
install:
Connect with Type-C data cable and PC with Orange Pi RK3399 after installed USB driver, there
would be show the status of USB driver on lower right corner like the following:

Orange Pi User Manual Shenzhen Xunlong Software Co., Ltd.
www.orangepi.org 14 www.xunlong.tv
2) Enter into Flashing Mode
Type-A Connect to PC
Press on Recovery key of Orange Pi RK3399
Type-C Connect to Orange Pi RK3399, there should be notice on the following :
There would be log information if you connect debug pin.
Insert DC power supply
Since OrangePi RK3399 supports powered by TypeC, power voltage on USB of PC is enough for
flashing image. However, it may not enough to support Orange Pi booting. In that case, we need to
insert DC power supply to make sure the Orange Pi could boot successfully after flashed image.
If need to flash every partition image(*.img) separately, right click Download Image then click
corresponding firmware path. After that click Run, and the right side would show the status of
running.

Orange Pi User Manual Shenzhen Xunlong Software Co., Ltd.
www.orangepi.org 15 www.xunlong.tv
If need to flash unity firmware(update.img), click Firmware on Upgrade Firmware, select path of
update.img. After it recognized LOADER device, click Upgrade and it will begin to upgrade. The
right side would show the status of flashing.
2.Flashing image on Linux
1) Flash tool: upgrade_tool
On Linux, the tool we use is upgrade_tool which is same with working on Windows. Enter into
Loader flashing mode like the following:

Orange Pi User Manual Shenzhen Xunlong Software Co., Ltd.
www.orangepi.org 16 www.xunlong.tv
Type-A Connect to PC
Press on Recovery key of Orange Pi RK3399
Type-C Connect to Orange Pi RK3399
Insert DC power supply
Since OrangePi RK3399 supports powered by TypeC, power voltage on USB of PC is enough for
flashing image. However, it may not enough to support Orange Pi booting. In that case, we need to
insert DC power supply to make sure the Orange Pi could boot successfully after flashed image.
There would be log information if you connect debug pin.
Run upgrade_tool on terminal of Linux:
$ sudo ./upgrade_tool
List of rockusb connected
DevNo=1Vid=0x2207,Pid=0x330c,LocationID=201 Loader
Found 1rockusb,Select input DevNo,Rescan press <R>,Quit press <Q>:
Enter R: Re-scan the USB port to find the device
Enter Q: Exit flashing tool
Enter DevNo: Select the corresponding operation device
Here I would enter 1:
Found 1rockusb,Select input DevNo,Rescan press <R>,Quit press <Q>:1
The help menu is displayed when you enter, and the Rockusb> prompt appears

Orange Pi User Manual Shenzhen Xunlong Software Co., Ltd.
www.orangepi.org 17 www.xunlong.tv
It could be operated by entering the corresponding instructions after the Rockusb> prompt. No
distinguish between capital and lowercase.
TD Command: used to test whether the device status is normal
DI Command: used for flashing separate partitions *.img :
DI <-p|-b|-k|-s|-r|-m image> [parameter file]
The first parameter is used to specify the partition name that needs to be flashed.
The second parameter is used to specify the path of the flashed image
For example, there would be two method to flash kernel.img:
Rockusb>di -k ./kernel.img
Rockusb>di kernel ./kernel.img
UF Command: used for unity flashed image update.img
UF <Firmware>
The only parameter is used to specify the need to burn the firmware path.
For example, if my firmware path is:
RK3399_IMAGE/Image_Android6.0_20171228.img
Then the command should be:
Table of contents
Other Orange Pi Motherboard manuals