Open main menu

Wiki-Orange Pi β

Changes

Orange Pi 3B

32,434 bytes added, 09:06, 24 August 2023
Interface details of Orange Pi 3B
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, open source Hongmeng OpenHarmony 4.0 Beta1, Orange Pi OS (Arch), Orange Pi OS (OH) based on open source Hongmeng OpenHarmony and other operating systems.
<span id="purpose-of-orange-pi-3b"></span>
 
== Purpose of Orange Pi 3B ==
* Android game console, etc.
{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''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.'''</big>|}
<span id="hardware-features-of-orange-pi-3b"></span>
 
== Hardware Features of Orange Pi 3B ==
{| class="wikitable" style="width:800px;text-align:center;"
|-
|colspan=2|
<div style="text-align:center"><big>'''Introduction to hardware features'''</big></div>
|-
| style="width: 200px" | Master chip
|
Rockchip RK3566
| GPU
|
·ARM • ARM Mali G52 2EE graphics processor
·Support • Support OpenGL ES 1.1/2.0/3.2, OpenCL 2.0, Vulkan 1.1
·Embedded • Embedded high-performance 2D acceleration hardware
|-
| NPU
|
·Integrated • Integrated RKNN NPU AI accelerator, 0.8Tops@INT8 performance
·Supports • Supports one-click conversion of C affeCaffe/TensorFlow/TFLite/ONNX/PyTorch/Keras/Darknet architecture models
|-
| VPU
|
·4K• 4K@60fps H.265/H.264/VP9 video decoding
·1080P• 1080P@100fps H.265 video encoding
·1080P• 1080P@60fps H.264 video encoding
|-
| storage
|
·Support • Support eMMC module: 16GB/32GB/64GB/128GB/256GB
·SPI • SPI Flash: 16MB/32MB
·M• M.2 M-KEY slot: SATA3 or PCIe2.0 NVME SSD
·TF • TF card slot
|-
| Wi-Fi+Bluetooth
|
Wi-Fi 5+BT 5.0,BLE(20U5622)0, BLE(20U5622)
|-
| ethernet transceiver
| show
|
·1x • 1x HDMI TX 2.0, maximum support 4K@60FPS
·1xMIPI • 1xMIPI DSI 2 Lane
·eDP1• eDP1.3
|-
| USB
|
·1xUSB • 1xUSB 2.0 supports Device or HOST mode
·1xUSB • 1xUSB 3.0 HOST
·2xUSB • 2xUSB 2.0 HOST
|-
| Supported OS
|
Android11, Ubuntu22.04, Ubuntu20.04, Debian11, Debian12, open source Hongmeng OpenHarmony 4.0 Beta1, Orange Pi OS (Arch), Orange Pi OS (OH) based on open source Hongmeng OpenHarmony and other operating systems.
|-
|colspan=2|
<span id="top-view-and-bottom-view-of-orange-pi-3b"></span>
 
== Top view and bottom view of Orange Pi 3B ==
<big>'''Top view:'''</big><br>
<div class="figure">
[[File:pi3b-img3.png|800px]]
</div>
<big>'''Bottom view:'''</big><br>
<div class="figure">
[[File:pi3b-img4.png|800px]]
</div>
<span id="interface-details-of-orange-pi-3b"></span>
 
== Interface details of Orange Pi 3B ==
[[File:pi3b-img5-1.png|800px]]
[[File:pi3b-img6.png|800px]]
{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''The diameter of the four positioning holes is 32.0mm7mm, and the diameter of the M.2 PICE device fixing hole is 32.5mm9mm.'''</big>|}
<span id="introduction-to-the-use-of-the-development-board"></span>
# TF card, '''class 10''' or above high-speed SanDisk card with a minimum capacity of 16GB (recommended 32GB or above)
::[[File:pi3b-img7.png]]
<ol start="2" style="list-style-type: decimal;">
<li>TF card reader, used to burn the image into the TF card</li></ol>
[[File:pi3b-img8.png]]
</ol>
<ol start="3" style="list-style-type: decimal;">
<li>Display with HDMI interface</li></ol>
[[File:pi3b-img9.png]]
</ol>
<ol start="4" style="list-style-type: decimal;">
<li>HDMI to HDMI cable, used to connect the development board to an HDMI monitor or TV for display</li></ol>
[[File:pi3b-img10.png]]
{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''Note, if you want to connect a 4K monitor, please make sure that the HDMI cable supports 4K video output.'''</big>|}</ol>
<ol start="5" style="list-style-type: decimal;">
<li>Power adapter, Orange Pi 3B is recommended to use 5V/3A or 5V/4A Type-C power supply for power supply</li></ol> [[File:pi3b-img11.png]]
[[File:pi3b-img11-1.png]]
</ol>
<ol start="6" style="list-style-type: decimal;">
<li>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</li></ol>
[[File:pi3b-img12.png]]
</ol>
<ol start="7" style="list-style-type: decimal;">
<li>USB camera</li></ol>
[[File:pi3b-img13.png]]
</ol>
<ol start="8" style="list-style-type: decimal;">
<li>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'''</li></ol>
{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''The fan on the development board can adjust the speed and switch through PWM.'''</big>|}
[[File:pi3b-img14.png]]
</ol>
<ol start="9" style="list-style-type: decimal;">
<li>100M or 1000M network cable, used to connect the development board to the Internet</li></ol>
[[File:pi3b-img15.png]]
</ol>
<ol start="10" style="list-style-type: decimal;">
<li>USB2.0 male-to-male data cable, used to burn images to eMMC, NVMe SSD and other functions</li></ol>
<div class="figure">
[[File:pi3b-img16.png]]
</div></ol>
<ol start="11" style="list-style-type: decimal;">
<li>'''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</li></ol> [[File:pi3b-img17.png]] [[File:pi3b-img18.png]]
[[File:pi3b-img17.png|400px]] [[File:pi3b-img18.png|400px]]
</ol>
<ol start="12" style="list-style-type: decimal;">
<li>A personal computer with Ubuntu and Windows operating systems installed</li></ol>
{| class="wikitable" style="width:800px;text-align: center;"
|-
| style="text-align: left;"| 1| style="text-align: left;"| Ubuntu22.04 PC| style="text-align: left;"| Optional, used to compile Linux source code
|-
| style="text-align: left;"| 2| style="text-align: left;"| Windows PC| style="text-align: left;"| For burning Android and Linux images
|}
</ol>
<span id="download-the-image-of-the-development-board-and-related-materials"></span>
<span id="download-the-image-of-the-development-board-and-related-materials"></span>
== Download the image of the development board and related materials ==
# The website for downloading the English version of materials is:
::{| class="wikitable" style="width:800px;"
|-
|
'''http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-3B.html'''
|}
<div class="figure">
::[[File:pi3b-img19.png|800px]]
</div>
<span id="method-of-burning-linux-image-to-tf-card-based-on-windows-pc"></span>
 
== Method of burning Linux image to TF card based on Windows PC ==
{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''Note that the Linux image mentioned here specifically refers to the images of Linux distributions such as Debian and Ubuntu downloaded from the''' [http://www.orangepi.org/html/serviceAndSupporthardWare/computerAndMicrocontrollers/service-and-support/indexOrange-Pi-3B.html Orange Pi data download page]'''.'''</big>|}
<span id="how-to-use-balenaetcher-to-burn-linux-image"></span>
# 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 [http://www.orangepi.org/html/serviceAndSupporthardWare/indexcomputerAndMicrocontrollers/service-and-support/Orange-Pi-3B.html '''Orange Pi data download page'''], and then use the decompression software to decompress it. Among the decompressed files, the file ending with &quot;'''.img'''&quot; 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:
::{| class="wikitable" style="width:800px;" |-| '''https://www.balena.io/etcher/'''|}
<ol start="5" style="list-style-type: decimal;">
<li>After entering the balenaEtcher download page, click the green download button to jump to the place where the software is downloaded</li></ol>
[[File:pi3b-img20.png]]
</ol>
<ol start="6" style="list-style-type: decimal;">
<li>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</li></ol>
[[File:pi3b-img21.png]]
</ol>
<ol start="7" style="list-style-type: decimal;">
<li>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:</li></ol>
[[File:pi3b-img22.png]]
{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''When opening balenaEtcher, if the following error is prompted:'''</big>
[[File:pi3b-img23.png|209x164pxcenter]]
<big>'''Please select balenaEtcher, right-click, and select Run as administrator.''' [[File:pi3b-img24.png|273x37px]]</big>
[[File:pi3b-img24.png|center]]
|}
</ol>
<ol start="8" style="list-style-type: decimal;">
<li><p>The specific steps to use balenaEtcher to burn the Linux image are as follows</p>
<li><p>First select the path of the Linux image file to be burned</p></li>
<li><p>Then select the drive letter of the TF card</p></li>
<li><p>Finally click Flash to start burning the Linux image to the TF card</p></li></ol></li></ol>
<div class="figure">
[[File:pi3b-img25.png|501x281px|03]]
</div></ol></li></ol>
<ol start="9" style="list-style-type: decimal;">
<li>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</li></ol> [[File:pi3b-img26.png|428x268px]]
[[File:pi3b-img26.png]]
</ol>
<ol start="10" style="list-style-type: decimal;">
<li>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</li></ol> [[File:pi3b-img27.png|427x267px]]
[[File:pi3b-img27.png]]
</ol>
<ol start="11" style="list-style-type: decimal;">
<li>After the successful burning is completed, the display interface of balenaEtcher is as shown in the figure below. If the 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 boardfor use. up</li></ol>
<div class="figure">
[[File:pi3b-img28.png|523x324px|04]]
</div></ol>
<span id="how-to-use-rkdevtool-to-burn-linux-image-to-tf-card"></span>
 
=== How to use RKDevTool to burn Linux image to TF card ===
<div class="figure">
::[[File:pi3b-img16.png|146x143px|D6BB9058-CDC3-42d7-A7FC-FBF630D886B7]]
</div>
<ol start="2" style="list-style-type: decimal;">
<li><p>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</p></li>
<li><p>Then download the Rockchip driver '''DriverAssitant_v5.12.zip''' and '''MiniLoader''' and the burning tool '''RKDevTool_Release_v3.15.zip''' from the [http://www.orangepi.org/html/serviceAndSupporthardWare/indexcomputerAndMicrocontrollers/service-and-support/Orange-Pi-3B.html '''Orange Pi data download page''']</p>
<ol style="list-style-type: lower-alpha;">
<li>On the data download page of Orange Pi, first select the '''official tool''', and then enter the following folder</li></ol></li></ol>
<div class="figure">
[[File:pi3b-img29.png|283x90px|6d1c77df7eeb7e491e5f79e8d85cbdc]]
</div></ol>
<ol start="2" style="list-style-type: lower-alpha;">
<li>Then download all the files below</li></ol>
<div class="figure">
[[File:pi3b-img30.png|290x130px|34acacded202b29eee42fd20f5b4c92]]
</div>
{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''Note that the &quot;MiniLoader-things needed to burn the Linux image&quot; folder is hereinafter referred to as the MiniLoader folder.'''</big>|}</ol></li></ol>
<ol start="4" style="list-style-type: decimal;">
<li><p>Then download the Linux operating system image file compression package that you want to burn from the [http://www.orangepi.org/html/serviceAndSupporthardWare/indexcomputerAndMicrocontrollers/service-and-support/Orange-Pi-3B.html '''Orange Pi data download page'''], and then use the decompression software to decompress it. Among the decompressed files, the file ending with &quot;'''.img'''&quot; is the image file of the operating system , the size is generally more than 2GB</p></li><li><p>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</p></li></ol> [[File:pi3b-img31.png|464x136px]]
[[File:pi3b-img31.png]]
</ol>
<ol start="6" style="list-style-type: decimal;">
<li><p>After opening '''DriverInstall.exe''', the steps to install the Rockchip driver are as follows</p>
<ol style="list-style-type: lower-alpha;">
<li>Click the &quot;'''Driver Installation'''&quot; button</li></ol></li></ol> [[File:pi3b-img32.png|245x129px]]
[[File:pi3b-img32.png]]
</ol>
<ol start="2" style="list-style-type: lower-alpha;">
<li>After waiting for a period of time, a pop-up window will prompt &quot;'''The driver is installed successfully'''&quot;, and then click the &quot;'''OK'''&quot; button.</li></ol> [[File:pi3b-img33.png|254x132px]]
[[File:pi3b-img33.png]]
</ol>
</li></ol>
<ol start="7" style="list-style-type: decimal;">
<li>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</li></ol> [[File:pi3b-img34.png|448x132px]]
[[File:pi3b-img34.png]]
</ol>
<ol start="8" style="list-style-type: decimal;">
<li>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 &quot;'''No device found'''&quot;</li></ol> [[File:pi3b-img35.png|402x189px]]
[[File:pi3b-img35.png]]
</ol>
<ol start="9" style="list-style-type: decimal;">
<li><p>Then start burning the Linux image to the TF card</p>
<ol style="list-style-type: lower-alpha;">
<li>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</li></ol></li></ol>
<div class="figure">
[[File:pi3b-img36.png|271x115px|C:\Users\orangepi\Desktop\用户手册插图\pi 3b\1691131157154(1).jpg1691131157154(1)]]
</div></ol>
<ol start="2" style="list-style-type: lower-alpha;">
<li><p>Make sure the TF card slot is not inserted into the TF card</p></li>
<li><p>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:</p></li></ol> [[File:pi3b-img37.png|289x100px]]
[[File:pi3b-img37.png]]
</ol>
<ol start="4" style="list-style-type: lower-alpha;">
<li>Then connect the power supply of the Type-C interface to the development board, and power on, and then release the MaskROM button</li></ol>
<blockquote>[[File:pi3b-img38.png|305x94px]]</blockquoteol>
<ol start="5" style="list-style-type: lower-alpha;">
<li>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 &quot;'''found a MASKROM device'''&quot;</li></ol> [[File:pi3b-img39.png|454x213px]]
[[File:pi3b-img39.png]]
</ol>
<ol start="6" style="list-style-type: lower-alpha;">
<li><p>At this time, please insert the TF card into the TF card slot</p></li>
<li><p>Then place the mouse cursor in the area below</p></li></ol>
<div class="figure">
[[File:pi3b-img40.png|455x216px|图片1]]
</div></ol>
<ol start="8" style="list-style-type: lower-alpha;">
<li>Then click the right mouse button and the selection interface shown in the figure below will pop up</li></ol> [[File:pi3b-img41.png|453x213px]]
[[File:pi3b-img41.png]]
</ol>
<ol style="list-style-type: lower-roman;">
<li>Then select the '''import configuration''' option</li></ol> [[File:pi3b-img42.png|458x215px]]
[[File:pi3b-img42.png]]
</ol>
<ol start="10" style="list-style-type: lower-alpha;">
<li>Then select the '''rk3588_Linux_tfcard.cfg''' configuration file in the '''MiniLoader''' folder downloaded earlier, and click '''Open'''</li></ol> [[File:pi3b-img43.png|457x215px]]
[[File:pi3b-img43.png]]
</ol>
<ol start="11" style="list-style-type: lower-alpha;">
<li>Then click '''OK'''</li></ol> [[File:pi3b-img44.png|483x227px]]
[[File:pi3b-img44.png]]
</ol>
<ol start="12" style="list-style-type: lower-alpha;">
<li>Then click the position shown in the figure below</li></ol> [[File:pi3b-img45.png|486x228px]]
[[File:pi3b-img45.png]]
</ol>
<ol start="13" style="list-style-type: lower-alpha;">
<li>Then select '''rk3566_MiniLoaderAll.bin''' in the '''MiniLoader''' folder downloaded earlier, and click to '''open'''</li></ol>
<div class="figure">
[[File:pi3b-img46.png|494x232px|[78~~Z7UFB@US@8P$QL%OM6]]
</div></ol>
<ol start="14" style="list-style-type: lower-alpha;">
<li>Then click the position shown in the figure below</li></ol> [[File:pi3b-img47.png|493x232px]]
[[File:pi3b-img47.png]]
</ol>
<ol start="15" style="list-style-type: lower-alpha;">
<li>Then select the path of the Linux image you want to burn, and then click '''Open'''</li></ol>
{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''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.'''</big> [[File:pi3b-img48.png|499x234px]]}
[[File:pi3b-img48.png]]
</ol>
<ol start="16" style="list-style-type: lower-alpha;">
<li>Then please check the '''mandatory write by address''' option</li></ol> [[File:pi3b-img49.png|497x234px]]
[[File:pi3b-img49.png]]
</ol>
<ol start="17" style="list-style-type: lower-alpha;">
<li>Click the execute button again to start burning the Linux image to the tf card of the development board</li></ol> [[File:pi3b-img50.png|497x233px]]
[[File:pi3b-img50.png]]
</ol>
<ol start="18" style="list-style-type: lower-alpha;">
<li>The display log after burning the Linux image is shown in the figure below</li></ol>
<div class="figure">
[[File:pi3b-img51.png|492x231px|%O4~FPPAT$0RH{3S~CGJ@@Q(1)]]
</div></ol>
<ol start="19" style="list-style-type: lower-alpha;">
<li>After burning the Linux image to the TF card, the Linux system will start automatically.</li></ol>
</li></ol>
<span id="how-to-use-win32diskimager-to-burn-linux-image"></span>
<span id="how-to-use-win32diskimager-to-burn-linux-image"></span>
=== How to use Win32Diskimager to burn Linux image ===
<li><p>Then format the TF card</p>
<ol style="list-style-type: lower-alpha;">
<li>'''SD Card Formatter''' can be used to format the TF card. The download address is:</li></ol></li></ol>{| class="wikitable" style="width:800px;" |-| '''https://www.sdcard.org/downloads/formatter/eula_windows/SDCardFormatterv5_WinEN.zip'''|}</ol>
<ol start="2" style="list-style-type: lower-alpha;">
<li><p>After downloading, unzip and install directly, and then open the software</p></li>
<li><p>If only a TF card is inserted into the computer, the drive letter of the TF card will be displayed in the &quot;'''Select card'''&quot; 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</p></li></ol>
<div class="figure">
[[File:pi3b-img52.png|209x228px|选区_199]]
</div></ol>
<ol start="4" style="list-style-type: lower-alpha;">
<li>Then click &quot;'''Format'''&quot;, a warning box will pop up before formatting, and formatting will start after selecting &quot;'''Yes (Y)'''&quot;</li></ol> [[File:pi3b-img53.png|304x147px]]
[[File:pi3b-img53.png]]
</ol>
<ol start="5" style="list-style-type: lower-alpha;">
<li>After formatting the TF card, the information shown in the figure below will pop up, click OK</li></ol>
<blockquote>[[File:pi3b-img54.png|186x149px]]</blockquoteol></li></ol>
<ol start="4" style="list-style-type: decimal;">
<li><p>Download the Linux operating system image file compression package that you want to burn from the [http://www.orangepi.org/html/serviceAndSupporthardWare/indexcomputerAndMicrocontrollers/service-and-support/Orange-Pi-3B.html '''Orange Pi data download page'''], and then use the decompression software to decompress it. Among the decompressed files, the file ending with &quot;'''.img'''&quot; is the image file of the operating system. The size is generally more than 2GB</p></li>
<li><p>Use '''Win32Diskimager''' to burn the Linux image to the TF card</p>
<ol style="list-style-type: lower-alpha;">
<li>The download page of Win32Diskimager is</li></ol></li></ol>{| class="wikitable" style="width:800px;" |-| '''http://sourceforge.net/projects/win32diskimager/files/Archive/'''|}</ol>
<ol start="2" style="list-style-type: lower-alpha;">
<li><p>After downloading, install it directly. The interface of Win32Diskimager is as follows</p>
<ol style="list-style-type: lower-alphanone;"><li><p>a) First select the path of the image file</p></li><li><p>b) Then confirm that the drive letter of the TF card is consistent with that displayed in the &quot;'''Device'''&quot; column</p></li><li><p>c) Finally click &quot;'''Write'''&quot; to start burning</p></li></ol></li></ol>
<div class="figure">
[[File:pi3b-img55.png|297x206px|C:\Users\orangepi\Desktop\用户手册插图\Pi5 Plus\a8fda8737c5b0b3b38fbb75ef68acfc.pnga8fda8737c5b0b3b38fbb75ef68acfc]]
</div></ol></li></ol>
<ol start="3" style="list-style-type: lower-alpha;">
<li>After the image writing is completed, click the &quot;'''Exit'''&quot; button to exit, and then you can pull out the TF card and insert it into the development board to start</li></ol>
</li></ol>
<span id="method-of-burning-linux-image-to-tf-card-based-on-ubuntu-pc"></span>
<span id="method-of-burning-linux-image-to-tf-card-based-on-ubuntu-pc"></span>
== Method of burning Linux image to TF card based on Ubuntu PC ==
{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''Note that the Linux image mentioned here specifically refers to the images of Linux distributions such as Debian and Ubuntu downloaded from the [http://www.orangepi.org/html/serviceAndSupporthardWare/computerAndMicrocontrollers/service-and-support/indexOrange-Pi-3B.html Orange Pi data download page], and the Ubuntu PC refers to the personal computer with the Ubuntu system installed.'''</big>|}
# 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
# Download the balenaEtcher software, the download address is
::{| class="wikitable" style="width:800px;"
|-
|
[https://www.balena.io/etcher/ '''https://www.balena.io/etcher/''']
|}
<ol start="4" style="list-style-type: decimal;">
<li>After entering the balenaEtcher download page, click the green download button to jump to the place where the software is downloaded</li></ol> [[File:pi3b-img20.png|434x208px]]
[[File:pi3b-img20.png]]
</ol>
<ol start="5" style="list-style-type: decimal;">
<li>Then choose to download the Linux version of the software</li></ol>
[[File:pi3b-img56.png|430x163px]]</ol><ol start="6" style="list-style-type: decimal;"><li>Download the Linux operating system image file compression package that you want to burn from the [http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-3B.html '''Orange Pi data download page'''], and then use the decompression software to decompress it. Among the decompressed files, the file ending with &quot;'''.img'''&quot; is the image file of the operating system. The size is generally more than 2GB</li>
<ol start="6" style="list-style-type: decimal;"><li>Download The decompression command for the Linux operating system image file compression compressed package that you want to burn from the [http://www.orangepi.org/html/serviceAndSupport/index.html '''Orange Pi data download page'''], and then use the decompression software to decompress it. Among the decompressed files, the file ending with &quot;'''.img'''&quot; is the image file of the operating system. The size in 7z is generally more than 2GB</li></ol>as follows
<blockquote>The decompression command for the compressed package ending in 7z is as follows{| class="wikitable" style="width:800px;" </blockquote>|-|
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
|}</ol>
<ol start="7" style="list-style-type: decimal;">
<li>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</li></ol>
{| class="wikitable" style="width:800px;"
|-
|
test@test:~$ '''sha256sum -c *.sha'''
Orangepi3b_1.0.0_debian_bullseye_desktop_xfce_Linux5.10.160.img: OK
|}</ol>
<ol start="8" style="list-style-type: decimal;">
<li>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</li></ol> [[File:pi3b-img57.png|423x251px]]
[[File:pi3b-img57.png]]
</ol>
<ol start="9" style="list-style-type: decimal;">
<li><p>The specific steps of using balenaEtcher to burn the Linux image are as follows</p>
<li><p>First select the path of the Linux image file to be burned</p></li>
<li><p>Then select the drive letter of the TF card</p></li>
<li><p>Finally, click Flash to start burning the Linux image to the TF card</p></li></ol></li></ol>
<div class="figure">
[[File:pi3b-img25.png|501x281px|03]]
</div></ol></li></ol>
<ol start="10" style="list-style-type: decimal;">
<li>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</li></ol> [[File:pi3b-img58.png|429x184px]]
[[File:pi3b-img58.png]]
</ol>
<ol start="11" style="list-style-type: decimal;">
<li>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</li></ol> [[File:pi3b-img59.png|436x190px]]
[[File:pi3b-img59.png]]
</ol>
<ol start="12" style="list-style-type: decimal;">
<li>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. up</li></ol>
[[File:pi3b-img60.png|435x257px]]</ol><span id="how-to-burn-linux-image-to-emmc"></span>
<span id="how-to-burn-linux-image-to-emmc"></span>
== How to burn Linux image to eMMC ==
=== Using RKDevTool to burn the Linux image into eMMC ===
{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''Note that all the following operations are performed on a Windows computer.'''</big>|}{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''Note that the Linux image mentioned here specifically refers to the images of Linux distributions such as Debian and Ubuntu downloaded from the [http://www.orangepi.org/html/serviceAndSupporthardWare/indexcomputerAndMicrocontrollers/service-and-support/Orange-Pi-3B.html Orange Pi data download page].'''</big>|}
# 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:
::[[File:pi3b-img61.png|115x84px400px]] [[File:pi3b-img62.png|120x87px400px]]
::[[File:pi3b-img63.png|277x129px800px]]
<ol start="2" style="list-style-type: decimal;">
<li>You also need to prepare a good quality USB2.0 male-to-male data cable</li></ol>
<div class="figure">
[[File:pi3b-img16.png|141x138px|D6BB9058-CDC3-42d7-A7FC-FBF630D886B7]]
</div></ol>
<ol start="3" style="list-style-type: decimal;">
<li><p>Then download the Rockchip driver '''DriverAssitant_v5.12.zip''' and '''MiniLoader''' and the burning tool '''RKDevTool_Release_v3.15.zip''' from the [http://www.orangepi.org/html/serviceAndSupporthardWare/indexcomputerAndMicrocontrollers/service-and-support/Orange-Pi-3B.html '''Orange Pi data download page''']</p>
<ol style="list-style-type: lower-alpha;">
<li>On the data download page of Orange Pi, first select the official tool, and then enter the following folder</li></ol></li></ol>
<div class="figure">
[[File:pi3b-img29.png|360x115px|C:\Users\orangepi\Desktop\用户手册插图\Pi5 Plus\6d1c77df7eeb7e491e5f79e8d85cbdc.png6d1c77df7eeb7e491e5f79e8d85cbdc]]
</div></ol>
<ol start="2" style="list-style-type: lower-alpha;">
<li>Then download all the files below</li></ol>
<div class="figure">
[[File:pi3b-img30.png|320x144px|C:\Users\orangepi\Desktop\用户手册插图\Pi5 Plus\34acacded202b29eee42fd20f5b4c92.png34acacded202b29eee42fd20f5b4c92]]
</div>
{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''Note that the &quot;MiniLoader-things needed to burn the Linux image&quot; folder is hereinafter referred to as the MiniLoader folder.'''</big>|}</ol></li></ol>
<ol start="4" style="list-style-type: decimal;">
<li><p>Then download the Linux operating system image file compression package that you want to burn from the [http://www.orangepi.org/html/serviceAndSupporthardWare/indexcomputerAndMicrocontrollers/service-and-support/Orange-Pi-3B.html '''Orange Pi data download page'''], and then use the decompression software to decompress it. Among the decompressed files, the file ending with &quot;'''.img'''&quot; is the image file of the operating system , the size is generally more than 2GB</p></li><li><p>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</p></li></ol> [[File:pi3b-img31.png|496x146px]]
[[File:pi3b-img31.png]]
</ol>
<ol start="6" style="list-style-type: decimal;">
<li><p>After opening '''DriverInstall.exe''', the steps to install the Rockchip driver are as follows</p>
<ol style="list-style-type: lower-alpha;">
<li>Click the &quot;'''Driver Installation'''&quot; button</li></ol></li></ol> [[File:pi3b-img32.png|284x149px]]
[[File:pi3b-img32.png]]
</ol>
<ol start="2" style="list-style-type: lower-alpha;">
<li>After waiting for a period of time, a pop-up window will prompt &quot;'''The driver is installed successfully'''&quot;, and then click the &quot;'''OK'''&quot; button.</li></ol> [[File:pi3b-img33.png|296x154px]]
[[File:pi3b-img33.png]]
</ol>
</li></ol>
<ol start="7" style="list-style-type: decimal;">
<li>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</li></ol> [[File:pi3b-img34.png|484x143px]]
[[File:pi3b-img34.png]]
</ol>
<ol start="8" style="list-style-type: decimal;">
<li>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 &quot;'''No device found'''&quot;</li></ol> [[File:pi3b-img35.png|442x208px]]
[[File:pi3b-img35.png]]
</ol>
<ol start="9" style="list-style-type: decimal;">
<li><p>Then start burning the Linux image into eMMC</p>
<ol style="list-style-type: lower-alpha;">
<li>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</li></ol></li></ol>
<div class="figure">
[[File:pi3b-img36.png|275x116px|C:\Users\orangepi\Desktop\用户手册插图\pi 3b\1691131157154(1).jpg1691131157154(1)]]
</div></ol>
<ol start="2" style="list-style-type: lower-alpha;">
<li><p>Make sure that the development board is not inserted into the TF card and not connected to the power supply</p></li>
<li><p>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:</p></li></ol> [[File:pi3b-img37.png|289x100px]]
[[File:pi3b-img37.png]]
</ol>
<ol start="4" style="list-style-type: lower-alpha;">
<li>Then connect the power supply of the Type-C interface to the development board, and power on, and then release the MaskROM button</li></ol> [[File:pi3b-img38.png|305x94px]]
[[File:pi3b-img38.png]]
</ol>
<ol start="5" style="list-style-type: lower-alpha;">
<li>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 &quot;'''found a MASKROM device'''&quot;</li></ol> [[File:pi3b-img39.png|457x215px]]
[[File:pi3b-img39.png]]
</ol>
<ol start="6" style="list-style-type: lower-alpha;">
<li>Then place the mouse cursor in the area below</li></ol>
<div class="figure">
[[File:pi3b-img64.png|458x215px|C:\Users\orangepi\Desktop\用户手册插图\Pi5 Plus\未标题-4.jpg未标题-4]]
</div></ol>
<ol start="7" style="list-style-type: lower-alpha;">
<li>Then click the right mouse button and the selection interface shown in the figure below will pop up</li></ol> [[File:pi3b-img41.png|460x216px]]
[[File:pi3b-img41.png]]
</ol>
<ol start="8" style="list-style-type: lower-alpha;">
<li>Then select the '''import configuration''' option</li></ol> [[File:pi3b-img42.png|458x215px]]
[[File:pi3b-img42.png]]
</ol>
<ol style="list-style-type: lower-roman;">
<li>Then select the '''rk3588_Linux_emmc.cfg''' configuration file in the '''MiniLoader''' folder downloaded earlier, and click '''Open'''</li></ol> [[File:pi3b-img65.png|466x219px]]
[[File:pi3b-img65.png]]
</ol>
<ol start="10" style="list-style-type: lower-alpha;">
<li>Then click '''OK'''</li></ol> [[File:pi3b-img66.png|468x220px]]
[[File:pi3b-img66.png]]
</ol>
<ol start="11" style="list-style-type: lower-alpha;">
<li>Then click the position shown in the figure below</li></ol> [[File:pi3b-img67.png|462x217px]]
[[File:pi3b-img67.png]]
</ol>
<ol start="12" style="list-style-type: lower-alpha;">
<li>Then select '''rk3566_MiniLoaderAll.bin''' in the '''MiniLoader''' folder downloaded earlier, and then click to '''open'''</li></ol>
<div class="figure">
[[File:pi3b-img68.png|459x216px|SIS5H0S2@F5M2D(6ANZEUPG]]
</div></ol>
<ol start="13" style="list-style-type: lower-alpha;">
<li>Then click the position shown in the figure below</li></ol> [[File:pi3b-img69.png|459x216px]]
[[File:pi3b-img69.png]]
</ol>
<ol start="14" style="list-style-type: lower-alpha;">
<li>Then select the path of the Linux image you want to burn, and then click '''Open'''</li></ol>
{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''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.'''</big> [[File:pi3b-img48.png|499x234px]]}
[[File:pi3b-img48.png]]
</ol>
<ol start="15" style="list-style-type: lower-alpha;">
<li>Then please check the option to '''force writing by address'''</li></ol> [[File:pi3b-img70.png|501x235px]]
[[File:pi3b-img70.png]]
</ol>
<ol start="16" style="list-style-type: lower-alpha;">
<li>Click the execute button again to start burning the Linux image to the eMMC of the development board</li></ol> [[File:pi3b-img71.png|502x236px]]
[[File:pi3b-img71.png]]
</ol>
<ol start="17" style="list-style-type: lower-alpha;">
<li>The log displayed after burning the Linux image is shown in the figure below</li></ol> [[File:pi3b-img72.png|500x235px]]
[[File:pi3b-img72.png]]
</ol>
<ol start="18" style="list-style-type: lower-alpha;">
<li>After burning the Linux image into the eMMC, the Linux system will start automatically.</li>{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''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 [[Orange Pi 3B#Using RKDevTool to clear SPIFlash|the method of using RKDevTool to clear SPIFlash]].'''</big>|}</ol></li></ol><span id="use-the-dd-command-to-burn-the-linux-image-into-emmc"></span>
'''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 [[\l|the method of using RKDevTool to clear SPIFlash]].'''
 
<span id="use-the-dd-command-to-burn-the-linux-image-into-emmc"></span>
=== Use the dd command to burn the Linux image into eMMC ===
{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''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 [http://www.orangepi.org/html/serviceAndSupporthardWare/computerAndMicrocontrollers/indexservice-and-support/Orange-Pi-3B.html Orange Pi data download page].'''</big>|}
# 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:
::[[File:pi3b-img61.png|115x84px400px]] [[File:pi3b-img62.png|120x87px400px]]
::[[File:pi3b-img63.png|286x133px800px]]
<ol start="2" style="list-style-type: decimal;">
<li><p>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 [[\lOrange Pi 3B#Method of burning Linux image to TF card based on Windows PC|'''the method of burning the Linux image to the TF card based on the Windows PC''']] and [[\lOrange Pi 3B#Method of burning Linux image to TF card based on Ubuntu PC|'''the method of burning the Linux image to the TF card based on the Ubuntu PC''']].</p></li><li><p>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 [[\lOrange Pi 3B#The method of uploading files to the Linux system of the development board|'''the method of uploading files to the development board Linux system''']].</p></li><li><p>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.</p></li></ol>
{| class="wikitable" style="width:800px;"
|-
|
orangepi@orangepi:~$ '''cd /home/orangepi/Desktop'''
Orangepi3b_x.x.x_debian_bullseye_desktop_xfce_Linux5.10.160.img
|}
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
|-
|
<big>'''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 [[Orange Pi 3B#How to enter use the command line of debugging serial port|how to use the development board Linux system?debugging serial port]].'''
# '''For the method of using the serial port to log in to the terminal, please refer to the instructions in the section on [[\l|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 [[\lOrange Pi 3B#SSH remote login development board|SSH remote login to the development board]].'''# '''If HDMI, LCD and other display screens are connected, you can open a command line terminal on the desktop.'''
'''3. If HDMI, LCD and other display screens are connected, you can open a command line terminal on the desktop.'''</big>
|}
</ol>
<!-- -->
<ol start="5" style="list-style-type: decimal;">
<li>Next, we first use the following command to confirm the device node of eMMC</li></ol>
{| class="wikitable" style="width:800px;"
|-
|
orangepi@orangepi:~/Desktop$ '''ls /dev/mmcblk*boot0 | cut -c1-12'''
'''<span style="color:#FF0000">/dev/mmcblk0</span>'''|}</ol>
<ol start="6" style="list-style-type: decimal;">
<li>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</li></ol>
{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~/Desktop$ '''sudo dd bs=1M if=/dev/zero of=<span style="color:#FF0000">/dev/mmcblk0 </span> count=1000 status=progress'''
orangepi@orangepi:~/Desktop$ '''sudo sync'''
|}</ol>
<ol start="7" style="list-style-type: decimal;">
<li><p>Then you can use the dd command to burn the Linux image of the development board into the eMMC</p>
<ol style="list-style-type: lower-alpha;">
<li><p>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.</p></li><li><p>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).</p></li></ol></li></ol>{| class="wikitable" style="width:800px;" |-| '''sudo dd bs=1M if=Orangepi3b_x.x.x_debian_bullseye_desktop_xfce_Linux5.10.160.img of=<span style="color:#FF0000">/dev/mmcblk0 </span> status=progress'''
'''sudo''' '''sync'''
|}
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
|-
|
<big>'''<span style="color:#FF0000">Note, if you upload a .7z or .xz Linux image compressed file, please remember to decompress it before using the dd command to burn.</span>'''
'''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.'''
'''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.'''</big>
|}
</ol>
</li></ol>
<ol start="8" style="list-style-type: decimal;">
<li>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.</li>{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| </olbig> '''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 [[\lOrange Pi 3B#Using RKDevTool to clear SPIFlash|the method of using RKDevTool to clear SPIFlash]].'''</big>|}</ol><span id="how-to-write-linux-image-to-spiflashnvme-ssd"></span>
<span id="how-to-write-linux-image-to-spiflashnvme-ssd"></span>
== How to write Linux image to SPIFlash+NVMe SSD ==
{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''Note that the Linux image mentioned here specifically refers to the images of Linux distributions such as Debian and Ubuntu downloaded from the [http://www.orangepi.org/html/serviceAndSupporthardWare/indexcomputerAndMicrocontrollers/service-and-support/Orange-Pi-3B.html Orange Pi data download page].'''</big>|}{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''Note that all the following operations are performed on a Windows computer.'''</big>|}
<span id="using-rkdevtool-to-burn"></span>
<li><p>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.</p>
<ol style="list-style-type: lower-alpha;">
<li>The M.2 2230 SSD is as follows</li></ol></li></ol> [[File:pi3b-img73.png|157x112px]]
[[File:pi3b-img73.png]]
</ol>
<ol start="2" style="list-style-type: lower-alpha;">
<li>The M.2 2242 SSD is as follows</li></ol> [[File:pi3b-img74.png|174x96px]]
[[File:pi3b-img74.png]]
</ol>
</li></ol>
<ol start="2" style="list-style-type: decimal;">
<li>Then insert the NVMe SSD into the M.2 PCIe interface of the development board and fix it</li></ol> [[File:pi3b-img75.png|283x63px]]
[[File:pi3b-img75.png]]
</ol>
<ol start="3" style="list-style-type: decimal;">
<li>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</li></ol> [[File:pi3b-img76.png|266x211px]]
[[File:pi3b-img76.png]]
</ol>
<ol start="4" style="list-style-type: decimal;">
<li>Then you need to prepare a good quality USB2.0 male-to-male data cable</li></ol>
<div class="figure">
[[File:pi3b-img16.png|141x138px|D6BB9058-CDC3-42d7-A7FC-FBF630D886B7]]
</div></ol>
<ol start="5" style="list-style-type: decimal;">
<li><p>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</p>
<ol style="list-style-type: lower-alpha;">
<li>On the data download page of Orange Pi, first select the '''official tool''', and then enter the following folder</li></ol></li></ol>
<div class="figure">
[[File:pi3b-img29.png|362x115px|C:\Users\orangepi\Desktop\用户手册插图\Pi5 Plus\6d1c77df7eeb7e491e5f79e8d85cbdc.png6d1c77df7eeb7e491e5f79e8d85cbdc]]
</div></ol>
<ol start="2" style="list-style-type: lower-alpha;">
<li>Then download all the files below</li></ol>
<div class="figure">
[[File:pi3b-img30.png|264x118px|C:\Users\orangepi\Desktop\用户手册插图\Pi5 Plus\34acacded202b29eee42fd20f5b4c92.png34acacded202b29eee42fd20f5b4c92]]
</div>
{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''Note that the &quot;MiniLoader-things needed to burn the Linux image&quot; folder is hereinafter referred to as the MiniLoader folder.'''</big>|}</ol></li></ol>
<ol start="6" style="list-style-type: decimal;">
<li><p>Then download the Linux operating system image file compression package that you want to burn from the [http://www.orangepi.org/html/serviceAndSupporthardWare/indexcomputerAndMicrocontrollers/service-and-support/Orange-Pi-3B.html '''Orange Pi data download page'''], and then use the decompression software to decompress it. Among the decompressed files, the file ending with &quot;'''.img'''&quot; is the image file of the operating system , the size is generally more than 2GB</p></li><li><p>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</p></li></ol> [[File:pi3b-img31.png|446x131px]]
[[File:pi3b-img31.png]]
</ol>
<ol start="8" style="list-style-type: decimal;">
<li><p>After opening '''DriverInstall.exe''', the steps to install the Rockchip driver are as follows</p>
<ol style="list-style-type: lower-alpha;">
<li>Click the &quot;'''Driver Installation'''&quot; button</li></ol></li></ol> [[File:pi3b-img32.png|253x133px]]
[[File:pi3b-img32.png]]
</ol>
<ol start="2" style="list-style-type: lower-alpha;">
<li>After waiting for a period of time, a pop-up window will prompt &quot;'''The driver is installed successfully'''&quot;, and then click the &quot;'''OK'''&quot; button.</li></ol> [[File:pi3b-img33.png|269x140px]]
[[File:pi3b-img33.png]]
</ol>
</li></ol>
<ol start="9" style="list-style-type: decimal;">
<li>Then decompress '''RKDevTool_Release_v3.15.zizip'''p, this software does not need to be installed, just find '''RKDevTool''' in the decompressed folder and open it</li></ol> [[File:pi3b-img34.png|402x119px]]
[[File:pi3b-img34.png]]
</ol>
<ol start="10" style="list-style-type: decimal;">
<li>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 &quot;'''No device found'''&quot;</li></ol> [[File:pi3b-img35.png|402x189px]]
[[File:pi3b-img35.png]]
</ol>
<ol start="11" style="list-style-type: decimal;">
<li><p>Then start burning the Linux image to the SSD</p>
<ol style="list-style-type: lower-alpha;">
<li>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</li></ol></li></ol>
<div class="figure">
[[File:pi3b-img36.png|275x116px|C:\Users\orangepi\Desktop\用户手册插图\pi 3b\1691131157154(1).jpg1691131157154(1)]]
</div></ol>
<ol start="2" style="list-style-type: lower-alpha;">
<li><p>Make sure that the development board is not connected to the power supply and inserted into the TF card and eMMC</p></li>
<li><p>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:</p></li></ol> [[File:pi3b-img37.png|289x100px]]
[[File:pi3b-img37.png]]
</ol>
<ol start="4" style="list-style-type: lower-alpha;">
<li>Then connect the power supply of the Type-C interface to the development board, and power on, and then release the MaskROM button</li></ol> [[File:pi3b-img38.png|305x94px]]
[[File:pi3b-img38.png]]
</ol>
<ol start="5" style="list-style-type: lower-alpha;">
<li>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 &quot;'''found a MASKROM device'''&quot;</li></ol> [[File:pi3b-img39.png|457x215px]]
[[File:pi3b-img39.png]]
</ol>
<ol start="6" style="list-style-type: lower-alpha;">
<li>Then place the mouse cursor in the area below</li></ol>
<div class="figure">
[[File:pi3b-img64.png|458x215px|C:\Users\orangepi\Desktop\用户手册插图\Pi5 Plus\未标题-4.jpg未标题-4]]
</div></ol>
<ol start="7" style="list-style-type: lower-alpha;">
<li>Then click the right mouse button and the selection interface shown in the figure below will pop up</li></ol> [[File:pi3b-img41.png|453x213px]]
[[File:pi3b-img41.png]]
</ol>
<ol start="8" style="list-style-type: lower-alpha;">
<li>Then select the '''import configuration''' option</li></ol>
[[File:pi3b-img42.png|458x215px]]</ol><ol start="9" style="list-style-type: lower-romanalpha;"><li>i. Then enter the '''MiniLoader''' folder downloaded earlier, then select the '''rk3588_Linux_pcie.cfg''' configuration file, and click '''Open'''</li></ol> [[File:pi3b-img77.png|462x217px]]
[[File:pi3b-img77.png]]
</ol>
<ol start="10" style="list-style-type: lower-alpha;">
<li>Then click '''OK'''</li></ol> [[File:pi3b-img78.png|468x220px]]
[[File:pi3b-img78.png]]
</ol>
<ol start="11" style="list-style-type: lower-alpha;">
<li>Then click the position shown in the figure below</li></ol> [[File:pi3b-img79.png|475x223px]]
[[File:pi3b-img79.png]]
</ol>
<ol start="12" style="list-style-type: lower-alpha;">
<li>Then select '''rk3566_MiniLoaderAll.bin''' in the '''MiniLoader''' folder downloaded earlier, and then click to '''open'''</li></ol>
<div class="figure">
[[File:pi3b-img68.png|459x216px|SIS5H0S2@F5M2D(6ANZEUPG]]
</div></ol>
<ol start="13" style="list-style-type: lower-alpha;">
<li>Then click the position shown in the figure below</li></ol> [[File:pi3b-img80.png|486x228px]]
[[File:pi3b-img80.png]]
</ol>
<ol start="14" style="list-style-type: lower-alpha;">
<li>Then enter the MiniLoader folder downloaded earlier, select '''rk3566_rkspi_loader.img''', and click '''Open'''</li></ol>
<div class="figure">
[[File:pi3b-img81.png|488x228px|GGU}ZN)TL%P[INB(M%MNJV7]]
</div></ol>
<ol start="15" style="list-style-type: lower-alpha;">
<li>Then click the position shown in the figure below</li></ol> [[File:pi3b-img82.png|493x231px]]
[[File:pi3b-img82.png]]
</ol>
<ol start="16" style="list-style-type: lower-alpha;">
<li>Then select the path of the Linux image you want to burn, and then click '''Open'''</li></ol>
{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''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.'''</big> [[File:pi3b-img48.png|499x234px]]}
[[File:pi3b-img48.png]]
</ol>
<ol start="17" style="list-style-type: lower-alpha;">
<li>Then please check '''the mandatory write option to force writing by address''' option</li></ol> [[File:pi3b-img83.png|498x234px]]
[[File:pi3b-img83.png]]
</ol>
<ol start="18" style="list-style-type: lower-alpha;">
<li>Click the Execute button again to start burning the Linux image to the SSD</li></ol> [[File:pi3b-img84.png|500x235px]]
[[File:pi3b-img84.png]]
</ol>
<ol start="19" style="list-style-type: lower-alpha;">
<li>The log displayed after burning the Linux image is shown in the figure below</li></ol>
[[File:pi3b-img85.png|504x240px]] '''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 [[\l|the method of using RKDevTool to clear SPIFlash]].'''
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
|-
|
<big>'''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 [[Orange Pi 3B#Using RKDevTool to clear SPIFlash|the method of using RKDevTool to clear SPIFlash]].'''</big>
|}
</ol>
<ol start="20" style="list-style-type: lower-alpha;">
<li>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.</li></ol></li></ol><span id="the-method-of-using-the-dd-command-to-burn"></span>
<span id="the-method-of-using-the-dd-command-to-burn"></span>
=== The method of using the dd command to burn ===
<li><p>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.</p>
<ol style="list-style-type: lower-alpha;">
<li>The M.2 2230 SSD is as follows</li></ol></li></ol> [[File:pi3b-img73.png|158x114px]]
[[File:pi3b-img73.png]]
</ol>
<ol start="2" style="list-style-type: lower-alpha;">
<li>The M.2 2242 SSD is as follows</li></ol> [[File:pi3b-img74.png|192x104px]]
[[File:pi3b-img74.png]]
</ol>
</li></ol>
<ol start="2" style="list-style-type: decimal;">
<li>Then insert the NVMe SSD into the M.2 PCIe interface of the development board and fix it</li></ol> [[File:pi3b-img75.png|283x63px]]
[[File:pi3b-img75.png]]
</ol>
<ol start="3" style="list-style-type: decimal;">
<li>The position of SPI Flash on the development board is shown in the figure below, no other settings are required before starting to burn</li></ol> [[File:pi3b-img76.png|261x198px]]
[[File:pi3b-img76.png]]
</ol>
<ol start="4" style="list-style-type: decimal;">
<li><p>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 [[\lOrange Pi 3B#Method of burning Linux image to TF card based on Windows PC|'''Method of burning Linux image to TF card based on Windows PC''']] and [[\lOrange Pi 3B#Method of burning Linux image to TF card based on Ubuntu PC|'''the method of burning the Linux image to the TF card based on the Ubuntu PC''']].</p></li>
<li><p>After using the TF card to start the Linux system, we first burn the u-boot image into the SPI Flash</p>
<ol style="list-style-type: lower-alpha;">
<li>Run nand-sata-install first, '''<span style="color:#FF0000">ordinary users remember to add sudo permission</span>'''</li></ol></li></ol>
{| class="wikitable" style="width:800px;"
|-
|
orangepi@orangepi:~$ '''sudo nand-sata-install'''
|}</ol>
<ol start="2" style="list-style-type: lower-alpha;">
<li>Then select '''7 Install/Update the bootloader on SPI Flash'''</li></ol>
<div class="figure">
[[File:pi3b-img86.png|355x174px|IMG_256]]
</div></ol>
<ol start="3" style="list-style-type: lower-alpha;">
<li>Then select '''&lt;Yes&gt;'''</li></ol>
<div class="figure">
[[File:pi3b-img87.png|356x179px|IMG_256]]
</div></ol>
<ol start="4" style="list-style-type: lower-alpha;">
<li>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):</li></ol>
<div class="figure">
[[File:pi3b-img88.png|358x161px|IMG_256]]
</div></ol></li></ol>
<ol start="6" style="list-style-type: decimal;">
<li><p>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 [[\lOrange Pi 3B#The method of uploading files to the Linux system of the development board|'''the method of uploading files to the development board Linux system''']].</p></li><li><p>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.</p></li></ol>{| class="wikitable" style="width:800px;" |-|
orangepi@orangepi:~$ '''cd /home/orangepi/Desktop'''
Orangepi3b_x.x.x_debian_bullseye_desktop_xfce_Linux5.10.160.img
|}
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
|-
|
<big>'''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 [[Orange Pi 3B#How to enter use the command line of debugging serial port|how to use the development board Linux system?debugging serial port]].'''
# '''For the method of using the serial port to log in to the terminal, please refer to the instructions in the section on [[\l|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 [[\lOrange Pi 3B#SSH remote login development board|SSH remote login to the development board]].'''# '''If HDMI, LCD and other display screens are connected, you can open a command line terminal on the desktop.'''
'''3. If HDMI, LCD and other display screens are connected, you can open a command line terminal on the desktop.'''</big>
|}
</ol>
<!-- -->
<ol start="8" style="list-style-type: decimal;">
<li>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</li></ol>
{| class="wikitable" style="width:800px;"
|-
|
orangepi@orangepi:~/Desktop$ '''sudo fdisk -l | grep &quot;nvme0n1&quot;'''
Disk /dev/nvme0n1: 1.86 TiB, 2048408248320 bytes, 4000797360 sectors
|}
Use the '''lspci''' command to see an NVMe-related PCI device
{| class="wikitable" style="width:800px;"
|-
|
orangepi@orangepi:~/Desktop$ '''lspci'''
01:00.0 Non-Volatile memory controller: Realtek Semiconductor Co., Ltd. Device 5765 (rev 01)
|}</ol>
<ol start="9" style="list-style-type: decimal;">
<li>Then we can use the dd command to clear the NVMe SSD (optional)</li></ol>
{| class="wikitable" style="width:800px;"
|-
|
orangepi@orangepi3b:~/Desktop$ '''sudo dd bs=1M if=/dev/zero of=/dev/nvme0n1 count=2000 status=progress'''
orangepi@orangepi3b:~/Desktop$ '''sudo sync'''
|}</ol>
<ol start="10" style="list-style-type: decimal;">
<li>Then you can use the dd command to burn the Linux image of the development board to the NVMe SSD</li></ol>
<!-- -->
<ol style="list-style-type: lower-alpha;">
<li><p>In the following command, the '''if= ''' parameter is followed by the full &gt; path where the Linux image is stored + the name of the Linux image &gt; (such as '''the name of /home/orangepi/Desktop/Linux image'''). &gt; Because we have entered the path of the Linux image above, we only &gt; need to fill in the name of the Linux image.</p></li><li><p>Please do not copy the Linux image name in the following command, &gt; but replace it with the actual image name (because the version &gt; number of the image may be updated).</p></li></ol>
{| class="wikitable" style="width:800px;"
|-
|
'''sudo dd bs=1M if=Orangepi3b_x.x.x_debian_bullseye_desktop_xfce_Linux5.10.160.img of=/dev/nvme0n1 status=progress'''
 
'''sudo''' '''sync'''
|}
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
|-
|
<big>'''<span style="color:#FF0000">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.</span>'''
'''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.'''
 
'''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.'''
'''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.'''</big>
|}
</ol>
</ol>
<ol start="11" style="list-style-type: decimal;">
<li><p>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.</p></li>
<li><p>After starting the system in the NVMe SSD, use the '''df -h''' command to see the actual hard disk capacity</p>
<ol style="list-style-type: lower-alpha;">
<li>128GB NVMe SSD</li> {| class="wikitable" style="width:800px;"|-|<p>orangepi@orangepi:~$ '''df -h'''</p><span style="margin-right: 80px;">Filesystem </span><span style="margin-right: 50px;">Size </span><span style="margin-right: 30px;">Used </span><span style="margin-right: 30px;">Avail</span><span style="margin-right: 50px;">Use% Mounted on</span><br><span style="margin-right: 110px;">udev</span><span style="margin-right: 60px;">3.8G </span><span style="margin-right: 50px;">8.0K </span><span style="margin-right: 70px;">3.8G </span><span style="margin-right: 90px;">1% /dev</span><br><span style="margin-right: 100px;">tmpfs </span><span style="margin-right: 50px;">769M </span><span style="margin-right: 30px;">1.4M </span><span style="margin-right: 70px;">768M </span><span style="margin-right: 90px;">1% /run</span><br><span style="margin-right: 25px;color:#FF0000">'''/dev/nvme0n1p2'''</span><span style="margin-right: 50px;color:#FF0000">'''118G '''</span><span style="margin-right: 35px;color:#FF0000">'''5.8G '''</span><span style="margin-right: 80px;color:#FF0000">'''111G '''</span><span style="margin-right: 90px;color:#FF0000">'''5% /'''</span><br><span style="margin-right: 100px;">tmpfs </span><span style="margin-right: 60px;">3.8G </span><span style="margin-right: 50px;">0</span><span style="margin-right: 50px;">3.8G </span><span style="margin-right: 90px;">0% /dev/shm</span><br><span style="margin-right: 100px;">tmpfs </span><span style="margin-right: 60px;">5.0M </span><span style="margin-right: 50px;">4.0K </span><span style="margin-right: 50px;">5.0M </span><span style="margin-right: 90px;">1% /run/lock</span><br><span style="margin-right: 100px;">tmpfs </span><span style="margin-right: 60px;">3.8G </span><span style="margin-right: 50px;">16K </span><span style="margin-right: 50px;">3.8G </span><span style="margin-right: 90px;">1% /tmp</span><br><span style="margin-right: 25px;color:#FF0000">'''/dev/nvme0n1p1'''</span><span style="margin-right: 50px;color:#FF0000">'''256M '''</span><span style="margin-right: 35px;color:#FF0000">'''90M '''</span><span style="margin-right: 80px;color:#FF0000">'''166M '''</span><span style="margin-right: 90px;color:#FF0000">'''36% /boot'''</span><br><span style="margin-right: 65px;">/dev/zram1</span><span style="margin-right: 60px;">194M </span><span style="margin-right: 50px;">9.9M </span><span style="margin-right: 50px;">170M </span><span style="margin-right: 90px;">6% /var/log</span><br><span style="margin-right: 100px;">tmpfs </span><span style="margin-right: 60px;">769M </span><span style="margin-right: 50px;">60K </span><span style="margin-right: 50px;">769M </span><span style="margin-right: 90px;">1% /run/user/1000</span><br><span style="margin-right: 100px;">tmpfs </span><span style="margin-right: 60px;">769M </span><span style="margin-right: 50px;">48K </span><span style="margin-right: 50px;">769M </span><span style="margin-right: 90px;">1% /run/user/0</span><br>|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li>2TB NVMe SSD</li>{| class="wikitable" style="width:800px;"|-|<p>orangepi@orangepi:~$ '''df -h'''</p><span style="margin-right: 80px;">Filesystem </span><span style="margin-right: 50px;">Size </span><span style="margin-right: 30px;">Used </span><span style="margin-right: 30px;">Avail</span><span style="margin-right: 50px;">Use% Mounted on</span><br><span style="margin-right: 110px;">udev</span><span style="margin-right: 60px;">3.8G </span><span style="margin-right: 50px;">8.0K </span><span style="margin-right: 70px;">3.8G </span><span style="margin-right: 90px;">1% /dev</span><br><span style="margin-right: 100px;">tmpfs </span><span style="margin-right: 50px;">769M </span><span style="margin-right: 30px;">1.4M </span><span style="margin-right: 70px;">768M </span><span style="margin-right: 90px;">1% /run</span><br><span style="margin-right: 25px;color:#FF0000">'''/dev/nvme0n1p2'''</span><span style="margin-right: 50px;color:#FF0000">'''1.9T '''</span><span style="margin-right: 35px;color:#FF0000">'''4.1G '''</span><span style="margin-right: 80px;color:#FF0000">'''1.8T '''</span><span style="margin-right: 90px;color:#FF0000">'''1% /'''</span><br><span style="margin-right: 100px;">tmpfs </span><span style="margin-right: 60px;">3.8G </span><span style="margin-right: 50px;">0</span><span style="margin-right: 50px;">3.8G </span><span style="margin-right: 90px;">0% /dev/shm</span><br><span style="margin-right: 100px;">tmpfs </span><span style="margin-right: 60px;">5.0M </span><span style="margin-right: 50px;">4.0K </span><span style="margin-right: 50px;">5.0M </span><span style="margin-right: 90px;">1% /run/lock</span><br><span style="margin-right: 65px;">/dev/zram2</span><span style="margin-right: 60px;">3.7G </span><span style="margin-right: 50px;">76K </span><span style="margin-right: 50px;">3.5G </span><span style="margin-right: 90px;">1% /tmp</span><br><span style="margin-right: 25px;color:#FF0000">'''/dev/nvme0n1p1'''</span><span style="margin-right: 50px;color:#FF0000">'''256M '''</span><span style="margin-right: 35px;color:#FF0000">'''90M '''</span><span style="margin-right: 80px;color:#FF0000">'''166M '''</span><span style="margin-right: 90px;color:#FF0000">'''36% /boot'''</span><br><span style="margin-right: 65px;">/dev/zram1</span><span style="margin-right: 60px;">194M </span><span style="margin-right: 50px;">9.9M </span><span style="margin-right: 50px;">170M </span><span style="margin-right: 90px;">6% /var/log</span><br><span style="margin-right: 100px;">tmpfs </span><span style="margin-right: 60px;">769M </span><span style="margin-right: 50px;">60K </span><span style="margin-right: 50px;">769M </span><span style="margin-right: 90px;">1% /run/user/1000</span><br><span style="margin-right: 100px;">tmpfs </span><span style="margin-right: 60px;">769M </span><span style="margin-right: 50px;">48K </span><span style="margin-right: 50px;">769M </span><span style="margin-right: 90px;">1% /run/user/0</span><br>|}</ol>
</li></ol>
<ol start="13" style="list-style-type: decimal;">
<li>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.</li>
{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''df sudo fix_mmc_ssd.sh'''|}{| class="wikitable" style="background-hcolor:#ffffdc;width:800px;" |-| <big>'''Exactly the same system means that the image name is exactly the same. Even if they are all Debian11 systems, the versions are different.'''</big>|}</ol><span id="how-to-use-balenaetcher-software-to-burn"></span>
Filesystem Size Used Avail Use% Mounted on=== How to use balenaEtcher software to burn ===
udev 3<ol style="list-style-type: decimal;"><li><p>First, you need to prepare an NVMe SSD.8G 8The PCIe supported by the M.0K 32 slot of the development board is PCIe2.8G 1% 0x1, and the theoretical maximum speed is 500MB/devs. PCIe3.0 and PCIe4.0 NVMe SSDs are also available, but the highest speed is only PCIe2.0x1.</p><ol style="list-style-type: lower-alpha;"><li>The M.2 2230 SSD is as follows</li>
tmpfs 769M 1[[File:pi3b-img73.4M 768M 1% png]]</runol><ol start="2" style="list-style-type: lower-alpha;"><li>The M.2 2242 SSD is as follows</li>
'''[[File:pi3b-img74.png]]</ol></devli></nvme0n1p2 118G 5ol><ol start="2" style="list-style-type: decimal;"><li>Then insert the NVMe SSD into the M.8G 111G 5% 2 PCIe interface of the development board and fix it</'''li>
tmpfs 3[[File:pi3b-img75.8G 0 png]]</ol><ol start="3.8G 0% /dev" style="list-style-type: decimal;"><li>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</shmli>
tmpfs 5[[File:pi3b-img76.0M png]]</ol><ol start="4" style="list-style-type: decimal;"><li><p>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.0K 5For the method of burning the Linux image to the TF card, please refer to the instructions in the two sections of [[Orange Pi 3B#Method of burning Linux image to TF card based on Windows PC|'''the method of burning the Linux image to the TF card based on the Windows PC''']] and [[Orange Pi 3B#Method of burning Linux image to TF card based on Ubuntu PC|'''the method of burning the Linux image to the TF card based on the Ubuntu PC''']].0M 1% </p></li><li><p>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</p></runli>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~/lockDesktop$ '''sudo fdisk -l | grep &quot;nvme0n1&quot;'''
tmpfs 3.8G 16K 3Disk /dev/nvme0n1: 1.8G 1% /tmp86 TiB, 2048408248320 bytes, 4000797360 sectors|}
Use the '''/dev/nvme0n1p1 256M 90M 166M 36% /bootlspci'''command to see an NVMe-related PCI device
{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~/dev/zram1 194M 9.9M 170M 6% /var/logDesktop$ '''lspci'''
tmpfs 769M 60K 769M 1% /run/user/100000:00.0 PCI bridge: Fuzhou Rockchip Electronics Co., Ltd Device 3566 (rev 01)
tmpfs 769M 48K 769M 1% 01:00.0 Non-Volatile memory controller: Realtek Semiconductor Co., Ltd. Device 5765 (rev 01)|}</runol><ol start="6" style="list-style-type: decimal;"><li>The balenaEtcher has been pre-installed in the Linux image, and the opening method is as follows:</user/0li>
<ol startdiv class="2figure" style="list-style-type: lower-alpha;"><li>2TB NVMe SSD</li></ol>
orangepi@orangepi[[File:~$ '''df pi3b-h'''img89.png]]
Filesystem Size Used Avail Use% Mounted </div>{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''If it is not pre-installed, for [[Orange Pi 3B#The method of downloading and installing the balenaEtcher version of arm64|how to download and install the arm64 version of balenaEtcher]], please refer to the instructions in the section onhow to download and install the arm64 version of balenaEtcher.'''</big>|}</ol><ol start="7" style="list-style-type: decimal;"><li>The interface after balenaEtcher is opened is as follows:</li>
udev 3.8G 8.0K 3.8G 1% /dev<div class="figure">
tmpfs 769M 1[[File:pi3b-img90.4M 768M 1% png]] </rundiv></ol><ol start="8" style="list-style-type: decimal;"><li><p>The method of using balenaEtcher to burn u-boot to the SPI Flash of the development board is as follows:</p><ol style="list-style-type: lower-alpha;"><li>First click on '''Flash from file'''</li>
'''/dev/nvme0n1p2 1.9T 4.1G 1.8T 1% /'''<div class="figure">
tmpfs 3[[File:pi3b-img91.8G 0 3.8G 0% /dev/shmpng]]
tmpfs 5</div></ol><ol start="2" style="list-style-type: lower-alpha;"><li>Then enter the '''/usr/lib/Linux-u-boot-legacy-orangepi3b_1.0M 4x.0K 5x_arm64''' directory, select '''rkspi_loader.0M 1% /runimg''', and click '''Open''' to open</lockli>
/dev/zram2 3.7G 76K 3.5G 1% /tmp<div class="figure">
'''/dev/nvme0n1p1 256M 90M 166M 36% /boot'''[[File:pi3b-img92.png]]
</devdiv></zram1 194M 15M 165M 9% ol><ol start="3" style="list-style-type: lower-alpha;"><li>The interface after opening '''rkspi_loader.img''' is as follows:</var/logli>
tmpfs 769M 60K 769M 1% [[File:pi3b-img93.png]]</runol><ol start="4" style="list-style-type: lower-alpha;"><li>Then click '''Select target'''</user/1000li>
tmpfs 769M 48K 769M 1% /run/user/0<div class="figure">
<ol start="13" style="list-style-type[[File: decimal;"><li>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 upi3b-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 issueimg94.</li></ol>png]]
orangepi@orangepi</div></ol><ol start="5" style="list-style-type:~$ lower-alpha;"><li>Then click '''sudo fix_mmc_ssd.shShow 2 hidden'''to open more options for storage devices</li>
'''Exactly the same system means that the image name is exactly the same. Even if they are all Debian11 systems, the versions are different.'''<div class="figure">
<span id="how[[File:pi3b-to-use-balenaetcher-software-to-burn"></span>=== How to use balenaEtcher software to burn ===img95.png]]
<ol style="list-style-type: decimal;"><li/div><p>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.</pol><ol start="6" style="list-style-type: lower-alpha;"><li>The M.2 2230 SSD is as follows<Then select the device name of SPI Flash '''/li><dev/ol>mtdblock0''', and click '''Select'''</li></ol>
[[File:pi3b-img73.png|189x136px]]<div class="figure">
<ol start="2" style="list-style-type[[File: lowerpi3b-alpha;"><li>The Mimg96.2 2242 SSD is as follows</li></ol>png]]
[[File</div></ol><ol start="7" style="list-style-type:pi3blower-img74.png|238x129px]]alpha;"><li>Then click '''Flash'''</li>
<ol startdiv class="2figure" style="list-style-type: decimal;"><li>Then insert the NVMe SSD into the M.2 PCIe interface of the development board and fix it</li></ol>
[[File:pi3b-img75img97.png|283x63px]]
</div></ol><ol start="38" style="list-style-type: decimallower-alpha;"><li>The position of the SPI Flash on the development board is shown in the figure belowThen click '''Yes, no other settings are required before starting the programmingI'm sure'''</li></ol>
[[File:pi3b-img76.png|261x198px]]<div class="figure">
<ol start="4" style="list[[File:pi3b-style-type: decimal;"><li><p>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 systemimg98. For the method of burning the Linux image to the TF card, please refer to the instructions in the two sections of [[\l|'''the method of burning the Linux image to the TF card based on the Windows PC''']] and [[\l|'''the method of burning the Linux image to the TF card based on the Ubuntu PC'''png]].</p></li><li><p>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</p></li></ol>
orangepi@orangepi</div></ol><ol start="9" style="list-style-type:~/Desktop$ lower-alpha;"><li>Then enter the password '''sudo fdisk -l | grep &quot;nvme0n1&quot;orangepi'''of the development board Linux system, and it will start burning the u-boot image into the SPI Flash</li>
Disk /dev/nvme0n1: 1.86 TiB, 2048408248320 bytes, 4000797360 sectors<div class="figure">
Use the '''lspci''' command to see an NVMe[[File:pi3b-related PCI deviceimg99.png]]
orangepi@orangepi</div></ol><ol start="10" style="list-style-type: lower-alpha;"><li>The display of the burning process is as follows:~</Desktop$ '''lspci'''li>
00:00.0 PCI bridge: Fuzhou Rockchip Electronics Co., Ltd Device 3566 (rev 01)<div class="figure">
01[[File:00.0 Nonpi3b-Volatile memory controller: Realtek Semiconductor Co., Ltdimg100. Device 5765 (rev 01)png]]
</div></ol><ol start="611" style="list-style-type: decimallower-alpha;"><li>The balenaEtcher has been pre-installed in the Linux image, and the opening method display after burning is as follows:</li></ol>
<div class="figure">
[[File:pi3b-img89img101.png|506x249px|IMG_256]]
</div>'''If it is not pre-installed, for [[\l|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.''' </ol start="7" style="list-style-type: decimal;"><li>The interface after balenaEtcher is opened is as follows:</li></ol> <div class="figure"> [[File:pi3b-img90.png|406x207px|IMG_256]] </div><ol start="89" style="list-style-type: decimal;"><li><p>The method of using balenaEtcher burning the Linux system in the TF card to burn u-boot the NVMe SSD (this method is equivalent to cloning the system in the SPI Flash of TF card to the development board is as follows:NVMe SSD)</p>
<ol style="list-style-type: lower-alpha;">
<li>First click on '''Flash from fileClone drive'''</li></ol></li></ol>
<div class="figure">
[[File:pi3b-img91img102.png|406x205px|IMG_256]]
</div></ol>
<ol start="2" style="list-style-type: lower-alpha;">
<li>Then enter select the device name of the TF card '''/usrdev/lib/Linux-u-boot-legacy-orangepi3b_1.x.x_arm64''' directory, select '''rkspi_loader.imgmmcblk1''', and click '''Open''' to open</li></ol>
<div class="figure">
[[File:pi3b-img92img103.png|563x110px|IMG_256]]
</div></ol>
<ol start="3" style="list-style-type: lower-alpha;">
<li>The interface after opening '''rkspi_loader.img''' the TF card is as follows:</li> </oldiv class="figure">
[[File:pi3b-img93img104.png|379x181px]]
</div></ol>
<ol start="4" style="list-style-type: lower-alpha;">
<li>Then click '''Select target'''</li></ol>
<div class="figure">
[[File:pi3b-img94.png|379x171px|IMG_256]]
</div></ol>
<ol start="5" style="list-style-type: lower-alpha;">
<li>Then click '''Show 2 hidden''' to open more options for storage devices</li></ol>
<div class="figure">
[[File:pi3b-img95.png|385x155px|IMG_256]]
</div></ol>
<ol start="6" style="list-style-type: lower-alpha;">
<li>Then select the device name of SPI Flash the NVMe SSD '''/dev/mtdblock0nvme0n1''', and click '''Select'''</li></ol>
<div class="figure"> [[File:pi3b-img96img105.png|389x264px|IMG_256]] </divol>
<ol start="7" style="list-style-type: lower-alpha;">
<li>Then click '''Flash'''</li></ol>
<div class="figure">
[[File:pi3b-img97img106.png|394x268px|IMG_256]]
</div></ol>
<ol start="8" style="list-style-type: lower-alpha;">
<li>Then click '''Yes, I'm sure'''</li></ol>
<div class="figure">
[[File:pi3b-img98img107.png|396x269px|IMG_256]]
</div></ol><ol start="9" style="list-style-type: lower-romanalpha;"><li>Then enter the password '''orangepi''' of the Linux system on the development board Linux system, and it will start burning the u-boot Linux image into to the SPI FlashSSD</li></ol>
<div class="figure">
[[File:pi3b-img99img108.png|393x269px|IMG_256]]
</div></ol>
<ol start="10" style="list-style-type: lower-alpha;">
<li>The display of the burning process is as follows:</li></ol> [[File:pi3b-img109.png]]
<div class="figure">
[[File:pi3b-img100img110.png|397x272px|IMG_256]]
</div></ol>
<ol start="11" style="list-style-type: lower-alpha;">
<li>The display after burning is as follows:</li> [[File:pi3b-img111.png]]</ol><ol start="12" style="list-style-type: lower-alpha;"><li><p>Then you need to expand the capacity of the rootfs partition in the NVMe SSD. The steps are as follows:</p><ol style="list-style-type: none;"><li><p>a) Open '''GParted''' first, if the system does not have Gparted pre-installed, please use the apt command to install it</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''sudo apt-get install -y gparted'''</p>|}</li>
<div class="figure">
[[File:pi3b-img101img112.png|395x225px|IMG_256]]
</div></ol><ol start="92" style="list-style-type: decimalnone;"><li><p>The method b) Then enter the password orangepi 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)</p><ol style="list-style-type: lower-alpha;"><li>First , and click '''Clone driveAuthenticate'''</li></ol></li></ol> <div class="figure">
[[File:pi3b-img102img113.png|386x204px|IMG_256]]</ol><ol start="3" style="list-style-type: none;"><li>c) Then click '''Fix'''</li>
[[File:pi3b-img114.png]]</divol><ol start="24" style="list-style-type: lower-alphanone;"><li>d) Then select the device name of the TF card '''/dev/mmcblk1'''NVMe SSD</li></ol>
<div class="figure">
[[File:pi3b-img103img115.png|379x256px|IMG_256]]
</div></ol><ol start="35" style="list-style-type: lower-alphanone;"><li>e) The display interface after opening the TF card selecting NVMe SSD is as follows:</li></ol>
<div class="figure">
[[File:pi3b-img104img116.png|381x191px|IMG_256]]
</div></ol><ol start="46" style="list-style-type: lower-alphanone;"><li>f) Then select the '''/dev/nvme0n1p2''' partition, click the right button again, and then select '''Select targetResize/Move'''</li></ol>
<div class="figure">
[[File:pi3b-img94img117.png|379x171px|IMG_256]]
</div></ol><ol start="57" style="list-style-type: lower-alphanone;"><li>g) Then click '''Show 2 hidden''' drag the capacity to open more options for storage devicesthe maximum at the position shown in the figure below</li></ol>
[[File:pi3b-img118.png]]<div class/ol><ol start="8" style="figurelist-style-type: none;"><li>h) Then click '''Resize/Move'''</li>
[[File:pi3b-img95img119.png|385x155px|IMG_256]]</ol><ol style="list-style-type: none;"><li>i) Then click the green '''√''' in the position below</li>
[[File:pi3b-img120.png]]</divol><ol start="610" style="list-style-type: lower-alphanone;"><li>j) Then select the device name of the NVMe SSD '''/dev/nvme0n1''', and click '''SelectApply'''</li></ol>
[[File:pi3b-img105img121.png|386x264px]]</ol><ol start="11" style="list-style-type: none;"><li>k) Then click '''Close''' to close</li>
[[File:pi3b-img122.png]]</ol></li></ol><ol start="713" style="list-style-type: lower-alpha;"><li>At this point, you can use the '''sudo poweroff''' command to shut down. Then click 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.</li></ol></li></ol><!-- --><ol start="10" style="list-style-type: decimal;"><li><p>Step '''Flash9'''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:</p><ol style="list-style-type: lower-alpha;"><li><p>Upload the Linux image file to the Linux system of the development board</p></li><li><p>Then use balenaEtcher to burn</olp></li>
<div class="figure">
[[File:pi3b-img106img123.png|389x264px|IMG_256]] </div></ol><ol start="3" style="list-style-type: lower-alpha;"><li>'''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.'''</li></ol></li></ol><span id="how-to-burn-android-image-to-tf-card"></span> == How to burn Android image to TF card ==
</div><ol startspan id="8" style="listmethod-of-burning-android-image-to-tf-card-through-styleusb2.0-type: lowerburning-alpha;port"><li>Then click '''Yes, I'm sure'''</li></olspan>=== 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
<div class="figure">
::[[File:pi3b-img107img16.png|392x268px|IMG_256]]
</div>
<ol start="3" style="list-style-type: decimal;"><li><p>Then download Rockchip driver '''DriverAssitant_v5.12.zip''' and burning tool '''RKDevTool_Release_v3.15.zip''' from [http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-3B.html '''Orange Pi's data download page''']</p></li><li><p>Then download the Android image from [http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-3B.html '''Orange Pi's download page'''].</p><ol style="list-style-type: lower-romanalpha;"><li>Then enter After opening the password orangepi download link of the Linux system on Android image, you can see the development boardfollowing two types of Android images, please select the image in the '''TF card and it will start burning the Linux eMMC startup image ''' folder to the SSDdownload</li></ol>
<div class="figure">
[[File:pi3b-img108img124.png|390x267px|IMG_256]]
</div>
</ol><ol start="102" style="list-style-type: lower-alpha;"><li><p>After entering the '''TF card and eMMC startup image''' folder, you can see the following two images, the difference between them is:</p><ol style="list-style-type: none;"><li><p>a) The first image is dedicated to HDMI display of and supports 4K display. If you don't use LCD screen, please download the burning process is as follows:image without lcd</p></li><li><p>b) If you want to use lcd screen, please choose image with lcd</p></olli>
[[File:pi3b-img109img125.png|393x212px]]</ol></li></ol></li></ol><ol start="5" style="list-style-type: decimal;"><li><p>Then use the decompression software to decompress the compressed package of the downloaded Android image. Among the decompressed files, the file ending with &quot;.img&quot; is the Android image file, and the size is more than 1GB</p></li><li><p>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</p></li>
[[File:pi3b-img31.png]]<div class/ol><ol start="7" style="figurelist-style-type: decimal;"><li><p>After opening '''DriverInstall.exe''', the steps to install the Rockchip driver are as follows</p><ol style="list-style-type: lower-alpha;"><li>Click the &quot;'''Driver Installation'''&quot; button</li>
[[File:pi3b-img110img32.png|395x205px|IMG_256]]</ol><ol start="2" style="list-style-type: lower-alpha;"><li>After waiting for a period of time, a pop-up window will prompt &quot;'''The driver is installed successfully'''&quot;, and then click the &quot;'''OK'''&quot; button.</li>
[[File:pi3b-img33.png]]</divol></li></ol><ol start="118" style="list-style-type: lower-alphadecimal;"><li>The display after burning is 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</li></ol>
[[File:pi3b-img111img34.png|398x227px]]</ol><ol start="9" style="list-style-type: decimal;"><li>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 &quot;'''No device found'''&quot;</li>
[[File:pi3b-img35.png]]</ol><ol start="1210" style="list-style-type: lower-alphadecimal;"><li><p>Then you need start burning the Android image to expand the capacity of the rootfs partition in the NVMe SSD. The steps are as follows:TF card</p>
<ol style="list-style-type: lower-alpha;">
<li><p>Open '''GParted''' firstFirst, if connect the development board to the Windows computer through the system does not have Gparted preUSB2.0 male-installed, please use the apt command to install it</p><p>orangepi@orangepi:~$ '''sudo apt-get install -y gparted'''</p>male data cable. The position of the USB2.0 programming interface of the development board is shown in the figure below</li></ol></li></ol>
<div class="figure">
[[File:pi3b-img112img36.png|576x215px|IMG_256]]
</div></ol>
<ol start="2" style="list-style-type: lower-alpha;">
<li><p>Then enter make sure that the password orangepi of development board is not inserted into the Linux system, TF card and click '''Authenticate'''not connected to the power supply</p></li><li><p>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:</p></olli>
[[File:pi3b-img113img37.png|356x173px]]</ol><ol start="4" style="list-style-type: lower-alpha;"><li>Then connect the power supply of the Type-C interface to the development board, and power on</li>
[[File:pi3b-img38.png]]</ol><ol start="35" style="list-style-type: lower-alpha;"><li>Then click 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 &quot;'''Fixfound a MASKROM device'''&quot;</li></ol>
[[File:pi3b-img114img39.png|355x261px]]</ol><ol start="46" style="list-style-type: lower-alpha;"><li><p>Then insert the TF card into the development board</p></li><li><p>Then please select NVMe SSD'''advanced features'''</p><p>[[File:pi3b-img126.png]]</p></li><li><p>Then click the position shown in the figure below</olp><p>[[File:pi3b-img127.png]]</p></li><li><p>Then select '''rk3566_MiniLoaderAll.bin''' in the '''MiniLoader''' folder downloaded earlier, and click to open</p></li>
<div class="figure">
[[File:pi3b-img115img68.png|452x187px|IMG_256]] </div><ol start="5" style="list-style-type: lower-alpha;"><li>The display interface after selecting NVMe SSD is as follows:</li></ol>
</div></ol>
<ol start="10" style="list-style-type: lower-alpha;">
<li><p>Then click '''download'''</p>
<p>[[File:pi3b-img128.png]]</p></li>
<li><p>The display after downloading '''rk3566_MiniLoaderAll.bin''' is shown in the figure below</p>
<p>[[File:pi3b-img129.png]]</p></li>
<li><p>Then select the storage device as '''SD''', and then click '''Switch Storage'''</p>
<div class="figure">
[[File:pi3b-img116img130.png|451x187px|IMG_256]]
</div><ol start="6" style="list-style-type: lower-alpha;"/li><li>Then select <p>The display of successful switching is shown in the '''/dev/nvme0n1p2''' partition, click the right button again, and then select '''Resize/Move'''figure below</lip></olli>
<div class="figure">
[[File:pi3b-img117img131.png|448x345px|IMG_256]]
</div></ol><ol start="714" style="list-style-type: lower-alpha;"><li>Then drag click the capacity to &quot;'''Upgrade Firmware'''&quot; column of the maximum at the position shown in the figure belowburning tool</li> [[File:pi3b-img132.png]]</ol><ol start="15" style="list-style-type: lower-alpha;"><li>Then click the &quot;'''Firmware'''&quot; button to select the path of the Android image that needs to be burned</li>
[[File:pi3b-img118img133.png|339x210px]]</ol><ol start="16" style="list-style-type: lower-alpha;"><li>Finally, click the &quot;'''Upgrade'''&quot; 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.</li>
<ol startdiv class="8figure" style="list-style-type: lower-alpha;"><li>Then click '''Resize/Move'''</li></ol>
[[File:pi3b-img119img134.png|339x212px]]
</div></ol style="list-style-type: lower-roman;"></li>Then click the green '''√''' in the position below</liol><span id="how-to-use-sddisktool-to-burn-android-image-to-tf-card"></olspan>
[[File:pi3b-img120.png|425x166px]]=== How to use SDDiskTool to burn Android image to TF card ===
<ol startstyle="list-style-type: decimal;"><li><p>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</p></li><li><p>Then use the card reader to insert the TF card into the computer</p></li><li><p>Then download the SDDiskTool programming tool from the [http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-3B.html '''Orange Pi data download page'''], '''<span style="10color:#FF0000" >please make sure that the version of the SDDiskTool tool is the latest v1.72</span>.'''</p></li><li><p>Then download the Android11 image from the [http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-3B.html '''Orange Pi data download page''']</p><ol style="list-style-type: lower-alpha;"><li>Then click 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 '''ApplyTF card and eMMC startup image'''folder to download</li></ol>
[[File:pi3b-img121.png|378x276px]]<div class="figure">
<ol start="11" style="list-style-type[[File: lowerpi3b-alpha;"><li>Then click '''Close''' to close</li></ol>img124.png]]
[[File</div></ol><ol start="2" style="list-style-type:pi3blower-img122.png|383x234px]]alpha;"><li>After entering the '''TF card and eMMC boot image''' folder, you can see the following two images, the difference between them is:</li>
<ol start="13" style="list-style-type: lower-alphanone;"><li>At this point, <p>a) The image without lcd is specially used for HDMI display and supports 4K display. If you can do not use the '''sudo poweroff''' command to shut down. Then LCD screen, please pull out download the TF card, and then short press the power button image without lcd</p></li><li><p>b) If you want to turn onuse LCD screen, then the Linux system in SPIFlash+NVMe SSD will be started.please choose image with lcd</lip></olli>
<![[File:pi3b-- -->img125.png]]<ol start="10" style="list-style-type: decimal;"><li><p>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:</p><ol style="list-style-type: lower-alpha;"><li><p>Upload the Linux image file to the Linux system of the development board</p></li><li><p>Then use balenaEtcher to burn</p></li></ol>
</li></ol>
<ol start="5" style="list-style-type: decimal;">
<li><p>Then use decompression software to decompress the compressed package of the downloaded Android image. Among the decompressed files, the file ending with &quot;.img&quot; is the Android image file, and the size is more than 1GB</p></li>
<li><p>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</p></li>
[[File:pi3b-img135.png]]<div class/ol><ol start="7" style="figurelist-style-type: decimal;"><li>After opening '''SDDiskTool''', if the TF card is recognized normally, the inserted disk device will be displayed in the &quot;'''Select Removable Disk Device'''&quot; column. '''<span style="color:#FF0000">Please make sure that the displayed disk device is consistent with the drive letter of the TF card you want to burn</span>''', if there is no display, you can try to unplug the TF card</li>
[[File:pi3b-img123img136.png|529x333px|图片1]]</ol><ol start="8" style="list-style-type: decimal;"><li>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</li> [[File:pi3b-img137.png]]</ol><ol start="9" style="list-style-type: decimal;"><li><p>Then start to write the Android image to the TF card</p><ol style="list-style-type: lower-alpha;"><li><p>First check &quot;SD Boot&quot; in &quot;Select Function Mode&quot;</p></li><li><p>Then select the path of the Android image in the &quot;Select to upgrade firmware&quot; column</p></li><li><p>Finally click the &quot;Start Create&quot; button to start burning the Android image to the TF card</p></li> [[File:pi3b-img138.png]]</ol></li></ol><ol start="10" style="list-style-type: decimal;"><li>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</li> [[File:pi3b-img139.png]]</ol><span id="how-to-burn-android-image-to-emmc"></span> == How to burn Android image to eMMC ==
</div><ol start{| class="3wikitable" style="listbackground-style-typecolor:#ffffdc;width: lower-alpha800px;">|-| <libig>'''After using this method to burn Note, after burning the imageinto eMMC, there is no need to manually expand if the capacitytest finds that it cannot be started, please clear the SPIFlash and it will automatically expand try again. For the capacity at method of clearing SPIFlash, please refer to [[Orange Pi 3B#Using RKDevTool to clear SPIFlash|the first startupmethod of using RKDevTool to clear SPIFlash]].'''</libig>|} <span id="method-of-burning-android-image-into-emmc-through-usb2.0-burning-port"></span>=== Method of burning Android image into eMMC through USB2.0 burning port === {| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''Note that all the following operations are performed on a Windows computer.'''</olbig>|}
<span idol style="howlist-to-burn-android-image-to-tfstyle-cardtype: decimal;"><li><p>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.</spanp>== How to burn Android image to TF card ==<p>The eMMC module and the method of plugging into the development board are as follows:</p></li>
<span id="method[[File:pi3b-of-burning-android-image-to-tf-card-through-usb2img61.0-burningpng|400px]] [[File:pi3b-port"></span>=== Method of burning Android image to TF card through USB2img62.0 burning port ===png|400px]]
# First prepare a TF card with 8GB or larger capacity[[File:pi3b-img63. The transmission speed of the TF card must be class10 or above. It is recommended to use a TF card of SanDisk and other brandspng|800px]]</ol><ol start="2" style="list-style-type: decimal;"># <li>You also need to prepare a good quality USB2.0 male-to-male data cable</li>
<div class="figure">
[[File:pi3b-img16.png|141x138px|D6BB9058-CDC3-42d7-A7FC-FBF630D886B7]]
</div></ol>
<ol start="3" style="list-style-type: decimal;">
<li><p>Then download Rockchip driver '''DriverAssitant_v5.12.zip''' and burning tool '''RKDevTool_Release_v3.15.zip''' from [http://www.orangepi.org/html/serviceAndSupporthardWare/indexcomputerAndMicrocontrollers/service-and-support/Orange-Pi-3B.html '''Orange Pi's data download page''']</p></li><li><p>Then download the Android image from '''[http://www.orangepi.org/html/serviceAndSupporthardWare/computerAndMicrocontrollers/service-and-support/indexOrange-Pi-3B.html '''Orange Pi's download page].'''].</p>
<ol style="list-style-type: lower-alpha;">
<li>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 imagefolder''' folder to download</li></ol></li></ol>
<div class="figure">
[[File:pi3b-img124.png|340x108px|e6986fc9c8fc078e8cb6a9c39b76fb8]]
</div></ol>
<ol start="2" style="list-style-type: lower-alpha;">
<li><p>After entering the '''TF card and eMMC startup imagefolder''' folder, you can see the following two images, the difference between them is:</p><ol style="list-style-type: lower-alphanone;"><li><p>a) The first image is dedicated to HDMI display and supports 4K display. If you don’t don't use LCD screen, please download the image without lcd</p></li><li><p>b) If you want to use lcd screen, please choose image with lcd</p></li> [[File:pi3b-img125.png]]</ol></li></ol>
</li></ol>
 
[[File:pi3b-img125.png|264x58px]]
 
<ol start="5" style="list-style-type: decimal;">
<li><p>Then use the decompression software to decompress the compressed package of the downloaded Android image. Among the decompressed files, the file ending with &quot;.img&quot; is the Android image file, and the size is more than 1GB</p></li><li><p>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</p></li></ol> [[File:pi3b-img31.png|575x169px]]
[[File:pi3b-img31.png]]
</ol>
<ol start="7" style="list-style-type: decimal;">
<li><p>After opening '''DriverInstall.exe''', the steps to install the Rockchip driver are as follows</p>
<ol style="list-style-type: lower-alpha;">
<li>Click the &quot;'''Driver Installation'''&quot; button</li></ol></li></ol> [[File:pi3b-img32.png|300x157px]]
[[File:pi3b-img32.png]]
</ol>
<ol start="2" style="list-style-type: lower-alpha;">
<li>After waiting for a period of time, a pop-up window will prompt &quot;'''The driver is installed successfully'''&quot;, and then click the &quot;'''OK'''&quot; button.</li></ol> [[File:pi3b-img33.png|315x164px]]
[[File:pi3b-img33.png]]
</ol>
</li></ol>
<ol start="8" style="list-style-type: decimal;">
<li>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</li></ol> [[File:pi3b-img34.png|454x134px]]
[[File:pi3b-img34.png]]
</ol>
<ol start="9" style="list-style-type: decimal;">
<li>After opening the '''RKDevTool''' burning tool, because the computer has 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 &quot;'''No device found'''&quot;</li></ol> [[File:pi3b-img35.png|442x208px]]
[[File:pi3b-img35.png]]
</ol>
<ol start="10" style="list-style-type: decimal;">
<li><p>Then start burning the Android image to the TF cardinto eMMC</p>
<ol style="list-style-type: lower-alpha;">
<li>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</li></ol></li></ol>
<div class="figure">
[[File:pi3b-img36.png|275x116px|C:\Users\orangepi\Desktop\用户手册插图\pi 3b\1691131157154(1).jpg1691131157154(1)]]
</div></ol>
<ol start="2" style="list-style-type: lower-alpha;">
<li><p>Then make sure that the development board is not inserted into the TF card and not connected to the power supply</p></li>
<li><p>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:</p></li></ol> [[File:pi3b-img37.png|289x100px]]
[[File:pi3b-img37.png]]
</ol>
<ol start="4" style="list-style-type: lower-alpha;">
<li>Then connect the power supply of the Type-C interface to the development board, and power on</li></ol> [[File:pi3b-img38.png|305x94px]]
[[File:pi3b-img38.png]]
</ol>
<ol start="5" style="list-style-type: lower-alpha;">
<li><p>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 &quot;'''found a MASKROM device'''&quot;</p>[[File:pi3b-img39.png]]</li><li><p>Then please select '''Advanced Features'''</p><p>[[File:pi3b-img126.png]]</p></li><li><p>Then click the position shown in the figure below</p><p>[[File:pi3b-img127.png]]</p></li></ol>
[[File:pi3b-img39.png|457x215px]] <ol start="68" style="list-style-type: lower-alpha;"><li><p>Then insert the TF card into the development board</p></li><li><p>Then please select '''advanced features'''</p><p>[[File:pi3b-img126.png|458x138px]]</p></li><li><p>Then click the position shown in the figure below</p><p>[[File:pi3b-img127.png|459x216px]]</p></li><li><p>Then select Select '''rk3566_MiniLoaderAll.bin''' in the '''MiniLoader''' folder downloaded earlier, and click to open</p>.</li></ol>
<div class="figure">
[[File:pi3b-img68.png|459x216px|SIS5H0S2@F5M2D(6ANZEUPG]]
</div></ol><ol start="109" style="list-style-type: lower-alpha;"><li><p>Then click '''downloadDownload'''</p><p>[[File:pi3b-img128.png|472x222px]]</p></li><li><p>The display after downloading '''rk3566_MiniLoaderAllMiniLoaderAll.bin''' is shown in the figure below</p><p>[[File:pi3b-img129img140.png|474x227px]]</p></li><li><p>Then select the storage device as '''SDEMMC''', and then click Switch '''Switch Storage'''</p><div classp>[[File:pi3b-img141.png]]</p></li><li><p>The display of successful switching is shown in the figure below</p></li> [[File:pi3b-img142.png]]</ol><ol start="figure13" style="list-style-type: lower-alpha;"><li>Then click the &quot;'''Upgrade Firmware'''&quot; column of the burning tool</li>
[[File:pi3b-img130img132.png|477x222px|D~T2CO%X~K2@ELR98)BVP~2]]</ol><ol start="14" style="list-style-type: lower-alpha;"><li>Then click the &quot;'''Firmware'''&quot; button to select the path of the Android image that needs to be burned</li>
[[File:pi3b-img133.png]]</divol></liol start="15" style="list-style-type: lower-alpha;"><li><p>The display of successful switching Finally, click the &quot;'''Upgrade'''&quot; button to start burning, and the log during the burning process is shown in the figure below</p>. After burning is completed, the Android system will start automatically.</li></ol>
<div class="figure">
[[File:pi3b-img131img134.png|474x223px|QFVLTK~19N32OK2UGH{D{AK]]
</div></ol></li></ol start><span id="14how-to-burn-android11-image-into-emmc-via-tf-card"></span> === How to burn Android11 image into eMMC via TF card === {| class="wikitable" style="listbackground-style-typecolor:#ffffdc;width: lower-alpha800px;">|-| <libig>Then click the &quot;'''Upgrade FirmwareNote that all the following operations are performed on a Windows computer.'''&quot; column of the burning tool</li></olbig>|}
[[File# 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:pi3b-img132.png|477x224px]]
<ol start="15" style="list-style::[[File:pi3b-typeimg61.png|400px]] [[File: lowerpi3b-alpha;"><li>Then click the &quot;'''Firmware'''&quot; button to select the path of the Android image that needs to be burned</li></ol>img62.png|400px]]
::[[File:pi3b-img133img63.png|444x209px800px]]
<ol start="162" style="list-style-type: lower-alphadecimal;"><li>Finally, click <p>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</p></li><li><p>Then use the card reader to insert the TF card into the computer</p></li><li><p>Then download the SDDiskTool programming tool from the &quot;[http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-3B.html '''UpgradeOrange Pi data download page'''&quot; button to start burning], and '''<span style="color:#FF0000">please make sure that the log during version of the burning process SDDiskTool tool is shown in the figure belowlatest v1. After burning is completed, 72</span>'''</p></li><li><p>Then download the Android system will start automaticallyimage from [http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-3B.html '''Orange Pi's download page''']</p><ol style="list-style-type: lower-alpha;"><li>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</olli>
<div class="figure">
[[File:pi3b-img134img124.png|455x214px|GO~ZSPN`B]JCQM`@_9UU8[R]]
</div></ol><span idol start="2" style="howlist-tostyle-usetype: lower-sddisktoolalpha;"><li><p>After entering '''the TF card and eMMC boot image folder''', you can see the following tow images, the difference between them is:</p><ol style="list-to-burn-androidstyle-type: none;"><li><p>a) The first image-is dedicated to-tf-card"HDMI display and supports 4K display. If you don't use LCD screen, please download the image without lcd</p></spanli>=== How <li><p>b) If you want to use SDDiskTool to burn Android lcd screen, please choose image to TF card ===with lcd</p></li>
<ol style="list-style-type: decimal;"><li><p>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</p></li><li><p>Then use the card reader to insert the TF card into the computer</p></li><li><p>Then download the SDDiskTool programming tool from the [http[File://wwwpi3b-img125.orangepi.org/html/serviceAndSupport/index.html '''Orange Pi data download page'''png]], '''please make sure that the version of the SDDiskTool tool is the latest v1.72.'''</p></li><li><p>Then download '''the Android11 image from the Orange Pi download''' '''page'''</p><ol style="list-style-type: lower-alpha;"><li>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</li></ol>
</li></ol>
<ol start="6" style="list-style-type: decimal;">
<li><p>Then use the decompression software to decompress the compressed package of the downloaded Android image. Among the decompressed files, the file ending with &quot;.img&quot; is the Android image file, and the size is more than 1GB</p></li>
<li><p>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</p></li>
[[File:pi3b-img135.png]]<blockquote/ol><div classol start="figure8"style="list-style-type: decimal;"><li>After opening '''SDDiskTool''', if the TF card is recognized normally, the inserted disk device will be displayed in the &quot;'''Select Removable Disk Device'''&quot; column. '''<span style="color:#FF0000">Please make sure that the displayed disk device is consistent with the drive letter of the TF card you want to burn</span>''', if there is no display, you can try to unplug the TF card.</li>
[[File:pi3b-img124img136.png|340x108px|e6986fc9c8fc078e8cb6a9c39b76fb8]]</ol><ol start="9" style="list-style-type: decimal;"><li>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</li>
[[File:pi3b-img137.png]]</div></blockquoteol><ol start="210" style="list-style-type: decimal;"><li><p>Then start to write the Android image into the TF card</p><ol style="list-style-type: lower-alpha;"><li>After entering <p>First confirm that the displayed drive letter is the drive letter corresponding to the TF card under &quot;'''Select Removable Disk Device'''&quot;</p></li><li><p>Then select &quot;'''Firmware Upgrade'''&quot; in &quot;'''TF card and eMMC boot imageSelect Function Mode''' folder, you can see &quot;</p></li><li><p>Then select the path of the following two images, Android firmware in the difference between them is:&quot;'''Select Upgrade Firmware'''&quot; column</p></li><li><p>Finally click the &quot;'''Start Create'''&quot; button to start burning</olp></li>
[[File:pi3b-img143.png]]</ol><!-- --/li></ol><ol start="11" style="list-style-type: lower-alphadecimal;"><li><p>The image without lcd After the burning is specially used for HDMI completed, the display and supports 4K display. If you do not use is as shown in the LCD screenfigure below, please download the image without lcd</p></li><li><p>If and then you want to use LCD screen, please choose image with lcd</p>can exit SDDiskTool</li></ol>
[[File:pi3b-img125img144.png|281x62px]]</ol><ol start="12" style="list-style-type: decimal;"><li><p>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.</p></li><li><p>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</p></li>
[[File:pi3b-img145.png]]</ol><ol start="514" style="list-style-type: decimal;"><li><p>Then use decompression software to decompress When the compressed package of the downloaded Android image. Among HDMI monitor displays the decompressed filesfollowing information, it means that the file ending with &quot;.img&quot; is burning of the Android image file, and into the size is more than 1GB</p></li><li><p>Then use decompression software to decompress '''SDDiskTool_v1eMMC has been completed.72.zip'''At this time, this software does not need to the TF card can be installedpulled out, just find '''SD_Firmware_Tool.exe''' and then the Android system in the decompressed folder and open it</p>eMMC will start.</li></ol>
[[File:pi3b-img135img146.png|415x99px]]</ol><span id="how-to-burn-android-image-to-spiflashnvme-ssd"></span>
<ol start="7" style="list-style-type: decimal;"><li>After opening '''SDDiskTool''', if the TF card is recognized normally, the inserted disk device will be displayed in the &quot;'''Select Removable Disk Device'''&quot; column. P'''lease make sure that the displayed disk device is consistent with the drive letter of the TF card you want How to burn''', if there is no display, you can try Android image to unplug the TF card</li></ol>SPIFlash+NVMe SSD ==
[[File{| class="wikitable" style="background-color:pi3b#ffffdc;width:800px;" |-img136| <big>'''Note that all the following operations are performed on a Windows computer.png'''</big>|267x228px]]}
<ol start="8" style="list-style-type: decimal;"><li>After confirming the drive letter<p>First, you can format the TF card first, click the '''restore disk button''' in '''SDDiskTool,''' or use the '''SD Card Formatter''' mentioned above need to format the TF cardprepare an NVMe SSD solid state drive</p><ol style="list-style-type: lower-alpha;"><li>The M.2 2230 SSD is as follows</olli>
[[File:pi3b-img137img73.png|264x226px]]</ol><ol start="2" style="list-style-type: lower-alpha;"><li>The M.2 2242 SSD is as follows</li>
<ol start="9" style="list-style-type[[File: decimal;"><li><p>Then start to write the Android image to the TF card</p><ol style="listpi3b-style-type: lower-alpha;"><li><p>First check &quot;SD Boot&quot; in &quot;Select Function Mode&quot;</p></li><li><p>Then select the path of the Android image in the &quot;Select to upgrade firmware&quot; column</p></li>img74.png]]<li><p>Finally click the &quot;Start Create&quot; button to start burning the Android image to the TF card</p></li></ol>
</li></ol>
<ol start="2" style="list-style-type: decimal;">
<li>Then insert the NVMe SSD into the M.2 PCIe interface of the development board and fix it</li>
[[File:pi3b-img138img75.png|286x242px]]</ol><ol start="3" style="list-style-type: decimal;"><li>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</li>
[[File:pi3b-img76.png]]</ol><ol start="104" style="list-style-type: decimal;"><li>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 You also need to prepare a good quality USB2.0 male-to start-male data cable</li></ol>
[[File:pi3b-img139.png|288x244px]]<div class="figure">
<span id="how[[File:pi3b-to-burn-android-image-to-emmc"></span>== How to burn Android image to eMMC ==img16.png]]
'''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''' [[\l|the method of using RKDevTool to clear SPIFlash]]'''.''' <span id="method-of-burning-android-image-into-emmc-through-usb2.0-burning-port"></span>=== Method of burning Android image into eMMC through USB2.0 burning port === '''Note that all the following operations are performed on a Windows computer.''' <ol style="list-style-type: decimal;"><li><p>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.</p><p>The eMMC module and the method of plugging into the development board are as follows:</p></lidiv></ol> [[File:pi3b-img61.png|115x84px]] [[File:pi3b-img62.png|120x87px]] [[File:pi3b-img63.png|286x133px]] <ol start="2" style="list-style-type: decimal;"><li>You also need to prepare a good quality USB2.0 male-to-male data cable</li></ol> <div class="figure"> [[File:pi3b-img16.png|141x138px|D6BB9058-CDC3-42d7-A7FC-FBF630D886B7]] </div><ol start="35" style="list-style-type: decimal;"><li><p>Then download Rockchip driver '''DriverAssitant_v5.12.zip''' and burning tool '''RKDevTool_Release_v3.15.zip''' from [http://www.orangepi.org/html/serviceAndSupport/index.html '''Orange Pi's data download page''']</p></li><li><p>Then download the Android image from '''[http://www.orangepi.org/html/serviceAndSupport/index.html Orange Pi's download page].'''of Android11</p>
<ol style="list-style-type: lower-alpha;">
<li>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 S'''TF card and eMMC startup PIFlash-NVME SSD boot image folder''' to download</li></ol></li></ol>
<div class="figure">
[[File:pi3b-img124.png|340x108px|e6986fc9c8fc078e8cb6a9c39b76fb8]]
</div>
</ol>
<ol start="2" style="list-style-type: lower-alpha;">
<li><p>After entering the '''TF card and eMMC startup SPIFlash-NVME SSD boot image folder''', you can see the following two images, the difference between them is. Their differences are:</p><ol style="list-style-type: lower-alphanone;"><li><p>a) The first image without lcd is dedicated to specially used for HDMI display and supports 4K display. If you don’t do not use the LCD screen, please download the image without lcd</p></li><li><p>b) If you want to use lcd LCD screen, please choose image with lcd</p></li> [[File:pi3b-img147.png]]</ol></li></ol>
</li></ol>
<ol start="7" style="list-style-type: decimal;">
<li>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</li>
[[File:pi3b-img125img31.png|264x58px]] <ol start="5" style="list-style-type: decimal;"><li><p>Then use decompression software to decompress the compressed package of the downloaded Android image. Among the decompressed files, the file ending with &quot;.img&quot; is the Android image file, and the size is more than 1GB</p></li><li><p>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</p></li></ol> [[File:pi3b-img31.png|575x169px]] <ol start="78" style="list-style-type: decimal;">
<li><p>After opening '''DriverInstall.exe''', the steps to install the Rockchip driver are as follows</p>
<ol style="list-style-type: lower-alpha;">
<li>Click the &quot;'''Driver Installation'''&quot; button</li></ol></li></ol> [[File:pi3b-img32.png|300x157px]]
[[File:pi3b-img32.png]]
</ol>
<ol start="2" style="list-style-type: lower-alpha;">
<li>After waiting for a period of time, a pop-up window will prompt &quot;'''driver installed successfully'''&quot;, and then click the &quot;'''OK'''&quot; button.</li></ol> [[File:pi3b-img33.png|315x164px]] <ol start="8" style="list-style-type: decimal;"><li>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</li></ol> [[File:pi3b-img34.png|454x134px]]
[[File:pi3b-img33.png]]
</ol>
</li></ol>
<ol start="9" style="list-style-type: decimal;">
<li>After opening the Then decompress '''RKDevToolRKDevTool_Release_v3.15.zip''' burning tool, because the computer is this software does not connected to the development board through the USB2.0 male-need to-male data cable at this timebe installed, the lower left corner will prompt &quot;just find '''No device foundRKDevTool'''&quot;in the decompressed folder and open it</li></ol>
[[File:pi3b-img35img34.png|442x208px]]</ol><ol start="10" style="list-style-type: decimal;"><li>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 &quot;'''No device found'''&quot;</li>
[[File:pi3b-img35.png]]</ol><ol start="1011" style="list-style-type: decimal;"><li><p>Then start burning the Android image into eMMCto SPIFlash+NVMe SSD</p>
<ol style="list-style-type: lower-alpha;">
<li>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 port of the development board is shown in the figure below</li></ol></li></ol>
<div class="figure">
[[File:pi3b-img36.png|275x116px|C:\Users\orangepi\Desktop\用户手册插图\pi 3b\1691131157154(1).jpg1691131157154(1)]]
</div></ol>
<ol start="2" style="list-style-type: lower-alpha;">
<li><p>Then make Make sure that the development board is not inserted into the TF card and not connected to the power supply</p></li><li><p>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:</p></li></ol> [[File:pi3b-img37.png|289x100px]]
[[File:pi3b-img37.png]]
</ol>
<ol start="4" style="list-style-type: lower-alpha;">
<li>Then connect the power supply of the Type-C interface to the development board, and power on, and then release the MaskROM button</li></ol> [[File:pi3b-img38.png|305x94px]]
[[File:pi3b-img38.png]]
</ol>
<ol start="5" style="list-style-type: lower-alpha;">
<li><p>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 &quot;'''found a MASKROM device'''&quot;[[File:pi3b-img39.png|457x215px]]</p></li><li><p>Then please select '''Advanced Features'''</p><p>[[File:pi3b-img126.png|458x138px]]</p></li><li><p>Then click the position shown in the figure below</p><p>[[File:pi3b-img127.png|459x216px]]</p></li></ol>
[[File:pi3b-img39.png]]<!-- --/ol><ol start="6" style="list-style-type: lower-alpha;"><li>Select Then click the &quot;'''rk3566_MiniLoaderAll.binUpgrade Firmware''' in &quot; column of the MiniLoader folder downloaded earlier, and click to open.burning tool</li></ol>
[[File:pi3b-img132.png]]<div class/ol><ol start="7" style="figurelist-style-type: lower-alpha;"><li>Then click the &quot;'''Firmware'''&quot; button to select the Android image to be burned</li>
[[File:pi3b-img68img133.png|459x216px|SIS5H0S2@F5M2D(6ANZEUPG]]</ol><ol start="8" style="list-style-type: lower-alpha;"><li>Finally, click the &quot;Upgrade&quot; button to start burning. The burning process is shown in the figure below. You can see that the firmware will be burned to SPIFlash first, and then burned to PCIE. After burning is completed, the Android system will start automatically.</li>
</div><ol start="2" style="list-style-type: lower-alpha;"><li><p>Then click '''Download'''</p><p>[[File:pi3b-img128img148.png|472x222px]]</p></li><li><p>The display after downloading '''MiniLoaderAll.bin''' is shown in the figure below</pol><p>[[File:pi3b-img140.png|474x223px]]</p></li><li><p>Then select the storage device as '''EMMC''', and then click Switch '''Storage'''</pol><p>[[File:pi3bspan id="using-rkdevtool-to-clear-img141.png|468x225px]]</pspiflash"></li><li><p>The display of successful switching is shown in the figure below</p></li></olspan>
[[File:pi3b-img142.png|472x227px]]== Using RKDevTool to clear SPIFlash ==
<ol start="8" style="list-style-type: lower-alpha;"><li>Then click # The position of SPI Flash on the &quot;'''Upgrade Firmware'''&quot; column of development board is shown in the burning tool</li></ol>figure below
::[[File:pi3b-img132img76.png|442x208px]]
<ol style="list-style-type: lower-roman;"><li>Then click the &quot;'''Firmware'''&quot; button to select the path of the Android image that needs to be burned</li></ol> [[File:pi3b-img133.png|444x209px]] <ol start="102" style="list-style-type: lower-alphadecimal;"><li>FinallyFirst, click the &quot;'''Upgrade'''&quot; button you need 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 automaticallyprepare a good quality USB2.0 male-to-male data cable</li></ol>
<div class="figure">
[[File:pi3b-img134img16.png|455x214px|GO~ZSPN`B]JCQM`@_9UU8[R]]
</div></ol><span idol start="3" style="howlist-tostyle-burntype: decimal;"><li><p>Then download the Rockchip driver '''DriverAssitant_v5.12.zip''' and MiniLoader and the burning tool '''RKDevTool_Release_v3.15.zip''' from the [http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-android11and-imagesupport/Orange-intoPi-emmc3B.html '''Orange Pi data download page''']</p><ol style="list-viastyle-tftype: lower-cardalpha;"><li>On the download page of Orange Pi, first select the official tool, and then enter the following folder</spanli>=== How to burn Android11 image into eMMC via TF card ===
'''Note that all the following operations are performed on a Windows computer.'''<div class="figure">
# 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[[File:pi3b-img149. The eMMC module and the method of plugging into the development board are as follows:png]]
[[File:pi3b-img61.png|115x84px]] [[File:pi3b-img62.png|120x87px]] [[File:pi3b-img63.png|286x133px]] <ol start="2" style="list-style-type: decimal;"><li><p>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</pdiv></li><li><p>Then use the card reader to insert the TF card into the computer</p></li><li><p>Then download the SDDiskTool programming tool from the [http://www.orangepi.org/html/serviceAndSupport/index.html '''Orange Pi data download page'''], '''please make sure that the version of the SDDiskTool tool is the latest v1.72'''</p></li><li><p>Then download the Android image from [http://www.orangepi.org/html/serviceAndSupport/index.html '''Orange Pi's download page''']</pol><ol start="2" style="list-style-type: lower-alpha;"><li>After opening the Then download link of the Android image, you can see all the following two types of Android images, please select the image in '''the TF card and eMMC startup image folder''' to downloadfiles below</li></ol></li></ol>
<div class="figure">
[[File:pi3b-img124img150.png|340x108px|e6986fc9c8fc078e8cb6a9c39b76fb8]]
</div>
<ol start{| class="2wikitable" style="listbackground-style-typecolor:#ffffdc;width: lower-alpha800px;">|-| <li><pbig>After entering '''Note that the &quot;MiniLoader-things needed to burn the TF card and eMMC boot Linux image &quot; folderis hereinafter referred to as the MiniLoader folder.''', you can see the following tow images, the difference between them is:</pbig><ol style="list-style-type: lower-alpha;">|}<li><p>The first image is dedicated to HDMI display and supports 4K display. If you don’t use LCD screen, please download the image without lcd</p></li><li><p>If you want to use lcd screen, please choose image with lcd</p></li></ol>
</li></ol>
<ol start="4" style="list-style-type: decimal;">
<li>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</li>
[[File:pi3b-img125img31.png|283x62px]]</ol><ol start="5" style="list-style-type: decimal;"><li><p>After opening DriverInstall.exe, the steps to install the Rockchip driver are as follows</p><ol style="list-style-type: lower-alpha;"><li>Click the &quot;'''Driver Installation'''&quot; button</li> [[File:pi3b-img32.png]]</ol><ol start="2" style="list-style-type: lower-alpha;"><li>After waiting for a period of time, a pop-up window will prompt &quot;'''driver installed successfully'''&quot;, and then click the &quot;'''OK'''&quot; button.</li> [[File:pi3b-img33.png]]</ol></li></ol>
<ol start="6" style="list-style-type: decimal;">
<li><p>Then use the decompression software to decompress the compressed package of the downloaded Android image. Among the decompressed files, the file ending with &quot;.img&quot; is the Android image file, and the size is more than 1GB</p></li><li><p>Then use decompression software to decompress '''SDDiskTool_v1RKDevTool_Release_v3.7215.zip''', this software does not need to be installed, just find '''SD_Firmware_Tool.exeRKDevTool''' in the decompressed folder and open it</p></li></ol>
[[File:pi3b-img135img34.png|429x103px]]</ol><ol start="7" style="list-style-type: decimal;"><li>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 &quot;'''No device found'''&quot;</li>
[[File:pi3b-img35.png]]
</ol>
<ol start="8" style="list-style-type: decimal;">
<li>After opening '''SDDiskTool''', if the TF card is recognized normally, the inserted disk device will be displayed in the &quot;'''Select Removable Disk Device'''&quot; 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.</lip></ol> [[File:pi3b-img136.png|267x228px]] <ol start="9" style="list-style-type: decimal;"><li>After confirming the drive letter, Then 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</li></ol> [[File:pi3b-img137.png|247x212px]] <ol start="10" style="list-style-type: decimal;"><li><p>Then start to write clear the Android image into the TF cardcontent in SPI FLASH</p>
<ol style="list-style-type: lower-alpha;">
<li><p>First confirm that , connect the development board to the displayed drive letter is Windows computer through the drive letter corresponding USB2.0 male-to -male data cable. The position of the TF card under &quot;'''Select Removable Disk Device'''&quot;</p></li><li><p>Then select &quot;'''Firmware Upgrade'''&quot; in &quot;'''Select Function Mode'''&quot;</p></li><li><p>Then select the path USB2.0 programming port of the Android firmware development board is shown in the &quot;'''Select Upgrade Firmware'''&quot; column</p>figure below</li><li><p>Finally click the &quot;'''Start Create'''&quot; button to start burning</p></li></ol></li></ol>
[[File:pi3b-img143.png|290x246px]]<div class="figure">
<ol start="11" style="list[[File:pi3b-style-type: decimal;"><li>After the burning is completed, the display is as shown in the figure below, and then you can exit SDDiskTool</li></ol>img36.png]]
[[File</div></ol><ol start="2" style="list-style-type:pi3blower-img144.png|285x243px]]alpha;"><li><p>Make sure that the development board is not inserted into the TF card and not connected to the power supply</p></li><li><p>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:</p></li>
[[File:pi3b-img37.png]]</ol><ol start="124" style="list-style-type: decimallower-alpha;"><li><p>Then pull out connect the TF card from power supply of the computer and insert it into Type-C interface to the development board. After the development board is powered , and power on, it will automatically start burning the Android image in the TF card to the eMMC of the development board.</p></li><li><p>If and then release 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</p>MaskROM button</li></ol>
[[File:pi3b-img145img38.png|430x247px]]</ol><ol start="5" style="list-style-type: lower-alpha;"><li>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 &quot;'''found a MASKROM device'''&quot;</li>
[[File:pi3b-img39.png]]</ol><ol start="146" style="list-style-type: decimallower-alpha;"><li>When <p>Then please select '''Advanced Features'''</p><p>[[File:pi3b-img126.png]]</p></li><li><p>Then click the HDMI monitor displays position shown in the following information, it means that the burning of the Android image into the eMMC has been completedfigure below</p><p>[[File:pi3b-img127.png]]</p></li><li><p>Select '''rk3566_MiniLoaderAll. At this time, bin''' in the TF card can be pulled out'''MiniLoader''' folder you downloaded earlier, and then the Android system in the eMMC will start.click Open</lip></olli>
[[File:pi3b-img146.png|576x389px]]<div class="figure">
<span id="how[[File:pi3b-to-burn-android-image-to-spiflashnvme-ssd"></span>== How to burn Android image to SPIFlash+NVMe SSD ==img68.png]]
</div></ol><ol style="list-style-type: lower-roman;"><li><p>Then click '''Note that all the following operations are performed on a Windows computer.Download'''</p><p>[[File:pi3b-img128.png]]</p></li></ol>
<ol start="10" style="list-style-type: decimallower-alpha;"><li><p>First, you need to prepare an NVMe SSD solid state driveThe display after downloading '''rk3566_MiniLoaderAll.bin''' is shown in the figure below</p><p>[[File:pi3b-img140.png]]</p></li><li><p>Then select the storage device as '''SPINOR'''</p><ol style="listp>[[File:pi3b-styleimg151.png]]</p></li><li><p>Then click Switch '''Storage'''</p><p>[[File:pi3b-typeimg152.png]]</p></li><li><p>Then click '''Erase All''' to start erasing SPIFlash</p><p>[[File: lowerpi3b-alpha;"img153.png]]</p></li><li><p>The Mdisplay log after erasing SPIFlash is shown in the figure below</p><p>[[File:pi3b-img154.2 2230 SSD is as followspng]]</p></li></ol>
</li></ol>
<span id="start-the-orange-pi-development-board"></span>
[[File:pi3b-img73.png|147x106px]]== Start the Orange Pi development board ==
<ol start="2" style="list# 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-styleto-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-type: lowerC to HDMI cable, the system interface of the development board can also be displayed through the Type-alpha;">C interface.# Connect a USB mouse and keyboard to control the Orange Pi development board.<li># The Mdevelopment board has an Ethernet port, which can be plugged into a network cable for Internet access.2 2242 SSD is as follows<# Connect a high-quality power adapter with a 5V/li></ol>3A USB Type-C interface.
[[File:pi3b:{| class="wikitable" style="background-img74color:#ffffdc;width:800px;" |-| <big>'''<span style="color:#FF0000">Remember not to plug in a power adapter with a voltage output greater than 5V, as this will burn out the development board.png|216x119px]]'''</span>
'''<ol start="2" span style="list-style-typecolor: decimal;#FF0000"><li>Then insert Many unstable phenomena during the NVMe SSD into power-on and start-up process of the Msystem are basically caused by power supply problems, so a reliable power adapter is very important.2 PCIe interface If you find that there is a phenomenon of continuous restart during the startup process, please replace the power supply or the development board Type-C data cable and fix it</li>try again.'''</olspan>
[[File'''<span style="color:pi3b#FF0000">The Type-img75C power port does not support PD negotiation.png|283x63px]]'''</span>
'''<ol start="3" span style="list-style-typecolor: decimal;#FF0000"><li>The position In addition, please do not connect the USB interface of the SPI Flash on computer to power the development board is shown in the figure below, no other settings are required before starting the programming.'''</lispan></olbig>|}
[[File<ol start="6" style="list-style-type:pi3b-img76decimal;"><li>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.png|266x211px]]</li>
<ol start="4" style="list-style-type: decimal;"><li>You also need If you want to prepare a good quality USB2view the output information of the system through the debugging serial port, please use the serial cable to connect the development board to the computer.0 male-For the connection method of the serial port, please refer to '''[[Orange Pi 3B#How to use the debugging serial port|the section on how to-male data cableuse the debugging serial port]].'''</li></ol><span id="how-to-use-the-debugging-serial-port"></span>
<div class="figure">= How to use the debugging serial port ==
[[File:pi3b<span id="connection-img16.png|141x138px|D6BB9058instruction-CDC3of-42d7debugging-A7FCserial-FBF630D886B7]]port"></span>=== Connection instruction of debugging serial port ===
</div><ol start="5" style="list-style-type: decimal;"><li><p>Then download Rockchip driver '''DriverAssitant_v5First, you need to prepare a 3.12.zip''' 3V USB-to-TTL module, and burning tool '''RKDevTool_Release_v3.15.zip''' from '''Orange Pi's data download page'''</p></li><li><p>Then download then insert the USB interface end of the USB-to-TTL module into the image USB interface of Android11the computer.</p><ol {| class="wikitable" style="listbackground-style-typecolor:#ffffdc;width: lower-alpha800px;"|-| <big><lip>After opening the download link of the Android image'''For better compatibility, you can see the following two types of Android imagesit is recommended to use CH340 USB to TTL module, please select the image in the Sdo not use CP2102, PL2303 USB to TTL module.'''PIFlash-NVME SSD boot image folder</p><p>''' Before purchasing a USB to downloadTTL module, please confirm that the module supports a baud rate of 1500000.'''</lip></olbig></li></ol>|}
<div class="figure">
[[File:pi3b-img124img155.png|340x108px|e6986fc9c8fc078e8cb6a9c39b76fb8]]
</div><ol start="2" style="list-style-type: lower-alpha;"></li><p>After entering the '''SPIFlash-NVME SSD boot image folder''', you can see the following two images. Their differences are:</pol><ol start="2" style="list-style-type: lower-alphadecimal;"><li><p>The image without lcd is specially used for HDMI display corresponding relationship between GND, RXD and supports 4K display. If you do not use TXD pins of the debugging serial port of the LCD screen, please download development board is shown in the image without lcd</p>figure below</li><li><p>If you want to use LCD screen, please choose image with lcd</p></li></ol></li></ol>
[[File:pi3b-img147img156.png|305x58px]]</ol><ol start="3" style="list-style-type: decimal;"><li>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</li>
<ol start="7" style="list-style-type: decimal;"><li>Then use a. Connect the decompression software GND of the USB to TTL module to decompress '''DriverAssitant_v5.12.zip''', and then find the '''DriverInstall.exe''' executable file in GND of the decompressed folder and open it</li></ol>development board
[[File:pi3b-img31b.png|407x120px]]The '''<span style="color:#FF0000">RX of the USB to TTL module is connected to the TX</span>''' of the development board
:c. The '''<ol start="8" span style="list-style-typecolor: decimal;#FF0000">TX of the USB to TTL module is connected to the TX<li><p/span>After opening '''DriverInstall.exe''', of the steps to install the Rockchip driver are as followsdevelopment board</pol><ol start="4" style="list-style-type: lower-alphadecimal;"><li>Click The schematic diagram of connecting the &quot;'''Driver Installation'''&quot; buttonUSB to TTL module to the computer and the Orange Pi development board is as follows</li></ol></li></ol>
[[File:pi3b-img32.png|286x150px]]<div class="figure">
<ol start="2" style="list-style-type[[File: lower-alpha;"><li>After waiting for a period of time, a poppi3b-up window will prompt &quot;'''driver installed successfully'''&quot;, and then click the &quot;'''OK'''&quot; buttonimg157.</li></ol>png]]
[[File</div>{| class="wikitable" style="background-color:pi3b#ffffdc;width:800px;" |-img33| <big>'''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.pngIf there is no output in the test, then exchange the order of TX and RX, so there is always a the order is right'''</big>|296x154px]]}</ol><span id="how-to-use-the-debugging-serial-port-on-the-ubuntu-platform"></span>
<ol start="9" style="list-style-type: decimal;"><li>Then decompress '''RKDevTool_Release_v3.15.zip''', this software does not need = How to be installed, just find '''RKDevTool''' in use the decompressed folder and open it</li></ol>debugging serial port on the Ubuntu platform ===
[[File{| class="wikitable" style="background-color:#ffffdc;width:pi3b800px;" |-img34| <big>'''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.png'''</big>|413x122px]]}
<ol start="10" style="list# First, insert the USB-styleto-type: decimal;"><li>After opening TTL module into the '''RKDevTool''' burning tool, because USB interface of the Ubuntu computer is not connected to . If the development board through connection and recognition of the USB2.0 maleUSB-to-male data cable at this timeTTL module is normal, you can see the lower left corner will prompt &quot;corresponding device node name under '''No device found/dev'''&quot;</li></ol>on the Ubuntu PC. Remember this node name, and then set the serial port software will be used
[[File:pi3b:{| class="wikitable" style="width:800px;" |-img35.png|402x189px]]test@test:~$ '''ls /dev/ttyUSB*'''
<ol start="11" style="list-style-type: decimal;"><li><p>Then start burning the Android image to SPIFlash+NVMe SSD</p><ol style="list-style-type: lower-alpha;"><li>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</li><dev/ol>ttyUSB0</li></ol>|}
<div ol start="2" style="list-style-type: decimal;"><li>Then use the following command to install putty on Ubuntu PC</li>{| class="figurewikitable" style="width:800px;">|-| test@test:~$ '''sudo apt-get update'''
[[Filetest@test:pi3b~$ '''sudo apt-img36.pngget install -y putty'''|275x116px|C}</ol><ol start="3" style="list-style-type: decimal;"><li>Then run putty, '''<span style="color:\Users\orangepi\Desktop\用户手册插图\pi 3b\1691131157154(1).jpg1691131157154(1)]]#FF0000">remember to add sudo permission</span>'''</li>
{| class="wikitable" style="width:800px;" |-| test@test:~$ '''sudo putty'''|}</divol><ol start="24" style="list-style-type: lower-alphadecimal;"><li><p>Make sure that the development board is not inserted into the TF card and not connected to the power supply</p></li><li><p>Then press and hold the MaskROM button on After executing the development boardputty command, the position of the MaskROM button on the development board is shown in the figure below:</p>following interface will pop up</li></ol>
[[File:pi3b-img37img158.png|289x100px]]</ol><ol start="5" style="list-style-type: decimal;"><li>First select the setting interface of the serial port</li>
[[File:pi3b-img159.png]]</ol><ol start="46" style="list-style-type: lower-alphadecimal;"><li><p>Then connect set the power supply parameters of the Typeserial port</p><ol style="list-style-C interface type: lower-alpha;"><li><p>Set Serial line to connect toas /dev/ttyUSB0((Modified to the development boardcorresponding node name, and power on, and then release the MaskROM buttongenerally /dev/ttyUSB0)</p></li><li><p>Set Speed(baud) as '''1500000'''(Serial port baud rate)</p></li><li><p>Set Flow control as None</olp></li>
[[File:pi3b-img38.png|305x94px]]<div class="figure">
<ol start="5" style="list-style-type[[File: lowerpi3b-alpha;"><li>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 &quot;'''found a MASKROM device'''&quot;</li></ol>img160.png]]
[[File</div></ol></li></ol><ol start="7" style="list-style-type: decimal;"><li><p>After setting the setting interface of the serial port, return to the Session interface</p><ol style="list-style-type:pi3blower-img39.png|443x208px]]alpha;"><li><p>First select the Connection type as Serial</p></li><li><p>Then click the Open button to connect to the serial port</p></li>
<ol startdiv class="6figure" style="list-style-type: lower-alpha;"><li>Then click the &quot;'''Upgrade Firmware'''&quot; column of the burning tool</li></ol>
[[File:pi3b-img132img161.png|442x208px]]
</div></ol></li></ol><ol start="78" style="list-style-type: lower-alphadecimal;"><li>Then click After starting the &quot;'''Firmware'''&quot; button to select development board, you can see the Log information output by the system from the Android image to be burnedopened serial port terminal</li></ol>
[[File:pi3b-img133img162.png|444x209px]]</ol><span id="how-to-use-the-debugging-serial-port-on-windows-platform"></span>
<ol start="8" style="list-style-type: lower-alpha;"><li>Finally, click the &quot;Upgrade&quot; button = How to start burning. The burning process is shown in use the figure below. You can see that the firmware will be burned to SPIFlash first, and then burned to PCIE. After burning is completed, the Android system will start automatically.</li></ol>debugging serial port on Windows platform ===
[[File{| class="wikitable" style="background-color:#ffffdc;width:pi3b800px;" |-img148| <big>'''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.pngThis software has a free version and can be used without buying a serial number.'''</big>|453x212px]]} <span idol style="usinglist-style-rkdevtooltype: decimal;"><li><p>Download MobaXterm</p><ol style="list-tostyle-cleartype: lower-spiflashalpha;"><li>Download MobaXterm website as follows</spanli>{| class="wikitable" style= Using RKDevTool to clear SPIFlash "width:800px;" |-| [https://mobaxterm.mobatek.net/ '''https://mobaxterm.mobatek.net''']|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li>After entering the MobaXterm download page, click '''GET XOBATERM NOW!'''</li>
# The position of SPI Flash on [[File:pi3b-img163.png]]</ol><ol start="3" style="list-style-type: lower-alpha;"><li>Then choose to download the development board is shown in the figure belowHome version</li>
[[File:pi3b-img76img164.png|263x193px]]</ol><ol start="4" style="list-style-type: lower-alpha;"><li>Then select the Portable version. After downloading, you don't need to install it, just open it and use it</li>
[[File:pi3b-img165.png]]
</ol>
</li></ol>
<ol start="2" style="list-style-type: decimal;">
<li>FirstAfter downloading, use decompression software to decompress the downloaded compressed package, you need to prepare a good quality USB2.0 malecan get the executable software of MobaXterm, and then double-click to-male data cableopen</li></ol>
<div class="figure"> [[File:pi3b-img16img166.png|141x138px|D6BB9058-CDC3-42d7-A7FC-FBF630D886B7]] </divol>
<ol start="3" style="list-style-type: decimal;">
<li><p>Then download After opening the Rockchip driver '''DriverAssitant_v5.12.zip''' and MiniLoader and software, the burning tool '''RKDevTool_Release_v3.15.zip''' from steps to set up the [http://www.orangepi.org/html/serviceAndSupport/index.html '''Orange Pi data download page''']serial port connection are as follows</p>
<ol style="list-style-type: lower-alpha;">
<li>On <p>Open the session settings interface</p></li><li><p>Select the serial port type</p></li><li><p>Select the download page port number of Orange Pi, first the serial port (select the official tool, and then enter corresponding port number according to the following folderactual situation)</p></li><li><p>Select the baud rate of the serial port as '''1500000'''</p></olli><li><p>Finally click the &quot;'''OK'''&quot; button to complete the setting</lip></olli>
<div class="figure">
[[File:pi3b-img149img167.png|342x56px|1691401357374]]
</div></ol></li></ol><ol start="24" style="list-style-type: lower-alphadecimal;"><li>Then download all After clicking the &quot;'''OK'''&quot; button, you will enter the following interface. At this time, start the development board and you can see the files belowoutput information of the serial port</li></ol>
<div class="figure">
[[File:pi3b-img150img168.png|347x139px|1691401520573]]
</div></ol>'''Note that <span id="instructions-for-using-the &quot;MiniLoader-things needed to burn 5v-pin-in-the-40pin-interface-of-the Linux image&quot; folder is hereinafter referred -development-board-to as the MiniLoader folder.'''-supply-power"></span>
<ol start="4" style="list-style-type: decimal;"><li>Then use decompression software to decompress '''DriverAssitant_v5.12.zip''', and then find Instructions for using the '''DriverInstall.exe''' executable file 5v pin in the decompressed folder and open it</li></ol>40pin interface of the development board to supply power ==
[[File{| class="wikitable" style="background-color:pi3b#ffffdc;width:800px;" |-| <big>'''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-img31C power supply.png'''</big>|472x139px]]}
<ol start="5" style="list-style-type: decimal;"><li><p>After opening DriverInstall.exe# First, the steps you need to install the Rockchip driver are prepare a power cord as follows</p><ol style="list-style-type: lower-alpha;"><li>Click shown in the &quot;'''Driver Installation'''&quot; button</li></ol></li></ol>figure below
[[File:pi3b-img32.png|276x145px]]<div class="figure">
<ol start="2" style="list-style-type: lower-alpha;"><li>After waiting for a period of time, a pop:[[File:pi3b-up window will prompt &quot;'''driver installed successfully'''&quot;, and then click the &quot;'''OK'''&quot; buttonimg169.</li></ol>png]]
[[File</div>:pi3b:{| class="wikitable" style="background-img33.pngcolor:#ffffdc;width:800px;" |-| <big>'''Please purchase the power cord shown in the picture above by yourself'''</big>|292x151px]]}
<ol start="62" style="list-style-type: decimal;"><li>Then decompress <p>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</p><ol style="list-style-type: lower-alpha;"><li><p>The USB A port of the power cord shown in the above picture needs to be plugged into the 5V/3A power adapter connector ('''RKDevTool_Release_v3.15.zip<span style="color:#FF0000">please do not plug into the computer's USB port for power supply</span>''', this software does not need )</p></li><li><p>The red DuPont line needs to be plugged into the 5V pin of the development board 40pin</p></li><li><p>The black Dupont wire needs to be installedinserted into the GND pin of the 40pin interface</p></li><li><p>The position of the 5V pin and GND pin of the 40pin interface on the development board is shown in the figure below, just find '''RKDevTool<span style="color:#FF0000">remember not to reverse the connection</span>''' in the decompressed folder and open it</lip></olli[[File:pi3b-img34.png|467x138px]]
<ol start="7" style="list-style-type: decimal;"><li>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 &quot;'''No device found'''&quot;</li></ol> [[File:pi3b-img35img170.png|402x189px]] <ol start="8" style="list-style-type: decimal;"><li><p>Then you can start to clear the content in SPI FLASH</p><ol style="list-style-type: lower-alpha;"><li>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</li></ol>
</li></ol>
<span id="instructions-for-use-of-ubuntudebian-server-and-xfce-desktop-system"></span>
<div class="figure">'''Instructions for use of Ubuntu/Debian Server and Xfce desktop system''' =
[[File{| class="wikitable" style="background-color:#ffffdc;width:pi3b800px;" |-img36| <big>'''The content of this chapter is written based on the images of the Linux server version and the xfce desktop version.png|275x116px'''</big>|C:\Users\orangepi\Desktop\用户手册插图\pi 3b\1691131157154(1).jpg1691131157154(1)]]}
</div><ol startspan id="2" style="listsupported-linux-image-styletypes-type: lowerand-alpha;kernel-versions"><li><p>Make sure that the development board is not inserted into the TF card and not connected to the power supply</p></lispan><li><p>Then press == Supported Linux image types 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:</p></li></ol>kernel versions ==
[[File{| class="wikitable" style="width:pi3b800px;text-img37align: center;"|-|'''Linux image type'''|'''kernel version'''|'''server version'''|'''desktop version'''|-|'''Debian 11 - Bullseye'''|'''Linux5.png10'''|'''support'''|'''support'''|-|'''Ubuntu 20.04 - Focal'''|'''Linux5.10'''|'''support'''|'''support'''|-|'''Ubuntu 22.04 - Jammy'''|'''Linux5.10'''|'''support'''|'''support'''|289x100px]]}
<ol startspan id="4" style="list-stylelinux-type: lowersystem-alpha;adaptation"><li>Then connect the power supply of the Type-C interface to the development board, and power on, and then release the MaskROM button</li></olspan>== Linux System adaptation ==
[[File:pi3b-img38.png{|305x94px]] <ol startclass="5wikitable" style="listwidth:800px;text-style-typealign: lower-alphacenter;"><li>If the previous steps are successful, the development board will enter the |-|'''Function'''|'''Debian11'''|'''Ubuntu20.04'''|'''Ubuntu22.04'''|-|'''USB2.0x3'''|'''OK'''|'''OK'''|'''OK'''|-|'''MASKROMUSB3.0x1'''|' mode at this time, and the ''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 of the burning tool will prompt &quot;'''found a MASKROM device|'''OK'''|'''OK'''|'''OK'''|-|'''3pin Debug serial port'''|'''OK'''|'''OK'''&quot;</li></ol>|'''OK'''[[File:pi3b|-img39.png|'''EMMC'''|'''OK'''|'''OK'''|457x215px]]'''OK'''|-<ol |'''TF card start="6" style="list'''|'''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'''|-style|'''Gigabit Ethernet port'''|'''OK'''|'''OK'''|'''OK'''|-type: lower|'''Network port status light'''|'''OK'''|'''OK'''|'''OK'''|-alpha;"><li><p>Then please select |'''headphone playback'''|'''OK'''|'''OK'''|'''Advanced FeaturesOK'''</p><p>[[File:pi3b|-img126.png|'''headphone recording'''|458x138px]]</p></li>'''OK'''<li><p>Then click the position shown in the figure below</p>|'''OK'''<p>[[File:pi3b|'''OK'''|-img127.png|'''LED Light'''|'''OK'''|459x216px]]</p></li>'''OK'''<li><p>Select |'''rk3566_MiniLoaderAll.binOK''' in the |-|'''MiniLoaderRTC''' folder you downloaded earlier, and click Open</p></li></ol>|'''OK'''<div class="figure">|'''OK'''|'''OK'''[[File:pi3b|-img68.png|459x216px'''GPU'''|SIS5H0S2@F5M2D(6ANZEUPG]]'''OK'''|'''OK'''</div>|'''OK'''<ol style="list|-style|'''NPU'''|'''OK'''|'''OK'''|'''OK'''|-type: lower|'''VPU'''|'''OK'''|'''OK'''|'''OK'''|-roman;"><li><p>Then click |'''watchdog test'''|'''OK'''|'''OK'''|'''DownloadOK'''</p><p>[[File:pi3b|-img128.png|'''Chromium Hard solution video'''|'''OK'''|'''OK'''|'''OK'''|472x222px]]</p></li></ol>}
<ol startspan id="10" style="listthe-styleformat-type: lowerof-alpha;"><li><p>The display after downloading '''rk3566_MiniLoaderAll.bin''' is shown in the figure below</p><p>[[File:pi3blinux-img140.png|474x223px]]</p></li><li><p>Then select the storage device as '''SPINOR'''</p><p>[[File:pi3bcommands-img151.png|467x220px]]</p></li><li><p>Then click Switch '''Storage'''</p><p>[[File:pi3bin-img152.png|464x218px]]</p></li><li><p>Then click '''Erase All''' to start erasing SPIFlash</p><p>[[File:pi3bthis-img153.png|467x220px]]</pmanual"></lispan><li><p>== The display log after erasing SPIFlash is shown format of Linux commands in the figure below</p><p>[[File:pi3b-img154.png|460x216px]]</p></li></ol>this manual ==
<span id# In this manual, all commands that need to be entered in the Linux system will be marked with the following box::{| class="wikitable" style="startwidth:800px;height:40px;" |-the-orange-pi-development-board"></span>== 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::As shown below, 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 content in the LCD screen to display yellow box indicates the system interface of the development board. If there is a Type-C to HDMI cablecontent that needs special attention, except for the system interface of the development board can also be displayed through the Type-C interfacecommands in it.::{| class="wikitable" style="background-color:# Connect a USB mouse and keyboard to control the Orange Pi development board.ffffdc;width:800px;height:40px;" # 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 or 5V/4A USB Type-C interface.|
'''Remember |}<ol start="2" style="list-style-type: decimal;"><li><p>Description of the prompt type in front of the command</p><ol style="list-style-type: lower-alpha;"><li>The prompt in front of the command refers to the content of the red part in the box below, which is not to plug part of the Linux command, so when entering the command in a power adapter with a voltage output greater than 5Vthe Linux system, as this will burn out please do not enter the content of the development board.red font part</li>{| class="wikitable" style="width:800px;" |-| '''<span style="color:#FF0000">orangepi@orangepi:~$</span> sudo apt update'''
'''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<span style="color:#FF0000">root@orangepi:~#</span>''' '''vim /boot/boot.cmd'''
'''The Type-C power port does not support PD negotiation<span style="color:#FF0000">test@test:~$</span> ssh [mailto:root@192.168.1.36 root@192.168.1.]xxx'''
'''In addition, please do not connect <span style="color:#FF0000">root@test:~#</span> ls'''|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li><p>'''<span style="color:#FF0000">root@orangepi:~$</span>''' The prompt indicates that this command is entered in '''the USB interface Linux system of the computer to power 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'''</p></li><li><p>'''<span style="color:#FF0000">root@orangepi:~#</span>''' 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</p></li>6) Then turn on <li><p>'''<span style="color:#FF0000">test@test:~$</span>''' 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 switch current user of the power adaptersystem is an ordinary user. If everything When executing privileged commands, sudo needs to be added '''sudo'''</p></li><li><p>'''<span style="color:#FF0000">root@test:~#</span>''' The prompt indicates that this command is normalentered in the Ubuntu PC or Ubuntu virtual machine, you can see not in the Linux system of the development board. The # at the end of the prompt indicates that the startup screen current user of the system on is the root user and can execute any command you want</p></li></ol></li></ol><!-- --><ol start="3" style="list-style-type: decimal;"><li><p>What are the commands that need to be entered?</p><ol style="list-style-type: lower-alpha;"><li>As shown below, '''the black bold part''' is the command that needs to be input, and the content below the command is the HDMI monitor or LCD screenoutput content (some commands have output, some may not), and this part of the content does not need to be input</li>{| class="wikitable" style="width:800px;" |-| root@orangepi:~# '''cat /boot/orangepiEnv.txt'''
7) 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 '''[[\l|the section on how to use the debugging serial port]].<span style="color:#FF0000">verbosity=7</span>'''
<span id="how-to-use-the-debugging-serial-port"></span>== How to use the debugging serial port =bootlogo=false
'''<span idstyle="connection-instruction-of-debugging-serial-portcolor:#FF0000">console=serial</span>'''|}</ol><ol start="2" style== Connection instruction "list-style-type: lower-alpha;"><li>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 &quot;\&quot; of each line needs to be removed, this is not part of the command. In addition, there are spaces in different parts of debugging serial port =the command, please don't miss it</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''echo \'''
<ol style'''&quot;deb [arch="list$(dpkg -style-type: decimal;"><li><p>First, you need to prepare a 3.3V USBprint-to-TTL module, and then insert the USB interface end of the USB-to-TTL module into the USB interface of the computer.</p><p>'''For better compatibility, it is recommended to use CH340 USB to TTL module, please do not use CP2102, PL2303 USB to TTL module.'''</p><p>'''Before purchasing a USB to TTL module, please confirm that the module supports a baud rate of 1500000.architecture) \'''</p></li></ol>
<div class'''signed-by="figure">/usr/share/keyrings/docker-archive-keyring.gpg] \'''
[[File'''https:pi3b-img155//download.png|576x115px|07]]docker.com/Linux/debian \'''
'''$(lsb_release -cs) stable&quot; | sudo tee /etc/apt/sources.list.d/docker.list &gt; /dev/null'''|}</divol></li></ol start><span id="2" style="listlinux-system-stylelogin-type: decimal;instructions"><li>The corresponding relationship between GND, RXD and TXD pins of the debugging serial port of the development board is shown in the figure below</li></olspan>
[[File:pi3b-img156.png|428x110px]]== Linux system login instructions ==
<ol startspan id="3" style="listlinux-system-default-login-account-styleand-type: decimal;password"><li/span>The GND, TXD === Linux system default login account 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</li></ol>password ===
<blockquote>a. Connect the GND of the USB to TTL module to the GND of the development board{| class="wikitable" style="width:800px;text-align: center;"|-|'''Account'''|'''Passport'''|-|'''root'''|'''orangepi'''|-|'''orangepi'''|'''orangepi'''|}
b{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''Note that when entering the password, <span style="color:#FF0000">the specific content of the entered password will not be displayed on the screen</span>, please do not think that there is any fault, just press Enter after inputting. The '''RX of </big>|}{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''When the USB to TTL module wrong password is connected to 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, <span style="color:#FF0000">please do not suspect that the TXabove password is wrong</span>, but look for other reasons.''' of the development board</big>|}
c. The '''TX of the USB to TTL module is connected to the TX''' of the development board</blockquote><ol startspan id="4" style="listhow-to-set-automatic-terminal-login-in-stylelinux-type: decimal;system"><li>The schematic diagram of connecting the USB to TTL module to the computer and the Orange Pi development board is as follows</li></olspan>
<div class="figure">== How to set automatic terminal login in Linux system ===
[[File:pi3b-img157.png|524x189px|C:\Users\orangepi\Desktop\用户手册插图\pi 3b\USB-to-TTL-module-# The Linux system automatically logs in to-the-computer.jpgUSB-to-TTL-module-to-terminal by default, and the-computer]]default login user name is '''<span style="color:#FF0000">orangepi</span>'''
</div>'''The TX and RX of the serial port need to be cross::[[File:pi3b-connectedimg171. 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'''png]]
<span idol start="2" style="howlist-style-type: decimal;"><li>Use the following command to set the root user to automatically log in to-use-theterminal</li>{| class="wikitable" style="width:800px;" |-debugging| orangepi@orangepi:~$ '''sudo auto_login_cli.sh root'''|}</ol><ol start="3" style="list-serial-port-onstyle-type: decimal;"><li>Use thefollowing command to disable automatic login terminal</li>{| class="wikitable" style="width:800px;" |-ubuntu| orangepi@orangepi:~$ '''sudo auto_login_cli.sh -platform">d'''|}</spanol><ol start="4" style== How "list-style-type: decimal;"><li>Use the following command to use set the debugging serial port on orangepi user to automatically log in to the Ubuntu platform terminal again</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo auto_login_cli.sh orangepi'''|}</ol><span id="instructions-for-automatic-login-of-linux-desktop-version-system"></span>
'''There are many serial port debugging software that can be used under === Instructions for automatic login of Linux, such as putty, minicom, etc. The following demonstrates how to use putty.'''desktop version system ===
# FirstAfter the desktop system starts, insert the USB-it will automatically log in 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 useddesktop without entering a password
test@test:~$ '''ls /dev/ttyUSB*'''<div class="figure">
/dev/ttyUSB0::[[File:pi3b-img172.png]]
</div>
<ol start="2" style="list-style-type: decimal;">
<li>Then use Run the following command to install putty on Ubuntu PCprohibit the desktop system from automatically logging into the desktop</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo disable_desktop_autologin.sh'''|}</ol><ol start="3" style="list-style-type: decimal;"><li><p>Then restart the system and a login dialog box will appear, at which point a [[\l|password]] is required to enter the system</p><div class="figure">
test@test[[File:~$ '''sudo aptpi3b-get update'''img173.png]] </div></li></ol>
test@test:~$ '''sudo apt<span id="the-get install setting-y putty'''method-of-root-user-automatic-login-in-linux-desktop-version-system"></span>
<ol start="3" style="list-style-type: decimal;"><li>Then run putty, '''remember to add sudo permission'''</li></ol>= The setting method of root user automatic login in Linux desktop version system ===
test@test:~$ '''sudo putty'''# Execute the following command to set the desktop system to automatically log in as the root user
<ol start::{| class="4wikitable" style="list-style-typewidth: decimal800px;"><li>After executing the putty command, the following interface will pop up</li></ol>|-| orangepi@orangepi:~$ '''sudo desktop_login.sh root'''|}
[[File<ol start="2" style="list-style-type:pi3b-img158.png|367x321px]]decimal;"><li>Then restart the system, and the root user will automatically log in to the desktop</li>
<ol start="5" style="list[[File:pi3b-style-type: decimal;"><li>First select the setting interface of the serial port</li></ol>img174.png]]
[[File{| class="wikitable" style="background-color:#ffffdc;width:pi3b800px;" |-img159| <big>'''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.png|359x352px]]'''
'''Also note that this is not a bug, since pulseaudio is not allowed to run as root.'''<ol start="6" style="list-style-type: decimal;"/big><li><p>Then set the parameters of the serial port|}</pol><ol start="3" style="list-style-type: lower-alphadecimal;"><li><p>Set Serial line Execute the following command to connect toas /dev/ttyUSB0((Modified set the desktop system to log in automatically with the corresponding node name, generally /dev/ttyUSB0)</p></li><li><p>Set Speed(baud) as '''1500000'''(Serial port baud rate)</p>orangepi user again</li><li><p>Set Flow control as None</p></li></ol></li></ol>
{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo desktop_login.sh orangepi'''|}<div class/ol><span id="figurethe-method-of-disabling-the-desktop-in-the-linux-desktop-version-system"></span>
[[File:pi3b-img160.png|317x312px|09]]=== The method of disabling the desktop in the Linux desktop version system ===
</div><ol start="7" style="list-style-type: decimal;"><li><p>After setting # First enter the setting interface of following command on the serial portcommand line, return to the Session interface</p>'''<ol span style="list-style-typecolor: lower-alpha;#FF0000"><li><p>First select the Connection type as Serial</p></li><li><p>Then click the Open button to connect Please remember to the serial port</p></li></ol></li>add sudo permission</olspan>'''
<div ::{| class="figurewikitable">style="width:800px;" |-| orangepi@orangepi:~$ '''sudo systemctl disable lightdm.service'''|}
[[File<ol start="2" style="list-style-type:pi3b-img161.png|345x340px|10]]decimal;"><li>Then restart the Linux system and you will find that the desktop will not be displayed</li>
{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo reboot'''|}</divol><ol start="83" style="list-style-type: decimal;"><li>After starting <p>The steps to reopen the development board, you can see desktop are as follows:</p><ol style="list-style-type: lower-alpha;"><li>First enter the Log information output by following command on the system from the opened serial port terminalcommand line, '''<span style="color:#FF0000">Please remember to add sudo permission</lispan>'''</olli>
[[File{| class="wikitable" style="width:pi3b800px;" |-img162| orangepi@orangepi:~$ '''sudo systemctl start lightdm.pngservice'''|468x340px]]}</ol><ol start="2" style="list-style-type: lower-alpha;"><li>After the command is executed, the desktop will be displayed</li></ol></li></ol>
<span id="howonboard-toled-uselight-thetest-debugging-serial-port-on-windows-platforminstructions"></span>=== 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.'''== Onboard LED Light Test Instructions ==
<ol style="list-style-type# 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: decimal;"><li><p>Download MobaXterm</p><ol style="list-style-type: lower-alpha;"><li>Download MobaXterm website as follows</li></ol></li></ol>
[https://mobaxterm.mobatek.net/ https://mobaxterm.mobatek.net]<div class="figure">
::[[File:pi3b-img175.png]]
 
</div>
<ol start="2" style="list-style-type: decimal;">
<li><p>'''<span style="color:#FF0000">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</span>'''</p></li>
<li><p>The green LED light will keep blinking after the kernel is started, which is controlled by software.</p></li>
<li><p>The PCIe indicator will flash when there is data transmission on the PCIe interface.</p></li>
<li><p>The method of setting the green light on and off and flashing is as follows</p>
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
|-
|
<big>'''Note that the following operations should be performed under the root user.'''</big>
|}
<ol style="list-style-type: lower-alpha;">
<li>First enter the setting directory of the green light</li>
{| class="wikitable" style="width:800px;"
|-
|
root@orangepi:~# '''cd /sys/class/leds/status_led'''
|}
</ol>
<ol start="2" style="list-style-type: lower-alpha;">
<li>After entering The command to set the MobaXterm download page, click green light to stop flashing is as follows</li>{| class="wikitable" style="width:800px;" |-| root@orangepi:/sys/class/leds/status_led# '''GET XOBATERM NOW!echo none &gt; trigger'''|}</ol><ol start="3" style="list-style-type: lower-alpha;"><li>The command to set the green light to be on is as follows</li>{| class="wikitable" style="width:800px;" |-| root@orangepi:/sys/class/leds/status_led# '''echo default-on &gt; trigger'''|}</ol><ol start="4" style="list-style-type: lower-alpha;"><li>The command to set the green light to flash is as follows</li>{| class="wikitable" style="width:800px;" |-| root@orangepi:/sys/class/leds/status_led# '''echo heartbeat &gt; trigger'''|}</ol></li></ol><span id="network-connection-test"></span>
[[File:pi3b-img163.png|576x334px]]== Network connection test ==
<ol startspan id="3" style="listethernet-styleport-type: lower-alpha;test"><li>Then choose to download the Home version</li></olspan>=== Ethernet port test ===
[[File# 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, '''<span style="color:pi3b-img164.png|353x231px]]#FF0000">No other configuration is required</span>'''# The command to view the IP address in the Linux system of the development board is as follows
<ol start::{| class="4wikitable" style="list-style-typewidth: lower-alpha800px;"><li>Then select the Portable version. After downloading, you don’t need to install it, just open it and use it</li></ol>|-| orangepi@orangepi:~$ '''ip addr show eth0'''
[[File2:pi3b-img165.png|575x259px]]eth0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc mq state UP group default qlen 1000
<ol start="2" style="list-style-type: decimal;"><li>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<link/li></ol>ether 4a:fe:2b:3d:17:1c brd ff:ff:ff:ff:ff:ff
[[File:pi3b-img166inet '''<span style="color:#FF0000">192.168.1.150</span>'''/24 brd 192.168.1.png|576x81px]]255 scope global dynamic noprefixroute eth0
<ol start="3" style="list-style-type: decimal;"><li><p>After opening the software, the steps to set up the serial port connection are as follows</p><ol style="list-style-type: lower-alpha;"><li><p>Open the session settings interface</p></li><li><p>Select the serial port type</p></li><li><p>Select the port number of the serial port (select the corresponding port number according to the actual situation), if you can’t see the port number, please use '''Driver Master''' to scan and install the driver for the USB to TTL serial port chip</p></li><li><p>Select the baud rate of the serial port as '''1500000'''</p></li><li><p>Finally click the &quot;'''OK'''&quot; button to complete the setting</p></li></ol></li></ol>valid_lft 43150sec preferred_lft 43150sec
<div class="figure">:inet6 fe80::9a04:3703:faed:23be/64 scope link noprefixroute
[[File:pi3b-img167.png|575x438px:valid_lft forever preferred_lft forever|11]]}
</div><ol start::{| class="4wikitable" style="listbackground-style-typecolor:#ffffdc;width: decimal800px;">|-| <libig>After clicking the &quot;'''OK'''&quot; buttonWhen using ifconfig to view the IP address, you will enter if the following interfaceinformation is displayed, it is because sudo is not added. At this time, start the development board and you can see the output information of the serial port</li>The correct command is: sudo ifconfig'''</olbig>
<div class="figure">
[[Fileorangepi@orangepi:pi3b-img168.png|575x291px|12]]~$ '''ifconfig'''
</div><span id="instructions-for-using-the-5v-pin-in-the-40pin-interface-of-the-development-board-to-supply-power"></span>== Instructions for using the 5v pin Command 'ifconfig' is available in the 40pin interface of the development board to supply power ==following places
'''The power supply method we recommend for the development board is to use the 5V* /3A or 5Vsbin/4A 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.'''ifconfig
# First, you need to prepare a power cord as shown in the figure below* /usr/sbin/ifconfig
<div class="figure">The command could not be located because '/sbin:/usr/sbin' is not included in the PATH environment variable.
[[File:pi3b-img169This is most likely caused by the lack of administrative privileges associated with your user account.png|151x108px|C:\Users\orangepi\Desktop\用户手册插图\Pi5 Plus\未标题-7.jpg未标题-7]]
</div>ifconfig: command not found'''Please purchase the power cord shown in the picture above by yourself'''|}
<ol start::{| class="2wikitable" style="listbackground-style-typecolor:#ffffdc;width: decimal800px;"><li><p>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</p>|-<ol style="list-style-type: lower-alpha;">| <li><pbig>The USB A port of the power cord shown in the above picture needs to be plugged into the 5V/3A or 5V4A power adapter connector ('''please do not plug into the computer’s USB port for power supply''')</p></li><li><p>The red DuPont line needs There are three ways to be plugged into check the 5V pin of IP address after the development board 40pin</p></li><li><p>The black Dupont wire needs to be inserted into the GND pin of the 40pin interface</p></li><li><p>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</p></li></ol></li></ol>starts:'''
[[File:pi3b-img170'''1.png|365x71px]]Connect the HDMI display, then log in to the system and use the ip addr show eth0 command to view the IP address'''
<span id="instructions-for-use-of-ubuntudebian-server-and-xfce-desktop-system"></span>'''2. Enter the ip addr show eth0 command in the debugging serial terminal to view the IP address'''
= '''Instructions for use 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 Ubuntu/Debian Server and Xfce desktop systemthe development board normally. If you can't see it, the debug method looks like this:''' =
<ol style="list-style-type: upper-alpha;"><li><p>'''The content First check whether the Linux system has started normally. If the green light of this chapter the development board is blinking, it is generally started normally. If only the red light is written based on , it means that the system has not started normally;'''</p></li><li><p>'''Check whether the network cable is plugged in tightly, or try another network cable;'''</p></li><li><p>'''Try another router (I have encountered many problems with the router, such as the images of router cannot assign the IP address normally, or the IP address has been assigned normally but cannot be seen in the router);'''</p></li><li><p>'''If there is no router to replace, you can only connect to an HDMI display or use the Linux server version and debugging serial port to view the xfce desktop version.IP address'''</p></li></ol>
<span id="supported-linux-image-types-and-kernel-versions"></span>
== Supported Linux image types and kernel versions ==
{| class="wikitable"|-| style="text-align: left;"| '''Linux image type'''| style="text-align: left;"| '''kernel version'''| style="text-align: left;"| '''server version'''| style="text-align: left;"| '''desktop version'''|-| style="text-align: left;"| '''Debian 11 - Bullseye'''| style="text-align: left;"| '''Linux5.10'''| style="text-align: left;"| '''support'''| style="text-align: left;"| '''support'''|-| style="text-align: left;"| '''Ubuntu 20.04 - Focal'''| style="text-align: left;"| '''Linux5In addition, it should be noted that the development board DHCP automatically assigns an IP address without any settings.10'''| style="text-align: left;"| '''support'''| style="text-align: left;"| '''support'''|-| style="text-align: left;"| '''Ubuntu 22.04 - Jammy'''| style="text-align: left;"| '''Linux5.10'''| style="text-align: left;"| '''support'''| style="text-align: left;"| '''support'''</big>
|}
<span idol start="linux4" style="list-systemstyle-adaptationtype: decimal;"><li>The command to test the network connectivity is as follows, the '''ping''' command can be interrupted through the shortcut key of '''Ctrl+C'''</spanli>== Linux System adaptation ==
{| class="wikitable" style="width:800px;"
|-
| style="text-align: left;"| '''Function'''| style="text-alignorangepi@orangepi: left;"| ~$ '''Debian11'''| style="text-align: left;"| '''Ubuntu20ping www.baidu.04'''| style="textcom -align: left;"| '''Ubuntu22.04I eth0'''|-| style="text-alignPING www.a.shifen.com (14.215.177.38) from 192.168.1.12 eth0: left;"| '''USB256(84) bytes of data.0x3'''| style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''|-| style="text-align: left;"| '''USB364 bytes from 14.215.177.38 (14.215.177.0x1'''| style="text-align38): left;"| '''OK'''| styleicmp_seq="text-align: left;"| '''OK'''| style1 ttl="text-align: left;"| '''OK'''|-| style56 time="text-align: left;"| '''M6.2 NVMe SSD Start'''74 ms| style="text-align: left;"| '''OK'''| style="text-align64 bytes from 14.215.177.38 (14.215.177.38): left;"| '''OK'''| styleicmp_seq="text-align: left;"| '''OK'''|-| style2 ttl="text-align: left;"| '''WIFI'''| style56 time="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''|-| style="text-align: left;"| '''Bluetooth'''| style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''|-| style="text-align: left;"| '''GPIO(40pin)'''| style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''|-| style="text-align: left;"| '''UART(40pin)'''| style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''|-| style="text-align: left;"| '''SPI(40pin)'''| style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''|-| style="text-align: left;"| '''I2C(40pin)'''| style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''|-| style="text-align: left;"| '''PWM(40pin)'''| style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''|-| style="text-align: left;"| '''PWM fan interface'''| style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''|-| style="text-align: left;"| '''3pin Debug serial port'''| style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''|-| style="text-align: left;"| '''EMMC'''| style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''|-| style="text-align: left;"| '''TF card start'''| style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''|-| style="text-align: left;"| '''HDMI Video'''| style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''|-| style="text-align: left;"| '''HDMI Audio'''| style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''|-| style="text-align: left;"| '''Camera'''| style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''|-| style="text-align: left;"| '''LCD'''| style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''|-| style="text-align: left;"| '''Edp Display'''| style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''|-| style="text-align: left;"| '''Gigabit Ethernet port'''| style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''|-| style="text-align: left;"| '''Network port status light'''| style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''|-| style="text-align: left;"| '''headphone playback'''| style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''|-| style="text-align: left;"| '''headphone recording'''| style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''|-| style="text-align: left;"| '''LED Light'''| style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''|-| style="text-align: left;"| '''RTC'''| style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''|-| style="text-align: left;"| '''GPU'''| style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''|-| style="text-align: left;"| '''NPU'''| style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''|-| style="text-align: left;"| '''VPU'''| style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''|-| style="text-align: left;"| '''watchdog test'''| style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''|-| style="text-align: left;"| '''Chromium Hard solution video'''| style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''| style="text-align: left;"| '''OK'''|}6.80 ms
<span id64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq="the-format-of-linux-commands-in-this-manual"></span>== The format of Linux commands in this manual 3 ttl=56 time=6.26 ms
# In this manual, all commands that need to be entered in the Linux system will be marked with the following box64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=4 ttl=56 time=7.27 ms
As shown below, the content in the yellow box indicates the content that needs special attention, except for the commands in it.^C
<ol start="2" style="list-style-type: decimal;"><li><p>Description of the prompt type in front of the command</p><ol style="list-stylewww.a.shifen.com ping statistics --type: lower-alpha;"><li>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</li></ol></li></ol>
'''orangepi@orangepi:~$ sudo apt update'''4 packets transmitted, 4 received, 0% packet loss, time 3002ms
'''root@orangepi:~#''' '''vim rtt min/bootavg/bootmax/mdev = 6.cmd'''260/6.770/7.275/0.373 ms|}</ol><span id="wifi-connection-test"></span>
'''=== WIFI connection test@test:~$ ssh [mailto:root@192.168.1.36 root@192.168.1.]xxx'''===
{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''root@test:~# lsPlease 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.'''</big>|}
<ol startspan id="2" style="listwifi-the-server-image-connects-to-stylewifi-type: lowerthrough-alpha;commands"><li><p>'''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'''</p></lispan><li><p>'''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</p></li><li><p>'''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 server image connects to WIFI through commands, sudo needs to be added '''sudo'''</p></li><li><p>'''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</p></li></ol>====
<!-- {| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''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.'''</big>|} <ol start="3" style="list-style-type: decimal;"><li><p>What First log in to the Linux system, there are the commands that need to be entered?following three ways</p>
<ol style="list-style-type: lower-alpha;">
<li>As shown below<p>If the development board is connected with a network cable, '''you can remotely log in to the Linux system through ssh</p></li><li><p>If the black bold part''' development board is connected to the command that needs to be inputdebugging serial port, and you can use the content below serial port terminal to log in to the command Linux system</p></li><li><p>If the development board is connected to the output content (some commands have outputHDMI display, some may not), and this part of you can log in to the Linux system through the terminal displayed on the content does not need to be inputHDMI</p></li></ol></li><li><p>First use the nmcli dev wifi command to scan the surrounding WIFI hotspots</olp></li>
root{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~# $ '''cat /boot/orangepiEnv.txtnmcli dev wifi'''|}
'''verbosity<div class=7'''"figure">
bootlogo=false[[File:pi3b-img176.png]]
'''console</div></ol><ol start=serial'''"3" style="list-style-type: decimal;"><li>Then use the nmcli command to connect to the scanned WIFI hotspot, where:</li>
<ol start="2" style="list-style-type: lower-alpha;"><li>As shown below, some commands cannot be written in one line and will be placed on the next linea. 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 &quot;\&quot; of each line '''wifi_name''' needs to be removed, this is not part of replaced with the command. In addition, there are spaces in different parts name of the command, please don’t miss it</li></ol>WIFI hotspot you want to connect to
orangepi@orangepi:~$ b. '''echo \wifi_passwd'''needs to be replaced with the password of the WIFI hotspot you want to connect to
:{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''&quot;deb [archnmcli dev wifi connect <span style="color:#FF0000">wifi_name</span> password <span style=$(dpkg --print-architecture) \"color:#FF0000">wifi_passwd</span>'''
Device 'wlan0'successfully activated with 'signedcf937f88-byca1e-4411-bb50-61f402eef293'.|}</ol><ol start="4" style=/usr/share/keyrings/docker"list-archivestyle-keyring.gpg] \type: decimal;"><li>You can view the IP address of wifi through the '''ip addr show wlan0'''command
{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''https://download.docker.com/Linux/debian \ip addr show wlan0'''
'''$(lsb_release -cs) stable11: wlan0: &quotlt; | sudo tee /etc/apt/sources.list.d/docker.list BROADCAST,MULTICAST,UP,LOWER_UP&gt; /dev/null'''mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
<span id="linux-system-login-instructions"><:link/span>== Linux system login instructions ==ether 23:8c:d6:ae:76:bb brd ff:ff:ff:ff:ff:ff
:inet '''<span idstyle="linux-system-default-login-account-and-passwordcolor:#FF0000">192.168.1.11</span>=== Linux system default login account and password ==='''/24 brd 192.168.1.255 scope global dynamic noprefixroute wlan0
{| class="wikitable"|-| style="text-align: left;"| '''Account'''| style="text-align: left;"| '''Passport'''|-| style="text-align: left;"| '''root'''| style="text-align: left;"| '''orangepi'''|-| style="text-align: left;"| '''orangepi'''| style="text-align: left;"| '''orangepi'''|}valid_lft 259192sec preferred_lft 259192sec
'''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.''':inet6 240e:3b7:3240:c3a0:c401:a445:5002:ccdd/64 scope global dynamic noprefixroute
'''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.'''::valid_lft 259192sec preferred_lft 172792sec
<span id="how-to-set-automatic-terminal-login-in-linux-system"><:inet6 fe80::42f1:6019:a80e:4c31/span>=== How to set automatic terminal login in Linux system ===64 scope link noprefixroute
# The Linux system automatically logs in ::valid_lft forever preferred_lft forever|}</ol><ol start="5" style="list-style-type: decimal;"><li>Use the '''ping''' command to test the terminal by defaultconnectivity of the wifi network, and the default login user name is orangepi '''orangepiping''' command can be interrupted through the shortcut key '''Ctrl+C'''</li>
[[File{| class="wikitable" style="width:pi3b800px;" |-img171| orangepi@orangepi:~$ '''ping www.png|351x198px]]orangepi.org -I wlan0'''
<ol start="2" style="list-style-typePING www.orangepi.org (182.92.236.130) from 192.168.1.49 wlan0: decimal;"><li>Use the following command to set the root user to automatically log in to the terminal</li></ol>56(84) bytes of data.
orangepi@orangepi64 bytes from 182.92.236.130 (182.92.236.130):~$ '''sudo auto_login_cliicmp_seq=1 ttl=52 time=43.sh root'''5 ms
<ol start64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq="2 ttl=52 time=41.3" style="list-style-type: decimal;"><li>Use the following command to disable automatic login terminal</li></ol>ms
orangepi@orangepi64 bytes from 182.92.236.130 (182.92.236.130):~$ '''sudo auto_login_cliicmp_seq=3 ttl=52 time=44.sh -d'''9 ms
<ol start64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq="4" stylettl="list-style-type: decimal;"><li>Use the following command to set the orangepi user to automatically log in to the terminal again</li></ol>52 time=45.6 ms
orangepi@orangepi64 bytes from 182.92.236.130 (182.92.236.130):~$ '''sudo auto_login_cliicmp_seq=5 ttl=52 time=48.sh orangepi'''8 ms
<span id="instructions-for-automatic-login-of-linux-desktop-version-system"></span>=== Instructions for automatic login of Linux desktop version system ===^C
# After the desktop system starts, it will automatically log in to the desktop without entering a password--- www.orangepi.org ping statistics ---
<div class="figure">5 packets transmitted, 5 received, 0% packet loss, time 4006ms
[[File:pi3b-img172rtt min/avg/max/mdev = 41.321/44.864/48.834/2.png484 ms|576x324px|1]]}</ol><span id="the-server-image-connects-to-wifi-in-a-graphical-way"></span>
</div><ol start="2" style="list-style-type: decimal;"><li>Run the following command == The server image connects to prohibit the desktop system from automatically logging into the desktop</li></ol>WIFI in a graphical way ====
orangepi@orangepi<ol style="list-style-type:~$ decimal;"><li>First log in to the Linux system, there are the following three ways</li><ol style="list-style-type: lower-alpha;"><li><p>If the development board is connected with a network cable, you can remotely log in to [[Orange Pi 3B#SSH remote login development board|'''sudo disable_desktop_autologin.shthe Linux system through ssh''']]</p></li><li><p>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)</p></li><li><p>If the development board is connected to the HDMI display, you can log in to the Linux system through the HDMI display terminal</p></li></ol>
<li>Then enter the nmtui command in the command line to open the wifi connection interface</li>
{| class="wikitable" style="width:800px;"
|-
|
orangepi@orangepi:~$ '''nmtui'''
|}
</ol>
<ol start="3" style="list-style-type: decimal;">
<li>Enter the nmtui command to open the interface as shown below<p/li>Then restart the system and a login dialog box will appear, at which point a  [[\l|passwordFile:pi3b-img177.png]] is required to enter the system</pol><div classol start="4" style="figurelist-style-type: decimal;"><li>Select '''Activate a connect''' and press Enter</li>
[[File:pi3b-img173img178.png|569x320px|IMG_256]]</ol><ol start="5" style="list-style-type: decimal;"><li>Then you can see all the searched WIFI hotspots</li>
</div></li></olclass="figure">
<span id="the[[File:pi3b-setting-method-of-root-user-automatic-login-in-linux-desktop-version-system"></span>=== The setting method of root user automatic login in Linux desktop version system ===img179.png]]
# Execute </div></ol><ol start="6" style="list-style-type: decimal;"><li>Select the following command WIFI hotspot you want to set connect to, then use the desktop system Tab key to automatically log in as position the root usercursor on '''Activate''' and press Enter</li>
orangepi@orangepi:~$ '''sudo desktop_login.sh root'''<div class="figure">
<ol start="2" style="list[[File:pi3b-style-type: decimal;"><li>Then restart the system, and the root user will automatically log in to the desktop</li></ol>img180.png]]
[[File</div></ol><ol start="7" style="list-style-type:pi3b-img174.png|448x187px]]decimal;"><li>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</li>
'''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.'''<div class="figure">
'''Also note that this is not a bug, since pulseaudio is not allowed to run as root[[File:pi3b-img181.'''png]]
</div></ol><ol start="38" style="list-style-type: decimal;"><li>Execute After the following command to set the desktop system to log WIFI connection is successful, a &quot;*&quot; will be displayed in automatically with front of the orangepi user againconnected WIFI name</li></ol>
orangepi@orangepi:~$ '''sudo desktop_login.sh orangepi'''<div class="figure">
<span id="the[[File:pi3b-method-of-disabling-the-desktop-in-the-linux-desktop-version-system"></span>=== The method of disabling the desktop in the Linux desktop version system ===img182.png]]
# First enter </div></ol><ol start="9" style="list-style-type: decimal;"><li>You can view the following command on IP address of wifi through the '''ip addr show wlan0''' command line,</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''Please remember to add sudo permissionip addr show wlan0'''
orangepi@orangepi11:~$ '''sudo systemctl disable lightdm.service'''wlan0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
<ol start="2" style="list-style-type: decimal;"><li>Then restart the Linux system and you will find that the desktop will not be displayed<link/li></ol>ether 24:8c:d3:aa:76:bb brd ff:ff:ff:ff:ff:ff
orangepi@orangepi:~$ inet '''sudo reboot<span style="color:#FF0000">192.168.1.11</span>'''/24 brd 192.168.1.255 scope global dynamic noprefixroute wlan0
<ol start="3" style="list-style-type: decimal;"><li><p>The steps to reopen the desktop are as follows:</p><ol style="list-style-type: lower-alpha;"><li>First enter the following command on the command line,'''Please remember to add sudo permission'''</li></ol></li></ol>valid_lft 259069sec preferred_lft 259069sec
orangepi@orangepi:~$ '''sudo systemctl start lightdm.service'''inet6 240e:3b7:3240:c4a0:c401:a445:5002:ccdd/64 scope global dynamic noprefixroute
<ol start="2" style="list-style-type: lower-alpha;"><li>After the command is executed, the desktop will be displayed</li></ol>:valid_lft 259071sec preferred_lft 172671sec
<span id="onboard-led-light-test-instructions"><:inet6 fe80::42f1:6019:a80e:4c31/span>== Onboard LED Light Test Instructions ==64 scope link noprefixroute
# There are three LED lights on ::valid_lft forever preferred_lft forever|}</ol><ol start="10" style="list-style-type: decimal;"><li>Use the '''ping''' command to test the development board, one green light, one red lightconnectivity of the wifi network, and one PCIe light. The location is shown in the figure below'''ping''' command can be interrupted through the shortcut key '''Ctrl+C'''</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''ping www.orangepi.org -I wlan0'''
<div class="figure">PING www.orangepi.org (182.92.236.130) from 192.168.1.49 wlan0: 56(84) bytes of data.
[[File:pi3b-img17564 bytes from 182.png|425x115px|C:\Users\orangepi\Desktop\用户手册插图\pi 3b\392.5236.Onboard-LED-Light-Test-Instructions130 (1)182.jpg392.5236.Onboard-LED-Light-Test-Instructions(130): icmp_seq=1)]]ttl=52 time=43.5 ms
</div><ol start64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq="2" stylettl="list-style-type: decimal;"><li><p>'''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'''</p></li><li><p>The green LED light will keep blinking after the kernel is started, which is controlled by software.</p></li><li><p>The PCIe indicator will flash when there is data transmission on the PCIe interface52 time=41.</p></li><li><p>The method of setting the green light on and off and flashing is as follows</p></li></ol>3 ms
'''Note that the following operations should be performed under the root user64 bytes from 182.'''92.236.130 (182.92.236.130): icmp_seq=3 ttl=52 time=44.9 ms
<ol style64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=4 ttl=52 time="list-style-type: lower-alpha;"><li>First enter the setting directory of the green light</li></ol>45.6 ms
root@orangepi64 bytes from 182.92.236.130 (182.92.236.130):~# '''cd /sys/class/leds/status'''icmp_seq=5 ttl=52 time=48.8 ms
<ol start="2" style="list-style-type: lower-alpha;"><li>The command to set the green light to stop flashing is as follows</li></ol>^C
root@--- www.orangepi:/sys/class/leds/work# '''echo none &gt; trigger'''.org ping statistics ---
<ol start="3" style="list-style-type: lower-alpha;"><li>The command to set the green light to be on is as follows</li></ol>5 packets transmitted, 5 received, 0% packet loss, time 4006ms
root@orangepi:rtt min/sysavg/classmax/ledsmdev = 41.321/work# '''echo default44.864/48.834/2.484 ms|}</ol><span id="test-on &gt; trigger'''method-of-desktop-image"></span>
<ol start="4" style="list-style-type: lower-alpha;"><li>The command to set the green light to flash is as follows</li></ol>== Test method of desktop image ====
root@orangepi:/sys/class/leds/work# '''echo heartbeat &gt; trigger'''Click the network configuration icon in the upper right corner of the desktop (please do not connect the network cable when testing WIFI)
<span id="network::[[File:pi3b-connection-test"></span>== Network connection test ==img183.png]]
<span idol start="ethernet2" style="list-portstyle-testtype: decimal;"><li>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.</spanli>=== Ethernet port test ===
# First, insert one end of [[File:pi3b-img184.png]]</ol><ol start="3" style="list-style-type: decimal;"><li>Then enter the network cable into the Ethernet interface password of the development board, and connect the other end of the network cable to the routerWIFI hotspot, and ensure that the network is unblocked# After the system starts, it will automatically assign an IP address to the Ethernet card through DHCP, then click '''No other configuration is requiredConnect'''# The command to view the IP address in the Linux system of the development board is as followsstart connecting to WIFI</li>
orangepi@orangepi[[File:~$ '''ip addr show eth0'''pi3b-img185.png]]</ol><ol start="4" style="list-style-type: decimal;"><li>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</li>
2[[File: eth0pi3b-img186.png]]</ol><ol start="5" style="list-style-type: &ltdecimal;BROADCAST"><li>If you can open other web pages after opening the browser,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc mq state UP group default qlen 1000it means that the WIFI connection is normal</li>
link[[File:pi3b-img187-1.png]]</ether 4a:fe:2b:3d:17:1c brd ff:ff:ff:ff:ff:ffol><span id="how-to-set-a-static-ip-address"></span>
inet '''192.168.1.150'''/24 brd 192.168.1.255 scope global dynamic noprefixroute eth0=== How to set a static IP address ===
valid_lft 43150sec preferred_lft 43150sec{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''Please do not set a static IP address by modifying the /etc/network/interfaces configuration file.'''</big>|}
inet6 fe80::9a04:3703:faed:23be<span id="use-the-nmtui-command-to-set-a-static-ip-address"></64 scope link noprefixroutespan>==== Use the nmtui command to set a static IP address ====
valid_lft forever preferred_lft forever# First run the '''nmtui''' command
::{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''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 ifconfignmtui'''|}
orangepi@orangepi<ol start="2" style="list-style-type:~$ decimal;"><li>Then select '''ifconfigEdit a connection'''and press Enter</li>
Command [[File:pi3b-img188.png]]</ol><ol start="3" style="list-style-type: decimal;"><li>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 ''ifconfig' is available in the following placesWired connection 1'''.</li>
* [[File:pi3b-img189.png]]</sbinol><ol start="4" style="list-style-type: decimal;"><li>Then select '''Edit''' with the '''Tab''' key and press the Enter key</ifconfigli>
* [[File:pi3b-img190.png]]</usrol><ol start="5" style="list-style-type: decimal;"><li>Then use the Tab key to move the cursor to the '''&lt;Automatic&gt;''' position shown in the figure below to configure IPv4</sbin/ifconfigli>
The command could not be located because '[[File:pi3b-img191.png]]</sbinol><ol start="6" style="list-style-type:/usr/sbindecimal;"><li>Then press Enter, select '''Manual''' is not included in with the PATH environment variable.up and down arrow keys, and press Enter to confirm</li>
This [[File:pi3b-img192.png]]</ol><ol start="7" style="list-style-type: decimal;"><li>The display after selection is most likely caused by shown in the lack of administrative privileges associated with your user account.figure below</li>
ifconfig[[File: command not foundpi3b-img193.png]]</ol><ol start="8" style="list-style-type: decimal;"><li>Then move the cursor to the '''&lt;Show&gt;'''</li>
'''There are three ways to check [[File:pi3b-img194.png]]</ol><ol start="9" style="list-style-type: decimal;"><li>Then press Enter, the IP address following setting interface will pop up after the development board starts:'''entering</li>
# '''Connect [[File:pi3b-img195.png]]</ol><ol start="10" style="list-style-type: decimal;"><li>Then you can set the HDMI displayIP address (Addresses), then log in to the system gateway (Gateway) and use the ip addr show eth0 command to view the IP DNS server address'''# '''Enter in the ip addr show eth0 command position shown in the debugging serial terminal to view the IP addressfigure below (there are many other setting options in it, please explore by yourself), '''<span style="color:# '''If there is no debugging serial port and no HDMI displayFF0000">Please set it according to your specific needs, you can also check the IP address of the development board’s network port through the router’s management interface. However, value set 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:figure below is just an example</span>'''</li>
[[File:pi3b-img196.png]]<!-- --/ol><ol start="11" style="list-style-type: upper-alphadecimal;"><li><p>'''First check whether the Linux system has started normally. If the green light of the development board is blinkingAfter setting, it is generally started normally. If only move the red light is on, it means that the system has not started normally;cursor to'''</p></li><li><p>'''Check whether the network cable is plugged in tightly, or try another network cable&lt;OK&gt;'''</p></li><li><p>'''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);'''</p></li><li><p>'''If there is no router to replacelower right corner, you can only connect to an HDMI display or use the debugging serial port and press Enter to view the IP address'''</p>confirm</li></ol>
[[File:pi3b-img197.png]]</ol><ol start="12" style="list-style-type: decimal;"><li>Then click'''In addition, it should be noted that the development board DHCP automatically assigns an IP address without any settings.&lt;Back&gt;'''to return to the previous selection interface</li>
[[File:pi3b-img198.png]]</ol><ol start="413" style="list-style-type: decimal;"><li>The command to test the network connectivity is as follows, the Then select '''pingActivate a connection''' command can be interrupted through , then move the shortcut key of cursor to'''Ctrl+C&lt;OK&gt;''', and finally click Enter</li></ol>
orangepi@orangepi[[File:~$ pi3b-img199.png]]</ol><ol start="14" style="list-style-type: decimal;"><li>Then select the network interface that needs to be set, such as '''Wired connection 1''', then move the cursor to'''&lt;Deactivate&gt;''', and press Enter to disable ''ping www.baidu.com -I eth0'Wired connection 1'''</li>
PING www.a.shifen.com (14.215.177.38) from 192.168[[File:pi3b-img200.png]]</ol><ol start="15" style="list-style-type: decimal;"><li>Then please do not move the cursor, and then press the Enter key to re-enable '''Wired connection 1.12 eth0: 56(84) bytes of data.''', so that the static IP address set earlier will take effect</li>
64 bytes from 14.215.177.38 (14.215.177[[File:pi3b-img201.38): icmp_seqpng]]</ol><ol start=1 ttl"16" style=56 time=6.74 ms"list-style-type: decimal;"><li>Then you can exit nmtui through the'''&lt;Back&gt;''' and '''Quit''' buttons</li>
64 bytes from 14[[File:pi3b-img202.215.177.38 (14.215.177png]] [[File:pi3b-img203.38): icmp_seqpng]]</ol><ol start=2 ttl"17" style=56 time=6.80 ms"list-style-type: decimal;"><li>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</li>
64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq{| class=3 ttl"wikitable" style=56 time=6.26 ms"width:800px;" |-| orangepi@orangepi:~$ '''ip addr show eth0'''
64 bytes from 14.215.177.38 (14.215.177.38)3: icmp_seq=4 ttl=56 time=7.27 mseth0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
^C:link/ether 5e:ac:14:a5:92:b3 brd ff:ff:ff:ff:ff:ff
--- www:inet '''<span style="color:#FF0000">192.a168.shifen1.com ping statistics ---177</span>'''/24 brd 192.168.1.255 scope global noprefixroute eth0
4 packets transmitted, 4 received, 0% packet loss, time 3002ms::valid_lft forever preferred_lft forever
rtt min:inet6 241e:3b8:3240:c3a0:e269:8305:dc08:135e/avg/max/mdev = 6.260/6.770/7.275/0.373 ms64 scope global dynamic noprefixroute
<span id="wifi-connection-test"></span>=== WIFI connection test ===::valid_lft 259149sec preferred_lft 172749sec
'''Please do not connect to WIFI by modifying the :inet6 fe80::957d:bbbe:4928:3604/etc/network/interfaces configuration file. There will be problems connecting to the WIFI network in this way.'''64 scope link noprefixroute
::valid_lft forever preferred_lft forever|}</ol><span idol start="wifi18" style="list-thestyle-server-image-connects-to-wifi-through-commandstype: decimal;"></spanli>==== WIFI The server image connects Then you can test the connectivity of the network to WIFI check whether the IP address is configured OK, and the '''ping''' command can be interrupted through commands ====the shortcut key '''Ctrl+C'''</li>
{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''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 networkping 192. Because nmtui can only display characters in some serial port software (such as minicom), and cannot display the graphical interface normally168. 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 network1.47 -I eth0'''
<ol style="list-style-typePING 192.168.1.47 (192.168.1.47) from 192.168.1.188 eth0: decimal;"><li><p>First log in to the Linux system, there are the following three ways</p><ol style="list-style-type: lower-alpha;"><li><p>If the development board is connected with a network cable, you can remotely log in to the Linux system through ssh</p></li><li><p>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</p></li><li><p>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</p></li></ol></li><li><p>First use the nmcli dev wifi command to scan the surrounding WIFI hotspots</p></li></ol>56(84) bytes of data.
orangepi@orangepi64 bytes from 192.168.1.47:~$ '''nmcli dev wifi'''icmp_seq=1 ttl=64 time=0.233 ms
<div class64 bytes from 192.168.1.47: icmp_seq="figure">2 ttl=64 time=0.263 ms
[[File64 bytes from 192.168.1.47:pi3b-img176icmp_seq=3 ttl=64 time=0.png|575x250px|选区_011]]273 ms
</div><ol start64 bytes from 192.168.1.47: icmp_seq=4 ttl="3" style64 time="list-style-type: decimal;"><li>Then use the nmcli command to connect to the scanned WIFI hotspot, where:</li></ol>0.269 ms
a64 bytes from 192. '''wifi_name''' needs to be replaced with the name of the WIFI hotspot you want to connect to168.1.47: icmp_seq=5 ttl=64 time=0.275 ms
b. '''wifi_passwd''' needs to be replaced with the password of the WIFI hotspot you want to connect to^C
orangepi@orangepi:~$ '''nmcli dev wifi connect wifi_name password wifi_passwd'''--- 192.168.1.47 ping statistics ---
Device 'wlan0' successfully activated with 'cf937f88-ca1e-4411-bb50-61f402eef293'.5 packets transmitted, 5 received, 0% packet loss, time 4042ms
rtt min/avg/max/mdev = 0.233/0.262/0.275/0.015 ms|}</ol start><span id="4" style="listuse-the-nmcli-command-to-set-a-static-styleip-type: decimal;address"><li>You can view the IP address of wifi through the '''ip addr show wlan0''' command</li></olspan>
orangepi@orangepi:~$ '''ip addr show wlan0'''==== Use the nmcli command to set a static IP address ====
11<ol style="list-style-type: wlan0: &ltdecimal;BROADCAST"><li><p>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,MULTICASTplease connect the WIFI first,UPand then start to set the static IP address'''</p></li><li><p>Then use the '''nmcli con show''' command to view the name of the network device,LOWER_UP&gtas shown below</p><ol style="list-style-type: lower-alpha;"><li><p>'''orangepi''' is the name of the WIFI network interface (the names are not necessarily the same)</p></li><li><p>'''Wired connection 1''' is the name of the Ethernet interface</p></li>{| class="wikitable" style="width:800px;"|-|orangepi@orangepi:~$ '''nmcli con show'''<br><span style="margin-right: 180px;">NAME</span><span style="margin-right: 260px;">UUID </span><span style="margin-right: 45px;">TYPE </span><span style="margin-right: 50px;">DEVICE</span><br><span style="margin-right: 125px;">'''orangepi'''</span><span style="margin-right: 70px;">cfc4f922-ae48-46f1-84e1-2f19e9ec5e2a</span><span style="margin-right: 50px;">wifi </span><span style="margin-right: 50px;">wlan0</span><br><span style="margin-right: 50px;">'''Wired connection 1'''</span><span style="margin-right: 50px;">9db058b7-7701-37b8-9411-efc2ae8bfa30</span><span style="margin-right: 30px;">ethernet </span><span style="margin-right: 50px; mtu 1500 qdisc pfifo_fast state UP group default qlen 1000">eth0</span><br>|}</ol></li></ol>
link<ol start="3" style="list-style-type: decimal;"><li>Then enter the following command, where</ether 23:8c:d6:ae:76:bb brd ff:ff:ff:ff:ff:ffli>
inet :a. '''192.168.&quot;Wired connection 1&quot;''' means to set the static IP address of the Ethernet port.11If 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 '''/24 brd 192.168.1.255 scope global dynamic noprefixroute wlan0nmcli con show''' command)
valid_lft 259192sec preferred_lft 259192sec:b. After '''ipv4.addresse''' is the static IP address to be set, which can be modified to the value you want to set
inet6 240e:3b7:3240:c3a0:c401:a445:5002:ccdd/64 scope global dynamic noprefixroutec. '''ipv4.gateway''' indicates the address of the gateway
valid_lft 259192sec preferred_lft 172792sec::{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''nmcli con mod &quot;Wired connection 1&quot; \'''
inet6 fe80::42f1:6019:a80e:4c31/64 scope link noprefixroute'''ipv4.addresses &quot;192.168.1.110&quot; \'''
valid_lft forever preferred_lft forever'''ipv4.gateway &quot;192.168.1.1&quot; \'''
5) Use the '''ping''' command to test the connectivity of the wifi network, and the '''ping''' command can be interrupted through the shortcut key '''Ctrl+Cipv4.dns &quot;8.8.8.8&quot; \'''
'''ipv4.method &quot;manual&quot;'''|}</ol><ol start="4" style="list-style-type: decimal;"><li>Then restart the Linux system</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''ping www.sudo reboot'''|}</ol><ol start="5" style="list-style-type: decimal;"><li>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</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi.org -I wlan0:~$ '''ip addr show eth0'''
PING www.orangepi.org (182.92.236.130) from 192.168.1.49 wlan03: 56(84) bytes of data.eth0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=1 ttl=52 time=43.5 mslink/ether 5e:ae:14:a5:91:b3 brd ff:ff:ff:ff:ff:ff
64 bytes from 182.92:inet '''<span style="color:#FF0000">192.236168.130 (1821.92110</span>'''/32 brd 192.236168.130): icmp_seq=2 ttl=52 time=411.3 ms110 scope global noprefixroute eth0
64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=3 ttl=52 time=44.9 ms:valid_lft forever preferred_lft forever
:inet6 240e:3b7:3240:c3a0:97de:1d01:b290:fe3a/64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=4 ttl=52 time=45.6 msscope global dynamic noprefixroute
64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=5 ttl=52 time=48.8 ms:valid_lft 259183sec preferred_lft 172783sec
^C:inet6 fe80::3312:861a:a589:d3c/64 scope link noprefixroute
::valid_lft forever preferred_lft forever|}</ol><span id="ssh-remote-login- www.orangepi.org ping statistics --development-board"></span>
5 packets transmitted, 5 received, 0% packet loss, time 4006ms== SSH remote login development board ==
rtt min/avg/max/mdev {| class="wikitable" style= 41.321/44"background-color:#ffffdc;width:800px;" |-| <big>'''Linux systems enable ssh remote login by default and allow the root user to log in to the system.864/48Before 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.834'''</2.484 msbig>|}
<span id="thessh-serverremote-imagelogin-connectsdevelopment-toboard-wifiunder-in-a-graphical-wayubuntu"></span>==== The server image connects to WIFI in a graphical way =SSH remote login development board under Ubuntu ===
1) First # Obtain the IP address of the development board# Then you can remotely log in to the Linux system, there are through the following three waysssh command
<ol ::{| class="wikitable" style="list-style-typewidth: lower-alpha800px;"><li><p>If the development board is connected with a network cable, you can remotely log in to [[\l|the Linux system through -| test@test:~$ '''ssh[mailto:root@192.168.1.36 root@192.168.1.]]</p></li><li><p>If the development board is connected xxx''' &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Need to be replaced with 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)</p></li><li><p>If IP address of the development board is connected to the HDMI display, you can log in to the Linux system through the HDMI display terminal</p></li></ol>)
<!root@192.168.1.xx's password: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Enter the password here, the default password is orangepi)|}::{| class="wikitable" style="background-color:#ffffdc;width:800px;" |- --># | <big>'''Note that when entering the password, <span style="color:# Then enter FF0000">the specific content of the nmtui command in entered password will not be displayed on the command line screen</span>, please do not think that there is any fault, just press Enter after inputting.'''</big>|}::{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''If you are prompted to open refuse the wifi connection interface, as long as you are using the image provided by Orange Pi, <span style="color:#FF0000">please do not suspect that the password orangepi is wrong</span>, but look for other reasons.'''</big>|}
orangepi@orangepi<ol start="3" style="list-style-type:~$ '''nmtui'''decimal;"><li>After successfully logging in to the system, the display is as shown in the figure below</li>
<ol startdiv class="3figure" style="list-style-type: decimal;"><li>Enter the nmtui command to open the interface as shown below</li></ol>
[[File:pi3b-img177img204.png|345x215px]]
<ol start/div>{| class="4wikitable" style="listbackground-style-typecolor:#ffffdc;width: decimal800px;">|-| <libig>Select '''Activate a 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:''' and press Enter</li></ol>
[[File:pi3b-img178.png|349x216px]]
<ol start="5" style="list-style-typeroot@orangepi: decimal;"><li>Then you can see all the searched WIFI hotspots</li></ol>~# '''reset_ssh.sh'''
<div class="figure">
[[File:pi3b-img179'''If it still doesn't work, try to reset the system.png'''</big>|426x270px|16]]}</ol><span id="ssh-remote-login-development-board-under-windows"></span>
</div><ol start="6" style="list-style-type: decimal;"><li>Select the WIFI hotspot you want to connect to, then use the Tab key to position the cursor on '''Activate''' and press Enter</li></ol>= SSH remote login development board under Windows ===
<div class="figure"># 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
[[File:pi3b-img180:a.png|474x298px|17]]Open '''Session'''
</div><ol start="7" style="list-style-type: decimal;"><li>:b. Then a dialog box for entering a password will pop up, enter the corresponding password select '''SSH''' in '''PasswordSession Setting''' and press Enter to start connecting to WIFI</li></ol>
<div class="figure">::c. Then enter the IP address of the development board in the '''Remote host'''
[[File:pi3b-img181:d.png|480x308px|18]]Then enter the user name '''root''' or '''orangepi''' of the Linux system in '''Specify username'''
</div><ol start="8" style="list-style-type: decimal;"><li>After the WIFI connection is successful, a &quot;*&quot; will be displayed in front of the connected WIFI name</li></ol>:e. Finally click '''OK'''
<div class="figure">
::[[File:pi3b-img182img205.png|443x283px|C:\Users\orangepi\Desktop\用户手册插图\Zero3\未标题-9.jpg未标题-9]]
</div>
<ol start="93" style="list-style-type: decimal;"><li>You can view Then you will be prompted to enter a password. The default passwords for root and orangepi users are orangepi</li>{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''Note that when entering the password, <span style="color:#FF0000">the IP address specific content of wifi through the entered password will not be displayed on the screen</span>, please do not think that there is any fault, just press Enter after inputting.'''ip addr show wlan0''' command</li></olbig>|}
orangepi@orangepi:~$ '''ip addr show wlan0'''<div class="figure">
11[[File: wlan0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast state UP group default qlen 1000pi3b-img206.png]]
link</ether 24div></ol><ol start="4" style="list-style-type:8c:d3:aa:76:bb brd ff:ff:ff:ff:ff:ffdecimal;"><li>After successfully logging in to the system, the display is as shown in the figure below</li>
inet '''192[[File:pi3b-img207.168.1.11'''png]]</ol><span id="the-method-of-uploading-files-to-the-linux-system-of-the-development-board"></24 brd 192.168.1.255 scope global dynamic noprefixroute wlan0span>
valid_lft 259069sec preferred_lft 259069sec== The method of uploading files to the Linux system of the development board ==
inet6 240e:3b7:3240:c4a0:c401:a445:5002:ccdd<span id="how-to-upload-files-to-the-development-board-linux-system-in-ubuntu-pc"></64 scope global dynamic noprefixroutespan>=== How to upload files to the development board Linux system in Ubuntu PC ===
valid_lft 259071sec preferred_lft 172671sec<span id="how-to-upload-files-using-the-scp-command"></span>==== How to upload files using the scp command ====
inet6 fe80::42f1:6019:a80e:4c31/64 scope link noprefixroute# 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
valid_lft forever preferred_lft forever::a. '''file_path''': need to be replaced with the path of the file to be uploaded
<ol start="10" style="list-style-type: decimal;"><li>Use the :b. '''pingorangepi''' command to test : It is the user name of the connectivity Linux system of the wifi networkdevelopment board, and the '''ping''' command it can also be interrupted through the shortcut key '''Ctrl+C'''</li></ol>replaced with other ones, such as root
orangepi@orangepi:~$ :c. '''ping www192.168.orangepixx.org -I wlan0xx''': It is the IP address of the development board, please modify it according to the actual situation
PING www::d.'''/home/orangepi.org (182.92.236.130) from 192.168.1.49 wlan0''': 56(84) bytes The path in the Linux system of data.the development board, which can also be modified to other paths
64 bytes from 182::{| class="wikitable" style="width:800px;" |-| test@test:~$ '''scp file_path orangepi@192.92168.236xx.130 (182.92.236.130)xx: icmp_seq=1 ttl=52 time=43.5 ms/home/orangepi/'''|}
64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq<ol start="2 ttl" style=52 time=41.3 ms"list-style-type: decimal;"><li>If you want to upload a folder, you need to add the -r parameter</li>
64 bytes from 182.92{| class="wikitable" style="width:800px;" |-| test@test:~$ '''scp <span style="color:#FF0000">-r</span> dir_path orangepi@192.236168.130 (182xx.92.236.130)xx: icmp_seq/home/orangepi/'''|}</ol><ol start="3 ttl" style="list-style-type: decimal;"><li>There are more usages of scp, please use the following command to view the man manual</li>{| class=52 time"wikitable" style=44.9 ms"width:800px;" |-| test@test:~$ '''man scp'''|}</ol><span id="how-to-upload-files-using-filezilla"></span>
64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=4 ttl=52 time=45.6 ms= How to upload files using filezilla ====
64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=5 ttl=52 time=48.8 ms# First install filezilla in Ubuntu PC
^C::{| class="wikitable" style="width:800px;" |-| test@test:~$ '''sudo apt install -y filezilla'''|}
<ol start="2" style="list-style-- www.orangepi.org ping statistics ---type: decimal;"><li>Then use the following command to open filezilla</li>
5 packets transmitted{| class="wikitable" style="width:800px;" |-| test@test:~$ '''filezilla'''|}</ol><ol start="3" style="list-style-type: decimal;"><li>The interface after filezilla is opened is as follows, 5 received, 0% packet loss, time 4006msand the display under the remote site on the right is empty</li>
rtt min/avg/max/mdev <div class= 41.321/44.864/48.834/2.484 ms"figure">
<span id="test[[File:pi3b-method-of-desktop-image"></span>==== Test method of desktop image ====img208.png]]
# Click </div></ol><ol start="4" style="list-style-type: decimal;"><li>The method of connecting the network configuration icon development board is shown in the upper right corner of the desktop (please do not connect the network cable when testing WIFI)figure below</li>
[[File:pi3b-img183.png|377x166px]]<div class="figure">
<ol start="2" style="list-style-type[[File: decimal;"><li>Click '''More networks''' in the pop-up droppi3b-down box to see all scanned WIFI hotspots, and then select the WIFI hotspot you want to connect toimg209.</li></ol>png]]
[[File</div></ol><ol start="5" style="list-style-type:pi3b-img184.png|576x353px]]decimal;"><li>Then choose to '''save the password''', and then click '''OK'''</li>
[[File:pi3b-img210.png]]</ol><ol start="36" style="list-style-type: decimal;"><li>Then enter the password of the WIFI hotspotchoose to always '''trust this host''', and then click '''ConnectOK''' to start connecting to WIFI</li></ol>
[[File:pi3b-img185.png|320x163px]]<div class="figure">
<ol start="4" style="list[[File:pi3b-style-type: decimal;"><li>After connecting to WIFI, you can open the browser to check whether you can access the Internetimg211. The entrance of the browser is shown in the figure below</li></ol>png]]
[[File</div></ol><ol start="7" style="list-style-type:pi3b-img186.png|576x308px]]decimal;"><li>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</li>
<ol startdiv class="5figure" style="list-style-type: decimal;"><li>If you can open other web pages after opening the browser, it means that the WIFI connection is normal</li></ol>
[[File:pi3b-img187img212.png|576x222px]]
<span id/div></ol><ol start="8" style="how-to-set-a-staticlist-ipstyle-addresstype: decimal;"><li>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.</spanli>=== How to set a static IP address ===
'''Please do not set a static IP address by modifying the /etc/network/interfaces configuration file.'''<div class="figure">
<span id="use[[File:pi3b-the-nmtui-command-to-set-a-static-ip-address"></span>==== Use the nmtui command to set a static IP address ====img213.png]]
# First run </div></ol><ol start="9" style="list-style-type: decimal;"><li>After the '''nmtui''' commandupload is complete, you can go to the corresponding path in the Linux system of the development board to view the uploaded file</li>
orangepi@orangepi:~$ '''nmtui''<li>The method of uploading a folder is the same as that of uploading a file, so I won't go into details here</li></ol><span id="the-method-of-uploading-files-from-windows-pc-to-the-linux-system-of-the-development-board"></span>
<ol start="2" style="list-style-type: decimal;"><li>Then select '''Edit a connection''' and press Enter</li></ol>= The method of uploading files from Windows PC to the Linux system of the development board ===
[[File:pi3b<span id="how-img188.png|227x247px]]to-upload-files-using-filezilla-1"></span>==== How to upload files using filezilla ====
<ol start="3" style="list-style-type: decimal;"><li>Then select # First download the network interface that needs to set a static IP address, for example, to set installation file of the static IP address Windows version of the '''Ethernet''' interfacefilezilla software, select '''Wired connection 1'''.</li></ol>the download link is as follows
[[File:pi3b:{| class="wikitable" style="width:800px;" |-| '''https://filezilla-img189project.org/download.pngphp?type=client'''|310x149px]]}
<ol startdiv class="4figure" style="list-style-type: decimal;"><li>Then select '''Edit''' with the '''Tab''' key and press the Enter key</li></ol>
::[[File:pi3b-img190img214.png|316x144px]]
<ol start="5" style="list-style-type: decimal;"/div><li>Then use the Tab key to move the cursor to the '''&lt;Automatic&gt;''' position shown in the div class="figure below to configure IPv4</li></ol">
::[[File:pi3b-img191img215.png|575x240px]]
</div><ol start="62" style="list-style-type: decimal;"><li>Then press EnterThe downloaded installation package is as follows, select '''Manual''' with the up and down arrow keys, and press Enter then double-click to confirminstall directly</li></ol>
[[File{| class="wikitable" style="width:pi3b800px;" |-| '''FileZilla_Server_1.5.1_win64-img192setup.pngexe'''|576x237px]]}
<ol start="7" style="list-style-type: decimalDuring the installation process, please select '''Decline''' on the following installation interface, and then select '''Next&gt;"><li>The display after selection is shown in the figure below</li></ol>'''
[[File:pi3b-img193.png|575x240px]]<div class="figure">
<ol start="8" style="list[[File:pi3b-style-type: decimal;"><li>Then move the cursor to the '''&lt;Show&gt;'''</li></ol>img216.png]]
[[File</div></ol><ol start="3" style="list-style-type:pi3b-img194.png|576x241px]]decimal;"><li>The interface after filezilla is opened is as follows, and the display under the remote site on the right is empty</li>
<ol startdiv class="9figure" style="list-style-type: decimal;"><li>Then press Enter, the following setting interface will pop up after entering</li></ol>
[[File:pi3b-img195img217.png|575x450px]]
</div></ol><ol start="104" style="list-style-type: decimal;"><li>Then you can set The method of connecting the IP address (Addresses), gateway (Gateway) and DNS server address in the position development board is 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''':</li></ol>
[[File:pi3b-img196.png|576x233px]]<div class="figure">
<ol start="11" style="list[[File:pi3b-style-type: decimal;"><li>After setting, move the cursor to'''&lt;OK&gt;''' in the lower right corner, and press Enter to confirm</li></ol>img209.png]]
[[File</div></ol><ol start="5" style="list-style-type:pi3b-img197.png|576x116px]]decimal;"><li>Then choose to '''save the password''', and then click '''OK'''</li>
<ol startdiv class="12figure" style="list-style-type: decimal;"><li>Then click'''&lt;Back&gt;''' to return to the previous selection interface</li></ol>
[[File:pi3b-img198img218.png|330x325px]]
</div></ol><ol start="136" style="list-style-type: decimal;"><li>Then select choose to always '''Activate a connectiontrust this host''', and then move the cursor toclick '''&lt;OK&gt;''', and finally click Enter</li></ol>
[[File:pi3b-img199.png|331x248px]]<div class="figure">
<ol start="14" style="list[[File:pi3b-style-type: decimal;"><li>Then select the network interface that needs to be set, such as '''Wired connection 1''', then move the cursor to'''&lt;Deactivate&gt;''', and press Enter to disable '''Wired connection 1'''</li></ol>img219.png]]
[[File</div></ol><ol start="7" style="list-style-type:pi3b-img200.png|576x224px]]decimal;"><li>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</li>
<ol startdiv class="15figure" style="list-style-type: decimal;"><li>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</li></ol>
[[File:pi3b-img201img220.png|576x224px]]
</div></ol><ol start="168" style="list-style-type: decimal;"><li>Then you can exit nmtui through select the path to be uploaded to the development board on the'''&lt;Back&gt;''' 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 '''Quit''' buttonsthen click the upload option to start uploading the file to the development board.</li></ol>
[[File:pi3b-img202.png|300x253px]] [[File:pi3b-img203.png|227x252px]]<div class="figure">
<ol start="17" style="list[[File:pi3b-style-type: decimal;"><li>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</li></ol>img221.png]]
orangepi@orangepi</div></ol><ol start="9" style="list-style-type:~$ '''ip addr show eth0'''decimal;"><li><p>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</p></li><li><p>The method of uploading a folder is the same as that of uploading a file</p></li></ol>
3: eth0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast state UP group default qlen 1000<span id="hdmi-test"></span>
link/ether 5e:ac:14:a5:92:b3 brd ff:ff:ff:ff:ff:ff== HDMI test ==
inet '''192.168.1.177'''<span id="hdmi-display-test"></24 brd 192.168.1.255 scope global noprefixroute eth0span>=== HDMI display test ===
valid_lft forever preferred_lft forever# Use HDMI to HDMI cable to connect Orange Pi development board and HDMI monitor
inet6 241e:3b8:3240[[File:c3a0:e269:8305:dc08:135e/64 scope global dynamic noprefixroutepi3b-img10.png]]
valid_lft 259149sec preferred_lft 172749sec<ol start="2" style="list-style-type: decimal;"><li>After starting the Linux system, if the HDMI monitor has image output, it means that the HDMI interface is in normal use</li>
inet6 fe80{| class="wikitable" style="background-color:#ffffdc;width:957d:bbbe:4928:3604/64 scope link noprefixroute800px;" |-| <big>'''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.'''
valid_lft forever preferred_lft forever'''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.'''</big>|}{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''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.'''</big>|}</ol>
<ol startspan id="18" style="listhdmi-to-vga-styledisplay-type: decimal;test"><li>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'''</li></olspan>
orangepi@orangepi:~$ '''ping 192.168.1.47 -I eth0'''=== HDMI to VGA display test ===
PING 192.168.1.47 (192.168.1.47) from 192.168.1.188 eth0<ol style="list-style-type: 56(84) bytes of data.decimal;"><li><p>First, you need to prepare the following accessories</p><ol style="list-style-type: lower-alpha;"><li>HDMI to VGA converter</li>
64 bytes from 192.168.1[[File:pi3b-img222.47: icmp_seqpng]]</ol><ol start=1 ttl"2" style=64 time=0.233 ms"list-style-type: lower-alpha;"><li>A VGA cable</li>
64 bytes from 192[[File:pi3b-img223.168.1.47png]]</ol><ol start="3" style="list-style-type: icmp_seqlower-alpha;"><li>A monitor or TV that supports VGA interface</li></ol></li></ol><ol start="2 ttl" style=64 time=0.263 ms"list-style-type: decimal;"><li>HDMI to VGA display test as shown below</li>
64 bytes from 192.168.1.47[[File: icmp_seq=3 ttl=64 time=0pi3b-img224.273 mspng]]
64 bytes from 192{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''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.168So 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.1.47: icmp_seq=4 ttl=64 time'''</big>|}</ol><span id=0.269 ms"hdmi-resolution-setting-method"></span>
64 bytes from 192.168.1.47: icmp_seq=5 ttl=64 time=0.275 msHDMI resolution setting method ===
^C# First open '''Display''' in '''Settings'''
::[[File:pi3b--- 192.168img225.1.47 ping statistics ---png]]
5 packets transmitted, 5 received, 0% packet loss, time 4042ms<ol start="2" style="list-style-type: decimal;"><li>Then you can see the current resolution of the system</li>
rtt min[[File:pi3b-img226.png]]</avg/max/mdev ol><ol start="3" style= 0.233/0.262"list-style-type: decimal;"><li>Click the drop-down box of Resolution to see all resolutions currently supported by the monitor</0.275/0.015 msli>
[[File:pi3b-img227.png]]<span id/ol><ol start="4" style="uselist-the-nmcli-command-to-setstyle-a-static-ip-addresstype: decimal;"></spanli>==== Use Then select the nmcli command resolution you want to set a static IP address ====, and click Apply</li>
<ol style="list[[File:pi3b-style-type: decimal;"><li><p>If you want to set the static IP address of the network port, please insert the network cable into the development board firstimg228. '''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'''</p></li>png]]<li><p>Then use the '''nmcli con show''' command to view the name of the network device, as shown below</pol><ol start="5" style="list-style-type: lower-alphadecimal;"><li><p>'''orangepiAfter the new resolution is set, select ''' is the name of Keep the WIFI network interface (the names are not necessarily the same)</p></li><li><p>configuration'''Wired connection 1''' is the name of the Ethernet interface</p></li></ol></li></ol>
orangepi@orangepi[[File:~$ '''nmcli con show'''pi3b-img229.png]]</ol><span id="how-to-use-bluetooth"></span>
NAME UUID TYPE DEVICE== How to use Bluetooth ==
'''orangepi''' cfc4f922<span id="test-ae48method-46f1of-84e1desktop-2f19e9ec5e2a wifi wlan0image-1"></span>=== Test method of desktop image ===
'''Wired connection 1''' 9db058b7-7701-37b8-9411-efc2ae8bfa30 ethernet eth0# Click the Bluetooth icon in the upper right corner of the desktop.
<ol start="3" style="list::[[File:pi3b-style-type: decimal;"><li>Then enter the following command, where</li></ol>img230.png]]
<blockquoteol start="2" style="list-style-type: decimal;">a. '''&quot;Wired connection 1&quot;''' means to set <li>Then select 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)adapter</li>
b[[File:pi3b-img231. After png]]</ol><ol start="3" style="list-style-type: decimal;"><li>If there is a prompt on the following interface, please select '''ipv4.addresseYes''' is the static IP address to be set, which can be modified to the value you want to set</li>
c[[File:pi3b-img232. png]]</ol><ol start="4" style="list-style-type: decimal;"><li>Then set '''ipv4.gatewayVisibility Setting''' indicates the address of the gateway</blockquote>orangepi@orangepi:~$ as '''nmcli con mod &quot;Wired connection 1&quot; \Always visible'''in the Bluetooth adapter settings interface, and then close it</li>
'''ipv4[[File:pi3b-img233.addresses &quotpng]]</ol><ol start="5" style="list-style-type: decimal;192.168.1.110&quot; \'''"><li>Then open the configuration interface of the Bluetooth device</li>
[[File:pi3b-img234.png]]</ol><ol start="6" style="list-style-type: decimal;"><li>Click '''ipv4.gateway &quot;192.168.1.1&quot; \Search'''to start scanning the surrounding Bluetooth device</li>
[[File:pi3b-img235.png]]</ol><ol start="7" style="list-style-type: decimal;"><li>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 '''ipv4.dns &quot;8.8.8.8&quot; \Pair'''to start pairing, and the demonstration here is to pair with an Android phone</li>
[[File:pi3b-img236.png]]</ol><ol start="8" style="list-style-type: decimal;"><li>When pairing, the pairing confirmation box will pop up in the upper right corner of the desktop. Select '''ipv4.method &quot;manual&quot;Confirm'''to confirm. At this time, the mobile phone also needs to be confirmed</li>
[[File:pi3b-img237.png]]</ol><ol start="49" style="list-style-type: decimal;"><li>Then restart 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 Linux systemphone</li></ol>
orangepi@orangepi[[File:~$ '''sudo reboot'''pi3b-img238.png]]</ol><ol start="10" style="list-style-type: decimal;"><li>The interface of the sending picture is shown below</li>
[[File:pi3b-img239.png]]</ol start><span id="5" style="listusb-styleinterface-type: decimal;test"><li>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</li></olspan>
orangepi@orangepi:~$ '''ip addr show eth0'''== USB interface test ==
3{| class="wikitable" style="background-color: eth0#ffffdc;width: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt800px; mtu 1500 qdisc pfifo_fast state UP group default qlen 1000" |-| <big>'''The USB interface can be connected to a USB hub to expand the number of USB interfaces.'''</big>|}
link<span id="connect-the-usb-mouse-or-keyboard-test"></ether 5e:ae:14:a5:91:b3 brd ff:ff:ff:ff:ff:ffspan>=== Connect the USB mouse or keyboard test ===
inet '''192.168.1.110'''/32 brd 192.168.1.110 scope global noprefixroute eth0# 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)
valid_lft forever preferred_lft forever<span id="connect-the-usb-storage-device-test"></span>
inet6 240e:3b7:3240:c3a0:97de:1d01:b290:fe3a/64 scope global dynamic noprefixroute=== Connect the USB storage device test ===
valid_lft 259183sec preferred_lft 172783sec# 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
inet6 fe80::3312{| class="wikitable" style="width:861a800px;"|-|orangepi@orangepi:a589~$ '''cat /proc/partitions | grep &quot;sd*&quot;'''<br><span style="margin-right: 30px;">major </span><span style="margin-right: 40px;">minor </span><span style="margin-right: 30px;">#blocks</span><span style="margin-right: 50px;">name</span><br><span style="margin-right: 70px;">8</span><span style="margin-right: 60px;">0</span><span style="margin-right: 50px;">30044160 </span><span style="margin-right: 50px;color:#FF0000">'''sda'''</span><br><span style="margin-right: 70px;">8</span><span style="margin-right: 60px;">1</span><span style="margin-right: 50px;">30043119 </span><span style="margin-right: 50px;color:d3c#FF0000">'''sda1'''</64 scope link noprefixroutespan><br>|}
valid_lft forever preferred_lft forever<ol start="3" style="list-style-type: decimal;"><li>Use the mount command to mount the U disk into '''/mnt''', and then you can view the file in the U disk</li>
<span id{| class="ssh-remote-login-development-boardwikitable"></span>style== SSH remote login development board"width:800px; ==" |-| orangepi@orangepi:~$ '''sudo mount /dev/sda1 /mnt/'''
orangepi@orangepi:~$ '''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.ls /mnt/'''
test.txt|}</ol><span idol start="ssh-remote-login4" style="list-developmentstyle-board-under-ubuntutype: decimal;"><li>After the mounting, you can view the capacity usage and mount point of the U disk through the '''df -h''' command</spanli>{| class="wikitable" style== SSH remote login development board under Ubuntu ==="width:800px;" |-|orangepi@orangepi:~$ '''df -h | grep &quot;sd&quot;'''
# Obtain the IP address of the development board/dev/sda1 &nbsp;&nbsp;&nbsp; 29G &nbsp;&nbsp; 208K &nbsp;&nbsp; 29G &nbsp;&nbsp; 1% /mnt# Then you can remotely log in to the Linux system through the ssh command|}</ol><span id="usb-wireless-network-card-test"></span>
=== USB wireless network card test@test:~$ '''ssh [mailto:root@192.168.1.36 root@192.168.1.]xxx''' (Need to be replaced with the IP address of the development board)===
root@192.168The currently '''tested''' USB wireless network cards are shown below.1Please test it by yourself for other models of USB wireless network cards.xx's password: (Enter the password hereIf you cannot use it, you need to transplant the default password is orangepi)corresponding USB wireless network card driver
'''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{| class="wikitable" style="width:800px;text-align: center;"|-| No.'''| Model||-| 1| RTL8723BU
'''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 reasonsSupport 2.'''4G WIFI+BT4.0
<ol start="3" style="list| [[File:pi3b-styleimg240.png]]|-type: decimal;"><li>After successfully logging in to the system, the display is as shown in the figure below</li></ol>| 2| RTL8811
<div class="figure">Support 2.4G +5G WIFI
| [[File:pi3b-img204img241.png]]|405x207px-|L467QDF65C(YR79U]TH[TND]]3| RTL8821CU
</div>'''If ssh cannot log in to the Linux system normally, please first check whether the IP address of the development board can be pingedSupport 2. 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:'''4G +5G WIFI
root@orangepi:~# '''reset_sshSupport BT 4.sh'''2
'''If it still doesn't work, try to reset the system.'''| <div class="figure">
<span id="ssh[[File:pi3b-remote-login-development-board-under-windows"></span>=== SSH remote login development board under Windows ===img242.png]]
# First obtain the IP address of the development board</div>|}
2) Under Windows, you can use MobaXterm to remotely log in to the development board, first create a new ssh session<span id="rtl8723bu-test"></span>==== RTL8723BU test ====
a. Open '''Session'''# 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
b. Then select ::{| class="wikitable" style="width:800px;" |-|<p>orangepi@orangepi:~$ '''SSH''' in '''Session Settinglsmod'''</p><span style="margin-right: 100px;">Module </span><span style="margin-right: 50px;">Size </span><span style="margin-right: 45px;">Used by</span><br><span style="margin-right: 100px;">rfcomm </span><span style="margin-right: 50px;">57344</span><span style="margin-right: 50px;">16</span><br><span style="margin-right: 95px;">rtl8xxxu </span><span style="margin-right: 50px;">106496</span><span style="margin-right: 30px;">0</span><br><span style="margin-right: 90px;">rtk_btusb </span><span style="margin-right: 50px;">61440</span><span style="margin-right: 30px;">0</span><br>|}
c. Then enter <ol start="3" style="list-style-type: decimal;"><li>Through the IP address dmesg command, you can see the loading information of the development board in the '''Remote host'''RTL8723BU module</li>
d. Then enter the user name '''root''' or '''{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ ''' of the Linux system in '''Specify usernamedmesg'''
e. Finally click '''OK'''.....
<div class="figure">[ 83.438901] usb 2-1: new high-speed USB device number 2 using ehci-platform
[[File83.588375] usb 2-1:pi3b-img205New USB device found, idVendor=0bda, idProduct=b720, bcdDevice= 2.png|553x280px|14]]00
</div><ol start[ 83.588403] usb 2-1: New USB device strings: Mfr=1, Product="2" style, SerialNumber="list-style-type: decimal;"><li></li><li>Then you will be prompted to enter a password. The default passwords for root and orangepi users are orangepi</li></ol>3
'''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[ 83.'''588422] usb 2-1: Product: 802.11n WLAN Adapter
<div class="figure">[ 83.588443] usb 2-1: Manufacturer: Realtek
[[File83.588460] usb 2-1:pi3b-img206.png|578x150px|CSerialNumber:\Users\orangepi\Desktop\用户手册插图\pi 3b\just press Enter after inputting..jpgjust press Enter after inputting.]]00e04c000001
</div><ol start[ 83.601974] Bluetooth: hci0: RTL: examining hci_ver=06 hci_rev="4" style000b lmp_ver="list-style-type: decimal;"><li>After successfully logging in to the system, the display is as shown in the figure below</li></ol>06 lmp_subver=8723
[[File:pi3b-img20783.png|576x334px]603894]Bluetooth: hci0: RTL: rom_version status=0 version=1
<span id="the-method-of-uploading-files-to-the-linux-system-of-the-development-board"><[ 83.603920] Bluetooth: hci0: RTL: loading rtl_bt/span>== The method of uploading files to the Linux system of the development board ==rtl8723b_fw.bin
<span id="how-to-upload-files-to-the-development-board-linux-system-in-ubuntu-pc"><[ 83.610108] Bluetooth: hci0: RTL: loading rtl_bt/span>=== How to upload files to the development board Linux system in Ubuntu PC ===rtl8723b_config.bin
<span id="how-to-upload-files-using-the-scp-command"></span>==== How to upload files using the scp command ====[ 83.611274] Bluetooth: hci0: RTL: cfg_sz 68, total sz 22564
# Use the scp command to upload files from the Ubuntu PC to the Linux system of the development board[ 83. The specific commands are as follows658494] rtk_btusb: Realtek Bluetooth USB driver ver 3.1.6d45ddf.20220519-142432
<blockquote>a[ 83. '''file_path'''658651] usbcore: need to be replaced with the path of the file to be uploadedregistered new interface driver rtk_btusb
b[ 83. '''orangepi'''667124] usb 2-1: It This Realtek USB WiFi dongle (0x0bda:0xb720) is the user name of the Linux system of the development board, and it can also be replaced with other ones, such as rootuntested!
c[ 83. '''192667137] usb 2-1: Please report results to Jes.168Sorensen@gmail.xx.xx''': It is the IP address of the development board, please modify it according to the actual situationcom
d[ 83. '''/home/orangepi'''890140] usb 2-1: The path in the Linux system of the development board, which can also be modified to other paths</blockquote>test@testVendor:~$ '''scp file_path orangepi@192.168.xx.xx:/home/orangepi/'''Realtek
<ol start="[ 83.890153] usb 2" style="list-style-type1: Product: decimal;"><li>If you want to upload a folder, you need to add the -r parameter</li></ol>802.11n WLAN Adapter
test@test[ 83.890159] usb 2-1: rtl8723bu_parse_efuse:~$ '''scp -r dir_path orangepi@192.168.xx.xxdumping efuse (0x200 bytes):/home/orangepi/'''
<ol start="3" style="list-style-type: decimal;"><li>There are more usages of scp, please use the following command to view the man manual</li></ol>......
test@test[ 83.890412] usb 2-1:~$ '''man scp'''RTL8723BU rev E (SMIC) 1T1R, TX queues 3, WiFi=1, BT=1, GPS=0, HI PA=0
<span id="how[ 83.890417] usb 2-to-upload-files-using-filezilla"></span>==== How to upload files using filezilla ====1: RTL8723BU MAC: 00:13:ef:f4:58:ae
# First install filezilla in Ubuntu PC[ 83.890421] usb 2-1: rtl8xxxu: Loading firmware rtlwifi/rtl8723bu_nic.bin
test@test[ 83.895289] usb 2-1:~$ '''sudo apt install -y filezilla'''Firmware revision 35.0 (signature 0x5301)
<ol start="2" style="list-style-type[ 84.050893] Bluetooth: decimal;"><li>Then use the following command to open filezilla</li></ol>hci0: RTL: fw version 0x0e2f9f73
test@test[ 84.266905] Bluetooth:~$ '''filezilla'''RFCOMM TTY layer initialized
<ol start="3" style="list-style-type[ 84.266949] Bluetooth: decimal;"><li>The interface after filezilla is opened is as follows, and the display under the remote site on the right is empty</li></ol>RFCOMM socket layer initialized
<div class="figure">[ 84.266999] Bluetooth: RFCOMM ver 1.11
[[File:pi3b-img20884.png|576x453px|截图 2022-12-03 19-04-40]884270]usbcore: registered new interface driver rtl8xxxu
[ 84.912046] rtl8xxxu 2-1:1.2 wlx0013eff458ae: renamed from wlan0|}</divol>
<ol start="4" style="list-style-type: decimal;">
<li>The method of connecting Then you can see the development board is shown in RTL8723BU WIFI device node through the figure below'''sudo ifconfig''' command. Please refer to [[Orange Pi 3B#WIFI connection test|'''the WIFI connection test chapter''']] for WIFI connection and testing methods</li></ol>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo ifconfig wlx0013eff458ae'''
<div classwlx0013eff458ae: flags="figure">4099&lt;UP,BROADCAST,MULTICAST&gt; mtu 1500
[[File:pi3b-img209.png|575x128px|图片565]]:ether 00:13:ef:f4:58:ae txqueuelen 1000 (Ethernet)
</div><ol start="5" style="list-style-type: decimal;"><li>Then choose to '''save the password''', and then click '''OK'''</li></ol>:RX packets 0 bytes 0 (0.0 B)
[[File:pi3b-img210.png|249x181px]]:RX errors 0 dropped 0 overruns 0 frame 0
<ol start="6" style="list-style-type: decimal;"><li>Then choose to always '''trust this host''', and then click '''OK'''</li></ol>:TX packets 0 bytes 0 (0.0 B)
::TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0|}<div /ol><ol start="5" style="list-style-type: decimal;"><li>Then you can see the USB Bluetooth device through the '''hciconfig''' command</li>{| class="figurewikitable" style="width:800px;">|-| orangepi@orangepi:~$ '''sudo apt update &amp;&amp; sudo apt install bluez'''
[[Fileorangepi@orangepi:pi3b-img211.png|278x150px|IMG_256]]~$ '''hciconfig'''
hci0: Type: Primary Bus: '''</div><ol start="7" span style="list-style-typecolor: decimal;#FF0000"><li>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</li>USB</olspan>'''
<div class="figure">::BD Address: 00:13:EF:F4:58:AE ACL MTU: 820:8 SCO MTU: 255:16
[[File:pi3b-img212.png|533x330px|IMG_256]]:DOWN
</div><ol start="8" style="list-style-type: decimal;"><li>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 bingo.</li></ol>:RX bytes:1252 acl:0 sco:0 events:125 errors:0
::TX bytes:23307 acl:0 sco:0 commands:125 errors:0|}<div class/ol><ol start="6" style="figurelist-style-type: decimal;"><li>You can also see the Bluetooth icon on the desktop. At this time, Bluetooth has not been opened, so a red '''<span style="color:#FF0000">x</span>''' will be displayed</li>
[[File:pi3b-img213img243.png|485x380px|IMG_256]]</ol><ol start="7" style="list-style-type: decimal;"><li>Click '''Turn Bluetooth On''' to turn on Bluetooth</li>
[[File:pi3b-img244.png]]</divol>9) After the upload <ol start="8" style="list-style-type: decimal;"><li>The display after turning on Bluetooth is complete, you can go to the corresponding path in the Linux system of the development board to view the uploaded fileas follows</li>
10) The [[File:pi3b-img245.png]]</ol><ol start="9" style="list-style-type: decimal;"><li>Please refer to the [[Orange Pi 3B#How to use Bluetooth|'''Bluetooth use method''']] for Bluetooth test method of uploading a folder is the same as that of uploading a file, so I won’t won't go into details here.</li></ol>
<span id="thertl8811-method-of-uploading-files-from-windows-pc-to-the-linux-system-of-the-development-boardtest"></span>=== The method of uploading files from Windows PC to the Linux system of the development board ===
<span id="how-to-upload-files-using-filezilla-1"></span>==== How to upload files using filezilla RTL8811 test ====
# First download insert the installation file RTL8811 wireless network card module into the USB interface of the Windows version of development board.# Then the Linux system will automatically load the filezilla softwarekernel modules related to RTL8811 WIFI, and you can see that the following kernel modules have been automatically loaded through the download link is as followslsmod command
https::{| class="wikitable" style="width:800px;" |-|<p>orangepi@orangepi:~$ '''lsmod'''</p><span style="margin-right: 100px;">Module </span><span style="margin-right: 50px;">Size </span><span style="margin-right: 45px;">Used by</filezillaspan><br><span style="margin-project.orgright: 100px;">8821cu </download.php?typespan><span style=client"margin-right: 50px;">1839104 </span><span style="margin-right: 50px;">0</span><br>|}
<div ol start="3" style="list-style-type: decimal;"><li>Through the dmesg command, you can see the loading information of the RTL8811 module</li>{| class="figurewikitable" style="width:800px;">|-| orangepi@orangepi:~$ '''dmesg'''
[[File:pi3b118.618194] usb 2-img214.png|472x171px|C1:\Users\orangepi\Desktop\用户手册插图\Pi5 Plus\未标题new high-15.jpg未标题speed USB device number 2 using ehci-15]]platform
</div><div class[ 118.767152] usb 2-1: New USB device found, idVendor="figure">0bda, idProduct=c811, bcdDevice= 2.00
[[File:pi3b-img215118.png|393x283px|图片5552]767181]usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
</div><ol start="[ 118.767199] usb 2" style="list-style-type1: Product: decimal;"><li>The downloaded installation package is as follows, and then double-click to install directly</li></ol>802.11ac NIC
'''FileZilla_Server_1[ 118.5.1_win64767219] usb 2-setup.exe'''1: Manufacturer: Realtek
During the installation process, please select '''Decline''' on the following installation interface, and then select '''Next&gt;'''[ 118.767235] usb 2-1: SerialNumber: 123456
<div class="figure">[ 119.500530] usbcore: registered new interface driver rtl8821cu
[[File119.525498] rtl8821cu 2-1:1.0 wlx1cbfced9d260:pi3brenamed from wlan0|}</ol><ol start="4" style="list-img216style-type: decimal;"><li>Then you can see the WiFi device node through the '''sudo ifconfig''' command.pngPlease refer to the [[Orange Pi 3B#WIFI connection test|319x251px|IMG_256'''WiFi connection test chapter''']]for WIFI connection and testing methods. I won't go into details her</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo ifconfig wlx1cbfced9d260'''
</div><ol startwlx1cbfced9d260: flags="3" style="list-style-type: decimal4099&lt;UP,BROADCAST,MULTICAST&gt;">mtu 1500 <li>The interface after filezilla is opened is as follows, and the display under the remote site on the right is empty</li></ol>::ether 1c:bf:ce:d9:d2:60 txqueuelen 1000 (Ethernet)
<div class="figure">::RX packets 0 bytes 0 (0.0 B)
[[File:pi3b-img217.png|451x357px|IMG_256]]:RX errors 0 dropped 0 overruns 0 frame 0
</div><ol start="4" style="list-style-type: decimal;"><li>The method of connecting the development board is shown in the figure below:</li></ol>TX packets 0 bytes 0 (0.0 B)
::TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0|}<div class/ol><span id="figurertl8821cu-test"></span>
[[File:pi3b-img209.png|575x128px|图片565]]==== RTL8821CU test ====
</div># First insert the rtl8821cu wireless network card module into the USB interface of the development board<ol start="5" style="list-style-type: decimal;"><li># Then choose to use the '''save the passwordlsusb'''command to see the device information of the rtl8821cu usb wifi module, and then click '''OK'''</li></ol>please make sure that the USB module is not in Driver CDROM Mode
<div ::{| class="figurewikitable">style="width:800px;" |-| orangepi@orangepi:~$ '''lsusb | grep &quot;Realtek&quot;'''
[[FileBus 002 Device 003:pi3bID 0bda:c820 Realtek Semiconductor Corp. 802.11ac NIC|}::{| class="wikitable" style="background-img218.pngcolor:#ffffdc;width:800px;" |-|207x146pxorangepi@orangepi:~$ '''lsusb |IMG_256]]grep &quot;Realtek&quot;'''
Bus 002 Device 002: ID 0bda:1a2b Realtek Semiconductor Corp. RTL8188GU 802.11n WLAN Adapter ('''</div><ol start="6" span style="list-style-typecolor: decimal;blue">Driver CDROM Mode<li/span>Then choose to always '''trust this host''', and then click '''OK'''</li></ol>)
<div class="figure">
[[File<big>'''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:pi3b-img219.png|221x109px|IMG_256]]'''</big>
</div>
<ol start="7" style="list-style-type: decimal;">
<li>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</li></ol>
<div class="figure">orangepi@orangepi:~$ '''sudo usb_modeswitch -KW -v 0bda -p 1a2b'''|}
[[File<ol start="3" style="list-style-type: decimal;"><li>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</li>{| class="wikitable" style="width:800px;" |-|<p>orangepi@orangepi:~$ '''lsmod'''</p><span style="margin-right: 100px;">Module </span><span style="margin-right: 50px;">Size </span><span style="margin-right: 45px;">Used by</span><br><span style="margin-right: 100px;">8821cu </span><span style="margin-right:pi3b50px;">1839104 </span><span style="margin-img220.pngright: 50px;">0</span><br><span style="margin-right: 90px;">rtk_btusb </span><span style="margin-right: 50px;">61440</span><span style="margin-right: 30px;">0</span><br>|446x329px}</ol><ol start="4" style="list-style-type: decimal;"><li>Through the dmesg command, you can see the loading information of the rtl8821cu module</li>{| class="wikitable" style="width:800px;" |-|图片3]]orangepi@orangepi:~$ '''dmesg'''
</div><ol start="8" style="list-style-type: decimal;"><li>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 Windows 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 bingo</li></ol>......
<div class="figure">[ 57.083693] usb 2-1: new high-speed USB device number 2 using ehci-platform
[[File57.231888] usb 2-1:pi3b-img221New USB device found, idVendor=0bda, idProduct=1a2b, bcdDevice= 2.png|501x369px|IMG_256]]00
</div><ol start[ 57.231916] usb 2-1: New USB device strings: Mfr="9" style1, Product="list-style-type: decimal;"><li><p>After the upload is complete2, you can go to the corresponding path in the Linux system of the development board to view the uploaded file</p></li><li><p>The method of uploading a folder is the same as that of uploading a file</p></li></ol>SerialNumber=0
<span id="hdmi[ 57.231937] usb 2-test"></span>== HDMI test ==1: Product: DISK
<span id="hdmi[ 57.231956] usb 2-display-test"></span>=== HDMI display test ===1: Manufacturer: Realtek
# Use HDMI to HDMI cable to connect Orange Pi development board and HDMI monitor[ 57.242594] usb-storage 2-1:1.0: USB Mass Storage device detected
[[File57.245674] scsi host0:pi3busb-storage 2-img101:1.png|199x129px]]0
<ol start="[ 58.069172] usb 2" style="list-style-type1: decimal;"><li>After starting the Linux systemUSB disconnect, if the HDMI monitor has image output, it means that the HDMI interface is in normal use</li></ol>device number 2
'''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[ 58.'''440025] usb 2-1: new high-speed USB device number 3 using ehci-platform
'''When you want to connect the HDMI of the development board to the HDMI port of the laptop[ 58.587819] usb 2-1: New USB device found, idVendor=0bda, idProduct=c820, please make sure that your laptop supports the HDMI in functionbcdDevice= 2.'''00
'''When the HDMI is not displayed[ 58.587827] usb 2-1: New USB device strings: Mfr=1, please check whether the HDMI cable is plugged in tightly. After confirming that there is no problem with the connectionProduct=2, you can change a different screen and try to see if it is displayed.'''SerialNumber=3
<span id="hdmi[ 58.587833] usb 2-to-vga-display-test"></span>=== HDMI to VGA display test ===1: Product: 802.11ac NIC
<ol style="list[ 58.587838] usb 2-style-type1: decimal;"><li><p>First, you need to prepare the following accessories</p><ol style="list-style-typeManufacturer: lower-alpha;"><li>HDMI to VGA converter</li></ol></li></ol>Realtek
[[File:pi3b-img22258.png|155x104px]587844]usb 2-1: SerialNumber: 123456
<ol start="2" style="list-style-type[ 58.610463] rtk_btusb: lowerRealtek Bluetooth USB driver ver 3.1.6d45ddf.20220519-alpha;"><li>A VGA cable</li></ol>142432
[[File:pi3b-img22358.png|148x133px]610656]usbcore: registered new interface driver rtk_btusb
<ol start[ 58.634631] Bluetooth: hci0: RTL: examining hci_ver=08 hci_rev="3" style000c lmp_ver="list-style-type: lower-alpha;"><li>A monitor or TV that supports VGA interface</li></ol>08 lmp_subver=8821
<!-- --><ol start[ 58.636729] Bluetooth: hci0: RTL: rom_version status="2" style0 version="list-style-type: decimal;"><li>HDMI to VGA display test as shown below</li></ol>1
[[File58.636740] Bluetooth: hci0: RTL:pi3b-img224loading rtl_bt/rtl8821c_fw.png|576x339px]]bin
'''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[ 58. 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 monitor664190] Bluetooth: hci0: RTL: loading rtl_bt/rtl8821c_config.'''bin
<span id="hdmi-resolution-setting-method"></span>=== HDMI resolution setting method ===[ 58.664746] Bluetooth: hci0: RTL: cfg_sz 10, total sz 31990
# First open '''Display''' in '''Settings'''[ 59.122471] Bluetooth: hci0: RTL: fw version 0x829a7644
[[File:pi3b-img22559.png|576x370px]265513]usbcore: registered new interface driver rtl8821cu
<ol start="[ 59.280119] rtl8821cu 2" style="list-style-type1:1.2 wlx90de80521825: decimal;">renamed from wlan0|}<li>Then you can see the current resolution of the system</li></ol>
<ol start="5" style="list-style-type: decimal;"><li>Then you can see the RTL8821CU WiFi device node through the '''sudo ifconfig''' command. Please refer to the [[FileOrange Pi 3B#WIFI connection test|'''WiFi connection test chapter''']] for WIFI connection and testing methods.</li>{| class="wikitable" style="width:pi3b800px;" |-img226.png|382x254px]]orangepi@orangepi:~$ '''sudo ifconfig wlx90de80521825'''
<ol startwlx90de80521825: flags="3" style="list-style-type: decimal4099&lt;UP,BROADCAST,MULTICAST&gt;"><li>Click the drop-down box of Resolution to see all resolutions currently supported by the monitor</li></ol>mtu 1500
[[File:pi3b-img227.png|415x274px]]:ether 00:13:ef:f4:58:ae txqueuelen 1000 (Ethernet)
<ol start="4" style="list-style-type: decimal;"><li>Then select the resolution you want to set, and click Apply</li></ol>:RX packets 0 bytes 0 (0.0 B)
[[File:pi3b-img228.png|415x277px]]:RX errors 0 dropped 0 overruns 0 frame 0
<ol start="5" style="list-style-type: decimal;"><li>After the new resolution is set, select '''Keep the configuration'''</li></ol>:TX packets 0 bytes 0 (0.0 B)
[[File:pi3b:TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0|}</ol><ol start="6" style="list-style-type: decimal;"><li>Then you can see the USB Bluetooth device through the '''hciconfig''' command</li>{| class="wikitable" style="width:800px;" |-img229.png|447x243px]]orangepi@orangepi:~$ '''sudo apt-get update &amp;&amp; sudo apt-get install -y bluez'''
<span id="how-to-use-bluetooth"></span>== How to use Bluetooth ==orangepi@orangepi:~$ '''hciconfig'''
hci0: Type: Primary Bus: '''<span idstyle="test-method-of-desktop-image-1color:#FF0000">USB</span>=== Test method of desktop image ==='''
# Click the Bluetooth icon in the upper right corner of the desktop.::BD Address: 00:13:EF:F4:58:AE ACL MTU: 820:8 SCO MTU: 255:16
[[File:pi3b-img230.png|330x128px]]:DOWN
<ol start="2" style="list-style-type: decimal;"><li>Then select the adapter</li></ol>:RX bytes:1252 acl:0 sco:0 events:125 errors:0
[[File:pi3b:TX bytes:23307 acl:0 sco:0 commands:125 errors:0|}</ol><ol start="7" style="list-img231style-type: decimal;"><li>Bluetooth icons can also be seen on the desktop.png|375x165px]]At this time, Bluetooth has not been turned on, so a red '''<span style="color:#FF0000">x</span>''' will be displayed</li>
[[File:pi3b-img243.png]]</ol><ol start="38" style="list-style-type: decimal;"><li>If there is a prompt below, select Click '''YesTurn Bluetooth On'''to turn on Bluetooth</li></ol>
[[File:pi3b-img232img244.png|248x85px]]</ol><ol start="9" style="list-style-type: decimal;"><li>The display after turning on Bluetooth is as follows</li>
[[File:pi3b-img245.png]]</ol><ol start="410" style="list-style-type: decimal;"><li>Then set Please refer to the [[Orange Pi 3B#How to use Bluetooth|'''Visibility Setting''' as '''Always visibleBluetooth use chapter''' in ]] for the Bluetooth adapter settings interface, and then close ittest method. I won't go into details here</li></ol>
[[File:pi3b<span id="usb-img233.png|243x229px]]camera-test"></span>
<ol start="5" style="list-style-type: decimal;"><li>Then open the configuration interface of the Bluetooth device</li></ol>= USB Camera Test ===
[[File:pi3b-img234.png|438x179px]]# 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
<ol start="6" style="list::[[File:pi3b-style-type: decimal;"><li>Click '''Search''' to start scanning the surrounding Bluetooth device</li></ol>img13.png]]
[[File<ol start="2" style="list-style-type: decimal;"><li>You can see that the USB camera's device node information is/dev/video0 through the v4l2-ctl command</li>{| class="wikitable" style="width:pi3b800px;" |-img235.png|322x217px]]orangepi@orangepi:~$ '''v4l2-ctl --list-devices'''
Q8 HD Webcam: Q8 HD Webcam ('''<ol start="7" span style="list-style-typecolor: decimal;#FF0000">usb<li/span>Then select the Bluetooth device you want to connect. If you right -click the mouse, you will pop up the operating interface of this Bluetooth device. Select '''Pair''' to start pairing-fc880000. Here, it is demonstrated with the Android phone</li></ol>usb-1):
[[File:pi3b-img236.png|338x263px]]'''<span style="color:blue">/dev/video0</span>'''
<ol start="8" style="list-style-type: decimal;"><li>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</li><dev/ol>video1
[[File:pi3b/dev/media0|}{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-img237| <big>'''Note that the l in v4l2 is a lowercase letter l, not the number 1.png|417x152px]]'''
<ol start="9" style="list-style-type: decimal;">
<li>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</li></ol>
[[File'''In addition, the serial number of the video is not necessarily video0, please refer to what you actually see.'''</big>|}</ol><ol start="3" style="list-style-type:pi3b-img238decimal;"><li>In the desktop system, Cheese can be used to directly open the USB camera.png|439x259px]]The method of opening Cheese is shown in the figure below:</li>
<ol start="10" style="list[[File:pi3b-style-type: decimal;"><li>The interface of the sending picture is shown below</li></ol>img246.png]]
[[FileThe interface after Cheese turns on the USB camera is shown in the figure below:pi3b-img239.png|437x253px]]
[[File:pi3b-img247.png]]</ol><span idol start="usb4" style="list-interfacestyle-type: decimal;"><li><p>How to testthe USB camera using fswebcam</p><ol style="list-style-type: lower-alpha;"><li>Install fswebcam</spanli>{| class="wikitable" style= USB interface test =="width:800px;" |-| orangepi@orangepi:~$ '''sudo''' '''apt update'''
orangepi@orangepi:~$ '''sudo apt-get install -y fswebcam'''|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li><p>After installing fswebcam, you can use the following command to take pictures</p><ol style="list-style-type: none;"><li><p>a) -d The option is used to specify the device node of the USB interface can connect USB Hub camera</p></li><li><p>b) --no-banner Used to remove the watermark of photos</p></li><li><p>c) -r The option is used to specify the resolution of the photo</p></li><li><p>d) -S The option is used to expand set the number of USB interfacesprevious frames to skip</p></li><li><p>e) ./image.jpg The name and path for setting the generated photos</p></li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo''' '''fswebcam -d /dev/video0 \'''
'''--no-banner -r 1280x720 -S 5 ./image.jpg'''|}</ol></li><span id/ol><ol start="3" style="connect-the-usb-mouselist-orstyle-keyboardtype: lower-testalpha;"><li>In the desktop version of the Linux system, you can directly view the captured pictures through the HDMI display</spanli>{| class="wikitable" style== Connect "width:800px;" |-| orangepi@orangepi:~$ '''scp image.jpg''' [mailto:test@192.168.1.55:/home/test test@192.168.1.55:/home/test] '''(Modify the IP address and path according to the USB mouse or keyboard test actual situation)'''|}</ol><ol start="4" style="list-style-type: lower-alpha;"><li>In the desktop version of the Linux system, you can directly view the captured pictures through the HDMI display</li></ol></li></ol><span id="audio-test"></span>
# Insert the keyboard of the USB interface into the USB interface of Orange PI development board# Connect Orange PI development board to HDMI display# If the mouse or keyboard can normal operating systems, the USB interface is used normally (the mouse can only be used in the system of the desktop version)== Audio Test ==
<span id="connecttest-theaudio-methods-usbin-storagethe-devicedesktop-testsystem"></span>=== Connect Test audio methods in the USB storage device test desktop system ===
# First insert open the U disk or USB mobile hard disk into the USB interface of Orange PI development board# Execute the following command. If you can see the output of sdX, the U disk recognition is successfulfile manager
orangepi@orangepi:~$ '''cat /proc/partitions | grep &quot;sd*&quot;''':[[File:pi3b-img248.png]]
major minor #blocks name<ol start="2" style="list-style-type: decimal;"><li>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)</li>
8 0 30044160 '''sda'''<div class="figure">
8 1 30043119 '''sda1'''[[File:pi3b-img249.png]]
</div></ol>
<ol start="3" style="list-style-type: decimal;">
<li>Use Then select the mount command to mount the U disk into '''/mnt'''audio.wav file, right click and then you can view the file in the U diskselect open with vlc to start playing</li></ol>
orangepi@orangepi[[File:~$ '''sudo mount pi3b-img250.png]]</devol><ol start="4" style="list-style-type: decimal;"><li><p>Methods to switch different audio equipment such as HDMI playback and headset playback</sda1 /mntp><ol style="list-style-type: lower-alpha;"><li>First open the volume control interface</'''li>
orangepi@orangepi[[File:~$ pi3b-img251.png]]</ol><ol start="2" style="list-style-type: lower-alpha;"><li>When playing audio, the audio equipment options that play software can be used will be displayed in '''ls /mnt/Playback'''. As shown in the figure below, which audio equipment you need to play here can be set.</li>
test[[File:pi3b-img252.txtpng]]</ol></li></ol><span id="how-to-play-audio-with-commands"></span>
<ol start="4" style="list-style-type: decimal;"><li>After the mounting, you can view the capacity of the U disk through the '''df -h''' command and the mounting point</li></ol>= How to play audio with commands ===
orangepi@orangepi:~$ '''df <span id="headphone-h | grep &quot;sd&quot;'''interface-play-audio-test"></span>==== Headphone interface play audio test ====
/dev/sda1 29G 208K 29G 1% /mnt# First insert the headset into the headphone jack of the development board
<span id="usb::[[File:pi3b-wireless-network-card-test"></span>=== USB wireless network card test ===img253.png]]
The currently <ol start="2" style="list-style-type: decimal;"><li>Then you can check the sound card device supported by the Linux system through the '''testedaplay -l''' USB wireless network cards are shown command. From the output below. Please test it by yourself for other models of USB wireless network cards. If you cannot use , itcan be seen that '''card 0''' is the sound card device with RK809, you need to transplant which is the corresponding USB wireless network sound card driverdevice of the headset</li>
{| class="wikitable" style="width:800px;"
|-
| No.| Model||orangepi@orangepi:~$ '''aplay -l'''| 1| RTL8723BU<p>**** List of PLAYBACK Hardware Devices ****</p>
Support 2.4G WIFI+BT4.'''card 0: rockchiprk809 [rockchip-rk809], device 0: dailink-multicodecs rk817-hifi-0 [dailink-multicodecs rk817-hifi-0]'''
| [[File:pi3b-img240.png]]|-| 2| RTL8811'''Subdevices: 0/1'''
Support 2.4G +5G WIFI:'''Subdevice #0: subdevice #0'''
| card 1: rockchiphdmi [[Filerockchip,hdmi], device 0:pi3bfe400000.i2s-i2s-hifi i2s-hifi-img2410 [fe400000.pngi2s-i2s-hifi i2s-hifi-0]]|-| 3| RTL8821CU
Support 2.4G +5G WIFI:Subdevices: 0/1
Support BT 4.2:Subdevice #0: subdevice #0
:Subdevice #0: subdevice #0| }<div class/ol><ol start="3" style="figurelist-style-type: decimal;"><li>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</li>
[[File{| class="wikitable" style="width:pi3b800px;" |-img242| orangepi@orangepi:~$ '''aplay -D hw:0,0 /usr/share/sounds/alsa/audio.png|tb_imag e_share_1670833201 123]]wav'''
</div>Playing WAVE 'audio.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
|}
</ol>
<span id="hdmi-audio-play-test"></span>
<span id="rtl8723bu-test"></span>==== RTL8723BU test HDMI Audio Play Test ====
# First insert use the RTL8723BU wireless network card module into the USB interface of HDMI to HDMI cable to connect the Orange PI development boardto the TV (other HDMI displays need to ensure that the audio can be played)# Then check the Linux system will automatically load sound card serial number of HDMI. From the RTL8723BU Bluetooth and WiFi -related kernel modules. You output below, you can see know that the kernel module below HDMI sound card is automatically loaded through the lsmod command'''card 1'''
::{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''lsmodaplay -l'''
Module Size Used by<p>**** List of PLAYBACK Hardware Devices ****</p>
rfcomm 57344 16card 0: rockchiprk809 [rockchip-rk809], device 0: dailink-multicodecs rk817-hifi-0 [dailink-multicodecs rk817-hifi-0]
rtl8xxxu 106496 :Subdevices: 0/1
rtk_btusb 61440 :Subdevice #0: subdevice #0
<ol start="3" style="list'''card 1: rockchiphdmi [rockchip,hdmi], device 0: fe400000.i2s-stylei2s-type: decimal;"><li>You can see the loading information of the RTL8723BU module through the dmesg command</li></ol>hifi i2s-hifi-0 [fe400000.i2s-i2s-hifi i2s-hifi-0]'''
orangepi@orangepi:~$ '''dmesgSubdevices: 0/1'''
......:'''Subdevice #0: subdevice #0'''
[ 83.438901] usb 2-1: new high-speed USB device number 2 using ehci-platform'''Subdevice #0: subdevice #0'''|}
[ 83<ol start="3" style="list-style-type: decimal;"><li>Then use the '''aplay''' command to play the audio file that comes with the system.588375] usb 2If the HDMI display or television can hear the sound indicates that the hardware can be used normally</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''aplay -1D hw: New USB device found, idVendor<span style=0bda"color:#FF0000">1</span>, idProduct0 /usr/share/sounds/alsa/audio.wav'''|}</ol><span id=b720, bcdDevice= 2.00"use-the-command-to-test-the-recording-method"></span>
[ 83.588403] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3Use the command to test the recording method ===
[ 83# Orange Pi 3B development board does not have MICs, and can only record audio through headphones with MIC function.588422] usb 2-1: Product: 802.11n WLAN AdapterAfter inserting the headset with the MIC function into the development board, the command below will record a piece of audio through the headset
[ 83.588443] usb 2::{| class="wikitable" style="width:800px;" |-1| orangepi@orangepi: Manufacturer: Realtek~$ '''amixer -c 0 cset name='Capture MIC Path' 'Main Mic''''
[ 83.588460] usb 2orangepi@orangepi:~$ '''arecord -1D hw: SerialNumber: 00e04c0000010,0 -d 5 -f cd -t wav /tmp/test.wav'''|}
[ 83.601974] Bluetooth: hci0: RTL: examining hci_ver<span id=06 hci_rev=000b lmp_ver=06 lmp_subver=8723"temperature-sensor"></span>
[ 83.603894] Bluetooth: hci0: RTL: rom_version status=0 version=1Temperature Sensor ==
[ 83.603920] Bluetooth# The command to view the system temperature sensor is: hci0: RTL: loading rtl_bt/rtl8723b_fw.bin
[ 83.610108] Bluetooth: hci0: RTL{| class="wikitable" style="width: loading rtl_bt/rtl8723b_config.bin800px;" |-| orangepi@orangepi:~$ '''sensors'''
[ 83.611274] Bluetooth: hci0: RTL: cfg_sz 68, total sz 22564soc_thermal-virtual-0
[ 83.658494] rtk_btusbAdapter: Realtek Bluetooth USB driver ver 3.1.6d45ddf.20220519-142432Virtual device
[ 83temp1: +41.658651] usbcore: registered new interface driver rtk_btusb9°C (crit = +115.0°C)
[ 83.667124] usb 2-1: This Realtek USB WiFi dongle (0x0bda:0xb720) is untested!
[ 83.667137] usb 2gpu_thermal-1: Please report results to Jes.Sorensen@gmail.comvirtual-0
[ 83.890140] usb 2-1Adapter: Vendor: RealtekVirtual device
[ 83.890153] usb 2-1: Producttemp1: 802+43.11n WLAN Adapter8°C|}
[ 83.890159] usb <ol start="2" style="list-1style-type: decimal;"><li><p>The command to view the current temperature of the nvme ssd solid state drive is: rtl8723bu_parse_efuse</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''sudo smartctl -a /dev/nvme0 | grep &quot;Temperature:&quot;'''</p><p>Temperature: dumping efuse (0x200 bytes)'''<span style="color:#FF0000">40 Celsius</span>'''</p>|}......</li></ol>
[ 83.890412] usb 2<span id="pin-interface-pin-1: RTL8723BU rev E (SMIC) 1T1R, TX queues 3, WiFi=1, BT=1, GPS=0, HI PA=0explanation"></span>
[ 83.890417] usb 2-1: RTL8723BU MAC: 00:13:ef:f4:58:ae== 40 Pin interface pin explanation ==
[ 83.890421] usb 2-1: rtl8xxxu: Loading firmware rtlwifi/rtl8723bu_nic.bin# Orange Pi 3B Development board 40 Pin interface pins, please refer to the figure below
[ 83.895289] usb 2-1: Firmware revision 35.0 (signature 0x5301)<div class="figure">
::[[ 84File:pi3b-img254.050893png]] Bluetooth: hci0: RTL: fw version 0x0e2f9f73
[ 84</div><ol start="2" style="list-style-type: decimal;"><li><p>The function of the Orange Pi 3B development board 40 PIN interface pins is shown in the table below.266905] Bluetooth</p><ol style="list-style-type: RFCOMM TTY layer initializedlower-alpha;"><li>Below is a complete pins of 40pin</li>
[ 84[File:pi3b-img255-1.266949png]] Bluetooth</ol><ol start="2" style="list-style-type: RFCOMM socket layer initializedlower-alpha;"><li>The following form is a picture on the left half of the full table above, which can be seen clearly</li>
[ 84[File:pi3b-img256-1.266999png] Bluetooth]</ol><ol start="3" style="list-style-type: RFCOMM ver 1.11lower-alpha;"><li>The following form is a picture on the right half of the top table above, which can be seen clearly</li>
[ 84[File:pi3b-img257-1.884270png] usbcore]</ol></li></ol><ol start="3" style="list-style-type: decimal;"><li>There are a total of '''<span style="color: registered new #FF0000">28</span>''' GPIO ports in the 40pin interface driver rtl8xxxu. The voltage of all GPIO ports is '''<span style="color:#FF0000">3.3v</span>'''</li></ol>
[ 84.912046] rtl8xxxu 2<span id="how-1:1.2 wlx0013eff458ae: renamed from wlan0to-install-wiringop"></span>
<ol start="4" style="list-style-type: decimal;"><li>Then you can see the RTL8723BU WIFI device node through the '''sudo ifconfig''' command. Please refer How to the WIFI connection test a [[\l|'''section for WIFI connection''']] and testing methods</li></ol>install wiringOP ==
orangepi@orangepi{| class="wikitable" style="background-color:~$ #ffffdc;width:800px;" |-| <big>'''Note that wiringOP has been pre -installed in the Linux image released by Orange Pi. Unless wiringOP'sudo ifconfig wlx0013eff458aes code is updated, it is not necessary to re -download and install. Just use it directly.'''
wlx0013eff458ae: flags=4099&lt;UP,BROADCAST,MULTICAST&gt; mtu 1500
ether 00'''The storage path of the compiled wiringOP's Deb is wrapped in Orangepi-Build:13:ef:f4:58:ae txqueuelen 1000 (Ethernet)'''
RX packets 0 bytes 0 (0'''<span style="color:blue">orangepi-build/external/cache/debs/arm64/wiringpi_x.0 B)xx.deb</span>'''
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0'''After entering the system, you can run the gpio readall command.0 B)If you can see the output below, it means that wiringOP is pre -installed and can be used normally.'''</big>
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0<div class="figure">
<ol start="5" style="list[[File:pi3b-styleimg258-type: decimal;"><li>Then you can see the USB Bluetooth device through the '''hciconfig''' command</li></ol>1.png]]
orangepi@orangepi:~$ </div><big>'''sudo apt update &amp;&amp; sudo apt install bluezwiringOP 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.'''</big>|}
orangepi@orangepi:~$ '''hciconfig'''# Download the code of wiringOP
hci0: Type: Primary Bus{| class="wikitable" style="width: 800px;" |-| orangepi@orangepi:~$ '''USBsudo apt update'''
BD Addressorangepi@orangepi: 00:13:EF:F4:58:AE ACL MTU: 820:8 SCO MTU: 255:16~$ '''sudo apt install -y git'''
DOWNorangepi@orangepi:~$ '''git clone https://github.com/orangepi-xunlong/wiringOP.git -b next'''|}
RX bytes:1252 acl:0 sco{| class="wikitable" style="background-color:0 events#ffffdc;width:125 errors:0800px;" |-| <big>'''Note that Orange Pi 3B needs to download the code of the wiringOP next branch, please don't miss the parameter of -b next.'''
TX bytes:23307 acl:0 sco:0 commands:125 errors:0
<ol start="6" style="list-style-type: decimal;"><li>You '''If there is a problem with the download code from GitHub, you can also see use the Bluetooth icon on wiringOP source code that comes with the desktop. At this timeLinux image directly, Bluetooth has not been opened, so a red and the storage location is: /usr/src/wiringOP'''x''' will be displayed</li></olbig>|}
[[File<ol start="2" style="list-style-type:pi3b-img243.png|576x157px]]decimal;"><li>Compile and install wiringOP</li>
<ol start{| class="7wikitable" style="list-style-typewidth: decimal800px;"><li>Click |-| orangepi@orangepi:~$ '''Turn Bluetooth Oncd wiringOP''' to open Bluetooth</li></ol>
[[Fileorangepi@orangepi:pi3b-img244~/wiringOP$ '''sudo .png|576x262px]]/build clean'''
orangepi@orangepi:~/wiringOP$ '''sudo ./build'''|}</ol><ol start="83" style="list-style-type: decimal;"><li>The display after opening Bluetooth is shown belowTest the output of the GPIO Readall command as follows</li></ol>
[[File:pi3b-img245.png|576x164px]]<div class="figure">
<ol start="9" style="list[[File:pi3b-styleimg258-type: decimal;"><li>Please refer to the [[\l|'''Bluetooth use method'''1.png]] for Bluetooth test method, so I won't go into details here.</li></ol>
</div></ol><span id="rtl8811pin-interface-gpio-i2c-uart-spi-and-pwm-test"></span>==== RTL8811 test ====
# First insert the RTL8811 wireless network card module into the USB == 40Pin interface of the development board.# Then the Linux system will automatically load the RTL8811 WIFI -related kernel modules. You can see that the kernel module below is automatically loaded through the lsmod commandGPIO, I2C, UART, SPI, and PWM test ==
orangepi@orangepi{| class="wikitable" style="background-color:~$ #ffffdc;width:800px;" |-| <big>'''lsmodNote 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.'''</big>
Module Size Used byorangepi@orangepi:~$ '''sudo vim /boot/orangepiEnv.txt'''
8821cu 1839104 0'''<span style="color:#FF0000">overlays=spi3-m0-cs0-spidev i2c2-m1 i2c3-m0 uart7-m2 uart9-m2 pwm11-m1</span>'''|}
<ol startspan id="3" style="listpin-gpio-styleport-type: decimal;test"><li>You can see the loading information of the RTL8811 module through the dmesg command</li></olspan>=== 40pin GPIO port test ===
orangepi@orangepi{| class="wikitable" style="background-color:~$ #ffffdc;width:800px;" |-| <big>'''dmesgThe 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.'''
[ 118.618194] usb 2-1: new high-speed USB device number 2 using ehci-platform
[ 118.767152] usb 2-1: New USB device found'''After running the blink_all_gpio program, idVendor=0bdawhen using a multimeter to measure the level of the GPIO port, idProduct=c811, bcdDevice= 2you will find that the GPIO pin will be switched between 0 and 3.3v.00Use this program to test whether the GPIO port can work normally'''
[ 118.767181] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 118.767199] usb 2-1'''The method of running blink_all_gpio program is shown below: Product: 802.11ac NIC'''</big>
[ 118.767219] usb 2-1orangepi@orangepi3b: Manufacturer: Realtek~$ '''sudo blink_all_gpio''' &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #Remember to add Sudo permissions
[ 118.767235sudo] usb 2-1password for orangepi: SerialNumber: 123456&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #You need to enter password here'''|}
[ 119# There are a total of '''28''' GPIO ports in the 40pins of the development board that can be used.500530] usbcore: registered new interface driver rtl8821cuThe 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
::[[ 119.525498] rtl8821cu 2File:pi3b-img259-1:1.0 wlx1cbfced9d260: renamed from wlan0png]]
<ol start="42" style="list-style-type: decimal;"><li>Then you can see First set the WiFi device node through GPIO port as the '''sudo ifconfig''' command. Please refer output mode, the third parameter needs to enter the serial number of the wPi corresponding to the [[\l|'''WiFi connection test a section''']] for WIFI connection and testing methods. I won't go into details herpins</li></ol>
orangepi{| class="wikitable" style="width:800px;" |-| root@orangepi:~$ /wiringOP# '''sudo ifconfig wlx1cbfced9d260gpio mode <span style="color:#FF0000">2</span> out'''|}</ol><ol start="3" style="list-style-type: decimal;"><li>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</li>
wlx1cbfced9d260{| class="wikitable" style="width:800px;" |-| root@orangepi: flags~/wiringOP# '''gpio write 2 <span style=4099&lt;UP,BROADCAST,MULTICAST&gt; mtu 1500"color:#FF0000">0</span>'''|}
ether 1c:bf:ce:d9:d2:60 txqueuelen 1000 Using GPIO Readall, you can see the value of the No. 7 pin (EthernetV)to 0
RX packets 0 bytes 0 (0[[File:pi3b-img260.0 B)png]]</ol><ol start="4" style="list-style-type: decimal;"><li>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.</li>
RX errors 0 dropped 0 overruns 0 frame 0{| class="wikitable" style="width:800px;" |-| root@orangepi:~/wiringOP# '''gpio write 2 <span style="color:#FF0000">1</span>'''|}
TX packets 0 bytes 0 Using GPIO Readall, you can see the value of No. 7 pin (0.0 Bv)into 1
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0[[File:pi3b-img261-1.png]]</ol><ol start="5" style="list-style-type: decimal;"><li>The setting method of other pins is similar, just modify the serial number of wPi to the corresponding serial number of the pin</li></ol>
<span id="rtl8821cupin-testgpio-port--down-and-downward-pull--down-resistance-setting-method"></span>==== 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. Make sure the USB module is not in the Driver CDROM Mode=== 40pin GPIO port pull-down resistance setting method ===
orangepi@orangepi{| class="wikitable" style="background-color:~$ #ffffdc;width:800px;" |-| <big>'''lsusb | grep &quot;Realtek&quot;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 '''</big>
Bus 002 Device 003[[File: ID 0bda:c820 Realtek Semiconductor Corp. 802pi3b-img262-1.11ac NICpng|center]]|}
orangepi@orangepi:~$ '''lsusb | grep &quot;Realtek&quot;'''# 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
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, re -insert the USB WiFi module. If not, please manually execute the following command to switch the mode[[File: ''' orangepi@orangepi:~$ '''sudo usb_modeswitch pi3b-KW img263-v 0bda -p 1a2b'''1.png]]
<ol start="2" style="list-style-type: decimal;">
<li>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</li>
{| class="wikitable" style="width:800px;"
|-
|
root@orangepi:~/wiringOP# '''gpio mode <span style="color:#FF0000">5</span> in'''
|}
</ol>
<ol start="3" style="list-style-type: decimal;">
<li>The Linux system will automatically load After the RTL8821CU Bluetooth and WIFI setting is set to input mode, execute the following command to set the GPIO port as the pull-related kernel modulesdown mode</li>{| class="wikitable" style="width:800px;" |-| root@orangepi:~/wiringOP# '''gpio mode <span style="color:#FF0000">5</span> up'''|}</ol><ol start="4" style="list-style-type: decimal;"><li>Then enter the following command to read the level of the GPIO port. You can see If the level is 1, it means that the kernel module below drawing mode is automatically loaded through the lsmod commandsuccessful</li>{| class="wikitable" style="width:800px;" |-| root@orangepi:~/wiringOP# '''gpio read <span style="color:#FF0000">5</olspan>'''
'''<span style="color:#FF0000">1</span>'''|}</ol><ol start="5" style="list-style-type: decimal;"><li>Then execute the following command to set the GPIO port as the drop-down mode</li>{| class="wikitable" style="width:800px;" |-| root@orangepi:~/wiringOP# '''gpio mode <span style="color:#FF0000">5</span> down'''|}</ol><ol start="6" style="list-style-type: decimal;"><li>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</li>{| class="wikitable" style="width:800px;" |-| root@orangepi:~$ /wiringOP# '''lsmodgpio read <span style="color:#FF0000">5</span>'''
Module Size Used by'''<span style="color:#FF0000">0</span>'''|}</ol><span id="pin-spi-test"></span>
8821cu 1839104 0=== 40pin SPI Test ===
rtk_btusb 61440 0# From the schematic diagram of the 40PIN interface, the SPI available for Orange Pi 3B is spi3
<ol start="4" style="list::[[File:pi3b-styleimg264-type: decimal;"><li>You can see the loading information of the rtl8821cu module through the dmesg command</li></ol>1.png]]
<ol start="2" style="list-style-type: decimal;"><li><p>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:</p><ol style="list-style-type: lower-alpha;"><li><p>First run '''orangepi-config''', normal users remember to add sudo permission</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''dmesgsudo orangepi-config'''</p>|}</li><li><p>Then select '''System'''</p><p>[[File:pi3b-1.png]]</p></li><li><p>Then select '''Hardware'''</p><p>[[File:pi3b-2.png]]</p></li><li><p>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</p><p>[[File:pi3b-3.png]]</p></li><li><p>Then select '''<Save>''' to save</p><p>[[File:pi3b-4.png]]</p></li><li><p>Then select '''<Back>'''</p><p>[[File:pi3b-5.png]]</p></li><li><p>Then select '''<Reboot>''' to restart the system to make the configuration take effect</p><p>[[File:pi3b-6.png]]</p></li></ol></li></ol>
<ol start="3" style="list-style-type: decimal;"><li>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</li>
[ 57.083693] usb 2{| class="wikitable" style="width:800px;" |-1| orangepi@orangepi: new high-speed USB device number 2 using ehci-platform~$ '''ls /dev/spidev3.0'''
[ 57/dev/spidev3.231888] usb 20|}</ol><ol start="4" style="list-1style-type: New USB device founddecimal;"><li>Do not short-circuit the mosi and miso pins of SPI3, idVendor=0bdathe output result of running spidev_test is as follows, idProduct=1a2b, bcdDevice= 2.00you can see that the data of TX and RX are inconsistent</li>
[ 57.231916] usb 2{| class="wikitable" style="width:800px;" |-1| orangepi@orangepi: New USB device strings: Mfr=1, Product=2, SerialNumber=~$ '''sudo spidev_test -v -D /dev/spidev3.0'''
[ 57.231937] usb 2-1spi mode: Product: DISK0x0
[ 57.231956] usb 2-1bits per word: Manufacturer: Realtek8
[ 57.242594] usb-storage 2-1max speed:1.0: USB Mass Storage device detected500000 Hz (500 KHz)
[ 57TX | FF FF FF FF FF FF '''<span style="color:#FF0000">40 00 00 00 00 95</span>''' FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D | ......@.…▒...245674] scsi host0: usb-storage 2-1:1.0..............▒.
[ 58RX | FF FF FF FF FF FF '''<span style="color:#FF0000">FF FF FF FF FF FF</span>''' FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ............................….069172] usb 2|}</ol><ol start="5" style="list-style-1type: USB disconnectdecimal;"><li>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, device number 2you can see the sending and receiving same data</li>
[ 58[File:pi3b-img265.440025png] usb 2]{| class="wikitable" style="width:800px;" |-1| orangepi@orangepi: new high~$ '''sudo spidev_test -speed USB device number 3 using ehciv -platformD /dev/spidev3.0'''
[ 58.587819] usb 2-1spi mode: New USB device found, idVendor=0bda, idProduct=c820, bcdDevice= 2.000x0
[ 58.587827] usb 2-1bits per word: New USB device strings: Mfr=1, Product=2, SerialNumber=38
[ 58.587833] usb 2-1max speed: Product: 802.11ac NIC500000 Hz (500 KHz)
[ 58TX | FF FF FF FF FF FF '''<span style="color:#FF0000">40 00 00 00 00 95</span>''' FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D | ......@.…▒..................▒.587838] usb 2-1: Manufacturer: Realtek
[ 58RX | FF FF FF FF FF FF '''<span style="color:#FF0000">40 00 00 00 00 95</span>''' FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D | ......@.587844] usb 2…▒..................▒.|}</ol><span id="pin-1: SerialNumber: 123456i2c-test"></span>
[ 58.610463] rtk_btusb: Realtek Bluetooth USB driver ver 3.1.6d45ddf.20220519-142432=== 40pin I2C Test ===
[ 58# From the table below, the I2C available for Orange Pi 3B is I2C2, I2C3, and I2C4 a total of three groups of I2C bus.610656] usbcore: registered new interface driver rtk_btusb
::[[ 58File:pi3b-img266-1.634631png]] Bluetooth: hci0: RTL: examining hci_ver=08 hci_rev=000c lmp_ver=08 lmp_subver=8821
[ 58.636729] Bluetooth: hci0: RTL: rom_version status{| class=0 version"wikitable" style=1"background-color:#ffffdc;width:800px;" |-| <big>'''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'''</big>|}
[ 58<ol start="2" style="list-style-type: decimal;"><li><p>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.636740] BluetoothThe detailed steps are as follows: hci0</p><ol style="list-style-type: RTLlower-alpha;"><li><p>First run '''orangepi-config''', normal users remember to add '''sudo''' permission</p>{| class="wikitable" style="width: loading rtl_bt800px;" |-| <p>orangepi@orangepi:~$ '''sudo orangepi-config'''</p>|}</li><li><p>Then select '''System'''</rtl8821c_fwp><p>[[File:pi3b-1.binpng]]</p></li><li><p>Then select '''Hardware'''</p><p>[ 58[File:pi3b-2.664190png]] Bluetooth</p></li><li><p>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</p><p>[[File: hci0pi3b-3-2.png]]</p></li><li><p>Then select '''<Save>''' to save</p><p>[[File: RTLpi3b-4.png]]</p></li><li><p>Then select '''<Back>'''</p><p>[[File: loading rtl_btpi3b-5.png]]</p></li><li><p>Then select '''<Reboot>''' to restart the system to make the configuration take effect</rtl8821c_configp><p>[[File:pi3b-6.binpng]]</p></li></ol></li></ol>
[ 58.664746] Bluetooth<ol start="3" style="list-style-type: hci0decimal;"><li>After starting the Linux system, first confirm that the i2c device node exists under/dev</li>{| class="wikitable" style="width: RTL800px;" |-| orangepi@orangepi: cfg_sz 10, total sz 31990~# '''ls /dev/i2c-*'''
[ 59.122471] Bluetooth: hci0: RTL: fw version 0x829a7644/dev/i2c-0 &nbsp;&nbsp;&nbsp;&nbsp; '''/dev/i2c-2''' &nbsp;&nbsp;&nbsp;&nbsp; '''/dev/i2c-3''' &nbsp;&nbsp;&nbsp;&nbsp; '''/dev/i2c-4''' &nbsp;&nbsp;&nbsp;&nbsp; /dev/i2c-6[ 59.265513] usbcore: registered new interface driver rtl8821cu|}</ol>[ 59.280119] rtl8821cu 2<ol start="4" style="list-style-1type:1.2 wlx90de80521825: renamed from wlan0decimal;"><li>Then connect a i2c device on the i2c pin of the 40Pin connector</li>
{| class="wikitable" style="width:800px;text-align: center;"
|-
|
|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
|}
</ol>
<ol start="5" style="list-style-type: decimal;">
<li>Then you can see the RTL8821CU WiFi device node through use the '''sudo ifconfigi2cdetect -y''' command. Please refer to if the address of the connected I2C device can be detected, it means that the [[\l|'''WiFi connection test''']] a section for WIFI connection and testing methods.I2C can be used normally</li></ol>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ sudo i2cdetect -y 2 #i2c2 command
orangepi@orangepi:~$ '''sudo ifconfig wlx90de80521825'''i2cdetect -y 3 #i2c3 command
wlx90de80521825orangepi@orangepi: flags=4099&lt;UP,BROADCAST,MULTICAST&gt; mtu 1500~$ sudo i2cdetect -y 4 #i2c4 command|}
ether 00:13:ef:f4:58:ae txqueuelen 1000 (Ethernet)<div class="figure">
RX packets 0 bytes 0 (0[[File:pi3b-img267.0 B)png]]
RX errors 0 dropped 0 overruns 0 frame 0</div></ol><span id="pin-uart-test"></span>
TX packets 0 bytes 0 (0.0 B)=== 40pin UART test ===
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0# 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
<ol start="6" style="list::[[File:pi3b-styleimg268-type: decimal;"><li>Then you can see the USB Bluetooth device through the '''hciconfig''' command</li></ol>1.png]]
orangepi@orangepi:~$ '''sudo apt:{| class="wikitable" style="background-get update &ampcolor:#ffffdc;&ampwidth:800px; sudo apt" |-get install -y bluez| <big>'''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'''</big>|}
<ol start="2" style="list-style-type: decimal;"><li><p>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:</p><ol style="list-style-type: lower-alpha;"><li><p>First run '''orangepi-config''', normal users remember to add sudo permission</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''hciconfigsudo orangepi-config'''</p>|}</li><li><p>Then select '''System'''</p><p>[[File:pi3b-1.png]]</p></li><li><p>Then select '''Hardware'''</p><p>[[File:pi3b-2.png]]</p></li><li><p>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</p><p>[[File:pi3b-3-3.png]]</p></li><li><p>Then select '''<Save>''' to save</p><p>[[File:pi3b-4.png]]</p></li><li><p>Then select '''<Back>'''</p><p>[[File:pi3b-5.png]]</p></li><li><p>Then select '''<Reboot>''' to restart the system to make the configuration take effect</p><p>[[File:pi3b-6.png]]</p></li></ol></li></ol>
hci0<ol start="3" style="list-style-type: Type: Primary Bus: '''USB'''decimal;"><li>After entering the Linux system, first confirm whether there is a device node corresponding to uart under/dev</li>
BD Address{| class="wikitable" style="width: 00800px;" |-| orangepi@orangepi:13:EF:F4:58:AE ACL MTU: 820:8 SCO MTU: 255:16~# '''ls /dev/ttyS*'''
DOWN/dev/ttyS1 &nbsp;&nbsp;&nbsp;&nbsp; '''/dev/ttyS3 &nbsp;&nbsp;&nbsp;&nbsp; /dev/ttyS7 &nbsp;&nbsp;&nbsp;&nbsp; /dev/ttyS9'''|}</ol><ol start="4" style="list-style-type: decimal;"><li>Then start testing the uart interface, first use the rx and tx of the uart interface to be tested by DuPont</li>
RX bytes{| class="wikitable" style="width:1252 acl800px;text-align:0 sco:0 events:125 errors:0center;"|-||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|}
TX bytes[[File:23307 aclpi3b-img269-1.png]]</ol><ol start="5" style="list-style-type:0 scodecimal;"><li><p>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</p><ol style="list-style-type:0 commandslower-alpha;"><li>Test UART3</li>{| class="wikitable" style="width:125 errors800px;" |-| orangepi@orangepi:0~$ '''sudo gpio serial /dev/ttyS3'''
<ol start="7" style="list-style-type[sudo] password for orangepi: decimal;"><li>Bluetooth icons can also be seen on #Enter the desktoppassword here. At this time, Bluetooth has not been opened, so a red '''x''' will be displayed</li></ol>
[[File:pi3b-img243.png|576x157px]]
<ol start="8" style="list-styleOut: 0: -type: decimal&gt;"><li>Click '''Turn Bluetooth On''' to open Bluetooth</li></ol>0
[[FileOut: 1:pi3b-img244.png|576x262px]]&gt; 1
<ol start="9" style="list-styleOut: 2: -type: decimal&gt;"><li>The display after opening Bluetooth is shown below</li></ol>2
[[FileOut: 3:pi3b-img245.png|576x164px]]&gt; 3
<ol start="10" style="list-styleOut: 4: -type: decimal&gt;"><li>Please refer to the [[\l|'''Bluetooth use chapter''']] for the Bluetooth test method. I won't go into details her</li></ol>4
Out: 5: -&gt; 5^C|}</ol><span idol start="usb2" style="list-style-cameratype: lower-testalpha;"><li>Test UART7</spanli>{| class="wikitable" style== USB Camera Test ==="width:800px;" |-| orangepi@orangepi:~$ '''sudo gpio serial /dev/ttyS7'''
[sudo] password for orangepi: # First, you need to prepare a USB camera that supports Enter the UVC protocol in the figure below, and then insert the USB camera into the USB interface of the Orange PI development boardpassword here.
[[File:pi3b-img13.png|259x150px]]
<ol start="2" style="listOut: 0: -style-type: decimal&gt;"><li>You can see that the USB camera's device node information is/dev/video0 through the v4l2-ctl command</li></ol>0
orangepi@orangepiOut: 1:~$ '''v4l2-ctl --list-devices'''&gt; 1
Q8 HD WebcamOut: 2: Q8 HD Webcam ('''usb'''-fc880000.usb-1):&gt; 2
'''/dev/video0'''Out: 3: -&gt; 3
Out: 4: -&gt; 4 Out: 5: -&gt; 5^C|}</ol><ol start="3" style="list-style-type: lower-alpha;"><li>Test UART9</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo gpio serial /dev/video1ttyS9'''
/dev/media0[sudo] password for orangepi: #Enter the password here.
'''Note that l in v4l2 is a lowercase letter l, not numbers 1.'''
'''In addition, Video's serial number is not necessarily Video0, please refer to what you see.'''Out: 0: -&gt; 0
<ol start="3" style="listOut: 1: -style-type: decimal&gt;"><li>In the desktop system, you can use Cheese to directly turn on the USB camera. The cheese opening method is shown in the figure below: </li></ol>1
[[FileOut: 2:pi3b-img246.png|474x302px]]&gt; 2
The interface after cheese opens the USB camera is shown in the figure belowOut: 3: -&gt; 3
[[FileOut: 4:pi3b-img247.png|473x277px]]&gt; 4
<ol start="4" style="list-style-typeOut: decimal;"><li><p>How to test the USB camera using fswebcam</p><ol style="list-style-type5: lower-alpha&gt;">5^C|}<li>Install fswebcam</li></ol>
</li></ol>
<span id="pwm-test-method"></span>
 
=== PWM test method ===
orangepi@orangepi:~$ '''sudo''' '''apt update'''# From the table below, the pwm11 available for Orange Pi 3B
orangepi@orangepi:~$ '''sudo apt:[[File:pi3b-get install img270-y fswebcam'''1.png]]
<ol start="2" style="list-style-type: lower-alphadecimal;"><li><p>After installing fswebcamIn the linux system, you can use the following command PWM in the 40 pin is turned off by default, and it needs to take picturesbe turned on manually before it can be used. The detailed steps are as follows:</p>
<ol style="list-style-type: lower-alpha;">
<li><p>First run '''orangepi-d The option is used config''', normal users remember to specify the device node of the USB cameraadd sudo permission</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''sudo orangepi-config'''</p>|}</li><li><p>Then select '''System'''</p><p>[[File:pi3b-1.png]]</p></li><li><p>Then select '''Hardware'''</p><p>[[File:pi3b-no-banner Used to remove the watermark of photos2.png]]</p></li><li><p>-r The option is used Then use the arrow keys on the keyboard to navigate to specify the resolution of position shown in the photofigure below, and then use the '''space''' to select the PWM configuration you want to open</p><p>[[File:pi3b-3-4.png]]</p></li><li><p>Then select '''<Save>''' to save</p><p>[[File:pi3b-S The option is set to the number of frames before skipping4.png]]</p></li><li><p>Then select '''<Back>'''</p><p>[[File:pi3b-5.png]]</p></li><li><p>Then select '''<Reboot>''' to restart the system to make the configuration take effect</imagep><p>[[File:pi3b-6.jpg The name and path for setting the generated photospng]]</p></li></ol>
</li></ol>
orangepi@orangepi<ol start="3" style="list-style-type:~$ decimal;"><li>After opening a pwm, there will be an extra pwmchipX in '''/sys/class/pwm/'sudo''(X is a specific number), for example, after opening pwm11, check the pwmchipX under ' ''/sys/class/pwm/'fswebcam '' one becomes two</li>{| class="wikitable" style="width:800px;" |-d | orangepi@orangepi:~$ '''ls /sys/class/devpwm/video0 \'''
pwmchip0 pwmchip1|}</ol><ol start="4" style="list-style-type: decimal;"><li><p>Which pwmchip above corresponds to pwm11, let's check the output of the '''ls /sys/class/pwm/ -l''' command first, as shown below:</p></li><li><p>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/ -no-banner -r 1280x720 -S 5 ./image.jpgl'''command, you can see that pwmchip1 is linked to fe6f0030.pwm, so pwm11 corresponds to pwmchip as pwmchip1</p></li>
<ol startdiv class="3figure" style="list-style-type: lower-alpha;"><li>In the service version of the Linux system, you can use the scp command to pass the picture to the Ubuntu PC to watch after taking the photo</li></ol>
orangepi@orangepi:~$ '''scp image.jpg''' [mailto[File:test@192pi3b-img271.168.1.55:/home/test test@192.168.1.55:/home/testpng]] '''(Modify the IP address and path according to the actual situation)'''
</div></ol><ol start="46" style="list-style-type: lower-alphadecimal;"><li>In Then use the desktop version of following command to make pwm11 output a 50Hz square wave (please switch to the Linux systemroot user first, you can directly view and then execute the shot pictures through the HDMI displayfollowing command)</li><{| class="wikitable" style="width:800px;" |-| root@orangepi:~# '''echo 0 &gt; /sys/class/pwm/pwmchip1/ol>export'''
<span id="audio-test"><root@orangepi:~# '''echo 20000000 &gt; /span>== Audio Test ==sys/class/pwm/pwmchip1/pwm0/period'''
<span id="test-audio-methods-in-the-desktop-system"><root@orangepi:~# '''echo 1000000 &gt; /span>=== Test audio methods in the desktop system ===sys/class/pwm/pwmchip1/pwm0/duty_cycle'''
root@orangepi:~# First open the file manager'''echo 1 &gt; /sys/class/pwm/pwmchip1/pwm0/enable'''|}
[[File:pi3b-img248img272.png|357x176px]]
<ol start="2" style="list-style-type: decimal;"><li>Then find the following file (if there The test method of pwm11 demonstrated above is no audio file in the system, you can upload a audio file similar to the system by yourself)other pwm test methods.</li></ol><span id="how-to-install-and-use-wiringop-python"></span>
<div class="figure">= How to install and use wiringOP-Python ==
[[File{| class="wikitable" style="background-color:#ffffdc;width:pi3b800px;" |-| <big>'''wiringOP-img249Python 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.png|236x186px|图片10]]'''
</div>
<ol start="3" style="list-style-type: decimal;">
<li>Then select the audio.wav file, right -click and select VLC to open it to start playing</li></ol>
[[File:pi3b-img250'''In addition, please note that all the following commands are operated under the root user.png'''</big>|288x234px]]}
<ol startspan id="4" style="listwiringop-python-styleinstallation-type: decimal;method"><li><p>Methods to switch different audio equipment such as HDMI playback and headset playback</pspan><ol style="list== wiringOP-style-type: lower-alpha;"><li>First open the volume control interface</li></ol></li></ol>Python installation method ===
[[File:pi3b-img251.png|308x169px]]# First install the dependency package
<ol start::{| class="2wikitable" style="list-style-typewidth: lower-alpha800px;"><li>When playing audio, the audio equipment options that play software can be used will be displayed in |-| root@orangepi:~# '''Playbacksudo apt-get update'''. As shown in the figure below, which audio equipment you need to play here can be set.</li></ol>
[[Fileroot@orangepi:pi3b~# '''sudo apt-img252.pngget -y install git swig python3-dev python3-setuptools'''|576x282px]]}
<span idol start="how-to-play-audio2" style="list-withstyle-commandstype: decimal;"><li>Then use the following command to download the source code of wiringOP-Python</spanli>{| class="wikitable" style== How "background-color:#ffffdc;width:800px;" |-| <big>'''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 play audio with commands ===network problems.'''
<span id="headphone-interface-play-audio-test"></span>
==== Headphone interface play audio test ====
# First insert '''If there is a problem with the download code from GitHub, you can use the headset into wiringOP-Python source code that comes with the headphone jack of Linux image directly, and the development boardstorage location is:/usr/src/wiringOP-Python'''</big>|}[[File{| class="wikitable" style="width:pi3b800px;" |-img253| root@orangepi:~# '''git clone --recursive https://github.png|395x112px]]com/orangepi-xunlong/wiringOP-Python -b next'''
<ol start="2" style="list-style-typeroot@orangepi: decimal;"><li>Then you can check the sound card device supported by the Linux system through the ~# '''aplay cd wiringOP-l''' command. From the output below, it can be seen that '''card 0Python''' is the sound card device with RK809, which is the sound card device of the headset</li></ol>
root@orangepi:~/wiringOP-Python# '''git submodule update --init --remote'''|}</ol><ol start="3" style="list-style-type: decimal;"><li>Then use the following command to compile wiringOP-Python and install it into the Linux system of the development board</li>{| class="wikitable" style="width:800px;" |-| root@orangepi:~$ # '''aplay cd wiringOP-lPython'''
**** List of PLAYBACK Hardware Devices ****root@orangepi:~/wiringOP-Python# '''python3 generate-bindings.py &gt; bindings.i'''
root@orangepi:~/wiringOP-Python# '''card 0sudo python3 setup.py install'''|}</ol><ol start="4" style="list-style-type: rockchiprk809 [rockchip-rk809]decimal;"><li>Then enter the following command. If there is a help information output, device 0: dailinkit means that Wiringop-multicodecs rk817-hifi-0 [dailink-multicodecs rk817-hifi-0]Python is successfully installed. Press the '''q'''key to exit the interface of the help information</li>
{| class="wikitable" style="width:800px;" |-| root@orangepi:~/wiringOP-Python# '''Subdevices: 0/1python3 -c &quot;import wiringpi; help(wiringpi)&quot;'''
'''Subdevice #0Help on module wiringpi: 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/1NAME
Subdevice #0: subdevice #0wiringpi
Subdevice #0: subdevice #0
<ol start="3" style="list-style-type: decimal;"><li>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</li></ol>DESCRIPTION
orangepi@orangepi:~$ '''aplay -D hw# This file was automatically generated by SWIG (http:0,0 /usr/share/sounds/alsa/audiowww.swig.org).wav'''
Playing WAVE 'audio: # Version 4.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo0.2
<span id="hdmi-audio-play-test"></span>==== HDMI Audio Play Test ====: #
: # First use the HDMI Do not make changes 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, this file unless you can know that the HDMI sound card is '''card 1'''what you are doing--modify
orangepi: # the SWIG interface file instead.|}</ol><ol start="5" style="list-style-type: decimal;"><li><p>Test whether the wiringOP-Python is installed successfully under the Python command line is shown below:</p><ol style="list-style-type: lower-alpha;"><li>First use the Python3 command to enter the command line mode of Python3</li>{| class="wikitable" style="width:800px;" |-| root@orangepi:~$ # '''python3''aplay '|}</ol><ol start="2" style="list-lstyle-type: lower-alpha;"><li>Then import the Python module of WiringPi</li>{| class="wikitable" style="width:800px;" |-| &gt;&gt;&gt; '''import wiringpi;'''|}</ol><ol start="3" style="list-style-type: lower-alpha;"><li>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</li>{| class="wikitable" style="width:800px;" |-| &gt;&gt;&gt; '''help(wiringpi)'''
**** List of PLAYBACK Hardware Devices ****Help on module wiringpi:
card 0: rockchiprk809 [rockchip-rk809], device 0: dailink-multicodecs rk817-hifi-0 [dailink-multicodecs rk817-hifi-0]
Subdevices: 0/1NAME
Subdevice #0: subdevice #0wiringpi
'''card 1: rockchiphdmi [rockchip,hdmi], device 0: fe400000.i2s-i2s-hifi i2s-hifi-0 [fe400000.i2s-i2s-hifi i2s-hifi-0]'''
'''Subdevices: 0/1'''DESCRIPTION
'''Subdevice : #0This file was automatically generated by SWIG (http: subdevice #0'''//www.swig.org).
'''Subdevice #0: subdevice #Version 4.0'''.2
<ol start="3" style="list-style-type: decimal;"><li>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</li></ol>#
orangepi@orangepi:~$ '''aplay # Do not make changes to this file unless you know what you are doing-D hw:1,0 /usr/share/sounds/alsa/audio.wav'''-modify
<span id="use-: # the-command-to-test-the-recording-method"></span>=== Use the command to test the recording method ===SWIG interface file instead.
# 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''''CLASSES
orangepi@orangepi:~$ '''arecord -D hw:0,0 -d 5 -f cd -t wav /tmp/testbuiltins.wav'''object
<span id="temperature-sensor"></span>== Temperature Sensor ==::GPIO
# The command of the system temperature sensor is: :I2C
orangepi@orangepi:~$ '''sensors''':Serial
soc_thermal-virtual-0::nes
Adapter: Virtual device
temp1: +41.9°C class GPIO(crit = +115builtins.0°Cobject)
gpu_thermal-virtual-:| GPIO(pinmode=0)
Adapter: Virtual device|
temp1: +43.8°C
<ol start="2" style="list-style-type: decimal&gt;"><li><p>The command of the current temperature of the NVMe SSD solid -state hard disk is: </p><p>orangepi@orangepi:~$ '''sudo smartctl -a /dev/nvme0 | grep &quotgt;Temperature:&quotgt;'''|}</pol><p/li>Temperature: '''40 Celsius'''</pol></lispan id="pin-gpio-port-test-1"></olspan>
<span id="pin-interface-pin-explanation"></span>== 40 Pin interface pin explanation 40pin GPIO port test ===
{| class="wikitable" style="background-color:# Orange Pi 3B Development board 40 Pin interface pinsffffdc;width:800px;" |-| <big>'''wiringOP-Python is the same as wiringOP, you can also determine which GPIO pin to operate by specifying the wPi number, please refer because there is no command to check the figure belowwPi number in wiringOP-Python, so you can only check the board wPi number and physical Correspondence between pins.'''</big>
<div class="figure">
[[File:pi3b-img254img258.png|400x124px|C:\Users\orangepi\Desktop\用户手册插图\pi 3b\Orange-Pi-3B-Development-board-40-Pin(1).jpgOrange-Pi-3B-Development-board-40-Pin(1)center]]
</div>
|}
# 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
 
::[[File:pi3b-img259.png]]
 
<ol start="2" style="list-style-type: decimal;">
<li><p>The function steps of the Orange Pi 3B development board 40 PIN interface pins is command test are shown in the table below.directly: </p>
<ol style="list-style-type: lower-alpha;">
<li>Below First set the GPIO port to the output mode. The first parameter of the '''pinMode''' function is a complete pins the serial number of 40pinthe wpi corresponding to the pin, and the second parameter is the GPIO mode</li></ol><{| class="wikitable" style="width:800px;" |-| root@orangepi:~/li></ol>wiringOP-Python# '''python3 -c &quot;import wiringpi; \'''
[[File:pi3b-img255'''from wiringpi import GPIO; wiringpi.png|575x160px]]wiringPiSetup() ; \'''
'''wiringpi.pinMode(<span style="color:#FF0000">2, GPIO.OUTPUT</span>) ; &quot;'''
|}
</ol>
<ol start="2" style="list-style-type: lower-alpha;">
<li>The following form is a picture on Then set the GPIO port output low level. After setting, you can use the voltage of the left half voltage of the full table aboveuniversal meter to measure the pins. If it is 0V, which can be seen clearlyit means that the low -power flat is successful</li><{| class="wikitable" style="width:800px;" |-| root@orangepi:~/ol>wiringOP-Python# '''python3 -c &quot;import wiringpi; \'''
[[File:pi3b-img256'''from wiringpi import GPIO; wiringpi.png|478x267px]]wiringPiSetup() ;\'''
'''wiringpi.digitalWrite(<span style="color:#FF0000">2, GPIO.LOW</span>)&quot;'''
|}
</ol>
<ol start="3" style="list-style-type: lower-alpha;">
<li>The following form is a picture on Then set the GPIO port output high level. After setting, you can use the value of the right half voltage of the top table abovepins with a multimeter. If it is 3.3V, which can be seen clearlyit means that the high -power flat is successful.</li><{| class="wikitable" style="width:800px;" |-| root@orangepi:~/ol>wiringOP-Python# '''python3 -c &quot;import wiringpi; \'''
[[File:pi3b-img257'''from wiringpi import GPIO; wiringpi.png|479x266px]]wiringPiSetup() ;\'''
'''wiringpi.digitalWrite(<span style="color:#FF0000">2, GPIO.HIGH</span>)&quot;'''
|}
</ol>
</li></ol>
<ol start="3" style="list-style-type: decimal;">
<li>There are a total <p>The steps of '''28''' GPIO ports testing in the 40pin interface. The voltage command line of Python3 are shown below: </p><ol style="list-style-type: lower-alpha;"><li>First use the Python3 command to enter the command line mode of all GPIO ports is Python3</li>{| class="wikitable" style="width:800px;" |-| root@orangepi:~# '''3.3vpython3'''|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li>Then import the Python module of WiringPi</olli>{| class="wikitable" style="width:800px;" |-| &gt;&gt;&gt; '''import wiringpi'''
&gt;&gt;&gt; '''from wiringpi import GPIO'''|}<span id/ol><ol start="how3" style="list-tostyle-installtype: lower-wiringopalpha;"><li>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.</spanli>{| class="wikitable" style= How to install Wiringop =="width:800px;" |-| &gt;&gt;&gt; '''wiringpi.wiringPiSetup()'''
'''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.'''0
&gt;&gt;&gt; '''The storage path wiringpi.pinMode(<span style="color:#FF0000">2, GPIO.OUTPUT</span>)'''|}</ol><ol start="4" style="list-style-type: lower-alpha;"><li>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.</li>{| class="wikitable" style="width:800px;" |-| &gt;&gt;&gt; '''wiringpi.digitalWrite(2, <span style="color:#FF0000">GPIO.LOW</span>)'''|}</ol><ol start="5" style="list-style-type: lower-alpha;"><li>Then set the GPIO port output high level. After setting, you can use the value of the voltage of the compiled pins with a multimeter. If it is 3.3V, it means that the high -power flat is successful</li>{| class="wikitable" style="width:800px;" |-| &gt;&gt;&gt; '''wiringpi.digitalWrite(2, <span style="color:#FF0000">GPIO.HIGH</span>)'''|}</ol></li></ol><ol start="4" style="list-style-type: decimal;"><li>Wiringop-Python Sets GPIO high and low levels in the Python code. For reference to the ''s Deb is wrapped 'blink.py''' test program in Examples, the voltage of the '''blink.py''' test program will set up the voltage of all GPIO ports in Orangepithe development board 40 PIN</li>{| class="wikitable" style="width:800px;" |-Build| root@orangepi: ~/wiringOP-Python# '''cd examples'''
root@orangepi:~/wiringOP-Python/examples# '''orangepi-build/external/cache/debs/arm64/wiringpi_xls blink.xxpy''' '''blink.debpy'''
root@orangepi:~/wiringOP-Python/examples'''After entering the system, you can run the gpio readall command. If you can see the output below, it means that wiringOP is pre -installed and can be used normally# python3 blink.py'''|}</ol><span id="pin-spi-test-1"></span>
<div class="figure">== 40pin SPI test ===
[[File:pi3b-img258.png|575x355px|66AC(IBG%N8L@Y7(1BZPS`N]]# From the schematic diagram of the 40pin interface, the SPI available for Orange Pi 3B is spi3
</div>'''wiringOP is currently adapted to set the GPIO port input output, set the GPIO port output high and low level, and set the function of pulling and down resistance::[[File:pi3b-img264. It is impossible to use functions like hardware PWM.'''png]]
::{| class="wikitable" style="background-color:# Download ffffdc;width:800px;" |-| <big>'''In the code of WiringopLinux system, the spi3 in 40pin is closed by default, and it needs to be opened manually to use.'''
orangepi@orangepi:~$ '''sudo apt update'''
orangepi@orangepi:~$ '''sudo apt install -y gitAdd the configuration of the red font part below to the /boot/orangepiEnv.txt, and then restart the Linux system to open the spi4.'''</big>
orangepi@orangepi:~$ '''git clone https://github.com/orangepi-xunlong/wiringOP.git -b next'''
orangepi@orangepi:~$ '''Note that Orange Pi 3B needs to download the code of the wiringOP next branch, please don't miss the parameter of -b nextsudo vim /boot/orangepiEnv.txt'''
'''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<span style="color:#FF0000">overlays=spi3-m0-cs0-spidev</usr/src/wiringOPspan>'''|}
<ol start="2" style="list-style-type: decimal;">
<li>Compile 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 install wiringOPcan be used directly</li></ol>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''cd wiringOPls /dev/spidev3.0'''
orangepi/dev/spidev3.0|}</ol><ol start="3" style="list-style-type: decimal;"><li><p>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: </p><ol style="list-style-type: lower-alpha;"><li><p>'''--channel''': Specify the channel number of SPI</p></li><li><p>'''--port''': Specify the port number of SPI</p></li></ol></li><li><p>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</p></li>{| class="wikitable" style="width:800px;" |-| root@orangepi:~/wiringOP$ -Python# '''sudo ./build cleancd examples'''
orangepiroot@orangepi:~/wiringOP$ -Python/examples# '''sudo python3 spidev_test./buildpy \'''
<ol start="'''--channel 3" style="list-style-type: decimal;"><li>Test the output of the GPIO Readall command as follows</li></ol>port 0'''
<div class="figure">spi mode: 0x0
[[Filemax speed:pi3b-img258.png|575x355px|66AC500000 Hz (IBG%N8L@Y7(1BZPS`N]]500 KHz)
<Opening device /div><span id="pin-interface-gpio-i2c-uart-spi-and-pwm-test"><dev/span>== 40Pin interface GPIO, I2C, UART, SPI, and PWM test ==spidev3.0
TX | FF FF FF FF FF FF '''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.<span style="color:#FF0000">40 00 00 00 00 95</span>'''FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D |......@.......…|
orangepiRX | FF FF FF FF FF FF '''<span style="color:#FF0000">FF FF FF FF FF FF</span>''' FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF |.............….||}</ol><ol start="5" style="list-style-type: decimal;"><li>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</li>{| class="wikitable" style="width:800px;" |-| root@orangepi:~$ /wiringOP-Python# '''sudo vim /boot/orangepiEnv.txtcd examples'''
root@orangepi:~/wiringOP-Python/examples# '''overlays=spi3-m0-cs0-spidev i2c2-m1 i2c3-m0 uart7-m2 uart9-m2 pwm11-m1python3 spidev_test.py \'''
<span id="pin'''-gpio-portchannel 3 --test"></span>=== 40pin GPIO port test ===0'''
'''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.'''spi mode: 0x0
'''After running the blink_all_gpio program, when using a multimeter to measure the level of the GPIO port, you will find that the GPIO pin will be switched between 0 and 3.3v. Use this program to test whether the GPIO port can work normally'''max speed: 500000 Hz (500 KHz)
'''The method of running blink_all_gpio program is shown below: '''Opening device /dev/spidev3.0
orangepi@orangepi3b:~$ TX | FF FF FF FF FF FF '''sudo blink_all_gpio<span style="color:#FF0000">40 00 00 00 00 95</span>''' #Remember to add Sudo permissionsFF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D |......@.......…|
[sudo] password for orangepiRX | FF FF FF FF FF FF '''<span style="color: #You need to enter a password hereFF0000">40 00 00 00 00 95</span>''' FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D |......@.......…||}</ol><span id="pin-i2c-test-1"></span>
# A total of 28 GPIO ports can be used in the development board === 40pin. Below is No. 7 pins -corresponding GPIO as GPIO4_A4 -corresponding WPI serial number 2 -as an example how to set the height of the GPIO portI2C test ===
[[File<ol start="1" style="list-style-type:pi3b-img259.png|576x120px]]decimal;"><li>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</li>
<ol start="2" style="list[[File:pi3b-style-type: decimal;"><li>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</li></ol>img266.png]]
root@orangepi{| class="wikitable" style="background-color:~#ffffdc;width:800px;" |-| <big>'''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'''</wiringOPbig>|}{| class="wikitable" style="background-color:# ffffdc;width:800px;" |-| <big>'''gpio mode 2 outIn the Linux system, the I2C in 40Pin is closed by default, and it needs to be opened manually to use.'''
<ol start="3" style="list-style-type: decimal;">
<li>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 -electric flat is successful</li></ol>
root@orangepi:~/wiringOP# '''gpio write 2 0Add the configuration of the red font part below to the/boot/orangepiEnv.txt, and then restart the Linux system to open the I2C2, i2C3, and I2C4 at the same time. If you only need to open one, then fill in one.'''</big>
Using GPIO Readall, you can see the value of the No. 7 pin (v) to 0
[[Fileorangepi@orangepi:pi3b-img260~$ '''sudo vim /boot/orangepiEnv.png|576x120px]]txt'''
'''<span style="color:#FF0000">overlays=i2c2-m1 i2c3-m0 i2c4-m0</span>'''|}</ol><ol start="42" style="list-style-type: decimal;"><li>Then set After starting the GPIO port output high level. After settingLinux system, you can use first confirm the voltage of the voltage of the permanent meter to measure the voltageI2C device node under/dev. If it is 3.3V, it means that the high-electricity level is successful</li></ol>
root{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~/wiringOP# '''gpio write 2 1ls /dev/i2c-*'''
Using GPIO Readall, you can see /dev/i2c-0 &nbsp;&nbsp;&nbsp;&nbsp; '''/dev/i2c-2''' &nbsp;&nbsp;&nbsp;&nbsp; '''/dev/i2c-3''' &nbsp;&nbsp;&nbsp;&nbsp; '''/dev/i2c-4''' &nbsp;&nbsp;&nbsp;&nbsp; /dev/i2c-6|}</ol><ol start="3" style="list-style-type: decimal;"><li>Then connect a I2C device on the value I2C pin of the 40PIN connector. Here is an example of Nothe DS1307 RTC module. 7 pin (v) into 1</li>
[[File{| class="wikitable" style="width:800px;text-align:pi3bcenter;"|-||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|-img261| 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.png6 pin|576x118px]]}
[[File:pi3b-img273.png]]</ol><ol start="54" style="list-style-type: decimal;"><li>The setting method of other pins is similar. Just modify Then use the '''i2cdetect -y''' command If the serial number address of the wPi sequence number as the corresponding serial number corresponding to connected I2C device can be detected, it means that the pinI2C can be used normally</li></ol>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ sudo i2cdetect -y 2 #i2c2 command
<span id="pinorangepi@orangepi:~$ sudo i2cdetect -gpio-port--down-and-downward-pull--down-resistance-setting-method"></span>=== 40Pin GPIO Port -down and downward pull -down resistance setting method ===y 3 #i2c3 command
'''Note that the orangepi@orangepi:~$ sudo i2cdetect -y 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'''#i2c4 command|}
[[File:pi3b-img262.png|575x353px]]<div class="figure">
# Below the No[[File:pi3b-img274. 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 portpng]]
[[File</div></ol><ol start="5" style="list-style-type:pi3bdecimal;"><li>You can then run the time of the ds '''ds1307.py''' test program in '''examples''' to read the RTC time</li>{| class="wikitable" style="width:800px;" |-img263.png|576x147px]]root@orangepi:~/wiringOP-Python# '''cd examples'''
<ol start="2" style="list-style-typeroot@orangepi: decimal;"><li>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<~/li><wiringOP-Python/ol>examples# '''python3 ds1307.py --device \'''
root@orangepi:~/wiringOP# '''gpio mode 5 in&quot;/dev/i2c-4&quot;'''
<ol start="3" style="listThu 2023-style01-type05 14: decimal;"><li>After the setting is set to input mode, execute the following command to set the GPIO port as the pull -down mode</li></ol>57:55
root@orangepiThu 2023-01-05 14:~/wiringOP# '''gpio mode 5 up'''57:56
<ol start="4" style="listThu 2023-style01-type05 14: decimal;"><li>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</li></ol>57:57
root@orangepi:~/wiringOP# '''gpio read 5'''^C
'''1'''exit|}</ol><span id="pins-uart-test."></span>
<ol start="5" style="list-style-type: decimal;"><li>Then execute the following command to set the GPIO port as the drop-down mode</li></ol>= 40pin's UART test ===
root@orangepi:~/wiringOP# '''gpio mode 5 down'''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
<ol start="6" style="list-style::[[File:pi3b-type: decimal;"><li>Then enter the following command to read the level of the GPIO portimg268. If the level is 0, it means that the drop -down mode is set successfully</li></ol>png]]
root@orangepi:~/wiringOP:{| class="wikitable" style="width:800px;background-color:# ffffdc;" |-| <big>'''gpio read 5As 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'''</big>|}
::{| class="wikitable" style="width:800px;background-color:#ffffdc;" |-| <big>'''0In the Linux system, the UART in 40pin is closed by default, and it needs to be opened manually to use.'''
<span id="pin-spi-test"></span>=== 40pin SPI Test === # From the schematic diagram of the 40PIN interface, the SPI available for Orange Pi 3B is spi3 [[File:pi3b-img264.png|577x193px]] '''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 spi3UART3, UART7, and UART9 at the same time.If you only need to open one, you can fill in one'''</big>
orangepi@orangepi:~$ '''sudo vim /boot/orangepiEnv.txt'''
'''<span style="color:#FF0000">overlays=spi3uart3-m0uart7-cs0m2 uart9-spidevm2</span>'''|}
<ol start="2" style="list-style-type: decimal;">
<li>First check After entering the Linux system, first confirm whether there is a '''spidev3.0''' device node in the Linux system. If it exists, it means that the SPI3 has been set. You can use it directlycorresponding to UART under/dev</li></ol>
{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ # '''ls /dev/spidev3.0ttyS*''' /dev/spidev3.0
/dev/ttyS1 &nbsp;&nbsp;&nbsp;&nbsp; '''/dev/ttyS3 &nbsp;&nbsp;&nbsp;&nbsp; /dev/ttyS7 &nbsp;&nbsp;&nbsp;&nbsp; /dev/ttyS9'''
|}
</ol>
<ol start="3" style="list-style-type: decimal;">
<li>Do not shorten Then start testing the two pins of the SPI3 MOSI and MISOUART interface, and run first use the output result RX and TX of the spidev_test as shown below. You can see that the data of TX and RX is inconsistentUART interface to be tested by DuPont</li></ol>
orangepi{| class="wikitable" style="width:800px;text-align: center;"|-||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|}</ol><ol start="4" style="list-style-type: decimal;"><li><p>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</p><ol style="list-style-type: lower-alpha;"><li>Test UART3</li>{| class="wikitable" style="width:800px;" |-| root@orangepi:~$ /wiringOP-Python/examples# '''sudo spidev_test python3 serialTest.py -v -D /dev/spidev3.0device \'''
spi mode: 0x0'''&quot;/dev/ttyS3&quot;'''
bits per word: 8
max speedOut: 500000 Hz (500 KHz)0: -&gt; 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 | ......@.…▒..................▒.Out: 1: -&gt; 1
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 | ............................….Out: 2: -&gt; 2
<ol start="4" style="list-styleOut: 3: -type: decimal&gt;"><li>Then the two pins of the SPI3 MOSI (No. 19 pins in the 40pin interface) and MISO (No. 21 in the 40PIN interface) run the output of SPIDEV_TEST as follows.You can see that sending and receiving data is the same.</li></ol>3
[[FileOut:pi3b-img265.png|577x83px]]4:^C
orangepiexit|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li>Test UART7</li>{| class="wikitable" style="width:800px;" |-| root@orangepi:~$ /wiringOP-Python/examples# '''sudo spidev_test python3 serialTest.py -v -D /dev/spidev3.0device \'''
spi mode: 0x0'''&quot;/dev/ttyS7&quot;'''
bits per word: 8
max speedOut: 500000 Hz (500 KHz)0: -&gt; 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 | ......@.…▒..................▒.Out: 1: -&gt; 1
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 | ......@.…▒..................▒.Out: 2: -&gt; 2
<span id="pinOut: 3: -i2c-test"></span>=== 40pin I2C Test ===&gt; 3
# From the table below, the I2C available for Orange Pi 3B is I2C2, I2C3, and I2C4 a total of three groups of I2C bus.Out: 4:^C
[[Fileexit|}</ol><ol start="3" style="list-style-type:pi3blower-img266alpha;"><li>Test UART9</li>{| class="wikitable" style="width:800px;" |-| root@orangepi:~/wiringOP-Python/examples# '''python3 serialTest.png|576x160px]]py --device \'''
'''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&quot;/dev/ttyS9&quot;'''
'''In the Linux system, the i2c 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 i2c2, i2c3, and i2c4 at the same time. If you only need to open one, then fill in one.'''Out: 0: -&gt; 0
orangepi@orangepiOut:~$ '''sudo vim /boot/orangepiEnv.txt'''1: -&gt; 1
'''overlays=i2c2Out: 2: -m1 i2c3-m0 i2c4-m0'''&gt; 2
<ol start="2" style="list-styleOut: 3: -type: decimal&gt;"><li>After starting the Linux system, first confirm that the i2c device node exists under/dev</li></ol>3
orangepi@orangepiOut:~# '''ls /dev/i2c-*'''4:^C
/dev/i2c-0 '''/dev/i2c-2''' '''/dev/i2c-3''' '''/dev/i2c-4''' /dev/i2c-6 <ol start="3" style="list-style-type: decimal;"><li>Then connect a i2c device on the i2c pin of the 40Pin connector</li></ol> {| class="wikitable"|-|| style="text-align: left;"| i2c2-m1| style="text-align: left;"| i2c3-m0| style="text-align: left;"| i2c4-m0|-| Sda Pin| style="text-align: left;"| Corresponding to No. 3 pin| style="text-align: left;"| Corresponding to No. 27 pin| style="text-align: left;"| Corresponding to No. 19 pin|-| Sck Pin| style="text-align: left;"| Corresponding to No. 5 pin| style="text-align: left;"| Corresponding to No. 28 pin| style="text-align: left;"| Corresponding to No. 23 pin|-| Vcc Pin| style="text-align: left;"| Corresponding to No. 1 pin| style="text-align: left;"| Corresponding to No. 1 pin| style="text-align: left;"| Corresponding to No. 1 pin|-| Gnd Pin| style="text-align: left;"| Corresponding to No. 6 pin| style="text-align: left;"| Corresponding to No. 6 pin| style="text-align: left;"| Corresponding to No. 6 pinexit
|}
</ol>
</li></ol>
<span id="hardware-watch-the-door-dog-test"></span>
<ol start="4" style="list-style-type: decimal;"><li>Then use Hardware watch the '''i2cdetect -y''' command if the address of the connected I2C device can be detected, it means that the I2C can be used normally</li></ol>door dog test ==
orangepi@orangepi:~$ sudo i2cdetect The WatchDog_test program is pre -y 2 #i2c2 commandinstalled in the Linux system released by Orange PI, which can be tested directly.
orangepi@orangepiThe method of running the WatchDog_test program is shown below:~$ sudo i2cdetect -y 3 #i2c3 command
orangepi@orangepi<ol style="list-style-type:~$ sudo i2cdetect lower-y 4 #i2c4 commandalpha;"><li><p>The second parameter 10 indicates the counting time of the door. If there is no dog feeding in this time, the system will restart.</p></li><li><p>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</p></li>
<div {| class="figurewikitable">style="width:800px;" |-| orangepi@orangepi:~$ '''sudo watchdog_test 10'''
[[File:pi3b-img267.png|476x179px|UN}~]Q}T_70O%Z%RNO8R@YE]]open success
</div><span id="pinoptions is 33152,identity is sunxi-uart-test"></span>=== 40pin UART test ===wdt
# As can be seen from the table belowput_usr return, the uart available for Orange Pi 3B is uart3if 0, uart7, and uart9. There are three sets of uart bussuccess:0
[[FileThe old reset time is:pi3b-img268.png|575x160px]]16
'''As can be seen from the above tablereturn ENOTTY, i2c3_m0 and uart3_m0 are reused by pinsif -1, and the two cannot be opened at the same time'''success:0
'''In the Linux systemreturn ENOTTY, the uart in 40pin is closed by defaultif -1, and it needs to be opened manually to use.'''success:0
'''Add the configuration of the red font part below to the /boot/orangepiEnv.txtput_user return, and then restart the Linux system to open the uart3if 0, uart7, and uart9 at the same time. If you only need to open one, you can fill in one..'''success:0
orangepi@orangepiput_usr return,if 0,success:~$ '''sudo vim /boot/orangepiEnv.txt'''0
'''overlays=uart3-m0 uart7-m2 uart9-m2'''keep alive
<ol start="2" style="list-style-type: decimal;"><li>After entering the Linux system, first confirm whether there is a device node corresponding to uart under/dev</li></ol>keep alive
orangepi@orangepi:~# '''ls keep alive|}</devol><span id="check-the-serial-number-of-the-rk3566-chip"></ttyS*'''span>
/dev/ttyS1 '''/dev'''/'''ttyS3 /dev/ttyS7 /dev/ttyS9'''== Check the serial number of the RK3566 chip ==
<ol start="3" style="list-style-type: decimal;"><li>Then start testing The commands of the uart interfaceRK3566 chip serial number are shown below. The serial number of each chip is different, first so you can use the rx and tx of the uart interface serial number to be tested by DuPont</li></ol>distinguish multiple development boards.
{| class="wikitable" style="width:800px;"
|-
|orangepi@orangepi:~$ '''cat_serial.sh''' Serial : '''8fa18eaf489041f0'''| } <span id="the-method-of-downloading-and-installing-the-balenaetcher-version-of-arm64"></span> == The method of downloading and installing the balenaEtcher version of arm64 == <ol style="textlist-alignstyle-type: leftdecimal;"| uart3><li><p>The download address of Balenaetcher ARM64 version is: </p>| <ol style="textlist-style-aligntype: leftlower-alpha;"| uart7><li>The download address of the Deb installation package is shown below, and it needs to be installed to use</li>{| class="wikitable" style="text-alignwidth: left800px;"| uart9
|-
| Tx pin'''https://github.com/Itai-Nelken/BalenaEtcher-arm/releases/download/v1.7.9/balena-etcher-electron_1.7.9+5945ab1f_arm64.deb'''| }</ol><ol start="2" style="textlist-style-aligntype: leftlower-alpha;"| Corresponding ><li>The download address of the Appimage version that does not need to the 28 pinbe installed is shown below: </li>{| styleclass="text-align: left;wikitable"| Corresponding to the 16 pin| style="text-alignwidth: left800px;"| Corresponding to the 29 pin
|-
| Rx Pin| style="text'''https://github.com/Itai-align: left;"| Corresponding to the 27 pin| style="textNelken/BalenaEtcher-align: left;"| Corresponding to the 15 pin| style="textarm/releases/download/v1.7.9/balenaEtcher-align: left;"| Corresponding to the 1.7 pin.9+5945ab1f-arm64.AppImage'''
|}
<div class="figure"> [[File:pi3b-img269img275.png|545x134px]]
</div></ol></li></ol><ol start="42" style="list-style-type: decimal;"><li><p>Use the '''gpio serial''' command How to test install and use the loop function deb version of the serial port as shown below. If you can see the following printing, it means that the serial communication is normalBalenaetcher: </p>
<ol style="list-style-type: lower-alpha;">
<li>Test UART3deb version of Balenaetcher installation commands as shown below: </li></ol></li></ol>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo apt install -y \'''
orangepi@orangepi:~$ '''sudo gpio serial --fix-broken ./dev/ttyS3balena-etcher-electron_1.7.9+5945ab1f_arm64.deb'''|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li>After the deb version of Balenaetcher is installed, it can be opened in the Application</li>
[sudo] password for orangepi: #Enter the password here.<div class="figure">
Out: 0[[File: pi3b-&gt; 0img89.png]]
Out: 1</div></ol><ol start="3" style="list-style-type: lower-&gtalpha; 1"><li>The interface after Balenaetcher is opened is shown below: </li>
Out: 2: -&gt; 2<div class="figure">
Out: 3: -&gt; 3 Out: 4: -&gt; 4 Out: 5[[File: pi3b-&gt; 5^Cimg276.png]]
</div></ol>
</li></ol>
<ol start="3" style="list-style-type: decimal;">
<li><p>How to use the AppImage version of balenaEtcher: </p>
<ol style="list-style-type: lower-alpha;">
<li>First add permissions to Balenaetcher</li>
{| class="wikitable" style="width:800px;"
|-
|
orangepi@orangepi:~/Desktop$ '''chmod +x balenaEtcher-1.7.9+5945ab1f-arm64.AppImage'''
|}
</ol>
<ol start="2" style="list-style-type: lower-alpha;">
<li>Test UART7Then select the AppImage version balenaEtcher right -click the mouse, and then click Execute to open balenaEtcher</li></ol>
orangepi@orangepi[[File:~$ '''sudo gpio serial pi3b-img277.png]]</devol></ttyS7'''li></ol><span id="the-installation-method-of-the-bt-panel-linux-panel"></span>
[sudo] password for orangepi: #Enter == The installation method of the password here.Bt-Panel Linux panel ==
Out{| class="wikitable" style="background-color:#ffffdc;width: 0800px;" |-| <big>'''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 [https: //www.bt.cn/new/index.html official website of the Bt-&gt; 0Panel])'''</big>|}
Out# First of all, the size of the'''/tmp''' space is needed. After setting, you need to '''<span style="color: 1#FF0000">restart the Linux system of the development board</span>''', and the command is shown below: -&gt; 1
Out: 2: {| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo sed -i 's/nosuid/&gtamp; 2,size=2G/' /etc/fstab'''
Outorangepi@orangepi: 3: -&gt; 3~$ '''sudo reboot'''|}
Out<ol start="2" style="list-style-type: decimal;"><li>After restarting, you can see that the size of the'''/tmp''' space has become 2G.</li>{| class="wikitable" style="width: 4800px;" |-| orangepi@orangepi: ~$ '''df -h | grep &quot;/tmp&gtquot; 4'''
Outtmpfs &nbsp;&nbsp;&nbsp;&nbsp; 2.0G &nbsp;&nbsp;&nbsp;&nbsp; 12K &nbsp;&nbsp;&nbsp;&nbsp; '''<span style="color: 5#FF0000">2.0G</span>''' &nbsp;&nbsp;&nbsp;&nbsp; 1% /tmp|}</ol><ol start="3" style="list-style-type: decimal;"><li>Then enter the following command in the Linux system to start the installation of the Bt-Panel</li>{| class="wikitable" style="width: 800px;" |-&gt| orangepi@orangepi:~$ '''sudo install_bt_panel.sh'''|}</ol><ol start="4" style="list-style-type: decimal;"><li>Then the pagoda installation program reminds whether to install the '''Bt-Panel''' to the'''/www''' folder, and enter '''<span style="color:#FF0000">y</span>''' at this time</li>{| class="wikitable" style="width:800px; 5^C" |-| +----------------------------------------------------------------------
<ol start="3" style="listp>| Bt-style-type: lower-alpha;"><li>Test UART9<WebPanel FOR CentOS/Ubuntu/li>Debian</olp>
orangepi@orangepi:~$ '''sudo gpio serial /dev/ttyS9'''+----------------------------------------------------------------------
[sudo] password for orangepi<p>| Copyright © 2015-2099 BT-SOFT(http: #Enter the password here//www.bt.cn) All rights reserved.</p>
Out: 0: +----------------------------------------------------------------------&gt; 0
Out<p>| The WebPanel URL will be http: 1//SERVER_IP: -&gt; 18888 when installed.</p>
Out: 2: +----------------------------------------------------------------------&gt; 2
Out: 3: -&gt; 3
OutDo you want to install Bt-Panel to the /www directory now?(y/n): 4'''<span style="color: #FF0000">y</span>'''|}</ol><ol start="5" style="list-&gtstyle-type: decimal; 4"><li>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</li>
Out[[File: 5pi3b-img278.png|800px]]</ol><ol start="6" style="list-style-type: decimal;"><li><p>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<br />[[File: pi3b-img279.png|1200px]]</p></li><li><p>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 &quot;I have agreed and read&gtquot; 5^CUser Agreement &quot;, and then click&quot; Enter the panel &quot; You can enter the Bt-Panel</p></li>
[[File:pi3b-img280.png|1200px]]</ol><span idol start="8" style="pwmlist-teststyle-methodtype: decimal;"><li>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.</spanli>=== PWM test method ===
# From [[File:pi3b-img281.png|1200px]]</ol><ol start="9" style="list-style-type: decimal;"><li>The final display interface is shown in the table figure below. You can intuitively see some status information of the development board Linux system, such as load state, CPU usage, the pwm11 available for Orange Pi 3Bmemory usage and storage space usage</li>
[[File:pi3b-img270img282.png|575x160px1200px]]</ol><ol start="10" style="list-style-type: decimal;"><li>More functions of the Bt-Panel can refer to the following information to explore by yourself</li>
{| class="wikitable" style="width:800px;" |-| Manual: [http://docs.bt.cn '''In the Linux system, the pwm in 40pin is closed by default, and it needs to be opened manually to usehttp://docs.bt.cn''']
Forum address: [https://www.bt.cn/bbs '''Add the configuration of the red font part below to the https:/boot/orangepiEnvwww.txt, and then restart the Linux system to open the pwm11bt.cn/bbs''']
orangepi@orangepiGitHub Link:~$ '''sudo vim https:/boot/orangepiEnvgithub.txtcom/aaPanel/BaoTa'''|}</ol><span id="set-the-chinese-environment-and-install-chinese-input-method"></span>
'''overlays=pwm11-m1'''= Set the Chinese environment and install Chinese input method ==
<ol start{| class="2wikitable" style="listbackground-style-typecolor:#ffffdc;width: decimal800px;">|-| <libig>After opening a pwm, a pwmchipX (X is a specific number) will be available in'''/sys/class/pwm/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.'''</li></olbig>|}
orangepi@orangepi:~$ '''ls <span id="debian-system-installation-method"></sys/class/pwm/'''span>=== Debian system installation method ===
pwmchip0 pwmchip1<ol style="list-style-type: decimal;"><li><p>First set the default '''locale''' as Chinese</p><ol style="list-style-type: lower-alpha;"><li>Enter the command below to start configured '''locale'''</li>
{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo dpkg-reconfigure locales'''|}</ol><ol start="32" style="list-style-type: decimallower-alpha;"><li><p>Which pwmchip corresponds to pwm11 above? LetThen select 's first check out the output of '''ls /sys/class/pwm/ zh_CN.UTF-8 UTF-l8''' commandin the pop-up interface (to move up and down through the upper and lower direction buttons on the keyboard, as shown below: </p></li><li><p>The base address of select it through the pwm11 register is Fe6F0030. Then see space key, and finally move the output of cursor to '''ls /sys/class/pwm/ -l&lt;OK&gt;''' command, you can see that through the fe6f0030.pwm is connected to the pwmchip1TAB key, so then press the PWM11 corresponding pwmchip is pwmchip1</p>ENTER key )</li></ol>
[[File:pi3b-img283.png|1200px]]<div class/ol><ol start="3" style="figurelist-style-type: lower-alpha;"><li>Then set the default '''locale''' as '''zh_CN.UTF-8'''</li>
[[File:pi3b-img271img284.png|576x46px1200px]]</ol><ol start="4" style="list-style-type: lower-alpha;"><li>After exiting the interface, the '''locale''' settings will be started. The output displayed by the command line is shown below</li>{| class="wikitable" style="width:800px;" |-|RCUSorangepi@orangepi:~$_~VYM{4ZS]_L}DNZQR]]'''sudo dpkg-reconfigure locales'''
</div><ol start="5" style="list-style-type: decimal;"><li>Then use the following command to allow pwm11 to output Generating locales (this might take a 50Hz square wave (please switch to the root user first, and then execute the following commandwhile)</li></ol>...
root@orangepi:~# '''echo 0 &gt; /sys/class/pwm/pwmchip1/export'''en_US.UTF-8... done
root@orangepi:~# '''echo 20000000 &gt; /sys/class/pwm/pwmchip1/pwm0/period'''zh_CN.UTF-8... done
root@orangepiGeneration complete.|}</ol></li></ol><ol start="2" style="list-style-type:~# decimal;"><li>Then open '''echo 1000000 &gt; /sys/class/pwm/pwmchip1/pwm0/duty_cycleInput Method'''</li>
root@orangepi[[File:~# pi3b-img285.png]]</ol><ol start="3" style="list-style-type: decimal;"><li>Then select '''echo 1 &gt; /sys/class/pwm/pwmchip1/pwm0/enableOK'''</li>
[[File:pi3b-img272img286.png|575x346px]]</ol><ol start="4" style="list-style-type: decimal;"><li>Then select '''Yes'''</li>
[[File:pi3b-img287.png]]</ol><span idol start="how-to-install-and5" style="list-usestyle-wiringop-pythontype: decimal;"><li>Then select '''fcitx'''</spanli>== How to install and use Wiringop-Python ==
[[File:pi3b-img288.png]]</ol><ol start="6" style="list-style-type: decimal;"><li>Then select '''Wiringop-Python is the library of the Python language version of Wiringop. It is used to operate the development board's GPIO, I2C, SPI and UART hardware resources such as the development board in the Python program.OK'''</li>
[[File:pi3b-img289.png]]</ol><ol start="7" style="list-style-type: decimal;"><li><p>'''Please note that all <span style="color:#FF0000">Then restart the following command below is operated under Linux system to make the root user.configuration effective</span>'''</p></li><li><p>Then open '''Fcitx configuration'''</p></li>
[[File:pi3b-img290.png]]</ol><span idol start="wiringop9" style="list-pythonstyle-installation-methodtype: decimal;"><li>Then click the + of the position shown in the figure below</spanli>=== Wiringop-Python installation method ===
# First install the dependency package[[File:pi3b-img291.png]]</ol><ol start="10" style="list-style-type: decimal;"><li>Then search '''Google Pinyin''' and click '''OK'''</li>
root@orangepi:~# '''sudo apt-get update'''<div class="figure">
root@orangepi[[File:~# '''sudo aptpi3b-get -y install git swig python3-dev python3-setuptools'''img292.png]]
</div></ol><ol start="211" style="list-style-type: decimal;"><li>Then use the following command put '''Google Pinyin''' to download the source code of wiringOP-Pythonfront</li></ol>
'''Note that the following git clone[[File:pi3b--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 problemsimg293.'''png]]
[[File:pi3b-img294.png]]</ol><ol start="12" style="list-style-type: decimal;"><li>Then open the '''If there is a problem with the download code from GitHub, you can use the Wiringop-Python source code that comes with the Linux image directly, and the storage location is:/usr/src/wiringOP-PythonGeany'''editor to test the Chinese input method</li>
root@orangepi[[File:~# '''git clone pi3b--recursive https://githubimg295.compng]]</orangepiol><ol start="13" style="list-style-xunlongtype: decimal;"><li>The Chinese input method test is shown below</wiringOP-Python -b next'''li>
root[[File:pi3b-img296.png]]</ol><ol start="14" style="list-style-type: decimal;"><li><p>You can switch the Chinese and English input method through the '''Ctrl+Space''' shortcut</p></li><li><p>If the entire system is required as Chinese, the variables in '''/etc/default/locale''' can be set to '''zh_CN.UTF-8'''</p></li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~# $ '''cd wiringOP-Pythonsudo vim /etc/default/locale'''
root@orangepi:~/wiringOP-Python<p># '''git submodule File generated by update --init --remote'''locale</p>
LC_MESSAGES='''<ol start="3" span style="list-style-typecolor: decimal;#FF0000"><li>Then use the following command to compile wiringOPzh_CN.UTF-Python and install it into the Linux system of the development board</li>8</olspan>'''
root@orangepi:~# LANG='''cd wiringOP<span style="color:#FF0000">zh_CN.UTF-Python8</span>'''
root@orangepiLANGUAGE='''<span style="color:~#FF0000">zh_CN.UTF-8</wiringOP-Python# span>'''python3 generate|}</ol><ol start="16" style="list-style-bindings.py &gttype: decimal; bindings.i"><li>Then '''<span style="color:#FF0000">restart the system</span>'''to see the system displayed as Chinese</li>
root@orangepi[[File:~pi3b-img297.png]]</wiringOPol><span id="the-installation-method-of-ubuntu-Python# '''sudo python3 setup20.py install'''04-system"></span>
<ol start="4" style="list-style-type: decimal;"><li>Then enter the following command= The installation method of Ubuntu 20. 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</li></ol>04 system ===
root@orangepi:~/wiringOP-Python# First open '''python3 -c &quot;import wiringpi; help(wiringpi)&quot;Language Support'''
Help on module wiringpi::[[File:pi3b-img298.png]]
NAME<ol start="2" style="list-style-type: decimal;"><li>Then find '''Chinese (China)''' option</li>
wiringpi[[File:pi3b-img299.png]]</ol><ol start="3" style="list-style-type: decimal;"><li>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: </li>
DESCRIPTION[[File:pi3b-img300.png]]
{| class="wikitable" style="background-color:# This file was automatically generated by SWIG (httpffffdc;width:800px;" |-| <big>'''Note that this step is not easy to drag, please try more patiently.'''</big>|}</ol><ol start="4" style="list-style-type: decimal;"><li>Then select the '''Apply System-Wide''' to apply the Chinese settings to the entire system</www.swig.org).li>
# Version 4[[File:pi3b-img301.0.2png]]</ol><ol start="5" style="list-style-type: decimal;"><li>Then set the '''Keyboard input method system''' to '''fcitx'''</li>
[[File:pi3b-img302.png]]</ol><ol start="6" style="list-style-type: decimal;"><li><p>'''<span style="color:#FF0000">Then restart the Linux system to make the configuration effective</span>'''</p></li><li><p>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.</p></li>
# Do not make changes to this file unless you know what you are doing[[File:pi3b-img303.png]]</ol><ol start="8" style="list-style-modifytype: decimal;"><li>Then you can see that the desktop is displayed as Chinese</li>
# [[File:pi3b-img304.png]]</ol><ol start="9" style="list-style-type: decimal;"><li>Then we can open the '''Geany''' to test Chinese input method , and the way to open is shown in the SWIG interface file instead.figure below</li>
[[File:pi3b-img305.png]]</ol><ol start="510" style="list-style-type: decimal;"><li><p>Test whether After opening '''Geany''', the Wiringop-Python default is installed successfully under an English input method. We can switch into Chinese input method through the Python command line is shown below: </p><ol style="list-style-type: lower-alpha;"><li>First use the Python3 command to '''Ctrl+Space''' shortcut keys, and then we can enter the command line mode of Python3Chinese</li></ol></li></ol>
root@orangepi[[File:~# '''python3'''pi3b-img306.png]]</ol><span id="the-installation-method-of-ubuntu-22.04-system"></span>
<ol start="2" style="list-style-type: lower-alpha;"><li>Then import the Python module = The installation method of WiringPi</li></ol>ubuntu 22.04 system ===
&gt;&gt;&gt; # First open '''import wiringpi;Language Support'''
<ol start="3" style="list-style-type: lower-alpha;"><li>Enter the following command to view the help information of Wiringop:[[File:pi3b-Python, and press the '''q''' key to exit the interface of the help information</li></ol>img298.png]]
&gt;&gt;&gt<ol start="2" style="list-style-type: decimal; "><li>Then find '''helpChinese (wiringpiChina)'''option</li>
Help on module wiringpi[[File:pi3b-img307.png]]</ol><ol start="3" style="list-style-type: decimal;"><li>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: </li>
NAME[[File:pi3b-img308.png]]
wiringpi{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''Note that this step is not easy to drag, please try more patiently.'''</big>|}</ol><ol start="4" style="list-style-type: decimal;"><li>Then select the '''Apply System-Wide''' to apply the Chinese settings to the entire system</li>
DESCRIPTION[[File:pi3b-img309.png]]</ol><ol start="5" style="list-style-type: decimal;"><li><p>'''<span style="color:#FF0000">Then restart the Linux system to make the configuration effective</span>'''</p></li><li><p>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</p></li>
# This file was automatically generated by SWIG (http[[File:pi3b-img303.png]]</ol><ol start="7" style="list-style-type: decimal;"><li>Then you can see that the desktop is displayed as Chinese</www.swig.org).li>
# Version 4[[File:pi3b-img304.0.2png]]</ol><ol start="8" style="list-style-type: decimal;"><li>Then open the Fcitx5 configuration program</li>
#[[File:pi3b-img310.png]]</ol><ol start="9" style="list-style-type: decimal;"><li>Then choose to use Pinyin input method</li>
# Do not make changes to this file unless you know what you are doing--modify<div class="figure">
# the SWIG interface file instead[[File:pi3b-img311.png]]
CLASSES</div></ol><ol start="10" style="list-style-type: decimal;"><li>The interface after the selection is shown below, then click OK</li>
builtins[[File:pi3b-img312.objectpng]]</ol><ol start="11" style="list-style-type: decimal;"><li>Then we can open the '''Geany''' to test Chinese input method, and the way to open is shown in the figure below</li>
GPIO[[File:pi3b-img305.png]]</ol><ol start="12" style="list-style-type: decimal;"><li>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</li>
I2C[[File:pi3b-img313.png]]</ol><span id="how-to-remotely-log-in-to-the-linux-system-desktop-method"></span>
Serial== How to remotely log in to the Linux system desktop method ==
nes{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''Ubuntu Gnome Wayland image does not support Nomachine and VNCs introduced here to remotely log in to the desktop.'''</big>|}
class GPIO(builtins.object)<span id="use-nomachine-remote-login"></span>=== Use nomachine remote login ===
{| GPIO(pinmodeclass=0)"wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''Make sure the Ubuntu or Debian system installed on the development board is a <span style="color:#FF0000">desktop version</span>. 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: '''
'''https://knowledgebase.nomachine.com/DT10R00166'''</big>|}{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''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.'''</big>|}{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''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.'''</big>|}
<ol style="list-style-type: decimal;"><li><p>First download the nomachine software Linux '''<span style="color:#FF0000">ARM64</span>''' DEB version of the installation package, and then install it in the Linux system of the development board</p><ol style="list-style-type: lower-alpha;"><li>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: </li>{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''Note that this download link may change, please recognize the DEB package of the ARMV8/ARM64 version.'''</big>|}{| class="wikitable" style="width:800px;" |-| [https://www.nomachine.com/download/download&gt;id=112&gt;s=ARM '''https://downloads.nomachine.com/download/?id=118&gtamp;distro=ARM''']|}
[[File:pi3b-img314.png]]</ol><span idol start="pin-gpio2" style="list-portstyle-testtype: lower-1alpha;"><li>In addition, you can also download the installation package to '''NoMachine''' in the '''official tools'''.</spanli>=== 40pin GPIO port test ===
'''Wiringop[[File:pi3b-Python is the same as Wiringopimg315. You can also determine which GPIO pink can be determined by specifying the WPI number. Because there is no command to check the WPI number in Wiringop-Python, you can only check the board WPI number and physical physical physics through the GPIO command in Wiringop. The corresponding relationship of the pin.'''png]]
<div class="figure">First enter the '''remote login software-Nomachine''' folder
[[File:pi3b-img258img316.png|575x355px|66AC(IBG%N8L@Y7(1BZPS`N]]
</div># Below Then download the No. 7 pin — corresponding to GPIO4_a4 -corresponding WPI serial number 2 -to demonstrate how to set the height ARM64 version of the GPIO port [[File:pi3b-img259.png|576x120px]]DEB installation package
[[File:pi3b-img317.png]]
</ol>
<ol start="3" style="list-style-type: lower-alpha;">
<li><p>Then upload the downloaded '''nomachine_x.x.x_x_arm64.deb''' to the Linux system of the development board.</p></li>
<li><p>Then use the following command to install '''NoMachine''' in the Linux system of the development board</p></li>
{| class="wikitable" style="width:800px;"
|-
|
orangepi@orangepi:~$ '''sudo dpkg -i nomachine_x.x.x_x_arm64_arm64.deb'''
|}
</ol>
</li></ol>
<ol start="2" style="list-style-type: decimal;">
<li><p>The steps Then download the nomachine software Windows version of the command test are installation package, the download address is shown below directly: </pli><ol {| class="wikitable" style="listbackground-style-typecolor:#ffffdc;width: lower-alpha800px;">|-| <libig>First set the GPIO port to the output mode. The first parameter of the '''pinModeNote that this download link may change.''' function is the serial number of the wpi corresponding to the pin, and the second parameter is the GPIO mode</li></olbig></li></ol>|}{| class="wikitable" style="width:800px;" root@orangepi:~/wiringOP|-Python# | '''python3 -c &quot;import wiringpi; \https://downloads.nomachine.com/download/?id=9'''|}
[[File:pi3b-img318.png]]</ol><ol start="3" style="list-style-type: decimal;"><li><p>Then install nomachine in Windows. '''Please restart the computer after installation'''</p></li><li><p>Then open '''from wiringpi import GPIO; wiringpi.wiringPiSetup() ; \NoMachine'''in Window</p></li>
'''wiringpi[[File:pi3b-img319.pinMode(2png]]</ol><ol start="5" style="list-style-type: decimal;"><li>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, GPIOand then click the location shown in the red box below in the figure below.OUTPUT) ; &quot;'''Start log in to the Linux system desktop of the development board</li>
[[File:pi3b-img320.png]]</ol><ol start="26" style="list-style-type: lower-alphadecimal;"><li>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 successfulclick '''OK'''</li></ol>
root@orangepi[[File:~pi3b-img321.png]]</wiringOPol><ol start="7" style="list-style-Python# type: decimal;"><li>Then enter the username and password of the Linux system in the corresponding position in the figure below, and then click '''python3 -c &quot;import wiringpi; \OK'''to start logging in</li>
'''from wiringpi import GPIO; wiringpi.wiringPiSetup() ;\'''<div class="figure">
'''wiringpi[[File:pi3b-img322.digitalWrite(2, GPIO.LOW)&quot;'''png]]
</div></ol><ol start="38" style="list-style-type: lower-alphadecimal;"><li><p>Then set click OK in the GPIO port output high level. After settingnext interface</p></li><li><p>Finally, you can use see the value desktop of the voltage of the pins with a multimeter. If it is 3.3V, it means that the high development board Linux system</p><p>[[File:pi3b-power flat is successfulimg323.png]]</p></li></ol>
root@orangepi:~/wiringOP<span id="use-vnc-Python# '''python3 remote-c &quot;import wiringpi; \'''login"></span>
'''from wiringpi import GPIO; wiringpi.wiringPiSetup() ;\'''=== Use VNC remote login ===
{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''wiringpi.digitalWrite(2Before operation, please ensure that the Windwos computer and the development board are in the same local area network, GPIOand you can log in to the Ubuntu or Debian system of the development board normally.HIGH)&quot;'''
'''<ol start="3" span style="list-style-typecolor: decimal;#FF0000"><li><p>The steps of testing in the command line of Python3 are shown below: </p><ol style="list-style-type: lower-alpha;"><li>First Ubuntu 20.04 tests many problems with VNC, please do not use the Python3 command to enter the command line mode of Python3this method.</lispan>'''</olbig></li></ol>|}
root@orangepi:~# First run the '''python3set_vnc.sh''' script settings, and '''<span style="color:#FF0000">remember to add Sudo permissions</span>'''
<ol start::{| class="2wikitable" style="list-style-typewidth: lower-alpha800px;"><li>Then import the Python module of WiringPi</li></ol>|-| orangepi@orangepi:~$ '''sudo set_vnc.sh'''
&gt;&gt;&gt; '''import wiringpi'''You will require a password to access your desktops.
&gt;&gt;&gt; '''from wiringpi import GPIO'''
Password: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '''<ol start="3" span style="list-style-typecolor: lower-alpha;#FF0000">#Set the VNC password here, 8 -bit characters<li/span>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.</li></ol>
Verify: &gtnbsp;&gtnbsp;&gtnbsp;&nbsp;&nbsp;&nbsp; '''wiringpi.wiringPiSetup()<span style="color:#FF0000">#Set the VNC password here, 8 -bit characters</span>'''
0Would you like to enter a view-only password (y/n)? '''<span style="color:#FF0000">n</span>'''
&gt;&gt;&gt; '''wiringpixauth: file /root/.pinMode(2, GPIO.OUTPUT)'''Xauthority does not exist
<ol start="4" style="list-style-type: lower-alpha;">
<li>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.</li></ol>
&gt;&gt;&gt; '''wiringpi.digitalWrite(2, GPIO.LOW)'New 'X'desktop is orangepi3b:1
<ol start="5" style="list-style-type: lower-alpha;">
<li>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</li></ol>
&gt;&gt;&gt; '''wiringpiCreating default startup script /root/.digitalWrite(2, GPIO.HIGH)'''vnc/xstartup
<ol start="4" style="list-style-type: decimal;"><li>Wiringop-Python Sets GPIO high and low levels Starting applications specified in the Python code. For reference to the '''blink/root/.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</li><vnc/ol>xstartup
Log file is /root@orangepi/.vnc/orangepi3b:~/wiringOP-Python# '''cd examples'''1.log
root@orangepi:~/wiringOP-Python/examples# '''ls blink.py'''
'''blink.py'''Killing Xtightvnc process ID 3047
root@orangepi:~/wiringOP-Python/examples'''# python3 blink.py'''
<span id="pin-spi-test-New 'X' desktop is orangepi3b:1"></span>=== 40pin SPI test ===
# From the schematic diagram of the 40pin interface, the SPI available for Orange Pi 3B is spi3
[[File:pi3b-img264Starting applications specified in /root/.png|577x193px]]vnc/xstartup
'''In the Linux system, the spi3 in 40pin Log file is closed by default, and it needs to be opened manually to use.''' '''Add the configuration of the red font part below to the /bootroot/orangepiEnv.txt, and then restart the Linux system to open the spi4.''' orangepi@orangepivnc/orangepi3b:~$ '''sudo vim /boot/orangepiEnv1.txt'''log'''overlays=spi3-m0-cs0-spidev'''|}
<ol start="2" style="list-style-type: decimal;">
<li>First check whether there is a '''spidev3.0''' device node in <p>The steps of using MobaxTerm software to connect the development board Linux system. If it existsdesktop are shown below: </p><ol style="list-style-type: lower-alpha;"><li>First click Session, then select VNC, it means that then fill in the SPI3 has been set IP address and can be used directlyport of the development board, and finally click OK to confirm</li></ol>
orangepi@orangepi:~$ '''ls /dev/spidev3.0'''<div class="figure">
/dev/spidev3[[File:pi3b-img324.0png]]
<ol start="3" style="list-style-type: decimal;"><li><p/div>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: </pol><ol start="2" style="list-style-type: lower-alpha;"><li><p>'''--channel''': Specify Then enter the channel number password of SPI</p></li><li><p>'''--port''': Specify the port number of SPI</p>previously set VNC</li></ol></li><li><p>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</p></li></ol>
root@orangepi[[File:~pi3b-img325.png]]</ol><ol start="3" style="list-style-type: lower-alpha;"><li><p>The interface after the login is shown as shown in the figure below, and then the desktop of the Linux system can be remotely operated</wiringOPp><p>[[File:pi3b-Python# '''cd examples'''img326.png]]</p></li></ol></li></ol>
root@orangepi:~/wiringOP<span id="some-programming-language-tests-supported-by-linux-Pythonsystem"></examples# '''python3 spidev_test.py \'''span>
'''--channel 3 --port 0'''== Some programming language tests supported by Linux system ==
spi mode: 0x0<span id="debian-bullseye-system"></span>=== Debian Bullseye system ===
max speed<ol style="list-style-type: 500000 Hz (500 KHz)decimal;"><li><p>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</p><ol style="list-style-type: lower-alpha;"><li>The version of the gcc is shown below</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''gcc --version'''
Opening device /dev/spidev3gcc (Debian 10.02.1-6) 10.2.1 20210110
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 |Copyright (C) 2020 Free Software Foundation, Inc......@.......…|
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 |This is free software; see the source for copying conditions.............….|There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.|}</ol><ol start="52" style="list-style-type: decimallower-alpha;"><li>Then use the TXD (No. 19 pins in the 40Pin interface) and RXD (No. 21 pins in the 40pin interface) Write C language of the DuPont line short connection SPI3'''Hello_world. Like sending and receiving data, it means that the SPI3 loop test is normalc''' program</li></ol>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''vim hello_world.c'''
root@orangepi:~/wiringOP-Python# '''cd examples'''
root@orangepi:~/wiringOP-Python/examples<p># '''python3 spidev_testinclude &lt;stdio.py \'''h&gt;</p>
'''--channel 3 --port 0'''int main(void)
spi mode: 0x0{
max speed: 500000 Hz printf(500 KHz&quot;Hello World!\n&quot;);
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 |......@.......…|:return 0;
RX }| FF FF FF FF FF FF }</ol><ol start="3" style="list-style-type: lower-alpha;"><li>Then compile and run '''40 00 00 00 00 95hello_world.c''' FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D </li>{| class="wikitable" style="width:800px;" |-|......orangepi@orangepi:~$ '''gcc -o hello_world hello_world.......…|c'''
<span id="pin-i2c-test-1"><orangepi@orangepi:~$ '''./span>=== 40pin I2C test ===hello_world'''
Hello World!|}</ol></li></ol><ol start="52" style="list-style-type: decimal;"><li>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<p>Debian BullSeye Default with Python3</p><ol style="list-style-type: lower-alpha;"><li>The specific version of Python is shown below</olli>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''python3'''
[[File'''Python 3.9.2''' (default, Feb 28 2021, 17:03:pi3b-img266.png|576x160px]]44)
'''It can be seen from the above table that I2C4_M0 and SPI3_M0 are pins[GCC 10. The two cannot be opened at the same time2. I2C3_M0 and UART3_M0 are also reused. The two cannot be opened at the same time'''1 20210110] on linux
'''In the Linux systemType &quot;help&quot;, the I2C in 40Pin is closed by default&quot;copyright&quot;, and it needs to be opened manually to use&quot;credits&quot; or &quot;license&quot; for more information.'''
&gt;&gt;&gt;|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li>'''Add the configuration of the red font part below to the/boot/orangepiEnvhello_world.txt, and then restart the Linux system to open the I2C2, i2C3, and I2C4 at the same time. If you only need to open one, then fill py''' program in onePython language</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''vim hello_world.py'''
print('Hello World!')|}</ol><ol start="3" style="list-style-type: lower-alpha;"><li>The results of running '''hello_world.py''' are shown below</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo vim /boot/orangepiEnvpython3 hello_world.txtpy'''
'''overlays=i2c2-m1 i2c3-m0 i2c4-m0'''Hello World!|}</ol></li></ol><ol start="63" style="list-style-type: decimal;"><li>After starting the Linux system, first confirm the I2C device node under/dev.</lip>Debian Bullseye's compilation tool and operating environment that is not installed in Java by default</olporangepi@orangepi:~# '''ls /dev/i2c-*''' /dev/i2c-0 '''/dev/i2c-2''' '''/dev/i2c-3''' '''/dev/i2c-4''' /dev/i2c-6 <ol start="7" style="list-style-type: decimallower-alpha;"><li>Then connect a I2C device on You can use the I2C pin of the 40PIN connectorfollowing command to install OpenJDK. Here The latest version in Debian Bullseye is an example of the DS1307 RTC module.openjdk-17</li></ol> {| class="wikitable" style="width:800px;"
|-
|orangepi@orangepi:~$ '''sudo apt install -y openjdk-17-jdk'''| }</ol><ol start="2" style="textlist-alignstyle-type: leftlower-alpha;"| i2c2-m1><li>After installation, you can check the version of Java</li>{| styleclass="text-align: left;wikitable"| i2c3-m0| style="text-alignwidth: left800px;"| i2c4-m0
|-
| Sda Pinorangepi@orangepi:~$ '''java --version'''| }</ol><ol start="3" style="textlist-style-aligntype: leftlower-alpha;"| Corresponding to No><li>Edit the '''hello_world. 3 pinjava''' of the Jave version</li>{| styleclass="text-align: left;wikitable"| Corresponding to No. 27 pin| style="text-alignwidth: left800px;"| Corresponding to No. 19 pin
|-
| Sck Pin| style="text-alignorangepi@orangepi: left;"| Corresponding to No~$ '''vim hello_world. 5 pin| style="text-align: left;"| Corresponding to No. 28 pin| style="text-align: left;"| Corresponding to No. 23 pin|-| Vcc Pin| style="text-align: left;"| Corresponding to No. 1 pin| style="text-align: left;"| Corresponding to No. 1 pin| style="text-align: left;"| Corresponding to No. 1 pin|-| Gnd Pin| style="text-align: left;"| Corresponding to No. 6 pin| style="text-align: left;"| Corresponding to No. 6 pin| style="text-align: left;"| Corresponding to No. 6 pin|}java'''
[[File:pi3b-img273.png|180x153px]]public class hello_world
<ol start="8" style="list-style-type: decimal;"><li>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</li></ol>{
orangepi@orangepi:~$ sudo i2cdetect -y 2 #i2c2 commandpublic static void main(String[] args)
orangepi@orangepi:~$ sudo i2cdetect -y 3 #i2c3 command{
orangepi@orangepi:~$ sudo i2cdetect -y 4 #i2c4 command:System.out.println(&quot;Hello World!&quot;);
<div class="figure">:}
[[File}|}</ol><ol start="4" style="list-style-type:pi3blower-img274alpha;"><li>Then compile and run '''hello_world.pngjava'''</li>{|464x174pxclass="wikitable" style="width:800px;" |V-| orangepi@(61Lorangepi:~0})Q`8VLBCAYEP[2]]$ '''javac hello_world.java'''
</div><ol start="9" style="list-style-typeorangepi@orangepi: decimal;"><li>You can then run the time of the ds ~$ '''ds1307.pyjava hello_world''' test program in '''examples''' to read the RTC time</li></ol>
root@orangepi:~Hello World!|}</wiringOPol></li></ol><span id="ubuntu-focal-Python# '''cd examples'''system"></span>
root@orangepi:~/wiringOP-Python/examples# '''python3 ds1307.py --device \'''=== Ubuntu Focal system ===
<ol style="list-style-type: decimal;"><li><p>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.</p><ol style="list-style-type: lower-alpha;"><li>The version of the gcc is shown below</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''&quot;/dev/i2cgcc --4&quot;version'''
Thu 2023gcc (Ubuntu 9.4.0-01-05 14:57:551ubuntu1~20.04.1) 9.4.0
Thu 2023-01-05 14:57:56Copyright (C) 2019 Free Software Foundation, Inc.
Thu 2023-01-05 14:57:57This is free software; see the source for copying conditions. There is NO
^warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li>'''hello_world.c''' program to write Clanguage</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''vim hello_world.c'''
exit<p>#include &lt;stdio.h&gt;</p>
<span id="pins-uart-test."></span>
=== 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 busint main(void)
[[File:pi3b-img268.png|575x160px]]{
'''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''':printf(&quot;Hello World!\n&quot;);
'''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''':return 0;
}|}</ol><ol start="3" style="list-style-type: lower-alpha;"><li>Then compile and run '''hello_world.c'''</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo vim /boot/orangepiEnvgcc -o hello_world hello_world.txtc'''
orangepi@orangepi:~$ '''overlays=uart3-m0 uart7-m2 uart9-m2./hello_world'''
Hello World!
|}
</ol>
</li></ol>
<ol start="2" style="list-style-type: decimal;">
<li>After entering the Linux system, first confirm whether there is a device node corresponding <p>Ubuntu Focal defaults to UART underinstall Python3</devp><ol style="list-style-type: lower-alpha;"></li>Python3 specific version is shown below</olli>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''python3'''
orangepi@orangepiPython 3.8.10 (default, Nov 14 2022, 12:~# '''ls /dev/ttyS*'''59:47)
/dev/ttyS1 '''/dev'''/'''ttyS3 /dev/ttyS7 /dev/ttyS9'''[GCC 9.4.0] on linux
<ol start="3" style="list-style-type: decimalType &quot;help&quot;, &quot;copyright&quot;"><li>Then start testing the UART interface, and first use the RX and TX of the UART interface to be tested by DuPont</li></ol>&quot;credits&quot; or &quot;license&quot; for more information.
&gt;&gt;&gt;|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li>'''hello_world.py''' program in Python language</li>{| class="wikitable" style="width:800px;"
|-
|orangepi@orangepi:~$ '''vim hello_world.py''' print('Hello World!')| }</ol><ol start="3" style="textlist-style-aligntype: leftlower-alpha;"| uart3><li>The results of running '''hello_world.py''' are shown below</li>{| styleclass="text-align: left;wikitable"| uart7| style="text-alignwidth: left800px;"| uart9
|-
| Tx Pinorangepi@orangepi:~$ '''python3 hello_world.py''' Hello World!| }</ol></li></ol><ol start="3" style="textlist-style-aligntype: leftdecimal;"| Corresponding to ><li><p>Ubuntu Focal's compilation tool and operating environment without the 28 pininstallation of Java default</p>| <ol style="textlist-alignstyle-type: leftlower-alpha;"| Corresponding ><li>You can use the following command to the 16 pininstall '''openjdk-17'''</li>{| class="wikitable" style="text-alignwidth: left800px;"| Corresponding to the 29 pin
|-
| Rx Pin| style="textorangepi@orangepi:~$ '''sudo apt install -align: left;"| Corresponding to the 27 pin| style="texty openjdk-align: left;"| Corresponding to the 15 pin| style="text17-align: left;"| Corresponding to the 7 pinjdk'''
|}
</ol>
<ol start="2" style="list-style-type: lower-alpha;">
<li>After installation, you can check the version of Java</li>
{| class="wikitable" style="width:800px;"
|-
|
orangepi@orangepi:~$ '''java --version'''
<ol start="4" style="list-style-type: decimal;"><li><p>Use the '''serialTestopenjdk 17.py''' program in Examples to test the loop function of the serial port0. If you can see the printing below, it means that the serial communication is normal</p><ol style="list-style2 2022-type: lower01-alpha;"><li>Test UART3</li></ol></li></ol>18
root@orangepi:~/wiringOP-Python/examples# '''python3 serialTestOpenJDK Runtime Environment (build 17.0.py 2+8-Ubuntu-device \'''120.04)
OpenJDK 64-Bit Server VM (build 17.0.2+8-Ubuntu-120.04, mixed mode, sharing)|}</ol><ol start="3" style="list-style-type: lower-alpha;"><li>Edit the '''hello_world.java'''&quot;of Jave version</dev/ttyS3&quotli>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''vim hello_world.java'''
Out: 0: -&gt; 0public class hello_world
Out: 1: -&gt; 1 Out: 2: -&gt; 2{
Out: 3: -&gt; 3public static void main(String[] args)
Out: 4:^C{
exit::System.out.println(&quot;Hello World!&quot;);
<ol start="2" style="list-style-type: lower-alpha;"><li>Test UART7</li></ol>}
root}|}</ol><ol start="4" style="list-style-type: lower-alpha;"><li>Then compile and run '''hello_world.java'''</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~/wiringOP-Python/examples# $ '''python3 serialTestjavac hello_world.py --device \java'''
orangepi@orangepi:~$ '''&quot;/dev/ttyS7&quot;java hello_world'''
Out: 0: Hello World!|}</ol></li></ol><span id="ubuntu-&gt; 0jammy-system"></span>
Out: 1: -&gt; 1=== Ubuntu jammy system ===
Out<ol style="list-style-type: 2decimal;"><li><p>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</p><ol style="list-style-type: lower-&gtalpha; 2"><li>The version of the gcc is shown below</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''gcc --version'''
Out: 3: gcc (Ubuntu 11.2.0-&gt; 319ubuntu1) '''11.2.0'''
Out: 4:^Copyright (C) 2021 Free Software Foundation, Inc.
exitThis is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.|}</ol><ol start="32" style="list-style-type: lower-alpha;"><li>Test UART9Write the '''hello_world.c''' program of c language</li></ol>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''vim hello_world.c'''
root@orangepi:~/wiringOP-Python/examples<p># '''python3 serialTestinclude &lt;stdio.py --device \'''h&gt;</p>
'''&quot;/dev/ttyS9&quot;'''
Out: 0: -&gt; 0int main(void)
Out: 1: -&gt; 1{
Out: 2: -printf(&quot;Hello World!\n&gtquot;); 2
Out: 3: -&gt; 3
Out: 4:^Creturn 0;
exit}|}</ol><ol start="3" style="list-style-type: lower-alpha;"><li>Then compile and run '''hello_world.c'''</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''gcc -o hello_world hello_world.c'''
<span id="hardware-watch-the-door-dog-test"><orangepi@orangepi:~$ '''./span>== Hardware watch the door dog test ==hello_world'''
The WatchDog_test program is pre -installed in the Linux system released by Orange PI, which can be tested directly.Hello World!|}</ol>The method of running the WatchDog_test program is shown below: </li></ol>
<ol start="2" style="list-style-type: decimal;">
<li><p>Ubuntu jammy is installed with Python3 by default</p>
<ol style="list-style-type: lower-alpha;">
<li><p>The second parameter 10 indicates the counting time of the door. If there Python3 specific version is no dog feeding in this time, the system will restart.</p>shown below</li><li><p>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</p></li></ol>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''python3'''
orangepi@orangepi:~$ Python '''sudo watchdog_test 3.10.4'''(main, Apr 2 2022, 09:04:19) [GCC 11.2.0] on linux
open successType &quot;help&quot;, &quot;copyright&quot;, &quot;credits&quot; or &quot;license&quot; for more information.
options is 33152,identity is sunxi&gt;&gt;&gt;|}</ol><ol start="2" style="list-wdtstyle-type: lower-alpha;"><li>Edit '''hello_world.py''' program in Python language</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''vim hello_world.py'''
put_usr return,if 0,successprint('Hello World!')|}</ol><ol start="3" style="list-style-type:0lower-alpha;"><li>The results of running '''hello_world.py''' are shown below</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''python3 hello_world.py'''
The old reset time isHello World!|}</ol></li></ol><ol start="3" style="list-style-type: 16decimal;"><li><p>Ubuntu jammy defaults to compile tools and operating environments that are not installed in Java</p><ol style="list-style-type: lower-alpha;"><li>You can use the following command to install openjdk-18</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo apt install -y openjdk-18-jdk'''|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li>After installation, you can check the version of Java</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''java --version'''
return ENOTTY,if openjdk 18-1,success:0ea 2022-03-22
return ENOTTY,if OpenJDK Runtime Environment (build 18-ea+36-Ubuntu-1,success:0)
put_user returnOpenJDK 64-Bit Server VM (build 18-ea+36-Ubuntu-1,if 0mixed mode,successsharing)|}</ol><ol start="3" style="list-style-type:0lower-alpha;"><li>Edit the '''hello_world.java''' of the Jave version</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''vim hello_world.java'''
put_usr return,if 0,success:0public class hello_world
keep alive{
keep alive:public static void main(String[] args)
keep alive:{
<span id="check-the-serial-number-of-the-rk3566-chip"></span>== Check the serial number of the RK3566 chip ==::System.out.println(&quot;Hello World!&quot;);
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.:}
}|}</ol><ol start="4" style="list-style-type: lower-alpha;"><li>Then compile and run '''hello_world.java'''</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''cat_serialjavac hello_world.shjava'''
Serial orangepi@orangepi: ~$ '''8fa18eaf489041f0java hello_world'''
<span id="the-method-of-downloading-and-installing-the-balenaetcher-version-of-arm64"></span>Hello World!== The method of downloading and installing the balenaEtcher version of arm64 ==|} <ol style="list-style-type: decimal;"><li><p>The download address of Balenaetcher ARM64 version is: </p><ol style="list-style-type: lower-alpha;"><li>The download address of the Deb installation package is shown below, and it needs to be installed to use</li></ol>
</li></ol>
<span id="qt-installation-method"></span>
https://github.com/Itai-Nelken/BalenaEtcher-arm/releases/download/v1.7.9/balena-etcher-electron_1.7.9+5945ab1f_arm64.deb== QT installation method ==
<ol start="2" style="list-style-type: lower-alpha;"><li>The download address of # Use the Appimage version that does not need following script to be installed is shown below: </li></ol>install QT5 and QT Creator
https://github.com/Itai:{| class="wikitable" style="width:800px;" |-Nelken/BalenaEtcher-arm/releases/download/v1.7.9/balenaEtcher-1.7.9+5945ab1f-arm64| orangepi@orangepi:~$ '''install_qt.AppImagesh'''|}
<div class="figure">
 
[[File:pi3b-img275.png|527x211px|IMG_256]]
 
</div>
<ol start="2" style="list-style-type: decimal;">
<li><p>How to install and use the deb The QT version of Balenaetcher: number will be automatically printed after installation</p>
<ol style="list-style-type: lower-alpha;">
<li>deb Ubuntu20.04 comes with QT version of Balenaetcher installation commands as shown below: '''5.12.8'''</li></ol></li></ol>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''install_qt.sh'''
orangepi@orangepi:~$ '''sudo apt install -y \'''......
'''--fix-broken QMake version 3./balena-etcher-electron_1.7.9+5945ab1f_arm64.deb'''1
Using Qt version '''<span style="color:#FF0000">5.12.8</span>''' in /usr/lib/aarch64-linux-gnu
|}
</ol>
<ol start="2" style="list-style-type: lower-alpha;">
<li>After the deb Ubuntu22.04 comes with QT version of Balenaetcher is installed, it can be opened in the Application'''5.15.3'''</li></ol>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''install_qt.sh'''
<div class="figure">......
[[File:pi3b-img89QMake version 3.png|507x249px|IMG_256]]1
Using Qt version '''<span style="color:#FF0000">5.15.3</span>''' in /usr/lib/aarch64-linux-gnu|}</divol>
<ol start="3" style="list-style-type: lower-alpha;">
<li>The interface after Balenaetcher is opened is shown below: Debian11 comes with QT version '''5.15.2'''</li></ol>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''install_qt.sh'''
<div class="figure">......
[[File:pi3b-img276QMake version 3.png|429x263px|IMG_256]]1
Using Qt version '''<span style="color:#FF0000">5.15.2</divspan>''' in /usr/lib/aarch64-linux-gnu|}</ol><ol start="34" style="list-style-type: decimallower-alpha;"><li><p>How to use the AppImage Debian12 comes with QT version of balenaEtcher: '''5.15.8'''</pli><ol {| class="wikitable" style="list-style-typewidth: lower-alpha800px;"><li>First add permissions to Balenaetcher</li></ol>|-| </li></ol>orangepi@orangepi:~$ '''install_qt.sh'''
orangepi@orangepi:~/Desktop$ '''chmod +x balenaEtcher-1.7.9+5945ab1f-arm64.AppImage'''...
<ol start="2" style="list-style-type: lower-alpha;"><li>Then select the AppImage QMake version balenaEtcher right -click the mouse, and then click Execute to open balenaEtcher</li></ol>3.1
[[FileUsing Qt version '''<span style="color:pi3b#FF0000">5.15.8</span>''' in /usr/lib/aarch64-linux-img277.pnggnu|145x118px]]}</ol></li></ol><ol start="3" style="list-style-type: decimal;"><li>Then you can see the QT Creator launch icon in '''Applications'''</li>
<span id="the[[File:pi3b-installation-method-of-the-bt-panel-linux-panel"></span>== The installation method of the Bt-Panel Linux panel ==img327.png]]
QT Creator can also be opened using the following command{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''qtcreator'''Bt|}{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-Panel Linux panel is a server management software that improves operation | <big>'''During the startup of QT 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 QT applications, if the [https://www.btfollowing error is displayed, ignore it.cn/new/indexThis error has no impact on application running.html 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/&amp;,size=2G/' /etc/fstablibGL error: failed to create dri screen'''
orangepi@orangepi:~$ '''sudo rebootlibGL error: failed to load driver: rockchip'''
<ol start="2" style="list-style-type: decimal;"><li>After restarting, you can see that the size of the'''/tmplibGL error: failed to create dri screen''' space has become 2G.</li></ol>
orangepi@orangepi'''libGL error:~$ failed to load driver: rockchip'''df </big>|}</ol><ol start="4" style="list-style-h | grep &quottype: decimal;"><li>The interface after QT Creator is opened is as follows</tmp&quot;'''li>
tmpfs 2[[File:pi3b-img328.0G 12K png]]</ol><ol start="5" style="list-style-type: decimal;"><li><p>The QT Creator version is shown below</p><ol style="list-style-type: lower-alpha;"><li>The default version of QT Creator in '''2Ubuntu20.0G04''' 1% is as follows</tmpli>
[[File:pi3b-img329.png]]</ol><ol start="32" style="list-style-type: decimallower-alpha;"><li>Then enter the following command The default version of QT Creator in the Linux system to start the installation of the Bt-Panel'''Ubuntu22.04''' is as follows</li></ol>
orangepi@orangepi[[File:~$ pi3b-img330.png]]</ol><ol start="3" style="list-style-type: lower-alpha;"><li>The default version of QT Creator in '''sudo install_bt_panel.shDebian11'''is as follows</li>
[[File:pi3b-img331.png]]</ol><ol start="4" style="list-style-type: decimallower-alpha;"><li>Then the pagoda installation program reminds whether to install the The default version of QT Creator in '''Bt-PanelDebian12''' to the'''/www''' folder, and enter y at this timeis as follows</li></ol>
+---------------------------------------------------------------[[File:pi3b-img332.png]]</ol></li></ol><ol start="6" style="list-style-type: decimal;"><li><p>Then set QT</p><ol style="list-style-type: lower-alpha;"><li>First open '''Help'''-&gt;'''About Plugins...'''</li>
| Bt[[File:pi3b-WebPanel FOR CentOSimg333.png]]</Ubuntuol><ol start="2" style="list-style-type: lower-alpha;"><li>Then remove the check box for '''ClangCodeModel'''</Debianli>
+----------------------------------------------------------------[[File:pi3b-img334.png]]</ol><ol start="3" style="list-style-type: lower-alpha;"><li><p>'''<span style="color:#FF0000">Restart QT Creator after the Settings are complete</span>'''</p></li><li><p>Then make sure that QT Creator uses the GCC compiler, if the default is Clang, change it to GCC</p></li>{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''Debian12 Please skip this step.'''</big>|}
| Copyright © 2015[[File:pi3b-2099 BT-SOFT(http://www.bt.cn) All rights reservedimg335.png]]
+-------------------------------------------------------------------[[File:pi3b-img336.png]]</ol></li></ol><ol start="7" style="list-style-type: decimal;"><li>You can then open a sample code</li>
| The WebPanel URL will be http[[File:pi3b-img337.png]]</ol><ol start="8" style="list-style-type: decimal;"><li>Clicking on the example code will automatically open the corresponding instruction document, you can carefully read the instructions</SERVER_IP:8888 when installed.li>
+-------------------------------------------------------------------[[File:pi3b-img338.png]]</ol><ol start="9" style="list-style-type: decimal;"><li>Then click '''Configure Project'''</li>
Do you want to install Bt[[File:pi3b-img339.png]]</ol><ol start="10" style="list-style-Panel type: decimal;"><li>Then click the green triangle in the lower left corner to compile and run the sample code</www directory now?(y/n): '''y'''li>
[[File:pi3b-img340.png]]</ol><ol start="511" style="list-style-type: decimal;"><li>Then you have to wait patiently. When you see After waiting for a period of time, the printing information below interface shown in the terminal outputfollowing figure will pop up, it means which indicates 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 speedQT can compile and run normally</li></ol>
[[File:pi3b-img278img341.png|576x233px]]</ol><ol start="12" style="list-style-type: decimal;"><li>Reference documents</li>{| class="wikitable" style="width:800px;" |-| '''https://wiki.qt.io/Install_Qt_5_on_Ubuntu'''
<ol start="6" style="list-style-type: decimal;"><li><p>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<br />[[Filehttps:pi3b-img279.png|575x281px]]</p></li><li><p>After successfully logging in to the pagoda, the following welcome interface will pop updownload. First, please take the intermediate user notice to read to the bottom, and then you can choose &quot;I have agreed and read&quot; User Agreement &quot;, and then click&quot; Enter the panel &quot; You can enter the Bt-Panel<qt.io/p><archive/li></ol>qtcreator'''
[[File'''https:pi3b-img280//download.qt.pngio/archive/qt'''|575x317px]]}</ol><span id="ros-installation-method"></span>
<ol start="8" style="list-style-type: decimal;"><li>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.</li></ol>ROS Installation Method ==
[[File:pi3b<span id="how-img281to-install-ros-1-noetic-on-ubuntu-20.04"></span>=== How to install ROS 1 Noetic on Ubuntu 20.png|576x300px]]04 ===
<ol start="9" style="list-style-type: decimal;"><li># The final display interface current active version of ROS 1 is shown in the figure below. You can intuitively see some status information of the development board Linux system, such as load statefollows, CPU usage, memory usage and storage space usage</li></ol>the recommended version is '''Noetic Ninjemys'''
::[[File:pi3b-img282img342.png|575x306px800px]]
<ol start="10" style="list-style-type: decimal;"><li>More functions of the Bt:[[File:pi3b-Panel can refer to the following information to explore by yourself</li></ol>img343.png|800px]]
Manual: :{| class="wikitable" style="width:800px;" |-| [http://docs.btros.cn org/ '''http://docs.btros.cnorg''']
Forum address: [https://www.bt.cn/bbs '''https://wwwwiki.btros.cnorg/bbsDistributions''']|}
GitHub Link<ol start="2" style="list-style-type: decimal;"><li>The official installation document link of ROS 1 '''httpsNoetic Ninjemys''' is as follows:</li>{| class="wikitable" style="width:800px;" |-| [http://githubwiki.ros.comorg/noetic/Installation/Ubuntu '''http://wiki.ros.org/noetic/Installation/Ubuntu''']|}</aaPanelol><ol start="3" style="list-style-type: decimal;"><li>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 '''<span style="color:#FF0000">Ubuntu20.04 desktop system</BaoTaspan>'''</li>{| class="wikitable" style="width:800px;" |-| http://wiki.ros.org/noetic/Installation|}
[[File:pi3b-img344.png]]<span id/ol><ol start="4" style="setlist-style-type: decimal;"><li>Then use the-chinese-environment-and-script below to installros1</li>{| class="wikitable" style="width:800px;" |-chinese| orangepi@orangepi3b:~$ '''install_ros.sh ros1'''|}</ol><ol start="5" style="list-inputstyle-methodtype: decimal;"><li>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</spanli>{| class="wikitable" style= Set "background-color:#ffffdc;width:800px;" |-| <big>'''Note that running the following command needs to ensure that the Chinese environment and install Chinese input method ==development board can access github normally, otherwise an error will be reported due to network problems.'''
'''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.'''
<span id="debian-system-installation-'''The install_ros.sh script will try to modify /etc/hosts and automatically run the following commands. However, this method"></span>=== Debian cannot guarantee normal access to github every time. If the following error is displayed after installing ros1 in install_ros.sh, please find other ways to allow the Linux system installation method ===of the development board to access github normally, and then manually run the following Order.'''
<ol style="list-style-type: decimal;">
<li><p>First set the default '''locale''' as Chinese</p>
<ol style="list-style-type: lower-alpha;">
<li>Enter the command below to start configured '''locale'''</li></ol>
</li></ol>
orangepi@orangepi:~$ '''sudo dpkghttps://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-reconfigure localeshomebrew.yaml'''
<ol start="2" style="list-style-type: lower-alpha;"><li>Then select '''zh_CNHit https://raw.githubusercontent.UTF-8 UTF-8com/ros/rosdistro/master/rosdep/base.yaml''' 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 '''&lt;OK&gt;''' through the TAB key, then press the ENTER key )</li></ol>
[[File'''ERROR:pi3b-img283.png|575x296px]]error loading sources list:'''
:'''The read operation timed out'''<ol start/big>|}{| class="3wikitable" style="list-style-typewidth: lower-alpha800px;"><li>Then set the default |-| orangepi@orangepi:~$ '''locale''' as '''zh_CNsource /opt/ros/noetic/setup.UTF-8bash'''</li></ol>
[[Fileorangepi@orangepi:pi3b-img284.png|575x160px]]~$ '''sudo rosdep init'''
<ol start="4" style="Wrote /etc/ros/rosdep/sources.list.d/20-style-type: lower-alpha;"><li>After exiting the interface, the '''locale''' settings will be starteddefault. The output displayed by the command line is shown below</li></ol>list
orangepi@orangepiRecommended:~$ '''sudo dpkg-reconfigure locales'''please run
Generating locales (this might take a while)...
en_US.UTF-8... done::rosdep update
zh_CN.UTF-8... doneorangepi@orangepi:~$ '''rosdep update'''
Generation completereading in sources list data from /etc/ros/rosdep/sources.list.d
<ol start="2" style="list-style-typeHit https: decimal;"><li>Then open '''Input Method'''</li></ol>raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml
[[FileHit https:pi3b-img285//raw.png|575x361px]]githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml
<ol start="3" style="list-style-typeHit https: decimal;"><li>Then select '''OK'''</li></ol>raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml
[[FileHit https:pi3b-img286//raw.png|295x212px]]githubusercontent.com/ros/rosdistro/master/rosdep/ruby.yaml
<ol start="4" style="list-style-typeHit https: decimal;"><li>Then select '''Yes'''</li></ol>raw.githubusercontent.com/ros/rosdistro/master/releases/fuerte.yaml
[[FileQuery rosdistro index https:pi3b//raw.githubusercontent.com/ros/rosdistro/master/index-img287v4.png|303x192px]]yaml
<ol start="5" style="listSkip end-styleof-type: decimallife distro &quot;ardent&quot;"><li>Then select '''fcitx'''</li></ol>
[[File:pi3bSkip end-img288.png|307x220px]]of-life distro &quot;bouncy&quot;
<ol start="6" style="listSkip end-styleof-type: decimallife distro &quot;crystal&quot;"><li>Then select '''OK'''</li></ol>
[[File:pi3bSkip end-img289.png|305x216px]]of-life distro &quot;dashing&quot;
<ol start="7" style="listSkip end-styleof-type: decimallife distro &quot;eloquent&quot;"><li><p>'''Then restart the Linux system to make the configuration effective'''</p></li><li><p>Then open '''Fcitx configuration'''</p></li></ol>
[[File:pi3b-img290.png|575x376px]]Add distro &quot;foxy&quot;
<ol start="9" style="list-style-type: decimalAdd distro &quot;galactic&quot;"><li>Then click the + of the position shown in the figure below</li></ol>
[[File:pi3bSkip end-img291.png|280x187px]]of-life distro &quot;groovy&quot;
<ol start="10" style="list-style-type: decimalAdd distro &quot;humble&quot;"><li>Then search '''Google Pinyin''' and click '''OK'''</li></ol>
<div class="figure">Skip end-of-life distro &quot;hydro&quot;
[[File:pi3bSkip end-img292.png|291x196px|C:\Users\orangepi\Desktop\用户手册插图\Pi5 Plus\未标题of-10.jpg未标题-10]]life distro &quot;indigo&quot;
</div><ol start="11" style="listSkip end-styleof-type: decimallife distro &quot;jade&quot;"><li>Then put '''Google Pinyin''' to the front</li></ol>
[[File:pi3bSkip end-img293.png|299x202px]]of-life distro &quot;kinetic&quot;
[[File:pi3bSkip end-img294.png|300x202px]]of-life distro &quot;lunar&quot;
<ol start="12" style="list-style-type: decimalAdd distro &quot;melodic&quot;"><li>Then open the '''Geany''' editor to test the Chinese input method</li></ol>
[[File:pi3b-img295.png|349x212px]]Add distro &quot;noetic&quot;
<ol start="13" style="list-style-type: decimalAdd distro &quot;rolling&quot;"><li>The Chinese input method test is shown below</li></ol>
[[Fileupdated cache in /home/orangepi/.ros/rosdep/sources.cache|}</ol><ol start="6" style="list-style-type: decimal;"><li><p>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</p></li>{| class="wikitable" style="width:pi3b800px;" |-img296| <p>orangepi@orangepi:~$ '''test_ros.pngsh'''</p>|575x325px]]}<li><p>After running the '''test_ros.sh''' script, a little turtle as shown in the figure below will pop up</p></li>
<ol startdiv class="14figure" style="list-style-type: decimal;"><li><p>You can switch the Chinese and English input method through the '''Ctrl+Space''' shortcut</p></li><li><p>If the entire system is required as Chinese, the variables in '''/etc/default/locale''' can be set to '''zh_CN.UTF-8'''</p></li></ol>
orangepi@orangepi[[File:~$ '''sudo vim /etc/default/locale'''pi3b-img345.png]]
# File generated by update</div></ol><ol start="8" style="list-localestyle-type: decimal;"><li>Then please keep the terminal window just opened at the top</li>
LC_MESSAGES<div class='''zh_CN.UTF-8'''"figure">
LANG='''zh_CN[[File:pi3b-img346.UTF-8'''png]]
LANGUAGE</div></ol><ol start='''zh_CN.UTF"9" style="list-style-8'''type: decimal;"><li>At this time, press the direction keys on the keyboard to control the little turtle to move up, down, left, and right</li>
[[File:pi3b-img347.png]]</ol start><span id="16" style="listhow-to-install-ros-2-galactic-on-styleubuntu-type: decimal;20.04"><li>Then '''restart the system''' to see the system displayed as Chinese</li></olspan>
[[File:pi3b-img297=== How to install ROS 2 Galactic on Ubuntu 20.png|576x356px]]04 ===
<span id="the-installation-method-of-ubuntu-20.04-system"></span>=== # The installation method current active version of Ubuntu 20.04 system ===ROS 2 is as follows, the recommended version is '''Galactic Geochelone'''
# First open '''Language Support'''::[[File:pi3b-img348.png]]
::[[File:pi3b-img298img349.png]] ::{| class="wikitable" style="width:800px;" |-|575x351px][http://docs.ros.org/ '''http://docs.ros.org''''''http://docs.ros.org/en/galactic/Releases.html'''|}
<ol start="2" style="list-style-type: decimal;">
<li>Then find The link to the official ROS 2 '''Chinese (China)Galactic Geochelone''' optioninstallation documentation is as follows:</li></ol>{| class="wikitable" style="width:800px;" [[File:pi3b|-img299| '''docs.ros.png|318x311px]]org/en/galactic/Installation.html'''
'''http://docs.ros.org/en/galactic/Installation/Ubuntu-Install-Debians.html'''
|}
</ol>
<ol start="3" style="list-style-type: decimal;">
<li>Then <p>It is recommended to use Ubuntu20.04 in the left mouse button to select official installation document of ROS 2 '''Chinese (China)Galactic Geochelone''' and hold it down, and then drag it up so please ensure that the system used by the development board is '''<span style="color:#FF0000">Ubuntu20.04 desktop version</span>'''. There are several ways to install ROS 2. The following shows how to install ROS 2 '''Galactic Geochelone''' using '''Debian packages'''</p></li><li><p>Use the beginning'''install_ros. The display is shown belowsh''' script to install ros2</p></li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi: ~$ '''install_ros.sh ros2'''|}</ol><ol start="5" style="list-style-type: decimal;"><li>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</olli>{| class="wikitable" style="width:800px;" |-| usage: ros2 [-h] Call `ros2 &lt;command&gt; -h` for more detailed usage. ...
[[File:pi3b-img300.png|324x320px]]
'''Note that this step ros2 is not easy to drag, please try more patientlyan extensible command-line tool for ROS 2.'''
<ol start="4" style="list-style-type: decimal;">
<li>Then select the '''Apply System-Wide''' to apply the Chinese settings to the entire system</li></ol>
[[Fileoptional arguments:pi3b-img301.png|321x316px]]
<ol start="5" style="list:-styleh, -type: decimal;"><li>Then set the '''Keyboard input method system''' to '''fcitx'''</li></ol>-help show this help message and exit
[[File:pi3b-img302.png|327x320px]]
<ol start="6" style="list-style-typeCommands: decimal;"><li><p>'''hen restart the Linux system to make the configuration effective'''</p></li><li><p>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.</p></li></ol>
[[File:pi3baction Various action related sub-img303.png|303x247px]]commands
<ol start="8" style="list:bag Various rosbag related sub-style-type: decimal;"><li>Then you can see that the desktop is displayed as Chinese</li></ol>commands
[[File:pi3bcomponent Various component related sub-img304.png|575x383px]]commands
<ol start="9" style="list:daemon Various daemon related sub-style-type: decimal;"><li>Then we can open the '''Geany''' to test Chinese input method , and the way to open is shown in the figure below</li></ol>commands
[[File:pi3b-img305.png|576x292px]]doctor Check ROS setup and other potential issues
<ol start="10" style="list-style-type: decimal;"><li>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</li></ol>interface Show information about ROS interfaces
[[File:pi3b-img306.png|575x308px]]launch Run a launch file
<span id="the:lifecycle Various lifecycle related sub-installation-method-of-ubuntu-22.04-system"></span>=== The installation method of ubuntu 22.04 system ===commands
# First open '''Language Support''':multicast Various multicast related sub-commands
[[File:pi3bnode Various node related sub-img298.png|575x351px]]commands
<ol start="2" style="list:param Various param related sub-style-type: decimal;"><li>Then find '''Chinese (China)''' option</li></ol>commands
[[File:pi3bpkg Various package related sub-img307.png|335x326px]]commands
<ol start="3" style="list-style-type: decimal;"><li>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: </li></ol>run Run a package specific executable
[[File:pi3bsecurity Various security related sub-img308.png|337x331px]]commands
'''Note that this step is not easy to drag, please try more patiently.''':service Various service related sub-commands
<ol start="4" style="list-style-type: decimal;"><li>Then select the '''Apply Systemtopic Various topic related sub-Wide''' to apply the Chinese settings to the entire system</li></ol>commands
[[File:pi3b-img309.png|336x330px]]wtf Use `wtf` as alias to `doctor`
<ol start="5" style="list-style-type: decimal;">
<li><p>'''Then restart the Linux system to make the configuration effective'''</p></li>
<li><p>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</p></li></ol>
[[File:pi3bCall `ros2 &lt;command&gt; -img303h` for more detailed usage.png|303x247px]]}</ol><ol start="6" style="list-style-type: decimal;"><li>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</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi3b:~$ '''test_ros.sh'''
<ol start="7" style="list-style-type[INFO] [1671174101.200091527] [talker]: decimal;"><li>Then you can see that the desktop is displayed as Chinese</li></ol>Publishing: 'Hello World: 1'
[INFO] [File:pi3b-img3041671174101.png|575x383px235661048] [listener]: I heard: [Hello World: 1]
<ol start="8" style="list-style-type[INFO] [1671174102.199572327] [talker]: decimal;"><li>Then open the Fcitx5 configuration program</li></ol>Publishing: 'Hello World: 2'
[INFO] [File:pi3b-img3101671174102.png|575x349px204196299] [listener]: I heard: [Hello World: 2]
<ol start="9" style="list-style-type[INFO] [1671174103.199580322] [talker]: decimal;"><li>Then choose to use Pinyin input method</li></ol>Publishing: 'Hello World: 3'
[INFO] [1671174103.204019965] [listener]: I heard: [Hello World: 3]|}<div /ol><ol start="7" style="list-style-type: decimal;"><li>Run the following command to open rviz2</li>{| class="figurewikitable" style="width:800px;">|-| orangepi@orangepi:~$ '''source /opt/ros/galactic/setup.bash'''
[[Fileorangepi@orangepi:pi3b-img311.png~$ '''ros2 run rviz2 rviz2'''|338x267px|C:\Users\orangepi\Desktop\用户手册插图\Pi5 Plus\未标题-11.jpg未标题-11]]}
</div><ol startclass="10figure" style="list-style-type: decimal;"><li>The interface after the selection is shown below, then click OK</li></ol>
[[File:pi3b-img312img350.png|366x290px]]
</div></ol><ol start="118" style="list-style-type: decimal;"><li>Then we can open For the usage of ROS, please refer to the documentation of ROS 2</li>{| class="wikitable" style="width:800px;" |-| '''Geanyhttp://docs.ros.org/en/galactic/Tutorials.html''' to test Chinese input method, and the way to open is shown in the figure below|}</liol><span id="how-to-install-ros-2-humble-on-ubuntu-22.04"></olspan>
[[File:pi3b-img305=== How to install ROS 2 Humble on Ubuntu 22.png|576x292px]]04 ===
<ol start="12" style="list-style-type: decimal;"><li>After opening '''Geany# Use the ''', it is still an English input method by defaultinstall_ros. We can switch into Chinese input methods through the '''Ctrl+Spacesh''' shortcut keys, and then we can enter Chinese</li></ol>script to install ros2
[[File:pi3b:{| class="wikitable" style="width:800px;" |-img313| orangepi@orangepi:~$ '''install_ros.pngsh ros2'''|576x408px]]}
<span idol start="how2" style="list-tostyle-remotely-log-in-totype: decimal;"><li>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-linux-system-desktop-method">ros2 installation is complete</spanli>== 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{| class="wikitable" style="width:800px;" |-| usage: ros2 [-h] Call `ros2 &lt;command&gt; -h` for more detailed usage. ...'''
<span id="use-nomachine-remote-login"></span>
=== Use nomachine remote login ===
'''Make sure the Ubuntu or Debian system installed on the development board ros2 is a desktop versionan extensible command-line tool for ROS 2. 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: '''
'''https://knowledgebase.nomachine.com/DT10R00166'''
'''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.'''optional arguments:
'''Before operation:-h, please ensure that the Windwos computer --help show this help message 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.'''exit
<ol style="list-style-type: decimal;">
<li><p>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</p>
<ol style="list-style-type: lower-alpha;">
<li>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: </li></ol>
</li></ol>
'''Note that this download link may change, please recognize the DEB package of the ARMV8/ARM64 version.'''Commands:
[https://www.nomachine.com/download/download&id=112&s=ARM '''https://downloads.nomachine.com/download/?id=118&amp;distro=ARM''']action Various action related sub-commands
[[File:pi3bbag Various rosbag related sub-img314.png|575x227px]]commands
<ol start="2" style="list-style-type: lowercomponent Various component related sub-alpha;"><li>In addition, you can also download the installation package to '''NoMachine''' in the '''official tools'''.</li></ol>commands
[[File:pi3bdaemon Various daemon related sub-img315.png|66x102px]]commands
<blockquote>First enter the '''remote login software-Nomachine''' folder</blockquote>[[File:pi3b-img316.png|271x43px]]doctor Check ROS setup and other potential issues
<blockquote>Then download the ARM64 version of the DEB installation package</blockquote>[[File:pi3b-img317.png|180x109px]]interface Show information about ROS interfaces
<ol start="3" style="list-style-type: lower-alpha;"><li><p>Then upload the downloaded '''nomachine_x.x.x_x_arm64.deb''' to the Linux system of the development board.</p></li><li><p>Then use the following command to install '''NoMachine''' in the Linux system of the development board</p></li></ol>launch Run a launch file
orangepi@orangepi:~$ '''sudo dpkg lifecycle Various lifecycle related sub-i nomachine_x.x.x_x_arm64_arm64.deb'''commands
<ol start="2" style="list:multicast Various multicast related sub-style-type: decimal;"><li>Then download the nomachine software Windows version of the installation package, the download address is shown below</li></ol>commands
'''Note that this download link may change.''':node Various node related sub-commands
'''https://downloads.nomachine.com/download/?id=9'''param Various param related sub-commands
[[File:pi3bpkg Various package related sub-img318.png|575x163px]]commands
<ol start="3" style="list-style-type: decimal;"><li><p>Then install nomachine in Windows. '''Please restart the computer after installation'''</p></li><li><p>Then open '''NoMachine''' in Window</p></li></ol>run Run a package specific executable
[[File:pi3bsecurity Various security related sub-img319.png|76x66px]]commands
<ol start="5" style="list:service Various service related sub-style-type: decimal;"><li>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</li></ol>commands
[[File:pi3btopic Various topic related sub-img320.png|321x92px]]commands
<ol start="6" style="list-style-type: decimal;"><li>Then click '''OK'''</li></ol>wtf Use `wtf` as alias to `doctor`
[[File:pi3b-img321.png|402x275px]]
:Call `ros2 &lt;command&gt; -h` for more detailed usage.|}</ol><ol start="73" style="list-style-type: decimal;"><li>Then enter the username and password of the Linux system in the corresponding position in you can use the figure below, and then click '''OKtest_ros.sh''' script to start logging intest whether ROS 2 is installed successfully. If you can see the following print, it means that ROS 2 can run normally</li></ol>
<div {| class="figurewikitable">style="width:800px;" |-| orangepi@orangepi3b:~$ '''test_ros.sh'''
[INFO] [File:pi3b-img322.png|303x204px|C:\Users\orangepi\Desktop\用户手册插图\Pi5 Plus\未标题-121671174101.jpg未标题-12200091527][talker]: Publishing: 'Hello World: 1'
</div><ol start="8" style="list-style-type: decimal;"><li><p>Then click OK in the next interface</p></li><li><p>Finally, you can see the desktop of the development board Linux system</p><p>[INFO] [File:pi3b-img3231671174101.png|411x246px235661048][listener]: I heard: [Hello World: 1]</p></li></ol>
<span id="use-vnc-remote-login"></span>=== Use VNC remote login ===[INFO] [1671174102.199572327] [talker]: Publishing: 'Hello World: 2'
'''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[INFO] [1671174102.'''204196299] [listener]: I heard: [Hello World: 2]
'''Ubuntu 20[INFO] [1671174103.04 tests many problems with VNC, please do not use this method.'199580322] [talker]: Publishing: 'Hello World: 3'
# First run [INFO] [1671174103.204019965] [listener]: I heard: [Hello World: 3]|}</ol><ol start="4" style="list-style-type: decimal;"><li>Run the following command to open rviz2</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''set_vncsource /opt/ros/humble/setup.sh''' script settings, and '''remember to add Sudo permissionsbash'''
orangepi@orangepi:~$ '''sudo set_vnc.shros2 run rviz2 rviz2'''|}
You will require a password to access your desktops.<div class="figure">
Password[[File: '''#Set the VNC password here, 8 pi3b-bit characters'''img351.png]]
Verify</div></ol><ol start="5" style="list-style-type: decimal;"><li>Reference documents</li>{| class="wikitable" style="width: 800px;" |-| '''#Set the VNC password here, 8 -bit charactershttp://docs.ros.org/en/humble/index.html'''
Would you like to enter a view-only password (y[http://docs.ros.org/en/galactic/n)? Tutorials.html '''nhttp://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html''']|}</ol><span id="how-to-install-kernel-header-files"></span>
xauth: file /root/.Xauthority does not exist== How to install kernel header files ==
New # The Linux image released by OPi comes with the deb package of the kernel header file by default, and the storage location is '''/opt/''X' desktop is orangepi3b:1
Creating default startup script ::{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''ls /rootopt/.vnc/xstartuplinux-headers*'''
Starting applications specified in /rootopt/linux-headers-legacy-rockchip-rk356x_x.vnc/xstartupx.x_arm64.deb|}
Log <ol start="2" style="list-style-type: decimal;"><li>Use the following command to install the deb package of the kernel header file is /root</li>{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''The name of the kernel header file deb package needs to be replaced with the actual name, please do not copy it.vnc'''</orangepi3bbig>|}{| class="wikitable" style="width:1800px;" |-| orangepi@orangepi:~$ '''sudo dpkg -i /opt/linux-headers-legacy-rockchip-rk356x_1.x.x_arm64.logdeb'''|}Killing Xtightvnc process ID 3047</ol><ol start="3" style="list-style-type: decimal;">New <li>After installation, you can see the folder where the kernel header files are located under '''X/usr/src' desktop is orangepi3b''</li>{| class="wikitable" style="width:1800px;" |-| orangepi@orangepi:~$ '''ls /usr/src'''
Starting applications specified in linux-headers-5.10.160-rockchip-rk356x|}</ol><ol start="4" style="list-style-type: decimal;"><li><p>Then you can write a hello kernel module to test the kernel header file</rootp><ol style="list-style-type: lower-alpha;"><li>First write the code of the hello kernel module, as follows:</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''vim hello.vnc/xstartupc'''
Log file is /root<p>#include &lt;linux/init.vnch&gt;</orangepi3b:1.logp>
<ol start="2" style="list-style-type: decimal;"><li><p>The steps of using MobaxTerm software to connect the development board Linux system desktop are shown below: <#include &lt;linux/p><ol style="list-style-type: lower-alphamodule.h&gt;"><li>First click Session, then select VNC, then fill in the IP address and port of the development board, and finally click OK to confirm</li></ol></li></olp>
<div class="figure">
[[File:pi3b-img324.png|490x349px|图片1208]]static int hello_init(void)
</div><ol start="2" style="list-style-type: lower-alpha;"><li>Then enter the password of the previously set VNC</li></ol>{
[[File:pi3bprintk(&quot;Hello Orange Pi -img325.png|274x131px]]- init\n&quot;);
<ol start="3" style="list-style-type: lower-alpha;">
<li><p>The interface after the login is shown as shown in the figure below, and then the desktop of the Linux system can be remotely operated</p>
<p>[[File:pi3b-img326.png|405x293px]]</p></li></ol>
<span id="some-programming-language-tests-supported-by-linux-system"></span>== Some programming language tests supported by Linux system ==:return 0;
<span id="debian-bullseye-system"></span>=== Debian Bullseye system ===}
<ol style="list-style-type: decimal;"><li><p>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</p><ol style="list-style-type: lower-alpha;"><li>The version of the gcc is shown below</li></ol></li></ol>static void hello_exit(void)
orangepi@orangepi:~$ '''gcc --version'''{
gcc :printk(Debian 10.2.1&quot;Hello Orange Pi -6- exit\n&quot;) 10.2.1 20210110;
Copyright (C) 2020 Free Software Foundation, Inc.
This is free software:return; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.}
<ol start="2" style="list-style-type: lower-alpha;">
<li>Write C language of '''Hello_world.c''' program</li></ol>
orangepi@orangepi:~$ '''vim hello_world.c'''module_init(hello_init);
#include &lt;stdio.h&gtmodule_exit(hello_exit);
int main(void)
MODULE_LICENSE(&quot;GPL&quot;);|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li>Then write the Makefile for compiling the hello kernel module, as follows:</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''vim Makefile'''
printfifneq (&quot;Hello World!\n&quot;$(KERNELRELEASE),);
return 0;obj-m:=hello.o
}else
<ol startKDIR :="3" style="list/lib/modules/$(shell uname -style-type: lower-alpha;"><li>Then compile and run '''hello_world.c'''</li><r)/ol>build
orangepi@orangepiPWD :~=$ '''gcc -o hello_world hello_world.c'''(shell pwd)
orangepi@orangepiall:~$ '''./hello_world'''
Hello World!:make -C $(KDIR) M=$(PWD) modules
<ol start="2" style="list-style-typeclean: decimal;"><li><p>Debian BullSeye Default with Python3</p><ol style="list-style-type: lower-alpha;"><li>The specific version of Python is shown below</li></ol></li></ol>
orangepi@orangepi:~$ '''python3'''rm -f *.ko *.o *.mod.o *.mod *.symvers *.cmd *.mod.c *.order
endif|}</ol><ol start="3" style="list-style-type: lower-alpha;"><li>Then use the make command to compile the hello kernel module. The output of the compilation process is as follows:</li>{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''Python 3If 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.9.2''' (default, Feb 28 2021, 17:03:44)</big>
[GCC 10[File:pi3b-img352.2.1 20210110png|center]] on linux|}{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''make'''
Type &quot;help&quot;, &quot;copyright&quot;, &quot;credits&quot; or &quot;license&quot; for more informationmake -C /lib/modules/5.10.160-rockchip-35xx/build M=/home/orangepi modules
&gt;&gt;&gt;make[1]: Entering directory '/usr/src/linux-headers-5.10.160-rockchip-rk35xx'
<ol start="2" style="list-style-type: lower-alpha;"><li>'''hello_world.py''' program in Python language<CC [M] /home/li><orangepi/ol>hello.o
:MODPOST /home/orangepi@orangepi:~$ '''vim hello_world/Module.py'''symvers
print('Hello World!'):CC [M] /home/orangepi/hello.mod.o
<ol start="3" style="list-style-type: lower-alpha;"><li>The results of running '''hello_world.py''' are shown below<LD [M] /home/li><orangepi/ol>hello.ko
make[1]: Leaving directory '/usr/src/linux-headers-5.10.160-rockchip-rk35xx'|}</ol><ol start="4" style="list-style-type: lower-alpha;"><li>After compiling, the '''hello.ko''' kernel module will be generated</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''python3 hello_worldls *.pyko'''
Hello World!hello.ko|}</ol><ol start="5" style="list-style-type: lower-alpha;"><li>Use the '''insmod''' command to insert the '''hello.ko''' kernel module into the kernel</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo insmod hello.ko'''|}</ol><ol start="6" style="list-style-type: lower-alpha;"><li>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.</li>
<ol start{| class="3wikitable" style="list-style-typewidth: decimal800px;"><li><p>Debian Bullseye's compilation tool and operating environment that is not installed in Java by default</p>|-| <ol style="list-style-typeorangepi@orangepi: lower-alpha~$ '''dmesg | grep &quot;Hello&quot;"><li>You can use the following command to install OpenJDK. The latest version in Debian Bullseye is openjdk-17</li></ol></li></ol>'''
[ 2871.893988] '''Hello Orange Pi -- init'''|}</ol><ol start="7" style="list-style-type: lower-alpha;"><li>Use the '''rmmod''' command to uninstall the '''hello.ko''' kernel module</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo apt install -y openjdk-17-jdkrmmod hello'''
<ol start="2" style="list-style-typeorangepi@orangepi: lower-alpha~$ '''dmesg | grep &quot;"><li>After installation, you can check the version of Java</li></ol>Hello&quot;'''
orangepi@orangepi:~$ '''java [ 2871.893988] Hello Orange Pi --version'''init
<ol start="3" style="list-style-type: lower-alpha;"><li>Edit the [ 3173.800892] '''hello_world.javaHello Orange Pi -- exit''' of the Jave version|}</ol></li></ol><span id="use-of-the-raspberry-pis-5-inch-screen"></span>
orangepi@orangepi:~$ '''vim hello_world.java''== Use of the Raspberry PI's 5-inch screen ==
public class hello_world<span id="assembly-method-of-raspberry-pi-5-inch-screen"></span>=== Assembly method of Raspberry PI 5-inch screen ===
{<ol style="list-style-type: decimal;"><li><p>First prepare the required accessories</p><ol style="list-style-type: lower-alpha;"><li>Raspberry PI 5-inch MIPI LCD display + touch screen</li>
public static void main(String[[File:pi3b-img353.png]] args)</ol><ol start="2" style="list-style-type: lower-alpha;"><li>15pin MIPI cable</li>
{[[File:pi3b-img354.png]]</ol></li></ol><ol start="2" style="list-style-type: decimal;"><li>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)</li>
System[[File:pi3b-img355.out.println(&quot;Hello World!&quot;)png]]</ol><ol start="3" style="list-style-type: decimal;"><li>Finally connect to the LCD interface of the Orange Pi 3B development board</li>
}[[File:pi3b-img356.png]]</ol><span id="open-the-raspberry-pi-5-inch-screen-configuration-method"></span>
}=== Open the Raspberry PI 5-inch screen configuration method ===
<ol startstyle="4list-style-type: decimal;" ><li><p>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.</p></li><li><p>The steps to open the mipi lcd configuration are as follows:</p><ol style="list-style-type: lower-alpha;"><li>Then compile and First run '''hello_world.javaorangepi-config''', ordinary users remember to add '''sudo'''permission</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo orangepi-config'''|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li>Then select '''System'''</li>
orangepi@orangepi[[File:~$ pi3b-img357.png]]</ol><ol start="3" style="list-style-type: lower-alpha;"><li>Then select '''javac hello_world.javaHardware'''</li>
orangepi@orangepi[[File:~$ '''java hello_world'''pi3b-img358.png]]</ol><ol start="4" style="list-style-type: lower-alpha;"><li>Then use the arrow keys on the keyboard to locate the Rasp-7inch-touchscreen, and then use the space button to check</li>
Hello World![[File:pi3b-img359.png]]</ol><ol start="5" style="list-style-type: lower-alpha;"><li>Then select '''&lt;Save&gt;''' to save</li>
[[File:pi3b-img360.png]]</ol><span idol start="ubuntu6" style="list-style-focaltype: lower-systemalpha;"><li>Then select '''&lt;Back&gt;'''</spanli>=== Ubuntu Focal system ===
<ol style="list[[File:pi3b-style-type: decimal;">img361.png]]<li><p>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.</pol><ol start="7" style="list-style-type: lower-alpha;"><li>The version of Then select '''&lt;Reboot&gt;''' to restart the system for the gcc is shown belowconfiguration to take effect</li></ol></li></ol>
orangepi@orangepi[[File:~$ '''gcc pi3b--version'''img362.png]]
gcc (Ubuntu 9.4.0{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''The above settings will eventually add the configuration of <span style="color:#FF0000">overlays=raspi-7inch-1ubuntu1~20touchscreen</span> to /boot/orangepiEnv.04txt.1) 9After setting, you can check it first.4If this configuration does not exist, then there is a problem with the settings.0'''
Copyright (C) 2019 Free Software Foundation'''If you find it troublesome to use orangepi-config, Incyou can also use the vim editor to open /boot/orangepiEnv.txt, and then add the configuration of <span style="color:#FF0000">overlays=raspi-7inch-touchscreen</span> is also possible.'''</big>
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSEorangepi@orangepi:~$ '''cat /boot/orangepiEnv.txt | grep "raspi"'''
'''<span style="color:#FF0000">overlays=raspi-7inch-touchscreen #Sample configuration</span>'''|}</ol></li></ol><ol start="23" style="list-style-type: lower-alphadecimal;"><li>'''hello_world.c''' program to write C languageAfter startup, you can see the lcd screen display as follows:</li></ol>
orangepi@orangepi[[File:~$ '''vim hello_worldpi3b-img363.c'''png]]</ol><span id="the-method-of-server-version-image-rotation-display-direction"></span>
#include &lt;stdio.h&gt;=== The method of server version image rotation display direction ===
int main(void)<ol start="1" style="list-style-type: decimal;"><li><p>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:</p></li>
<ol style="list-style-type: lower-alpha;"><li><p>0: normal screen (default is landscape)</p></li><li><p>1: Turn clockwise 90 degrees</p></li><li><p>2: Flip 180 degrees</p></li><li><p>3: Turn clockwise 270 degrees</p></li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo vim /boot/orangepiEnv.txt'''
printf(&quot;Hello World!\n&quot;);overlays=lcd1
return 0'''<span style="color:#FF0000">extraargs=cma=64M fbcon=rotate:3</span>'''|}{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''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).'''</big>|}</ol></li></ol><ol start="2" style="list-style-type: decimal;"><li>Then '''<span style="color:#FF0000">restart</span>''' the Linux system and you can see that the direction displayed on the LCD screen has been rotated</li></ol>
<ol startspan id="3" style="listmethod-of-rotating-display-and-touch-direction-of-styledesktop-type: lowerversion-alpha;image"><li>Then compile and run '''hello_world.c'''</li></olspan>
orangepi@orangepi:~$ '''gcc -o hello_world hello_world.c'''=== Method of rotating display and touch direction of desktop version image ===
orangepi@orangepi:~$ # First open '''./hello_worldDisplay'''Settings in Linux
Hello World!::[[File:pi3b-img364.png]]
<ol start="2" style="list-style-type: decimal;">
<li><p>Ubuntu Focal defaults Then select the direction you want to install Python3rotate in '''Rotation'''</p>
<ol style="list-style-type: lower-alpha;">
<li>Python3 specific version <p>'''None''': no rotation</p></li><li><p>'''Left''': rotate left 90 degrees</p></li><li><p>'''Inverted''': Flip up and down, which is shown belowequivalent to rotating 180 degrees</p></li><li><p>'''Right''': rotate right 90 degrees</p></li> [[File:pi3b-img365.png]]</ol>
</li></ol>
<ol start="3" style="list-style-type: decimal;">
<li>Then click '''Apply'''</li>
orangepi@orangepi[[File:~$ pi3b-img366.png]]</ol><ol start="4" style="list-style-type: decimal;"><li>Then select '''python3Keep this configuration'''</li>
Python 3[[File:pi3b-img367.png]]</ol><ol start="5" style="list-style-type: decimal;"><li><p>At this point, the screen display has been rotated, and then close the '''Display''' program</p></li><li><p>The above steps will only select the display direction, and will not rotate the direction of the touch. Use the '''set_lcd_rotate.8sh''' script to rotate the direction of the touch.10 (defaultAfter the script is set, Nov 14 2022it will automatically restart, 12and then you can test whether the touch has been used normally.</p><ol style="list-style-type:59lower-alpha;"><li>'''None''': no rotation</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''set_lcd_rotate.sh none'''|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li>'''Left''': rotate left 90 degrees</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''set_lcd_rotate.sh left'''|}</ol><ol start="3" style="list-style-type: lower-alpha;"><li>'''Inverted''': Flip up and down, which is equivalent to rotating 180 degrees</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''set_lcd_rotate.sh inverted'''|}</ol><ol start="4" style="list-style-type: lower-alpha;"><li>'''Right''': rotate right 90 degrees</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''set_lcd_rotate.sh right'''|}{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''The set_lcd_rotate.sh script mainly does four things:47)'''
[GCC 9.4.0] on linux
Type &quot;help&quot;, &quot;copyright&quot;, &quot;credits&quot; or &quot;license&quot; for more information'''1.Rotate the direction displayed by the framebuffer'''
&gt;&gt;&gt;'''2. Rotate the direction of the touch'''
<ol start="2" style="list-style-type: lower-alpha;"><li>'''hello_world3.pyTurn off the boot logo''' program in Python language</li></ol>
orangepi@orangepi:~$ '''vim hello_world4.pyRestart the system'''
print('Hello World!')
<ol start="3" style="list-style-type: lower-alpha;"><li>The results of running '''hello_world.py''' are shown below<Rotating the touch direction is achieved by adding the line Option &quot;TransformationMatrix&quot; &quot;x x x x x x x x x&quot; to /usr/share/li><X11/ol> orangepi@orangepi:~$ '''python3 hello_worldxorg.conf.py''' Hello World! <ol start="3" style="listd/40-style-type: decimallibinput.conf Where &quot;"><li><p>Ubuntu Focal's compilation tool and operating environment without the installation of Java default</p><ol style="list-style-type: lower-alphax x x x x x x x x&quot;"><li>You can use the following command to install '''openjdk-17is configured differently for different directions.'''</libig>|}</ol>
</li></ol>
<ol start="7" style="list-style-type: decimal;">
<li>Touch rotation reference</li>
{| class="wikitable" style="width:800px;"
|-
|
'''https://wiki.ubuntu.com/X/InputCoordinateTransformation'''
|}
</ol>
<span id="instructions-for-using-the-switch-logo"></span>
orangepi@orangepi:~$ '''sudo apt install -y openjdk-17-jdk'''== Instructions for using the switch logo ==
<ol start="2" style="list-style-type: lower-alpha;"><li>After installation# By default, you can check the switch logo will only be displayed in the desktop version of Java<the system# Set the '''bootlogo''' variable to '''false''' in '''/li><boot/ol>orangepiEnv.txt''' to turn off the switch logo
::{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''java --versionvim /boot/orangepiEnv.txt'''
openjdk 17.0.2 2022-01-18verbosity=1
OpenJDK Runtime Environment (build 17.0.2+8-Ubuntu-120.04)'''<span style="color:#FF0000">bootlogo=false</span>'''|}
OpenJDK 64<ol start="3" style="list-Bit Server VM (build 17.0.2+8-Ubuntustyle-120type: decimal;"><li>Set the '''bootlogo''' variable to '''true''' in '''/boot/orangepiEnv.04, mixed mode, sharing)txt''' to enable the switch logo</li>
<ol start{| class="3wikitable" style="list-style-typewidth: lower-alpha800px;"><li>Edit the |-| orangepi@orangepi:~$ '''hello_worldvim /boot/orangepiEnv.javatxt''' of Jave version</li></ol>
orangepi@orangepi:~$ '''vim hello_world.java'''verbosity=1
public '''<span style="color:#FF0000">bootlogo=true</span>'''|}</ol><ol start="4" style="list-style-type: decimal;"><li>The location of the boot logo image in the Linux system is</li>{| class hello_world="wikitable" style="width:800px;" |-| '''/usr/share/plymouth/themes/orangepi/watermark.png'''|}</ol><ol start="5" style="list-style-type: decimal;"><li>After replacing the boot logo picture, you need to run the following command to take effect</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo update-initramfs -u'''|}</ol>public static void main(String[] args)<span id="how-to-use-the-zfs-file-system"></span>
{== How to use the ZFS file system ==
System{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''The latest version of Ubuntu20.04, Ubuntu22.out04, Debian11 and Debian12 <span style="color:#FF0000">desktop version systems</span> have pre-installed zfs, you can use it directly.println(&quot;Hello World!&quot;);'''
}'''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.'''
<ol start="4" style="list-style-type: lower-alpha;"><li>Then compile and run '''hello_worldAfter 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.java'''</li></olbig>
orangepi@orangepi:~$ '''javac hello_world.javalsmod | grep &quot;zfs&quot;'''
orangepi@orangepi:~$ '''java hello_world'''zfs &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2801664 &nbsp;&nbsp;&nbsp; 0
Hello World!zunicode &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 327680 &nbsp;&nbsp;&nbsp; 1 &nbsp; zfs
<span id="ubuntu-jammy-system"></span>=== Ubuntu jammy system ===zzstd &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; 471040 &nbsp;&nbsp;&nbsp; 1 &nbsp; zfs
<ol style="list-style-type: decimalzlua &nbsp;"><li><p>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</p><ol style="list-style-type: lower-alpha&nbsp;"><li>The version of the gcc is shown below</li></ol></li></ol>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; 139264 &nbsp;&nbsp;&nbsp; 1 &nbsp; zfs
orangepi@orangepi:~$ '''gcc --version'''zcommon &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 69632 &nbsp;&nbsp;&nbsp; 1 &nbsp; zfs
gcc (Ubuntu 11.znvpair &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 61440 &nbsp;&nbsp;&nbsp; 2.0-19ubuntu1) '''11.2.0'''&nbsp; zfs,zcommon
Copyright (C) 2021 Free Software Foundation, Inc.zavl &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 16384 &nbsp;&nbsp;&nbsp; 1 &nbsp; zfs
This is free softwareicp &nbsp; see the source for copying conditions. There is NO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 221184 &nbsp;&nbsp;&nbsp; 1 &nbsp; zfs
warrantyspl &nbsp; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 77824 &nbsp;&nbsp;&nbsp; 6 &nbsp; zfs,icp,zzstd,znvpair,zcommon,zavl|}
<ol startspan id="2" style="listhow-styleto-type: lowerinstall-alpha;zfs"><li>Write the '''hello_world.c''' program of c language</li></olspan>=== How to install ZFS ===
orangepi@orangepi{| class="wikitable" style="background-color:~$ #ffffdc;width:800px;" |-| <big>'''vim hello_worldBefore 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.c'''</big>|}
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 [[Orange Pi 3B#include &lt;stdioHow to install kernel header files|'''section on the method of installing the kernel header file''']].h&gt;
int main(void)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 [http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-3B.html '''official tool'''] of the development board. Open the '''<span class="mark">official tool</span>''', and enter the '''<span class="mark">zfs-related deb package folders used by Ubuntu and Debian systems</span>'''. You can see three types of deb packages: Ubuntu20.04, Ubuntu22.04 and Debian11. Please download the required version.
printf(&quot;Hello World!\n&quot;);[[File:pi3b-img368.png]]
return 0;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 '''[[Orange Pi 3B#The method of uploading files to the Linux system of the development board|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.
<ol start{| class="3wikitable" style="list-style-typewidth: lower-alpha800px;"><li>Then compile and run |-| orangepi@orangepi:~$ '''hello_worldsudo apt install ./*.cdeb'''</li></ol>|}
orangepi@orangepiAfter the installation is complete, use the following command to see the zfs-related kernel modules:~$ '''gcc -o hello_world hello_world.c'''
{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''ls /lib/modules/5.10.160-rockchip-rk356x/updates/dkms/hello_world'''
Hello World!'''icp.ko spl.ko zavl.ko zcommon.ko zfs.ko zlua.ko znvpair.ko zunicode.ko zzstd.ko'''|}
<ol start="2" style="list-style-typeThen restart the Linux system to see that the zfs kernel module will be automatically loaded: decimal;"><li><p>Ubuntu jammy is installed with Python3 by default</p><ol style="list-style-type: lower-alpha;"><li>Python3 specific version is shown below</li></ol></li></ol>
{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''python3lsmod | grep "zfs"'''
Python '''3.10.4''' (main, Apr 2 2022, 09:04:19) [GCC 11.2.zfs &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2801664 &nbsp;&nbsp;&nbsp; 0] on linux
Type zunicode &quotnbsp;help&quotnbsp;, &quotnbsp;copyright&quotnbsp;, &quotnbsp;credits&quotnbsp; or &quotnbsp;license&quotnbsp; for more information.&nbsp;&nbsp;&nbsp; 327680 &nbsp;&nbsp;&nbsp; 1 &nbsp; zfs
zzstd &gtnbsp;&gtnbsp;&gtnbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; 471040 &nbsp;&nbsp;&nbsp; 1 &nbsp; zfs
<ol start="2" style="list-style-type: lower-alphazlua &nbsp;"><li>Edit '''hello_world.py''' program in Python language</li></ol>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; 139264 &nbsp;&nbsp;&nbsp; 1 &nbsp; zfs
orangepi@orangepi:~$ '''vim hello_world.py'''zcommon &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 69632 &nbsp;&nbsp;&nbsp; 1 &nbsp; zfs
print('Hello World!')znvpair &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 61440 &nbsp;&nbsp;&nbsp; 2 &nbsp; zfs,zcommon
<ol start="3" style="list-style-type: lower-alphazavl &nbsp;"><li>The results of running '''hello_world.py''' are shown below</li></ol>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 16384 &nbsp;&nbsp;&nbsp; 1 &nbsp; zfs
orangepi@orangepi:~$ '''python3 hello_world.py'''icp &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 221184 &nbsp;&nbsp;&nbsp; 1 &nbsp; zfs
Hello World!spl &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 77824 &nbsp;&nbsp;&nbsp; 6 &nbsp; zfs,icp,zzstd,znvpair,zcommon,zavl|}
<ol start="3" style="list-style-type: decimal;"><li><p>Ubuntu jammy defaults to compile tools and operating environments that are not installed in Java</p><ol style="list-style-type: lower-alpha;"><li>You In Debian12, the default version of zfs is 2.1.11, so we can use install zfs directly through the following command to install openjdk-18</li></ol></li></ol>. Again, please make sure that the system has installed the deb package of the kernel header file before installation.
{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo apt install -y openjdkzfsutils-18linux zfs-jdkdkms'''|}
<ol startspan id="2" style="listmethods-of-stylecreating-type: lowerzfs-alpha;pools"><li>After installation, you can check the version of Java</li></olspan>
orangepi@orangepi:~$ '''java --version'''=== Methods of creating ZFS pools ===
openjdk 18{| class="wikitable" style="background-ea 2022color:#ffffdc;width:800px;" |-03-22| <big>'''ZFS is based on storage pools, we can add multiple physical storage devices to the pool, and then allocate storage space from this pool.'''
OpenJDK Runtime Environment (build 18-ea+36-Ubuntu-1)'''The following content is demonstrated based on the development board connected to an NVMe SSD and a USB flash drive.'''</big>|}
OpenJDK 64-Bit Server VM (build 18-ea+36-Ubuntu-1# First, mixed mode, sharing)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:
<ol start="3" style="list-style-type: lower:[[File:pi3b-alpha;"><li>Edit the '''hello_worldimg369.java''' of the Jave version</li></ol>png]]
<ol start="2" style="list-style-type: decimal;"><li>Then enter the following command to create a ZFS pool, including two storage devices, NVMe SSD and U disk</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''vim hello_world.javasudo zpool create -f pool1 /dev/nvme0n1 /dev/sda'''|}</ol><ol start="3" style="list-style-type: decimal;"><li>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</li>
public [[File:pi3b-img370.png]]</ol><ol start="4" style="list-style-type: decimal;"><li>Then execute '''df -h''' to see that '''pool1''' is mounted to the '''/pool1''' directory</li>{| class hello_world="wikitable" style="width:800px;" |-|orangepi@orangepi:~$ '''df -h''' <br> Filesystem &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Size &nbsp;&nbsp;&nbsp; Used Avail Use% Mounted on
{tmpfs &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.6G &nbsp;&nbsp;&nbsp; 18M 1.6G 2% /run <br>
public static void main(String[] args)/dev/mmcblk0p2 &nbsp;&nbsp;&nbsp; 29G &nbsp;&nbsp;&nbsp; 6.0G 22G 22% / <br>
{tmpfs &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7.7G &nbsp;&nbsp;&nbsp; 46M 7.7G 1% /dev/shm <br>
Systemtmpfs &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5.out.println(0M &quotnbsp;Hello World!&quotnbsp;)&nbsp;4.0K 5.0M 1% /run/lock <br>
}tmpfs &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7.7G &nbsp;&nbsp;&nbsp; 944K 7.7G 1% /tmp <br>
}/dev/mmcblk0p1 &nbsp;&nbsp;&nbsp; 1022M &nbsp;&nbsp;&nbsp; 115M 908M 12% /boot <br>
<ol start="/dev/zram1 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 188M &nbsp;&nbsp;&nbsp; 4" style="list-style-type: lower-alpha;"><li>Then compile and run '''hello_world.java'''<5M 169M 3% /var/li>log </olbr>
orangepi@orangepi:~$ '''javac hello_worldtmpfs &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.java'''6G &nbsp;&nbsp;&nbsp; 80K 1.6G 1% /run/user/1000 <br>
'''pool1 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 489G &nbsp;&nbsp;&nbsp; 9.3M 489G 1% <span style="color:#FF0000">/pool1</span>''' <br>|}</ol><ol start="5" style="list-style-type: decimal;"><li>Use the following command to see that the file system type of pool1 is zfs</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''java hello_worldmount | grep pool1'''
Hello World!pool1 on /pool1 type '''<span style="color:#FF0000">zfs</span>''' (rw,xattr,noacl)|}</ol><ol start="6" style="list-style-type: decimal;"><li>Then we can test copying a file to the ZFS pool</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo cp -v /usr/local/test.mp4 /pool1/'''
'/usr/local/test.mp4' -&gt; '/pool1/test.mp4'|}</ol><span id="qttest-the-data-deduplication-function-installationof-methodzfs"></span>== QT installation method ==
# Use === Test the following script to install QT5 and QT Creatordata deduplication function of ZFS ===
# The data deduplication function of ZFS is disabled by default, we need to execute the following command to enable it::{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''install_qt.shsudo zfs set dedup=on pool1'''|}
<ol start="2" style="list-style-type: decimal;">
<li><p>The QT version number will be automatically printed after installationThen do a simple test, first enter pool1, and then execute the following command to generate a random file with a size of 1G</pli><ol {| class="wikitable" style="list-style-typewidth: lower-alpha800px;"><li>Ubuntu20.04 comes with QT version |-| orangepi@orangepi:~$ '''5.12.8cd /pool1/'''</li></ol></li></ol>
orangepiroot@orangepi:~/pool1$ '''install_qtsudo dd if=/dev/urandom of=test.sh1g bs=1M count=1024'''
......1024+0 records in
QMake version 3.11024+0 records out
Using Qt version 1073741824 bytes (1.1 GB, 1.0 GiB) copied, 5.04367 s, 213 MB/s|}</ol><ol start="3" style="list-style-type: decimal;"><li>Then use the following command to copy 1000 random files of size 1G</li>{| class="wikitable" style="width:800px;" |-| root@orangepi:/pool1$ '''5for ((i=0; i&lt;1000; i++)); do sudo cp test.1g $i.12test.81g; done'''|}</ol><ol start="4" style="list-style-type: decimal;"><li>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</usrli>{| class="wikitable" style="width:800px;" |-| root@orangepi:/lib/aarch64pool1$ '''du -linux-gnulh'''
1002G|}</ol><ol start="25" style="list-style-type: lower-alphadecimal;"><li>Ubuntu22.04 comes with QT version Then use the '''5.15.3zpool 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.</li></ol>
orangepi@orangepi[[File:~$ '''install_qtpi3b-img371.sh'''png]]</ol><span id="test-the-data-compression-function-of-zfs"></span>
......=== Test the data compression function of ZFS ===
QMake version 3.1# 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
Using Qt version ::{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''5.15.3cd /pool1/''' in /usr/lib/aarch64-linux-gnu
<ol start="3" style="list-style-typeroot@orangepi: lower-alpha;"><li>Debian11 comes with QT version /pool1$ '''5sudo tar -cf text.15.2tar /var/log/ /etc/'''</li></ol>|}
orangepi@orangepi<ol start="2" style="list-style-type:~$ decimal;"><li>Then the file size that can be seen through the '''install_qt.shls -lh'''command and the space occupied in the ZFS pool are both '''27M'''</li>
[[File:pi3b-img372.png]]</ol><ol start="3" style="list-style-type: decimal;"><li>Then we enable compression in the ZFS pool pool1</li>{| class="wikitable" style="width:800px;" |-| root@orangepi:/pool1$ '''sudo zfs set compression=lz4 pool1'''|}</ol><ol start="4" style="list-style-type: decimal;"><li>Then execute the following command again to package the '''/var/log/''' and '''/etc/''' directories into a tar package</li>{| class="wikitable" style="width:800px;" |-| root@orangepi:/pool1$ '''sudo tar -cf text.tar /var/log/ /etc/'''|}</ol><ol start="5" style="list-style-type: decimal;"><li>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</li>
QMake version 3[[File:pi3b-img373.1png]]</ol><span id="how-to-shut-down-and-restart-the-development-board"></span>
Using Qt version '''5.15.2''' in /usr/lib/aarch64-linux-gnu== How to shut down and restart the development board ==
<ol start="4" style="list# During the running of the Linux system, if the Type-style-type: lower-alpha;"><li>Debian12 comes with QT version C power supply is directly unplugged, some data may be lost or damaged in the file system, so please use the '''5.15.8poweroff'''</li></ol>command to shut down the Linux system of the development board before powering off. Then unplug the power again.
::{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''install_qt.shsudo poweroff''' ......|}
QMake version 3<ol start="2" style="list-style-type: decimal;"><li>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.1</li>
Using Qt version '''5.15[[File:pi3b-img374.8''' in /usr/lib/aarch64-linux-gnupng]]
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
|-
|
<big>'''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.'''</big>
 
[[File:pi3b-img375.png|center]]
|}
</ol>
<ol start="3" style="list-style-type: decimal;">
<li>Then you can see Short press the QT Creator launch icon in '''Applications'''switch button on the development board after shutting down to start up.</li></ol>
[[File:pi3b-img327img374.png|576x270px]]</ol><ol start="4" style="list-style-type: decimal;"><li>The command to restart the Linux system is</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo''' '''reboot'''|}</ol><span id="linux-sdkorangepi-build-instructions"></span>
QT Creator can also be opened using the following command= '''Linux SDK——orangepi-build instructions''' =
orangepi@orangepi:~$ '''qtcreator'''<span id="compilation-system-requirements"></span>== Compilation system requirements ==
{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''During We can cross-compile the startup Linux image of QT and QT applicationsthe development board on the x64 computer, if or compile the Linux image of the development board on the Ubuntu22.04 system of the following error is displayeddevelopment board, ignore it. This error has no impact on application runningplease choose one according to your preference.'''
'''libGL error: failed to create dri screen'''
'''libGL If you use orangepi-build to compile the Linux image in the Ubuntu22.04 system of the development board, please do a good job of cooling (especially when the SSD starts). If the heat dissipation is not done well, it is prone to the error: failed to load driver: rockchipof file system runaway.'''</big>|}
'''libGL error: failed to create dri screen'''<span id="compile-with-the-ubuntu22.04-system-of-the-development-board"></span>=== Compile with the Ubuntu22.04 system of the development board ===
# The Linux SDK, namely '''libGL error: failed 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 load driver: rockchipcheck 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.
<ol start::{| class="4wikitable" style="list-style-typewidth: decimal800px;"><li>The interface after QT Creator is opened is as follows</li></ol>|-| orangepi@orangepi:~$ '''lsb_release -a'''
[[File:pi3b-img328No LSB modules are available.png|418x222px]]
<ol start="5" style="list-style-typeDistributor ID: decimal;"><li><p>The QT Creator version is shown below</p><ol style="list-style-type: lower-alpha;"><li>The default version of QT Creator in '''Ubuntu20.04''' is as follows</li></ol></li></ol>Ubuntu
[[FileDescription:pi3b-img329Ubuntu 22.png|419x224px]]04.1 LTS
Release: '''<ol start="2" span style="list-style-typecolor: lower-alpha;#FF0000">22.04<li/span>The default version of QT Creator in '''Ubuntu22.04''' is as follows</li></ol>
[[FileCodename:pi3b-img330.pngjammy|443x237px]]}
<ol start="32" style="list-style-type: lower-alphadecimal;"><li>The default version of QT Creator in '''Debian11<span style="color:#FF0000">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.</span>''' is as follows</li></ol>
[[File:pi3b<span id="compile-img331with-x64-ubuntu22.png|444x238px]]04-computer"></span>
<ol start="4" style="list-style-type: lower-alpha;"><li>The default version of QT Creator in '''Debian12''' is as follows</li></ol>= Compile with x64 Ubuntu22.04 computer ===
[[File:pi3b# The Linux SDK, '''orangepi-img332build''', 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.png|449x277px]]
<ol start::{| class="6wikitable" style="list-style-typewidth: decimal800px;"><li><p>Then set QT</p>|-<ol style="list-style-type| test@test: lower-alpha;"><li>First open '''Help~$ '''lsb_release -&gt;''a'About Plugins...'''</li></ol></li></ol>
[[File:pi3b-img333No LSB modules are available.png|573x164px]]
<ol start="2" style="list-style-typeDistributor ID: lower-alpha;"><li>Then remove the check box for '''ClangCodeModel'''</li></ol>Ubuntu
[[FileDescription:pi3b-img334Ubuntu 22.png|408x254px]]04 LTS
Release: '''<ol start="3" span style="list-style-typecolor: lower-alpha;#FF0000">22.04<li/span><p>'''Restart QT Creator after the Settings are complete'''</p></li><li><p>Then make sure that QT Creator uses the GCC compiler, if the default is Clang, change it to GCC</p></li></ol>
'''Debian12 Please skip this step.'''Codename: jammy|}
[[File<ol start="2" style="list-style-type:pi3bdecimal;"><li><p>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-img335build has not been tested in the WSL virtual machine, so it cannot be guaranteed that orangepi-build can be used normally in WSL.png|576x315px]]</p></li><li><p>The download address of the installation image of Ubuntu 22.04 '''<span style="color:#FF0000">amd64</span>''' version is:</p></li>
{| class="wikitable" style="width:800px;" |-| [[Filehttps://repo.huaweicloud.com/ubuntu-releases/21.04/ubuntu-21.04-desktop-amd64.iso '''https:pi3b//mirrors.tuna.tsinghua.edu.cn/ubuntu-img336releases/22.png|575x307px]04/ubuntu-22.04-desktop-amd64.iso''']
<ol start="7" style="list-style-type: decimal;"><li>You can then open a sample code</li></ol>Or
[[File'''https:pi3b//repo.huaweicloud.com/ubuntu-img337releases/22.png04/ubuntu-22.04.1-desktop-amd64.iso'''|575x312px]]}</ol><ol start="4" style="list-style-type: decimal;"><li><p>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</p><ol style="list-style-type: lower-alpha;"><li>For the method of replacing Tsinghua source, please refer to the instructions on this web page</li>
{| class="wikitable" style="width:800px;" |-| '''https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/'''|}</ol><ol start="82" style="list-style-type: decimallower-alpha;"><li>Clicking on the example code will automatically open the corresponding instruction document, you can carefully read Note that the instructionsUbuntu version needs to be switched to 22.04</li></ol>
[[File:pi3b-img338img376.png|576x218px]]</ol><ol start="3" style="list-style-type: lower-alpha;"><li>The content of the '''/etc/apt/sources.list''' file that needs to be replaced is</li>
<ol start{| class="9wikitable" style="list-style-typewidth: decimal800px;"><li>Then click |-| test@test:~$ '''Configure Projectsudo mv /etc/apt/sources.list /etc/apt/sources.list.bak'''</li></ol>
[[Filetest@test:pi3b-img339~$ '''sudo vim /etc/apt/sources.png|575x304px]]list'''
<ol start="10" style="list-style-type: decimal;"p><li>Then click the green triangle in # By default, the lower left corner source image is commented to compile and run improve the sample code</li>speed of apt update, you can uncomment it yourself if necessary</olp>
[[Filedeb https:pi3b-img340//mirrors.png|575x312px]]tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
<ol start="11" style="listp># deb-style-typesrc https: decimal;"><li>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</li>/mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse</olp>
[[Filedeb https:pi3b//mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-img341.png|576x308px]]updates main restricted universe multiverse
<ol start="12" style="listp># deb-style-typesrc https: decimal;"><li>Reference documents</li>/mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse</olp>
deb https://wikimirrors.qttuna.iotsinghua.edu.cn/ubuntu/Install_Qt_5_on_Ubuntujammy-backports main restricted universe multiverse
<p># deb-src https://downloadmirrors.qttuna.iotsinghua.edu.cn/ubuntu/archivejammy-backports main restricted universe multiverse</qtcreatorp>
deb https://downloadmirrors.qttuna.iotsinghua.edu.cn/archiveubuntu/qt <span id="ros-installationjammy-method"></span>== ROS Installation Method ==security main restricted universe multiverse
<span id="how-to-install-ros-1-noetic-onp># deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-20.04">security main restricted universe multiverse</spanp>=== 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'''
[[File:pi3b<p># Pre-img342.png|345x235px]]release software source, not recommended to enable</p>
[[File<p># deb https:pi3b//mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-img343.png|576x210px]]proposed main restricted universe multiverse</p>
[http<p># deb-src https://docsmirrors.rostuna.orgtsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse</p>|}</ httpol><ol start="4" style="list-style-type:lower-alpha;"><li>After the replacement, you need to update the package information and make sure there is no error</li>{| class="wikitable" style="width:800px;" |-| test@test:~$ '''sudo apt update'''|}</docsol><ol start="5" style="list-style-type: lower-alpha;"><li>'''<span style="color:#FF0000">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.ros.org]</span>'''</li></ol></li></ol><span id="get-the-source-code-of-linux-sdk"></span>
'''https://wiki.ros.org/Distributions'''== Get the source code of Linux sdk ==
<ol startspan id="2" style="listdownload-orangepi-build-stylefrom-type: decimal;github"><li>The official installation document link of ROS 1 '''Noetic Ninjemys''' is as follows:</li></olspan>=== Download orangepi-build from github ===
[http://wiki# The Linux sdk actually refers to the code of orangepi-build. orangepi-build is modified based on the armbian build system.rosUsing orangepi-build, multiple versions of Linux images can be compiled.org/noetic/Installation/Ubuntu '''httpFirst download the code of orangepi-build, the command is as follows://wiki.ros.org/noetic/Installation/Ubuntu''']
<ol start::{| class="3wikitable" style="list-style-typewidth: decimal800px;"><li>In the official installation document of ROS |-| test@test:~$ '''Noetic Ninjemys''', Ubuntu recommends using Ubuntu20.04, so please make sure that the system used by the development board is '''Ubuntu20.04 desktop systemsudo apt-get update'''</li></ol>
httptest@test://wiki.ros.org/noetic/Installation~$ '''sudo apt-get install -y git'''
[[Filetest@test:pi3b~$ '''git clone https://github.com/orangepi-img344xunlong/orangepi-build.pnggit -b next'''|}::{| class="wikitable" style="background-color:#ffffdc;width:800px;" |312x176px]]-| <big>'''Note that the Orange Pi 3B development board needs to download the source code of the <span style="color:#FF0000">next</span> branch of orangepi-build. The above git clone command needs to specify the branch of the orangepi-build source code as next.'''</big>
<ol startdiv class="4figure" style="list-style-type: decimal;"><li>Then use the script below to install ros1</li></ol>
orangepi@orangepi3b[[File:~$ '''install_rospi3b-img377.sh ros1'''png|center]]
<ol start/div>|}::{| class="5wikitable" style="listbackground-style-typecolor:#ffffdc;width: decimal800px;">|-| <libig>Before using '''Downloading the ROS toolorangepi-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), you first need if the Ubuntu PC prompts the user to initialize rosdepenter 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 then you can quickly install some system dependencies and some core components in ROS when compiling password of the source codegithub account.'''</li></olbig>|}
'''Note that running the following command needs to ensure that <ol start="2" style="list-style-type: decimal;"><li>The u-boot and Linux kernel versions currently used by the development board can access github normally, otherwise an error will be reported due to network problems.'''are as follows</li>
{| class="wikitable" style="width:800px;text-align: center;"|-|'''The install_rosbranch'''|'''u-boot version'''|'''Linux Kernel version'''|-|'''legacy'''|'''u-boot 2017.sh script will try to modify /etc/hosts and automatically run the following commands09'''|'''Linux5. However, this method cannot guarantee normal access to github every time. If 10'''|}{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''The branch mentioned here is not the following error is displayed after installing ros1 in install_ros.sh, please find other ways to allow same thing as the Linux system branch of the development board orangepi-build source code, please do not confuse it. This branch is mainly used to access github normally, and then manually run the following Orderdistinguish different kernel source code versions.'''
'''https://rawCurrently, the Linux5.10 bsp kernel provided by RK is defined as the legacy branch.githubusercontentIf the mainline kernel is supported in the future, a current branch will be added.com'''</rosbig>|}</rosdistrool><ol start="3" style="list-style-type: decimal;"><li><p>orangepi-build will contain the following files and folders after downloading</master/rosdep/osxp><ol style="list-style-type: lower-homebrewalpha;"><li><p>'''build.yamlsh''': Compile the startup script</p></li><li><p>'''external''': Contains the configuration files needed to compile the image, specific scripts, and the source code of some programs, etc.</p></li><li><p>'''LICENSE'''Hit https:GPL 2 license file</p></rawli><li><p>README.githubusercontent.commd: orangepi-build documentation</rosp></rosdistro/master/rosdep/base.yamlli><li><p>'''scripts''': General script for compiling Linux images</p></li>{| class="wikitable" style="width:800px;" |-| test@test:~/orangepi-build$ '''ERROR: error loading sources list:ls'''
'''The read operation timed outbuild.sh &nbsp;&nbsp;&nbsp;&nbsp; external &nbsp;&nbsp;&nbsp;&nbsp; LICENSE &nbsp;&nbsp;&nbsp;&nbsp; README.md &nbsp;&nbsp;&nbsp;&nbsp; scripts'''|}{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''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.'''</big>|}</ol></li></ol><span id="download-the-cross-compilation-toolchain"></span>
orangepi@orangepi:~$ '''source /opt/ros/noetic/setup.bash'''=== Download the cross-compilation toolchain ===
orangepi@orangepi{| class="wikitable" style="background-color:#ffffdc;width:~$ 800px;" |-| <big>'''sudo rosdep initThe 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.'''</big>|}
Wrote /etc/ros/rosdep/sources# When orangepi-build runs for the first time, it will automatically download the cross-compilation toolchain and put it in the '''toolchains''' folder.listEvery time after running the build.d/20sh script of orangepi-build, it will check whether the cross-defaultcompilation 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.list
Recommended: please run<div class="figure">
rosdep update::[[File:pi3b-img378.png]]
orangepi</div><ol start="2" style="list-style-type: decimal;"><li>The image URL of the cross-compilation toolchain in China is the open source software image site of Tsinghua University</li>{| class="wikitable" style="width:800px;" |-| '''https://mirrors.tuna.tsinghua.edu.cn/armbian-releases/_toolchain/'''|}</ol><ol start="3" style="list-style-type: decimal;"><li>After '''toolchains''' is downloaded, it will contain multiple versions of cross-compilation toolchains, and the development board will only use two of them</li>{| class="wikitable" style="width:800px;" |-| test@orangepitest:~/orangepi-build$ '''rosdep updatels toolchains/'''
reading in sources list data from /etc/ros/rosdep/sourcesgcc-arm-11.list2-2022.d02-x86_64-aarch64-none-linux-gnu
Hit https://rawgcc-arm-11.githubusercontent2-2022.com/ros/rosdistro/master/rosdep/osx02-x86_64-arm-none-linux-homebrew.yamlgnueabihf
Hit https://rawgcc-arm-9.githubusercontent2-2019.com/ros/rosdistro/master/rosdep/base.yaml12-x86_64-aarch64-none-linux-gnu
Hit https://rawgcc-arm-9.githubusercontent2-2019.com/ros/rosdistro/master/rosdep/python.yaml12-x86_64-arm-none-linux-gnueabihf
Hit https://rawgcc-linaro-4.githubusercontent9.com/ros/rosdistro/master/rosdep/ruby4-2017.yaml01-x86_64_arm-linux-gnueabi
Hit https://rawgcc-linaro-5.githubusercontent5.com/ros/rosdistro/master/releases/fuerte0-2017.yaml10-x86_64_arm-linux-gnueabihf
Query rosdistro index https://rawgcc-linaro-7.githubusercontent4.com/ros/rosdistro/master/index1-v42019.yaml02-x86_64_aarch64-linux-gnu
Skip endgcc-oflinaro-life distro &quot;ardent&quot;7.4.1-2019.02-x86_64_arm-linux-gnueabi
Skip endgcc-oflinaro-life distro &quot;bouncy&quot;aarch64-none-elf-4.8-2013.11_linux
Skip endgcc-oflinaro-life distro &quot;crystal&quot;arm-linux-gnueabihf-4.8-2014.04_linux
Skip endgcc-oflinaro-life distro &quotarm-none-eabi-4.8-2014.04_linux|}</ol><ol start="4" style="list-style-type: decimal;"><li><p>The cross-compilation toolchain used to compile the Linux kernel source code is</p><ol style="list-style-type: lower-alpha;"><li>Linux5.10</li>{| class="wikitable" style="width:800px;" |-| '''gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu'''|}</ol></li></ol><ol start="5" style="list-style-type: decimal;dashing&quot"><li><p>The cross-compilation tool chain used to compile the u-boot source code is</p><ol style="list-style-type: lower-alpha;"><li>v2017.09</li>{| class="wikitable" style="width:800px;" |-| '''gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu'''|}</ol></li></ol><span id="orangepi-build-complete-directory-structure-description"></span>
Skip end=== orangepi-of-life distro &quot;eloquent&quot;build complete directory structure description ===
Add distro <ol style="list-style-type: decimal;"><li><p>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</p><ol style="list-style-type: lower-alpha;"><li>The git repository where the Linux kernel source code is stored is as follows:</li>{| class="wikitable" style="width:800px;" |-| '''https://github.com/orangepi-xunlong/linux-orangepi/tree/orange-pi-5.10-rk35xx'''|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li>The git warehouse where the b.u-boot source code is stored is as follows:</li>{| class="wikitable" style="width:800px;" |-| '''https://github.com/orangepi-xunlong/u-boot-orangepi/tree/v2017.09-rk3588'''|}</ol></li></ol><ol start="2" style="list-style-type: decimal;"><li><p>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:</p>:<p>a. '''build.sh''': compile startup script</p>:<p>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</p>:<p>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</p>:<p>d. '''LICENSE''': GPL 2 license file</p>:<p>e. '''README'''.md: orangepi-build documentation</p>:<p>f. '''output''': Store compiled deb packages such as u-boot and Linux, compilation logs, and compiled images and other files</p>:<p>g. '''scripts''': general scripts for compiling Linux images</p>:<p>h. '''toolchains''': store cross-compilation toolchain</p>:<p>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</p>:<p>j. '''userpatches''': Store configuration files needed to compile scripts</p></li>:{| class="wikitable" style="width:800px;" |-| <p>test@test:~/orangepi-build$ '''ls'''</p><p>'''build.sh &nbsp;&nbsp;&nbsp; external &nbsp;&nbsp;&nbsp; kernel &nbsp;&nbsp;&nbsp; LICENSE &nbsp;&nbsp;&nbsp; output &nbsp;&nbsp;&nbsp; README.md &nbsp;&nbsp;&nbsp; scripts &nbsp;&nbsp;&nbsp; toolchains &nbsp;&nbsp;&nbsp; u-boot &nbsp;&quotnbsp;foxy&quotnbsp;userpatches'''</p>|}</ol><span id="compile-u-boot"></span>
Add distro &quot;galactic&quot;== Compile u-boot ==
Skip end-of-life distro &quot;groovy&quot;# Run the build.sh script, remember to add sudo permission
Add distro &quot;humble&quot::{| class="wikitable" style="width:800px;" |-| test@test:~/orangepi-build$ '''sudo ./build.sh'''|}
Skip end-of-life distro &quot;hydro&quot; Skip end-of-life distro &quot;indigo&quot; Skip end-of-life distro &quot;jade&quot; Skip end-of-life distro &quot;kinetic&quot; Skip end-of-life distro &quot;lunar&quot; Add distro &quot;melodic&quot; Add distro &quot;noetic&quot; Add distro &quot;rolling&quot; updated cache in /home/orangepi/.ros/rosdep/sources.cache <ol start="62" style="list-style-type: decimal;"><li><p>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 normallyorangepi@orangepi:~$ Select '''test_ros.shU-boot package'''</p></li><li><p>After running the '''test_ros.sh''' script, a little turtle as shown in the figure below will pop up</p>then enter</li></ol>
<div class="figure">
[[File:pi3b-img345img379.png|575x275px|图片4]]
</div></ol><ol start="83" style="list-style-type: decimal;"><li>Then please keep select the terminal window just opened at model of the topdevelopment board</li></ol>
<div class="figure">
[[File:pi3b-img346img380.png|576x275px|图片5]]
</div></ol><ol start="94" style="list-style-type: decimal;"><li>At this time, press the direction keys on the keyboard <p>Then it will start to control the little turtle to move up, down, leftcompile u-boot, and rightsome information prompted during compilation is explained as follows</p><ol style="list-style-type: lower-alpha;"><li>u-boot source code version</olli>{| class="wikitable" style="width:800px;" |-| [o.k. ] Compiling u-boot [File:pi3b-img347'''v2017.png09''' ]|575x296px]]}</ol><span idol start="how2" style="list-tostyle-installtype: lower-rosalpha;"><li>The version of the cross-2compilation toolchain</li>{| class="wikitable" style="width:800px;" |-galactic| [ o.k. ] Compiler version [ '''aarch64-onlinux-ubuntugnu-20gcc 7.04">4.1''' ]|}</spanol><ol start="3" style== How "list-style-type: lower-alpha;"><li>Path to install ROS 2 Galactic on Ubuntu 20.04 =the generated u-boot deb package</li>{| class="wikitable" style="width:800px;" |-| # The current active version of ROS 2 is as follows, the recommended version is [ o.k. ] Target directory [ '''Galactic Geocheloneorangepi-build/output/debs/u-boot''']|}[[File</ol><ol start="4" style="list-style-type:pi3blower-alpha;"><li>The package name of the generated u-img348.pngboot deb package</li>{| class="wikitable" style="width:800px;" |576x271px]]-| [o.k. ] File name [File:pi3b'''linux-u-boot-legacy-img349orangepi3b_1.png0.0_arm64.deb''' ]|575x265px]]}</ol>[http<ol start="5" style="list-style-type:lower-alpha;"><li>Compilation time<//docs.ros.org/ httpli>{| class="wikitable" style="width://docs800px;" |-| [ o.rosk.orgRuntime [ '''http://docs.ros.org/en/galactic/Releases.html1 min''']|}</ol><ol start="26" style="list-style-type: decimallower-alpha;"><li>The link Repeat the command to compile u-boot, use the following command to start compiling u-boot directly without selecting through the official ROS 2 graphical interface</li>{| class="wikitable" style="width:800px;" |-| [ o.k. ] Repeat Build Options [ '''Galactic Geochelonesudo ./build.sh BOARD=orangepi3b BRANCH=legacy BUILD_OPT=u-boot KERNEL_CONFIGURE=no''' installation documentation is as follows:]|}</ol></li></ol><ol start="5" style="list-style-type: decimal;"><li>View the u-boot deb package generated by compilation</li>{| class="wikitable" style="width:800px;" |-| test@test:~/orangepi-build$ '''ls output/debs/u-boot/'''
linux-u-boot-legacy-orangepi3b_1.0.0_arm64.deb|}</ol><ol start="6" style="list-style-type: decimal;"><li><p>The files contained in the generated u-boot deb package are as follows</p><ol style="list-style-type: lower-alpha;"><li>Use the following command to decompress the deb package</li>{| class="wikitable" style="width:800px;" |-| test@test:~/orangepi-build$ '''docs.ros.orgcd output/endebs/galactic/Installation.htmlu-boot'''
'''httptest@test:~/orangepi_build/docs.ros.org/en/galacticoutput/Installationdebs/Ubuntuu-Installboot$ $ '''dpkg -Debians.htmlx'''\
<ol start="3" style="list'''linux-u-styleboot-type: decimallegacy-orangepi3b_1.0.0_arm64.deb . (Note that there is a &quot;"><li><p>It is recommended to use Ubuntu20.04 in &quot; at the official installation document end 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'''</p></li><li><p>Use the command)'''install_ros.sh''' script to install ros2</p></li></ol>
orangepitest@orangepitest:~/orangepi_build/output/debs/u-boot$ '''install_ros.sh ros2ls'''
linux-u-boot-legacy-orangepi3b_1.0.0_arm64.deb '''usr'''|}</ol><ol start="52" style="list-style-type: decimallower-alpha;"><li>The decompressed file is as follows</li>{| class="wikitable" style="width:800px;" |-| test@test:~/orangepi-build/output/debs/u-boot$ '''install_ros.sh''' script will automatically run the '''ros2 -htree usr''' command after installing ros2. If you can see the following print, it means that the ros2 installation is complete</li></ol>
usage: ros2 [-h] Call `ros2 &lt;command&gt; -h` for more detailed usage. ...usr
ros2 is an extensible command-line tool for ROS 2.└── lib
optional arguments:├── linux-u-boot-legacy-orangepi3b_1.0.0_arm64
-h, --help show this help message and exit:│   ├── idbloader.img
Commands:│   ├── rkspi_loader.img
action Various action related sub:│   └── u-commandsboot.itb
bag Various rosbag related sub:└── u-commandsboot
component Various component related sub-commands::├── LICENSE
daemon Various daemon related sub::├── orangepi-commands3b-rk3566_defconfig
doctor Check ROS setup and other potential issues::└── platform_install.sh
interface Show information about ROS interfaces
launch Run a launch file3 directories, 6 files|}</ol></li></ol><ol start="7" style="list-style-type: decimal;"><li>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:</li>
lifecycle Various lifecycle related subSet the IGNORE_UPDATES variable in userpatches/config-commandsdefault.conf to &quot;yes&quot;
multicast Various multicast related sub{| class="wikitable" style="width:800px;" |-commands| test@test:~/orangepi-build$ '''vim userpatches/config-default.conf'''
node Various node related subIGNORE_UPDATES=&quot;'''<span style="color:#FF0000">yes</span>'''&quot;|}</ol><ol start="8" style="list-commandsstyle-type: decimal;"><li><p>When debugging u-boot code, you can use the following method to update u-boot in the Linux image for testing</p><ol style="list-style-type: lower-alpha;"><li>Upload the compiled u-boot deb package to the Linux system of the development board</li>{| class="wikitable" style="width:800px;" |-| test@test:~/orangepi-build$ '''cd output/debs/u-boot'''
param Various param related subtest@test:~/orangepi_build/output/debs/u-commandsboot$ '''scp \'''
pkg Various '''linux-u-boot-legacy-orangepi3b_1.0.0_arm64.deb root@192.168.1.xxx:/root'''|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li>Then log in to the development board and uninstall the deb package related subof u-boot installed</li>{| class="wikitable" style="width:800px;" |-| root@orangepi:~# '''apt purge -y linux-u-boot-orangepi3b-legacy'''|}</ol><ol start="3" style="list-style-type: lower-alpha;"><li>Install the new u-boot deb package just uploaded</li>{| class="wikitable" style="width:800px;" |-| root@orangepi:~# '''dpkg -i''' '''linux-u-boot-legacy-orangepi3b_1.0.0_arm64.deb'''|}</ol><ol start="4" style="list-style-type: lower-alpha;"><li>Then run the nand-sata-install script</li>{| class="wikitable" style="width:800px;" |-| root@orangepi:~# '''nand-sata-install'''|}</ol><ol start="5" style="list-style-type: lower-alpha;"><li>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-commandsboot in the SPI Flash</li>
run Run [[File:pi3b-img381.png]]</ol><ol start="6" style="list-style-type: lower-alpha;"><li>After pressing the Enter key, a package specific executableWarning will pop up first</li>
security Various security related sub[[File:pi3b-commandsimg382.png]]</ol><ol start="7" style="list-style-type: lower-alpha;"><li>Press the Enter key again to start updating u-boot, and the following information will be displayed after the update is completed</li>
service Various service related sub[[File:pi3b-commandsimg383.png]]</ol><ol start="8" style="list-style-type: lower-alpha;"><li>Then you can restart the development board to test whether the modification of u-boot takes effect</li></ol></li></ol><!-- --><ol start="9" style="list-style-type: decimal;"><li><p>Other useful information</p><ol style="list-style-type: lower-alpha;"><li>In the u-boot 2017.09 source code, the defconfig configuration file used by the development board is</li>{| class="wikitable" style="width:800px;" |-| [https://github.com/orangepi-xunlong/u-boot-orangepi/blob/v2017.09-rk3588/configs/orangepi_5_defconfig '''orangepi-build/u-boot/v2017.09-rk3588/configs/orangepi-3b-rk3566_defconfig''']|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li>In the u-boot 2017.09 source code, the dts file used by the development board is</li>{| class="wikitable" style="width:800px;" |-| [https://github.com/orangepi-xunlong/u-boot-orangepi/blob/v2017.09-rk3588/arch/arm/dts/rk3588s-orangepi-5.dts '''orangepi-build/u-boot/v2017.09-rk3588/arch/arm/dts/rk3566-orangepi-3b.dts''']|}</ol></li></ol><span id="compile-the-linux-kernel"></span>
topic Various topic related sub-commands== Compile the Linux kernel ==
wtf Use `wtf` as alias # Run the build.sh script, remember to `doctor`add sudo permission
Call `ros2 &lt;command&gt::{| class="wikitable" style="width:800px; " |-| test@test:~/orangepi-h` for more detailed usagebuild$ '''sudo ./build.sh'''|}
<ol start="62" style="list-style-type: decimal;"><li>Then you can use the Select '''test_ros.shKernel package''' script to test whether ROS 2 is installed successfully. If you can see the following print, it means that ROS 2 can run normallythen enter</li></ol>
orangepi@orangepi3b:~$ '''test_ros.sh'''<div class="figure">
[INFO] [1671174101File:pi3b-img384.200091527png] [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]</div></ol><ol start="73" style="list-style-type: decimal;"><li>Run Then select the model of the following command to open rviz2development board</li></ol> orangepi@orangepi:~$ '''source /opt/ros/galactic/setup.bash''' orangepi@orangepi:~$ '''ros2 run rviz2 rviz2'''
<div class="figure">
[[File:pi3b-img350img380.png|576x324px|1]]
</div></ol><ol start="84" style="list-style-type: decimal;"><li>For Then it will prompt whether to display the kernel configuration interface. If you do not need to modify the usage of ROSkernel configuration, please refer select the first one. If you need to modify the kernel configuration, select the documentation of ROS 2second one.</li></ol>
http[[File:pi3b-img385.png]]<//docsol><ol start="5" style="list-style-type: decimal;"><li>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.rosAt this time, you can directly modify the kernel configuration, save and exit after modification.org/enYes, after exiting, the kernel source code will be compiled</galactic/Tutorials.htmlli>
<span id="how[[File:pi3b-to-install-ros-2-humble-on-ubuntu-22.04"></span>=== How to install ROS 2 Humble on Ubuntu 22img386.04 ===png]]
# Use <ol style="list-style-type: lower-alpha;"><li>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</li>{| class="wikitable" style="width:800px;" |-| test@test:~/orangepi-build$ '''install_rossudo ./build.shKERNEL_CONFIGURE=no'''|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li><p>You can also set '''KERNEL_CONFIGURE=no''' in the '''orangepi-build/userpatches/config-default.conf''' configuration file, which can permanently disable this function</p></li><li><p>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 to install ros2again</p></li>
orangepi@orangepi[[File:pi3b-img387.png]]</ol></ol><ol start="6" style="list-style-type: decimal;"><li><p>Part of the information prompted when compiling the kernel source code is as follows</p><ol style="list-style-type: lower-alpha;"><li>The version of the Linux kernel source code</li>{| class="wikitable" style="width:~$ 800px;" |-| [ o.k. ] Compiling current kernel [ '''install_ros5.sh ros210.160''']|}</ol><ol start="2" style="list-style-type: decimallower-alpha;"><li>The version of the cross-compilation toolchain used</li>{| class="wikitable" style="width:800px;" |-| [ o.k. ] Compiler version [ '''install_rosaarch64-none-linux-gnu-gcc 11.sh2.1''' script will automatically run ]|}</ol><ol start="3" style="list-style-type: lower-alpha;"><li>The configuration file used by the kernel by default and the path where it is stored</li>{| class="wikitable" style="width:800px;" |-| [ o.k. ] Using kernel config file [ '''ros2 config/kernel/linux-hrockchip-rk356x-legacy.config''' command after installing ros2. If you can see ]|}</ol><ol start="4" style="list-style-type: lower-alpha;"><li>The path of the following print, it means that deb package related to the ros2 installation is completekernel generated by compiling</li>{| class="wikitable" style="width:800px;" |-| [ o.k. ] Target directory [ '''orangepi-build/output/debs/''' ]|}</ol><ol start="5" style="list-style-type: lower-alpha;">usage<li>The package name of the compiled kernel image deb package</li>{| class="wikitable" style="width: ros2 800px;" |-| [ o.k. ] File name ['''linux-image-legacy-rockchip-rk356x_1.0.0_arm64.deb''' ]|}</ol><ol start="6" style="list-style-type: lower-alpha;"><li>The time used for compilation</li>{| class="wikitable" style="width:800px;" |-h| [ o.k. ] Runtime [ '''5 min''' ] Call `ros2 &lt|}</ol><ol start="7" style="list-style-type: lower-alpha;"><li>Finally, the compilation command to repeatedly compile the kernel selected last time will be displayed. Use the following command&gtto start compiling the kernel source code directly without selecting through the graphical interface</li>{| class="wikitable" style="width:800px; " |-h` for more detailed usage| [ o.k. ] Repeat Build Options [ '''sudo ./build.sh BOARD=orangepi3b BRANCH=legacy BUILD_OPT=kernel KERNEL_CONFIGURE=no''' ]|}</ol></li></ol><ol start="7" style="list-style-type: decimal;"><li><p>View the deb package related to the kernel generated by compilation</p><ol style="list-style-type: lower-alpha;"><li><p>'''linux-dtb-legacy-rockchip-rk356x_1.0.0_arm64.deb''' Contains dtb files used by the kernel</p></li><li><p>'''linux-headers-legacy-rockchip-rk356x_1.0.0_arm64. deb''' Include kernel header files</p></li><li><p>'''linux-image-legacy-rockchip-rk356x_1.0.0_arm64.deb''' Contains kernel images and kernel modules</p></li>{| class="wikitable" style="width:800px;" |-| test@test:~/orangepi-build$ '''ls output/debs/linux-*'''
ros2 is an extensible commandoutput/debs/linux-line tool for ROS 2dtb-legacy-rockchip-rk356x_1.0.0_arm64.deb output/debs/linux-image-legacy-rockchip-rk356x_1.0.0_arm64.deb
optional argumentsoutput/debs/linux-headers-legacy-rockchip-rk356x_1.0.0_arm64.deb|}</ol></li></ol><ol start="8" style="list-style-type:decimal;"><li><p>The files contained in the generated Linux-image deb package are as follows</p><ol style="list-h, style-type: lower-help show this help message and exitalpha;"><li>Use the following command to decompress the deb package</li>Commands{| class="wikitable" style="width:800px;" |-| test@test:~/orangepi-build$ '''cd output/debs'''
action Various action related sub-commandstest@test:~/orangepi_build/output/debs$ '''mkdir test'''
bag Various rosbag related sub-commandstest@test:~/orangepi_build/output/debs$ '''cp \'''
component Various component related sub'''linux-commandsimage-legacy-rockchip-rk356x_1.0.0_arm64.deb test/'''
daemon Various daemon related sub-commandstest@test:~/orangepi_build/output/debs$ '''cd test'''
doctor Check ROS setup and other potential issuestest@test:~/orangepi_build/output/debs/test$ '''dpkg -x \'''
interface Show information about ROS interfaces'''linux-image-legacy-rockchip-rk356x_1.0.0_arm64.deb .'''
launch Run a launch filetest@test:~/orangepi_build/output/debs/test$ '''ls'''
lifecycle Various lifecycle related sub'''boot etc lib''' linux-commandsimage-legacy-rockchip-rk356x_1.0.0_arm64.deb '''usr'''|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li>The decompressed file is as follows</li>{| class="wikitable" style="width:800px;" |-| test@test:~/orangepi-build/output/debs/test$ '''tree -L 2'''
multicast Various multicast related sub-commands.
node Various node related sub-commands├── boot
param Various param related sub│   ├── config-commands5.10.160-rockchip-rk356x
pkg Various package related sub│   ├── System.map-commands5.10.160-rockchip-rk356x
run Run a package specific executable│   └── vmlinuz-5.10.160-rockchip-rk356x
security Various security related sub-commands├── etc
service Various service related sub-commands│   └── kernel
topic Various topic related sub-commands├── lib
wtf Use `wtf` as alias to `doctor`│   └── modules
Call `ros2 &lt;command&gt; ├── linux-h` for more detailed usageimage-legacy-rockchip-rk356x_1.0.0_arm64.deb
<ol start="3" style="list-style-type: decimal;"><li>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</li></ol>└── usr
orangepi@orangepi3b:~$ '''test_ros.sh'''├── lib
[INFO] [1671174101.200091527] [talker]: Publishing└── share|}</ol></li></ol><ol start="9" style="list-style-type: decimal;"><li>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)'''Hello World, otherwise the The changes made will be reverted as follows: 1'</li>
[INFO] [1671174101Set the IGNORE_UPDATES variable in '''userpatches/config-default.235661048] [listener]: I heard: [Hello World: 1]conf''' to &quot;yes&quot;
[INFO] [1671174102.199572327] [talker]{| class="wikitable" style="width: Publishing800px;" |-| test@test: ~/orangepi-build$ '''vim userpatches/config-default.conf''Hello World: 2'
[INFO] [1671174102.204196299] [listener]IGNORE_UPDATES=&quot;'''<span style="color: I heard#FF0000">yes</span>'''&quot;|}</ol><ol start="10" style="list-style-type: [Hello Worlddecimal;"><li><p>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</p><ol style="list-style-type: 2]lower-alpha;"><li>Upload the deb package of the compiled Linux kernel to the Linux system of the development board</li>{| class="wikitable" style="width:800px;" |-| test@test:~/orangepi-build$ '''cd output/debs'''
[INFO] [1671174103.199580322] [talker]: Publishingtest@test: ~/orangepi-build/output/debs$ '''scp \''Hello World: 3'
'''linux-image-legacy-rockchip-rk356x_1.0.0_arm64.deb root@192.168.1.xxx:/root'''|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li>Then log in to the development board and uninstall the deb package of the installed Linux kernel</li>{| class="wikitable" style="width:800px;" |-| root@orangepi:~# '''apt purge -y linux-image-legacy-rockchip-rk356x'''|}</ol><ol start="3" style="list-style-type: lower-alpha;"><li>Install the deb package of the new Linux kernel just uploaded</li>{| class="wikitable" style="width:800px;" |-| root@orangepi:~# '''dpkg -i linux-image-legacy-rockchip-rk356x_1.0.0_arm64.deb'''|}</ol><ol start="4" style="list-style-type: lower-alpha;"><li>Then restart the development board, and then check whether the kernel-related modifications have taken effect</li>{| class="wikitable" style="width:800px;" |-| root@orangepi:~# '''reboot'''|}</ol></li></ol><ol start="11" style="list-style-type: decimal;"><li><p>Other useful information</p><ol style="list-style-type: lower-alpha;"><li>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</li>{| class="wikitable" style="width:800px;" |-| [INFO] [1671174103https://github.com/orangepi-xunlong/orangepi-build/blob/next/external/config/kernel/linux-rockchip-rk3588-legacy.config '''orangepi-build/external/config/kernel/linux-rockchip-rk356x-legacy.204019965] [listenerconfig''']|}</ol><ol start="2" style="list-style-type: I heardlower-alpha;"><li>The location of the dts file used by the development board is</li>{| class="wikitable" style="width: 800px;" |-| [Hello Worldhttps: 3//github.com/orangepi-xunlong/linux-orangepi/blob/orange-pi-5.10-rk3588/arch/arm64/boot/dts/rockchip/rk3588s-orangepi-5.dts '''orangepi-build/kernel/orange-pi-5.10-rk35xx/arch/arm64/boot/dts/rockchip/rk3566-orangepi-3b.dts''']|}</ol></li></ol><span id="compile-rootfs"></span> == Compile rootfs ==
<ol start="4" style="list-style-type: decimal;"><li># Run the following command build.sh script, remember to open rviz2</li></ol>add sudo permission
orangepi::{| class="wikitable" style="width:800px;" |-| test@orangepitest:~/orangepi-build$ '''source /opt/ros/humblesudo ./setupbuild.bashsh'''|}
orangepi@orangepi<ol start="2" style="list-style-type:~$ decimal;"><li>Select '''ros2 run rviz2 rviz2Rootfs and all deb packages''', then enter</li>
<div class="figure">
[[File:pi3b-img351img388.png|576x324px|1]]
</div></ol><ol start="53" style="list-style-type: decimal;"><li>Reference documentsThen select the model of the development board</li></ol>
'''http://docs.ros.org/en/humble/index.html'''<div class="figure">
[http[File://docs.ros.org/en/galactic/Tutorials.html '''http://docs.ros.org/en/humble/Installation/Ubuntu-Installpi3b-Debiansimg380.html'''png]]
<span id/div></ol><ol start="how4" style="list-tostyle-install-kernel-header-filestype: decimal;"><li>Then select the type of rootfs</spanli>== How to install kernel header files ==
# The Linux [[File:pi3b-img389.png]]</ol><ol start="5" style="list-style-type: decimal;"><li><p>Then select the type of image released by OPi comes </p><ol style="list-style-type: lower-alpha;"><li><p>'''Image with console interface (server)''' Indicates the deb package image of the kernel header file by defaultserver version, and the storage location which is relatively small</p></li><li><p>'''/opt/Image with desktop environment'''Indicates a image with a desktop, which is relatively large</p></li>
orangepi@orangepi:~$ '''ls /opt/linux-headers*''' /opt/linux-headers-legacy-rockchip-rk356x_x.x.x_arm64.deb <ol startdiv class="2figure" style="list-style-type: decimal;"><li>Use the following command to install the deb package of the kernel header file</li></ol> '''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''' <ol start="3" style="list-style-type: decimal;"><li>After installation, you can see the folder where the kernel header files are located under '''/usr/src'''</li></ol>
orangepi@orangepi[[File:~$ '''ls /usr/src'''pi3b-img390.png]]
linux-headers-5.10.160-rockchip-rk356x <ol start="4" style="list-style-type: decimal;"><li><p>Then you can write a hello kernel module to test the kernel header file</p><ol style="list-style-type: lower-alpha;"><li>First write the code of the hello kernel module, as follows:</lidiv></ol>
</li></ol>
<ol start="6" style="list-style-type: decimal;">
<li>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)'''</li>
orangepi@orangepi:~$ '''vim hello.c'''<div class="figure">
#include &lt;linux/init[[File:pi3b-img391.h&gt;png]]
#include &lt</div></ol><ol start="7" style="list-style-type: decimal;linux"><li>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</module.h&gt;li>
static int hello_init(void)<div class="figure">
{[[File:pi3b-img392.png]]
printk(&quot;Hello Orange Pi </div>[[File:pi3b-- init\n&quot;);img393.png]]
return 0;You can then select additional packages that need to be installed. Please press the Enter key to skip directly here.
[[File:pi3b-img394.png]]</ol><ol start="8" style="list-style-type: decimal;"><li><p>Then it will start to compile rootfs, and some of the information prompted during compilation are as follows</p><ol style="list-style-type: lower-alpha;"><li>The type of rootfs</li>{| class="wikitable" style="width:800px;" |-| [ o.k. ] local not found [ Creating new rootfs cache for '''jammy''']|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li>The storage path of the compiled rootfs compressed package</li>{| class="wikitable" style="width:800px;" |-| [ o.k. ] Target directory [ '''external/cache/rootfs''' ]|}</ol>static void hello_exit(void)<ol start="3" style="list-style-type: lower-alpha;"><li>The name of the rootfs compressed package generated by compilation</li>{| class="wikitable" style="width:800px;" |-| [ o.k. ] File name [ '''jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4''' ]|}</ol><ol start="4" style="list-style-type: lower-alpha;"><li>The time used for compilation</li>printk(&quot{| class="wikitable" style="width:800px;Hello Orange Pi " |-| [ o.k. ] Runtime [ '''13 min''' ]|}</ol></li></ol><ol start="9" style="list- exit\n&quotstyle-type: decimal;)"><li><p>View the rootfs compressed package generated by compilation</p><ol style="list-style-type: lower-alpha;"><li><p>'''jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4''' is the rootfs compressed package, the meaning of each field of the name is</p>return<ol style="list-style-type: none;"><li><p>a) '''jammy''' indicates the type of Linux distribution of rootfs</p></li>}<li><p>b) '''xfce''' means rootfs is the type of desktop version, if it is '''cli''', it means the type of server version</p></li><li><p>c) '''arm64''' represents the architecture type of rootfs</p></li>module_init(hello_init<li><p>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</p></li></ol></li><li><p>'''jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4.list''' lists the package names of all packages installed by rootfs</p></li>{| class="wikitable" style="width:800px;" |-| test@test:~/orangepi-build$ '''ls external/cache/rootfs/'''
module_exit(hello_exit);'''jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4'''
MODULE_LICENSE(&quot;GPL&quot;);jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4.current
jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4.list|}</ol></li></ol><ol start="210" style="list-style-type: lower-alphadecimal;"><li>Then write If the required rootfs already exists under '''external/cache/rootfs''', then compiling rootfs again will directly skip the Makefile for compilation process and will not restart the compilation. When compiling the hello kernel moduleimage, it will also go to '''external/cache/rootfs''' to find out whether it has If there is rootfs available in the cache, as follows:use it directly, which can save a lot of download and compilation time.</li></ol>
orangepi@orangepi:~$ '''vim Makefile'''<span id="compile-linux-image"></span>
ifneq ($(KERNELRELEASE),)== Compile Linux image ==
obj-m:=hello# Run the build.osh script, remember to add sudo permission
else::{| class="wikitable" style="width:800px;" |-| test@test:~/orangepi-build$ '''sudo ./build.sh'''|}
KDIR :<ol start="2" style=/lib/modules/$(shell uname "list-style-r)type: decimal;"><li>Select '''Full OS image for flashing''', then enter</buildli>
PWD :<div class=$(shell pwd)"figure">
all[[File:pi3b-img395.png]]
make </div></ol><ol start="3" style="list-style-C $(KDIR) M=$(PWD) modulestype: decimal;"><li>Then select the model of the development board</li>
clean:<div class="figure">
rm [[File:pi3b-f *img380.ko *.o *.mod.o *.mod *.symvers *.cmd *.mod.c *.orderpng]]
endif</div></ol><ol start="4" style="list-style-type: decimal;"><li>Then select the type of rootfs</li>
[[File:pi3b-img389.png]]</ol><ol start="35" style=" list-style-type: decimal;"><li><p>Then select the type of image</p><ol style="list-style-type: lower-alpha;"><li>Then use <p>'''Image with console interface (server)''' Indicates the make command to compile the hello kernel module. The output image of the compilation process server version, which is as follows:relatively small</p></li><li><p>'''Image with desktop environment''' Indicates a image with a desktop, which is relatively large</olp></li>
'''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.'''<div class="figure">
[[File:pi3b-img352img390.png|337x52px]]
orangepi@orangepi</div></ol></li></ol><ol start="6" style="list-style-type:~$ decimal;"><li>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 '''make(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)'''</li>
make -C /lib/modules/5.10.160-rockchip-35xx/build M<div class=/home/orangepi modules"figure">
make[1][File: Entering directory '/usr/src/linux-headerspi3b-5img391.10.160-rockchip-rk35xx'png]]
CC [M] </homediv></orangepiol><ol start="7" style="list-style-type: decimal;"><li>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</hello.oli>
MODPOST /home/orangepi/Module.symvers<div class="figure">
CC [M[File:pi3b-img392.png]] /home/orangepi/hello.mod.o
LD </div>[[MFile:pi3b-img393.png]] /home/orangepi/hello.ko
make[1]: Leaving directory '/usr/src/linux-headers-5You can then select additional packages that need to be installed.10Please press the Enter key to skip directly here.160-rockchip-rk35xx'
[[File:pi3b-img394.png]]</ol><ol start="48" style="list-style-type: decimal;" ><li><p>Then it will start to compile the Linux image. The general process of compilation is as follows</p><ol style="list-style-type: lower-alpha;"><li><p>Initialize the compilation environment of Ubuntu PC and install the software packages required for the compilation process</p></li><li><p>Download the source code of u-boot and Linux kernel (if cached, only update the code)</p></li><li><p>Compile u-boot source code and generate u-boot deb package</p></li><li><p>Compile the Linux source code and generate Linux-related deb packages</p></li><li><p>Make the deb package of Linux firmware</p></li><li><p>Make the deb package of the orangepi-config tool</p></li><li><p>Create a deb package supported by the board</p></li><li><p>If you are compiling the desktop image, you will also create desktop-related deb packages</p></li><li><p>Check whether the rootfs has been cached, if not, recreate the rootfs, if it has been cached, directly decompress and use</p></li><li><p>Install the previously generated deb package into rootfs</p></li><li><p>Make some specific settings for different development boards and different types of images, such as pre-installing additional software packages, modifying system configuration, etc.</p></li><li><p>Then make an image file and format the partition, the default type is ext4</p></li><li><p>Then copy the configured rootfs to the mirrored partition</p></li><li><p>Then update initramfs</p></li><li><p>Finally, write the bin file of u-boot into the image through the dd command</p></li></ol></li><li><p>After compilingthe image, the following information will be prompted</p><ol style="list-style-type: lower-alpha;"><li>The storage path of the compiled image</li>{| class="wikitable" style="width:800px;" |-| [ 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''' ]|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li>Compilation time</li>{| class="wikitable" style="width:800px;" |-| '''[ o.k. ] Runtime [ 19 min ]'''|}</ol><ol start="3" style="list-style-type: lower-alpha;"><li>Repeat the command to compile the image, and use the following command to start compiling the image directly without selecting through the graphical interface</li>{| class="wikitable" style="width:800px;" |-| [ o.k. ] Repeat Build Options [ '''hellosudo ./build.kosh BOARD=orangepi3b BRANCH=legacy BUILD_OPT=image RELEASE=bullseye BUILD_MINIMAL=no BUILD_DESKTOP=no KERNEL_CONFIGURE=yes''' kernel module will be generated]|}</ol></li></ol><span id="android-11-operating-system-instructions"></span>
orangepi@orangepi:~$ = '''ls *.koAndroid 11 operating system instructions'''=
hello.ko<span id="supported-android-versions"></span>== Supported Android versions ==
<ol start{| class="5wikitable" style="list-stylewidth:800px;text-typealign: lower-alphacenter;"><li>Use the |-|'''insmodAndroid version''' command to insert the |'''Kernel version'''hello|-|'''Android 11'''|'''Linux4.ko19''' kernel module into the kernel</li></ol>|}
orangepi@orangepi:~$ '''sudo insmod hello.ko'''<span id="android-function-adaptation"></span>
<ol start="6" style="list-style-type: lower-alpha;"><li>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.</li></ol>Android Function Adaptation ==
orangepi@orangepi{| class="wikitable" style="width:800px;text-align:~$ center;"|-|'''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'''dmesg | grep &quot;Hello&quot;'''OK'''|-|'''Headphone recording'''|'''OK'''|-|'''LED Light'''|'''OK'''|-|'''GPU'''|'''OK'''|-|'''NPU'''|'''OK'''|-|'''VPU'''|'''OK'''|-|'''RTC'''|'''OK'''|}
[ 2871.893988] '''Hello Orange Pi <span id="wifi-connection- init'''test-method"></span>
<ol start="7" style="list-style-type: lower-alpha;"><li>Use the '''rmmod''' command to uninstall the '''hello.ko''' kernel module</li></ol>WIFI connection test method ==
orangepi@orangepi:~$ # First click enter '''sudo rmmod helloSetting'''
orangepi@orangepi:~$ '''dmesg | grep &quot;Hello&quot;''':[[File:pi3b-img396.png]]
[ 2871.893988] Hello Orange Pi <ol start="2" style="list-style- inittype: decimal;"><li>Then select '''Network &amp; internet'''</li>
[ 3173[File:pi3b-img397.800892png] ]</ol><ol start="3" style="list-style-type: decimal;"><li>Then select '''Hello Orange Pi -Wi- exitFi'''</li>
[[File:pi3b-img398.png]]</ol><span idol start="use-of-the-raspberry-pis-54" style="list-inchstyle-screentype: decimal;"></spanli>== Use of Then turn on the Raspberry PI's 5''Wi-inch screen ==Fi''' switch</li>
[[File:pi3b-img399.png]]<span id/ol><ol start="assembly-method-of-raspberry-pi-5" style="list-inchstyle-screentype: decimal;"><li>After turning on '''Wi-Fi''', if everything is normal, you can scan for nearby Wi-Fi hotspots</spanli>=== Assembly method of Raspberry PI 5-inch screen ===
<ol style="list[[File:pi3b-style-type: decimal;">img400.png]]<li><p>First prepare the required accessories</pol><ol start="6" style="list-style-type: lower-alphadecimal;"><li>Raspberry PI 5Then select the Wi-inch MIPI LCD display + touch screenFi you want to connect to, and the password input interface shown in the figure below will pop up</li></ol></li></ol>
<blockquote>[[File:pi3b-img353img401.png|306x219px]]</blockquoteol><ol start="27" style="list-style-type: lower-alphadecimal;"><li>15pin MIPI cableThen 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</li></ol>
<blockquote>[[File:pi3b-img354img402.png|276x111px]]</blockquoteol><ol start="28" style="list-style-type: decimal;"><li>Then connect After the 15pin MIPI cable to Wi-Fi connection is successful, the Raspberry PI 5-inch screen display is as shown in the way shown figure below (note the orientation of the insulation surface):</li></ol>
[[File:pi3b-img355img403.png|294x160px]]</ol><span id="how-to-use-wi-fi-hotspot"></span>
<ol start="3" style="listHow to use Wi-style-type: decimal;"><li>Finally connect to the LCD interface of the Orange Pi 3B development board</li></ol>Fi hotspot ==
[[File:pi3b-img356.png|333x199px]]# First, please make sure that the Ethernet port is connected to the network cable and can access the Internet normally# Then select '''Settings'''
<span id="open::[[File:pi3b-the-raspberry-pi-5-inch-screen-configuration-method"></span>=== Open the Raspberry PI 5-inch screen configuration method ===img396.png]]
<ol stylestart="list-style-type: decimal;3"><li><p>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.</p></li><li><p>The steps to open the mipi lcd configuration are as follows:</p><ol style="list-style-type: lower-alphadecimal;"><li>First run Then select '''orangepi-configNetwork &amp; internet''', ordinary users remember to add '''sudo''' permission</li></ol></li></ol>
orangepi@orangepi[[File:~$ pi3b-img397.png]]</ol><ol start="4" style="list-style-type: decimal;"><li>Then select '''sudo orangepi-configHotspot &amp; tethering'''</li>
[[File:pi3b-img404.png]]</ol><ol start="25" style="list-style-type: lower-alphadecimal;"><li>Then select '''SystemWi-Fi hotspot'''</li></ol>
[[File:pi3b-img357img405.png|575x272px]]</ol><ol start="6" style="list-style-type: decimal;"><li>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 (<span style="color:blue">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</span>)</li>
[[File:pi3b-img406.png]]</ol><ol start="37" style="list-style-type: lower-alphadecimal;"><li>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 select you can click '''AndroidAP_6953''' to connect to the hotspot, and the password can be seen under the '''HardwareHotspot password'''in the above picture</li></ol>
[[File:pi3b-img358img407.png|576x266px]]</ol><ol start="8" style="list-style-type: decimal;"><li>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.</li>
[[File:pi3b-img408.png]]</ol start><span id="4" style="listbluetooth-styletest-type: lower-alpha;method"><li>Then use the arrow keys on the keyboard to locate the Rasp-7inch-touchscreen, and then use the space button to check</li></olspan>
[[File:pi3b-img359.png|408x310px]]== Bluetooth test method ==
<ol start="5" style="list-style-type: lower-alpha;"><li>Then select # First click enter '''&lt;Save&gt;Setting''' to save</li></ol>
::[[File:pi3b-img360img396.png|404x133px]]
<ol start="62" style="list-style-type: lower-alphadecimal;"><li>Then select '''&lt;Back&gt;Connected devices'''</li></ol>
[[File:pi3b-img361img409.png|397x151px]]</ol><ol start="3" style="list-style-type: decimal;"><li>Then click '''Pair new device''' to turn on Bluetooth and start scanning the surrounding Bluetooth devices</li>
[[File:pi3b-img410.png]]</ol><ol start="74" style="list-style-type: lower-alphadecimal;"><li>Then select The searched Bluetooth devices will be displayed under '''&lt;Reboot&gt;Available devices''' to restart the system for the configuration to take effect</li></ol>
[[File:pi3b-img362img411.png|331x154px]]</ol><ol start="5" style="list-style-type: decimal;"><li>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</li>
'''[[File:pi3b-img412.png]]</ol><ol start="6" style="list-style-type: decimal;"><li>The above settings will eventually add test here is the configuration process of overlays=raspi-7inch-touchscreen to /boot/orangepiEnvthe development board and the Bluetooth of the Android mobile phone.txtAt this time, the following confirmation interface will pop up on the mobile phone. After setting, you can check it first. If this configuration does not existclicking the pairing button on the mobile phone, then there is a problem with the settings.'''pairing process will start</li>
'''If you find it troublesome to use orangepi[[File:pi3b-img413.png]]</ol><ol start="7" style="list-style-configtype: decimal;"><li>After the pairing is completed, you can also use see the vim editor to open paired Bluetooth device as shown in the figure below</boot/orangepiEnv.txt, and then add the configuration of overlays=raspi-7inch-touchscreen is also possible.'''li>
orangepi@orangepi[[File:~$ pi3b-img414.png]]</ol><ol start="8" style="list-style-type: decimal;"><li>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 '''cat /boot/orangepiEnv.txt | grep "raspi"Accept'''to start receiving the picture sent by the mobile phone.</li>
[[File:pi3b-img415.png]]</ol><ol start="9" style="list-style-type: decimal;"><li>You can open the '''overlays=raspi-7inch-touchscreen #Sample configurationDownload'''directory in the file manager to view the pictures received by the Android system Bluetooth of the development board</li>
[[File:pi3b-img416.png]]</ol start><span id="3" style="listhow-to-use-raspberry-pi-5-styleinch-type: decimal;screen"><li>After startup, you can see the lcd screen display as follows:</li></olspan>
[[File:pi3b== How to use Raspberry Pi 5-img363.png|381x262px]]inch screen ==
<span id{| class="wikitable" style="thebackground-methodcolor:#ffffdc;width:800px;" |-of-server-version-image-rotation-display-direction">| </spanbig>=== The method '''Please make sure that the image used is the following two versions of server version the image rotation display direction ===:'''
# Add '''extraargs=fbcon=rotate:the direction to rotate''' in '''/boot/orangepiEnvOrangePi3B_RK3566_Android11_lcd_v1.x.x.txt''' This line configuration can set the direction displayed by the server version of the Linux system, where the number after '''fbcon=rotate:img''' can be set as:
<!-- --><ol style="list-style-type: lower'''OrangePi3B_RK3566_Android11_spi-alpha;"><li><p>0: normal screen (default is landscape)</p></li><li><p>1: Turn clockwise 90 degrees</p></li><li><p>2: Flip 180 degreesnvme_lcd_v1.x.x.img'''</p></libig><li><p>3: Turn clockwise 270 degrees</p></li></ol>|}
orangepi@orangepi:~$ # The screen needs to be assembled first, please refer to [[Orange Pi 3B#Use of the Raspberry PI's 5-inch screen|''sudo vim /boot/orangepiEnv.txt'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
overlays=lcd1::[[File:pi3b-img417.png]]
'''extraargs<span id=cma=64M fbcon=rotate:3'''"pin-interface-gpio-uart-spi-and-pwm-test"></span>
'''Note that if there is the line extraargs=cma=64M in /boot/orangepiEnv.txt by default40pin interface GPIO, the configuration fbcon=rotate:3 can be added after extraargsUART, SPI and PWM test =cma=64M (separated by spaces).'''
<ol startspan id="2" style="listpin-gpio-port-styletest-type: decimal;2"><li>Then '''restart''' the Linux system and you can see that the direction displayed on the LCD screen has been rotated</li></olspan>=== 40pin GPIO port test ===
<span id="method-of-rotating-display-and-touch-direction-of-desktop-version-image"></span>=== Method of rotating display and touch direction of desktop version image ===# First click on the wiringOP icon to open the wiringOP APP
# First open '''Display''' Settings in Linux ::[[File:pi3b-img364img418.png|298x206px]]
<ol start="2" style="list-style-type: decimal;">
<li><p>Then select The main interface of wiringOP APP is displayed as shown in the figure below, and then click the direction you want to rotate in '''Rotation'''</p><ol style="list-style-type: lower-alpha;"><li><p>'''None''': no rotation</p></li><li><p>'''Left''': rotate left 90 degrees</p></li><li><p>'''InvertedGPIO_TEST''': Flip up and down, which is equivalent button to rotating 180 degrees</p></li><li><p>'''Right''': rotate right 90 degrees</p></li></ol>open the GPIO test interface</li></ol> [[File:pi3b-img365.png|286x180px]]
[[File:pi3b-img419.png]]
</ol>
<ol start="3" style="list-style-type: decimal;">
<li>Then click The GPIO test interface is shown in the figure below. The two rows of '''ApplyCheckBox'''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</li></ol> [[File:pi3b-img366.png|330x207px]]
[[File:pi3b-img420.png]]
</ol>
<ol start="4" style="list-style-type: decimal;">
<li>Then select click the '''Keep this configurationGPIO READALL'''button, the output information is as shown in the figure below:</li></ol> [[File:pi3b-img367.png|374x210px]]
[[File:pi3b-img421.png]]
</ol>
<ol start="5" style="list-style-type: decimal;">
<li><p>At this point, There are a total of 28 GPIO ports in the screen display has been rotated, and then close 40pins of the '''Display''' program</p></li><li><p>development board that can be used. The above steps will only select 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 display direction, high and will not rotate the direction low levels of the touchGPIO port. Use First click the '''set_lcd_rotate.shCheckBox''' script button corresponding to rotate the direction of the touchpin 7. After When the script button is setselected, it pin 7 will automatically restartbe set to high level. After setting, and then you can test whether use a multimeter to measure the voltage value of the touch has been used normallypin. If it is 3.3v, it means setting high level success</p><ol style="list-style-type: lower-alpha;"><li>'''None''': no rotation</li></ol></li></ol>
orangepi@orangepi[[File:~$ pi3b-img422.png]]</ol><ol start="6" style="list-style-type: decimal;"><li>Then click the '''set_lcd_rotate.sh noneGPIO READALL''' button, you can see that the current pin 7 mode is '''OUT''', and the pin level is high</li>
[[File:pi3b-img423.png]]</ol><ol start="27" style="list-style-type: lower-alphadecimal;"><li>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 '''Left0v''': rotate left 90 degrees, it means that the low level is set successfully.</li></ol>
orangepi@orangepi[[File:~$ pi3b-img424.png]]</ol><ol start="8" style="list-style-type: decimal;"><li>Then click the '''set_lcd_rotate.sh leftGPIO READALL'''button, you can see that the current pin 7 mode is OUT, and the pin level is low</li>
[[File:pi3b-img425.png]]</ol start><span id="3" style="listpin-styleuart-type: lowertest-alpha;1"><li>'''Inverted''': Flip up and down, which is equivalent to rotating 180 degrees</li></olspan>
orangepi@orangepi:~$ '''set_lcd_rotate.sh inverted'''=== 40pin UART test ===
<ol start="4" style="list-style-type: lower-alpha;"><li># 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 '''Right/dev/ttyS7''' and ''': rotate right 90 degrees</li><dev/ol>ttyS9''' respectively
orangepi@orangepi:~$ '''set_lcd_rotate:[[File:pi3b-img269.sh right'''png]]
'''The set_lcd_rotate.sh script mainly does four things<ol start="2" style="list-style-type:'''decimal;"><li>First click on the wiringOP icon to open the wiringOP APP</li>
[[File:pi3b-img418.png]]</ol><ol start="3" style="list-style-type: decimal;"><li>The main interface of wiringOP APP is displayed as shown in the figure below, and then click the '''1. Rotate the direction displayed by the framebufferUART_TEST'''button to open the UART test interface</li>
'''2[[File:pi3b-img426. Rotate png]]</ol><ol start="4" style="list-style-type: decimal;"><li>The serial port test interface of the direction of APP is shown in the touch'''figure below</li>
[[File:pi3b-img427.png]]</ol><ol start="5" style="list-style-type: decimal;"><li>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''3' button to open the /dev/ttyS7 node. Turn off After the opening is successful, the '''OPEN''' button becomes unselectable, and the boot logo'''CLOSE''' button and '''SEND''' button become selectable</li>
'''4[[File:pi3b-img428. Restart the system'''png]]</ol>'''Rotating the touch direction is achieved by adding the line Option &quot;TransformationMatrix&quot; &quot;x x x x x x x x x&quot<ol start="6" style="list-style-type: decimal; "><li>Then use Dupont wire to short the RXD and TXD pins of uart7</usr/share/X11/xorg.conf.d/40-libinput.conf Where &quot;x x x x x x x x x&quot; is configured differently for different directions.'''li>
[[File:pi3b-img429.png]]
</ol>
<ol start="7" style="list-style-type: decimal;">
<li>Touch rotation referenceThen you can enter a character in the send edit box below, and click the '''SEND''' button to start sending</li></ol>
https[[File://wiki.ubuntupi3b-img430.compng]]</Xol><ol start="8" style="list-style-type: decimal;"><li>If everything is normal, the received string will be displayed in the receiving box</InputCoordinateTransformationli>
[[File:pi3b-img431.png]]</ol><span id="instructionspin-forspi-usingtest-the-switch-logo2"></span>== 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=== 40pin SPI test ===
orangepi@orangepi:~$ '''vim /boot/orangepiEnv.txt'''# According to the schematic diagram of the 40pin interface, the spi available for Orange Pi 3B is spi3
verbosity=1::[[File:pi3b-img264.png]]
'''bootlogo<ol start=false'''"2" style="list-style-type: decimal;"><li>Here, the SPI interface is tested through the w25q64 module. First, the w25q64 device is connected to the SPI3 interface</li>
[[File:pi3b-img432.png]]
</ol>
<ol start="3" style="list-style-type: decimal;">
<li>Set Then click the '''bootlogo''' variable wiringOP icon to '''true''' in '''/boot/orangepiEnv.txt''' to enable open the switch logowiringOP APP</li></ol> orangepi@orangepi:~$ '''vim /boot/orangepiEnv.txt''' verbosity=1 '''bootlogo=true'''
[[File:pi3b-img418.png]]
</ol>
<ol start="4" style="list-style-type: decimal;">
<li>The location main interface of wiringOP APP is displayed as shown in the figure below, click the boot logo image in SPI_TEST button to open the Linux system isSPI test interface</li></ol> '''/usr/share/plymouth/themes/orangepi/watermark.png'''
[[File:pi3b-img433.png]]
</ol>
<ol start="5" style="list-style-type: decimal;">
<li>After replacing Then click the boot logo picture, you need '''OPEN''' button to run initialize the following command to take effectSPI</li></ol>
orangepi@orangepi[[File:~$ pi3b-img434.png]]</ol><ol start="6" style="list-style-type: decimal;"><li>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 '''sudo update-initramfs -uTRANSFER'''button</li>
[[File:pi3b-img435.png]]<span id/ol><ol start="how-to-use7" style="list-thestyle-zfs-file-systemtype: decimal;"><li>Finally, the APP will display the read ID information</spanli>== How to use the ZFS file system ==
'''[[File:pi3b-img436.png]]</ol><ol start="8" style="list-style-type: decimal;"><li>The latest version MANUFACTURER ID of Ubuntu20.04the w25q64 module is EFh, Ubuntu22.04, Debian11 and Debian12 desktop version systems have pre-installed zfsthe Device ID is 4017h, you can use it directly.'''corresponding to the value read above (h stands for hexadecimal)</li>
'''The pre[[File:pi3b-installed zfs version in Ubuntu20img437.04 and Ubuntu22.04 desktop systems is 2.1.6.'''png]]</ol><span id="pin-pwm-test"></span>
'''The pre-installed zfs version in Debian11 and Debian12 desktop systems is 2.1.11.'''=== 40pin PWM test ===
# Android enables '''After the system startsPWM11''' by default, please first confirm whether and the zfs kernel module has been loaded. If you can see zfs-related content using corresponding pin is located at 40pin as shown in the lsmod command, it means that the system has pre-installed zfs.'''figure below
orangepi@orangepi:~$ '''lsmod | grep &quot;zfs&quot;''':[[File:pi3b-img438.png]]
zfs 2801664 0<ol start="2" style="list-style-type: decimal;"><li>First click on the wiringOP icon to open the wiringOP APP</li>
zunicode 327680 1 zfs[[File:pi3b-img418.png]]</ol><ol start="3" style="list-style-type: decimal;"><li>Then click the '''PWM_TEST''' button on the main interface of wiringOP to enter the PWM test interface</li>
zzstd 471040 1 zfs[[File:pi3b-img439.png]]</ol><ol start="4" style="list-style-type: decimal;"><li>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</li>
zlua 139264 1 zfs[[File:pi3b-img440.png]]</ol><ol start="5" style="list-style-type: decimal;"><li>When the drop-down option selects '''pwmchip3''', the corresponding base address of PWM11 is '''fe6f0030''' on the right</li>
zcommon 69632 1 zfs[[File:pi3b-img441.png]]</ol><ol start="6" style="list-style-type: decimal;"><li>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'''</li>
znvpair 61440 2 zfs[[File:pi3b-img442.png]]</ol><ol start="7" style="list-style-type: decimal;"><li>Then drag the drag bar below to change the PWM duty cycle,zcommonand then check Enable to output the PWM waveform</li>
zavl 16384 1 zfs[[File:pi3b-img443.png]]</ol><ol start="8" style="list-style-type: decimal;"><li>Then use an oscilloscope to measure the No. 32 pin in the 40pin of the development board, and you can see the following waveform</li>
icp 221184 1 zfs[[File:pi3b-img444.png]]</ol><span id="how-to-use-adb"></span>
spl 77824 6 zfs,icp,zzstd,znvpair,zcommon,zavl== How to use ADB ==
<span id="howuse-tonetwork-installconnection-zfsadb-debugging"></span>=== How to install ZFS Use network connection adb debugging ===
{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''Before installing zfsUsing the network adb does not require a data cable to connect the computer and the development board, but to communicate through the network, please so first make sure that the Linux image used wired or wireless network of the development board is connected, and then obtain the latest version. In addition, if zfs is already installed in IP address of the systemdevelopment board, it needs to which will be installed againused later.'''</big>|}
Before installing zfs, you need to install # Make sure that the kernel header file first'''service. For the method of installing the kernel header file, please refer to the instructions in the [[\l|adb.tcp.port'''section on the method of installing the kernel header file''']].Android system is set to port number 5555
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::{| class="wikitable" style="width:800px;" |-| console:/ # '''getprop | grep &quot;adb.tcp&quot;'''
To solve this problem, we provide a zfs deb package that can be installed normally, which can be downloaded from the [http://wwwservice.orangepiadb.org/html/serviceAndSupport/indextcp.html port]: ['''official tool5555'''] of the development board. Open the '''<span class="mark">official tool</span>''', and enter the '''<span class="mark">zfs-related deb package folders used by Ubuntu and Debian systems</span>'''. You can see three types of deb packages: Ubuntu20.04, Ubuntu22.04 and Debian11. Please download the required version.|}
[[File<ol start="2" style="list-style-type:pi3b-img368decimal;"><li>If '''service.adb.tcp.png|230x93px]]port''' is not set, you can use the following command to set the port number of network adb</li>
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 {| class="wikitable" style="width:800px;" |-| console:/ # '''[[\l|the description in the section of the method of uploading files to the Linux system of the development board]]setprop service.adb.tcp.port 5555'''
After the upload is complete, use the console:/ # '''cdstop adbd''' 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@orangepiconsole:~$ / # '''sudo apt install ./*.debstart adbd'''|}</ol><ol start="3" style="list-style-type: decimal;"><li>Install adb tool on Ubuntu PC</li>
After the installation is complete, use the following command to see the zfs{| class="wikitable" style="width:800px;" |-related kernel modules| test@test:~$ '''sudo apt update'''
orangepitest@orangepitest:~$ '''ls /lib/modulessudo apt install -y adb'''|}</5.10.160ol><ol start="4" style="list-rockchipstyle-rk356x/updates/dkmstype: decimal;"><li>Then connect network adb on Ubuntu PC</'''li>
{| class="wikitable" style="width:800px;" |-| test@test:~$ '''icpadb connect 192.ko spl168.ko zavl1.ko zcommon.ko zfs.ko zlua.ko znvpair.ko zunicode.ko zzstd.koxxx''' '''(The IP address needs to be changed to the IP address of the development board)'''
Then restart the Linux system to see that the zfs kernel module will be automatically loaded<p>* daemon not running; starting now at tcp:5037</p>
orangepi@orangepi:~$ '''lsmod | grep &quot;zfs&quot;'''<p>* daemon started successfully</p>
zfs 2801664 0connected to 192.168.1.xxx:5555
zunicode 327680 1 zfs
zzstd 471040 1 zfstest@test:~$ '''adb devices'''
zlua 139264 1 zfsList of devices attached
zcommon 69632 192.168.1 zfs.xxx:5555 device|}</ol><ol start="5" style="list-style-type: decimal;"><li>Then you can log in to the android system through the adb shell on the Ubuntu PC</li>
znvpair 61440 2 zfs,zcommon{| class="wikitable" style="width:800px;" |-| test@test:~$ '''adb shell'''
zavl 16384 1 zfsconsole:/ #|}</ol><span id="appendix"></span>
icp 221184 1 zfs= '''Appendix''' =
spl 77824 6 zfs,icp,zzstd,znvpair,zcommon,zavl<span id="user-manual-update-history"></span>== User Manual Update History ==
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''' <span id="methods-of-creating-zfs-pools"></span>=== 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: [[File:pi3b-img369.png|379x227px]] <ol start="2" style="list-style-type: decimal;"><li>Then enter the following command to create a ZFS pool, including two storage devices, NVMe SSD and U disk</li></ol> orangepi@orangepi:~$ '''sudo zpool create -f pool1 /dev/nvme0n1 /dev/sda''' <ol start="3" style="list-style-type: decimal;"><li>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</li></ol> [[File:pi3b-img370.png|576x37px]] <ol start="4" style="list-style-type: decimal;"><li>Then execute '''df -h''' to see that '''pool1''' is mounted to the '''/pool1''' directory</li></ol> 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''' <ol start="5" style="list-style-type: decimal;"><li>Use the following command to see that the file system type of pool1 is zfs</li></ol> orangepi@orangepi:~$ '''mount | grep pool1''' pool1 on /pool1 type '''zfs''' (rw,xattr,noacl) <ol start="6" style="list-style-type: decimal;"><li>Then we can test copying a file to the ZFS pool</li></ol> orangepi@orangepi:~$ '''sudo cp -v /usr/local/test.mp4 /pool1/''' '/usr/local/test.mp4' -&gt; '/pool1/test.mp4' <span id="test-the-data-deduplication-function-of-zfs"></span>=== 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''' <ol start="2" style="list-style-type: decimal;"><li>Then do a simple test, first enter pool1, and then execute the following command to generate a random file with a size of 1G</li></ol> 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 <ol start="3" style="list-style-type: decimal;"><li>Then use the following command to copy 1000 random files of size 1G</li></ol> root@orangepi:/pool1$ '''for ((i=0; i&lt;1000; i++)); do sudo cp test.1g $i.test.1g; done''' <ol start="4" style="list-style-type: decimal;"><li>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</li></ol> root@orangepi:/pool1$ '''du -lh''' 1002G <ol start="5" style="list-style-type: decimal;"><li>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.</li></ol> [[File:pi3b-img371.png|576x36px]] <span id="test-the-data-compression-function-of-zfs"></span>=== 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/''' <ol start="2" style="list-style-type: decimal;"><li>Then the file size that can be seen through the '''ls -lh''' command and the space occupied in the ZFS pool are both '''27M'''</li></ol> [[File:pi3b-img372.png|576x90px]] <ol start="3" style="list-style-type: decimal;"><li>Then we enable compression in the ZFS pool pool1</li></ol> root@orangepi:/pool1$ '''sudo zfs set compression=lz4 pool1''' <ol start="4" style="list-style-type: decimal;"><li>Then execute the following command again to package the '''/var/log/''' and '''/etc/''' directories into a tar package</li></ol> root@orangepi:/pool1$ '''sudo tar -cf text.tar /var/log/ /etc/''' <ol start="5" style="list-style-type: decimal;"><li>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</li></ol> [[File:pi3b-img373.png|576x79px]] <span id="how-to-shut-down-and-restart-the-development-board"></span>== 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''' <ol start="2" style="list-style-type: decimal;"><li>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.</li></ol> [[File:pi3b-img374.png|294x80px]] '''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.''' [[File:pi3b-img375.png|207x193px]] <ol start="3" style="list-style-type: decimal;"><li>Short press the switch button on the development board after shutting down to start up.</li></ol> [[File:pi3b-img374.png|294x80px]] <ol start="4" style="list-style-type: decimal;"><li>The command to restart the Linux system is</li></ol> orangepi@orangepi:~$ '''sudo''' '''reboot''' <span id="linux-sdkorangepi-build-instructions"></span> = '''Linux SDK——orangepi-build instructions''' = <span id="compilation-system-requirements"></span>== 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.''' '''If you use orangepi-build to compile the Linux image in the Ubuntu22.04 system of the development board, please do a good job of cooling (especially when the SSD starts). If the heat dissipation is not done well, it is prone to the error of file system runaway.''' <span id="compile-with-the-ubuntu22.04-system-of-the-development-board"></span>=== 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 <ol start="2" style="list-style-type: decimal;"><li>'''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.'''</li></ol> <span id="compile-with-x64-ubuntu22.04-computer"></span>=== 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 <ol start="2" style="list-style-type: decimal;"><li><p>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.</p></li><li><p>The download address of the installation image of Ubuntu 22.04 '''amd64''' version is:</p></li></ol> [https://repo.huaweicloud.com/ubuntu-releases/21.04/ubuntu-21.04-desktop-amd64.iso '''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''' <ol start="4" style="list-style-type: decimal;"><li><p>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</p><ol style="list-style-type: lower-alpha;"><li>For the method of replacing Tsinghua source, please refer to the instructions on this web page</li></ol></li></ol> https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/ <ol start="2" style="list-style-type: lower-alpha;"><li>Note that the Ubuntu version needs to be switched to 22.04</li></ol> [[File:pi3b-img376.png|576x241px]] <ol start="3" style="list-style-type: lower-alpha;"><li>The content of the '''/etc/apt/sources.list''' file that needs to be replaced is</li></ol> 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 <ol start="4" style="list-style-type: lower-alpha;"><li>After the replacement, you need to update the package information and make sure there is no error</li></ol> test@test:~$ '''sudo apt update''' <ol start="5" style="list-style-type: lower-alpha;"><li>'''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.'''</li></ol> <span id="get-the-source-code-of-linux-sdk"></span>== Get the source code of Linux sdk == <span id="download-orangepi-build-from-github"></span>=== 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.''' <div class="figure"> [[File:pi3b-img377.png|576x298px|图片6]] </div>'''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.''' <ol start="2" style="list-style-type: decimal;"><li>The u-boot and Linux kernel versions currently used by the development board are as follows</li></ol> {| class="wikitable"|-| style="text-align: left;"| '''branch'''| style="text-alignwidth: left800px;"| '''u-boot version'''| style="text-align: leftcenter;"| '''Linux Kernel version'''|-| style="text-align: left;"| '''legacy'''| style="text-align: left;"| '''u-boot 2017.09Version'''| style="text-align: left;"| '''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.''' <ol start="3" style="list-style-type: decimal;"><li><p>orangepi-build will contain the following files and folders after downloading</p><ol style="list-style-type: lower-alpha;"><li><p>'''build.sh''': Compile the startup script</p></li><li><p>'''external''': Contains the configuration files needed to compile the image, specific scripts, and the source code of some programs, etc.</p></li><li><p>'''LICENSE''': GPL 2 license file</p></li><li><p>README.md: orangepi-build documentation</p></li><li><p>'''scripts''': General script for compiling Linux images</p></li></ol></li></ol> 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.''' <span id="download-the-cross-compilation-toolchain"></span>=== 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. <div class="figure"> [[File:pi3b-img378.png|575x278px|选区_396]] </div><ol start="2" style="list-style-type: decimal;"><li>The image URL of the cross-compilation toolchain in China is the open source software image site of Tsinghua University</li></ol> https://mirrors.tuna.tsinghua.edu.cn/armbian-releases/_toolchain/ <ol start="3" style="list-style-type: decimal;"><li>After '''toolchains''' is downloaded, it will contain multiple versions of cross-compilation toolchains, and the development board will only use two of them</li></ol> 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 <ol start="4" style="list-style-type: decimal;"><li><p>The cross-compilation toolchain used to compile the Linux kernel source code is</p><ol style="list-style-type: lower-alpha;"><li>Linux5.10</li></ol></li></ol> '''gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu''' <ol start="5" style="list-style-type: decimal;"><li><p>The cross-compilation tool chain used to compile the u-boot source code is</p><ol style="list-style-type: lower-alpha;"><li>v2017.09</li></ol></li></ol> '''gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu''' <span id="orangepi-build-complete-directory-structure-description"></span>=== orangepi-build complete directory structure description === <ol style="list-style-type: decimal;"><li><p>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</p><ol style="list-style-type: lower-alpha;"><li>The git repository where the Linux kernel source code is stored is as follows:</li></ol></li></ol> '''https://github.com/orangepi-xunlong/linux-orangepi/tree/orange-pi-5.10-rk35xx''' <ol start="2" style="list-style-type: lower-alpha;"><li>The git warehouse where the b.u-boot source code is stored is as follows:</li></ol> '''https://github.com/orangepi-xunlong/u-boot-orangepi/tree/v2017.09-rk3588''' <ol start="2" style="list-style-type: decimal;"><li><p>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:</p><p>a. '''build.sh''': compile startup script</p><p>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</p><p>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</p><p>d. '''LICENSE''': GPL 2 license file</p><p>e. '''README'''.md: orangepi-build documentation</p><p>f. '''output''': Store compiled deb packages such as u-boot and Linux, compilation logs, and compiled images and other files</p><p>g. '''scripts''': general scripts for compiling Linux images</p><p>h. '''toolchainsDate''': store cross-compilation toolchain</p><p>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</p><p>j. '''userpatches''': Store configuration files needed to compile scripts</p></li></ol> test@test:~/orangepi-build$ '''ls''' '''build.sh external kernel LICENSE output''' README.md '''scripts toolchains u-boot userpatches''' <span id="compile-u-boot"></span>== Compile u-boot == # Run the build.sh script, remember to add sudo permission test@test:~/orangepi-build$ '''sudo ./build.sh''' <ol start="2" style="list-style-type: decimal;"><li>Select '''U-boot package''',then enter</li></ol> <div class="figure"> [[File:pi3b-img379.png|576x132px|选区_238]] </div><ol start="3" style="list-style-type: decimal;"><li>Then select the model of the development board</li></ol> <div class="figure"> [[File:pi3b-img380.png|576x197px|}4$_5F06}}0R4GU8]OVO}4E]] </div><ol start="4" style="list-style-type: decimal;"><li><p>Then it will start to compile u-boot, and some information prompted during compilation is explained as follows</p><ol style="list-style-type: lower-alpha;"><li>u-boot source code version</li></ol></li></ol> [ o.k. ] Compiling u-boot [ '''v2017.09''' ] <ol start="2" style="list-style-type: lower-alpha;"><li>The version of the cross-compilation toolchain</li></ol> [ o.k. ] Compiler version [ '''aarch64-linux-gnu-gcc 7.4.1''' ] <ol start="3" style="list-style-type: lower-alpha;"><li>Path to the generated u-boot deb package</li></ol> [ o.k. ] Target directory [ '''orangepi-build/output/debs/u-boot''' ] <ol start="4" style="list-style-type: lower-alpha;"><li>The package name of the generated u-boot deb package</li></ol> [ o.k. ] File name [ '''linux-u-boot-legacy-orangepi3b_1.0.0_arm64.deb''' ] <ol start="5" style="list-style-type: lower-alpha;"><li>Compilation time</li></ol> [ o.k. ] Runtime [ '''1 min''' ] <ol start="6" style="list-style-type: lower-alpha;"><li>Repeat the command to compile u-boot, use the following command to start compiling u-boot directly without selecting through the graphical interface</li></ol> [ o.k. ] Repeat Build Options [ '''sudo ./build.sh BOARD=orangepi3b BRANCH=legacy BUILD_OPT=u-boot KERNEL_CONFIGURE=no''' ] <ol start="5" style="list-style-type: decimal;"><li>View the u-boot deb package generated by compilation</li></ol> test@test:~/orangepi-build$ '''ls output/debs/u-boot/''' linux-u-boot-legacy-orangepi3b_1.0.0_arm64.deb <ol start="6" style="list-style-type: decimal;"><li><p>The files contained in the generated u-boot deb package are as follows</p><ol style="list-style-type: lower-alpha;"><li>Use the following command to decompress the deb package</li></ol></li></ol> 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 &quot;.&quot; 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''' <ol start="2" style="list-style-type: lower-alpha;"><li>The decompressed file is as follows</li></ol> test@test:~/orangepi-build/output/debs/u-boot$ '''tree usr''' usr └── lib ├── 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 3 directories, 6 files <ol start="7" style="list-style-type: decimal;"><li>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:</li></ol> <blockquote>Set the IGNORE_UPDATES variable in userpatches/config-default.conf to &quot;yes&quot;</blockquote>test@test:~/orangepi-build$ '''vim userpatches/config-default.conf''' IGNORE_UPDATES=&quot;'''yes'''&quot; <ol start="8" style="list-style-type: decimal;"><li><p>When debugging u-boot code, you can use the following method to update u-boot in the Linux image for testing</p><ol style="list-style-type: lower-alpha;"><li>Upload the compiled u-boot deb package to the Linux system of the development board</li></ol></li></ol> 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''' [mailto:root@192.168.1.xxx:/root root@192.168.1.xxx:/root] <ol start="2" style="list-style-type: lower-alpha;"><li>Then log in to the development board and uninstall the deb package of u-boot installed</li></ol> root@orangepi:~# '''apt purge -y linux-u-boot-orangepi3b-legacy''' <ol start="3" style="list-style-type: lower-alpha;"><li>Install the new u-boot deb package just uploaded</li></ol> root@orangepi:~# '''dpkg -i''' '''linux-u-boot-legacy-orangepi3b_1.0.0_arm64.deb''' <ol start="4" style="list-style-type: lower-alpha;"><li>Then run the nand-sata-install script</li></ol> root@orangepi:~# '''nand-sata-install''' <ol start="5" style="list-style-type: lower-alpha;"><li>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</li></ol> [[File:pi3b-img381.png|312x152px]] <ol start="6" style="list-style-type: lower-alpha;"><li>After pressing the Enter key, a Warning will pop up first</li></ol> [[File:pi3b-img382.png|309x168px]] <ol start="7" style="list-style-type: lower-alpha;"><li>Press the Enter key again to start updating u-boot, and the following information will be displayed after the update is completed</li></ol> [[File:pi3b-img383.png|244x137px]] <ol start="8" style="list-style-type: lower-alpha;"><li>Then you can restart the development board to test whether the modification of u-boot takes effect</li></ol> <!-- --><ol start="9" style="list-style-type: decimal;"><li><p>Other useful information</p><ol style="list-style-type: lower-alpha;"><li>In the u-boot 2017.09 source code, the defconfig configuration file used by the development board is</li></ol></li></ol> [https://github.com/orangepi-xunlong/u-boot-orangepi/blob/v2017.09-rk3588/configs/orangepi_5_defconfig '''orangepi-build/u-boot/v2017.09-rk3588/configs/orangepi-3b-rk3566_defconfig'''] <ol start="2" style="list-style-type: lower-alpha;"><li>In the u-boot 2017.09 source code, the dts file used by the development board is</li></ol> [https://github.com/orangepi-xunlong/u-boot-orangepi/blob/v2017.09-rk3588/arch/arm/dts/rk3588s-orangepi-5.dts orangepi-build/u-boot/v2017.09-rk3588/arch/arm/dts/rk3566-orangepi-3b.dts] <span id="compile-the-linux-kernel"></span>== Compile the Linux kernel == # Run the build.sh script, remember to add sudo permission test@test:~/orangepi-build$ '''sudo ./build.sh''' <ol start="2" style="list-style-type: decimal;"><li>Select '''Kernel package''',then enter</li></ol> <div class="figure"> [[File:pi3b-img384.png|575x116px|选区_240]] </div><ol start="3" style="list-style-type: decimal;"><li>Then select the model of the development board</li></ol> <div class="figure"> [[File:pi3b-img380.png|576x197px|}4$_5F06}}0R4GU8]OVO}4E]] </div><ol start="4" style="list-style-type: decimal;"><li>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.</li></ol> [[File:pi3b-img385.png|576x87px]] <ol start="5" style="list-style-type: decimal;"><li>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</li></ol> [[File:pi3b-img386.png|462x322px]] <ol style="list-style-type: lower-alpha;"><li>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</li></ol> test@test:~/orangepi-build$ '''sudo ./build.sh KERNEL_CONFIGURE=no''' <ol start="2" style="list-style-type: lower-alpha;"><li><p>You can also set '''KERNEL_CONFIGURE=no''' in the '''orangepi-build/userpatches/config-default.conf''' configuration file, which can permanently disable this function</p></li><li><p>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</p></li></ol> [[File:pi3b-img387.png|574x234px]] <ol start="6" style="list-style-type: decimal;"><li><p>Part of the information prompted when compiling the kernel source code is as follows</p><ol style="list-style-type: lower-alpha;"><li>The version of the Linux kernel source code</li></ol></li></ol> [ o.k. ] Compiling current kernel [ '''5.10.160''' ] <ol start="2" style="list-style-type: lower-alpha;"><li>The version of the cross-compilation toolchain used</li></ol> [ o.k. ] Compiler version [ '''aarch64-none-linux-gnu-gcc 11.2.1''' ] <ol start="3" style="list-style-type: lower-alpha;"><li>The configuration file used by the kernel by default and the path where it is stored</li></ol> [ o.k. ] Using kernel config file [ '''config/kernel/linux-rockchip-rk356x-legacy.config''' ] <ol start="4" style="list-style-type: lower-alpha;"><li>The path of the deb package related to the kernel generated by compiling</li></ol> [ o.k. ] Target directory [ '''orangepi-build/output/debs/''' ] <ol start="5" style="list-style-type: lower-alpha;"><li>The package name of the compiled kernel image deb package</li></ol> [ o.k. ] File name [ '''linux-image-legacy-rockchip-rk356x_1.0.0_arm64.deb''' ] <ol start="6" style="list-style-type: lower-alpha;"><li>The time used for compilation</li></ol> [ o.k. ] Runtime [ '''5 min''' ] <ol start="7" style="list-style-type: lower-alpha;"><li>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</li></ol> [ o.k. ] Repeat Build Options [ '''sudo ./build.sh BOARD=orangepi3b BRANCH=legacy BUILD_OPT=kernel KERNEL_CONFIGURE=no''' ] <ol start="7" style="list-style-type: decimal;"><li><p>View the deb package related to the kernel generated by compilation</p><ol style="list-style-type: lower-alpha;"><li><p>'''linux-dtb-legacy-rockchip-rk356x_1.0.0_arm64.deb''' Contains dtb files used by the kernel</p></li><li><p>'''linux-headers-legacy-rockchip-rk356x_1.0.0_arm64.deb''' Include kernel header files</p></li><li><p>'''linux-image-legacy-rockchip-rk356x_1.0.0_arm64.deb''' Contains kernel images and kernel modules</p></li></ol></li></ol> 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 <ol start="8" style="list-style-type: decimal;"><li><p>The files contained in the generated Linux-image deb package are as follows</p><ol style="list-style-type: lower-alpha;"><li>Use the following command to decompress the deb package</li></ol></li></ol> 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''' <ol start="2" style="list-style-type: lower-alpha;"><li>The decompressed file is as follows</li></ol> 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 ├── lib └── share <ol start="9" style="list-style-type: decimal;"><li>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:</li></ol> <blockquote>Set the IGNORE_UPDATES variable in '''userpatches/config-default.conf''' to &quot;yes&quot;</blockquote>test@test:~/orangepi-build$ '''vim userpatches/config-default.conf''' IGNORE_UPDATES=&quot;'''yes'''&quot; <ol start="10" style="list-style-type: decimal;"><li><p>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</p><ol style="list-style-type: lower-alpha;"><li>Upload the deb package of the compiled Linux kernel to the Linux system of the development board</li></ol></li></ol> 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''' <ol start="2" style="list-style-type: lower-alpha;"><li>Then log in to the development board and uninstall the deb package of the installed Linux kernel</li></ol> root@orangepi:~# '''apt purge -y linux-image-legacy-rockchip-rk356x''' <ol start="3" style="list-style-type: lower-alpha;"><li>Install the deb package of the new Linux kernel just uploaded</li></ol> root@orangepi:~# '''dpkg -i linux-image-legacy-rockchip-rk356x_1.0.0_arm64.deb''' <ol start="4" style="list-style-type: lower-alpha;"><li>Then restart the development board, and then check whether the kernel-related modifications have taken effect</li></ol> root@orangepi:~# '''reboot''' <ol start="11" style="list-style-type: decimal;"><li><p>Other useful information</p><ol style="list-style-type: lower-alpha;"><li>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</li></ol></li></ol> [https://github.com/orangepi-xunlong/orangepi-build/blob/next/external/config/kernel/linux-rockchip-rk3588-legacy.config orangepi-build/external/config/kernel/linux-rockchip-rk356x-legacy.config] <ol start="2" style="list-style-type: lower-alpha;"><li>The location of the dts file used by the development board is</li></ol> [https://github.com/orangepi-xunlong/linux-orangepi/blob/orange-pi-5.10-rk3588/arch/arm64/boot/dts/rockchip/rk3588s-orangepi-5.dts orangepi-build/kernel/orange-pi-5.10-rk35xx/arch/arm64/boot/dts/rockchip/rk3566-orangepi-3b.dts] <span id="compile-rootfs"></span>== Compile rootfs == # Run the build.sh script, remember to add sudo permission test@test:~/orangepi-build$ '''sudo ./build.sh''' <ol start="2" style="list-style-type: decimal;"><li>Select '''Rootfs and all deb packages''',then enter</li></ol> <div class="figure"> [[File:pi3b-img388.png|576x119px|选区_241]] </div><ol start="3" style="list-style-type: decimal;"><li>Then select the model of the development board</li></ol> <div class="figure"> [[File:pi3b-img380.png|576x197px|}4$_5F06}}0R4GU8]OVO}4E]] </div><ol start="4" style="list-style-type: decimal;"><li>Then select the type of rootfs</li></ol> [[File:pi3b-img389.png|575x86px]] <ol start="5" style="list-style-type: decimal;"><li><p>Then select the type of image</p><ol style="list-style-type: lower-alpha;"><li><p>'''Image with console interface (server)''' Indicates the image of the server version, which is relatively small</p></li><li><p>'''Image with desktop environment''' Indicates a image with a desktop, which is relatively large</p></li></ol></li></ol> <div class="figure"> [[File:pi3b-img390.png|576x75px|选区_245]] </div><ol start="6" style="list-style-type: decimal;"><li>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)'''</li></ol> <div class="figure"> [[File:pi3b-img391.png|576x78px|选区_397]] </div><ol start="7" style="list-style-type: decimal;"><li>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</li></ol> <div class="figure"> [[File:pi3b-img392.png|575x99px|Selection_001]] </div>[[File:pi3b-img393.png|576x74px]] You can then select additional packages that need to be installed. Please press the Enter key to skip directly here. [[File:pi3b-img394.png|575x264px]] <ol start="8" style="list-style-type: decimal;"><li><p>Then it will start to compile rootfs, and some of the information prompted during compilation are as follows</p><ol style="list-style-type: lower-alpha;"><li>The type of rootfs</li></ol></li></ol> [ o.k. ] local not found [ Creating new rootfs cache for '''jammy'''] <ol start="2" style="list-style-type: lower-alpha;"><li>The storage path of the compiled rootfs compressed package</li></ol> [ o.k. ] Target directory [ '''external/cache/rootfs''' ] <ol start="3" style="list-style-type: lower-alpha;"><li>The name of the rootfs compressed package generated by compilation</li></ol> [ o.k. ] File name [ '''jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4''' ] <ol start="4" style="list-style-type: lower-alpha;"><li>The time used for compilation</li></ol> [ o.k. ] Runtime [ '''13 min''' ] <ol start="9" style="list-style-type: decimal;"><li><p>View the rootfs compressed package generated by compilation</p><ol style="list-style-type: lower-alpha;"><li><p>'''jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4''' is the rootfs compressed package, the meaning of each field of the name is</p><ol style="list-style-type: lower-alpha;"><li><p>'''jammy''' indicates the type of Linux distribution of rootfs</p></li><li><p>'''xfce''' means rootfs is the type of desktop version, if it is '''cli''', it means the type of server version</p></li><li><p>'''arm64''' represents the architecture type of rootfs</p></li><li><p>'''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</p></li></ol></li><li><p>'''jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4.list''' lists the package names of all packages installed by rootfs</p></li></ol></li></ol> 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 <ol start="10" style="list-style-type: decimal;"><li>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.</li></ol> <span id="compile-linux-image"></span>== Compile Linux image == # Run the build.sh script, remember to add sudo permission test@test:~/orangepi-build$ '''sudo ./build.sh''' <ol start="2" style="list-style-type: decimal;"><li>Select '''Full OS image for flashing''',then enter</li></ol> <div class="figure"> [[File:pi3b-img395.png|576x128px|选区_242]] </div><ol start="3" style="list-style-type: decimal;"><li>Then select the model of the development board</li></ol> <div class="figure"> [[File:pi3b-img380.png|576x197px|}4$_5F06}}0R4GU8]OVO}4E]] </div><ol start="4" style="list-style-type: decimal;"><li>Then select the type of rootfs</li></ol> [[File:pi3b-img389.png|575x86px]] <ol start="5" style="list-style-type: decimal;"><li><p>Then select the type of image</p><ol style="list-style-type: lower-alpha;"><li><p>'''Image with console interface (server)''' Indicates the image of the server version, which is relatively small</p></li><li><p>'''Image with desktop environment''' Indicates a image with a desktop, which is relatively large</p></li></ol></li></ol> <div class="figure"> [[File:pi3b-img390.png|576x75px|选区_245]] </div><ol start="6" style="list-style-type: decimal;"><li>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)'''</li></ol> <div class="figure"> [[File:pi3b-img391.png|569x77px|选区_397]] </div><ol start="7" style="list-style-type: decimal;"><li>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</li></ol> <div class="figure"> [[File:pi3b-img392.png|575x99px|Selection_001]] </div>[[File:pi3b-img393.png|576x74px]] You can then select additional packages that need to be installed. Please press the Enter key to skip directly here. [[File:pi3b-img394.png|575x264px]] <ol start="8" style="list-style-type: decimal;"><li><p>Then it will start to compile the Linux image. The general process of compilation is as follows</p><p>a. Initialize the compilation environment of Ubuntu PC and install the software packages required for the compilation process</p><p>b. Download the source code of u-boot and Linux kernel (if cached, only update the code)</p><p>c. Compile u-boot source code and generate u-boot deb package</p><p>d. Compile the Linux source code and generate Linux-related deb packages</p><p>e. Make the deb package of Linux firmware</p><p>f. Make the deb package of the orangepi-config tool</p><p>g. Create a deb package supported by the board</p><p>h. If you are compiling the desktop image, you will also create desktop-related deb packages</p><p>i. Check whether the rootfs has been cached, if not, recreate the rootfs, if it has been cached, directly decompress and use</p><p>j. Install the previously generated deb package into rootfs</p><p>k. Make some specific settings for different development boards and different types of images, such as pre-installing additional software packages, modifying system configuration, etc.</p><p>l. Then make an image file and format the partition, the default type is ext4</p><p>m. Then copy the configured rootfs to the mirrored partition</p><p>n. Then update initramfs</p><p>o. Finally, write the bin file of u-boot into the image through the dd command</p></li><li><p>After compiling the image, the following information will be prompted</p><ol style="list-style-type: lower-alpha;"><li>The storage path of the compiled image</li></ol></li></ol> [ 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''' ] <ol start="2" style="list-style-type: lower-alpha;"><li>Compilation time</li></ol> '''[ o.k. ] Runtime [ 19 min ]''' <ol style="list-style-type: lower-alpha;"><li>Repeat the command to compile the image, and use the following command to start compiling the image directly without selecting through the graphical interface</li></ol> [ 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''' ] <span id="android-11-operating-system-instructions"></span> = Android 11 operating system instructions = <span id="supported-android-versions"></span>== Supported Android versions == {| class="wikitable"|-| style="text-align: left;"| '''Android version'''| style="text-align: left;"| '''Kernel version'''|-| style="text-align: left;"| '''Android 11'''| style="text-align: left;"| '''Linux4.19'''|} <span id="android-function-adaptation"></span>== Android Function Adaptation == {| class="wikitable"|-| style="text-align: left;"| '''Functions'''| style="text-align: left;"| '''Android 11'''|-| style="text-align: left;"| '''USB2.0x3'''| style="text-align: left;"| '''OK'''|-| style="text-align: left;"| '''USB3.0x1'''| style="text-align: left;"| '''OK'''|-| style="text-align: left;"| '''M.2 NVMe SSD boot'''| style="text-align: left;"| '''OK'''|-| style="text-align: left;"| '''WIFI'''| style="text-align: left;"| '''OK'''|-| style="text-align: left;"| '''Bluetooth'''| style="text-align: left;"| '''OK'''|-| style="text-align: left;"| '''GPIO(40pin)'''| style="text-align: left;"| '''OK'''|-| style="text-align: left;"| '''UART(40pin)'''| style="text-align: left;"| '''OK'''|-| style="text-align: left;"| '''SPI(40pin)'''| style="text-align: left;"| '''OK'''|-| style="text-align: left;"| '''I2C(40pin)'''| style="text-align: left;"| '''OK'''|-| style="text-align: left;"| '''PWM(40pin)'''| style="text-align: left;"| '''OK'''|-| style="text-align: left;"| '''PWM fan interface'''| style="text-align: left;"| '''OK'''|-| style="text-align: left;"| '''3pin Debugging serial port'''| style="text-align: left;"| '''OK'''|-| style="text-align: left;"| '''EMMC'''| style="text-align: left;"| '''OK'''|-| style="text-align: left;"| '''TF card boot'''| style="text-align: left;"| '''OK'''|-| style="text-align: left;"| '''HDMI video'''| style="text-align: left;"| '''OK'''|-| style="text-align: left;"| '''HDMI Audio'''| style="text-align: left;"| '''OK'''|-| style="text-align: left;"| '''LCD'''| style="text-align: left;"| '''OK'''|-| style="text-align: left;"| '''eDP display'''| style="text-align: left;"| '''OK'''|-| style="text-align: left;"| '''Gigabit network port'''| style="text-align: left;"| '''OK'''|-| style="text-align: left;"| '''Network port status indicator'''| style="text-align: left;"| '''OK'''|-| style="text-align: left;"| '''Headphone playback'''| style="text-align: left;"| '''OK'''|-| style="text-align: left;"| '''Headphone recording'''| style="text-align: left;"| '''OK'''|-| style="text-align: left;"| '''LED Light'''| style="text-align: left;"| '''OK'''|-| style="text-align: left;"| '''GPU'''| style="text-align: left;"| '''OK'''|-| style="text-align: left;"| '''NPU'''| style="text-align: left;"| '''OK'''|-| style="text-align: left;"| '''VPU'''| style="text-align: left;"| '''OK'''|-| style="text-align: left;"| '''RTC'''| style="text-align: left;"| '''OK'''|} <span id="wifi-connection-test-method"></span>== WIFI connection test method == # First click enter '''Setting''' [[File:pi3b-img396.png|549x228px]] <ol start="2" style="list-style-type: decimal;"><li>Then select '''Network &amp; internet'''</li></ol> [[File:pi3b-img397.png|565x120px]] <ol start="3" style="list-style-type: decimal;"><li>Then select '''Wi-Fi'''</li></ol> [[File:pi3b-img398.png|561x99px]] <ol start="4" style="list-style-type: decimal;"><li>Then turn on the '''Wi-Fi''' switch</li></ol> [[File:pi3b-img399.png|560x167px]] <ol start="5" style="list-style-type: decimal;"><li>After turning on '''Wi-Fi''', if everything is normal, you can scan for nearby Wi-Fi hotspots</li></ol> [[File:pi3b-img400.png|561x166px]] <ol start="6" style="list-style-type: decimal;"><li>Then select the Wi-Fi you want to connect to, and the password input interface shown in the figure below will pop up</li></ol> [[File:pi3b-img401.png|553x237px]] <ol start="7" style="list-style-type: decimal;"><li>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</li></ol> [[File:pi3b-img402.png|553x232px]] <ol start="8" style="list-style-type: decimal;"><li>After the Wi-Fi connection is successful, the display is as shown in the figure below:</li></ol> [[File:pi3b-img403.png|558x102px]] <span id="how-to-use-wi-fi-hotspot"></span>== 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''' [[File:pi3b-img396.png|549x228px]] <ol start="3" style="list-style-type: decimal;"><li>Then select '''Network &amp; internet'''</li></ol> [[File:pi3b-img397.png|565x120px]] <ol start="4" style="list-style-type: decimal;"><li>Then select '''Hotspot &amp; tethering'''</li></ol> [[File:pi3b-img404.png|549x173px]] <ol start="5" style="list-style-type: decimal;"><li>Then select '''Wi-Fi hotspot'''</li></ol> [[File:pi3b-img405.png|548x104px]] <ol start="6" style="list-style-type: decimal;"><li>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)</li></ol> [[File:pi3b-img406.png|551x158px]] <ol start="7" style="list-style-type: decimal;"><li>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</li></ol> [[File:pi3b-img407.png|313x238px]] <ol start="8" style="list-style-type: decimal;"><li>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.</li></ol> [[File:pi3b-img408.png|327x165px]] <span id="bluetooth-test-method"></span>== Bluetooth test method == # First click enter '''Setting''' [[File:pi3b-img396.png|549x228px]] <ol start="2" style="list-style-type: decimal;"><li>Then select '''Connected devicesNotes'''</li></ol> [[File:pi3b-img409.png|547x115px]] <ol start="3" style="list-style-type: decimal;"><li>Then click '''Pair new device''' to turn on Bluetooth and start scanning the surrounding Bluetooth devices</li></ol> [[File:pi3b-img410.png|547x126px]] <ol start="4" style="list-style-type: decimal;"><li>The searched Bluetooth devices will be displayed under '''Available devices'''</li></ol> [[File:pi3b-img411.png|559x279px]] <ol start="5" style="list-style-type: decimal;"><li>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</li></ol> [[File:pi3b-img412.png|522x212px]] <ol start="6" style="list-style-type: decimal;"><li>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</li></ol> [[File:pi3b-img413.png|236x273px]] <ol start="7" style="list-style-type: decimal;"><li>After the pairing is completed, you can see the paired Bluetooth device as shown in the figure below</li></ol> [[File:pi3b-img414.png|545x178px]] <ol start="8" style="list-style-type: decimal;"><li>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.</li></ol> [[File:pi3b-img415.png|559x238px]] <ol start="9" style="list-style-type: decimal;"><li>You can open the '''Download''' directory in the file manager to view the pictures received by the Android system Bluetooth of the development board</li></ol> [[File:pi3b-img416.png|573x97px]] <span id="how-to-use-raspberry-pi-5-inch-screen"></span>== 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 [[\l|'''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 [[File:pi3b-img417.png|516x332px]] <span id="pin-interface-gpio-uart-spi-and-pwm-test"></span>== 40pin interface GPIO, UART, SPI and PWM test == <span id="pin-gpio-port-test-2"></span>=== 40pin GPIO port test === # First click on the wiringOP icon to open the wiringOP APP [[File:pi3b-img418.png|576x210px]] <ol start="2" style="list-style-type: decimal;"><li>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</li></ol> [[File:pi3b-img419.png|575x148px]] <ol start="3" style="list-style-type: decimal;"><li>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</li></ol> [[File:pi3b-img420.png|576x303px]] <ol start="4" style="list-style-type: decimal;"><li>Then click the '''GPIO READALL''' button, the output information is as shown in the figure below:</li></ol> [[File:pi3b-img421.png|575x323px]] <ol start="5" style="list-style-type: decimal;"><li>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</li></ol> [[File:pi3b-img422.png|241x326px]] <ol start="6" style="list-style-type: decimal;"><li>Then click the '''GPIO READALL''' button, you can see that the current pin 7 mode is '''OUT''', and the pin level is high</li></ol> [[File:pi3b-img423.png|574x301px]] <ol start="7" style="list-style-type: decimal;"><li>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.</li></ol> [[File:pi3b-img424.png|250x345px]] <ol start="8" style="list-style-type: decimal;"><li>Then click the '''GPIO READALL''' button, you can see that the current pin 7 mode is OUT, and the pin level is low</li></ol> [[File:pi3b-img425.png|576x300px]] <span id="pin-uart-test-1"></span>=== 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 [[File:pi3b-img269.png|376x92px]] <ol start="2" style="list-style-type: decimal;"><li>First click on the wiringOP icon to open the wiringOP APP</li></ol> [[File:pi3b-img418.png|576x210px]] <ol start="3" style="list-style-type: decimal;"><li>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</li></ol> [[File:pi3b-img426.png|575x156px]] <ol start="4" style="list-style-type: decimal;"><li>The serial port test interface of the APP is shown in the figure below</li></ol> [[File:pi3b-img427.png|576x324px]] <ol start="5" style="list-style-type: decimal;"><li>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</li></ol> [[File:pi3b-img428.png|574x166px]] <ol start="6" style="list-style-type: decimal;"><li>Then use Dupont wire to short the RXD and TXD pins of uart7</li></ol> [[File:pi3b-img429.png|418x103px]] <ol start="7" style="list-style-type: decimal;"><li>Then you can enter a character in the send edit box below, and click the '''SEND''' button to start sending</li></ol> [[File:pi3b-img430.png|575x161px]] <ol start="8" style="list-style-type: decimal;"><li>If everything is normal, the received string will be displayed in the receiving box</li></ol> [[File:pi3b-img431.png|574x164px]] <span id="pin-spi-test-2"></span>=== 40pin SPI test === # According to the schematic diagram of the 40pin interface, the spi available for Orange Pi 3B is spi3 [[File:pi3b-img264.png|577x193px]] <ol start="2" style="list-style-type: decimal;"><li>Here, the SPI interface is tested through the w25q64 module. First, the w25q64 device is connected to the SPI3 interface</li></ol> [[File:pi3b-img432.png|373x215px]] <ol start="3" style="list-style-type: decimal;"><li>Then click the wiringOP icon to open the wiringOP APP</li></ol> [[File:pi3b-img418.png|576x210px]] <ol start="4" style="list-style-type: decimal;"><li>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</li></ol> [[File:pi3b-img433.png|574x149px]] <ol start="5" style="list-style-type: decimal;"><li>Then click the '''OPEN''' button to initialize the SPI</li></ol> [[File:pi3b-img434.png|576x241px]] <ol start="6" style="list-style-type: decimal;"><li>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</li></ol> [[File:pi3b-img435.png|572x216px]] <ol start="7" style="list-style-type: decimal;"><li>Finally, the APP will display the read ID information</li></ol> [[File:pi3b-img436.png|575x296px]] <ol start="8" style="list-style-type: decimal;"><li>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)</li></ol> [[File:pi3b-img437.png|374x126px]] <span id="pin-pwm-test"></span>=== 40pin PWM test === # Android enables '''PWM11''' by default, and the corresponding pin is located at 40pin as shown in the figure below [[File:pi3b-img438.png|334x107px]] <ol start="2" style="list-style-type: decimal;"><li>First click on the wiringOP icon to open the wiringOP APP</li></ol> [[File:pi3b-img418.png|576x210px]] <ol start="3" style="list-style-type: decimal;"><li>Then click the '''PWM_TEST''' button on the main interface of wiringOP to enter the PWM test interface</li></ol> [[File:pi3b-img439.png|575x150px]] <ol start="4" style="list-style-type: decimal;"><li>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</li></ol> [[File:pi3b-img440.png|576x178px]] <ol start="5" style="list-style-type: decimal;"><li>When the drop-down option selects '''pwmchip3''', the corresponding base address of PWM11 is '''fe6f0030''' on the right</li></ol> [[File:pi3b-img441.png|574x161px]] <ol start="6" style="list-style-type: decimal;"><li>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'''</li></ol> [[File:pi3b-img442.png|575x160px]] <ol start="7" style="list-style-type: decimal;"><li>Then drag the drag bar below to change the PWM duty cycle, and then check Enable to output the PWM waveform</li></ol> [[File:pi3b-img443.png|575x167px]] <ol start="8" style="list-style-type: decimal;"><li>Then use an oscilloscope to measure the No. 32 pin in the 40pin of the development board, and you can see the following waveform</li></ol> [[File:pi3b-img444.png|460x276px]] <span id="how-to-use-adb"></span>== How to use ADB == <span id="use-network-connection-adb-debugging"></span>=== 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 &quot;adb.tcp&quot;''' [service.adb.tcp.port]: ['''5555'''] <ol start="2" style="list-style-type: decimal;"><li>If '''service.adb.tcp.port''' is not set, you can use the following command to set the port number of network adb</li></ol> console:/ # '''setprop service.adb.tcp.port 5555''' console:/ # '''stop adbd''' console:/ # '''start adbd''' <ol start="3" style="list-style-type: decimal;"><li>Install adb tool on Ubuntu PC</li></ol> test@test:~$ '''sudo apt update''' test@test:~$ '''sudo apt install -y adb''' <ol start="4" style="list-style-type: decimal;"><li>Then connect network adb on Ubuntu PC</li></ol> 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 test@test:~$ '''adb devices''' List of devices attached 192.168.1.xxx:5555 device <ol start="5" style="list-style-type: decimal;"><li>Then you can log in to the android system through the adb shell on the Ubuntu PC</li></ol> test@test:~$ '''adb shell''' console:/ # <span id="appendix"></span>= Appendix = <span id="user-manual-update-history"></span>== User Manual Update History == {| class="wikitable"
|-
| style="text-align: left;"| '''Version'''| style="text-align: left;"| '''Date'''| style="text-align: left;"| '''Update Notes'''|-| style="text-align: left;"| v0.1| style="text-align: left;"| 2023-07-19| style="text-align: left;"| initial version
|}
== Image Update History ==
{| class="wikitable" style="width:800px;"
|-
| style="text-align: center;" | '''Date'''| style="text-align: center;" | '''Update Notes'''
|-
| style="text-align: center;" | 2023-07-19| Orangepi3 b_1Orangepi3b_1.0.0_debian_bullseye_desktop_xfce_linux5.10.160.7z
Orange pi3b_1Orangepi3b_1.0.0_ubuntu_jammy_desktop_xfce_linux5.10.160.7z
Orange pi3b_1Orangepi3b_1.0.0_ubuntu_focal_desktop_xfce_linux5.10.160.7z
OrangePi3B_RK3566_Android11_v1.0.0.tar.gz
OrangePi3B_RK3566_Android11_spi-nvme_v1.0.0.tar.gz
O rangePi3B_RK3566_Android11_lcd_spiOrangePi3B_RK3566_Android11_lcd_spi-nvme_v1.0.0.tar.gz 
<p>* initial version</p>
|}