Orange Pi 3B
Contents
- 1 Basic features of Orange Pi 3B
- 2 Introduction to the use of the development board
- 2.1 Prepare the required accessories
- 2.2 Download the image of the development board and related materials
- 2.3 Method of burning Linux image to TF card based on Windows PC
- 2.4 Method of burning Linux image to TF card based on Ubuntu PC
- 2.5 How to burn Linux image to eMMC
- 2.6 How to write Linux image to SPIFlash+NVMe SSD
- 2.7 How to burn Android image to TF card
- 2.8 How to burn Android image to eMMC
- 2.9 How to burn Android image to SPIFlash+NVMe SSD
- 2.10 Using RKDevTool to clear SPIFlash
- 2.11 Start the Orange Pi development board
- 2.12 How to use the debugging serial port
- 2.13 Instructions for using the 5v pin in the 40pin interface of the development board to supply power
- 3 Instructions for use of Ubuntu/Debian Server and Xfce desktop system
- 3.1 Supported Linux image types and kernel versions
- 3.2 Linux System adaptation
- 3.3 The format of Linux commands in this manual
- 3.4 Linux system login instructions
- 3.4.1 Linux system default login account and password
- 3.4.2 How to set automatic terminal login in Linux system
- 3.4.3 Instructions for automatic login of Linux desktop version system
- 3.4.4 The setting method of root user automatic login in Linux desktop version system
- 3.4.5 The method of disabling the desktop in the Linux desktop version system
- 3.5 Onboard LED Light Test Instructions
- 3.6 Network connection test
- 3.7 SSH remote login development board
- 3.8 The method of uploading files to the Linux system of the development board
- 3.9 HDMI test
- 3.10 How to use Bluetooth
- 3.11 USB interface test
- 3.12 Audio Test
- 3.13 Temperature Sensor
- 3.14 40 Pin interface pin explanation
- 3.15 How to install wiringOP
- 3.16 40Pin interface GPIO, I2C, UART, SPI, and PWM test
- 3.17 How to install and use wiringOP-Python
- 3.18 Hardware watch the door dog test
- 3.19 Check the serial number of the RK3566 chip
- 3.20 The method of downloading and installing the balenaEtcher version of arm64
- 3.21 The installation method of the Bt-Panel Linux panel
- 3.22 Set the Chinese environment and install Chinese input method
- 3.23 How to remotely log in to the Linux system desktop method
- 3.24 Some programming language tests supported by Linux system
- 3.25 QT installation method
- 3.26 ROS Installation Method
- 3.27 How to install kernel header files
- 3.28 Use of the Raspberry PI's 5-inch screen
- 3.29 Instructions for using the switch logo
- 3.30 How to use the ZFS file system
- 3.31 How to shut down and restart the development board
- 4 Linux SDK——orangepi-build instructions
- 5 Android 11 operating system instructions
- 6 Appendix
Basic features of Orange Pi 3B
What is Orange Pi 3B
Orange Pi 3B adopts Rockchip RK3566 quad-core 64-bit Cortex-A55 processor, adopts 22nm process, the main frequency can reach up to 1.8GHz, integrates ARM Mali-G52 GPU, embedded high-performance 2D image acceleration module, built-in 1 The AI accelerator NPU of Tops computing power can choose 2GB, 4GB or 8GB memory, and has up to 4K display processing capability.
Orange Pi 3B brings out quite a lot of interfaces, including HDMI output, M.2 PCIe2.0x1, Gigabit Ethernet port, USB2.0, USB3.0 interface and 40pin expansion pin header, etc. It can be widely used in high-end tablet, edge computing, artificial intelligence, cloud computing, AR/VR, smart security, smart home and other fields, covering various AIoT industries.
Orange Pi 3B supports Android11, Ubuntu22.04, Ubuntu20.04, Debian11, Debian12, OpenHarmony 4.0 Beta1, Orange Pi OS (Arch), Orange Pi OS (OH) based on OpenHarmony and other operating systems.
Purpose of Orange Pi 3B
We can use it to achieve:
- A Linux desktop computer
- A Linux web server
- Android tablet
- Android game console, etc.
Of course, there are more functions. Relying on a powerful ecosystem and a variety of expansion accessories, Orange Pi can help users easily realize the delivery from idea to prototype to mass production. It is a maker, dreamer, hobby The ideal creative platform for readers. |
Hardware Features of Orange Pi 3B
Introduction to hardware features
| |
Master chip |
Rockchip RK3566 |
CPU |
Quad-core 64-bit Cortex-A55 processor, 22nm advanced technology, main frequency up to 1.8GHz |
GPU |
• ARM Mali G52 2EE graphics processor • Support OpenGL ES 1.1/2.0/3.2, OpenCL 2.0, Vulkan 1.1 • Embedded high-performance 2D acceleration hardware |
NPU |
• Integrated RKNN NPU AI accelerator, 0.8Tops@INT8 performance • Supports one-click conversion of Caffe/TensorFlow/TFLite/ONNX/PyTorch/Keras/Darknet architecture models |
VPU |
• 4K@60fps H.265/H.264/VP9 video decoding • 1080P@100fps H.265 video encoding • 1080P@60fps H.264 video encoding |
PMU |
Rockchip RK809-5 |
Memory |
2GB/4GB/8GB (LPDDR4/4x) |
storage |
• Support eMMC module: 16GB/32GB/64GB/128GB/256GB • SPI Flash: 16MB/32MB • M.2 M-KEY slot: SATA3 or PCIe2.0 NVME SSD • TF card slot |
Wi-Fi+Bluetooth |
Wi-Fi 5+BT 5.0, BLE(20U5622) |
ethernet transceiver |
10/100/1000Mbps Ethernet (onboard PHY chip: YT8531C) |
show |
• 1x HDMI TX 2.0, maximum support 4K@60FPS • 1xMIPI DSI 2 Lane • eDP1.3 |
Camera |
1xMIPI CSI 2 Lane camera interface |
USB |
• 1xUSB 2.0 supports Device or HOST mode • 1xUSB 3.0 HOST • 2xUSB 2.0 HOST |
Audio |
3.5mm headphone jack audio input/output |
Button |
1x MaskROM key, 1xRESET key, 1 xPOWER key |
FAN |
2Pin 1.25mm 5V fan interface |
RTC |
2Pin 1.25mm backup battery interface |
40Pin |
40Pin function expansion interface, supports the following interface types: GPIO, UART, I2C, SPI, PWM |
Power Supply |
Type-C 5V3A |
Supported OS |
Android11, Ubuntu22.04, Ubuntu20.04, Debian11, Debian12, OpenHarmony 4.0 Beta1, Orange Pi OS (Arch), Orange Pi OS (OH) based on OpenHarmony and other operating systems. |
Introduction of Appearance Specifications
| |
PCB size |
85mm x 56mm x 17mm |
weight |
49g |
Top view and bottom view of Orange Pi 3B
Top view:
Bottom view:
Interface details of Orange Pi 3B
The diameter of the four positioning holes is 2.7mm, and the diameter of the M.2 PICE device fixing hole is 2.9mm. |
Introduction to the use of the development board
Prepare the required accessories
- TF card, class 10 or above high-speed SanDisk card with a minimum capacity of 16GB (recommended 32GB or above)
- HDMI to HDMI cable, used to connect the development board to an HDMI monitor or TV for display
Note, if you want to connect a 4K monitor, please make sure that the HDMI cable supports 4K video output. |
- The mouse and keyboard of the USB interface, as long as the mouse and keyboard of the standard USB interface are acceptable, the mouse and keyboard can be used to control the Orange Pi development board
- 5V cooling fan. As shown in the figure below, the development board has an interface for connecting the cooling fan, and the interface specification is 2pin 1.25mm pitch
The fan on the development board can adjust the speed and switch through PWM. |
- USB2.0 male-to-male data cable, used to burn images to eMMC, NVMe SSD and other functions
- 3.3V USB to TTL module and DuPont line, when using serial port debugging function, need USB to TTL module and DuPont line to connect the development board and computer
- A personal computer with Ubuntu and Windows operating systems installed
1 | Ubuntu22.04 PC | Optional, used to compile Linux source code |
2 | Windows PC | For burning Android and Linux images |
- The website for downloading the English version of materials is:
The information mainly includes
Android source code: saved on Google Cloud Disk
Linux source code: saved on Github
User manual and schematic diagram: saved on Google Cloud Disk
Official tools: mainly include the software that needs to be used during the use of the development board
Android image: saved on Google Cloud Disk
Ubuntu image: saved on Google Cloud Disk
Debian image: saved on Google Cloud Disk
Orange Pi OS image: saved on Google Cloud Disk
OpenHarmony image: saved on Google Cloud Disk
Method of burning Linux image to TF card based on Windows PC
Note that the Linux image mentioned here specifically refers to the images of Linux distributions such as Debian and Ubuntu downloaded from the Orange Pi data download page. |
How to use balenaEtcher to burn Linux image
- First prepare a TF card with a capacity of 16GB or more. The transmission speed of the TF card must be class 10 or above. It is recommended to use a TF card of SanDisk and other brands
- Then use the card reader to insert the TF card into the computer
- Download the Linux operating system image file compression package that you want to burn from the Orange Pi data download page, and then use the decompression software to decompress it. Among the decompressed files, the file ending with ".img" is the image file of the operating system. The size is generally above 2GB.
- Then download the burning software of Linux image—balenaEtcher, the download address is:
- After entering the balenaEtcher download page, click the green download button to jump to the place where the software is downloaded
- Then you can choose to download the Portable version of balenaEtcher software. The Portable version does not need to be installed, and you can use it by double-clicking to open it
- If the downloaded version of balenaEtcher needs to be installed, please install it before using it. If you downloaded the Portable version of balenaEtcher, just double-click to open it. The balenaEtcher interface after opening is shown in the figure below:
When opening balenaEtcher, if the following error is prompted: Please select balenaEtcher, right-click, and select Run as administrator. |
The specific steps to use balenaEtcher to burn the Linux image are as follows
First select the path of the Linux image file to be burned
Then select the drive letter of the TF card
Finally click Flash to start burning the Linux image to the TF card
- The interface displayed in the process of burning the Linux image by balenaEtcher is shown in the figure below, and the progress bar displays purple, indicating that the Linux image is being burned into the TF card
- After burning the Linux image, balenaEtcher will also verify the image burned into the TF card by default to ensure that there is no problem in the burning process. As shown in the figure below, a green progress bar indicates that the image has been burnt, and balenaEtcher is verifying the burnt image
- After successful burning, the display interface of balenaEtcher is as shown in the figure below. If a green indicator icon is displayed, it means that the image burning is successful. At this time, you can exit balenaEtcher, and then pull out the TF card and insert it into the TF card slot of the development board for use.
How to use RKDevTool to burn Linux image to TF card
- First, you need to prepare a good quality USB2.0 male-to-male data cable
You also need to prepare a 16GB or larger capacity TF card. The transmission speed of the TF card must be class 10 or above. It is recommended to use a TF card of SanDisk and other brands
Then download the Rockchip driver DriverAssitant_v5.12.zip and MiniLoader and the burning tool RKDevTool_Release_v3.15.zip from the Orange Pi data download page
- On the data download page of Orange Pi, first select the official tool, and then enter the following folder
- Then download all the files below
Note that the "MiniLoader-things needed to burn the Linux image" folder is hereinafter referred to as the MiniLoader folder.
Then download the Linux operating system image file compression package that you want to burn from the Orange Pi data download page, and then use the decompression software to decompress it. Among the decompressed files, the file ending with ".img" is the image file of the operating system , the size is generally more than 2GB
Then use the decompression software to decompress DriverAssitant_v5.12.zip, and then find the DriverInstall.exe executable file in the decompressed folder and open it
After opening DriverInstall.exe, the steps to install the Rockchip driver are as follows
- Then decompress RKDevTool_Release_v3.15.zip, this software does not need to be installed, just find RKDevTool in the decompressed folder and open it
- After opening the RKDevTool burning tool, because the computer has not connected to the development board through the USB2.0 male-to-male data cable at this time, the lower left corner will prompt "No device found"
Then start burning the Linux image to the TF card
- First, connect the development board to the Windows computer through the USB2.0 male-to-male data cable. The position of the USB2.0 programming port of the development board is shown in the figure below
Make sure the TF card slot is not inserted into the TF card
Then press and hold the MaskROM button on the development board, the position of the MaskROM button on the development board is shown in the figure below:
- Then connect the power supply of the Type-C interface to the development board, and power on, and then release the MaskROM button
- If the previous steps are successful, the development board will enter the MASKROM mode at this time, and the interface of the burning tool will prompt "found a MASKROM device"
At this time, please insert the TF card into the TF card slot
Then place the mouse cursor in the area below
- Then select the rk3588_Linux_tfcard.cfg configuration file in the MiniLoader folder downloaded earlier, and click Open
- Then select rk3566_MiniLoaderAll.bin in the MiniLoader folder downloaded earlier, and click to open
- Then select the path of the Linux image you want to burn, and then click Open
Before burning the image, it is recommended to rename the Linux image to be burned to orangepi.img or other shorter names, so that you can see the percentage value of the burning progress when burning the image.
- Click the execute button again to start burning the Linux image to the tf card of the development board
- The display log after burning the Linux image is shown in the figure below
- After burning the Linux image to the TF card, the Linux system will start automatically.
How to use Win32Diskimager to burn Linux image
First prepare a TF card with a capacity of 16GB or more. The transmission speed of the TF card must be class 10 or above. It is recommended to use a TF card of SanDisk and other brands
Then use the card reader to insert the TF card into the computer
Then format the TF card
- SD Card Formatter can be used to format the TF card. The download address is:
https://www.sdcard.org/downloads/formatter/eula_windows/SDCardFormatterv5_WinEN.zip
After downloading, unzip and install directly, and then open the software
If only a TF card is inserted into the computer, the drive letter of the TF card will be displayed in the "Select card" column. If multiple USB storage devices are inserted into the computer, you can select the corresponding drive letter of the TF card through the drop-down box
- Then click "Format", a warning box will pop up before formatting, and formatting will start after selecting "Yes (Y)"
Download the Linux operating system image file compression package that you want to burn from the Orange Pi data download page, and then use the decompression software to decompress it. Among the decompressed files, the file ending with ".img" is the image file of the operating system. The size is generally more than 2GB
Use Win32Diskimager to burn the Linux image to the TF card
- The download page of Win32Diskimager is
http://sourceforge.net/projects/win32diskimager/files/Archive/
After downloading, install it directly. The interface of Win32Diskimager is as follows
a) First select the path of the image file
b) Then confirm that the drive letter of the TF card is consistent with that displayed in the "Device" column
c) Finally click "Write" to start burning
- After the image writing is completed, click the "Exit" button to exit, and then you can pull out the TF card and insert it into the development board to start
Method of burning Linux image to TF card based on Ubuntu PC
Note that the Linux image mentioned here specifically refers to the images of Linux distributions such as Debian and Ubuntu downloaded from the Orange Pi data download page, and the Ubuntu PC refers to the personal computer with the Ubuntu system installed. |
- First prepare a TF card with a capacity of 16GB or more. The transmission speed of the TF card must be class 10 or above. It is recommended to use a TF card of SanDisk and other brands
- Then use the card reader to insert the TF card into the computer
- Download the balenaEtcher software, the download address is
- After entering the balenaEtcher download page, click the green download button to jump to the place where the software is downloaded
- Download the Linux operating system image file compression package that you want to burn from the Orange Pi data download page, and then use the decompression software to decompress it. Among the decompressed files, the file ending with ".img" is the image file of the operating system. The size is generally more than 2GB
The decompression command for the compressed package ending in 7z is as follows
test@test:~$ 7z x Orangepi3b_1.0.0_debian_bullseye_desktop_xfce_Linux5.10.160.7z test@test:~$ ls Orangepi3b_1.0.0_debian_bullseye_desktop_xfce_Linux5.10.160.* Orangepi3b_1.0.0_debian_bullseye_desktop_xfce_Linux5.10.160.7z Orangepi3b_1.0.0_debian_bullseye_desktop_xfce_Linux5.10.160.sha #checksum file Orangepi3b_1.0.0_debian_bullseye_desktop_xfce_Linux5.10.160.img #mirror file |
- After decompressing the image, you can first use the sha256sum -c *.sha command to calculate whether the checksum is correct. If the prompt is successful, it means that the downloaded image is correct, and you can safely burn it to the TF card. If it prompts that the checksum does not match, it means There is a problem with the downloaded image, please try to download again
test@test:~$ sha256sum -c *.sha Orangepi3b_1.0.0_debian_bullseye_desktop_xfce_Linux5.10.160.img: OK |
- Then double-click balenaEtcher-1.5.109-x64.AppImage on the graphical interface of Ubuntu PC to open balenaEtcher (no installation required), and the interface after balenaEtcher is opened is shown in the figure below
The specific steps of using balenaEtcher to burn the Linux image are as follows
First select the path of the Linux image file to be burned
Then select the drive letter of the TF card
Finally, click Flash to start burning the Linux image to the TF card
- The interface displayed in the process of burning the Linux image by balenaEtcher is shown in the figure below, and the progress bar displays purple, indicating that the Linux image is being burned into the TF card
- After burning the Linux image, balenaEtcher will also verify the image burned into the TF card by default to ensure that there is no problem in the burning process. As shown in the figure below, a green progress bar indicates that the image has been burnt, and balenaEtcher is verifying the burnt image
- After successful burning, the display interface of balenaEtcher is as shown in the figure below. If a green indicator icon is displayed, it means that the image burning is successful. At this time, you can exit balenaEtcher, and then pull out the TF card and insert it into the TF card slot of the development board for use.
How to burn Linux image to eMMC
Using RKDevTool to burn the Linux image into eMMC
Note that all the following operations are performed on a Windows computer. |
Note that the Linux image mentioned here specifically refers to the images of Linux distributions such as Debian and Ubuntu downloaded from the Orange Pi data download page. |
- The development board reserves the expansion interface of the eMMC module. Before burning the system to the eMMC, you first need to purchase an eMMC module that matches the eMMC interface of the development board. Then install the eMMC module to the development board. The eMMC module and the method of plugging into the development board are as follows:
- You also need to prepare a good quality USB2.0 male-to-male data cable
Then download the Rockchip driver DriverAssitant_v5.12.zip and MiniLoader and the burning tool RKDevTool_Release_v3.15.zip from the Orange Pi data download page
- On the data download page of Orange Pi, first select the official tool, and then enter the following folder
- Then download all the files below
Note that the "MiniLoader-things needed to burn the Linux image" folder is hereinafter referred to as the MiniLoader folder.
Then download the Linux operating system image file compression package that you want to burn from the Orange Pi data download page, and then use the decompression software to decompress it. Among the decompressed files, the file ending with ".img" is the image file of the operating system , the size is generally more than 2GB
Then use the decompression software to decompress DriverAssitant_v5.12.zip, and then find the DriverInstall.exe executable file in the decompressed folder and open it
After opening DriverInstall.exe, the steps to install the Rockchip driver are as follows
- Then decompress RKDevTool_Release_v3.15.zip, this software does not need to be installed, just find RKDevTool in the decompressed folder and open it
- After opening the RKDevTool burning tool, because the computer has not connected to the development board through the USB2.0 male-to-male data cable at this time, the lower left corner will prompt "No device found"
Then start burning the Linux image into eMMC
- First, connect the development board to the Windows computer through the USB2.0 male-to-male data cable. The position of the USB2.0 programming port of the development board is shown in the figure below
Make sure that the development board is not inserted into the TF card and not connected to the power supply
Then press and hold the MaskROM button on the development board, the position of the MaskROM button on the development board is shown in the figure below:
- Then connect the power supply of the Type-C interface to the development board, and power on, and then release the MaskROM button
- If the previous steps are successful, the development board will enter the MASKROM mode at this time, and the interface of the burning tool will prompt "found a MASKROM device"
- Then place the mouse cursor in the area below
- Then select the rk3588_Linux_emmc.cfg configuration file in the MiniLoader folder downloaded earlier, and click Open
- Then select rk3566_MiniLoaderAll.bin in the MiniLoader folder downloaded earlier, and then click to open
- Then select the path of the Linux image you want to burn, and then click Open
Before burning the image, it is recommended to rename the Linux image to be burned to orangepi.img or other shorter names, so that you can see the percentage value of the burning progress when burning the image.
- Click the execute button again to start burning the Linux image to the eMMC of the development board
- After burning the Linux image into the eMMC, the Linux system will start automatically.
Note, after burning the image into eMMC, if the test finds that it cannot be started, please clear the SPIFlash and try again. For the method of clearing SPIFlash, please refer to the method of using RKDevTool to clear SPIFlash.
Use the dd command to burn the Linux image into eMMC
Note that the Linux image mentioned here specifically refers to the image of Linux distributions such as Debian, Ubuntu, OpenWRT or OPi OS Arch downloaded from the Orange Pi data download page. |
- The development board reserves the expansion interface of the eMMC module. Before burning the system to the eMMC, you first need to purchase an eMMC module that matches the eMMC interface of the development board. Then install the eMMC module to the development board. The eMMC module and the method of plugging into the development board are as follows:
Using the dd command to burn the Linux image to eMMC needs to be completed with the help of a TF card, so first you need to burn the Linux image to the TF card, and then use the TF card to start the development board to enter the Linux system. For the method of burning the Linux image to the TF card, please refer to the instructions in the two sections of the method of burning the Linux image to the TF card based on the Windows PC and the method of burning the Linux image to the TF card based on the Ubuntu PC.
After using the TF card to start the Linux system, we first upload the decompressed Linux image file (Debian, Ubuntu image or OPi Arch image downloaded from the official website) to the TF card. For the method of uploading the Linux image file to the development board, please refer to the description in the section of the method of uploading files to the development board Linux system.
After uploading the image to the Linux system of the development board, we enter the storage path of the image file in the command line of the Linux system of the development board. For example, I store the Linux image of the development board in the /home/orangepi/Desktop directory Download it, and then enter the /home/orangepi/Desktop directory to see the uploaded image file.
orangepi@orangepi:~$ cd /home/orangepi/Desktop orangepi@orangepi:~/Desktop$ ls Orangepi3b_x.x.x_debian_bullseye_desktop_xfce_Linux5.10.160.img |
How to enter the command line of the development board Linux system? 1. For the method of using the serial port to log in to the terminal, please refer to the instructions in the section on how to use the debugging serial port. 2. Use ssh to remotely log in to the Linux system, please refer to the instructions in the section of SSH remote login to the development board. 3. If HDMI, LCD and other display screens are connected, you can open a command line terminal on the desktop. |
- Next, we first use the following command to confirm the device node of eMMC
orangepi@orangepi:~/Desktop$ ls /dev/mmcblk*boot0 | cut -c1-12 /dev/mmcblk0 |
- Then we can use the dd command to clear the eMMC. Note that after the of= parameter, please fill in the output result of the above command
orangepi@orangepi:~/Desktop$ sudo dd bs=1M if=/dev/zero of=/dev/mmcblk0 count=1000 status=progress orangepi@orangepi:~/Desktop$ sudo sync |
Then you can use the dd command to burn the Linux image of the development board into the eMMC
In the following command, the if= parameter is followed by the full path where the Linux image is stored + the name of the Linux image (such as the name of /home/orangepi/Desktop/Linux image). Because we have entered the path of the Linux image above, we only need to fill in the name of the Linux image.
Please do not copy the Linux image name in the following command, but replace it with the actual image name (because the version number of the image may be updated).
sudo dd bs=1M if=Orangepi3b_x.x.x_debian_bullseye_desktop_xfce_Linux5.10.160.img of=/dev/mmcblk0 status=progress
sudo sync
Note, if you upload a .7z or .xz Linux image compressed file, please remember to decompress it before using the dd command to burn.
The detailed description of all parameters of the dd command and more usage can be viewed by executing the man dd command in the Linux system.
- After successfully burning the Linux image of the development board to the eMMC, you can use the poweroff command to shut down. Then please pull out the TF card, and then short press the power button to turn on, and then the Linux system in the eMMC will be started.
Note, after burning the image into eMMC, if the test finds that it cannot be started, please clear the SPIFlash and try again. For the method of clearing SPIFlash, please refer to the method of using RKDevTool to clear SPIFlash. |
How to write Linux image to SPIFlash+NVMe SSD
Note that the Linux image mentioned here specifically refers to the images of Linux distributions such as Debian and Ubuntu downloaded from the Orange Pi data download page. |
Note that all the following operations are performed on a Windows computer. |
Using RKDevTool to burn
First, you need to prepare an NVMe SSD. The PCIe supported by the M.2 slot of the development board is PCIe2.0x1, and the theoretical maximum speed is 500MB/s. PCIe3.0 and PCIe4.0 NVMe SSDs are also available, but the highest speed is only PCIe2.0x1.
- The position of the SPI Flash on the development board is shown in the figure below, no other settings are required before starting the programming
- Then you need to prepare a good quality USB2.0 male-to-male data cable
Then download the Rockchip driver DriverAssitant_v5.12.zip and MiniLoader and the burning tool RKDevTool_Release_v3.15.zip from the Orange Pi data download page
- On the data download page of Orange Pi, first select the official tool, and then enter the following folder
- Then download all the files below
Note that the "MiniLoader-things needed to burn the Linux image" folder is hereinafter referred to as the MiniLoader folder.
Then download the Linux operating system image file compression package that you want to burn from the Orange Pi data download page, and then use the decompression software to decompress it. Among the decompressed files, the file ending with ".img" is the image file of the operating system , the size is generally more than 2GB
Then use the decompression software to decompress DriverAssitant_v5.12.zip, and then find the DriverInstall.exe executable file in the decompressed folder and open it
After opening DriverInstall.exe, the steps to install the Rockchip driver are as follows
- Then decompress RKDevTool_Release_v3.15.zip, this software does not need to be installed, just find RKDevTool in the decompressed folder and open it
- After opening the RKDevTool burning tool, because the computer is not connected to the development board through the USB2.0 male-to-male data cable at this time, the lower left corner will prompt "No device found"
Then start burning the Linux image to the SSD
- First, connect the development board to the Windows computer through the USB2.0 male-to-male data cable. The position of the USB2.0 programming interface of the development board is shown in the figure below
Make sure that the development board is not connected to the power supply and inserted into the TF card and eMMC
Then press and hold the MaskROM button on the development board, the position of the MaskROM button on the development board is shown in the figure below:
- Then connect the power supply of the Type-C interface to the development board, and power on, and then release the MaskROM button
- If the previous steps are successful, the development board will enter the MASKROM mode at this time, and the interface of the burning tool will prompt "found a MASKROM device"
- Then place the mouse cursor in the area below
- Then enter the MiniLoader folder downloaded earlier, then select the rk3588_Linux_pcie.cfg configuration file, and click Open
- Then select rk3566_MiniLoaderAll.bin in the MiniLoader folder downloaded earlier, and then click to open
- Then enter the MiniLoader folder downloaded earlier, select rk3566_rkspi_loader.img, and click Open
- Then select the path of the Linux image you want to burn, and then click Open
Before burning the image, it is recommended to rename the Linux image to be burned to orangepi.img or other shorter names, so that you can see the percentage value of the burning progress when burning the image.
- The log displayed after burning the Linux image is shown in the figure below
If there is a problem with burning, please clear the SPIFlash first and then try burning again. For the method of clearing SPIFlash, please refer to the description of the method of using RKDevTool to clear SPIFlash.
- After the image is burnt, it will automatically start the Linux system in SPIFlash+PCIe SSD. If it does not start normally, please power on and try again.
The method of using the dd command to burn
First, you need to prepare an NVMe SSD. The PCIe supported by the M.2 slot of the development board is PCIe2.0x1, and the theoretical maximum speed is 500MB/s. PCIe3.0 and PCIe4.0 NVMe SSDs are also available, but the highest speed is only PCIe2.0x1.
- The position of SPI Flash on the development board is shown in the figure below, no other settings are required before starting to burn
Burning the Linux image to SPIFlash+NVMe SSD requires a TF card, so first you need to burn the Linux image to the TF card, and then use the TF card to start the development board to enter the Linux system. For the method of burning the Linux image to the TF card, please refer to the instructions in the two sections of Method of burning Linux image to TF card based on Windows PC and the method of burning the Linux image to the TF card based on the Ubuntu PC.
After using the TF card to start the Linux system, we first burn the u-boot image into the SPI Flash
- Run nand-sata-install first, ordinary users remember to add sudo permission
orangepi@orangepi:~$ sudo nand-sata-install
- Then select 7 Install/Update the bootloader on SPI Flash
- Then select <Yes>
- Then please wait patiently for the burning to complete. After the burning is completed, the display will be as follows (a Done will be displayed in the lower left corner):
Then upload the Linux image file (Debian or Ubuntu image downloaded from the official website) to the TF card. For the method of uploading the Linux image file to the development board, please refer to the description in the section of the method of uploading files to the development board Linux system.
After uploading the image to the Linux system of the development board, we enter the storage path of the image file in the command line of the Linux system of the development board. For example, I store the Linux image of the development board in the /home/orangepi/Desktop directory Download it, and then enter the /home/orangepi/Desktop directory to see the uploaded image file.
orangepi@orangepi:~$ cd /home/orangepi/Desktop orangepi@orangepi:~/Desktop$ ls Orangepi3b_x.x.x_debian_bullseye_desktop_xfce_Linux5.10.160.img |
How to enter the command line of the development board Linux system? 1. For the method of using the serial port to log in to the terminal, please refer to the instructions in the section on how to use the debugging serial port. 2. Use ssh to remotely log in to the Linux system, please refer to the instructions in the section of SSH remote login to the development board. 3. If HDMI, LCD and other display screens are connected, you can open a command line terminal on the desktop. |
- Next, let's confirm that the NVMe SSD has been recognized by the development board's Linux. If the NVMe SSD is recognized normally, use the sudo fdisk -l command to see nvme related information
orangepi@orangepi:~/Desktop$ sudo fdisk -l | grep "nvme0n1" Disk /dev/nvme0n1: 1.86 TiB, 2048408248320 bytes, 4000797360 sectors |
Use the lspci command to see an NVMe-related PCI device
orangepi@orangepi:~/Desktop$ lspci 00:00.0 PCI bridge: Fuzhou Rockchip Electronics Co., Ltd Device 3566 (rev 01) 01:00.0 Non-Volatile memory controller: Realtek Semiconductor Co., Ltd. Device 5765 (rev 01) |
- Then we can use the dd command to clear the NVMe SSD (optional)
orangepi@orangepi3b:~/Desktop$ sudo dd bs=1M if=/dev/zero of=/dev/nvme0n1 count=2000 status=progress orangepi@orangepi3b:~/Desktop$ sudo sync |
- Then you can use the dd command to burn the Linux image of the development board to the NVMe SSD
In the following command, the if= parameter is followed by the full path where the Linux image is stored + the name of the Linux image (such as the name of /home/orangepi/Desktop/Linux image). Because we have entered the path of the Linux image above, we only need to fill in the name of the Linux image.
Please do not copy the Linux image name in the following command, but replace it with the actual image name (because the version number of the image may be updated).
sudo dd bs=1M if=Orangepi3b_x.x.x_debian_bullseye_desktop_xfce_Linux5.10.160.img of=/dev/nvme0n1 status=progress
|
Note, if you upload a .7z or .xz or .gz Linux image compressed file, please remember to decompress it before using the dd command to burn.
|
After successfully burning the Linux image of the development board to the NVMe SSD, you can use the poweroff command to shut down. Then please pull out the TF card, and then short press the power button to turn on, then the Linux system in SPIFlash+NVMe SSD will be started.
After starting the system in the NVMe SSD, use the df -h command to see the actual hard disk capacity
- 128GB NVMe SSD
orangepi@orangepi:~$ df -h
Filesystem Size Used AvailUse% Mounted on
udev3.8G 8.0K 3.8G 1% /dev
tmpfs 769M 1.4M 768M 1% /run
/dev/nvme0n1p2118G 5.8G 111G 5% /
tmpfs 3.8G 03.8G 0% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 3.8G 16K 3.8G 1% /tmp
/dev/nvme0n1p1256M 90M 166M 36% /boot
/dev/zram1194M 9.9M 170M 6% /var/log
tmpfs 769M 60K 769M 1% /run/user/1000
tmpfs 769M 48K 769M 1% /run/user/0
- 2TB NVMe SSD
orangepi@orangepi:~$ df -h
Filesystem Size Used AvailUse% Mounted on
udev3.8G 8.0K 3.8G 1% /dev
tmpfs 769M 1.4M 768M 1% /run
/dev/nvme0n1p21.9T 4.1G 1.8T 1% /
tmpfs 3.8G 03.8G 0% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
/dev/zram23.7G 76K 3.5G 1% /tmp
/dev/nvme0n1p1256M 90M 166M 36% /boot
/dev/zram1194M 9.9M 170M 6% /var/log
tmpfs 769M 60K 769M 1% /run/user/1000
tmpfs 769M 48K 769M 1% /run/user/0
- When the same system is programmed in the TF card and NVMe SSD, if both the TF card and NVMe SSD are inserted into the development board, then power on and start the development board, and u-boot will give priority to starting the system in the TF card. However, since the systems in the TF card and the NVMe SSD are exactly the same, the UUIDs of the /boot partition and the rootfs partition in the two storage devices are also the same, which may cause the partition in the NVMe SSD to be loaded when the TF card starts. Running the script below resolves this issue.
orangepi@orangepi:~$ sudo fix_mmc_ssd.sh |
Exactly the same system means that the image name is exactly the same. Even if they are all Debian11 systems, the versions are different. |
How to use balenaEtcher software to burn
First, you need to prepare an NVMe SSD. The PCIe supported by the M.2 slot of the development board is PCIe2.0x1, and the theoretical maximum speed is 500MB/s. PCIe3.0 and PCIe4.0 NVMe SSDs are also available, but the highest speed is only PCIe2.0x1.
- The position of the SPI Flash on the development board is shown in the figure below, no other settings are required before starting the programming
Burning the Linux image to SPIFlash+NVMe SSD requires a TF card, so first you need to burn the Linux image to the TF card, and then use the TF card to start the development board to enter the Linux system. For the method of burning the Linux image to the TF card, please refer to the instructions in the two sections of the method of burning the Linux image to the TF card based on the Windows PC and the method of burning the Linux image to the TF card based on the Ubuntu PC.
After booting into the Linux system in the TF card, please confirm that the NVMe SSD has been properly recognized by the Linux of the development board. If the NVMe SSD is recognized normally, use the sudo fdisk -l command to see nvme related information
orangepi@orangepi:~/Desktop$ sudo fdisk -l | grep "nvme0n1" Disk /dev/nvme0n1: 1.86 TiB, 2048408248320 bytes, 4000797360 sectors |
Use the lspci command to see an NVMe-related PCI device
orangepi@orangepi:~/Desktop$ lspci 00:00.0 PCI bridge: Fuzhou Rockchip Electronics Co., Ltd Device 3566 (rev 01) 01:00.0 Non-Volatile memory controller: Realtek Semiconductor Co., Ltd. Device 5765 (rev 01) |
- The balenaEtcher has been pre-installed in the Linux image, and the opening method is as follows:
If it is not pre-installed, for how to download and install the arm64 version of balenaEtcher, please refer to the instructions in the section on how to download and install the arm64 version of balenaEtcher. |
- The interface after balenaEtcher is opened is as follows:
The method of using balenaEtcher to burn u-boot to the SPI Flash of the development board is as follows:
- First click on Flash from file
- Then enter the /usr/lib/Linux-u-boot-legacy-orangepi3b_1.x.x_arm64 directory, select rkspi_loader.img, and click Open to open
- Then click Select target
- Then click Show 2 hidden to open more options for storage devices
- Then select the device name of SPI Flash /dev/mtdblock0, and click Select
- Then click Flash
- Then click Yes, I'm sure
- Then enter the password orangepi of the development board Linux system, and it will start burning the u-boot image into the SPI Flash
- The display of the burning process is as follows:
- The display after burning is as follows:
The method of burning the Linux system in the TF card to the NVMe SSD (this method is equivalent to cloning the system in the TF card to the NVMe SSD)
- First click Clone drive
- Then select the device name of the TF card /dev/mmcblk1
- The interface after opening the TF card is as follows:
- Then click Select target
- Then click Show 2 hidden to open more options for storage devices
- Then click Flash
- Then click Yes, I'm sure
- Then enter the password orangepi of the Linux system on the development board, and it will start burning the Linux image to the SSD
Then you need to expand the capacity of the rootfs partition in the NVMe SSD. The steps are as follows:
a) Open GParted first, if the system does not have Gparted pre-installed, please use the apt command to install it
orangepi@orangepi:~$ sudo apt-get install -y gparted
- d) Then select NVMe SSD
- e) The display interface after selecting NVMe SSD is as follows:
- f) Then select the /dev/nvme0n1p2 partition, click the right button again, and then select Resize/Move
- At this point, you can use the sudo poweroff command to shut down. Then please pull out the TF card, and then short press the power button to turn on, then the Linux system in SPIFlash+NVMe SSD will be started.
Step 9 is to clone the system in the TF card to the NMVe SSD. We can also directly burn the Linux image file to the NVMe SSD. Here are the steps:
Upload the Linux image file to the Linux system of the development board
Then use balenaEtcher to burn
- After using this method to burn the image, there is no need to manually expand the capacity, and it will automatically expand the capacity at the first startup.
How to burn Android image to TF card
Method of burning Android image to TF card through USB2.0 burning port
- First prepare a TF card with 8GB or larger capacity. The transmission speed of the TF card must be class10 or above. It is recommended to use a TF card of SanDisk and other brands
- You also need to prepare a good quality USB2.0 male-to-male data cable
Then download Rockchip driver DriverAssitant_v5.12.zip and burning tool RKDevTool_Release_v3.15.zip from Orange Pi's data download page
Then download the Android image from Orange Pi's download page.
- After opening the download link of the Android image, you can see the following two types of Android images, please select the image in the TF card and eMMC startup image folder to download
After entering the TF card and eMMC startup image folder, you can see the following two images, the difference between them is:
Then use the decompression software to decompress the compressed package of the downloaded Android image. Among the decompressed files, the file ending with ".img" is the Android image file, and the size is more than 1GB
Then use the decompression software to decompress DriverAssitant_v5.12.zip, and then find the DriverInstall.exe executable file in the decompressed folder and open it
After opening DriverInstall.exe, the steps to install the Rockchip driver are as follows
- Then decompress RKDevTool_Release_v3.15.zip, this software does not need to be installed, just find RKDevTool in the decompressed folder and open it
- After opening the RKDevTool burning tool, because the computer has not connected to the development board through the USB2.0 male-to-male data cable at this time, the lower left corner will prompt "No device found"
Then start burning the Android image to the TF card
- First, connect the development board to the Windows computer through the USB2.0 male-to-male data cable. The position of the USB2.0 programming interface of the development board is shown in the figure below
Then make sure that the development board is not inserted into the TF card and not connected to the power supply
Then press and hold the MaskROM button on the development board, the position of the MaskROM button on the development board is shown in the figure below:
- If the previous steps are successful, the development board will enter the MASKROM mode at this time, and the interface of the burning tool will prompt "found a MASKROM device"
Then insert the TF card into the development board
Then please select advanced features
Then click the position shown in the figure below
Then select rk3566_MiniLoaderAll.bin in the MiniLoader folder downloaded earlier, and click to open
Then click download
The display after downloading rk3566_MiniLoaderAll.bin is shown in the figure below
Then select the storage device as SD, and then click Switch Storage
The display of successful switching is shown in the figure below
- Finally, click the "Upgrade" button to start burning, and the log during the burning process is shown in the figure below. After burning is completed, the Android system will start automatically.
How to use SDDiskTool to burn Android image to TF card
First prepare a TF card with 8GB or larger capacity. The transmission speed of the TF card must be class10 or above. It is recommended to use a TF card of SanDisk and other brands
Then use the card reader to insert the TF card into the computer
Then download the SDDiskTool programming tool from the Orange Pi data download page, please make sure that the version of the SDDiskTool tool is the latest v1.72.
Then download the Android11 image from the Orange Pi data download page
- After opening the download link of the Android image, you can see the following two types of Android images, please select the image in the TF card and eMMC startup image folder to download
- After entering the TF card and eMMC boot image folder, you can see the following two images, the difference between them is:
Then use decompression software to decompress the compressed package of the downloaded Android image. Among the decompressed files, the file ending with ".img" is the Android image file, and the size is more than 1GB
Then use decompression software to decompress SDDiskTool_v1.72.zip, this software does not need to be installed, just find SD_Firmware_Tool.exe in the decompressed folder and open it
- After opening SDDiskTool, if the TF card is recognized normally, the inserted disk device will be displayed in the "Select Removable Disk Device" column. Please make sure that the displayed disk device is consistent with the drive letter of the TF card you want to burn, if there is no display, you can try to unplug the TF card
- After confirming the drive letter, you can format the TF card first, click the restore disk button in SDDiskTool, or use the SD Card Formatter mentioned above to format the TF card
Then start to write the Android image to the TF card
- After burning, you can exit the SDDiskTool software, and then you can pull out the TF card from the computer and insert it into the development board to start
How to burn Android image to eMMC
Note, after burning the image into eMMC, if the test finds that it cannot be started, please clear the SPIFlash and try again. For the method of clearing SPIFlash, please refer to the method of using RKDevTool to clear SPIFlash. |
Method of burning Android image into eMMC through USB2.0 burning port
Note that all the following operations are performed on a Windows computer. |
The development board reserves an eMMC expansion interface. Before programming the system to eMMC, you first need to purchase an eMMC module that matches the eMMC interface of the development board. Then install the eMMC module to the development board.
The eMMC module and the method of plugging into the development board are as follows:
- You also need to prepare a good quality USB2.0 male-to-male data cable
Then download Rockchip driver DriverAssitant_v5.12.zip and burning tool RKDevTool_Release_v3.15.zip from Orange Pi's data download page
Then download the Android image from Orange Pi's download page.
- After opening the download link of the Android image, you can see the following two types of Android images, please select the image in the TF card and eMMC startup image folder to download
After entering the TF card and eMMC startup image folder, you can see the following two images, the difference between them is
Then use decompression software to decompress the compressed package of the downloaded Android image. Among the decompressed files, the file ending with ".img" is the Android image file, and the size is more than 1GB
Then use decompression software to decompress DriverAssitant_v5.12.zip, and then find the DriverInstall.exe executable file in the decompressed folder and open it
After opening DriverInstall.exe, the steps to install the Rockchip driver are as follows
- Then decompress RKDevTool_Release_v3.15.zip, this software does not need to be installed, just find RKDevTool in the decompressed folder and open it
- After opening the RKDevTool burning tool, because the computer is not connected to the development board through the USB2.0 male-to-male data cable at this time, the lower left corner will prompt "No device found"
Then start burning the Android image into eMMC
- First, connect the development board to the Windows computer through the USB2.0 male-to-male data cable. The position of the USB2.0 programming interface of the development board is shown in the figure below
Then make sure that the development board is not inserted into the TF card and not connected to the power supply
Then press and hold the MaskROM button on the development board, the position of the MaskROM button on the development board is shown in the figure below:
If the previous steps are successful, the development board will enter the MASKROM mode at this time, and the interface of the burning tool will prompt "found a MASKROM device"
Then please select Advanced Features
Then click the position shown in the figure below
- Select rk3566_MiniLoaderAll.bin in the MiniLoader folder downloaded earlier, and click to open.
Then click Download
The display after downloading MiniLoaderAll.bin is shown in the figure below
Then select the storage device as EMMC, and then click Switch Storage
The display of successful switching is shown in the figure below
- Finally, click the "Upgrade" button to start burning, and the log during the burning process is shown in the figure below. After burning is completed, the Android system will start automatically.
How to burn Android11 image into eMMC via TF card
Note that all the following operations are performed on a Windows computer. |
- The development board reserves an eMMC expansion interface. Before programming the system to eMMC, you first need to purchase an eMMC module that matches the eMMC interface of the development board. Then install the eMMC module to the development board. The eMMC module and the method of plugging into the development board are as follows:
You also need to prepare a TF card with 8GB or larger capacity. The transmission speed of the TF card must be class10 or above. It is recommended to use a TF card of SanDisk and other brands
Then use the card reader to insert the TF card into the computer
Then download the SDDiskTool programming tool from the Orange Pi data download page, please make sure that the version of the SDDiskTool tool is the latest v1.72
Then download the Android image from Orange Pi's download page
- After opening the download link of the Android image, you can see the following two types of Android images, please select the image in the TF card and eMMC startup image folder to download
After entering the TF card and eMMC boot image folder, you can see the following tow images, the difference between them is:
Then use the decompression software to decompress the compressed package of the downloaded Android image. Among the decompressed files, the file ending with ".img" is the Android image file, and the size is more than 1GB
Then use decompression software to decompress SDDiskTool_v1.72.zip, this software does not need to be installed, just find SD_Firmware_Tool.exe in the decompressed folder and open it
- After opening SDDiskTool, if the TF card is recognized normally, the inserted disk device will be displayed in the "Select Removable Disk Device" column. Please make sure that the displayed disk device is consistent with the drive letter of the TF card you want to burn, if there is no display, you can try to unplug the TF card.
- After confirming the drive letter, you can format the TF card first, click the restore disk button in SDDiskTool, or use the SD Card Formatter mentioned above to format the TF card
Then start to write the Android image into the TF card
First confirm that the displayed drive letter is the drive letter corresponding to the TF card under "Select Removable Disk Device"
Then select "Firmware Upgrade" in "Select Function Mode"
Then select the path of the Android firmware in the "Select Upgrade Firmware" column
Finally click the "Start Create" button to start burning
- After the burning is completed, the display is as shown in the figure below, and then you can exit SDDiskTool
Then pull out the TF card from the computer and insert it into the development board. After the development board is powered on, it will automatically start burning the Android image in the TF card to the eMMC of the development board.
If the development board is connected to an HDMI display, you can also see the progress bar of burning the Android image to eMMC from the HDMI display
- When the HDMI monitor displays the following information, it means that the burning of the Android image into the eMMC has been completed. At this time, the TF card can be pulled out, and then the Android system in the eMMC will start.
How to burn Android image to SPIFlash+NVMe SSD
Note that all the following operations are performed on a Windows computer. |
First, you need to prepare an NVMe SSD solid state drive
- The position of the SPI Flash on the development board is shown in the figure below, no other settings are required before starting the programming
- You also need to prepare a good quality USB2.0 male-to-male data cable
Then download Rockchip driver DriverAssitant_v5.12.zip and burning tool RKDevTool_Release_v3.15.zip from Orange Pi's data download page
Then download the image of Android11
- After opening the download link of the Android image, you can see the following two types of Android images, please select the image in the SPIFlash-NVME SSD boot image folder to download
After entering the SPIFlash-NVME SSD boot image folder, you can see the following two images. Their differences are:
- Then use the decompression software to decompress DriverAssitant_v5.12.zip, and then find the DriverInstall.exe executable file in the decompressed folder and open it
After opening DriverInstall.exe, the steps to install the Rockchip driver are as follows
- Then decompress RKDevTool_Release_v3.15.zip, this software does not need to be installed, just find RKDevTool in the decompressed folder and open it
- After opening the RKDevTool burning tool, because the computer is not connected to the development board through the USB2.0 male-to-male data cable at this time, the lower left corner will prompt "No device found"
Then start burning the Android image to SPIFlash+NVMe SSD
- First, connect the development board to the Windows computer through the USB2.0 male-to-male data cable. The position of the USB2.0 programming port of the development board is shown in the figure below
Make sure that the development board is not inserted into the TF card and not connected to the power supply
Then press and hold the MaskROM button on the development board, the position of the MaskROM button on the development board is shown in the figure below:
- Then connect the power supply of the Type-C interface to the development board, and power on, and then release the MaskROM button
- If the previous steps are successful, the development board will enter the MASKROM mode at this time, and the interface of the burning tool will prompt "found a MASKROM device"
Using RKDevTool to clear SPIFlash
- The position of SPI Flash on the development board is shown in the figure below
- First, you need to prepare a good quality USB2.0 male-to-male data cable
Then download the Rockchip driver DriverAssitant_v5.12.zip and MiniLoader and the burning tool RKDevTool_Release_v3.15.zip from the Orange Pi data download page
- On the download page of Orange Pi, first select the official tool, and then enter the following folder
- Then download all the files below
Note that the "MiniLoader-things needed to burn the Linux image" folder is hereinafter referred to as the MiniLoader folder.
- Then use decompression software to decompress DriverAssitant_v5.12.zip, and then find the DriverInstall.exe executable file in the decompressed folder and open it
After opening DriverInstall.exe, the steps to install the Rockchip driver are as follows
- Then decompress RKDevTool_Release_v3.15.zip, this software does not need to be installed, just find RKDevTool in the decompressed folder and open it
- After opening the RKDevTool burning tool, because the computer has not connected to the development board through the USB2.0 male-to-male data cable at this time, the lower left corner will prompt "No device found"
Then you can start to clear the content in SPI FLASH
- First, connect the development board to the Windows computer through the USB2.0 male-to-male data cable. The position of the USB2.0 programming port of the development board is shown in the figure below
Make sure that the development board is not inserted into the TF card and not connected to the power supply
Then press and hold the MaskROM button on the development board, the position of the MaskROM button on the development board is shown in the figure below:
- Then connect the power supply of the Type-C interface to the development board, and power on, and then release the MaskROM button
- If the previous steps are successful, the development board will enter the MASKROM mode at this time, and the interface of the burning tool will prompt "found a MASKROM device"
Then please select Advanced Features
Then click the position shown in the figure below
Select rk3566_MiniLoaderAll.bin in the MiniLoader folder you downloaded earlier, and click Open
Start the Orange Pi development board
- Insert the TF card with the burned image into the TF card slot of the Orange Pi development board. If the image of SPIFlash+NVMe SSD has been burnt, then there is no need to insert a TF card, just make sure that the NVMe SSD is inserted into the development board normally.
- The development board has an HDMI interface, and the development board can be connected to a TV or HDMI display through an HDMI-to-HDMI cable. If you have purchased an LCD screen, you can also use the LCD screen to display the system interface of the development board. If there is a Type-C to HDMI cable, the system interface of the development board can also be displayed through the Type-C interface.
- Connect a USB mouse and keyboard to control the Orange Pi development board.
- The development board has an Ethernet port, which can be plugged into a network cable for Internet access.
- Connect a high-quality power adapter with a 5V/3A USB Type-C interface.
Remember not to plug in a power adapter with a voltage output greater than 5V, as this will burn out the development board.
Many unstable phenomena during the power-on and start-up process of the system are basically caused by power supply problems, so a reliable power adapter is very important. If you find that there is a phenomenon of continuous restart during the startup process, please replace the power supply or the Type-C data cable and try again.
The Type-C power port does not support PD negotiation.
In addition, please do not connect the USB interface of the computer to power the development board.
- Then turn on the switch of the power adapter. If everything is normal, you can see the startup screen of the system on the HDMI monitor or LCD screen.
- If you want to view the output information of the system through the debugging serial port, please use the serial cable to connect the development board to the computer. For the connection method of the serial port, please refer to the section on how to use the debugging serial port.
How to use the debugging serial port
Connection instruction of debugging serial port
First, you need to prepare a 3.3V USB-to-TTL module, and then insert the USB interface end of the USB-to-TTL module into the USB interface of the computer.
For better compatibility, it is recommended to use CH340 USB to TTL module, please do not use CP2102, PL2303 USB to TTL module.
Before purchasing a USB to TTL module, please confirm that the module supports a baud rate of 1500000.
- The corresponding relationship between GND, RXD and TXD pins of the debugging serial port of the development board is shown in the figure below
- The GND, TXD and RXD pins of the USB to TTL module need to be connected to the debugging serial port of the development board through a DuPont line
- a. Connect the GND of the USB to TTL module to the GND of the development board
- b. The RX of the USB to TTL module is connected to the TX of the development board
- c. The TX of the USB to TTL module is connected to the TX of the development board
- The schematic diagram of connecting the USB to TTL module to the computer and the Orange Pi development board is as follows
The TX and RX of the serial port need to be cross-connected. If you don't want to carefully distinguish the order of TX and RX, you can connect the TX and RX of the serial port casually first. If there is no output in the test, then exchange the order of TX and RX, so there is always a the order is right |
How to use the debugging serial port on the Ubuntu platform
There are many serial port debugging software that can be used under Linux, such as putty, minicom, etc. The following demonstrates how to use putty. |
- First, insert the USB-to-TTL module into the USB interface of the Ubuntu computer. If the connection and recognition of the USB-to-TTL module is normal, you can see the corresponding device node name under /dev on the Ubuntu PC. Remember this node name, and then set the serial port software will be used
test@test:~$ ls /dev/ttyUSB*
/dev/ttyUSB0
- Then use the following command to install putty on Ubuntu PC
test@test:~$ sudo apt-get update test@test:~$ sudo apt-get install -y putty |
- Then run putty, remember to add sudo permission
test@test:~$ sudo putty |
Then set the parameters of the serial port
Set Serial line to connect toas /dev/ttyUSB0((Modified to the corresponding node name, generally /dev/ttyUSB0)
Set Speed(baud) as 1500000(Serial port baud rate)
Set Flow control as None
After setting the setting interface of the serial port, return to the Session interface
First select the Connection type as Serial
Then click the Open button to connect to the serial port
- After starting the development board, you can see the Log information output by the system from the opened serial port terminal
How to use the debugging serial port on Windows platform
There are many serial port debugging software that can be used under Windows, such as SecureCRT, MobaXterm, etc. The following demonstrates how to use MobaXterm. This software has a free version and can be used without buying a serial number. |
Download MobaXterm
- Download MobaXterm website as follows
- After downloading, use decompression software to decompress the downloaded compressed package, you can get the executable software of MobaXterm, and then double-click to open
After opening the software, the steps to set up the serial port connection are as follows
Open the session settings interface
Select the serial port type
Select the port number of the serial port (select the corresponding port number according to the actual situation)
Select the baud rate of the serial port as 1500000
Finally click the "OK" button to complete the setting
- After clicking the "OK" button, you will enter the following interface. At this time, start the development board and you can see the output information of the serial port
Instructions for using the 5v pin in the 40pin interface of the development board to supply power
The power supply method we recommend for the development board is to use the 5V/3A Type C interface power cord to plug into the Type-C power interface of the development board for power supply. If you need to use the 5V pin in the 40pin interface to power the development board, please make sure that the power cord and power adapter used can meet the power supply requirements of the development board. If the use is unstable, please switch back to the Type-C power supply. |
- First, you need to prepare a power cord as shown in the figure below
Please purchase the power cord shown in the picture above by yourself
Use the 5V pin in the 40pin interface to supply power to the development board. The connection method of the power line is as follows
The USB A port of the power cord shown in the above picture needs to be plugged into the 5V/3A power adapter connector (please do not plug into the computer's USB port for power supply)
The red DuPont line needs to be plugged into the 5V pin of the development board 40pin
The black Dupont wire needs to be inserted into the GND pin of the 40pin interface
The position of the 5V pin and GND pin of the 40pin interface on the development board is shown in the figure below, remember not to reverse the connection
Instructions for use of Ubuntu/Debian Server and Xfce desktop system
The content of this chapter is written based on the images of the Linux server version and the xfce desktop version. |
Supported Linux image types and kernel versions
Linux image type | kernel version | server version | desktop version |
Debian 11 - Bullseye | Linux5.10 | support | support |
Ubuntu 20.04 - Focal | Linux5.10 | support | support |
Ubuntu 22.04 - Jammy | Linux5.10 | support | support |
Linux System adaptation
Function | Debian11 | Ubuntu20.04 | Ubuntu22.04 |
USB2.0x3 | OK | OK | OK |
USB3.0x1 | OK | OK | OK |
M.2 NVMe SSD Start | OK | OK | OK |
WIFI | OK | OK | OK |
Bluetooth | OK | OK | OK |
GPIO(40pin) | OK | OK | OK |
UART(40pin) | OK | OK | OK |
SPI(40pin) | OK | OK | OK |
I2C(40pin) | OK | OK | OK |
PWM(40pin) | OK | OK | OK |
PWM fan interface | OK | OK | OK |
3pin Debug serial port | OK | OK | OK |
EMMC | OK | OK | OK |
TF card start | OK | OK | OK |
HDMI Video | OK | OK | OK |
HDMI Audio | OK | OK | OK |
Camera | OK | OK | OK |
LCD | OK | OK | OK |
Edp Display | OK | OK | OK |
Gigabit Ethernet port | OK | OK | OK |
Network port status light | OK | OK | OK |
headphone playback | OK | OK | OK |
headphone recording | OK | OK | OK |
LED Light | OK | OK | OK |
RTC | OK | OK | OK |
GPU | OK | OK | OK |
NPU | OK | OK | OK |
VPU | OK | OK | OK |
watchdog test | OK | OK | OK |
Chromium Hard solution video | OK | OK | OK |
The format of Linux commands in this manual
- In this manual, all commands that need to be entered in the Linux system will be marked with the following box
- As shown below, the content in the yellow box indicates the content that needs special attention, except for the commands in it.
Description of the prompt type in front of the command
- The prompt in front of the command refers to the content of the red part in the box below, which is not part of the Linux command, so when entering the command in the Linux system, please do not enter the content of the red font part
orangepi@orangepi:~$ sudo apt update
root@orangepi:~# vim /boot/boot.cmd
test@test:~$ ssh root@192.168.1.xxx
root@test:~# ls
root@orangepi:~$ The prompt indicates that this command is entered in the Linux system of the development board. The $ at the end of the prompt indicates that the current user of the system is a normal user. When executing a privileged command, you need to add sudo
root@orangepi:~# The prompt indicates that this command is entered in the Linux system of the development board, and the # at the end of the prompt indicates that the current user of the system is the root user, who can execute any desired command
test@test:~$ The prompt indicates that this command is entered in the Ubuntu PC or Ubuntu virtual machine, not in the Linux system of the development board. The $ at the end of the prompt indicates that the current user of the system is an ordinary user. When executing privileged commands, sudo needs to be added sudo
root@test:~# The prompt indicates that this command is entered in the Ubuntu PC or Ubuntu virtual machine, not in the Linux system of the development board. The # at the end of the prompt indicates that the current user of the system is the root user and can execute any command you want
What are the commands that need to be entered?
- As shown below, the black bold part is the command that needs to be input, and the content below the command is the output content (some commands have output, some may not), and this part of the content does not need to be input
root@orangepi:~# cat /boot/orangepiEnv.txt
verbosity=7
bootlogo=false
console=serial
- As shown below, some commands cannot be written in one line and will be placed on the next line. As long as the black and bold parts are all commands that need to be input. When these commands are entered into one line, the last "\" of each line needs to be removed, this is not part of the command. In addition, there are spaces in different parts of the command, please don't miss it
orangepi@orangepi:~$ echo \
"deb [arch=$(dpkg --print-architecture) \
signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] \
https://download.docker.com/Linux/debian \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Linux system login instructions
Linux system default login account and password
Account | Passport |
root | orangepi |
orangepi | orangepi |
Note that when entering the password, the specific content of the entered password will not be displayed on the screen, please do not think that there is any fault, just press Enter after inputting. |
When the wrong password is prompted, or there is a problem with the ssh connection, please note that as long as you are using the Linux image provided by Orange Pi, please do not suspect that the above password is wrong, but look for other reasons. |
How to set automatic terminal login in Linux system
- The Linux system automatically logs in to the terminal by default, and the default login user name is orangepi
- Use the following command to set the root user to automatically log in to the terminal
orangepi@orangepi:~$ sudo auto_login_cli.sh root |
- Use the following command to disable automatic login terminal
orangepi@orangepi:~$ sudo auto_login_cli.sh -d |
- Use the following command to set the orangepi user to automatically log in to the terminal again
orangepi@orangepi:~$ sudo auto_login_cli.sh orangepi |
Instructions for automatic login of Linux desktop version system
- After the desktop system starts, it will automatically log in to the desktop without entering a password
- Run the following command to prohibit the desktop system from automatically logging into the desktop
orangepi@orangepi:~$ sudo disable_desktop_autologin.sh |
Then restart the system and a login dialog box will appear, at which point a password is required to enter the system
The setting method of root user automatic login in Linux desktop version system
- Execute the following command to set the desktop system to automatically log in as the root user
orangepi@orangepi:~$ sudo desktop_login.sh root
- Then restart the system, and the root user will automatically log in to the desktop
Note that if you log in to the desktop system as the root user, you cannot use pulseaudio in the upper right corner to manage audio devices. Also note that this is not a bug, since pulseaudio is not allowed to run as root. |
- Execute the following command to set the desktop system to log in automatically with the orangepi user again
orangepi@orangepi:~$ sudo desktop_login.sh orangepi |
The method of disabling the desktop in the Linux desktop version system
- First enter the following command on the command line, Please remember to add sudo permission
orangepi@orangepi:~$ sudo systemctl disable lightdm.service
- Then restart the Linux system and you will find that the desktop will not be displayed
orangepi@orangepi:~$ sudo reboot |
The steps to reopen the desktop are as follows:
- First enter the following command on the command line, Please remember to add sudo permission
orangepi@orangepi:~$ sudo systemctl start lightdm.service
- After the command is executed, the desktop will be displayed
Onboard LED Light Test Instructions
- There are three LED lights on the development board, one green light, one red light, and one PCIe light. The location is shown in the figure below:
As long as the development board is powered on, the red LED light will always be on, which is controlled by the hardware and cannot be turned off by the software
The green LED light will keep blinking after the kernel is started, which is controlled by software.
The PCIe indicator will flash when there is data transmission on the PCIe interface.
The method of setting the green light on and off and flashing is as follows
Note that the following operations should be performed under the root user.
- First enter the setting directory of the green light
root@orangepi:~# cd /sys/class/leds/status_led
- The command to set the green light to stop flashing is as follows
root@orangepi:/sys/class/leds/status_led# echo none > trigger
- The command to set the green light to be on is as follows
root@orangepi:/sys/class/leds/status_led# echo default-on > trigger
- The command to set the green light to flash is as follows
root@orangepi:/sys/class/leds/status_led# echo heartbeat > trigger
Network connection test
Ethernet port test
- First, insert one end of the network cable into the Ethernet interface of the development board, and connect the other end of the network cable to the router, and ensure that the network is unblocked
- After the system starts, it will automatically assign an IP address to the Ethernet card through DHCP, No other configuration is required
- The command to view the IP address in the Linux system of the development board is as follows
orangepi@orangepi:~$ ip addr show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
- link/ether 4a:fe:2b:3d:17:1c brd ff:ff:ff:ff:ff:ff
- inet 192.168.1.150/24 brd 192.168.1.255 scope global dynamic noprefixroute eth0
- valid_lft 43150sec preferred_lft 43150sec
- inet6 fe80::9a04:3703:faed:23be/64 scope link noprefixroute
- valid_lft forever preferred_lft forever
When using ifconfig to view the IP address, if the following information is displayed, it is because sudo is not added. The correct command is: sudo ifconfig
orangepi@orangepi:~$ ifconfigCommand 'ifconfig' is available in the following places
- /sbin/ifconfig
- /usr/sbin/ifconfig
The command could not be located because '/sbin:/usr/sbin' is not included in the PATH environment variable.
This is most likely caused by the lack of administrative privileges associated with your user account.
ifconfig: command not found
There are three ways to check the IP address after the development board starts:
1. Connect the HDMI display, then log in to the system and use the ip addr show eth0 command to view the IP address
2. Enter the ip addr show eth0 command in the debugging serial terminal to view the IP address
3. If there is no debugging serial port and no HDMI display, you can also check the IP address of the development board's network port through the router's management interface. However, in this method, some people often cannot see the IP address of the development board normally. If you can't see it, the debug method looks like this:
First check whether the Linux system has started normally. If the green light of the development board is blinking, it is generally started normally. If only the red light is on, it means that the system has not started normally;
Check whether the network cable is plugged in tightly, or try another network cable;
Try another router (I have encountered many problems with the router, such as the router cannot assign the IP address normally, or the IP address has been assigned normally but cannot be seen in the router);
If there is no router to replace, you can only connect to an HDMI display or use the debugging serial port to view the IP address
In addition, it should be noted that the development board DHCP automatically assigns an IP address without any settings.
- The command to test the network connectivity is as follows, the ping command can be interrupted through the shortcut key of Ctrl+C
orangepi@orangepi:~$ ping www.baidu.com -I eth0 PING www.a.shifen.com (14.215.177.38) from 192.168.1.12 eth0: 56(84) bytes of data. 64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=1 ttl=56 time=6.74 ms 64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=2 ttl=56 time=6.80 ms 64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=3 ttl=56 time=6.26 ms 64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=4 ttl=56 time=7.27 ms ^C --- www.a.shifen.com ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3002ms rtt min/avg/max/mdev = 6.260/6.770/7.275/0.373 ms |
WIFI connection test
Please do not connect to WIFI by modifying the /etc/network/interfaces configuration file. There will be problems connecting to the WIFI network in this way. |
The server image connects to WIFI through commands
When the development board is not connected to Ethernet, not connected to HDMI display, but only connected to the serial port, it is recommended to use the commands demonstrated in this section to connect to the WIFI network. Because nmtui can only display characters in some serial port software (such as minicom), and cannot display the graphical interface normally. Of course, if the development board is connected to an Ethernet or HDMI display, you can also use the commands demonstrated in this section to connect to the WIFI network. |
First log in to the Linux system, there are the following three ways
If the development board is connected with a network cable, you can remotely log in to the Linux system through ssh
If the development board is connected to the debugging serial port, you can use the serial port terminal to log in to the Linux system
If the development board is connected to the HDMI display, you can log in to the Linux system through the terminal displayed on the HDMI
First use the nmcli dev wifi command to scan the surrounding WIFI hotspots
orangepi@orangepi:~$ nmcli dev wifi |
- Then use the nmcli command to connect to the scanned WIFI hotspot, where:
- a. wifi_name needs to be replaced with the name of the WIFI hotspot you want to connect to
- b. wifi_passwd needs to be replaced with the password of the WIFI hotspot you want to connect to
orangepi@orangepi:~$ nmcli dev wifi connect wifi_name password wifi_passwd
Device 'wlan0' successfully activated with 'cf937f88-ca1e-4411-bb50-61f402eef293'.
- You can view the IP address of wifi through the ip addr show wlan0 command
orangepi@orangepi:~$ ip addr show wlan0
11: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
- link/ether 23:8c:d6:ae:76:bb brd ff:ff:ff:ff:ff:ff
- inet 192.168.1.11/24 brd 192.168.1.255 scope global dynamic noprefixroute wlan0
- valid_lft 259192sec preferred_lft 259192sec
- inet6 240e:3b7:3240:c3a0:c401:a445:5002:ccdd/64 scope global dynamic noprefixroute
- valid_lft 259192sec preferred_lft 172792sec
- inet6 fe80::42f1:6019:a80e:4c31/64 scope link noprefixroute
- valid_lft forever preferred_lft forever
- Use the ping command to test the connectivity of the wifi network, and the ping command can be interrupted through the shortcut key Ctrl+C
orangepi@orangepi:~$ ping www.orangepi.org -I wlan0 PING www.orangepi.org (182.92.236.130) from 192.168.1.49 wlan0: 56(84) bytes of data. 64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=1 ttl=52 time=43.5 ms 64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=2 ttl=52 time=41.3 ms 64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=3 ttl=52 time=44.9 ms 64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=4 ttl=52 time=45.6 ms 64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=5 ttl=52 time=48.8 ms ^C --- www.orangepi.org ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4006ms rtt min/avg/max/mdev = 41.321/44.864/48.834/2.484 ms |
The server image connects to WIFI in a graphical way
- First log in to the Linux system, there are the following three ways
If the development board is connected with a network cable, you can remotely log in to the Linux system through ssh
If the development board is connected to the debugging serial port, you can use the serial port terminal to log in to the Linux system (please use MobaXterm for the serial port software, and the minicom cannot display the graphical interface)
If the development board is connected to the HDMI display, you can log in to the Linux system through the HDMI display terminal
- Then enter the nmtui command in the command line to open the wifi connection interface
orangepi@orangepi:~$ nmtui |
- Then you can see all the searched WIFI hotspots
- Select the WIFI hotspot you want to connect to, then use the Tab key to position the cursor on Activate and press Enter
- Then a dialog box for entering a password will pop up, enter the corresponding password in Password and press Enter to start connecting to WIFI
- After the WIFI connection is successful, a "*" will be displayed in front of the connected WIFI name
- You can view the IP address of wifi through the ip addr show wlan0 command
- link/ether 24:8c:d3:aa:76:bb brd ff:ff:ff:ff:ff:ff
- inet 192.168.1.11/24 brd 192.168.1.255 scope global dynamic noprefixroute wlan0
- valid_lft 259069sec preferred_lft 259069sec
- inet6 240e:3b7:3240:c4a0:c401:a445:5002:ccdd/64 scope global dynamic noprefixroute
- valid_lft 259071sec preferred_lft 172671sec
- inet6 fe80::42f1:6019:a80e:4c31/64 scope link noprefixroute
- valid_lft forever preferred_lft forever
orangepi@orangepi:~$ ip addr show wlan0 11: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 |
- Use the ping command to test the connectivity of the wifi network, and the ping command can be interrupted through the shortcut key Ctrl+C
orangepi@orangepi:~$ ping www.orangepi.org -I wlan0 PING www.orangepi.org (182.92.236.130) from 192.168.1.49 wlan0: 56(84) bytes of data. 64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=1 ttl=52 time=43.5 ms 64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=2 ttl=52 time=41.3 ms 64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=3 ttl=52 time=44.9 ms 64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=4 ttl=52 time=45.6 ms 64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=5 ttl=52 time=48.8 ms ^C --- www.orangepi.org ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4006ms rtt min/avg/max/mdev = 41.321/44.864/48.834/2.484 ms |
Test method of desktop image
- Click the network configuration icon in the upper right corner of the desktop (please do not connect the network cable when testing WIFI)
- Click More networks in the pop-up drop-down box to see all scanned WIFI hotspots, and then select the WIFI hotspot you want to connect to.
- After connecting to WIFI, you can open the browser to check whether you can access the Internet. The entrance of the browser is shown in the figure below
- If you can open other web pages after opening the browser, it means that the WIFI connection is normal
How to set a static IP address
Please do not set a static IP address by modifying the /etc/network/interfaces configuration file. |
Use the nmtui command to set a static IP address
- First run the nmtui command
orangepi@orangepi:~$ nmtui
- Then select the network interface that needs to set a static IP address, for example, to set the static IP address of the Ethernet interface, select Wired connection 1.
- Then use the Tab key to move the cursor to the <Automatic> position shown in the figure below to configure IPv4
- Then you can set the IP address (Addresses), gateway (Gateway) and DNS server address in the position shown in the figure below (there are many other setting options in it, please explore by yourself), Please set it according to your specific needs, the value set in the figure below is just an example
- Then select the network interface that needs to be set, such as Wired connection 1, then move the cursor to<Deactivate>, and press Enter to disable Wired connection 1
- Then please do not move the cursor, and then press the Enter key to re-enable Wired connection 1, so that the static IP address set earlier will take effect
- Then through ip addr show eth0, you can see that the IP address of the network port has changed to the static IP address set earlier
- link/ether 5e:ac:14:a5:92:b3 brd ff:ff:ff:ff:ff:ff
- inet 192.168.1.177/24 brd 192.168.1.255 scope global noprefixroute eth0
- valid_lft forever preferred_lft forever
- inet6 241e:3b8:3240:c3a0:e269:8305:dc08:135e/64 scope global dynamic noprefixroute
- valid_lft 259149sec preferred_lft 172749sec
- inet6 fe80::957d:bbbe:4928:3604/64 scope link noprefixroute
- valid_lft forever preferred_lft forever
orangepi@orangepi:~$ ip addr show eth0 3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 |
- Then you can test the connectivity of the network to check whether the IP address is configured OK, and the ping command can be interrupted through the shortcut key Ctrl+C
orangepi@orangepi:~$ ping 192.168.1.47 -I eth0 PING 192.168.1.47 (192.168.1.47) from 192.168.1.188 eth0: 56(84) bytes of data. 64 bytes from 192.168.1.47: icmp_seq=1 ttl=64 time=0.233 ms 64 bytes from 192.168.1.47: icmp_seq=2 ttl=64 time=0.263 ms 64 bytes from 192.168.1.47: icmp_seq=3 ttl=64 time=0.273 ms 64 bytes from 192.168.1.47: icmp_seq=4 ttl=64 time=0.269 ms 64 bytes from 192.168.1.47: icmp_seq=5 ttl=64 time=0.275 ms ^C --- 192.168.1.47 ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4042ms rtt min/avg/max/mdev = 0.233/0.262/0.275/0.015 ms |
Use the nmcli command to set a static IP address
If you want to set the static IP address of the network port, please insert the network cable into the development board first. If you need to set the static IP address of WIFI, please connect the WIFI first, and then start to set the static IP address
Then use the nmcli con show command to view the name of the network device, as shown below
orangepi is the name of the WIFI network interface (the names are not necessarily the same)
Wired connection 1 is the name of the Ethernet interface
orangepi@orangepi:~$ nmcli con show
NAMEUUID TYPE DEVICE
orangepicfc4f922-ae48-46f1-84e1-2f19e9ec5e2awifi wlan0
Wired connection 19db058b7-7701-37b8-9411-efc2ae8bfa30ethernet eth0
- Then enter the following command, where
- a. "Wired connection 1" means to set the static IP address of the Ethernet port. If you need to set the static IP address of the WIFI, please change it to the corresponding name of the WIFI network interface (you can get it through the nmcli con show command)
- b. After ipv4.addresse is the static IP address to be set, which can be modified to the value you want to set
- c. ipv4.gateway indicates the address of the gateway
orangepi@orangepi:~$ nmcli con mod "Wired connection 1" \
ipv4.addresses "192.168.1.110" \
ipv4.gateway "192.168.1.1" \
ipv4.dns "8.8.8.8" \
ipv4.method "manual"
- Then restart the Linux system
orangepi@orangepi:~$ sudo reboot |
- Then re-enter the Linux system and use the ip addr show eth0 command to see that the IP address has been set to the desired value
- link/ether 5e:ae:14:a5:91:b3 brd ff:ff:ff:ff:ff:ff
- inet 192.168.1.110/32 brd 192.168.1.110 scope global noprefixroute eth0
- valid_lft forever preferred_lft forever
- inet6 240e:3b7:3240:c3a0:97de:1d01:b290:fe3a/64 scope global dynamic noprefixroute
- valid_lft 259183sec preferred_lft 172783sec
- inet6 fe80::3312:861a:a589:d3c/64 scope link noprefixroute
- valid_lft forever preferred_lft forever
orangepi@orangepi:~$ ip addr show eth0 3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 |
SSH remote login development board
Linux systems enable ssh remote login by default and allow the root user to log in to the system. Before logging in with ssh, you first need to ensure that the Ethernet or wifi network is connected, and then use the ip addr command or check the router to obtain the IP address of the development board. |
SSH remote login development board under Ubuntu
- Obtain the IP address of the development board
- Then you can remotely log in to the Linux system through the ssh command
test@test:~$ ssh root@192.168.1.xxx (Need to be replaced with the IP address of the development board)
root@192.168.1.xx's password: (Enter the password here, the default password is orangepi)
Note that when entering the password, the specific content of the entered password will not be displayed on the screen, please do not think that there is any fault, just press Enter after inputting.
If you are prompted to refuse the connection, as long as you are using the image provided by Orange Pi, please do not suspect that the password orangepi is wrong, but look for other reasons.
- After successfully logging in to the system, the display is as shown in the figure below
If ssh cannot log in to the Linux system normally, please first check whether the IP address of the development board can be pinged. If the ping is ok, you can log in to the Linux system through the serial port or HDMI display and then enter the following command on the development board and try again. Is it possible to connect:
|
SSH remote login development board under Windows
- First obtain the IP address of the development board
- Under Windows, you can use MobaXterm to remotely log in to the development board, first create a new ssh session
- a. Open Session
- b. Then select SSH in Session Setting
- c. Then enter the IP address of the development board in the Remote host
- d. Then enter the user name root or orangepi of the Linux system in Specify username
- e. Finally click OK
- Then you will be prompted to enter a password. The default passwords for root and orangepi users are orangepi
Note that when entering the password, the specific content of the entered password will not be displayed on the screen, please do not think that there is any fault, just press Enter after inputting. |
The method of uploading files to the Linux system of the development board
How to upload files to the development board Linux system in Ubuntu PC
How to upload files using the scp command
- Use the scp command to upload files from the Ubuntu PC to the Linux system of the development board. The specific commands are as follows
- a. file_path: need to be replaced with the path of the file to be uploaded
- b. orangepi: It is the user name of the Linux system of the development board, and it can also be replaced with other ones, such as root
- c. 192.168.xx.xx: It is the IP address of the development board, please modify it according to the actual situation
- d. /home/orangepi: The path in the Linux system of the development board, which can also be modified to other paths
test@test:~$ scp file_path orangepi@192.168.xx.xx:/home/orangepi/
- If you want to upload a folder, you need to add the -r parameter
test@test:~$ scp -r dir_path orangepi@192.168.xx.xx:/home/orangepi/ |
- There are more usages of scp, please use the following command to view the man manual
test@test:~$ man scp |
How to upload files using filezilla
- First install filezilla in Ubuntu PC
test@test:~$ sudo apt install -y filezilla
- Then use the following command to open filezilla
test@test:~$ filezilla |
- The interface after filezilla is opened is as follows, and the display under the remote site on the right is empty
- The method of connecting the development board is shown in the figure below
- Then choose to always trust this host, and then click OK
- After the connection is successful, you can see the directory structure of the development board Linux file system on the right side of the filezilla software
- Then select the path to be uploaded to the development board on the right side of the filezilla software, and then select the file to be uploaded on the Ubuntu PC on the left side of the filezilla software, then click the right mouse button, and then click the upload option to start uploading the file to the development board.
- After the upload is complete, you can go to the corresponding path in the Linux system of the development board to view the uploaded file
- The method of uploading a folder is the same as that of uploading a file, so I won't go into details here
The method of uploading files from Windows PC to the Linux system of the development board
How to upload files using filezilla
- First download the installation file of the Windows version of the filezilla software, the download link is as follows
- The downloaded installation package is as follows, and then double-click to install directly
FileZilla_Server_1.5.1_win64-setup.exe |
During the installation process, please select Decline on the following installation interface, and then select Next>
- The interface after filezilla is opened is as follows, and the display under the remote site on the right is empty
- The method of connecting the development board is shown in the figure below:
- Then choose to save the password, and then click OK
- Then choose to always trust this host, and then click OK
- After the connection is successful, you can see the directory structure of the development board Linux file system on the right side of the filezilla software
- Then select the path to be uploaded to the development board on the right side of the filezilla software, and then select the file to be uploaded on the Ubuntu PC on the left side of the filezilla software, then click the right mouse button, and then click the upload option to start uploading the file to the development board.
After the upload is complete, you can go to the corresponding path in the Linux system of the development board to view the uploaded file
The method of uploading a folder is the same as that of uploading a file
HDMI test
HDMI display test
- Use HDMI to HDMI cable to connect Orange Pi development board and HDMI monitor
- After starting the Linux system, if the HDMI monitor has image output, it means that the HDMI interface is in normal use
Note that although many notebook computers have an HDMI interface, the HDMI interface of the notebook generally only has the output function, and does not have the function of HDMI in, that is to say, the HDMI output of other devices cannot be displayed on the notebook screen. When you want to connect the HDMI of the development board to the HDMI port of the laptop, please make sure that your laptop supports the HDMI in function. |
When the HDMI is not displayed, please check whether the HDMI cable is plugged in tightly. After confirming that there is no problem with the connection, you can change a different screen and try to see if it is displayed. |
HDMI to VGA display test
First, you need to prepare the following accessories
- A monitor or TV that supports VGA interface
- HDMI to VGA display test as shown below
When using HDMI to VGA display, the development board and the Linux system of the development board do not need to make any settings, only the HDMI interface of the development board can display normally. So if there is a problem with the test, please check whether there is a problem with the HDMI to VGA converter, VGA cable and monitor. |
HDMI resolution setting method
- First open Display in Settings
How to use Bluetooth
Test method of desktop image
- Click the Bluetooth icon in the upper right corner of the desktop.
- Then set Visibility Setting as Always visible in the Bluetooth adapter settings interface, and then close it
- Then select the Bluetooth device you want to connect to, and then click the right button of the mouse to pop up the operation interface for this Bluetooth device, select Pair to start pairing, and the demonstration here is to pair with an Android phone
- When pairing, the pairing confirmation box will pop up in the upper right corner of the desktop. Select Confirm to confirm. At this time, the mobile phone also needs to be confirmed
- After pairing with the mobile phone, you can choose the paired Bluetooth device, then right-click and select Send a File to start sending a picture to the phone
USB interface test
The USB interface can be connected to a USB hub to expand the number of USB interfaces. |
Connect the USB mouse or keyboard test
- Insert the USB interface keyboard into the USB interface of the Orange Pi development board
- Connect Orange PI development board to HDMI display
- If the mouse or keyboard can operate normally, it means that the USB interface is working normally (the mouse can only be used in the desktop version of the system)
Connect the USB storage device test
- First insert the U disk or USB mobile hard disk into the USB interface of the Orange Pi development board
- Execute the following command, if you can see the output of sdX, it means that the U disk is recognized successfully
orangepi@orangepi:~$ cat /proc/partitions | grep "sd*"
major minor #blocksname
8030044160 sda
8130043119 sda1
- Use the mount command to mount the U disk into /mnt, and then you can view the file in the U disk
orangepi@orangepi:~$ sudo mount /dev/sda1 /mnt/ orangepi@orangepi:~$ ls /mnt/ test.txt |
- After the mounting, you can view the capacity usage and mount point of the U disk through the df -h command
orangepi@orangepi:~$ df -h | grep "sd" /dev/sda1 29G 208K 29G 1% /mnt |
USB wireless network card test
The currently tested USB wireless network cards are shown below. Please test it by yourself for other models of USB wireless network cards. If you cannot use it, you need to transplant the corresponding USB wireless network card driver
No. | Model | |
1 |
RTL8723BU Support 2.4G WIFI+BT4.0 |
|
2 |
RTL8811 Support 2.4G +5G WIFI |
|
3 |
RTL8821CU Support 2.4G +5G WIFI Support BT 4.2 |
RTL8723BU test
- First insert the RTL8723BU wireless network card module into the USB interface of the development board
- Then the Linux system will automatically load the RTL8723BU bluetooth and WIFI-related kernel modules, through the lsmod command, you can see that the following kernel modules have been automatically loaded
orangepi@orangepi:~$ lsmod
Module Size Used by
rfcomm 5734416
rtl8xxxu 1064960
rtk_btusb 614400
- Through the dmesg command, you can see the loading information of the RTL8723BU module
orangepi@orangepi:~$ dmesg ...... [ 83.438901] usb 2-1: new high-speed USB device number 2 using ehci-platform [ 83.588375] usb 2-1: New USB device found, idVendor=0bda, idProduct=b720, bcdDevice= 2.00 [ 83.588403] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 83.588422] usb 2-1: Product: 802.11n WLAN Adapter [ 83.588443] usb 2-1: Manufacturer: Realtek [ 83.588460] usb 2-1: SerialNumber: 00e04c000001 [ 83.601974] Bluetooth: hci0: RTL: examining hci_ver=06 hci_rev=000b lmp_ver=06 lmp_subver=8723 [ 83.603894] Bluetooth: hci0: RTL: rom_version status=0 version=1 [ 83.603920] Bluetooth: hci0: RTL: loading rtl_bt/rtl8723b_fw.bin [ 83.610108] Bluetooth: hci0: RTL: loading rtl_bt/rtl8723b_config.bin [ 83.611274] Bluetooth: hci0: RTL: cfg_sz 68, total sz 22564 [ 83.658494] rtk_btusb: Realtek Bluetooth USB driver ver 3.1.6d45ddf.20220519-142432 [ 83.658651] usbcore: registered new interface driver rtk_btusb [ 83.667124] usb 2-1: This Realtek USB WiFi dongle (0x0bda:0xb720) is untested! [ 83.667137] usb 2-1: Please report results to Jes.Sorensen@gmail.com [ 83.890140] usb 2-1: Vendor: Realtek [ 83.890153] usb 2-1: Product: 802.11n WLAN Adapter [ 83.890159] usb 2-1: rtl8723bu_parse_efuse: dumping efuse (0x200 bytes): ...... [ 83.890412] usb 2-1: RTL8723BU rev E (SMIC) 1T1R, TX queues 3, WiFi=1, BT=1, GPS=0, HI PA=0 [ 83.890417] usb 2-1: RTL8723BU MAC: 00:13:ef:f4:58:ae [ 83.890421] usb 2-1: rtl8xxxu: Loading firmware rtlwifi/rtl8723bu_nic.bin [ 83.895289] usb 2-1: Firmware revision 35.0 (signature 0x5301) [ 84.050893] Bluetooth: hci0: RTL: fw version 0x0e2f9f73 [ 84.266905] Bluetooth: RFCOMM TTY layer initialized [ 84.266949] Bluetooth: RFCOMM socket layer initialized [ 84.266999] Bluetooth: RFCOMM ver 1.11 [ 84.884270] usbcore: registered new interface driver rtl8xxxu [ 84.912046] rtl8xxxu 2-1:1.2 wlx0013eff458ae: renamed from wlan0 |
- Then you can see the RTL8723BU WIFI device node through the sudo ifconfig command. Please refer to the WIFI connection test chapter for WIFI connection and testing methods
- ether 00:13:ef:f4:58:ae txqueuelen 1000 (Ethernet)
- RX packets 0 bytes 0 (0.0 B)
- RX errors 0 dropped 0 overruns 0 frame 0
- TX packets 0 bytes 0 (0.0 B)
- TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
orangepi@orangepi:~$ sudo ifconfig wlx0013eff458ae wlx0013eff458ae: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 |
- Then you can see the USB Bluetooth device through the hciconfig command
- BD Address: 00:13:EF:F4:58:AE ACL MTU: 820:8 SCO MTU: 255:16
- DOWN
- RX bytes:1252 acl:0 sco:0 events:125 errors:0
- TX bytes:23307 acl:0 sco:0 commands:125 errors:0
orangepi@orangepi:~$ sudo apt update && sudo apt install bluez orangepi@orangepi:~$ hciconfig hci0: Type: Primary Bus: USB |
- You can also see the Bluetooth icon on the desktop. At this time, Bluetooth has not been opened, so a red x will be displayed
- Please refer to the Bluetooth use method for Bluetooth test method, so I won't go into details here.
RTL8811 test
- First insert the RTL8811 wireless network card module into the USB interface of the development board.
- Then the Linux system will automatically load the kernel modules related to RTL8811 WIFI, and you can see that the following kernel modules have been automatically loaded through the lsmod command
orangepi@orangepi:~$ lsmod
Module Size Used by
8821cu 1839104 0
- Through the dmesg command, you can see the loading information of the RTL8811 module
orangepi@orangepi:~$ dmesg [ 118.618194] usb 2-1: new high-speed USB device number 2 using ehci-platform [ 118.767152] usb 2-1: New USB device found, idVendor=0bda, idProduct=c811, bcdDevice= 2.00 [ 118.767181] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 118.767199] usb 2-1: Product: 802.11ac NIC [ 118.767219] usb 2-1: Manufacturer: Realtek [ 118.767235] usb 2-1: SerialNumber: 123456 [ 119.500530] usbcore: registered new interface driver rtl8821cu [ 119.525498] rtl8821cu 2-1:1.0 wlx1cbfced9d260: renamed from wlan0 |
- Then you can see the WiFi device node through the sudo ifconfig command. Please refer to the WiFi connection test chapter for WIFI connection and testing methods. I won't go into details her
- ether 1c:bf:ce:d9:d2:60 txqueuelen 1000 (Ethernet)
- RX packets 0 bytes 0 (0.0 B)
- RX errors 0 dropped 0 overruns 0 frame 0
- TX packets 0 bytes 0 (0.0 B)
- TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
orangepi@orangepi:~$ sudo ifconfig wlx1cbfced9d260 wlx1cbfced9d260: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 |
RTL8821CU test
- First insert the rtl8821cu wireless network card module into the USB interface of the development board
- Then use the lsusb command to see the device information of the rtl8821cu usb wifi module, please make sure that the USB module is not in Driver CDROM Mode
orangepi@orangepi:~$ lsusb | grep "Realtek"
Bus 002 Device 003: ID 0bda:c820 Realtek Semiconductor Corp. 802.11ac NIC
orangepi@orangepi:~$ lsusb | grep "Realtek"
Bus 002 Device 002: ID 0bda:1a2b Realtek Semiconductor Corp. RTL8188GU 802.11n WLAN Adapter (Driver CDROM Mode)
If the USB WIFI module seen by the lsusb command is in Driver CDROM Mode, please unplug the USB WIFI module again. If not, please manually execute the following command to switch to the next mode:
orangepi@orangepi:~$ sudo usb_modeswitch -KW -v 0bda -p 1a2b
- The Linux system will automatically load the rtl8821cu bluetooth and wifi-related kernel modules, through the lsmod command, you can see that the following kernel modules have been automatically loaded
orangepi@orangepi:~$ lsmod Module Size Used by |
- Through the dmesg command, you can see the loading information of the rtl8821cu module
orangepi@orangepi:~$ dmesg ...... [ 57.083693] usb 2-1: new high-speed USB device number 2 using ehci-platform [ 57.231888] usb 2-1: New USB device found, idVendor=0bda, idProduct=1a2b, bcdDevice= 2.00 [ 57.231916] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0 [ 57.231937] usb 2-1: Product: DISK [ 57.231956] usb 2-1: Manufacturer: Realtek [ 57.242594] usb-storage 2-1:1.0: USB Mass Storage device detected [ 57.245674] scsi host0: usb-storage 2-1:1.0 [ 58.069172] usb 2-1: USB disconnect, device number 2 [ 58.440025] usb 2-1: new high-speed USB device number 3 using ehci-platform [ 58.587819] usb 2-1: New USB device found, idVendor=0bda, idProduct=c820, bcdDevice= 2.00 [ 58.587827] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 58.587833] usb 2-1: Product: 802.11ac NIC [ 58.587838] usb 2-1: Manufacturer: Realtek [ 58.587844] usb 2-1: SerialNumber: 123456 [ 58.610463] rtk_btusb: Realtek Bluetooth USB driver ver 3.1.6d45ddf.20220519-142432 [ 58.610656] usbcore: registered new interface driver rtk_btusb [ 58.634631] Bluetooth: hci0: RTL: examining hci_ver=08 hci_rev=000c lmp_ver=08 lmp_subver=8821 [ 58.636729] Bluetooth: hci0: RTL: rom_version status=0 version=1 [ 58.636740] Bluetooth: hci0: RTL: loading rtl_bt/rtl8821c_fw.bin [ 58.664190] Bluetooth: hci0: RTL: loading rtl_bt/rtl8821c_config.bin [ 58.664746] Bluetooth: hci0: RTL: cfg_sz 10, total sz 31990 [ 59.122471] Bluetooth: hci0: RTL: fw version 0x829a7644 [ 59.265513] usbcore: registered new interface driver rtl8821cu [ 59.280119] rtl8821cu 2-1:1.2 wlx90de80521825: renamed from wlan0 |
- Then you can see the RTL8821CU WiFi device node through the sudo ifconfig command. Please refer to the WiFi connection test chapter for WIFI connection and testing methods.
- ether 00:13:ef:f4:58:ae txqueuelen 1000 (Ethernet)
- RX packets 0 bytes 0 (0.0 B)
- RX errors 0 dropped 0 overruns 0 frame 0
- TX packets 0 bytes 0 (0.0 B)
- TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
orangepi@orangepi:~$ sudo ifconfig wlx90de80521825 wlx90de80521825: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 |
- Then you can see the USB Bluetooth device through the hciconfig command
- BD Address: 00:13:EF:F4:58:AE ACL MTU: 820:8 SCO MTU: 255:16
- DOWN
- RX bytes:1252 acl:0 sco:0 events:125 errors:0
- TX bytes:23307 acl:0 sco:0 commands:125 errors:0
orangepi@orangepi:~$ sudo apt-get update && sudo apt-get install -y bluez orangepi@orangepi:~$ hciconfig hci0: Type: Primary Bus: USB |
- Bluetooth icons can also be seen on the desktop. At this time, Bluetooth has not been turned on, so a red x will be displayed
- Please refer to the Bluetooth use chapter for the Bluetooth test method. I won't go into details here
USB Camera Test
- First, you need to prepare a USB camera that supports UVC protocol as shown in the figure below or similar, and then insert the USB camera into the USB port of the Orange Pi development board
- You can see that the USB camera's device node information is/dev/video0 through the v4l2-ctl command
- /dev/video0
- /dev/video1
- /dev/media0
orangepi@orangepi:~$ v4l2-ctl --list-devices Q8 HD Webcam: Q8 HD Webcam (usb-fc880000.usb-1): |
Note that the l in v4l2 is a lowercase letter l, not the number 1.
|
- In the desktop system, Cheese can be used to directly open the USB camera. The method of opening Cheese is shown in the figure below:
The interface after Cheese turns on the USB camera is shown in the figure below:
How to test the USB camera using fswebcam
- Install fswebcam
orangepi@orangepi:~$ sudo apt update
orangepi@orangepi:~$ sudo apt-get install -y fswebcam
After installing fswebcam, you can use the following command to take pictures
a) -d The option is used to specify the device node of the USB camera
b) --no-banner Used to remove the watermark of photos
c) -r The option is used to specify the resolution of the photo
d) -S The option is used to set the number of previous frames to skip
e) ./image.jpg The name and path for setting the generated photos
orangepi@orangepi:~$ sudo fswebcam -d /dev/video0 \
--no-banner -r 1280x720 -S 5 ./image.jpg
- In the desktop version of the Linux system, you can directly view the captured pictures through the HDMI display
orangepi@orangepi:~$ scp image.jpg test@192.168.1.55:/home/test (Modify the IP address and path according to the actual situation)
- In the desktop version of the Linux system, you can directly view the captured pictures through the HDMI display
Audio Test
Test audio methods in the desktop system
- First open the file manager
- Then find the following file (if there is no audio file in the system, you can upload a audio file to the system by yourself)
Methods to switch different audio equipment such as HDMI playback and headset playback
How to play audio with commands
Headphone interface play audio test
- First insert the headset into the headphone jack of the development board
- Then you can check the sound card device supported by the Linux system through the aplay -l command. From the output below, it can be seen that card 0 is the sound card device with RK809, which is the sound card device of the headset
- Subdevices: 0/1
- Subdevice #0: subdevice #0
- Subdevices: 0/1
- Subdevice #0: subdevice #0
- Subdevice #0: subdevice #0
orangepi@orangepi:~$ aplay -l **** List of PLAYBACK Hardware Devices **** card 0: rockchiprk809 [rockchip-rk809], device 0: dailink-multicodecs rk817-hifi-0 [dailink-multicodecs rk817-hifi-0] card 1: rockchiphdmi [rockchip,hdmi], device 0: fe400000.i2s-i2s-hifi i2s-hifi-0 [fe400000.i2s-i2s-hifi i2s-hifi-0] |
- Then use the aplay command to play the audio file that comes with the system. If the headset can hear the sound, it means that the hardware can be used normally
orangepi@orangepi:~$ aplay -D hw:0,0 /usr/share/sounds/alsa/audio.wav Playing WAVE 'audio.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo |
HDMI Audio Play Test
- First use the HDMI to HDMI cable to connect the Orange PI development board to the TV (other HDMI displays need to ensure that the audio can be played)
- Then check the sound card serial number of HDMI. From the output below, you can know that the HDMI sound card is card 1
orangepi@orangepi:~$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: rockchiprk809 [rockchip-rk809], device 0: dailink-multicodecs rk817-hifi-0 [dailink-multicodecs rk817-hifi-0]
- Subdevices: 0/1
- Subdevice #0: subdevice #0
card 1: rockchiphdmi [rockchip,hdmi], device 0: fe400000.i2s-i2s-hifi i2s-hifi-0 [fe400000.i2s-i2s-hifi i2s-hifi-0]
- Subdevices: 0/1
- Subdevice #0: subdevice #0
- Subdevice #0: subdevice #0
- Then use the aplay command to play the audio file that comes with the system. If the HDMI display or television can hear the sound indicates that the hardware can be used normally
orangepi@orangepi:~$ aplay -D hw:1,0 /usr/share/sounds/alsa/audio.wav |
Use the command to test the recording method
- Orange Pi 3B development board does not have MICs, and can only record audio through headphones with MIC function. After inserting the headset with the MIC function into the development board, the command below will record a piece of audio through the headset
orangepi@orangepi:~$ amixer -c 0 cset name='Capture MIC Path' 'Main Mic'
orangepi@orangepi:~$ arecord -D hw:0,0 -d 5 -f cd -t wav /tmp/test.wav
Temperature Sensor
- The command to view the system temperature sensor is:
orangepi@orangepi:~$ sensors
soc_thermal-virtual-0
Adapter: Virtual device
temp1: +41.9°C (crit = +115.0°C)
gpu_thermal-virtual-0Adapter: Virtual device
temp1: +43.8°C
The command to view the current temperature of the nvme ssd solid state drive is:
orangepi@orangepi:~$ sudo smartctl -a /dev/nvme0 | grep "Temperature:"
Temperature: 40 Celsius
40 Pin interface pin explanation
- Orange Pi 3B Development board 40 Pin interface pins, please refer to the figure below
The function of the Orange Pi 3B development board 40 PIN interface pins is shown in the table below.
- There are a total of 28 GPIO ports in the 40pin interface. The voltage of all GPIO ports is 3.3v
How to install wiringOP
Note that wiringOP has been pre -installed in the Linux image released by Orange Pi. Unless wiringOP's code is updated, it is not necessary to re -download and install. Just use it directly.
orangepi-build/external/cache/debs/arm64/wiringpi_x.xx.deb
wiringOP is currently mainly adapted to the functions of setting GPIO port input and output, setting GPIO port output high and low levels, and setting up and down pull-down resistors. Functions such as hardware PWM are not available. |
- Download the code of wiringOP
orangepi@orangepi:~$ sudo apt update
orangepi@orangepi:~$ sudo apt install -y git
orangepi@orangepi:~$ git clone https://github.com/orangepi-xunlong/wiringOP.git -b next
Note that Orange Pi 3B needs to download the code of the wiringOP next branch, please don't miss the parameter of -b next.
If there is a problem with the download code from GitHub, you can use the wiringOP source code that comes with the Linux image directly, and the storage location is: /usr/src/wiringOP
- Compile and install wiringOP
orangepi@orangepi:~$ cd wiringOP orangepi@orangepi:~/wiringOP$ sudo ./build clean orangepi@orangepi:~/wiringOP$ sudo ./build |
- Test the output of the GPIO Readall command as follows
40Pin interface GPIO, I2C, UART, SPI, and PWM test
Note that if you need to set overlays to open multiple configurations at the same time, please use a space to write in one line like the following space. orangepi@orangepi:~$ sudo vim /boot/orangepiEnv.txt overlays=spi3-m0-cs0-spidev i2c2-m1 i2c3-m0 uart7-m2 uart9-m2 pwm11-m1 |
40pin GPIO port test
The Linux system released by Orange Pi has a pre -installed blink_all_gpio program. This program will set up all 28 GPIO ports in 40pin to switch high and low levels.
orangepi@orangepi3b:~$ sudo blink_all_gpio #Remember to add Sudo permissions [sudo] password for orangepi: #You need to enter password here |
- There are a total of 28 GPIO ports in the 40pins of the development board that can be used. The following uses pin 7—the corresponding GPIO is GPIO4_C3——the corresponding wPi serial number is 2—as an example to demonstrate how to set the high and low levels of the GPIO port
- First set the GPIO port as the output mode, the third parameter needs to enter the serial number of the wPi corresponding to the pins
root@orangepi:~/wiringOP# gpio mode 2 out |
- Then set the GPIO port to output the low level. After setting, you can use the value of the voltage of the pins with a multimeter. If it is 0v, it means that the low level flat is successful
root@orangepi:~/wiringOP# gpio write 2 0 |
Using GPIO Readall, you can see the value of the No. 7 pin (V) to 0
- Then set the GPIO port to output a high level. After setting, you can use a multimeter to measure the voltage value of the pin. If it is 3.3v, it means that the high level is set successfully.
root@orangepi:~/wiringOP# gpio write 2 1 |
Using GPIO Readall, you can see the value of No. 7 pin (v) into 1
- The setting method of other pins is similar, just modify the serial number of wPi to the corresponding serial number of the pin
40pin GPIO port pull-down resistance setting method
Note that the 4 GPIO pins below Orange Pi 3B are invalid because there are 3.3V on the outside, so setting drop-down is invalid. Other pins can be set normally |
- Below the No. 11 pin—corresponding to GPIO 3_C6-corresponding wPi serial number 5—to demonstrate how to set up and down pull-down resistance of the GPIO port
- First of all, you need to set the GPIO port as the input mode. The third parameter needs to enter the serial number of the wPi corresponding to the pins
root@orangepi:~/wiringOP# gpio mode 5 in |
- After the setting is set to input mode, execute the following command to set the GPIO port as the pull-down mode
root@orangepi:~/wiringOP# gpio mode 5 up |
- Then enter the following command to read the level of the GPIO port. If the level is 1, it means that the drawing mode is successful
root@orangepi:~/wiringOP# gpio read 5 1 |
- Then execute the following command to set the GPIO port as the drop-down mode
root@orangepi:~/wiringOP# gpio mode 5 down |
- Then enter the following command to read the level of the GPIO port. If the level is 0, it means that the drop-down mode is set successfully
root@orangepi:~/wiringOP# gpio read 5 0 |
40pin SPI Test
- From the schematic diagram of the 40PIN interface, the SPI available for Orange Pi 3B is spi3
In the linux system, the SPI in the 40 pin is closed by default, and it needs to be opened manually before it can be used. The detailed steps are as follows:
First run orangepi-config, normal users remember to add sudo permission
orangepi@orangepi:~$ sudo orangepi-config
Then select System
Then select Hardware
Then use the arrow keys on the keyboard to navigate to the position shown in the figure below, and then use the space to select the SPI configuration you want to open
Then select <Save> to save
Then select <Back>
Then select <Reboot> to restart the system to make the configuration take effect
- After restarting, enter the system to check whether there is a spidev3.0 device node in the Linux system. If it exists, it means that SPI3 has been set up and can be used directly
orangepi@orangepi:~$ ls /dev/spidev3.0 /dev/spidev3.0 |
- Do not short-circuit the mosi and miso pins of SPI3, the output result of running spidev_test is as follows, you can see that the data of TX and RX are inconsistent
orangepi@orangepi:~$ sudo spidev_test -v -D /dev/spidev3.0 spi mode: 0x0 bits per word: 8 max speed: 500000 Hz (500 KHz) TX | FF FF FF FF FF FF 40 00 00 00 00 95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D | ......@.…▒..................▒. RX | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ............................…. |
- Then short-circuit the two pins of mosi (pin 19 in the 40pin interface) and miso (pin 21 in the 40pin interface) of SPI3, and then run the output of spidev_test as follows, you can see the sending and receiving same data
orangepi@orangepi:~$ sudo spidev_test -v -D /dev/spidev3.0 spi mode: 0x0 bits per word: 8 max speed: 500000 Hz (500 KHz) TX | FF FF FF FF FF FF 40 00 00 00 00 95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D | ......@.…▒..................▒. RX | FF FF FF FF FF FF 40 00 00 00 00 95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D | ......@.…▒..................▒. |
40pin I2C Test
- From the table below, the I2C available for Orange Pi 3B is I2C2, I2C3, and I2C4 a total of three groups of I2C bus.
It can be seen from the above table that i2c4_m0 and spi3_m0 are pins. The two cannot be opened at the same time. i2c3_m0 and uart3_m0 are also reused. The two cannot be opened at the same time
In the linux system, the I2C bus in the 40 pin is closed by default, and it needs to be opened manually to use it. The detailed steps are as follows:
First run orangepi-config, normal users remember to add sudo permission
orangepi@orangepi:~$ sudo orangepi-config
Then select System
Then select Hardware
Then use the arrow keys on the keyboard to navigate to the position shown in the figure below, and then use the space to select the I2C configuration you want to open
Then select <Save> to save
Then select <Back>
Then select <Reboot> to restart the system to make the configuration take effect
- After starting the Linux system, first confirm that the i2c device node exists under/dev
orangepi@orangepi:~# ls /dev/i2c-* /dev/i2c-0 /dev/i2c-2 /dev/i2c-3 /dev/i2c-4 /dev/i2c-6 |
- Then connect a i2c device on the i2c pin of the 40Pin connector
i2c2-m1 | i2c3-m0 | i2c4-m0 | |
Sda Pin |
Corresponding to No. 3 pin | Corresponding to No. 27 pin | Corresponding to No. 19 pin |
Sck Pin |
Corresponding to No. 5 pin | Corresponding to No. 28 pin | Corresponding to No. 23 pin |
Vcc Pin |
Corresponding to No. 1 pin | Corresponding to No. 1 pin | Corresponding to No. 1 pin |
Gnd Pin |
Corresponding to No. 6 pin | Corresponding to No. 6 pin | Corresponding to No. 6 pin |
- Then use the i2cdetect -y command if the address of the connected I2C device can be detected, it means that the I2C can be used normally
orangepi@orangepi:~$ sudo i2cdetect -y 2 #i2c2 command orangepi@orangepi:~$ sudo i2cdetect -y 3 #i2c3 command orangepi@orangepi:~$ sudo i2cdetect -y 4 #i2c4 command |
40pin UART test
- As can be seen from the table below, the uart available for Orange Pi 3B is uart3, uart7, and uart9. There are three sets of uart bus
As can be seen from the above table, i2c3_m0 and uart3_m0 are reused by pins, and the two cannot be opened at the same time
In the linux system, the UART in the 40 pins is closed by default, and it needs to be opened manually before it can be used. The detailed steps are as follows:
First run orangepi-config, normal users remember to add sudo permission
orangepi@orangepi:~$ sudo orangepi-config
Then select System
Then select Hardware
Then use the arrow keys on the keyboard to navigate to the position shown in the figure below, and then use the space to select the UART configuration you want to open
Then select <Save> to save
Then select <Back>
Then select <Reboot> to restart the system to make the configuration take effect
- After entering the Linux system, first confirm whether there is a device node corresponding to uart under/dev
orangepi@orangepi:~# ls /dev/ttyS* /dev/ttyS1 /dev/ttyS3 /dev/ttyS7 /dev/ttyS9 |
- Then start testing the uart interface, first use the rx and tx of the uart interface to be tested by DuPont
uart3 | uart7 | uart9 | |
Tx pin | Corresponding to the 28 pin | Corresponding to the 16 pin | Corresponding to the 29 pin |
Rx Pin | Corresponding to the 27 pin | Corresponding to the 15 pin | Corresponding to the 22 pin |
Use the gpio serial command to test the loop function of the serial port as shown below. If you can see the following printing, it means that the serial communication is normal
- Test UART3
orangepi@orangepi:~$ sudo gpio serial /dev/ttyS3
[sudo] password for orangepi: #Enter the password here.
Out: 0: -> 0Out: 1: -> 1
Out: 2: -> 2
Out: 3: -> 3
Out: 4: -> 4
Out: 5: -> 5^C
- Test UART7
orangepi@orangepi:~$ sudo gpio serial /dev/ttyS7
[sudo] password for orangepi: #Enter the password here.
Out: 0: -> 0Out: 1: -> 1
Out: 2: -> 2
Out: 3: -> 3
Out: 4: -> 4
Out: 5: -> 5^C
- Test UART9
orangepi@orangepi:~$ sudo gpio serial /dev/ttyS9
[sudo] password for orangepi: #Enter the password here.
Out: 0: -> 0Out: 1: -> 1
Out: 2: -> 2
Out: 3: -> 3
Out: 4: -> 4
Out: 5: -> 5^C
PWM test method
- From the table below, the pwm11 available for Orange Pi 3B
In the linux system, the PWM in the 40 pin is turned off by default, and it needs to be turned on manually before it can be used. The detailed steps are as follows:
First run orangepi-config, normal users remember to add sudo permission
orangepi@orangepi:~$ sudo orangepi-config
Then select System
Then select Hardware
Then use the arrow keys on the keyboard to navigate to the position shown in the figure below, and then use the space to select the PWM configuration you want to open
Then select <Save> to save
Then select <Back>
Then select <Reboot> to restart the system to make the configuration take effect
- After opening a pwm, there will be an extra pwmchipX in /sys/class/pwm/ (X is a specific number), for example, after opening pwm11, check the pwmchipX under /sys/class/pwm/ one becomes two
orangepi@orangepi:~$ ls /sys/class/pwm/ pwmchip0 pwmchip1 |
Which pwmchip above corresponds to pwm11, let's check the output of the ls /sys/class/pwm/ -l command first, as shown below:
Then it can be known from the table below that the base address of the pwm11 register is fe6f0030, and then look at the output of the ls /sys/class/pwm/ -l command, you can see that pwmchip1 is linked to fe6f0030.pwm, so pwm11 corresponds to pwmchip as pwmchip1
- Then use the following command to make pwm11 output a 50Hz square wave (please switch to the root user first, and then execute the following command)
- The test method of pwm11 demonstrated above is similar to other pwm test methods.
root@orangepi:~# echo 0 > /sys/class/pwm/pwmchip1/export root@orangepi:~# echo 20000000 > /sys/class/pwm/pwmchip1/pwm0/period root@orangepi:~# echo 1000000 > /sys/class/pwm/pwmchip1/pwm0/duty_cycle root@orangepi:~# echo 1 > /sys/class/pwm/pwmchip1/pwm0/enable |
How to install and use wiringOP-Python
wiringOP-Python is the Python language version of wiringOP, which is used to operate the hardware resources of the development board, such as GPIO, I2C, SPI and UART, in the Python program.
|
wiringOP-Python installation method
- First install the dependency package
root@orangepi:~# sudo apt-get update
root@orangepi:~# sudo apt-get -y install git swig python3-dev python3-setuptools
- Then use the following command to download the source code of wiringOP-Python
Note that the following git clone--recursivee command will automatically download the source code of wiringOP, because wiringOP-Python depends on wiringOP. Please make sure that the download process does not report an error due to network problems.
|
root@orangepi:~# git clone --recursive https://github.com/orangepi-xunlong/wiringOP-Python -b next root@orangepi:~# cd wiringOP-Python root@orangepi:~/wiringOP-Python# git submodule update --init --remote |
- Then use the following command to compile wiringOP-Python and install it into the Linux system of the development board
root@orangepi:~# cd wiringOP-Python root@orangepi:~/wiringOP-Python# python3 generate-bindings.py > bindings.i root@orangepi:~/wiringOP-Python# sudo python3 setup.py install |
- Then enter the following command. If there is a help information output, it means that Wiringop-Python is successfully installed. Press the q key to exit the interface of the help information
- wiringpi
- # This file was automatically generated by SWIG (http://www.swig.org).
- # Version 4.0.2
- #
- # Do not make changes to this file unless you know what you are doing--modify
- # the SWIG interface file instead.
root@orangepi:~/wiringOP-Python# python3 -c "import wiringpi; help(wiringpi)" Help on module wiringpi:
|
Test whether the wiringOP-Python is installed successfully under the Python command line is shown below:
- First use the Python3 command to enter the command line mode of Python3
root@orangepi:~# python3
- Then import the Python module of WiringPi
>>> import wiringpi;
- Enter the following command to view the help information of wiringOP-Python, and press the q key to exit the interface of the help information
- wiringpi
- # This file was automatically generated by SWIG (http://www.swig.org).
- # Version 4.0.2
- #
- # Do not make changes to this file unless you know what you are doing--modify
- # the SWIG interface file instead.
- builtins.object
- GPIO
- I2C
- Serial
- nes
- class GPIO(builtins.object)
- | GPIO(pinmode=0)
- |
>>> help(wiringpi)
Help on module wiringpi:
NAME
DESCRIPTION
CLASSES
>>>
40pin GPIO port test
wiringOP-Python is the same as wiringOP, you can also determine which GPIO pin to operate by specifying the wPi number, because there is no command to check the wPi number in wiringOP-Python, so you can only check the board wPi number and physical Correspondence between pins. |
- Below the No. 7 pin — corresponding to GPIO4_a4 -corresponding WPI serial number 2 -to demonstrate how to set the height of the GPIO port
The steps of the command test are shown below directly:
- First set the GPIO port to the output mode. The first parameter of the pinMode function is the serial number of the wpi corresponding to the pin, and the second parameter is the GPIO mode
root@orangepi:~/wiringOP-Python# python3 -c "import wiringpi; \
from wiringpi import GPIO; wiringpi.wiringPiSetup() ; \
wiringpi.pinMode(2, GPIO.OUTPUT) ; "
- Then set the GPIO port output low level. After setting, you can use the voltage of the voltage of the universal meter to measure the pins. If it is 0V, it means that the low -power flat is successful
root@orangepi:~/wiringOP-Python# python3 -c "import wiringpi; \
from wiringpi import GPIO; wiringpi.wiringPiSetup() ;\
wiringpi.digitalWrite(2, GPIO.LOW)"
- Then set the GPIO port output high level. After setting, you can use the value of the voltage of the pins with a multimeter. If it is 3.3V, it means that the high -power flat is successful.
root@orangepi:~/wiringOP-Python# python3 -c "import wiringpi; \
from wiringpi import GPIO; wiringpi.wiringPiSetup() ;\
wiringpi.digitalWrite(2, GPIO.HIGH)"
The steps of testing in the command line of Python3 are shown below:
- First use the Python3 command to enter the command line mode of Python3
root@orangepi:~# python3
- Then import the Python module of WiringPi
>>> import wiringpi
>>> from wiringpi import GPIO
- Then set the GPIO port as the output mode. The first parameter of the pinMode function is the serial number of the wpi corresponding to the pin, and the second parameter is the GPIO mode.
>>> wiringpi.wiringPiSetup()
0
>>> wiringpi.pinMode(2, GPIO.OUTPUT)
- Then set the GPIO port output low level. After setting, you can use the value of the voltage of the pins with a multimeter. If it is 0V, it means that the low -power flat is set.
>>> wiringpi.digitalWrite(2, GPIO.LOW)
- Then set the GPIO port output high level. After setting, you can use the value of the voltage of the pins with a multimeter. If it is 3.3V, it means that the high -power flat is successful
>>> wiringpi.digitalWrite(2, GPIO.HIGH)
- Wiringop-Python Sets GPIO high and low levels in the Python code. For reference to the blink.py test program in Examples, the voltage of the blink.py test program will set up the voltage of all GPIO ports in the development board 40 PIN
root@orangepi:~/wiringOP-Python# cd examples root@orangepi:~/wiringOP-Python/examples# ls blink.py blink.py root@orangepi:~/wiringOP-Python/examples# python3 blink.py |
40pin SPI test
- From the schematic diagram of the 40pin interface, the SPI available for Orange Pi 3B is spi3
In the Linux system, the spi3 in 40pin is closed by default, and it needs to be opened manually to use.
Add the configuration of the red font part below to the /boot/orangepiEnv.txt, and then restart the Linux system to open the spi4.
orangepi@orangepi:~$ sudo vim /boot/orangepiEnv.txtoverlays=spi3-m0-cs0-spidev
- First check whether there is a spidev3.0 device node in the Linux system. If it exists, it means that the SPI3 has been set and can be used directly
orangepi@orangepi:~$ ls /dev/spidev3.0 /dev/spidev3.0 |
You can then use the spi back function under the spidev_test.py program in Examples. The spidev_test.py program needs to specify the following two parameters:
--channel: Specify the channel number of SPI
--port: Specify the port number of SPI
Do not pick up the two pins of the SPI3 MOSI and MISO in short, and run the output result of the spidev_test.py as shown below. You can see that the data of TX and RX are inconsistent
root@orangepi:~/wiringOP-Python# cd examples root@orangepi:~/wiringOP-Python/examples# python3 spidev_test.py \ --channel 3 --port 0 spi mode: 0x0 max speed: 500000 Hz (500 KHz) Opening device /dev/spidev3.0 TX | FF FF FF FF FF FF 40 00 00 00 00 95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D |......@.......…| RX | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF |.............….| |
- Then use the TXD (No. 19 pins in the 40Pin interface) and RXD (No. 21 pins in the 40pin interface) of the DuPont line short connection SPI3. Like sending and receiving data, it means that the SPI3 loop test is normal
root@orangepi:~/wiringOP-Python# cd examples root@orangepi:~/wiringOP-Python/examples# python3 spidev_test.py \ --channel 3 --port 0 spi mode: 0x0 max speed: 500000 Hz (500 KHz) Opening device /dev/spidev3.0 TX | FF FF FF FF FF FF 40 00 00 00 00 95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D |......@.......…| RX | FF FF FF FF FF FF 40 00 00 00 00 95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D |......@.......…| |
40pin I2C test
- As can be seen from the table below, the I2C available for Orange Pi 3B is I2C2, I2C3, and I2C4 a total of three groups of I2C bus
It can be seen from the above table that I2C4_M0 and SPI3_M0 are pins. The two cannot be opened at the same time. I2C3_M0 and UART3_M0 are also reused. The two cannot be opened at the same time |
In the Linux system, the I2C in 40Pin is closed by default, and it needs to be opened manually to use.
overlays=i2c2-m1 i2c3-m0 i2c4-m0 |
- After starting the Linux system, first confirm the I2C device node under/dev.
orangepi@orangepi:~# ls /dev/i2c-* /dev/i2c-0 /dev/i2c-2 /dev/i2c-3 /dev/i2c-4 /dev/i2c-6 |
- Then connect a I2C device on the I2C pin of the 40PIN connector. Here is an example of the DS1307 RTC module.
i2c2-m1 | i2c3-m0 | i2c4-m0 | |
Sda Pin | Corresponding to No. 3 pin | Corresponding to No. 27 pin | Corresponding to No. 19 pin |
Sck Pin | Corresponding to No. 5 pin | Corresponding to No. 28 pin | Corresponding to No. 23 pin |
Vcc Pin | Corresponding to No. 1 pin | Corresponding to No. 1 pin | Corresponding to No. 1 pin |
Gnd Pin | Corresponding to No. 6 pin | Corresponding to No. 6 pin | Corresponding to No. 6 pin |
- Then use the i2cdetect -y command If the address of the connected I2C device can be detected, it means that the I2C can be used normally
orangepi@orangepi:~$ sudo i2cdetect -y 2 #i2c2 command orangepi@orangepi:~$ sudo i2cdetect -y 3 #i2c3 command orangepi@orangepi:~$ sudo i2cdetect -y 4 #i2c4 command |
- You can then run the time of the ds ds1307.py test program in examples to read the RTC time
root@orangepi:~/wiringOP-Python# cd examples root@orangepi:~/wiringOP-Python/examples# python3 ds1307.py --device \ "/dev/i2c-4" Thu 2023-01-05 14:57:55 Thu 2023-01-05 14:57:56 Thu 2023-01-05 14:57:57 ^C exit |
40pin's UART test
- As can be seen from the table below, the UART available for Orange Pi 3B is UART3, UART7 and UART9. There are three sets of UART bus
As can be seen from the above table, I2C3_M0 and UART3_M0 are reused by pins, and the two cannot be opened at the same time
In the Linux system, the UART in 40pin is closed by default, and it needs to be opened manually to use.
Add the configuration of the red font part below to the /boot/orangepiEnv.txt, and then restart the Linux system to open the UART3, UART7, and UART9 at the same time. If you only need to open one, you can fill in one
orangepi@orangepi:~$ sudo vim /boot/orangepiEnv.txt
overlays=uart3-m0 uart7-m2 uart9-m2
- After entering the Linux system, first confirm whether there is a device node corresponding to UART under/dev
orangepi@orangepi:~# ls /dev/ttyS* /dev/ttyS1 /dev/ttyS3 /dev/ttyS7 /dev/ttyS9 |
- Then start testing the UART interface, and first use the RX and TX of the UART interface to be tested by DuPont
uart3 | uart7 | uart9 | |
Tx Pin | Corresponding to the 28 pin | Corresponding to the 16 pin | Corresponding to the 29 pin |
Rx Pin | Corresponding to the 27 pin | Corresponding to the 15 pin | Corresponding to the 7 pin |
Use the serialTest.py program in Examples to test the loop function of the serial port. If you can see the printing below, it means that the serial communication is normal
- Test UART3
root@orangepi:~/wiringOP-Python/examples# python3 serialTest.py --device \
"/dev/ttyS3"
Out: 0: -> 0Out: 1: -> 1
Out: 2: -> 2
Out: 3: -> 3
Out: 4:^C
exit
- Test UART7
root@orangepi:~/wiringOP-Python/examples# python3 serialTest.py --device \
"/dev/ttyS7"
Out: 0: -> 0Out: 1: -> 1
Out: 2: -> 2
Out: 3: -> 3
Out: 4:^C
exit
- Test UART9
root@orangepi:~/wiringOP-Python/examples# python3 serialTest.py --device \
"/dev/ttyS9"
Out: 0: -> 0Out: 1: -> 1
Out: 2: -> 2
Out: 3: -> 3
Out: 4:^C
exit
Hardware watch the door dog test
The WatchDog_test program is pre -installed in the Linux system released by Orange PI, which can be tested directly.
The method of running the WatchDog_test program is shown below:
The second parameter 10 indicates the counting time of the door. If there is no dog feeding in this time, the system will restart.
We can feed the dog by pressing any keys on the keyboard (except ESC). After the dog is fed, the program will print a line of Keep Alive to indicate that the dog is successful
orangepi@orangepi:~$ sudo watchdog_test 10 open success options is 33152,identity is sunxi-wdt put_usr return,if 0,success:0 The old reset time is: 16 return ENOTTY,if -1,success:0 return ENOTTY,if -1,success:0 put_user return,if 0,success:0 put_usr return,if 0,success:0 keep alive keep alive keep alive |
Check the serial number of the RK3566 chip
The commands of the RK3566 chip serial number are shown below. The serial number of each chip is different, so you can use the serial number to distinguish multiple development boards.
orangepi@orangepi:~$ cat_serial.sh Serial : 8fa18eaf489041f0 |
The method of downloading and installing the balenaEtcher version of arm64
The download address of Balenaetcher ARM64 version is:
- The download address of the Deb installation package is shown below, and it needs to be installed to use
- The download address of the Appimage version that does not need to be installed is shown below:
How to install and use the deb version of Balenaetcher:
- deb version of Balenaetcher installation commands as shown below:
orangepi@orangepi:~$ sudo apt install -y \
--fix-broken ./balena-etcher-electron_1.7.9+5945ab1f_arm64.deb
- After the deb version of Balenaetcher is installed, it can be opened in the Application
- The interface after Balenaetcher is opened is shown below:
How to use the AppImage version of balenaEtcher:
- First add permissions to Balenaetcher
orangepi@orangepi:~/Desktop$ chmod +x balenaEtcher-1.7.9+5945ab1f-arm64.AppImage
The installation method of the Bt-Panel Linux panel
Bt-Panel Linux panel is a server management software that improves operation and maintenance efficiency. It supports more than 100 server management functions such as one -click LAMP/LNMP/cluster/monitoring/website/FTP/database/Java (excerpted from the official website of the Bt-Panel) |
- First of all, the size of the/tmp space is needed. After setting, you need to restart the Linux system of the development board, and the command is shown below:
orangepi@orangepi:~$ sudo sed -i 's/nosuid/&,size=2G/' /etc/fstab
orangepi@orangepi:~$ sudo reboot
- After restarting, you can see that the size of the/tmp space has become 2G.
orangepi@orangepi:~$ df -h | grep "/tmp" tmpfs 2.0G 12K 2.0G 1% /tmp |
- Then enter the following command in the Linux system to start the installation of the Bt-Panel
orangepi@orangepi:~$ sudo install_bt_panel.sh |
- Then the pagoda installation program reminds whether to install the Bt-Panel to the/www folder, and enter y at this time
+---------------------------------------------------------------------- | Bt-WebPanel FOR CentOS/Ubuntu/Debian +---------------------------------------------------------------------- | Copyright © 2015-2099 BT-SOFT(http://www.bt.cn) All rights reserved. +---------------------------------------------------------------------- | The WebPanel URL will be http://SERVER_IP:8888 when installed. +----------------------------------------------------------------------
|
- Then you have to wait patiently. When you see the printing information below the terminal output, it means that the pagoda has been installed. The entire installation process takes about 34 minutes. There may be some differences according to the difference in network speed
At this time, enter the panel address displayed above in the browser to open the login interface of the pagoda Linux panel, and then enter the username and password displayed in the corresponding position to log in to the Bt-Panel
After successfully logging in to the pagoda, the following welcome interface will pop up. First, please take the intermediate user notice to read to the bottom, and then you can choose "I have agreed and read" User Agreement ", and then click" Enter the panel " You can enter the Bt-Panel
- After entering the Bt-Panel, you will first prompt that you need to bind the account of the Bt-Panel official website. If you do n't have an account, you can go to the pagoda's official website (https://www.bt.cn) to register one.
- The final display interface is shown in the figure below. You can intuitively see some status information of the development board Linux system, such as load state, CPU usage, memory usage and storage space usage
- More functions of the Bt-Panel can refer to the following information to explore by yourself
Manual: http://docs.bt.cn Forum address: https://www.bt.cn/bbs GitHub Link: https://github.com/aaPanel/BaoTa |
Set the Chinese environment and install Chinese input method
Note that before installing the Chinese input method, please make sure that the Linux system used in the development board is the desktop version system. |
Debian system installation method
First set the default locale as Chinese
- Enter the command below to start configured locale
orangepi@orangepi:~$ sudo dpkg-reconfigure locales
- Then select zh_CN.UTF-8 UTF-8 in the pop-up interface (to move up and down through the upper and lower direction buttons on the keyboard, select it through the space key, and finally move the cursor to <OK> through the TAB key, then press the ENTER key )
- After exiting the interface, the locale settings will be started. The output displayed by the command line is shown below
- en_US.UTF-8... done
- zh_CN.UTF-8... done
orangepi@orangepi:~$ sudo dpkg-reconfigure locales
Generating locales (this might take a while)...
Generation complete.
- Then search Google Pinyin and click OK
You can switch the Chinese and English input method through the Ctrl+Space shortcut
If the entire system is required as Chinese, the variables in /etc/default/locale can be set to zh_CN.UTF-8
orangepi@orangepi:~$ sudo vim /etc/default/locale # File generated by update-locale LC_MESSAGES=zh_CN.UTF-8 LANG=zh_CN.UTF-8 LANGUAGE=zh_CN.UTF-8 |
The installation method of Ubuntu 20.04 system
- First open Language Support
- Then use the left mouse button to select Chinese (China) and hold it down, and then drag it up to the beginning. The display is shown below:
Note that this step is not easy to drag, please try more patiently. |
Then restart the Linux system to make the configuration effective
After re -entering the system, please do not ask me again at the interface below, and then determine whether the standard folder should be updated as Chinese based on your preference.
- Then we can open the Geany to test Chinese input method , and the way to open is shown in the figure below
- After opening Geany, the default is an English input method. We can switch into Chinese input method through the Ctrl+Space shortcut keys, and then we can enter Chinese
The installation method of ubuntu 22.04 system
- First open Language Support
- Then use the left mouse button to select Chinese (China) and hold it down, and then drag it up to the beginning. The display after dragging is shown in the figure below:
Note that this step is not easy to drag, please try more patiently. |
Then restart the Linux system to make the configuration effective
After re -entering the system, please do not ask me again at the interface below, and then determine whether the standard folder should be updated as Chinese based on your preference
- Then choose to use Pinyin input method
- Then we can open the Geany to test Chinese input method, and the way to open is shown in the figure below
- After opening Geany, it is still an English input method by default. We can switch into Chinese input methods through the Ctrl+Space shortcut keys, and then we can enter Chinese
How to remotely log in to the Linux system desktop method
Ubuntu Gnome Wayland image does not support Nomachine and VNCs introduced here to remotely log in to the desktop. |
Use nomachine remote login
Make sure the Ubuntu or Debian system installed on the development board is a desktop version. In addition, nomachine also provides detailed documents. It is strongly recommended to read this document to be familiar with the use of nomachine. The document links are shown below: |
Nomachine supports Windows, Mac, Linux, iOS, and Android platforms, so we can remotely log in to control Orange PI development boards through Nomachine on multiple devices. The following demonstrates the Linux system desktop of the Orange PI development board through Nomachine in Windows. For installation methods for other platforms, please refer to the official documentation of Nomachine. |
Before operation, please ensure that the Windwos computer and the development board are in the same local area network, and can log in to the Ubuntu or Debian system that can log in to the development board normally. |
First download the nomachine software Linux ARM64 DEB version of the installation package, and then install it in the Linux system of the development board
- Since RK3566 is a SOC of the ARMV8 architecture, the system we use is Ubuntu or Debian, so you need to download NoMachine for ARM ARMv8 DEB installation package here. The download link is shown below:
Note that this download link may change, please recognize the DEB package of the ARMV8/ARM64 version.
- In addition, you can also download the installation package to NoMachine in the official tools.
First enter the remote login software-Nomachine folder
Then download the ARM64 version of the DEB installation package
Then upload the downloaded nomachine_x.x.x_x_arm64.deb to the Linux system of the development board.
Then use the following command to install NoMachine in the Linux system of the development board
orangepi@orangepi:~$ sudo dpkg -i nomachine_x.x.x_x_arm64_arm64.deb
- Then download the nomachine software Windows version of the installation package, the download address is shown below
Note that this download link may change. |
Then install nomachine in Windows. Please restart the computer after installation
Then open NoMachine in Window
- After Nomachine starts, it will automatically scan other devices installed in the local area network. After entering the main interface of Nomachine, you can see that the development board is already in the connected device list, and then click the location shown in the red box below in the figure below. Start log in to the Linux system desktop of the development board
- Then enter the username and password of the Linux system in the corresponding position in the figure below, and then click OK to start logging in
Then click OK in the next interface
Finally, you can see the desktop of the development board Linux system
Use VNC remote login
Before operation, please ensure that the Windwos computer and the development board are in the same local area network, and you can log in to the Ubuntu or Debian system of the development board normally. Ubuntu 20.04 tests many problems with VNC, please do not use this method. |
- First run the set_vnc.sh script settings, and remember to add Sudo permissions
orangepi@orangepi:~$ sudo set_vnc.sh
You will require a password to access your desktops.
Password: #Set the VNC password here, 8 -bit charactersVerify: #Set the VNC password here, 8 -bit characters
Would you like to enter a view-only password (y/n)? n
xauth: file /root/.Xauthority does not exist
New 'X' desktop is orangepi3b:1
Creating default startup script /root/.vnc/xstartupStarting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/orangepi3b:1.log
Killing Xtightvnc process ID 3047
New 'X' desktop is orangepi3b:1
Starting applications specified in /root/.vnc/xstartupLog file is /root/.vnc/orangepi3b:1.log
The steps of using MobaxTerm software to connect the development board Linux system desktop are shown below:
- First click Session, then select VNC, then fill in the IP address and port of the development board, and finally click OK to confirm
Some programming language tests supported by Linux system
Debian Bullseye system
Debian Bullseye is equipped with a gcc compilation tool chain by default, which can directly compile the C language program in the Linux system of the development board
- The version of the gcc is shown below
orangepi@orangepi:~$ gcc --version
gcc (Debian 10.2.1-6) 10.2.1 20210110
Copyright (C) 2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- Write C language of Hello_world.c program
- printf("Hello World!\n");
- return 0;
orangepi@orangepi:~$ vim hello_world.c
#include <stdio.h>
int main(void)
{
}
- Then compile and run hello_world.c
orangepi@orangepi:~$ gcc -o hello_world hello_world.c
orangepi@orangepi:~$ ./hello_world
Hello World!
Debian BullSeye Default with Python3
- The specific version of Python is shown below
orangepi@orangepi:~$ python3
Python 3.9.2 (default, Feb 28 2021, 17:03:44)
[GCC 10.2.1 20210110] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
- hello_world.py program in Python language
orangepi@orangepi:~$ vim hello_world.py
print('Hello World!')
- The results of running hello_world.py are shown below
orangepi@orangepi:~$ python3 hello_world.py
Hello World!
Debian Bullseye's compilation tool and operating environment that is not installed in Java by default
- You can use the following command to install OpenJDK. The latest version in Debian Bullseye is openjdk-17
orangepi@orangepi:~$ sudo apt install -y openjdk-17-jdk
- After installation, you can check the version of Java
orangepi@orangepi:~$ java --version
- Edit the hello_world.java of the Jave version
- public static void main(String[] args)
- {
- System.out.println("Hello World!");
- }
orangepi@orangepi:~$ vim hello_world.java
public class hello_world
{
}
- Then compile and run hello_world.java
orangepi@orangepi:~$ javac hello_world.java
orangepi@orangepi:~$ java hello_world
Hello World!
Ubuntu Focal system
Ubuntu Focal has the GCC compilation tool chain by default, which can compile the C language program directly in the Linux system of the development board.
- The version of the gcc is shown below
orangepi@orangepi:~$ gcc --version
gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- hello_world.c program to write C language
- printf("Hello World!\n");
- return 0;
orangepi@orangepi:~$ vim hello_world.c
#include <stdio.h>
int main(void){
}
- Then compile and run hello_world.c
orangepi@orangepi:~$ gcc -o hello_world hello_world.c
orangepi@orangepi:~$ ./hello_world
Hello World!
Ubuntu Focal defaults to install Python3
- Python3 specific version is shown below
orangepi@orangepi:~$ python3
Python 3.8.10 (default, Nov 14 2022, 12:59:47)
[GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
- hello_world.py program in Python language
orangepi@orangepi:~$ vim hello_world.py
print('Hello World!')
- The results of running hello_world.py are shown below
orangepi@orangepi:~$ python3 hello_world.py
Hello World!
Ubuntu Focal's compilation tool and operating environment without the installation of Java default
- You can use the following command to install openjdk-17
orangepi@orangepi:~$ sudo apt install -y openjdk-17-jdk
- After installation, you can check the version of Java
orangepi@orangepi:~$ java --version
openjdk 17.0.2 2022-01-18
OpenJDK Runtime Environment (build 17.0.2+8-Ubuntu-120.04)
OpenJDK 64-Bit Server VM (build 17.0.2+8-Ubuntu-120.04, mixed mode, sharing)
- Edit the hello_world.java of Jave version
- public static void main(String[] args)
- {
- System.out.println("Hello World!");
- }
orangepi@orangepi:~$ vim hello_world.java
public class hello_world
{
}
- Then compile and run hello_world.java
orangepi@orangepi:~$ javac hello_world.java
orangepi@orangepi:~$ java hello_world
Hello World!
Ubuntu jammy system
Ubuntu Jammy is installed with the GCC compilation tool chain by default, which can directly compile the C language program in the Linux system of the development board
- The version of the gcc is shown below
orangepi@orangepi:~$ gcc --version
gcc (Ubuntu 11.2.0-19ubuntu1) 11.2.0
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- Write the hello_world.c program of c language
- printf("Hello World!\n");
- return 0;
orangepi@orangepi:~$ vim hello_world.c
#include <stdio.h>
int main(void){
}
- Then compile and run hello_world.c
orangepi@orangepi:~$ gcc -o hello_world hello_world.c
orangepi@orangepi:~$ ./hello_world
Hello World!
Ubuntu jammy is installed with Python3 by default
- Python3 specific version is shown below
orangepi@orangepi:~$ python3
Python 3.10.4 (main, Apr 2 2022, 09:04:19) [GCC 11.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
- Edit hello_world.py program in Python language
orangepi@orangepi:~$ vim hello_world.py
print('Hello World!')
- The results of running hello_world.py are shown below
orangepi@orangepi:~$ python3 hello_world.py
Hello World!
Ubuntu jammy defaults to compile tools and operating environments that are not installed in Java
- You can use the following command to install openjdk-18
orangepi@orangepi:~$ sudo apt install -y openjdk-18-jdk
- After installation, you can check the version of Java
orangepi@orangepi:~$ java --version
openjdk 18-ea 2022-03-22
OpenJDK Runtime Environment (build 18-ea+36-Ubuntu-1)
OpenJDK 64-Bit Server VM (build 18-ea+36-Ubuntu-1, mixed mode, sharing)
- Edit the hello_world.java of the Jave version
- public static void main(String[] args)
- {
- System.out.println("Hello World!");
- }
orangepi@orangepi:~$ vim hello_world.java
public class hello_world
{
}
- Then compile and run hello_world.java
orangepi@orangepi:~$ javac hello_world.java
orangepi@orangepi:~$ java hello_world
Hello World!
QT installation method
- Use the following script to install QT5 and QT Creator
orangepi@orangepi:~$ install_qt.sh
The QT version number will be automatically printed after installation
- Ubuntu20.04 comes with QT version 5.12.8
orangepi@orangepi:~$ install_qt.sh
......
QMake version 3.1
Using Qt version 5.12.8 in /usr/lib/aarch64-linux-gnu
- Ubuntu22.04 comes with QT version 5.15.3
orangepi@orangepi:~$ install_qt.sh
......
QMake version 3.1
Using Qt version 5.15.3 in /usr/lib/aarch64-linux-gnu
- Debian11 comes with QT version 5.15.2
orangepi@orangepi:~$ install_qt.sh
......
QMake version 3.1
Using Qt version 5.15.2 in /usr/lib/aarch64-linux-gnu
- Debian12 comes with QT version 5.15.8
orangepi@orangepi:~$ install_qt.sh
......
QMake version 3.1
Using Qt version 5.15.8 in /usr/lib/aarch64-linux-gnu
- Then you can see the QT Creator launch icon in Applications
QT Creator can also be opened using the following command
orangepi@orangepi:~$ qtcreator |
During the startup of QT and QT applications, if the following error is displayed, ignore it. This error has no impact on application running.
libGL error: failed to load driver: rockchip libGL error: failed to create dri screen libGL error: failed to load driver: rockchip |
The QT Creator version is shown below
Then set QT
- Clicking on the example code will automatically open the corresponding instruction document, you can carefully read the instructions
- After waiting for a period of time, the interface shown in the following figure will pop up, which indicates that QT can compile and run normally
- Reference documents
https://wiki.qt.io/Install_Qt_5_on_Ubuntu |
ROS Installation Method
How to install ROS 1 Noetic on Ubuntu 20.04
- The current active version of ROS 1 is as follows, the recommended version is Noetic Ninjemys
- The official installation document link of ROS 1 Noetic Ninjemys is as follows:
- In the official installation document of ROS Noetic Ninjemys, Ubuntu recommends using Ubuntu20.04, so please make sure that the system used by the development board is Ubuntu20.04 desktop system
- Then use the script below to install ros1
orangepi@orangepi3b:~$ install_ros.sh ros1 |
- Before using the ROS tool, you first need to initialize rosdep, and then you can quickly install some system dependencies and some core components in ROS when compiling the source code
- The read operation timed out
- rosdep update
Note that running the following command needs to ensure that the development board can access github normally, otherwise an error will be reported due to network problems.
Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml ERROR: error loading sources list: |
orangepi@orangepi:~$ source /opt/ros/noetic/setup.bash orangepi@orangepi:~$ sudo rosdep init Wrote /etc/ros/rosdep/sources.list.d/20-default.list Recommended: please run
orangepi@orangepi:~$ rosdep update reading in sources list data from /etc/ros/rosdep/sources.list.d Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/ruby.yaml Hit https://raw.githubusercontent.com/ros/rosdistro/master/releases/fuerte.yaml Query rosdistro index https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml Skip end-of-life distro "ardent" Skip end-of-life distro "bouncy" Skip end-of-life distro "crystal" Skip end-of-life distro "dashing" Skip end-of-life distro "eloquent" Add distro "foxy" Add distro "galactic" Skip end-of-life distro "groovy" Add distro "humble" Skip end-of-life distro "hydro" Skip end-of-life distro "indigo" Skip end-of-life distro "jade" Skip end-of-life distro "kinetic" Skip end-of-life distro "lunar" Add distro "melodic" Add distro "noetic" Add distro "rolling" updated cache in /home/orangepi/.ros/rosdep/sources.cache |
Then open a command line terminal window on the desktop, and then use the test_ros.sh script to start a small turtle routine to test whether ROS can be used normally
After running the test_ros.sh script, a little turtle as shown in the figure below will pop up
orangepi@orangepi:~$ test_ros.sh |
- Then please keep the terminal window just opened at the top
- At this time, press the direction keys on the keyboard to control the little turtle to move up, down, left, and right
How to install ROS 2 Galactic on Ubuntu 20.04
- The current active version of ROS 2 is as follows, the recommended version is Galactic Geochelone
- The link to the official ROS 2 Galactic Geochelone installation documentation is as follows:
docs.ros.org/en/galactic/Installation.html http://docs.ros.org/en/galactic/Installation/Ubuntu-Install-Debians.html |
It is recommended to use Ubuntu20.04 in the official installation document of ROS 2 Galactic Geochelone, so please ensure that the system used by the development board is Ubuntu20.04 desktop version. There are several ways to install ROS 2. The following shows how to install ROS 2 Galactic Geochelone using Debian packages
Use the install_ros.sh script to install ros2
orangepi@orangepi:~$ install_ros.sh ros2 |
- The install_ros.sh script will automatically run the ros2 -h command after installing ros2. If you can see the following print, it means that the ros2 installation is complete
- -h, --help show this help message and exit
- action Various action related sub-commands
- bag Various rosbag related sub-commands
- component Various component related sub-commands
- daemon Various daemon related sub-commands
- doctor Check ROS setup and other potential issues
- interface Show information about ROS interfaces
- launch Run a launch file
- lifecycle Various lifecycle related sub-commands
- multicast Various multicast related sub-commands
- node Various node related sub-commands
- param Various param related sub-commands
- pkg Various package related sub-commands
- run Run a package specific executable
- security Various security related sub-commands
- service Various service related sub-commands
- topic Various topic related sub-commands
- wtf Use `wtf` as alias to `doctor`
- Call `ros2 <command> -h` for more detailed usage.
usage: ros2 [-h] Call `ros2 <command> -h` for more detailed usage. ...
|
- Then you can use the test_ros.sh script to test whether ROS 2 is installed successfully. If you can see the following print, it means that ROS 2 can run normally
orangepi@orangepi3b:~$ test_ros.sh [INFO] [1671174101.200091527] [talker]: Publishing: 'Hello World: 1' [INFO] [1671174101.235661048] [listener]: I heard: [Hello World: 1] [INFO] [1671174102.199572327] [talker]: Publishing: 'Hello World: 2' [INFO] [1671174102.204196299] [listener]: I heard: [Hello World: 2] [INFO] [1671174103.199580322] [talker]: Publishing: 'Hello World: 3' [INFO] [1671174103.204019965] [listener]: I heard: [Hello World: 3] |
- Run the following command to open rviz2
orangepi@orangepi:~$ source /opt/ros/galactic/setup.bash orangepi@orangepi:~$ ros2 run rviz2 rviz2 |
- For the usage of ROS, please refer to the documentation of ROS 2
How to install ROS 2 Humble on Ubuntu 22.04
- Use the install_ros.sh script to install ros2
orangepi@orangepi:~$ install_ros.sh ros2
- The install_ros.sh script will automatically run the ros2 -h command after installing ros2. If you can see the following print, it means that the ros2 installation is complete
- -h, --help show this help message and exit
- action Various action related sub-commands
- bag Various rosbag related sub-commands
- component Various component related sub-commands
- daemon Various daemon related sub-commands
- doctor Check ROS setup and other potential issues
- interface Show information about ROS interfaces
- launch Run a launch file
- lifecycle Various lifecycle related sub-commands
- multicast Various multicast related sub-commands
- node Various node related sub-commands
- param Various param related sub-commands
- pkg Various package related sub-commands
- run Run a package specific executable
- security Various security related sub-commands
- service Various service related sub-commands
- topic Various topic related sub-commands
- wtf Use `wtf` as alias to `doctor`
- Call `ros2 <command> -h` for more detailed usage.
usage: ros2 [-h] Call `ros2 <command> -h` for more detailed usage. ...
|
- Then you can use the test_ros.sh script to test whether ROS 2 is installed successfully. If you can see the following print, it means that ROS 2 can run normally
orangepi@orangepi3b:~$ test_ros.sh [INFO] [1671174101.200091527] [talker]: Publishing: 'Hello World: 1' [INFO] [1671174101.235661048] [listener]: I heard: [Hello World: 1] [INFO] [1671174102.199572327] [talker]: Publishing: 'Hello World: 2' [INFO] [1671174102.204196299] [listener]: I heard: [Hello World: 2] [INFO] [1671174103.199580322] [talker]: Publishing: 'Hello World: 3' [INFO] [1671174103.204019965] [listener]: I heard: [Hello World: 3] |
- Run the following command to open rviz2
orangepi@orangepi:~$ source /opt/ros/humble/setup.bash orangepi@orangepi:~$ ros2 run rviz2 rviz2 |
- Reference documents
http://docs.ros.org/en/humble/index.html http://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html |
How to install kernel header files
- The Linux image released by OPi comes with the deb package of the kernel header file by default, and the storage location is /opt/
orangepi@orangepi:~$ ls /opt/linux-headers*
/opt/linux-headers-legacy-rockchip-rk356x_x.x.x_arm64.deb
- Use the following command to install the deb package of the kernel header file
The name of the kernel header file deb package needs to be replaced with the actual name, please do not copy it. |
orangepi@orangepi:~$ sudo dpkg -i /opt/linux-headers-legacy-rockchip-rk356x_1.x.x_arm64.deb |
- After installation, you can see the folder where the kernel header files are located under /usr/src
orangepi@orangepi:~$ ls /usr/src linux-headers-5.10.160-rockchip-rk356x |
Then you can write a hello kernel module to test the kernel header file
- First write the code of the hello kernel module, as follows:
- printk("Hello Orange Pi -- init\n");
- return 0;
- printk("Hello Orange Pi -- exit\n");
- return;
orangepi@orangepi:~$ vim hello.c
#include <linux/init.h>
#include <linux/module.h>
static int hello_init(void){
}
static void hello_exit(void)
{
}
module_init(hello_init);module_exit(hello_exit);
MODULE_LICENSE("GPL");- Then write the Makefile for compiling the hello kernel module, as follows:
- make -C $(KDIR) M=$(PWD) modules
- rm -f *.ko *.o *.mod.o *.mod *.symvers *.cmd *.mod.c *.order
orangepi@orangepi:~$ vim Makefile
ifneq ($(KERNELRELEASE),)
obj-m:=hello.o
else
KDIR :=/lib/modules/$(shell uname -r)/build
PWD :=$(shell pwd)
all:
clean:
endif
- Then use the make command to compile the hello kernel module. The output of the compilation process is as follows:
- CC [M] /home/orangepi/hello.o
- MODPOST /home/orangepi/Module.symvers
- CC [M] /home/orangepi/hello.mod.o
- LD [M] /home/orangepi/hello.ko
If there is a problem with compiling the code you copied here, please go to the official tool to download the source code and upload it to the Linux system of the development board for testing.
orangepi@orangepi:~$ make
make -C /lib/modules/5.10.160-rockchip-35xx/build M=/home/orangepi modules
make[1]: Entering directory '/usr/src/linux-headers-5.10.160-rockchip-rk35xx'
make[1]: Leaving directory '/usr/src/linux-headers-5.10.160-rockchip-rk35xx'
- After compiling, the hello.ko kernel module will be generated
orangepi@orangepi:~$ ls *.ko
hello.ko
- Use the insmod command to insert the hello.ko kernel module into the kernel
orangepi@orangepi:~$ sudo insmod hello.ko
- Then use the demsg command to view the output of the hello.ko kernel module. If you can see the output below, it means that the hello.ko kernel module is loaded correctly.
orangepi@orangepi:~$ dmesg | grep "Hello"
[ 2871.893988] Hello Orange Pi -- init
- Use the rmmod command to uninstall the hello.ko kernel module
orangepi@orangepi:~$ sudo rmmod hello
orangepi@orangepi:~$ dmesg | grep "Hello"
[ 2871.893988] Hello Orange Pi -- init
[ 3173.800892] Hello Orange Pi -- exit
Use of the Raspberry PI's 5-inch screen
Assembly method of Raspberry PI 5-inch screen
First prepare the required accessories
- Then connect the 15pin MIPI cable to the Raspberry PI 5-inch screen in the way shown below (note the orientation of the insulation surface)
Open the Raspberry PI 5-inch screen configuration method
The Linux image does not open the 5-inch screen of the Raspberry PI by default. If you need to use the 5-inch screen of the Raspberry PI, you need to open it manually.
The steps to open the mipi lcd configuration are as follows:
- First run orangepi-config, ordinary users remember to add sudo permission
orangepi@orangepi:~$ sudo orangepi-config
- Then use the arrow keys on the keyboard to locate the Rasp-7inch-touchscreen, and then use the space button to check
- Then select <Reboot> to restart the system for the configuration to take effect
The above settings will eventually add the configuration of overlays=raspi-7inch-touchscreen to /boot/orangepiEnv.txt. After setting, you can check it first. If this configuration does not exist, then there is a problem with the settings.
If you find it troublesome to use orangepi-config, you can also use the vim editor to open /boot/orangepiEnv.txt, and then add the configuration of overlays=raspi-7inch-touchscreen is also possible.
orangepi@orangepi:~$ cat /boot/orangepiEnv.txt | grep "raspi"overlays=raspi-7inch-touchscreen #Sample configuration
The method of server version image rotation display direction
Add extraargs=fbcon=rotate:the direction to rotate in /boot/orangepiEnv.txt This line configuration can set the direction displayed by the server version of the Linux system, where the number after fbcon=rotate: can be set as:
0: normal screen (default is landscape)
1: Turn clockwise 90 degrees
2: Flip 180 degrees
3: Turn clockwise 270 degrees
orangepi@orangepi:~$ sudo vim /boot/orangepiEnv.txt overlays=lcd1 extraargs=cma=64M fbcon=rotate:3 |
Note that if there is the line extraargs=cma=64M in /boot/orangepiEnv.txt by default, the configuration fbcon=rotate:3 can be added after extraargs=cma=64M (separated by spaces). |
- Then restart the Linux system and you can see that the direction displayed on the LCD screen has been rotated
Method of rotating display and touch direction of desktop version image
- First open Display Settings in Linux
Then select the direction you want to rotate in Rotation
At this point, the screen display has been rotated, and then close the Display program
The above steps will only select the display direction, and will not rotate the direction of the touch. Use the set_lcd_rotate.sh script to rotate the direction of the touch. After the script is set, it will automatically restart, and then you can test whether the touch has been used normally.
- None: no rotation
orangepi@orangepi:~$ set_lcd_rotate.sh none
- Left: rotate left 90 degrees
orangepi@orangepi:~$ set_lcd_rotate.sh left
- Inverted: Flip up and down, which is equivalent to rotating 180 degrees
orangepi@orangepi:~$ set_lcd_rotate.sh inverted
- Right: rotate right 90 degrees
orangepi@orangepi:~$ set_lcd_rotate.sh right
The set_lcd_rotate.sh script mainly does four things:
1. Rotate the direction displayed by the framebuffer2. Rotate the direction of the touch
3. Turn off the boot logo
4. Restart the system
Rotating the touch direction is achieved by adding the line Option "TransformationMatrix" "x x x x x x x x x" to /usr/share/X11/xorg.conf.d/40-libinput.conf Where "x x x x x x x x x" is configured differently for different directions.
- Touch rotation reference
Instructions for using the switch logo
- By default, the switch logo will only be displayed in the desktop version of the system
- Set the bootlogo variable to false in /boot/orangepiEnv.txt to turn off the switch logo
orangepi@orangepi:~$ vim /boot/orangepiEnv.txt
verbosity=1
bootlogo=false
- Set the bootlogo variable to true in /boot/orangepiEnv.txt to enable the switch logo
orangepi@orangepi:~$ vim /boot/orangepiEnv.txt verbosity=1 bootlogo=true |
- The location of the boot logo image in the Linux system is
/usr/share/plymouth/themes/orangepi/watermark.png |
- After replacing the boot logo picture, you need to run the following command to take effect
orangepi@orangepi:~$ sudo update-initramfs -u |
How to use the ZFS file system
The latest version of Ubuntu20.04, Ubuntu22.04, Debian11 and Debian12 desktop version systems have pre-installed zfs, you can use it directly. The pre-installed zfs version in Ubuntu20.04 and Ubuntu22.04 desktop systems is 2.1.6. The pre-installed zfs version in Debian11 and Debian12 desktop systems is 2.1.11. After the system starts, please first confirm whether the zfs kernel module has been loaded. If you can see zfs-related content using the lsmod command, it means that the system has pre-installed zfs. orangepi@orangepi:~$ lsmod | grep "zfs" zfs 2801664 0 zunicode 327680 1 zfs zzstd 471040 1 zfs zlua 139264 1 zfs zcommon 69632 1 zfs znvpair 61440 2 zfs,zcommon zavl 16384 1 zfs icp 221184 1 zfs spl 77824 6 zfs,icp,zzstd,znvpair,zcommon,zavl |
How to install ZFS
Before installing zfs, please make sure that the Linux image used is the latest version. In addition, if zfs is already installed in the system, it needs to be installed again. |
Before installing zfs, you need to install the kernel header file first. For the method of installing the kernel header file, please refer to the instructions in the section on the method of installing the kernel header file.
In Ubuntu20.04, Ubuntu22.04 and Debian11 systems, zfs cannot be installed directly through apt, because the default apt source zfs version is lower than 2.1.6, and there is a problem of incompatibility with rk Linux5.10 kernel. This problem is fixed in zfs version 2.1.6 and later.
To solve this problem, we provide a zfs deb package that can be installed normally, which can be downloaded from the official tool of the development board. Open the official tool, and enter the zfs-related deb package folders used by Ubuntu and Debian systems. You can see three types of deb packages: Ubuntu20.04, Ubuntu22.04 and Debian11. Please download the required version.
After downloading the zfs deb packages of the corresponding version, please upload them to the Linux system of the development board. For the upload method, please refer to the description in the section of the method of uploading files to the Linux system of the development board.
After the upload is complete, use the cd command in the command line of the development board Linux system to enter the directory of the deb package, and then use the following command to install the deb package of zfs.
orangepi@orangepi:~$ sudo apt install ./*.deb |
After the installation is complete, use the following command to see the zfs-related kernel modules:
orangepi@orangepi:~$ ls /lib/modules/5.10.160-rockchip-rk356x/updates/dkms/ icp.ko spl.ko zavl.ko zcommon.ko zfs.ko zlua.ko znvpair.ko zunicode.ko zzstd.ko |
Then restart the Linux system to see that the zfs kernel module will be automatically loaded:
orangepi@orangepi:~$ lsmod | grep "zfs" zfs 2801664 0 zunicode 327680 1 zfs zzstd 471040 1 zfs zlua 139264 1 zfs zcommon 69632 1 zfs znvpair 61440 2 zfs,zcommon zavl 16384 1 zfs icp 221184 1 zfs spl 77824 6 zfs,icp,zzstd,znvpair,zcommon,zavl |
In Debian12, the default version of zfs is 2.1.11, so we can install zfs directly through the following command. Again, please make sure that the system has installed the deb package of the kernel header file before installation.
orangepi@orangepi:~$ sudo apt install -y zfsutils-linux zfs-dkms |
Methods of creating ZFS pools
ZFS is based on storage pools, we can add multiple physical storage devices to the pool, and then allocate storage space from this pool. The following content is demonstrated based on the development board connected to an NVMe SSD and a USB flash drive. |
- First, we can use the lsblk command to view all storage devices on the development board. The current development board is connected to an NVMe SSD and a U disk. The output is as follows:
- Then enter the following command to create a ZFS pool, including two storage devices, NVMe SSD and U disk
orangepi@orangepi:~$ sudo zpool create -f pool1 /dev/nvme0n1 /dev/sda |
- Then use the zpool list command to see that the system has created a ZFS pool named pool1, and the size of the ZFS pool pool1 is the size of the NVME SSD plus the size of the U disk
- Then execute df -h to see that pool1 is mounted to the /pool1 directory
orangepi@orangepi:~$ df -h Filesystem Size Used Avail Use% Mounted on tmpfs 1.6G 18M 1.6G 2% /run /dev/mmcblk0p2 29G 6.0G 22G 22% / tmpfs 7.7G 46M 7.7G 1% /dev/shm tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 7.7G 944K 7.7G 1% /tmp /dev/mmcblk0p1 1022M 115M 908M 12% /boot /dev/zram1 188M 4.5M 169M 3% /var/log tmpfs 1.6G 80K 1.6G 1% /run/user/1000 pool1 489G 9.3M 489G 1% /pool1 |
- Use the following command to see that the file system type of pool1 is zfs
orangepi@orangepi:~$ mount | grep pool1 pool1 on /pool1 type zfs (rw,xattr,noacl) |
- Then we can test copying a file to the ZFS pool
orangepi@orangepi:~$ sudo cp -v /usr/local/test.mp4 /pool1/ '/usr/local/test.mp4' -> '/pool1/test.mp4' |
Test the data deduplication function of ZFS
- The data deduplication function of ZFS is disabled by default, we need to execute the following command to enable it
orangepi@orangepi:~$ sudo zfs set dedup=on pool1
- Then do a simple test, first enter pool1, and then execute the following command to generate a random file with a size of 1G
orangepi@orangepi:~$ cd /pool1/ root@orangepi:/pool1$ sudo dd if=/dev/urandom of=test.1g bs=1M count=1024 1024+0 records in 1024+0 records out 1073741824 bytes (1.1 GB, 1.0 GiB) copied, 5.04367 s, 213 MB/s |
- Then use the following command to copy 1000 random files of size 1G
root@orangepi:/pool1$ for ((i=0; i<1000; i++)); do sudo cp test.1g $i.test.1g; done |
- Then use du -lh to see that there are currently 1002G of data in the pool, but in fact the size of the ZFS pool is only 504GB (the total capacity of SSD+U disk), which cannot hold such a large amount of data
root@orangepi:/pool1$ du -lh 1002G |
- Then use the zpool list command to see that only 1.01G is actually occupied, because these 1001 files are all duplicates, indicating that the data deduplication function is effective.
Test the data compression function of ZFS
- Because the stored data is different, the disk space saved by compression will also be different, so we choose to compress relatively large plain text files for compression testing, and execute the following commands to pack the /var/log/ and /etc/ directories into a tarball
orangepi@orangepi:~$ cd /pool1/
root@orangepi:/pool1$ sudo tar -cf text.tar /var/log/ /etc/
- Then the file size that can be seen through the ls -lh command and the space occupied in the ZFS pool are both 27M
- Then we enable compression in the ZFS pool pool1
root@orangepi:/pool1$ sudo zfs set compression=lz4 pool1 |
- Then execute the following command again to package the /var/log/ and /etc/ directories into a tar package
root@orangepi:/pool1$ sudo tar -cf text.tar /var/log/ /etc/ |
- At this time, you can see that the size of the text.tar file is still 27M, but it only occupies 9.47M in the ZFS pool, indicating that the file is compressed
How to shut down and restart the development board
- During the running of the Linux system, if the Type-C power supply is directly unplugged, some data may be lost or damaged in the file system, so please use the poweroff command to shut down the Linux system of the development board before powering off. Then unplug the power again.
orangepi@orangepi:~$ sudo poweroff
- In addition, the development board is equipped with a switch button, and you can also short press the switch button on the development board to shut down.
Note that the Linux desktop version system will pop up a confirmation box as shown in the figure below after pressing the switch button, and the system will shut down only after clicking the Shut Down option. |
- The command to restart the Linux system is
orangepi@orangepi:~$ sudo reboot |
Linux SDK——orangepi-build instructions
Compilation system requirements
We can cross-compile the Linux image of the development board on the x64 computer, or compile the Linux image of the development board on the Ubuntu22.04 system of the development board, please choose one according to your preference.
|
Compile with the Ubuntu22.04 system of the development board
- The Linux SDK, namely orangepi-build, supports running on the Ubuntu 22.04 of the development board (other systems have not been tested), so before downloading orangepi-build, please first ensure that the Ubuntu version installed on the development board is Ubuntu 22.04. The command to check the Ubuntu version installed on the development board is as follows. If the Release field does not display 22.04, it means that the current Ubuntu version does not meet the requirements. Please replace the system before performing the following operations.
orangepi@orangepi:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.1 LTS
Release: 22.04
Codename: jammy
- Since the source codes such as the kernel and U-boot are stored on GitHub, it is very important to ensure that the development board can download codes from GitHub normally when compiling the image.
Compile with x64 Ubuntu22.04 computer
- The Linux SDK, orangepi-build, supports running on computers with Ubuntu 22.04 installed, so before downloading orangepi-build, please make sure that the Ubuntu version installed on your computer is Ubuntu 22.04. The command to check the Ubuntu version installed on the computer is as follows. If the Release field does not display 22.04, it means that the current Ubuntu version does not meet the requirements. Please replace the system before performing the following operations.
test@test:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04 LTS
Release: 22.04
Codename: jammy
If the computer is installed with Windows system and there is no computer with Ubuntu 22.04 installed, you can consider using VirtualBox or VMware to install an Ubuntu 22.04 virtual machine in the Windows system. But please be careful not to compile orangepi-build on the WSL virtual machine, because orangepi-build has not been tested in the WSL virtual machine, so it cannot be guaranteed that orangepi-build can be used normally in WSL.
The download address of the installation image of Ubuntu 22.04 amd64 version is:
https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/22.04/ubuntu-22.04-desktop-amd64.iso Or https://repo.huaweicloud.com/ubuntu-releases/22.04/ubuntu-22.04.1-desktop-amd64.iso |
After installing Ubuntu 22.04 on the computer or virtual machine, please set the software source of Ubuntu 22.04 to Tsinghua source, otherwise it is easy to make mistakes due to network reasons when installing the software later
- For the method of replacing Tsinghua source, please refer to the instructions on this web page
- The content of the /etc/apt/sources.list file that needs to be replaced is
test@test:~$ sudo mv /etc/apt/sources.list /etc/apt/sources.list.bak
test@test:~$ sudo vim /etc/apt/sources.list
# By default, the source image is commented to improve the speed of apt update, you can uncomment it yourself if necessary
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
# Pre-release software source, not recommended to enable
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
- After the replacement, you need to update the package information and make sure there is no error
test@test:~$ sudo apt update
- In addition, since the source codes such as the kernel and U-boot are stored on GitHub, it is very important to ensure that the computer can download codes from GitHub normally when compiling the image.
Get the source code of Linux sdk
Download orangepi-build from github
- The Linux sdk actually refers to the code of orangepi-build. orangepi-build is modified based on the armbian build system. Using orangepi-build, multiple versions of Linux images can be compiled. First download the code of orangepi-build, the command is as follows:
test@test:~$ sudo apt-get update
test@test:~$ sudo apt-get install -y git
test@test:~$ git clone https://github.com/orangepi-xunlong/orangepi-build.git -b next
Note that the Orange Pi 3B development board needs to download the source code of the next branch of orangepi-build. The above git clone command needs to specify the branch of the orangepi-build source code as next.
Downloading the orangepi-build code through the git clone command does not require entering the user name and password of the github account (the same is true for downloading other codes in this manual), if the Ubuntu PC prompts the user to enter the github account after entering the git clone command The name and password are usually entered incorrectly in the address of the orangepi-build warehouse behind the git clone. Please check the spelling of the command carefully, instead of thinking that we forgot to provide the username and password of the github account.
- The u-boot and Linux kernel versions currently used by the development board are as follows
branch | u-boot version | Linux Kernel version |
legacy | u-boot 2017.09 | Linux5.10 |
The branch mentioned here is not the same thing as the branch of the orangepi-build source code, please do not confuse it. This branch is mainly used to distinguish different kernel source code versions. Currently, the Linux5.10 bsp kernel provided by RK is defined as the legacy branch. If the mainline kernel is supported in the future, a current branch will be added. |
orangepi-build will contain the following files and folders after downloading
build.sh: Compile the startup script
external: Contains the configuration files needed to compile the image, specific scripts, and the source code of some programs, etc.
LICENSE: GPL 2 license file
README.md: orangepi-build documentation
scripts: General script for compiling Linux images
test@test:~/orangepi-build$ ls
build.sh external LICENSE README.md scripts
If you downloaded the code of orangepi-build from github, after downloading, you may find that orangepi-build does not contain the source code of u-boot and Linux kernel, nor does u-boot and Linux kernel need to use cross-compilation tools Chain, this is normal, because these things are stored in other separate github warehouses or some servers (the addresses will be detailed below). orangepi-build will specify the address of u-boot, Linux kernel and cross-compilation toolchain in the script and configuration file. When running orangepi-build, when it finds that there are no such things locally, it will automatically go to the corresponding place to download them.
Download the cross-compilation toolchain
The cross-compilation toolchain will only be downloaded when the orangepi-build compilation image is used on an x64 computer. Compiling the Linux image of the development board in the Ubuntu22.04 of the development board will not download the cross-compilation toolchain. At this time, orangepi-build/toolchains will be an empty folder. |
- When orangepi-build runs for the first time, it will automatically download the cross-compilation toolchain and put it in the toolchains folder. Every time after running the build.sh script of orangepi-build, it will check whether the cross-compilation toolchain in toolchains exists , if it does not exist, the download will be restarted, if it exists, it will be used directly, and the download will not be repeated.
- The image URL of the cross-compilation toolchain in China is the open source software image site of Tsinghua University
https://mirrors.tuna.tsinghua.edu.cn/armbian-releases/_toolchain/ |
- After toolchains is downloaded, it will contain multiple versions of cross-compilation toolchains, and the development board will only use two of them
test@test:~/orangepi-build$ ls toolchains/ gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu gcc-arm-11.2-2022.02-x86_64-arm-none-linux-gnueabihf gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabihf gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabihf gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabi gcc-linaro-aarch64-none-elf-4.8-2013.11_linux gcc-linaro-arm-linux-gnueabihf-4.8-2014.04_linux gcc-linaro-arm-none-eabi-4.8-2014.04_linux |
The cross-compilation toolchain used to compile the Linux kernel source code is
- Linux5.10
gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu
The cross-compilation tool chain used to compile the u-boot source code is
- v2017.09
gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu
orangepi-build complete directory structure description
The orangepi-build repository does not contain the source code of the Linux kernel, u-boot, and cross-compilation toolchain after downloading. The source code of the Linux kernel and u-boot is stored in an independent git repository
- The git repository where the Linux kernel source code is stored is as follows:
https://github.com/orangepi-xunlong/linux-orangepi/tree/orange-pi-5.10-rk35xx
- The git warehouse where the b.u-boot source code is stored is as follows:
https://github.com/orangepi-xunlong/u-boot-orangepi/tree/v2017.09-rk3588
When orangepi-build runs for the first time, it will download the cross-compilation toolchain, u-boot and Linux kernel source code. After successfully compiling a Linux image, the files and folders that can be seen in orangepi-build are:
a. build.sh: compile startup script
b. external: Contains the configuration files needed to compile the image, scripts with specific functions, and the source code of some programs. The rootfs compressed package cached during the image compilation process is also stored in external
c. kernel: stores the source code of the Linux kernel, and the folder named orange-pi-5.10-rk35xx stores the kernel source code of the legacy branch of the RK3588/RK3588S/RK3566 series development boards. Please do not manually name the folder name of the kernel source code Modify, if modified, the kernel source code will be re-downloaded when the compilation system is running
d. LICENSE: GPL 2 license file
e. README.md: orangepi-build documentation
f. output: Store compiled deb packages such as u-boot and Linux, compilation logs, and compiled images and other files
g. scripts: general scripts for compiling Linux images
h. toolchains: store cross-compilation toolchain
i. u-boot: stores the source code of u-boot, the folder named v2017.09-rk3588 stores the u-boot source code of the legacy branch of the RK3588/RK3588S/RK3566 series development boards, the name of the folder of the u-boot source code Please do not modify it manually, if it is modified, the u-boot source code will be re-downloaded when the compiling system is running
j. userpatches: Store configuration files needed to compile scripts
test@test:~/orangepi-build$ ls
build.sh external kernel LICENSE output README.md scripts toolchains u-boot userpatches
Compile u-boot
- Run the build.sh script, remember to add sudo permission
test@test:~/orangepi-build$ sudo ./build.sh
- Select U-boot package, then enter
- Then select the model of the development board
Then it will start to compile u-boot, and some information prompted during compilation is explained as follows
- u-boot source code version
[ o.k. ] Compiling u-boot [ v2017.09 ]
- The version of the cross-compilation toolchain
[ o.k. ] Compiler version [ aarch64-linux-gnu-gcc 7.4.1 ]
- Path to the generated u-boot deb package
[ o.k. ] Target directory [ orangepi-build/output/debs/u-boot ]
- The package name of the generated u-boot deb package
[ o.k. ] File name [ linux-u-boot-legacy-orangepi3b_1.0.0_arm64.deb ]
- Compilation time
[ o.k. ] Runtime [ 1 min ]
- Repeat the command to compile u-boot, use the following command to start compiling u-boot directly without selecting through the graphical interface
[ o.k. ] Repeat Build Options [ sudo ./build.sh BOARD=orangepi3b BRANCH=legacy BUILD_OPT=u-boot KERNEL_CONFIGURE=no ]
- View the u-boot deb package generated by compilation
test@test:~/orangepi-build$ ls output/debs/u-boot/ linux-u-boot-legacy-orangepi3b_1.0.0_arm64.deb |
The files contained in the generated u-boot deb package are as follows
- Use the following command to decompress the deb package
test@test:~/orangepi-build$ cd output/debs/u-boot
test@test:~/orangepi_build/output/debs/u-boot$ $ dpkg -x \
linux-u-boot-legacy-orangepi3b_1.0.0_arm64.deb . (Note that there is a "." at the end of the command)
test@test:~/orangepi_build/output/debs/u-boot$ ls
linux-u-boot-legacy-orangepi3b_1.0.0_arm64.deb usr
- The decompressed file is as follows
- ├── linux-u-boot-legacy-orangepi3b_1.0.0_arm64
- │ ├── idbloader.img
- │ ├── rkspi_loader.img
- │ └── u-boot.itb
- └── u-boot
- ├── LICENSE
- ├── orangepi-3b-rk3566_defconfig
- └── platform_install.sh
test@test:~/orangepi-build/output/debs/u-boot$ tree usr
usr
└── lib
3 directories, 6 files
- When the orangepi-bulid compilation system compiles the u-boot source code, it will first synchronize the u-boot source code with the u-boot source code of the github server, so if you want to modify the u-boot source code, you first need to turn off the download and update function of the source code (This function needs to be fully compiled once u-boot, otherwise it will prompt that the source code of u-boot cannot be found. If the source code compressed package is downloaded from Google cloud disk, there is no such problem, because the source code of u-boot have been cached), otherwise the changes made will be reverted, the method is as follows:
Set the IGNORE_UPDATES variable in userpatches/config-default.conf to "yes"
test@test:~/orangepi-build$ vim userpatches/config-default.conf IGNORE_UPDATES="yes" |
When debugging u-boot code, you can use the following method to update u-boot in the Linux image for testing
- Upload the compiled u-boot deb package to the Linux system of the development board
test@test:~/orangepi-build$ cd output/debs/u-boot
test@test:~/orangepi_build/output/debs/u-boot$ scp \
linux-u-boot-legacy-orangepi3b_1.0.0_arm64.deb root@192.168.1.xxx:/root
- Then log in to the development board and uninstall the deb package of u-boot installed
root@orangepi:~# apt purge -y linux-u-boot-orangepi3b-legacy
- Install the new u-boot deb package just uploaded
root@orangepi:~# dpkg -i linux-u-boot-legacy-orangepi3b_1.0.0_arm64.deb
- Then run the nand-sata-install script
root@orangepi:~# nand-sata-install
- Then select 5 Install/Update the bootloader on SD/eMM to update the u-boot in the TF card or 7 Install/Update the bootloader on SPI Flash to update the u-boot in the SPI Flash
- Press the Enter key again to start updating u-boot, and the following information will be displayed after the update is completed
- Then you can restart the development board to test whether the modification of u-boot takes effect
Other useful information
- In the u-boot 2017.09 source code, the defconfig configuration file used by the development board is
orangepi-build/u-boot/v2017.09-rk3588/configs/orangepi-3b-rk3566_defconfig
- In the u-boot 2017.09 source code, the dts file used by the development board is
orangepi-build/u-boot/v2017.09-rk3588/arch/arm/dts/rk3566-orangepi-3b.dts
Compile the Linux kernel
- Run the build.sh script, remember to add sudo permission
test@test:~/orangepi-build$ sudo ./build.sh
- Select Kernel package, then enter
- Then select the model of the development board
- Then it will prompt whether to display the kernel configuration interface. If you do not need to modify the kernel configuration, select the first one. If you need to modify the kernel configuration, select the second one.
- If you choose to display the kernel configuration menu (the second option) in step 4), the kernel configuration interface opened by make menuconfig will pop up. At this time, you can directly modify the kernel configuration, save and exit after modification. Yes, after exiting, the kernel source code will be compiled
- If you do not need to modify the configuration options of the kernel, when running the build.sh script, pass in KERNEL_CONFIGURE=no to temporarily block the pop-up kernel configuration interface
You can also set KERNEL_CONFIGURE=no in the orangepi-build/userpatches/config-default.conf configuration file, which can permanently disable this function
If the following error is displayed when compiling the kernel, it is because the terminal interface of the Ubuntu PC is too small to display the make menuconfig interface. Please maximize the terminal of the Ubuntu PC and run the build.sh script again
test@test:~/orangepi-build$ sudo ./build.sh KERNEL_CONFIGURE=no |
Part of the information prompted when compiling the kernel source code is as follows
- The version of the Linux kernel source code
[ o.k. ] Compiling current kernel [ 5.10.160 ]
- The version of the cross-compilation toolchain used
[ o.k. ] Compiler version [ aarch64-none-linux-gnu-gcc 11.2.1 ]
- The configuration file used by the kernel by default and the path where it is stored
[ o.k. ] Using kernel config file [ config/kernel/linux-rockchip-rk356x-legacy.config ]
- The path of the deb package related to the kernel generated by compiling
[ o.k. ] Target directory [ orangepi-build/output/debs/ ]
- The package name of the compiled kernel image deb package
[ o.k. ] File name [ linux-image-legacy-rockchip-rk356x_1.0.0_arm64.deb ]
- The time used for compilation
[ o.k. ] Runtime [ 5 min ]
- Finally, the compilation command to repeatedly compile the kernel selected last time will be displayed. Use the following command to start compiling the kernel source code directly without selecting through the graphical interface
[ o.k. ] Repeat Build Options [ sudo ./build.sh BOARD=orangepi3b BRANCH=legacy BUILD_OPT=kernel KERNEL_CONFIGURE=no ]
View the deb package related to the kernel generated by compilation
linux-dtb-legacy-rockchip-rk356x_1.0.0_arm64.deb Contains dtb files used by the kernel
linux-headers-legacy-rockchip-rk356x_1.0.0_arm64.deb Include kernel header files
linux-image-legacy-rockchip-rk356x_1.0.0_arm64.deb Contains kernel images and kernel modules
test@test:~/orangepi-build$ ls output/debs/linux-*
output/debs/linux-dtb-legacy-rockchip-rk356x_1.0.0_arm64.deb output/debs/linux-image-legacy-rockchip-rk356x_1.0.0_arm64.deb
output/debs/linux-headers-legacy-rockchip-rk356x_1.0.0_arm64.deb
The files contained in the generated Linux-image deb package are as follows
- Use the following command to decompress the deb package
test@test:~/orangepi-build$ cd output/debs
test@test:~/orangepi_build/output/debs$ mkdir test
test@test:~/orangepi_build/output/debs$ cp \
linux-image-legacy-rockchip-rk356x_1.0.0_arm64.deb test/
test@test:~/orangepi_build/output/debs$ cd test
test@test:~/orangepi_build/output/debs/test$ dpkg -x \
linux-image-legacy-rockchip-rk356x_1.0.0_arm64.deb .
test@test:~/orangepi_build/output/debs/test$ ls
boot etc lib linux-image-legacy-rockchip-rk356x_1.0.0_arm64.deb usr
- The decompressed file is as follows
- ├── lib
- └── share
test@test:~/orangepi-build/output/debs/test$ tree -L 2
.
├── boot
│ ├── config-5.10.160-rockchip-rk356x
│ ├── System.map-5.10.160-rockchip-rk356x
│ └── vmlinuz-5.10.160-rockchip-rk356x
├── etc
│ └── kernel
├── lib
│ └── modules
├── linux-image-legacy-rockchip-rk356x_1.0.0_arm64.deb
└── usr
- The orangepi-bulid compilation system will first synchronize the Linux kernel source code with the Linux kernel source code of the github server when compiling the Linux kernel source code, so if you want to modify the Linux kernel source code, you first need to turn off the update function of the source code (you need to compile it once This function can only be turned off after the Linux kernel source code, otherwise it will prompt that the source code of the Linux kernel cannot be found. If the source code compressed package downloaded from Google cloud disk, there is no such problem, because the source code of Linux has been cached), otherwise the The changes made will be reverted as follows:
Set the IGNORE_UPDATES variable in userpatches/config-default.conf to "yes"
test@test:~/orangepi-build$ vim userpatches/config-default.conf IGNORE_UPDATES="yes" |
If the kernel has been modified, the following method can be used to update the kernel and kernel modules of the development board Linux system
- Upload the deb package of the compiled Linux kernel to the Linux system of the development board
test@test:~/orangepi-build$ cd output/debs
test@test:~/orangepi-build/output/debs$ scp \
linux-image-legacy-rockchip-rk356x_1.0.0_arm64.deb root@192.168.1.xxx:/root
- Then log in to the development board and uninstall the deb package of the installed Linux kernel
root@orangepi:~# apt purge -y linux-image-legacy-rockchip-rk356x
- Install the deb package of the new Linux kernel just uploaded
root@orangepi:~# dpkg -i linux-image-legacy-rockchip-rk356x_1.0.0_arm64.deb
- Then restart the development board, and then check whether the kernel-related modifications have taken effect
root@orangepi:~# reboot
Other useful information
- The storage location of the kernel configuration file is as follows, please do not go to the kernel source code to find the kernel configuration file used by the development board
orangepi-build/external/config/kernel/linux-rockchip-rk356x-legacy.config
- The location of the dts file used by the development board is
orangepi-build/kernel/orange-pi-5.10-rk35xx/arch/arm64/boot/dts/rockchip/rk3566-orangepi-3b.dts
Compile rootfs
- Run the build.sh script, remember to add sudo permission
test@test:~/orangepi-build$ sudo ./build.sh
- Select Rootfs and all deb packages, then enter
- Then select the model of the development board
Then select the type of image
Image with console interface (server) Indicates the image of the server version, which is relatively small
Image with desktop environment Indicates a image with a desktop, which is relatively large
- If you are compiling the image of the server version, you can also choose to compile the Standard version or the Minimal version. The pre-installed software of the Minimal version will be much less than that of the Standard version (please do not choose the Minimal version if there is no special requirement, because many things are not pre-installed by default. Some functions may not be available)
- If you are compiling the image of the desktop version, you also need to select the type of desktop environment. Currently, Ubuntu Jammy mainly maintains XFCE and Gnome desktops, Ubuntu Focal only maintains XFCE desktops, and Debian Bullseye mainly maintains XFCE and KDE desktops
You can then select additional packages that need to be installed. Please press the Enter key to skip directly here.
Then it will start to compile rootfs, and some of the information prompted during compilation are as follows
- The type of rootfs
[ o.k. ] local not found [ Creating new rootfs cache for jammy]
- The storage path of the compiled rootfs compressed package
[ o.k. ] Target directory [ external/cache/rootfs ]
- The name of the rootfs compressed package generated by compilation
[ o.k. ] File name [ jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4 ]
- The time used for compilation
[ o.k. ] Runtime [ 13 min ]
View the rootfs compressed package generated by compilation
jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4 is the rootfs compressed package, the meaning of each field of the name is
a) jammy indicates the type of Linux distribution of rootfs
b) xfce means rootfs is the type of desktop version, if it is cli, it means the type of server version
c) arm64 represents the architecture type of rootfs
d) f930ff6ebbac1a72108a2e100762b18f is the MD5 hash value generated by the package names of all software packages installed by rootfs. As long as the list of software packages installed by rootfs is not modified, this value will not change. The compilation script will use this MD5 hash value to generate Determine whether rootfs needs to be recompiled
jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4.list lists the package names of all packages installed by rootfs
test@test:~/orangepi-build$ ls external/cache/rootfs/
jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4
jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4.current
jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4.list
- If the required rootfs already exists under external/cache/rootfs, then compiling rootfs again will directly skip the compilation process and will not restart the compilation. When compiling the image, it will also go to external/cache/rootfs to find out whether it has If there is rootfs available in the cache, use it directly, which can save a lot of download and compilation time.
Compile Linux image
- Run the build.sh script, remember to add sudo permission
test@test:~/orangepi-build$ sudo ./build.sh
- Select Full OS image for flashing, then enter
- Then select the model of the development board
Then select the type of image
Image with console interface (server) Indicates the image of the server version, which is relatively small
Image with desktop environment Indicates a image with a desktop, which is relatively large
- If you are compiling the image of the server version, you can also choose to compile the Standard version or the Minimal version. The pre-installed software of the Minimal version will be much less than that of the Standard version (please do not choose the Minimal version if there is no special requirement, because many things are not pre-installed by default. Some functions may not be available)
- If you are compiling the image of the desktop version, you also need to select the type of desktop environment. Currently, Ubuntu Jammy mainly maintains XFCE and Gnome desktops, Ubuntu Focal only maintains XFCE desktops, and Debian Bullseye mainly maintains XFCE and KDE desktops
You can then select additional packages that need to be installed. Please press the Enter key to skip directly here.
Then it will start to compile the Linux image. The general process of compilation is as follows
Initialize the compilation environment of Ubuntu PC and install the software packages required for the compilation process
Download the source code of u-boot and Linux kernel (if cached, only update the code)
Compile u-boot source code and generate u-boot deb package
Compile the Linux source code and generate Linux-related deb packages
Make the deb package of Linux firmware
Make the deb package of the orangepi-config tool
Create a deb package supported by the board
If you are compiling the desktop image, you will also create desktop-related deb packages
Check whether the rootfs has been cached, if not, recreate the rootfs, if it has been cached, directly decompress and use
Install the previously generated deb package into rootfs
Make some specific settings for different development boards and different types of images, such as pre-installing additional software packages, modifying system configuration, etc.
Then make an image file and format the partition, the default type is ext4
Then copy the configured rootfs to the mirrored partition
Then update initramfs
Finally, write the bin file of u-boot into the image through the dd command
After compiling the image, the following information will be prompted
- The storage path of the compiled image
[ o.k. ] Done building [ output/images/Orangepi3b_1.0.0_debian_bullseye_desktop_xfce_linux5.10.160/Orangepi3b_1.0.0_debian_bullseye_desktop_xfce_linux5.10.160.img ]
- Compilation time
[ o.k. ] Runtime [ 19 min ]
- Repeat the command to compile the image, and use the following command to start compiling the image directly without selecting through the graphical interface
[ o.k. ] Repeat Build Options [ sudo ./build.sh BOARD=orangepi3b BRANCH=legacy BUILD_OPT=image RELEASE=bullseye BUILD_MINIMAL=no BUILD_DESKTOP=no KERNEL_CONFIGURE=yes ]
Android 11 operating system instructions
Supported Android versions
Android version | Kernel version |
Android 11 | Linux4.19 |
Android Function Adaptation
Functions | Android 11 |
USB2.0x3 | OK |
USB3.0x1 | OK |
M.2 NVMe SSD boot | OK |
WIFI | OK |
Bluetooth | OK |
GPIO(40pin) | OK |
UART(40pin) | OK |
SPI(40pin) | OK |
I2C(40pin) | OK |
PWM(40pin) | OK |
PWM fan interface | OK |
3pin Debugging serial port | OK |
EMMC | OK |
TF card boot | OK |
HDMI video | OK |
HDMI Audio | OK |
LCD | OK |
eDP display | OK |
Gigabit network port | OK |
Network port status indicator | OK |
Headphone playback | OK |
Headphone recording | OK |
LED Light | OK |
GPU | OK |
NPU | OK |
VPU | OK |
RTC | OK |
WIFI connection test method
- First click enter Setting
- Then select the Wi-Fi you want to connect to, and the password input interface shown in the figure below will pop up
- Then use the keyboard to enter the password corresponding to Wi-Fi, and then use the mouse to click the Enter button in the virtual keyboard to start connecting to Wi-Fi
How to use Wi-Fi hotspot
- First, please make sure that the Ethernet port is connected to the network cable and can access the Internet normally
- Then select Settings
- Then turn on the Wi-Fi hotspot, you can also see the name and password of the generated hotspot in the figure below, remember them, and use them when connecting to the hotspot (if you need to modify the name and password of the hotspot, you need to turn off the Wi-Fi first -Fi hotspot before modification)
- At this time, you can take out your mobile phone. If everything is normal, you can find the WIFI hotspot with the same name (here AndroidAP_6953) displayed under the Hotspot name in the above picture in the WI-FI list searched by the mobile phone. Then you can click AndroidAP_6953 to connect to the hotspot, and the password can be seen under the Hotspot password in the above picture
- After the connection is successful, it will be displayed as shown in the figure below (the interface of different mobile phones will be different, the specific interface is subject to the display of your mobile phone). At this point, you can open a webpage on your mobile phone to see if you can access the Internet. If you can open the webpage normally, it means that the WI-FI Hotspot of the development board can be used normally.
Bluetooth test method
- First click enter Setting
- Then click Pair new device to turn on Bluetooth and start scanning the surrounding Bluetooth devices
- Then click the Bluetooth device you want to connect to start pairing. When the following interface pops up, please use the mouse to select the Pair option
- The test here is the configuration process of the development board and the Bluetooth of the Android mobile phone. At this time, the following confirmation interface will pop up on the mobile phone. After clicking the pairing button on the mobile phone, the pairing process will start
- After the pairing is completed, you can see the paired Bluetooth device as shown in the figure below
- At this time, you can use the Bluetooth of your mobile phone to send a picture to the development board. After sending, you can see the following confirmation interface in the Android system of the development board, and then click Accept to start receiving the picture sent by the mobile phone.
- You can open the Download directory in the file manager to view the pictures received by the Android system Bluetooth of the development board
How to use Raspberry Pi 5-inch screen
Please make sure that the image used is the following two versions of the image: OrangePi3B_RK3566_Android11_lcd_v1.x.x.img OrangePi3B_RK3566_Android11_spi-nvme_lcd_v1.x.x.img |
- The screen needs to be assembled first, please refer to the assembly method of the Raspberry Pi 5-inch screen
- Connect the Type-C power supply to the board and power it on. After the system starts, you can see the screen display as shown in the figure below
40pin interface GPIO, UART, SPI and PWM test
40pin GPIO port test
- First click on the wiringOP icon to open the wiringOP APP
- The main interface of wiringOP APP is displayed as shown in the figure below, and then click the GPIO_TEST button to open the GPIO test interface
- The GPIO test interface is shown in the figure below. The two rows of CheckBox buttons on the left are in one-to-one correspondence with the 40pin pins. When the CheckBox button is checked, the corresponding GPIO pin will be set to OUT mode, and the pin level will be set to high level; when the checkbox is unchecked, the GPIO pin level will be set to low level; When the GPIO READALL button is pressed, information such as wPi number, GPIO mode, and pin level can be obtained; when the BLINK ALL GPIO button is clicked, the program will control the 28 GPIO ports to continuously switch between high and low levels
- There are a total of 28 GPIO ports in the 40pins of the development board that can be used. The following uses pin 7—the corresponding GPIO is GPIO4_A4—the corresponding wPi serial number is 2—as an example to demonstrate how to set the high and low levels of the GPIO port. First click the CheckBox button corresponding to pin 7. When the button is selected, pin 7 will be set to high level. After setting, you can use a multimeter to measure the voltage value of the pin. If it is 3.3v, it means setting high level success
- Then click the GPIO READALL button, you can see that the current pin 7 mode is OUT, and the pin level is high
- Click the CheckBox button in the figure below again to cancel the check status. Pin 7 will be set to low level. After setting, you can use a multimeter to measure the voltage value of the pin. If it is 0v, it means that the low level is set successfully.
- Then click the GPIO READALL button, you can see that the current pin 7 mode is OUT, and the pin level is low
40pin UART test
- UART7 and UART9 are enabled by default in Android. The position of the 40pin is shown in the figure below, and the corresponding device nodes are /dev/ttyS7 and /dev/ttyS9 respectively
- The main interface of wiringOP APP is displayed as shown in the figure below, and then click the UART_TEST button to open the UART test interface
- Take the test of UART7 as an example below, select the /dev/ttyS7 node in the selection box, enter the baud rate you want to set in the edit box, and then click the OPEN button to open the /dev/ttyS7 node. After the opening is successful, the OPEN button becomes unselectable, and the CLOSE button and SEND button become selectable
- Then you can enter a character in the send edit box below, and click the SEND button to start sending
40pin SPI test
- According to the schematic diagram of the 40pin interface, the spi available for Orange Pi 3B is spi3
- Here, the SPI interface is tested through the w25q64 module. First, the w25q64 device is connected to the SPI3 interface
- The main interface of wiringOP APP is displayed as shown in the figure below, click the SPI_TEST button to open the SPI test interface
- Then fill in the bytes that need to be sent, such as reading the ID information of w25q64, fill in the address 0x9f in data[0], and then click the TRANSFER button
- The MANUFACTURER ID of the w25q64 module is EFh, and the Device ID is 4017h, corresponding to the value read above (h stands for hexadecimal)
40pin PWM test
- Android enables PWM11 by default, and the corresponding pin is located at 40pin as shown in the figure below
- The base address corresponding to PWM11 is fe6f0030, here pwmchip0 shows fdd70020.pwm on the right, then you need to click the drop-down option to select other pwmchips until febf0030.pwm is displayed on the right
- When the drop-down option selects pwmchip3, the corresponding base address of PWM11 is fe6f0030 on the right
- Then confirm the PWM channel, the default is channel 0, and confirm the PWM cycle, the default configuration is 50000ns, converted to PWM frequency is 20KHz, you can modify it yourself, click the EXPORT button to export PWM11
- Then drag the drag bar below to change the PWM duty cycle, and then check Enable to output the PWM waveform
- Then use an oscilloscope to measure the No. 32 pin in the 40pin of the development board, and you can see the following waveform
How to use ADB
Use network connection adb debugging
Using the network adb does not require a data cable to connect the computer and the development board, but to communicate through the network, so first make sure that the wired or wireless network of the development board is connected, and then obtain the IP address of the development board, which will be used later. |
- Make sure that the service.adb.tcp.port of the Android system is set to port number 5555
console:/ # getprop | grep "adb.tcp"
[service.adb.tcp.port]: [5555]
- If service.adb.tcp.port is not set, you can use the following command to set the port number of network adb
console:/ # setprop service.adb.tcp.port 5555 console:/ # stop adbd console:/ # start adbd |
- Install adb tool on Ubuntu PC
test@test:~$ sudo apt update test@test:~$ sudo apt install -y adb |
- Then connect network adb on Ubuntu PC
test@test:~$ adb connect 192.168.1.xxx (The IP address needs to be changed to the IP address of the development board) * daemon not running; starting now at tcp:5037 * daemon started successfully connected to 192.168.1.xxx:5555
List of devices attached 192.168.1.xxx:5555 device |
- Then you can log in to the android system through the adb shell on the Ubuntu PC
test@test:~$ adb shell console:/ # |
Appendix
User Manual Update History
Version |
Date |
Update Notes |
v0.1 |
2023-07-19 |
initial version |
Image Update History
Date |
Update Notes |
2023-07-19 |
Orangepi3b_1.0.0_debian_bullseye_desktop_xfce_linux5.10.160.7z Orangepi3b_1.0.0_ubuntu_jammy_desktop_xfce_linux5.10.160.7z Orangepi3b_1.0.0_ubuntu_focal_desktop_xfce_linux5.10.160.7z OrangePi3B_RK3566_Android11_v1.0.0.tar.gz OrangePi3B_RK3566_Android11_lcd_v1.0.0.tar.gz OrangePi3B_RK3566_Android11_spi-nvme_v1.0.0.tar.gz OrangePi3B_RK3566_Android11_lcd_spi-nvme_v1.0.0.tar.gz
* initial version |