Open main menu

Wiki-Orange Pi β

Changes

Orange Pi 3B

37,268 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 ==
• Integrated RKNN NPU AI accelerator, 0.8Tops@INT8 performance
• Supports one-click conversion of C affeCaffe/TensorFlow/TFLite/ONNX/PyTorch/Keras/Darknet architecture models
|-
| storage
|
• Support eMMC module: 16GB/32GB/64GB/128GB/256GB
• SPI Flash: 16MB/32MB
| Wi-Fi+Bluetooth
|
Wi-Fi 5+BT 5.0,BLE(20U5622)0, BLE(20U5622)
|-
| ethernet transceiver
| 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|
<div class="figure">
[[File:pi3b-img3.png|800px]]
</div>
<div class="figure">
[[File:pi3b-img4.png|800px]]
</div>
== 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>
|}
</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>
[[File:pi3b-img11-1.png]]
</ol>
<ol start="6" 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>
[[File:pi3b-img17.png|400px]] [[File:pi3b-img18.png|400px]]
</ol>
<ol start="12" style="list-style-type: decimal;">
<div class="figure">
::[[File:pi3b-img19.png|800px]]
</div>
|-
|
'''https://www.balena.io/etcher/'''
|}
<div class="figure">
[[File:pi3b-img25.png|501x281px|03]]
</div></ol>
<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>
[[File:pi3b-img26.png|428x268px]]
</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>
[[File:pi3b-img27.png|427x267px]]
</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>
<div class="figure">
[[File:pi3b-img28.png|523x324px|04]]
</div></ol>
<div class="figure">
::[[File:pi3b-img16.png|146x143px|D6BB9058-CDC3-42d7-A7FC-FBF630D886B7]]
</div>
<div class="figure">
[[File:pi3b-img29.png|283x90px|6d1c77df7eeb7e491e5f79e8d85cbdc]]
</div></ol>
<div class="figure">
[[File:pi3b-img30.png|290x130px|34acacded202b29eee42fd20f5b4c92]]
</div>
<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|464x136px]]
</ol>
<ol start="6" style="list-style-type: decimal;">
<li>Click the &quot;'''Driver Installation'''&quot; button</li>
[[File:pi3b-img32.png|245x129px]]
</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|254x132px]]
</ol>
</li></ol>
<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>
[[File:pi3b-img34.png|448x132px]]
</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>
[[File:pi3b-img35.png|402x189px]]
</ol>
<ol start="9" style="list-style-type: decimal;">
<div class="figure">
[[File:pi3b-img36.png|271x115px|C:\Users\orangepi\Desktop\用户手册插图\pi 3b\1691131157154(1).jpg1691131157154(1)]]
</div></ol>
<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|289x100px]]
</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>
[[File:pi3b-img38.png|305x94px]]
</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|454x213px]]
</ol>
<ol start="6" style="list-style-type: lower-alpha;">
<div class="figure">
[[File:pi3b-img40.png|455x216px|图片1]]
</div></ol>
<li>Then click the right mouse button and the selection interface shown in the figure below will pop up</li>
[[File:pi3b-img41.png|453x213px]]
</ol>
<ol style="list-style-type: lower-roman;">
<li>Then select the '''import configuration''' option</li>
[[File:pi3b-img42.png|458x215px]]
</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>
[[File:pi3b-img43.png|457x215px]]
</ol>
<ol start="11" style="list-style-type: lower-alpha;">
<li>Then click '''OK'''</li>
[[File:pi3b-img44.png|483x227px]]
</ol>
<ol start="12" style="list-style-type: lower-alpha;">
<li>Then click the position shown in the figure below</li>
[[File:pi3b-img45.png|486x228px]]
</ol>
<ol start="13" style="list-style-type: lower-alpha;">
<div class="figure">
[[File:pi3b-img46.png|494x232px|[78~~Z7UFB@US@8P$QL%OM6]]
</div></ol>
<li>Then click the position shown in the figure below</li>
[[File:pi3b-img47.png|493x232px]]
</ol>
<ol start="15" style="list-style-type: lower-alpha;">
|}
[[File:pi3b-img48.png|499x234px]]
</ol>
<ol start="16" style="list-style-type: lower-alpha;">
<li>Then please check the '''mandatory write by address''' option</li>
[[File:pi3b-img49.png|497x234px]]
</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>
[[File:pi3b-img50.png|497x233px]]
</ol>
<ol start="18" style="list-style-type: lower-alpha;">
<div class="figure">
[[File:pi3b-img51.png|492x231px|%O4~FPPAT$0RH{3S~CGJ@@Q(1)]]
</div></ol>
|-
|
'''https://www.sdcard.org/downloads/formatter/eula_windows/SDCardFormatterv5_WinEN.zip'''
|}
</ol>
<div class="figure">
[[File:pi3b-img52.png|209x228px|选区_199]]
</div></ol>
<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>
[[File:pi3b-img53.png|304x147px]]
</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>
[[File:pi3b-img54.png|186x149px]]
</ol>
</li></ol>
|-
|
'''http://sourceforge.net/projects/win32diskimager/files/Archive/'''
|}
</ol>
<div class="figure">
[[File:pi3b-img55.png|297x206px|C:\Users\orangepi\Desktop\用户手册插图\Pi5 Plus\a8fda8737c5b0b3b38fbb75ef68acfc.pnga8fda8737c5b0b3b38fbb75ef68acfc]]
</div></ol>
<li>After entering the balenaEtcher download page, click the green download button to jump to the place where the software is downloaded</li>
[[File:pi3b-img20.png|434x208px]]
</ol>
<ol start="5" style="list-style-type: decimal;">
<li>Then choose to download the Linux version of the software</li>
[[File:pi3b-img56.png|430x163px]]
</ol>
<ol start="6" 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>
[[File:pi3b-img57.png|423x251px]]
</ol>
<ol start="9" style="list-style-type: decimal;">
<div class="figure">
[[File:pi3b-img25.png|501x281px|03]]
</div></ol>
<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>
[[File:pi3b-img58.png|429x184px]]
</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>
[[File:pi3b-img59.png|436x190px]]
</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>
[[File:pi3b-img60.png|435x257px]]
</ol>
<span id="how-to-burn-linux-image-to-emmc"></span>
# 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;">
<div class="figure">
[[File:pi3b-img16.png|141x138px|D6BB9058-CDC3-42d7-A7FC-FBF630D886B7]]
</div></ol>
<div class="figure">
[[File:pi3b-img29.png|360x115px|C:\Users\orangepi\Desktop\用户手册插图\Pi5 Plus\6d1c77df7eeb7e491e5f79e8d85cbdc.png6d1c77df7eeb7e491e5f79e8d85cbdc]]
</div></ol>
<div class="figure">
[[File:pi3b-img30.png|320x144px|C:\Users\orangepi\Desktop\用户手册插图\Pi5 Plus\34acacded202b29eee42fd20f5b4c92.png34acacded202b29eee42fd20f5b4c92]]
</div>
<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|496x146px]]
</ol>
<ol start="6" style="list-style-type: decimal;">
<li>Click the &quot;'''Driver Installation'''&quot; button</li>
[[File:pi3b-img32.png|284x149px]]
</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|296x154px]]
</ol>
</li></ol>
<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>
[[File:pi3b-img34.png|484x143px]]
</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>
[[File:pi3b-img35.png|442x208px]]
</ol>
<ol start="9" style="list-style-type: decimal;">
<div class="figure">
[[File:pi3b-img36.png|275x116px|C:\Users\orangepi\Desktop\用户手册插图\pi 3b\1691131157154(1).jpg1691131157154(1)]]
</div></ol>
<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|289x100px]]
</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>
[[File:pi3b-img38.png|305x94px]]
</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|457x215px]]
</ol>
<ol start="6" style="list-style-type: lower-alpha;">
<div class="figure">
[[File:pi3b-img64.png|458x215px|C:\Users\orangepi\Desktop\用户手册插图\Pi5 Plus\未标题-4.jpg未标题-4]]
</div></ol>
<li>Then click the right mouse button and the selection interface shown in the figure below will pop up</li>
[[File:pi3b-img41.png|460x216px]]
</ol>
<ol start="8" style="list-style-type: lower-alpha;">
<li>Then select the '''import configuration''' option</li>
[[File:pi3b-img42.png|458x215px]]
</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>
[[File:pi3b-img65.png|466x219px]]
</ol>
<ol start="10" style="list-style-type: lower-alpha;">
<li>Then click '''OK'''</li>
[[File:pi3b-img66.png|468x220px]]
</ol>
<ol start="11" style="list-style-type: lower-alpha;">
<li>Then click the position shown in the figure below</li>
[[File:pi3b-img67.png|462x217px]]
</ol>
<ol start="12" style="list-style-type: lower-alpha;">
<div class="figure">
[[File:pi3b-img68.png|459x216px|SIS5H0S2@F5M2D(6ANZEUPG]]
</div></ol>
<li>Then click the position shown in the figure below</li>
[[File:pi3b-img69.png|459x216px]]
</ol>
<ol start="14" style="list-style-type: lower-alpha;">
|}
[[File:pi3b-img48.png|499x234px]]
</ol>
<ol start="15" style="list-style-type: lower-alpha;">
<li>Then please check the option to '''force writing by address'''</li>
[[File:pi3b-img70.png|501x235px]]
</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>
[[File:pi3b-img71.png|502x236px]]
</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>
[[File:pi3b-img72.png|500x235px]]
</ol>
<ol start="18" style="list-style-type: lower-alpha;">
=== 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/hardWare/computerAndMicrocontrollers/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|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;" |-| <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><span id="how-to-write-linux-image-to-spiflashnvme-ssd"></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="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/hardWare/computerAndMicrocontrollers/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>
=== Using RKDevTool 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|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/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</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
/dev/zram1 194M 9.9M 170M 6% /var/log{| class="wikitable" style="width:800px;" |-| tmpfs 769M 60K 769M 1% /run/userorangepi@orangepi:~/1000Desktop$ '''lspci'''
tmpfs 769M 48K 769M 1% /run/user/0:00.0 PCI bridge: Fuzhou Rockchip Electronics Co., Ltd Device 3566 (rev 01)
01:00.0 Non-Volatile memory controller: Realtek Semiconductor Co., Ltd. Device 5765 (rev 01)|}</ol><ol start="26" style="list-style-type: lower-alphadecimal;"><li>2TB NVMe SSDThe balenaEtcher has been pre-installed in the Linux image, and the opening method is as follows:</li></ol>
orangepi@orangepi:~$ '''df -h'''<div class="figure">
Filesystem Size Used Avail Use% Mounted on[[File:pi3b-img89.png]]
udev 3</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 on how to download and install the arm64 version of balenaEtcher.8G 8.0K 3.8G 1% '''</big>|}</ol><ol start="7" style="list-style-type: decimal;"><li>The interface after balenaEtcher is opened is as follows:</devli>
tmpfs 769M 1.4M 768M 1% /run<div class="figure">
'''/dev/nvme0n1p2 1[[File:pi3b-img90.9T 4.1G 1.8T 1% /'''png]]
tmpfs 3.8G 0 3.8G 0% </devdiv></shmol><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>
tmpfs 5.0M 4.0K 5.0M 1% /run/lock<div class="figure">
/dev/zram2 3[[File:pi3b-img91.7G 76K 3.5G 1% /tmppng]]
</div></ol><ol start="2" style="list-style-type: lower-alpha;"><li>Then enter the '''/devusr/nvme0n1p1 256M 90M 166M 36% lib/Linux-u-boot-legacy-orangepi3b_1.x.x_arm64''' directory, select '''rkspi_loader.img''', and click '''Open''' to open</li>
/dev/zram1 194M 15M 165M 9% /var/log<div class="figure">
tmpfs 769M 60K 769M 1% /run/user/1000[[File:pi3b-img92.png]]
tmpfs 769M 48K 769M 1% </rundiv></userol><ol start="3" style="list-style-type: lower-alpha;"><li>The interface after opening '''rkspi_loader.img''' is as follows:</0li>
[[File:pi3b-img93.png]]</ol><ol start="134" style="list-style-type: decimallower-alpha;"><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 Then click '''rootfsSelect target''' 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></ol>
orangepi@orangepi:~$ '''sudo fix_mmc_ssd.sh'''<div class="figure">
'''Exactly the same system means that the image name is exactly the same[[File:pi3b-img94. Even if they are all Debian11 systems, the versions are different.'''png]]
<span id/div></ol><ol start="5" style="how-to-use-balenaetcherlist-softwarestyle-totype: lower-burnalpha;"><li>Then click '''Show 2 hidden''' to open more options for storage devices</spanli>=== How to use balenaEtcher software to burn ===
<ol stylediv class="list-style-type: decimal;figure"><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-img73img95.png|189x136px]]
</div></ol><ol start="26" style="list-style-type: lower-alpha;"><li>The M.2 2242 SSD is as followsThen select the device name of SPI Flash '''/dev/mtdblock0''', and click '''Select'''</li></ol>
[[File:pi3b-img74.png|238x129px]]<div class="figure">
<ol start="2" style="list[[File:pi3b-style-type: decimal;"><li>Then insert the NVMe SSD into the Mimg96.2 PCIe interface of the development board and fix it</li></ol>png]]
[[File</div></ol><ol start="7" style="list-style-type:pi3blower-img75.png|283x63px]]alpha;"><li>Then click '''Flash'''</li>
<ol startdiv class="3figure" 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-img76img97.png|261x198px]]
</div></ol><ol start="48" style="list-style-type: decimallower-alpha;"><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 [[\l|''Then click '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''']].</p></li><li><p>After booting into the Linux system in the TF cardYes, 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 I'm sure''sudo fdisk -l''' command to see '''nvme''' related information</p></li></ol>
orangepi@orangepi:~/Desktop$ '''sudo fdisk -l | grep &quot;nvme0n1&quot;'''<div class="figure">
Disk /dev/nvme0n1[[File: 1pi3b-img98.86 TiB, 2048408248320 bytes, 4000797360 sectorspng]]
Use </div></ol><ol start="9" style="list-style-type: lower-alpha;"><li>Then enter the password '''lspciorangepi''' command to see an NVMeof the development board Linux system, and it will start burning the u-related PCI deviceboot image into the SPI Flash</li>
orangepi@orangepi:~/Desktop$ '''lspci''' 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., Ltdimg99. Device 5765 (rev 01)png]]
</div></ol><ol start="610" style="list-style-type: decimallower-alpha;"><li>The balenaEtcher has been pre-installed in the Linux image, and display of the opening method burning process is as follows:</li></ol>
<div class="figure">
[[File:pi3b-img89img100.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><ol start="711" style="list-style-type: decimallower-alpha;"><li>The interface display after balenaEtcher is opened burning is as follows:</li></ol>
<div class="figure">
[[File:pi3b-img90img101.png|406x207px|IMG_256]]
</div></ol></li></ol><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></ol>
<div class="figure"> [[File:pi3b-img101img111.png|395x225px|IMG_256]] </divol><ol start="912" style="list-style-type: decimallower-alpha;"><li><p>The method of burning the Linux system in the TF card Then you need to expand the NVMe SSD (this method is equivalent to cloning capacity of the system rootfs partition in the TF card to the NVMe SSD). The steps are as follows:</p><ol style="list-style-type: lower-alphanone;"><li>First click <p>a) Open '''Clone driveGParted'''first, if the system does not have Gparted pre-installed, please use the apt command to install it</lip>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''sudo apt-get install -y gparted'''</olp>|}</li></ol>
<div class="figure">
[[File:pi3b-img102img112.png|386x204px|IMG_256]]
</div></ol><ol start="2" style="list-style-type: lower-alphanone;"><li>b) Then select enter the device name password orangepi of the TF card Linux system, and click '''/dev/mmcblk1Authenticate'''</li></ol>
[[File:pi3b-img113.png]]<div class/ol><ol start="3" style="figurelist-style-type: none;"><li>c) Then click '''Fix'''</li>
[[File:pi3b-img103img114.png|379x256px|IMG_256]] </divol><ol start="34" style="list-style-type: lower-alphanone;"><li>The interface after opening the TF card is as follows:d) Then select NVMe SSD</li></ol>
<div class="figure">
[[File:pi3b-img104img115.png|381x191px|IMG_256]]
</div></ol><ol start="45" style="list-style-type: lower-alphanone;"><li>Then click '''Select target'''e) The display interface after selecting NVMe SSD is as follows:</li></ol>
<div class="figure">
[[File:pi3b-img94img116.png|379x171px|IMG_256]]
</div></ol><ol start="56" style="list-style-type: lower-alphanone;"><li>f) Then select the '''/dev/nvme0n1p2''' partition, click the right button again, and then select '''Show 2 hiddenResize/Move''' to open more options for storage devices</li></ol>
<div class="figure">
[[File:pi3b-img95img117.png|385x155px|IMG_256]]
</div></ol><ol start="67" style="list-style-type: lower-alphanone;"><li>g) Then select drag the device name of capacity to the NVMe SSD '''/dev/nvme0n1''', and click '''Select'''maximum at the position shown in the figure below</li></ol>
[[File:pi3b-img105img118.png|386x264px]]</ol><ol start="8" style="list-style-type: none;"><li>h) Then click '''Resize/Move'''</li>
[[File:pi3b-img119.png]]</ol><ol start="7" style="list-style-type: lower-alphanone;"><li>i) Then click the green '''Flash'''in the position below</li></ol>
[[File:pi3b-img120.png]]<div class/ol><ol start="10" style="figurelist-style-type: none;"><li>j) Then click '''Apply'''</li>
[[File:pi3b-img106img121.png|389x264px|IMG_256]]</ol><ol start="11" style="list-style-type: none;"><li>k) Then click '''Close''' to close</li>
[[File:pi3b-img122.png]]</divol></li></ol><ol start="813" style="list-style-type: lower-alpha;"><li>Then click At this point, you can use the '''sudo poweroff'''Yescommand to shut down. Then please pull out the TF card, Iand 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 'm sure''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</olp></li>
<div class="figure">
[[File:pi3b-img107img123.png|392x268px|IMG_256]]
</div></ol><ol start="3" style="list-style-type: lower-romanalpha;"><li>Then enter '''After using this method to burn the password orangepi of image, there is no need to manually expand the Linux system on the development boardcapacity, and it will start burning automatically expand the Linux image to capacity at the SSDfirst startup.'''</li></ol></li></ol><div classspan id="figurehow-to-burn-android-image-to-tf-card"></span>
[[File:pi3b-img108.png|390x267px|IMG_256]]== How to burn Android image to TF card ==
</div><ol startspan id="10" style="listmethod-of-burning-android-image-to-tf-card-through-styleusb2.0-type: lowerburning-alpha;port"><li/span>The display === Method of the burning process is as follows:</li></ol>Android image to TF card through USB2.0 burning port ===
[[File:pi3b# 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-img109.png|393x212px]]to-male data cable
<div class="figure">
::[[File:pi3b-img110img16.png|395x205px|IMG_256]]
</div>
<ol start="113" style="list-style-type: lower-alphadecimal;"><li>The display after <p>Then download Rockchip driver '''DriverAssitant_v5.12.zip''' and burning is as followstool '''RKDevTool_Release_v3.15.zip''' from [http:</li></ol> [[File:pi3bwww.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-img1113B.png|398x227pxhtml '''Orange Pi's data download page''']] <ol start="12" style="list-style-type: lower-alpha;"/p></li><li><p>Then you need to expand download the capacity of the rootfs partition in the NVMe SSDAndroid image from [http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-3B.html '''Orange Pi's download page''']. The steps are as follows:</p>
<ol style="list-style-type: lower-alpha;">
<li><p>Open '''GParted''' firstAfter opening the download link of the Android image, if you can see the system does not have Gparted pre-installedfollowing two types of Android images, please use select the image in the apt command to install it</p><p>orangepi@orangepi:~$ '''sudo apt-get install -y gpartedTF card and eMMC startup image'''</p></li></ol>folder to download</li></ol>
<div class="figure">
[[File:pi3b-img112img124.png|576x215px|IMG_256]]
</div>
</ol>
<ol start="2" style="list-style-type: lower-alpha;">
<li>Then enter <p>After entering the password orangepi of the Linux system, and click '''AuthenticateTF 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 and supports 4K display. If you don't use LCD screen, please download the image without lcd</olp></li><li><p>b) If you want to use lcd screen, please choose image with lcd</p></li>
[[File:pi3b-img113img125.png|356x173px]]</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]]</ol><ol start="37" 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>Then click Click the &quot;'''FixDriver Installation'''&quot; button</li></ol>
[[File:pi3b-img114img32.png|355x261px]]</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]]</ol></li></ol><ol start="48" style="list-style-type: lower-alphadecimal;"><li>Then select NVMe SSDdecompress '''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]]<div class/ol><ol start="9" style="figurelist-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-img115img35.png|452x187px|IMG_256]] </divol><ol start="510" style="list-style-type: decimal;"><li><p>Then start burning the Android 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 display position of the USB2.0 programming interface after selecting NVMe SSD of the development board is as follows:shown in the figure below</li></ol>
<div class="figure">
[[File:pi3b-img116img36.png|451x187px|IMG_256]]
</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> [[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> [[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> [[File:pi3b-img39.png]]</ol>
<ol start="6" style="list-style-type: lower-alpha;">
<li><p>Then insert the TF card into the development board</p></li><li><p>Then please select the '''advanced features'''</devp><p>[[File:pi3b-img126.png]]</p></nvme0n1p2li><li><p>Then click the position shown in the figure below</p><p>[[File:pi3b-img127.png]]</p></li><li><p>Then select ''' partition, click rk3566_MiniLoaderAll.bin''' in the right button again, and then select '''Resize/MoveMiniLoader'''folder downloaded earlier, and click to open</lip></olli>
<div class="figure">
[[File:pi3b-img117img68.png|448x345px|IMG_256]] </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">
</div><ol start="7" style="list-style-type[[File: lowerpi3b-alpha;"><li>Then drag the capacity to the maximum at the position shown in the figure below</li></ol>img130.png]]
[[File:pi3b-img118.png|339x210px]]</div></li><li><p>The display of successful switching is shown in the figure below</p></li>
<ol startdiv class="8figure" style="list-style-type: lower-alpha;"><li>Then click '''Resize/Move'''</li></ol>
[[File:pi3b-img119img131.png|339x212px]]
</div></ol ><ol start="14" style="list-style-type: lower-romanalpha;"><li>Then click the green &quot;'''Upgrade Firmware''' in &quot; column of the position belowburning tool</li></ol>
[[File:pi3b-img120img132.png|425x166px]]</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-img133.png]]</ol><ol start="1016" style="list-style-type: lower-alpha;"><li>Then Finally, click the &quot;'''ApplyUpgrade'''&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>
[[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>img134.png]]
[[File:pi3b</div></ol></li></ol><span id="how-img122.png|383x234px]]to-use-sddisktool-to-burn-android-image-to-tf-card"></span>
<ol start="13" style="list-style-type: lower-alpha;"><li>At this point, you can = How to use the '''sudo poweroff''' command SDDiskTool to burn Android image 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.</li></ol>===
<!-- --><ol start="10" style="list-style-type: decimal;"><li><p>Step 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'9)''], ' is to clone ''<span style="color:#FF0000">please make sure that the system in version of the TF card to SDDiskTool tool is the NMVe SSDlatest v1.72</span>. We can also directly burn '''</p></li><li><p>Then download the Linux Android11 image file to from the NVMe SSD[http://www.orangepi. Here are the steps: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><p>Upload After opening the download link of the Linux Android image file to , you can see the Linux system following two types of Android images, please select the image in the development board</p></li><li><p>Then use balenaEtcher '''TF card and eMMC startup image''' folder to burn</p></li></ol>download</li></ol>
<div class="figure">
[[File:pi3b-img123img124.png|529x333px|图片1]]
</div></ol><ol start="32" style="list-style-type: lower-alpha;"><li>After entering the '''After using this method to burn the TF card and eMMC boot image''' folder, there is no need to manually expand you can see the capacityfollowing two images, and it will automatically expand the capacity at the first startup.'''difference between them is:</li></ol>
<span idol style="howlist-to-burn-androidstyle-type: none;"><li><p>a) The image without lcd is specially used for HDMI display and supports 4K display. If you do not use the LCD screen, please download the image-to-tf-card"without lcd</p></spanli>== How <li><p>b) If you want to burn Android use LCD screen, please choose image to TF card ==with lcd</p></li>
<span id="method-of-burning-android-image-to-tf-card-through-usb2.0-burning-port"></span>=== 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-img16img125.png|141x138px|D6BB9058-CDC3-42d7-A7FC-FBF630D886B7]] </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-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>
 
<div class="figure">
 
[[File:pi3b-img124.png|340x108px|e6986fc9c8fc078e8cb6a9c39b76fb8]]
 
</div>
<ol start="2" 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: 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>
 
[[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_v5SDDiskTool_v1.1272.zip''', and then this software does not need to be installed, just find the '''DriverInstallSD_Firmware_Tool.exe''' executable file in the decompressed folder and open it</p></li></ol> [[File:pi3b-img31.png|575x169px]]
[[File:pi3b-img135.png]]
</ol>
<ol start="7" style="list-style-type: decimal;">
<li><p>After opening '''DriverInstall.exeSDDiskTool''', if the steps to install TF card is recognized normally, the Rockchip driver are as follows</p><ol style="list-style-type: lower-alpha;"><li>Click inserted disk device will be displayed in the &quot;'''Driver InstallationSelect Removable Disk Device'''&quot; button</li></ol></li></ol> [[File:pi3b-img32column.png|300x157px]] '''<ol start="2" span style="list-style-typecolor: lower-alpha;#FF0000">Please make sure that the displayed disk device is consistent with the drive letter of the TF card you want to burn<li/span>After waiting for a period of time, a pop-up window will prompt &quot;'''The driver , if there is installed successfully'''&quot;no display, and then click you can try to unplug the &quot;'''OK'''&quot; button.TF card</li></ol> [[File:pi3b-img33.png|315x164px]]
[[File:pi3b-img136.png]]
</ol>
<ol start="8" style="list-style-type: decimal;">
<li>Then decompress After confirming the drive letter, you can format the TF card first, click the '''restore disk button'RKDevTool_Release_v3.15.zip''in '''SDDiskTool, this software does not need to be installed, just find '''RKDevToolor use the '''SD Card Formatter''' in mentioned above to format the decompressed folder and open itTF card</li></ol> [[File:pi3b-img34.png|454x134px]]
[[File:pi3b-img137.png]]
</ol>
<ol start="9" style="list-style-type: decimal;">
<li>After opening the '''RKDevTool''' burning tool, because <p>Then start to write the computer has not connected Android image to the development board through the USB2.0 maleTF card</p><ol style="list-tostyle-male data cable at this time, the type: lower left corner will prompt -alpha;"><li><p>First check &quot;SD Boot&quot;'''No device found'''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></olli[[File:pi3b-img35.png|442x208px]]<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><p>Then start After burning , you can exit the Android image to SDDiskTool software, and then you can pull out the TF card</p><ol style="list-style-type: lower-alpha;"><li>First, connect the development board to from the Windows computer through the USB2.0 male-to-male data cable. The position of the USB2.0 programming interface of and insert it into the development board is shown in the figure belowto start</li></ol></li></ol>
[[File:pi3b-img139.png]]<div class/ol><span id="figurehow-to-burn-android-image-to-emmc"></span>
[[File:pi3b-img36.png|275x116px|C:\Users\orangepi\Desktop\用户手册插图\pi 3b\1691131157154(1).jpg1691131157154(1)]]== How to burn Android image to eMMC ==
</div><ol start{| class="2wikitable" style="listbackground-style-typecolor:#ffffdc;width: lower-alpha800px;">|-| <libig><p>Then make sure that '''Note, after burning the development board is not inserted image into eMMC, if the TF card and not connected to test finds that it cannot be started, please clear the power supply</p></li><li><p>Then press SPIFlash and hold try again. For the MaskROM button on the development boardmethod of clearing SPIFlash, please refer to [[Orange Pi 3B#Using RKDevTool to clear SPIFlash|the position method of the MaskROM button on the development board is shown in the figure below:using RKDevTool to clear SPIFlash]].'''</p></li></olbig>|}
[[File:pi3b<span id="method-img37of-burning-android-image-into-emmc-through-usb2.0-burning-port"></span>=== Method of burning Android image into eMMC through USB2.png|289x100px]]0 burning port ===
<ol start{| class="4wikitable" style="listbackground-style-typecolor:#ffffdc;width: lower-alpha800px;">|-| <libig>Then connect the power supply of the Type-C interface to '''Note that all the development board, and power following operations are performed ona Windows computer.'''</li></olbig>|}
[[File<ol style="list-style-type:pi3b-img38decimal;"><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.png|305x94px]]</p><p>The eMMC module and the method of plugging into the development board are as follows:</p></li>
<ol start="5" style="list-style[[File:pi3b-typeimg61.png|400px]] [[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>img62.png|400px]]
[[File:pi3b-img39img63.png|457x215px800px]]</ol><ol start="62" style="list-style-type: lower-alphadecimal;"><li><p>Then insert the TF card into the development board</p></li><li><p>Then please select '''advanced features'''</p><p>[[File:pi3b-img126You also need to prepare a good quality USB2.png|458x138px]]</p></li><li><p>Then click the position shown in the figure below</p><p>[[File:pi3b0 male-img127.png|459x216px]]</p></li><li><p>Then select '''rk3566_MiniLoaderAll.bin''' in the '''MiniLoader''' folder downloaded earlier, and click to open</p>-male data cable</li></ol>
<div class="figure">
[[File:pi3b-img68img16.png|459x216px|SIS5H0S2@F5M2D(6ANZEUPG]]
</div></ol><ol start="103" style="list-style-type: lower-alphadecimal;"><li><p>Then click download Rockchip driver '''DriverAssitant_v5.12.zip''' and burning tool '''downloadRKDevTool_Release_v3.15.zip'''</p><p>from [[Filehttp:pi3b-img128//www.orangepi.png|472x222px]]<org/html/hardWare/computerAndMicrocontrollers/p><service-and-support/li><li><p>The display after downloading Orange-Pi-3B.html '''Orange Pi'rk3566_MiniLoaderAll.bins data download page''' is shown in the figure below</p><p>[[File:pi3b-img129.png|474x227px]]</p></li><li><p>Then select download the storage device as Android image from '''SD''', [http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and then click -support/Orange-Pi-3B.html Orange Pi'''Switch Storages download page].'''</p><div classol style="figure"> [[Filelist-style-type:pi3blower-img130.png|477x222px|D~T2CO%X~K2@ELR98)BVP~2]] </div></lialpha;"><li><p>The display After opening the download link of the Android image, you can see the following two types of successful switching is shown Android images, please select the image in the figure below</p>'''TF card and eMMC startup image folder''' to download</li></ol>
<div class="figure">
[[File:pi3b-img131img124.png|474x223px|QFVLTK~19N32OK2UGH{D{AK]]
</div></ol><ol start="142" style="list-style-type: lower-alpha;"><li>Then click <p>After entering the &quot;'''Upgrade FirmwareTF card and eMMC startup image folder'''&quot, you can see the following two images, the difference between them is</p><ol style="list-style-type: none; column of "><li><p>a) The first image is dedicated to HDMI display and supports 4K display. If you don't use LCD screen, please download the burning toolimage without lcd</p></li><li><p>b) If you want to use lcd screen, please choose image with lcd</olp></li>
[[File:pi3b-img132img125.png|477x224px]]</ol></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 '''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]]</ol><ol start="157" 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>Then click Click the &quot;'''FirmwareDriver Installation'''&quot; button to select the path of the Android image that needs to be burned</li></ol>
[[File:pi3b-img133img32.png|444x209px]]</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="168" style="list-style-type: lower-alphadecimal;"><li>Finally, click the &quot;Then decompress '''UpgradeRKDevTool_Release_v3.15.zip'''&quot; button , this software does not need to start burningbe installed, and the log during the burning process is shown just find '''RKDevTool''' in the figure below. After burning is completed, the Android system will start automatically.decompressed folder and open it</li></ol>
[[File:pi3b-img34.png]]<div class/ol><ol start="9" style="figurelist-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-img134img35.png|455x214px|GO~ZSPN`B]JCQM`@_9UU8[R]] </divol><span idol start="how-to-use-sddisktool-to-burn-android-image-to-tf-card10"></span>=== How to use SDDiskTool to burn Android image to TF card === <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 start burning the card reader to insert the TF card Android image 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'''], '''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'''eMMC</p>
<ol style="list-style-type: lower-alpha;">
<li>After opening First, connect the development board to the Windows computer through the download link USB2.0 male-to-male data cable. The position of the Android image, you can see the following two types USB2.0 programming interface of Android images, please select the image development board is shown in the '''TF card and eMMC startup image''' folder to download</li></ol>figure below</li></ol>
<blockquote><div class="figure">
[[File:pi3b-img124img36.png|340x108px|e6986fc9c8fc078e8cb6a9c39b76fb8]]
</div></blockquoteol>
<ol start="2" style="list-style-type: lower-alpha;">
<li>After entering <p>Then make sure that the development board is not inserted into the '''TF card and eMMC boot image''' foldernot connected to the power supply</p></li><li><p>Then press and hold the MaskROM button on the development board, you can see the following two images, position of the MaskROM button on the difference between them development board isshown in the figure below:</lip></olli>
[[File:pi3b-img37.png]]<!-- --/ol><ol start="4" style="list-style-type: lower-alpha;"><li><p>The image without lcd is specially used for HDMI display and supports 4K display. If you do not use Then connect the LCD screen, please download power supply of the image without lcd</p></li><li><p>If you want Type-C interface to use LCD screen, please choose image with lcd</p>the development board</li></ol>
[[File:pi3b-img125img38.png|281x62px]]</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>
<ol start="58" style="list-style-type: decimallower-alpha;"><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 Select '''SD_Firmware_Toolrk3566_MiniLoaderAll.exebin''' in the decompressed MiniLoader folder downloaded earlier, and click to open it</p>.</li></ol>
[[File:pi3b-img135.png|415x99px]]<div class="figure">
<ol start="7" style="list[[File:pi3b-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; columnimg68. P'''lease 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</li></ol>png]]
</div></ol><ol start="9" 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 '''MiniLoaderAll.bin''' is shown in the figure below</p><p>[[File:pi3b-img140.png]]</p></li><li><p>Then select the storage device as '''EMMC''', and then click Switch '''Storage'''</p><p>[[File:pi3b-img136img141.png|267x228px]]</p></li><li><p>The display of successful switching is shown in the figure below</p></li>
[[File:pi3b-img142.png]]</ol><ol start="813" style="list-style-type: decimallower-alpha;"><li>After confirming the drive letter, you can format the TF card first, Then click the &quot;'''restore disk buttonUpgrade Firmware''' in '''SDDiskTool,''' or use &quot; column of the '''SD Card Formatter''' mentioned above to format the TF cardburning tool</li></ol>
[[File:pi3b-img137img132.png|264x226px]]</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>
<ol start="9" style="list[[File:pi3b-style-type: decimal;">img133.png]]<li><p>Then start to write the Android image to the TF card</pol><ol start="15" 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'''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 image to the TF card</p></li></ol>system will start automatically.</li></ol>
[[File:pi3b-img138.png|286x242px]]<div class="figure">
<ol start="10" style="list[[File:pi3b-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></ol>img134.png]]
[[File:pi3b</div></ol></li></ol><span id="how-img139.png|288x244px]]to-burn-android11-image-into-emmc-via-tf-card"></span>
<span id="how-to-burn-android-image-to-emmc"></span>== How to burn Android Android11 image to into eMMC via TF card ===
{| 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 all the SPIFlash and try againfollowing operations are performed on a Windows computer. For the method of clearing SPIFlash, please refer to''' [[\l</big>|the method of using RKDevTool to clear SPIFlash]]'''.'''}
<span id="method-# 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-burning-android-image-into-emmc-through-usb2the development board. Then install the eMMC module to the development board.0-burning-port"></span>=== Method The eMMC module and the method of burning Android image plugging into eMMC through USB2.0 burning port === '''Note that all the following operations development board are performed on a Windows computer.'''as follows:
<ol style="list::[[File:pi3b-styleimg61.png|400px]] [[File:pi3b-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 boardimg62.</p><p>The eMMC module and the method of plugging into the development board are as follows:</p></li></ol>png|400px]]
[[File:pi3b-img61.png|115x84px]] [[File:pi3b-img62.png|120x87px]] [[File:pi3b-img63.png|286x133px800px]]
<ol start="2" style="list-style-type: decimal;">
<li><p>You also need to prepare a good quality USB2TF card with 8GB or larger capacity.0 male-The transmission speed of the TF card must be class10 or above. It is recommended to-male data cableuse a TF card of SanDisk and other brands</lip></olli> <div class="figure"li><p[[File:pi3b-img16.png|141x138px|D6BB9058-CDC3-42d7-A7FC-FBF630D886B7]] Then use the card reader to insert the TF card into the computer</divp><ol start="3" style="list-style-type: decimal;"/li><li><p>Then download Rockchip driver '''DriverAssitant_v5.12.zip''' and burning the SDDiskTool programming tool '''RKDevTool_Release_v3.15.zip''' from the [http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-3B.html '''Orange Pi's data download page'''], '''<span style="color:#FF0000">please make sure that the version of the SDDiskTool tool is the latest v1.72</span>'''</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-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 '''the TF card and eMMC startup 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 '''the TF card and eMMC startup boot image folder''', you can see the following two tow 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>
<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-img125img135.png|264x58px]]</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. '''<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-img136.png]]</ol><ol start="59" style="list-style-type: decimal;"><li><p>Then use decompression software to decompress After confirming the compressed package of the downloaded Android image. Among the decompressed filesdrive letter, you can format the file ending with &quot;.img&quot; is the Android image fileTF card first, and click the size is more than 1GB</p></li><li><p>Then use decompression software to decompress '''DriverAssitant_v5.12.ziprestore disk button'''in SDDiskTool, and then find or use the '''DriverInstall.exeSD Card Formatter''' executable file in mentioned above to format the decompressed folder and open it</p>TF card</li></ol>
[[File:pi3b-img31img137.png|575x169px]]</ol><ol start="10" 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><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;'''Select Function Mode'''&quot;</p></li><li><p>Then select the path of the Android firmware in the &quot;'''Select Upgrade Firmware'''&quot; column</p></li><li><p>Finally click the &quot;'''Start Create'''&quot; button to start burning</p></li>
<ol start="7" style="list[[File:pi3b-style-type: decimal;"><li><p>After opening '''DriverInstallimg143.exe''', the steps to install the Rockchip driver are as follows</p><ol style="list-style-type: lower-alpha;">png]]<li>Click the &quot;'''Driver Installation'''&quot; button</li></ol>
</li></ol>
<ol start="11" style="list-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>
 
[[File:pi3b-img144.png]]
</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="14" style="list-style-type: decimal;">
<li>When the HDMI monitor displays the following information, it means that the burning of the Android image into the eMMC has been completed. At this time, the TF card can be pulled out, and then the Android system in the eMMC will start.</li>
 
[[File:pi3b-img146.png]]
</ol>
<span id="how-to-burn-android-image-to-spiflashnvme-ssd"></span>
[[File:pi3b-img32.png|300x157px]]== How to burn Android image to SPIFlash+NVMe SSD ==
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
|-
|
<big>'''Note that all the following operations are performed on a Windows computer.'''</big>
|}
 
<ol style="list-style-type: decimal;">
<li><p>First, you need to prepare an NVMe SSD solid state drive</p>
<ol style="list-style-type: lower-alpha;">
<li>The M.2 2230 SSD is as follows</li>
 
[[File:pi3b-img73.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; buttonThe M.2 2242 SSD is as follows</li></ol>
[[File:pi3b-img33img74.png|315x164px]]</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-img75.png]]</ol><ol start="83" style="list-style-type: decimal;"><li>Then decompress '''RKDevTool_Release_v3.15.zip''', this software does not need to be installedThe position of the SPI Flash on the development board is shown in the figure below, just find '''RKDevTool''' in no other settings are required before starting the decompressed folder and open itprogramming</li></ol>
[[File:pi3b-img34img76.png|454x134px]]</ol><ol start="4" style="list-style-type: decimal;"><li>You also need to prepare a good quality USB2.0 male-to-male data cable</li>
<ol startdiv class="9figure" 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-img35img16.png|442x208px]]
</div></ol><ol start="105" style="list-style-type: decimal;"><li><p>Then start download Rockchip driver '''DriverAssitant_v5.12.zip''' and burning tool '''RKDevTool_Release_v3.15.zip''' from '''Orange Pi's data download page'''</p></li><li><p>Then download the Android image into eMMCof Android11</p>
<ol style="list-style-type: lower-alpha;">
<li>First, connect After opening the development board to download link of the Windows computer through the USB2.0 male-to-male data cable. The position of Android image, you can see the USB2.0 programming interface following two types of Android images, please select the development board is shown image in the figure belowS'''PIFlash-NVME SSD boot image folder''' to download</li></ol></li></ol>
<div class="figure">
[[File:pi3b-img36img124.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 After entering the '''SPIFlash-NVME SSD boot image folder''', you can see the development board following two images. Their differences are:</p><ol style="list-style-type: none;"><li><p>a) The image without lcd is specially used for HDMI display and supports 4K display. If you do not inserted into use the TF card and not connected to LCD screen, please download the power supplyimage without lcd</p></li><li><p>Then press and hold the MaskROM button on the development boardb) If you want to use LCD screen, the position of the MaskROM button on the development board is shown in the figure belowplease choose image with lcd</p></li> [[File:pi3b-img147.png]]</ol></li></pol></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-img37img31.png|289x100px]]</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>
[[File:pi3b-img32.png]]</ol><ol start="42" style="list-style-type: lower-alpha;"><li>Then connect the power supply After waiting for a period of the Typetime, a pop-C interface to up window will prompt &quot;'''driver installed successfully'''&quot;, and then click the development board&quot;'''OK'''&quot; button.</li></ol>
[[File:pi3b-img38img33.png|305x94px]]</ol></li></ol><ol start="9" 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>
[[File:pi3b-img34.png]]</ol><ol start="510" style="list-style-type: lower-alphadecimal;"><li><p>If the previous steps are successful, the development board will enter After opening the '''MASKROMRKDevTool''' mode burning tool, because the computer is not connected to the development board through the USB2.0 male-to-male data cable at this time, and the interface of the burning tool lower left corner will prompt &quot;'''No device 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-img35.png]]</ol><!-- 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>Select '''rk3566_MiniLoaderAllFirst, connect the development board to the Windows computer through the USB2.0 male-to-male data cable.bin''' The position of the USB2.0 programming port of the development board is shown in the MiniLoader folder downloaded earlier, and click to open.figure below</li></ol>
<div class="figure">
[[File:pi3b-img68img36.png|459x216px|SIS5H0S2@F5M2D(6ANZEUPG]]
</div></ol>
<ol start="2" style="list-style-type: lower-alpha;">
<li><p>Then click '''Download'''</p><p>[[File:pi3b-img128.png|472x222px]]</p></li><li><p>The display after downloading '''MiniLoaderAll.bin''' Make sure that the development board is shown in not inserted into the TF card and not connected to the figure below</p><p>[[File:pi3b-img140.png|474x223px]]power supply</p></li><li><p>Then select press and hold the MaskROM button on the storage device as '''EMMC'''development board, and then click Switch '''Storage'''</p><p>[[File:pi3b-img141.png|468x225px]]</p></li><li><p>The display the position of successful switching the MaskROM button on the development board is shown in the figure below:</p></li></ol>
[[File:pi3b-img142img37.png|472x227px]]</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>
[[File:pi3b-img38.png]]</ol><ol start="85" 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;'''Upgrade Firmwarefound a MASKROM device'''&quot; column of the burning tool</li></ol>
[[File:pi3b-img132img39.png|442x208px]]</ol><ol start="6" style="list-style-type: lower-alpha;"><li>Then click the &quot;'''Upgrade Firmware'''&quot; column of the burning tool</li>
[[File:pi3b-img132.png]]</ol><ol start="7" style="list-style-type: lower-romanalpha;"><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><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>
[[File:pi3b-img148.png]]</ol start="10" 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.</liol><span id="using-rkdevtool-to-clear-spiflash"></olspan>
<div class="= Using RKDevTool to clear SPIFlash == # The position of SPI Flash on the development board is shown in the figure">below
::[[File:pi3b-img134img76.png|455x214px|GO~ZSPN`B]JCQM`@_9UU8[R]]
</divol start="2" style="list-style-type: decimal;"><span id="howli>First, you need to prepare a good quality USB2.0 male-to-burn-android11-image-into-emmc-via-tf-card">male data cable</spanli<div class=== How to burn Android11 image into eMMC via TF card ==="figure">
'''Note that all the following operations are performed on a Windows computer[[File:pi3b-img16.'''png]]
# The development board reserves an eMMC expansion interface</div></ol><ol start="3" style="list-style-type: decimal;"><li><p>Then download the Rockchip driver '''DriverAssitant_v5.12. Before programming zip''' and MiniLoader and the system to eMMC, you first need to purchase an eMMC module that matches burning tool '''RKDevTool_Release_v3.15.zip''' from the eMMC interface of the development board[http://www. Then install the eMMC module to the development boardorangepi. The eMMC module 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>On the method download page of plugging into Orange Pi, first select the official tool, and then enter the development board are as follows:following folder</li>
[[File:pi3b-img61.png|115x84px]] [[File:pi3b-img62.png|120x87px]]<div class="figure">
[[File:pi3b-img63img149.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/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-3B.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/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-3B.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'''<p>Then you can start to clear the content in SPI FLASH</p><ol style="list-style-type: lower-alpha;"><li>First, if connect the TF card is recognized normally, development board to the inserted disk device will be displayed in Windows computer through the &quot;'''Select Removable Disk Device'''&quot; columnUSB2.0 male-to-male data cable. '''Please make sure that The position of the displayed disk device is consistent with the drive letter USB2.0 programming port of the TF card you want to burn''', if there development board is no display, you can try to unplug shown in the TF card.figure below</li></ol>
[[File:pi3b-img136.png|267x228px]]<div class="figure">
<ol start="9" style="list[[File:pi3b-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></ol>img36.png]]
[[File</div></ol><ol start="2" style="list-style-type:pi3blower-img137.png|247x212px]]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 start="10" style="list[[File:pi3b-style-type: decimal;">img37.png]]<li><p>Then start to write the Android image into the TF card</pol><ol start="4" style="list-style-type: lower-alpha;"><li><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;'''Select Function Mode'''&quot;</p></li><li><p>Then select connect the path power supply of the Android firmware in Type-C interface to the &quot;'''Select Upgrade Firmware'''&quot; column</p></li><li><p>Finally click development board, and power on, and then release the &quot;'''Start Create'''&quot; MaskROM button to start burning</p></li></ol></li></ol>
[[File:pi3b-img143img38.png|290x246px]]</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="116" style="list-style-type: decimallower-alpha;"><li>After the burning is completed, <p>Then please select '''Advanced Features'''</p><p>[[File:pi3b-img126.png]]</p></li><li><p>Then click the display is as position shown in the figure below</p><p>[[File:pi3b-img127.png]]</p></li><li><p>Select '''rk3566_MiniLoaderAll.bin''' in the '''MiniLoader''' folder you downloaded earlier, and then you can exit SDDiskToolclick Open</lip></olli>
[[File:pi3b-img144.png|285x243px]]<div class="figure">
<ol start="12" style="list-style[[File:pi3b-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 boardimg68.</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></ol>png]]
</div></ol><ol style="list-style-type: lower-roman;"><li><p>Then click '''Download'''</p><p>[[File:pi3b-img145img128.png|430x247px]]</p></li></ol>
<ol start="1410" style="list-style-type: decimallower-alpha;"><li>When <p>The display after downloading '''rk3566_MiniLoaderAll.bin''' is shown in the HDMI monitor displays figure below</p><p>[[File:pi3b-img140.png]]</p></li><li><p>Then select the following information, it means that the burning of the Android image into the eMMC has been completedstorage device as '''SPINOR'''</p><p>[[File:pi3b-img151.png]]</p></li><li><p>Then click Switch '''Storage'''</p><p>[[File:pi3b-img152.png]]</p></li><li><p>Then click '''Erase All''' to start erasing SPIFlash</p><p>[[File:pi3b-img153. At this time, the TF card can be pulled out, and then the Android system png]]</p></li><li><p>The display log after erasing SPIFlash is shown in the eMMC will startfigure below</p><p>[[File:pi3b-img154.png]]</p></li></ol></li></ol><span id="start-the-orange-pi-development-board"></span>
[[File:pi3b-img146.png|576x389px]]== Start the Orange Pi development board ==
<span id="how# Insert the TF card with the burned image into the TF card slot of the Orange Pi development board. If the image of SPIFlash+NVMe SSD has been burnt, then there is no need to insert a TF card, just make sure that the NVMe SSD is inserted into the development board normally.# The development board has an HDMI interface, and the development board can be connected to a TV or HDMI display through an HDMI-to-burnHDMI 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-android-imageC to HDMI cable, the system interface of the development board can also be displayed through the Type-C interface.# Connect a USB mouse and keyboard tocontrol the Orange Pi development board.# The development board has an Ethernet port, which can be plugged into a network cable for Internet access.# Connect a high-spiflashnvmequality power adapter with a 5V/3A USB Type-ssd"></span>== How to burn Android image to SPIFlash+NVMe SSD ==C interface.
::{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''Note that all <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 following operations are performed on a Windows computerdevelopment board.'''</span>
'''<ol span style="list-style-typecolor: decimal;#FF0000"><li><p>FirstMany 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 need to prepare an NVMe SSD solid state drive</p><ol style="list-style-type: lowerfind that there is a phenomenon of continuous restart during the startup process, please replace the power supply or the Type-alpha;"><li>The MC data cable and try again.2 2230 SSD is as follows</li></ol></li>'''</olspan>
[[File'''<span style="color:pi3b#FF0000">The Type-img73C power port does not support PD negotiation.png|147x106px]]'''</span>
'''<ol start="2" span style="list-style-typecolor: lower-alpha;#FF0000"><li>The MIn addition, please do not connect the USB interface of the computer to power the development board.2 2242 SSD is as follows'''</lispan></olbig>|}
[[File<ol start="6" style="list-style-type:pi3b-img74decimal;"><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|216x119px]]</li>
<ol start="2" style="list-style-type: decimal;"><li>Then insert If you want to view the output information of the system through the NVMe SSD into debugging serial port, please use the Mserial cable to connect the development board to the computer.2 PCIe interface For the connection method of the development board and fix itserial port, please refer to '''[[Orange Pi 3B#How to use the debugging serial port|the section on how to use the debugging serial port]].'''</li></ol><span id="how-to-use-the-debugging-serial-port"></span>
[[File:pi3b-img75.png|283x63px]]== How to use the debugging serial port ==
<ol startspan id="3" style="listconnection-instruction-of-debugging-styleserial-type: decimal;port"><li/span>The position === Connection instruction 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>debugging serial port ===
[[File:pi3b-img76.png|266x211px]] <ol start="4" style="list-style-type: decimal;"><li>You also <p>First, you need to prepare a good quality USB23.0 male3V USB-to-male data cableTTL module, and then insert the USB interface end of the USB-to-TTL module into the USB interface of the computer.</p>{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big><p>'''For better compatibility, it is recommended to use CH340 USB to TTL module, please do not use CP2102, PL2303 USB to TTL module.'''</lip><p>'''Before purchasing a USB to TTL module, please confirm that the module supports a baud rate of 1500000.'''</p></olbig>|}
<div class="figure">
[[File:pi3b-img16img155.png|141x138px|D6BB9058-CDC3-42d7-A7FC-FBF630D886B7]]
</div><ol start="5" style="list-style-type: decimal;"><li><p>Then download Rockchip driver '''DriverAssitant_v5.12.zip''' and burning tool '''RKDevTool_Release_v3.15.zip''' from '''Orange Pi's data download page'''</p></li><li><p>Then download the image of Android11</pol><ol start="2" style="list-style-type: lower-alphadecimal;"><li>After opening the download link The corresponding relationship between GND, RXD and TXD pins of the Android image, you can see the following two types debugging serial port of Android images, please select the image development board is shown in the S'''PIFlash-NVME SSD boot image folder''' to download</li></ol>figure below</li></ol>
[[File:pi3b-img156.png]]<div class/ol><ol start="3" style="figurelist-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>
[[File:pi3b-img124a.png|340x108px|e6986fc9c8fc078e8cb6a9c39b76fb8]]Connect the GND of the USB to TTL module to the GND of the development board
</div><ol start="2" style="list-style-type: lower-alpha;"><li><p>After entering the b. The '''SPIFlash-NVME SSD boot image folder''', you can see the following two images. Their differences are:</p><ol span style="list-style-typecolor: lower-alpha;#FF0000"><li><p>The image without lcd RX of the USB to TTL module is specially used for HDMI display and supports 4K display. If you do not use connected to the LCD screen, please download the image without lcdTX</p></li><li><p>If you want to use LCD screen, please choose image with lcd</p></li></ol></li></olspan>''' of the development board
[[File:pi3bc. The '''<span style="color:#FF0000">TX of the USB to TTL module is connected to the TX</span>''' of the development board</ol><ol start="4" style="list-img147.png|305x58px]]style-type: decimal;"><li>The schematic diagram of connecting the USB to TTL module to the computer and the Orange Pi development board is as follows</li>
<ol startdiv class="7figure" 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></ol>
[[File:pi3b-img31img157.png|407x120px]]
<ol start/div>{| class="8wikitable" style="listbackground-style-typecolor:#ffffdc;width: decimal800px;">|-| <libig><p>After opening '''DriverInstallThe TX and RX of the serial port need to be cross-connected.exe''If you don't want to carefully distinguish the order of TX and RX, you can connect the steps to install TX and RX of the serial port casually first. If there is no output in the test, then exchange the Rockchip driver are as follows</p><ol style="list-style-type: lower-alpha;"><li>Click order of TX and RX, so there is always a the &quot;order is right'''Driver Installation'''&quot; button</libig>|}</ol></lispan id="how-to-use-the-debugging-serial-port-on-the-ubuntu-platform"></olspan>
[[File:pi3b-img32.png|286x150px]]=== How to use the debugging serial port on the Ubuntu platform ===
<ol start{| class="2wikitable" style="listbackground-style-typecolor:#ffffdc;width: lower-alpha800px;">|-| <libig>After waiting for a period of time, a pop-up window will prompt &quot;'''driver installed successfully'''&quot;There are many serial port debugging software that can be used under Linux, such as putty, minicom, and then click the &quot;'etc. The following demonstrates how to use putty.''OK'''&quot; button.</li></olbig>|}
[[File:pi3b# First, insert the USB-img33to-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.png|296x154px]]Remember this node name, and then set the serial port software will be used
::{| class="wikitable" style="width:800px;" |-| test@test:~$ '''ls /dev/ttyUSB*''' /dev/ttyUSB0|} <ol start="92" style="list-style-type: decimal;"><li>Then decompress '''RKDevTool_Release_v3.15.zip''', this software does not need use the following command to be installed, just find install putty on Ubuntu PC</li>{| class="wikitable" style="width:800px;" |-| test@test:~$ '''RKDevToolsudo apt-get update''' in the decompressed folder and open it</li></ol>
[[Filetest@test:pi3b~$ '''sudo apt-img34.pngget install -y putty'''|413x122px]]}</ol><ol start="3" style="list-style-type: decimal;"><li>Then run putty, '''<span style="color:#FF0000">remember to add sudo permission</span>'''</li>
{| class="wikitable" style="width:800px;" |-| test@test:~$ '''sudo putty'''|}</ol><ol start="104" style="list-style-type: decimal;"><li>After opening executing the '''RKDevTool''' burning toolputty command, 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 following interface will prompt &quot;'''No device found'''&quot;pop up</li></ol>
[[File:pi3b-img35img158.png|402x189px]]</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="116" style="list-style-type: decimal;"><li><p>Then start burning set the parameters of the Android image to SPIFlash+NVMe SSDserial port</p>
<ol style="list-style-type: lower-alpha;">
<li>First, <p>Set Serial line to connect the development board toas /dev/ttyUSB0((Modified to the Windows computer through the USB2.0 male-to-male data cable. The position of the USB2.0 programming corresponding node name, generally /dev/ttyUSB0)</p></li><li><p>Set Speed(baud) as '''1500000'''(Serial port of the development board is shown in the figure belowbaud rate)</lip></olli><li><p>Set Flow control as None</lip></olli>
<div class="figure">
[[File:pi3b-img36img160.png|275x116px|C:\Users\orangepi\Desktop\用户手册插图\pi 3b\1691131157154(1).jpg1691131157154(1)]]
</div></ol></li></ol><ol start="27" 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: lower-alpha;"><li><p>Make sure that First select the development board is not inserted into the TF card and not connected to the power supplyConnection type as Serial</p></li><li><p>Then press and hold click the MaskROM Open button on the development board, the position of to connect to the MaskROM button on the development board is shown in the figure below:serial port</p></li></ol>
[[File:pi3b-img37.png|289x100px]]<div class="figure">
<ol start="4" style="list-style-type[[File: lower-alpha;"><li>Then connect the power supply of the Typepi3b-C interface to the development board, and power on, and then release the MaskROM button</li></ol>img161.png]]
[[File</div></ol></li></ol><ol start="8" style="list-style-type:pi3b-img38.png|305x94px]]decimal;"><li>After starting the development board, you can see the Log information output by the system from the opened serial port terminal</li>
[[File:pi3b-img162.png]]</ol start><span id="5" style="listhow-to-use-the-debugging-serial-port-styleon-type: lowerwindows-alpha;platform"><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></olspan>
[[File:pi3b-img39.png|443x208px]]=== How to use the debugging serial port on Windows platform ===
<ol start{| class="6wikitable" style="listbackground-style-typecolor:#ffffdc;width: lower-alpha800px;">|-| <libig>Then click the &quot;'''Upgrade FirmwareThere 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.'''&quot; column of the burning tool</li></olbig[[File:pi3b-img132.png|442x208px]]}
<ol startstyle="7list-style-type: decimal;" ><li><p>Download MobaXterm</p><ol style="list-style-type: lower-alpha;"><li>Then click the &quotDownload MobaXterm website as follows</li>{| class="wikitable" style="width:800px;" |-| [https://mobaxterm.mobatek.net/ '''Firmwarehttps://mobaxterm.mobatek.net'''&quot]|}</ol><ol start="2" style="list-style-type: lower-alpha; button to select the Android image to be burned"></li>After entering the MobaXterm download page, click '''GET XOBATERM NOW!'''</olli>
[[File:pi3b-img133img163.png|444x209px]]</ol><ol start="3" style="list-style-type: lower-alpha;"><li>Then choose to download the Home version</li>
[[File:pi3b-img164.png]]</ol><ol start="84" style="list-style-type: lower-alpha;"><li>Finally, click Then select the &quot;Upgrade&quot; button to start burningPortable version. The burning process is shown in the figure below. You can see that the firmware will be burned After downloading, you don't need to SPIFlash firstinstall it, just open it and then burned to PCIE. After burning is completed, the Android system will start automatically.use it</li></ol>
[[File:pi3b-img148img165.png|453x212px]]</ol></li></ol><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</li>
[[File:pi3b-img166.png]]</ol><span idol start="using3" style="list-rkdevtoolstyle-type: decimal;"><li><p>After opening the software, the steps toset up the serial port connection are as follows</p><ol style="list-clearstyle-spiflashtype: 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)</p></li><li><p>Select the baud rate of the serial port as '''1500000'''</p></spanli>== Using RKDevTool <li><p>Finally click the &quot;'''OK'''&quot; button to clear SPIFlash ==complete the setting</p></li>
# The position of SPI Flash on the development board is shown in the <div class="figure below">
[[File:pi3b-img76img167.png|263x193px]]
</div></ol></li></ol><ol start="24" style="list-style-type: decimal;"><li>FirstAfter clicking the &quot;'''OK'''&quot; button, you need to prepare a good quality USB2will enter the following interface.0 male-to-male data cableAt this time, start the development board and you can see the output information of the serial port</li></ol>
<div class="figure">
[[File:pi3b-img16img168.png|141x138px|D6BB9058-CDC3-42d7-A7FC-FBF630D886B7]]
</div></ol><ol startspan id="3" style="listinstructions-for-styleusing-type: decimal;"><li><p>Then download the Rockchip driver '''DriverAssitant_v5.12.zip''' and MiniLoader and -5v-pin-in-the burning tool '''RKDevTool_Release_v3.15.zip''' from the [http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and40pin-interface-of-support/Orangethe-Pidevelopment-3B.html '''Orange Pi data download page''']</p><ol style="listboard-styleto-type: lowersupply-alpha;power"><li>On the download page of Orange Pi, first select the official tool, and then enter the following folder</li></ol></li></olspan>
<div class="figure">= Instructions for using the 5v pin in the 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-img149C power interface of the development board for power supply.png|342x56pxIf 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.'''</big>|1691401357374]]}
</div><ol start="2" style="list-style-type: lower-alpha;"><li>Then download all # First, you need to prepare a power cord as shown in the files figure below</li></ol>
<div class="figure">
::[[File:pi3b-img150img169.png|347x139px|1691401520573]]
</div>
::{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''Note that the &quot;MiniLoader-things needed to burn Please purchase the Linux image&quot; folder is hereinafter referred to as power cord shown in the MiniLoader folder.picture above by yourself'''</big>|}
<ol start="42" style="list-style-type: decimal;"><li>Then use decompression software <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 decompress be plugged into the 5V/3A power adapter connector ('''DriverAssitant_v5.12.zip<span style="color:#FF0000">please do not plug into the computer's USB port for power supply</span>''', )</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 inserted into the GND pin of the 40pin interface</p></li><li><p>The position of the 5V pin and then find GND pin of the 40pin interface on the development board is shown in the figure below, '''DriverInstall.exe<span style="color:#FF0000">remember not to reverse the connection</span>''' executable file in the decompressed folder and open it</lip></olli>
[[File:pi3b-img31img170.png|472x139px]] <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></ol>
</li></ol>
<span id="instructions-for-use-of-ubuntudebian-server-and-xfce-desktop-system"></span>
[[File:pi3b-img32.png|276x145px]]= '''Instructions for use of Ubuntu/Debian Server and Xfce desktop system''' =
<ol start{| class="2wikitable" style="listbackground-style-typecolor:#ffffdc;width: lower-alpha800px;">|-| <libig>After waiting for a period of time, a pop-up window will prompt &quot;'''driver installed successfully'''&quot;, The content of this chapter is written based on the images of the Linux server version and then click the &quot;'''OKxfce desktop version.'''&quot; button.</li></olbig>|}
[[File:pi3b<span id="supported-img33.png|292x151px]]linux-image-types-and-kernel-versions"></span>== Supported Linux image types and kernel versions ==
<ol start{| class="6wikitable" style="list-stylewidth:800px;text-typealign: decimalcenter;"><li>Then decompress |-|'''Linux image type'''|'''kernel version'''|'''server version'''|'''desktop version'''|-|'''Debian 11 - Bullseye'''|'''Linux5.10'''|'''support'''|'''support'''|-|'''Ubuntu 20.04 - Focal'''|'''Linux5.10'''|'''support'''|'''support'''RKDevTool_Release_v3|-|'''Ubuntu 22.1504 - Jammy'''|'''Linux5.zip10''', this software does not need to be installed, just find |'''RKDevToolsupport''' in the decompressed folder and open it</li></ol>|'''support'''|}
[[File:pi3b<span id="linux-img34.png|467x138px]]system-adaptation"></span>== Linux System adaptation ==
<ol start{| class="7wikitable" style="list-stylewidth:800px;text-typealign: decimalcenter;"><li>After opening the |-|'''Function'''|'''Debian11'RKDevTool''|' burning tool, because the computer has not connected to the development board through the USB2''Ubuntu20.0 male-to-male data cable at this time, the lower left corner will prompt &quot;04'''|'''No device foundUbuntu22.04'''&quot;</li></ol>|-[[File:pi3b-img35|'''USB2.png0x3'''|402x189px]]'''OK'''|'''OK'''<ol start="8" style="list-style-type: decimal;">|'''OK'''<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|'''USB3.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>0x1'''</li></ol>|'''OK'''|'''OK'''<div class="figure">|'''OK'''|-[[File:pi3b-img36|'''M.png2 NVMe SSD Start'''|275x116px'''OK'''|C:\Users\orangepi\Desktop\用户手册插图\pi 3b\1691131157154(1).jpg1691131157154(1)]]'''OK'''|'''OK'''</div><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>|'''WIFI'''<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>|'''OK'''|'''OK'''[[File:pi3b-img37.png|289x100px]]'''OK''' <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>|'''Bluetooth'''|'''OK'''[[File:pi3b-img38.png|305x94px]]'''OK'''|'''OK'''<ol start="5" style="list-style|-type: lower-alpha;"><li>If the previous steps are successful, the development board will enter the |'''MASKROMGPIO(40pin)''' mode at this time, and the interface of the burning tool will prompt &quot;|'''found a MASKROM deviceOK'''&quot;</li></ol>|'''OK'''[[File:pi3b-img39.png|457x215px]]'''OK'''|-<ol start="6" style="list-style-type: lower-alpha;">|'''UART(40pin)'''<li><p>Then please select |'''Advanced FeaturesOK'''</p><p>[[File:pi3b-img126.png|458x138px]]</p></li>'''OK'''<li><p>Then click the position shown in the figure below</p>|'''OK'''<p>[[File:pi3b|-img127.png|459x216px]]</p></li>'''SPI(40pin)'''<li><p>Select |'''rk3566_MiniLoaderAll.binOK''' in the |'''MiniLoaderOK''' folder you downloaded earlier, and click Open</p></li></ol>|'''OK'''<div class="figure">|-|'''I2C(40pin)'''[[File:pi3b-img68.png|459x216px'''OK'''|SIS5H0S2@F5M2D(6ANZEUPG]]'''OK'''|'''OK'''</div>|-<ol style="list-style-type: lower-roman;">|'''PWM(40pin)'''<li><p>Then click |'''DownloadOK'''</p><p>[[File:pi3b-img128.png|472x222px]]</p></li></ol>'''OK'''|'''OK'''<ol start="10" style="list-style|-type: lower-alpha;"><li><p>The display after downloading |'''PWM fan interface'''rk3566_MiniLoaderAll.bin|'''OK''' is shown in the figure below</p><p>[[File:pi3b-img140.png|474x223px]]</p></li>'''OK'''<li><p>Then select the storage device as |'''SPINOROK'''</p><p>[[File:pi3b|-img151.png|467x220px]]</p></li>'''3pin Debug serial port'''<li><p>Then click Switch |'''StorageOK'''</p><p>[[File:pi3b-img152.png|464x218px]]</p></li>'''OK'''<li><p>Then click |'''Erase AllOK''' to start erasing SPIFlash</p><p>[[File:pi3b|-img153.png|467x220px]]</p></li>'''EMMC'''<li><p>The display log after erasing SPIFlash is shown in the figure below</p>|'''OK'''<p>[[File:pi3b-img154.png|460x216px]]</p></li></ol>'''OK'''|'''OK'''<span id="start-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.start'''# The development board has an HDMI interface, and the development board can be connected to a TV or HDMI display through an HDMI-to-HDMI cable. If you have purchased an LCD screen, you can also use the LCD screen to display the system interface of the development board. If there is a Type-C to HDMI cable, the system interface of the development board can also be displayed through the Type-C interface.|'''OK'''# Connect a USB mouse and keyboard to control the Orange Pi development board.|'''OK'''# The development board has an Ethernet port, which can be plugged into a network cable for Internet access.|'''OK'''# Connect a high|-quality power adapter with a 5V/3A or 5V/4A USB Type-C interface. |'''Remember not to plug in a power adapter with a voltage output greater than 5V, as this will burn out the development board.HDMI Video''' |'''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.OK''' |'''The Type-C power port does not support PD negotiation.OK''' |'''In addition, please do not connect the USB interface of the computer to power the development board.OK'''|-6) 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.Audio'''|'''OK'''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 |'''OK'''[[\l|the section on how to use the debugging serial port]].'''OK''' <span id="how-to-use-the|-debugging-serial-port"></span>== How to use the debugging serial port ==|'''Camera'''|'''OK'''<span id="connection-instruction-of-debugging-serial-port"></span>|'''OK'''=== Connection instruction of debugging serial port ===|'''OK''' <ol style="list-style|-type: decimal;"><li><p>First, you need to prepare a 3.3V USB-to-TTL module, and then insert the USB interface end of the USB-to-TTL module into the USB interface of the computer.</p>|'''LCD'''<p>|'''For better compatibility, it is recommended to use CH340 USB to TTL module, please do not use CP2102, PL2303 USB to TTL module.OK'''</p><p>|'''Before purchasing a USB to TTL module, please confirm that the module supports a baud rate of 1500000.OK'''</p></li></ol>|'''OK'''<div class="figure">|-|'''Edp Display'''[[File:pi3b-img155.png|576x115px'''OK'''|07]]'''OK'''|'''OK'''</div><ol start="2" style="list|-style-type: decimal;"><li>The corresponding relationship between GND, RXD and TXD pins of the debugging serial |'''Gigabit Ethernet port of the development board is shown in the figure below</li></ol>'''|'''OK'''[[File:pi3b-img156.png|428x110px]]'''OK'''|'''OK'''<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 |'''Network port of the development board through a DuPont line</li></ol>status light'''|'''OK'''<blockquote>a. Connect the GND of the USB to TTL module to the GND of the development board b. The |'''RX of the USB to TTL module is connected to the TXOK''' of the development board c. The |'''TX of the USB to TTL module is connected to the TXOK''' of the development board</blockquote><ol start="4" style="list-style|-type: decimal;"><li>The schematic diagram of connecting the USB to TTL module to the computer and the Orange Pi development board is as follows</li></ol>|'''headphone playback'''|'''OK'''<div class="figure">|'''OK'''|'''OK'''[[File:pi3b-img157.png|524x189px|C:\Users\orangepi\Desktop\用户手册插图\pi 3b\USB-to-TTL-module-to-the-computer.jpgUSB-to-TTL-module-to-the-computer]]|'''headphone recording'''</div>|'''OK'''|'''The TX and RX of the serial port need to be cross-connected. If you don’t want to carefully distinguish the order of TX and RX, you can connect the TX and RX of the serial port casually first. If there is no output in the test, then exchange the order of TX and RX, so there is always a the order is rightOK'''|'''OK'''<span id="how-to-use-the-debugging-serial-port-on|-the-ubuntu-platform"></span>=== How to use the debugging serial port on the Ubuntu platform ===|'''LED Light'''|'''OK'''|'''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.OK'''|'''OK'''# First, insert the USB|-to-TTL module into the USB interface of the Ubuntu computer. If the connection and recognition of the USB-to-TTL module is normal, you can see the corresponding device node name under |'''/devRTC''' on the Ubuntu PC. Remember this node name, and then set the serial port software will be used|'''OK'''test@test:~$ |'''ls /dev/ttyUSB*OK'''|'''OK'''/dev/ttyUSB0 <ol start="2" style="list-style|-type: decimal;"><li>Then use the following command to install putty on Ubuntu PC</li></ol>|'''GPU'''|'''OK'''test@test:~$ |'''sudo apt-get updateOK''' test@test:~$ |'''sudo apt-get install -y puttyOK''' <ol start="3" style="list|-style-type: decimal;"><li>Then run putty, |'''remember to add sudo permissionNPU'''</li></ol>|'''OK'''test@test:~$ |'''sudo puttyOK'''|'''OK'''<ol start="4" style="list|-style-type: decimal;"><li>After executing the putty command, the following interface will pop up</li></ol>|'''VPU'''|'''OK'''[[File:pi3b-img158.png|367x321px]]'''OK'''|'''OK'''<ol start="5" style="list-style|-type: decimal;"><li>First select the setting interface of the serial port</li></ol>|'''watchdog test'''|'''OK'''[[File:pi3b-img159.png|359x352px]]'''OK'''|'''OK'''<ol start="6" style="list|-style-type: decimal;"><li><p>Then set the parameters of the serial port</p>|'''Chromium Hard solution video'''<ol style="list-style-type: lower-alpha;">|'''OK'''<li><p>Set Serial line to connect toas /dev/ttyUSB0((Modified to the corresponding node name, generally /dev/ttyUSB0)</p></li>|'''OK'''<li><p>Set Speed(baud) as |'''1500000OK'''(Serial port baud rate)</p></li><li><p>Set Flow control as None</p></li></ol></li></ol>|}
<div classspan id="figurethe-format-of-linux-commands-in-this-manual"></span>== The format of Linux commands in this manual ==
[[File# In this manual, all commands that need to be entered in the Linux system will be marked with the following box:pi3b:{| class="wikitable" style="width:800px;height:40px;" |-img160.png|317x312px|09]]
</div>|}<ol start="7" style="list-style-type: decimal;"><li><p>After setting :As shown below, the content in the setting interface of yellow box indicates the serial portcontent that needs special attention, return to except for the Session interface</p>commands in it.<ol ::{| class="wikitable" style="listbackground-style-typecolor:#ffffdc;width:800px;height: lower-alpha40px;"><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>|-</li></ol>|
|}<div 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 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>{| class="figurewikitable" style="width:800px;" |-| '''<span style="color:#FF0000">orangepi@orangepi:~$</span>sudo apt update'''
[[File'''<span style="color:pi3b-img161#FF0000">root@orangepi:~#</span>''' '''vim /boot/boot.png|345x340px|10]]cmd'''
'''</div><ol start="8" span style="list-style-typecolor: decimal;#FF0000"><li>After starting the development board, you can see the Log information output by the system from the opened serial port terminaltest@test:~$</li></olspan>ssh [mailto:root@192.168.1.36 root@192.168.1.]xxx'''
[[File'''<span style="color:pi3b#FF0000">root@test:~#</span> ls'''|}</ol><ol start="2" style="list-img162style-type: lower-alpha;"><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'''. 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><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 current user of the system is an ordinary user. 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 entered in the Ubuntu PC or Ubuntu virtual machine, not in the Linux system of the development board.pngThe # 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></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 output 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;" |-|468x340px]]root@orangepi:~# '''cat /boot/orangepiEnv.txt'''
'''<span idstyle="how-to-use-the-debugging-serial-port-on-windows-platformcolor:#FF0000">verbosity=7</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.''' <ol stylebootlogo="list-style-type: 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]false
'''<span style="color:#FF0000">console=serial</span>'''
|}
</ol>
<ol start="2" style="list-style-type: lower-alpha;">
<li>After entering 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 MobaXterm download pagecommand. In addition, click there are spaces in different parts of the command, please don't miss it</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''GET XOBATERM NOW!echo \'''</li></ol>
'''&quot;deb [[File:pi3barch=$(dpkg --print-img163.png|576x334px]]architecture) \'''
<ol start'''signed-by="3" style="list-style/usr/share/keyrings/docker-type: lowerarchive-alpha;"><li>Then choose to download the Home version</li></ol>keyring.gpg] \'''
[[File'''https:pi3b-img164//download.png|353x231px]]docker.com/Linux/debian \'''
'''$(lsb_release -cs) stable&quot; | sudo tee /etc/apt/sources.list.d/docker.list &gt; /dev/null'''|}</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</liol><span id="linux-system-login-instructions"></olspan>
[[File:pi3b-img165.png|575x259px]]== Linux system login instructions ==
<ol startspan id="2" style="listlinux-system-default-login-styleaccount-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</lipassword"></olspan>=== Linux system default login account and password ===
[[File{| class="wikitable" style="width:800px;text-align:pi3bcenter;"|-|'''Account'''|'''Passport'''|-img166.png|'''root'''|'''orangepi'''|-|'''orangepi'''|'''orangepi'''|576x81px]]} <ol start{| class="3wikitable" style="listbackground-style-typecolor:#ffffdc;width: decimal800px;">|-| <libig>'''Note that when entering the password, <pspan style="color:#FF0000">After opening the software, specific content of the steps to set up entered password will not be displayed on the serial port connection are as followsscreen</span>, please do not think that there is any fault, just press Enter after inputting.'''</pbig><ol |}{| class="wikitable" style="listbackground-style-typecolor:#ffffdc;width: lower-alpha800px;"><li><p>Open the session settings interface</p></li>|-<li><p>Select the serial port type</p></li>| <libig><p>Select '''When the port number of wrong password is prompted, or there is a problem with the serial port (select the corresponding port number according to the actual situation)ssh connection, if please note that as long as you can’t see are using the port numberLinux image provided by Orange Pi, <span style="color:#FF0000">please use '''Driver Master''' to scan and install the driver for do not suspect that the USB to TTL serial port chipabove password is wrong</pspan></li><li><p>Select the baud rate of the serial port as '''1500000, but look for other reasons.'''</p></libig>|} <li><p>Finally click the &quot;'''OK'''&quot; button span id="how-to complete the setting</p-set-automatic-terminal-login-in-linux-system"></li></olspan></li></ol>=== How to set automatic terminal login in Linux system ===
# The Linux system automatically logs in to the terminal by default, and the default login user name is '''<div classspan style="figurecolor:#FF0000">orangepi</span>'''
::[[File:pi3b-img167img171.png|575x438px|11]]
<ol start="2" style="list-style-type: decimal;"><li>Use the following command to set the root user to automatically log in to the terminal</divli>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo auto_login_cli.sh root'''|}</ol><ol start="3" style="list-style-type: decimal;"><li>Use the following command to disable automatic login terminal</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo auto_login_cli.sh -d'''|}</ol>
<ol start="4" style="list-style-type: decimal;">
<li>After clicking Use the following command to set the orangepi user to automatically log in to the &quotterminal again</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''OKsudo auto_login_cli.sh orangepi'''&quot; button, you will enter the following interface. At this time, start the development board and you can see the output information of the serial port|}</liol><span id="instructions-for-automatic-login-of-linux-desktop-version-system"></olspan=== Instructions for automatic login of Linux desktop version system === # After the desktop system starts, it will automatically log in to the desktop without entering a password
<div class="figure">
::[[File:pi3b-img168img172.png|575x291px|12]]
</div>
<span idol start="instructions2" style="list-for-usingstyle-type: decimal;"><li>Run the-5v-pin-in-following command to prohibit the-40pin-interface-of-desktop system from automatically logging into thedesktop</li>{| class="wikitable" style="width:800px;" |-development| orangepi@orangepi:~$ '''sudo disable_desktop_autologin.sh'''|}</ol><ol start="3" style="list-boardstyle-to-supply-powertype: 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</spanp><div class== Instructions for using the 5v pin in the 40pin interface of the development board to supply power =="figure"> [[File:pi3b-img173.png]]
'''The power supply method we recommend for the development board is to use the 5V</3A or 5Vdiv></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.'''li></ol>
# First, you need to prepare a power cord as shown <span id="the-setting-method-of-root-user-automatic-login-in the figure below-linux-desktop-version-system"></span>
<div class="figure">== The setting method of root user automatic login in Linux desktop version system ===
[[File:pi3b-img169.png|151x108px|C:\Users\orangepi\Desktop\用户手册插图\Pi5 Plus\未标题-7.jpg未标题-7]]# Execute the following command to set the desktop system to automatically log in as the root user
</div>::{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''Please purchase the power cord shown in the picture above by yourselfsudo desktop_login.sh root'''|}
<ol start="2" style="list-style-type: decimal;">
<li><p>Use Then restart 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 system, and the power cord shown root user will automatically log 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>desktop</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 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>[[File:pi3b-img174.png]]
[[File{| class="wikitable" style="background-color:#ffffdc;width:pi3b800px;" |-img170| <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|365x71px]]'''
'''Also note that this is not a bug, since pulseaudio is not allowed to run as root.'''<span id/big>|}</ol><ol start="instructions3" style="list-for-use-of-ubuntudebian-server-and-xfcestyle-type: decimal;"><li>Execute the following command to set the desktop-system">to log in automatically with the orangepi user again</spanli>
{| class= "wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''Instructions for use of Ubuntu/Debian Server and Xfce desktop systemsudo desktop_login.sh orangepi''' |}</ol><span id="the-method-of-disabling-the-desktop-in-the-linux-desktop-version-system"></span>
'''=== The content method of this chapter is written based on disabling the images of desktop in the Linux server version and the xfce desktop version.'''system ===
# First enter the following command on the command line, '''<span idstyle="supported-linux-image-types-and-kernel-versionscolor:#FF0000">Please remember to add sudo permission</span>== Supported Linux image types and kernel versions =='''
::{| class="wikitable" style="width:800px;"
|-
|orangepi@orangepi:~$ '''Linux image typesudo systemctl disable lightdm.service'''|'''kernel version'''} <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</li>|'''server version'''{|'''desktop version'''class="wikitable" style="width:800px;"
|-
|orangepi@orangepi:~$ '''Debian 11 - Bullseyesudo reboot'''|}</ol><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, '''Linux5.10<span style="color:#FF0000">Please remember to add sudo permission</span>'''</li>|'''support'''{|'''support'''class="wikitable" style="width:800px;"
|-
|'''Ubuntu 20.04 - Focal'''|'''Linux5.10'''|'''support'''|'''support'''|-|orangepi@orangepi:~$ '''Ubuntu 22sudo systemctl start lightdm.04 - Jammy'''|'''Linux5.10'''|'''support'''|'''supportservice'''
|}
</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="onboard-led-light-test-instructions"></span>
 
== Onboard LED Light Test Instructions ==
 
# There are three LED lights on the development board, one green light, one red light, and one PCIe light. The location is shown in the figure below:
<span iddiv class="linux-system-adaptationfigure"></span>== Linux System adaptation ==::[[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>'''FunctionNote that the following operations should be performed under the root user.'''</big>|'''Debian11'''}<ol style="list-style-type: lower-alpha;">|'''Ubuntu20.04'''<li>First enter the setting directory of the green light</li>{|'''Ubuntu22.04'''class="wikitable" style="width:800px;"
|-
|root@orangepi:~# '''USB2.0x3cd /sys/class/leds/status_led'''|'''OK'''}</ol><ol start="2" style="list-style-type: lower-alpha;">|'''OK'''<li>The command to set the green light to stop flashing is as follows</li>{|'''OK'''class="wikitable" style="width:800px;"
|-
|root@orangepi:/sys/class/leds/status_led# '''USB3.0x1echo none &gt; trigger'''|'''OK'''}</ol><ol start="3" style="list-style-type: lower-alpha;">|'''OK'''<li>The command to set the green light to be on is as follows</li>{|'''OK'''class="wikitable" style="width:800px;"
|-
|root@orangepi:/sys/class/leds/status_led# '''M.2 NVMe SSD Startecho default-on &gt; trigger'''|'''OK'''}</ol><ol start="4" style="list-style-type: lower-alpha;">|'''OK'''<li>The command to set the green light to flash is as follows</li>{|'''OK'''class="wikitable" style="width:800px;"
|-
|root@orangepi:/sys/class/leds/status_led# '''WIFIecho heartbeat &gt; trigger'''|}</ol></li></ol><span id="network-connection-test"></span> == Network connection test == <span id="ethernet-port-test"></span>=== Ethernet port test === # First, insert one end of the network cable into the Ethernet interface of the development board, and connect the other end of the network cable to the router, and ensure that the network is unblocked# After the system starts, it will automatically assign an IP address to the Ethernet card through DHCP, '''OK<span style="color:#FF0000">No other configuration is required</span>'''|'''OK'''# The command to view the IP address in the Linux system of the development board is as follows ::{|'''OK'''class="wikitable" style="width:800px;"
|-
|orangepi@orangepi:~$ '''Bluetoothip addr show eth0'''|2: eth0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc mq state UP group default qlen 1000 :link/ether 4a:fe:2b:3d:17:1c brd ff:ff:ff:ff:ff:ff :inet '''OK<span style="color:#FF0000">192.168.1.150</span>'''/24 brd 192.168.1.255 scope global dynamic noprefixroute eth0 ::valid_lft 43150sec preferred_lft 43150sec :inet6 fe80::9a04:3703:faed:23be/64 scope link noprefixroute ::valid_lft forever preferred_lft forever|'''OK'''} ::{|'''OK'''class="wikitable" style="background-color:#ffffdc;width:800px;"
|-
|<big>'''GPIO(40pin)When using ifconfig to view the IP address, if the following information is displayed, it is because sudo is not added. The correct command is: sudo ifconfig'''</big>  |orangepi@orangepi:~$ '''OKifconfig'''|Command 'ifconfig'is available in the following places * /sbin/ifconfig * /usr/sbin/ifconfig The command could not be located because 'OK''/sbin:/usr/sbin'is not included in the PATH environment variable. This is most likely caused by the lack of administrative privileges associated with your user account. ifconfig: command not found|} ::{|'''OK'''class="wikitable" style="background-color:#ffffdc;width:800px;"
|-
|<big>'''There are three ways to check the IP address after the development board starts:''' '''1. Connect the HDMI display, then log in to the system and use the ip addr show eth0 command to view the IP address''' '''UART(40pin)2. Enter the ip addr show eth0 command in the debugging serial terminal to view the IP address'''|'''3. If there is no debugging serial port and no HDMI display, you can also check the IP address of the development board's network port through the router's management interface. However, in this method, some people often cannot see the IP address of the development board normally. If you can't see it, the debug method looks like this:''' <ol style="list-style-type: upper-alpha;"><li><p>'''First check whether the Linux system has started normally. If the green light of the development board is blinking, it is generally started normally. If only the red light is on, it means that the system has not started normally;'''</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 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>'''OKIf there is no router to replace, you can only connect to an HDMI display or use the debugging serial port to view the IP address'''</p></li></ol>  |'''OKIn addition, it should be noted that the development board DHCP automatically assigns an IP address without any settings.'''</big>|} <ol start="4" style="list-style-type: decimal;"><li>The command to test the network connectivity is as follows, the '''ping''' command can be interrupted through the shortcut key of '''OKCtrl+C'''</li> {| class="wikitable" style="width:800px;"
|-
|orangepi@orangepi:~$ '''SPI(40pin)ping www.baidu.com -I eth0''' PING www.a.shifen.com (14.215.177.38) from 192.168.1.12 eth0: 56(84) bytes of data. 64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=1 ttl=56 time=6.74 ms 64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=2 ttl=56 time=6.80 ms 64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=3 ttl=56 time=6.26 ms 64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=4 ttl=56 time=7.27 ms ^C --- www.a.shifen.com ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3002ms rtt min/avg/max/mdev = 6.260/6.770/7.275/0.373 ms|'''OK'''}</ol><span id="wifi-connection-test"></span> === WIFI connection test ===|'''OK'''{|'''OK'''class="wikitable" style="background-color:#ffffdc;width:800px;"
|-
|<big>'''I2C(40pin)Please do not connect to WIFI by modifying the /etc/network/interfaces configuration file. There will be problems connecting to the WIFI network in this way.'''</big>|'''OK'''} <span id="wifi-the-server-image-connects-to-wifi-through-commands"></span>==== The server image connects to WIFI through commands ====|'''OK'''{|'''OK'''class="wikitable" style="background-color:#ffffdc;width:800px;"
|-
|<big>'''PWM(40pin)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>|'''OK'''} <ol style="list-style-type: 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>|'''OK'''{|'''OK'''class="wikitable" style="width:800px;"
|-
|orangepi@orangepi:~$ '''PWM fan interfacenmcli dev wifi'''|} <div class="figure"> [[File:pi3b-img176.png]] </div></ol><ol start="3" style="list-style-type: decimal;"><li>Then use the nmcli command to connect to the scanned WIFI hotspot, where:</li> :a. '''OKwifi_name'''needs to be replaced with the name of the WIFI hotspot you want to connect to|:b. '''OKwifi_passwd'''needs to be replaced with the password of the WIFI hotspot you want to connect to :{|'''OK'''class="wikitable" style="width:800px;"
|-
|orangepi@orangepi:~$ '''3pin Debug serial portnmcli dev wifi connect <span style="color:#FF0000">wifi_name</span> password <span style="color:#FF0000">wifi_passwd</span>'''|''Device 'OKwlan0'successfully activated with 'cf937f88-ca1e-4411-bb50-61f402eef293'.|}</ol><ol start="4" style="list-style-type: decimal;"><li>You can view the IP address of wifi through the '''OKip addr show wlan0'''command {|'''OK'''class="wikitable" style="width:800px;"
|-
|orangepi@orangepi:~$ '''EMMCip addr show wlan0'''|11: wlan0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 :link/ether 23:8c:d6:ae:76:bb brd ff:ff:ff:ff:ff:ff :inet '''OK<span style="color:#FF0000">192.168.1.11</span>'''/24 brd 192.168.1.255 scope global dynamic noprefixroute wlan0 ::valid_lft 259192sec preferred_lft 259192sec :inet6 240e:3b7:3240:c3a0:c401:a445:5002:ccdd/64 scope global dynamic noprefixroute ::valid_lft 259192sec preferred_lft 172792sec :inet6 fe80::42f1:6019:a80e:4c31/64 scope link noprefixroute ::valid_lft forever preferred_lft forever|}</ol><ol start="5" style="list-style-type: decimal;"><li>Use the '''ping'''OKcommand to test the connectivity of the wifi network, and the '''|ping''' command can be interrupted through the shortcut key '''OKCtrl+C'''</li> {| class="wikitable" style="width:800px;"
|-
|orangepi@orangepi:~$ '''TF card startping www.orangepi.org -I wlan0''' PING www.orangepi.org (182.92.236.130) from 192.168.1.49 wlan0: 56(84) bytes of data. 64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=1 ttl=52 time=43.5 ms 64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=2 ttl=52 time=41.3 ms 64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=3 ttl=52 time=44.9 ms 64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=4 ttl=52 time=45.6 ms 64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=5 ttl=52 time=48.8 ms ^C --- www.orangepi.org ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4006ms rtt min/avg/max/mdev = 41.321/44.864/48.834/2.484 ms|'''OK'''}</ol><span id="the-server-image-connects-to-wifi-in-a-graphical-way"></span> ==== The server image connects to WIFI in a graphical way ==== <ol style="list-style-type: decimal;"><li>First log in to the Linux system, there are the following three ways</li>|'''OK'''<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|'''OKthe 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 Video'''display terminal</p></li></ol>|'''OK'''|'''OK'''<li>Then enter the nmtui command in the command line to open the wifi connection interface</li>{|'''OK'''class="wikitable" style="width:800px;"
|-
|orangepi@orangepi:~$ '''HDMI Audionmtui'''|}</ol><ol start="3" style="list-style-type: decimal;"><li>Enter the nmtui command to open the interface as shown below</li> [[File:pi3b-img177.png]]</ol><ol start="4" style="list-style-type: decimal;"><li>Select '''OKActivate a connect'''and press Enter</li>|[[File:pi3b-img178.png]]</ol><ol start="5" style="list-style-type: decimal;"><li>Then you can see all the searched WIFI hotspots</li> <div class="figure"> [[File:pi3b-img179.png]] </div></ol><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 '''OKActivate'''and press Enter</li> <div class="figure"> [[File:pi3b-img180.png]] </div></ol><ol start="7" style="list-style-type: decimal;">|<li>Then a dialog box for entering a password will pop up, enter the corresponding password in '''OKPassword'''and press Enter to start connecting to WIFI</li>|<div class="figure"> [[File:pi3b-img181.png]] </div></ol><ol start="8" style="list-style-type: decimal;">|'''Camera'''<li>After the WIFI connection is successful, a &quot;*&quot; will be displayed in front of the connected WIFI name</li>|'''OK'''|'''OK'''<div class="figure">|'''OK'''|[[File:pi3b-img182.png]] |'''LCD'''</div></ol>|'''OK'''<ol start="9" style="list-style-type: decimal;">|<li>You can view the IP address of wifi through the '''OKip addr show wlan0'''command</li>{|'''OK'''class="wikitable" style="width:800px;"
|-
|orangepi@orangepi:~$ '''Edp Displayip addr show wlan0'''|11: wlan0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 :link/ether 24:8c:d3:aa:76:bb brd ff:ff:ff:ff:ff:ff :inet '''OK<span style="color:#FF0000">192.168.1.11</span>'''/24 brd 192.168.1.255 scope global dynamic noprefixroute wlan0 ::valid_lft 259069sec preferred_lft 259069sec :inet6 240e:3b7:3240:c4a0:c401:a445:5002:ccdd/64 scope global dynamic noprefixroute ::valid_lft 259071sec preferred_lft 172671sec :inet6 fe80::42f1:6019:a80e:4c31/64 scope link noprefixroute ::valid_lft forever preferred_lft forever|}</ol><ol start="10" style="list-style-type: decimal;"><li>Use the '''ping''OK'command to test the connectivity of the wifi network, and the ''|'ping''' command can be interrupted through the shortcut key '''OKCtrl+C'''</li>{| class="wikitable" style="width:800px;"
|-
|'''Gigabit Ethernet port'''|'''OK'''|'''OK'''|'''OK'''|-|'''Network port status light'''|'''OK'''|'''OK'''|'''OK'''|-|'''headphone playback'''|'''OK'''|'''OK'''|'''OK'''|-|'''headphone recording'''|'''OK'''|'''OK'''|'''OK'''|-|'''LED Light'''|'''OK'''|'''OK'''|'''OK'''|-|'''RTC'''|'''OK'''|'''OK'''|'''OK'''|-|'''GPU'''|'''OK'''|'''OK'''|'''OK'''|-|'''NPU'''|'''OK'''|'''OK'''|orangepi@orangepi:~$ '''OK'''|ping www.orangepi.org -|'''VPUI wlan0'''|'''OK'''|'''OK'''|'''OK'''|-|'''watchdog test'''|'''OK'''|'''OK'''|'''OK'''|-|'''Chromium Hard solution video'''|'''OK'''|'''OK'''|'''OK'''|}PING www.orangepi.org (182.92.236.130) from 192.168.1.49 wlan0: 56(84) bytes of data.
<span id64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq="the-format-of-linux-commands-in-this-manual"></span>== The format of Linux commands in this manual 1 ttl=52 time=43.5 ms
# In this manual, all commands that need to be entered in the Linux system will be marked with the following box64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=2 ttl=52 time=41.3 ms
As shown below, the content in the yellow box indicates the content that needs special attention, except for the commands in it64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=3 ttl=52 time=44.9 ms
<ol start64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq="2" style4 ttl="list-style-type: decimal;"><li><p>Description of the prompt type in front of the command</p><ol style52 time="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 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>45.6 ms
'''orangepi@orangepi64 bytes from 182.92.236.130 (182.92.236.130):~$ sudo apt update'''icmp_seq=5 ttl=52 time=48.8 ms
'''root@orangepi:~#''' '''vim /boot/boot.cmd'''^C
'''test@test:~$ ssh [mailto:root@192--- www.168orangepi.1.36 root@192.168.1.]xxx'''org ping statistics ---
'''root@test:~# ls'''5 packets transmitted, 5 received, 0% packet loss, time 4006ms
<ol startrtt min/avg/max/mdev ="2" style="list-style-type: lower-alpha;"><li><p>'''root@orangepi:~$''' The prompt indicates that this command is entered in '''the Linux system of the development board'''41. The $ at the end of the prompt indicates that the current user of the system is a normal user321/44. When executing a privileged command, you need to add '''sudo'''<864/p><48.834/li>2.484 ms<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 commands, sudo needs to be added '''sudo'''</p></liol><li><p>'''root@span id="test:~#''' The prompt indicates that this command is entered in the Ubuntu PC or Ubuntu virtual machine, not in the Linux system -method-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-desktop-image"></li></olspan>
<!-- --><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 output content (some commands have output, some may not), and this part = Test method of the content does not need to be input</li></ol></li></ol>desktop image ====
root@orangepi:~# '''cat /boot/orangepiEnv.txt'''Click the network configuration icon in the upper right corner of the desktop (please do not connect the network cable when testing WIFI)
'''verbosity=7'''::[[File:pi3b-img183.png]]
bootlogo<ol start=false"2" style="list-style-type: 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.</li>
[[File:pi3b-img184.png]]</ol><ol start="3" style="list-style-type: decimal;"><li>Then enter the password of the WIFI hotspot, and then click '''console=serialConnect'''to start connecting to WIFI</li>
[[File:pi3b-img185.png]]</ol><ol start="24" style="list-style-type: lower-alphadecimal;"><li>As shown belowAfter connecting to WIFI, some commands cannot be written in one line and will be placed on you can open the next line. As long as browser to check whether you can access the black and bold parts are all commands that need to be inputInternet. When these commands are entered into one line, The entrance of the last &quot;\&quot; of each line needs to be removed, this browser is not part of the command. In addition, there are spaces shown in different parts of the command, please don’t miss itfigure below</li></ol>
orangepi@orangepi[[File:~$ '''echo \'''pi3b-img186.png]]</ol><ol start="5" 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>
'''&quot;deb [arch[File:pi3b-img187-1.png]]</ol><span id=$(dpkg "how-to-set-a-static-printip-architecture) \'''address"></span>
'''signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] \'''== How to set a static IP address ===
{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''https:Please do not set a static IP address by modifying the /etc/network/download.dockerinterfaces configuration file.com/Linux/debian \'''</big>|}
'''$(lsb_release <span id="use-cs) stable&quot; | sudo tee /etc/apt/sources.list.d/docker.list &gt; /devthe-nmtui-command-to-set-a-static-ip-address"></null'''span>==== Use the nmtui command to set a static IP address ====
<span id="linux-system-login-instructions"></span>== Linux system login instructions ==# First run the '''nmtui''' command
<span id="linux-system-default-login-account-and-password"></span>=== Linux system default login account and password === ::{| class="wikitable" style="width:800px;"
|-
|'''Account'''|'''Passport'''|-|'''root'''|'''orangepi'''|-|'''@orangepi:~$ '''|'''orangepinmtui'''
|}
<ol start="2" style="list-style-type: decimal;"><li>Then select '''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.Edit a connection'''and press Enter</li>
'''When [[File:pi3b-img188.png]]</ol><ol start="3" style="list-style-type: decimal;"><li>Then select the wrong password is promptednetwork interface that needs to set a static IP address, or there is a problem with the ssh connectionfor example, please note that as long as you are using to set the Linux image provided by Orange Pi, please do not suspect that static IP address of the above password is wrong'''Ethernet''' interface, but look for other reasons.select '''Wired connection 1'''.</li>
[[File:pi3b-img189.png]]<span id/ol><ol start="how-to-set4" style="list-automaticstyle-terminal-login-in-linux-systemtype: decimal;"><li>Then select '''Edit''' with the '''Tab''' key and press the Enter key</spanli>=== How to set automatic terminal login in Linux system ===
# The Linux system automatically logs in [[File:pi3b-img190.png]]</ol><ol start="5" style="list-style-type: decimal;"><li>Then use the Tab key to move the terminal by default, and cursor to the default login user name is orangepi '''orangepi&lt;Automatic&gt;'''position shown in the figure below to configure IPv4</li>
[[File:pi3b-img171img191.png|351x198px]]</ol><ol start="6" style="list-style-type: decimal;"><li>Then press Enter, select '''Manual''' with the up and down arrow keys, and press Enter to confirm</li>
[[File:pi3b-img192.png]]</ol><ol start="27" style="list-style-type: decimal;"><li>Use the following command to set the root user to automatically log The display after selection is shown in to the terminalfigure below</li></ol>
orangepi@orangepi[[File:~$ pi3b-img193.png]]</ol><ol start="8" style="list-style-type: decimal;"><li>Then move the cursor to the '''sudo auto_login_cli.sh root&lt;Show&gt;'''</li>
[[File:pi3b-img194.png]]</ol><ol start="39" style="list-style-type: decimal;"><li>Use Then press Enter, the following command to disable automatic login terminalsetting interface will pop up after entering</li></ol>
orangepi@orangepi[[File:~$ pi3b-img195.png]]</ol><ol start="10" style="list-style-type: decimal;"><li>Then you can set the IP address (Addresses), gateway (Gateway) and DNS server address in the position shown in the figure below (there are many other setting options in it, please explore by yourself), '''sudo auto_login_cli.sh -d<span style="color:#FF0000">Please set it according to your specific needs, the value set in the figure below is just an example</span>'''</li>
[[File:pi3b-img196.png]]</ol><ol start="411" style="list-style-type: decimal;"><li>Use After setting, move the following command cursor to set '''&lt;OK&gt;''' in the orangepi user lower right corner, and press Enter to automatically log in to the terminal againconfirm</li></ol>
orangepi@orangepi[[File:~$ pi3b-img197.png]]</ol><ol start="12" style="list-style-type: decimal;"><li>Then click'''sudo auto_login_cli.sh orangepi&lt;Back&gt;'''to return to the previous selection interface</li>
[[File:pi3b-img198.png]]<span id/ol><ol start="instructions-for-automatic13" style="list-loginstyle-of-linux-desktop-version-systemtype: decimal;"><li>Then select '''Activate a connection''', then move the cursor to'''&lt;OK&gt;''', and finally click Enter</spanli>=== Instructions for automatic login of Linux desktop version system ===
# After [[File:pi3b-img199.png]]</ol><ol start="14" style="list-style-type: decimal;"><li>Then select the desktop system startsnetwork interface that needs to be set, such as '''Wired connection 1''', then move the cursor to'''&lt;Deactivate&gt;''', it will automatically log in and press Enter to the desktop without entering a passworddisable '''Wired connection 1'''</li>
[[File:pi3b-img200.png]]<div class/ol><ol start="15" style="figurelist-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>
[[File:pi3b-img172img201.png|576x324px|1]]</ol><ol start="16" style="list-style-type: decimal;"><li>Then you can exit nmtui through the'''&lt;Back&gt;''' and '''Quit''' buttons</li>
[[File:pi3b-img202.png]] [[File:pi3b-img203.png]]</divol><ol start="217" style="list-style-type: decimal;"><li>Run Then through '''ip addr show eth0''', you can see that the IP address of the following command network port has changed to prohibit the desktop system from automatically logging into the desktopstatic IP address set earlier</li></ol>
{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo disable_desktop_autologinip addr show eth0''' 3: eth0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 :link/ether 5e:ac:14:a5:92:b3 brd ff:ff:ff:ff:ff:ff :inet '''<span style="color:#FF0000">192.168.1.sh177</span>'''/24 brd 192.168.1.255 scope global noprefixroute eth0
<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">:valid_lft forever preferred_lft forever
[[File:pi3b-img173.png|569x320px|IMG_256]]inet6 241e:3b8:3240:c3a0:e269:8305:dc08:135e/64 scope global dynamic noprefixroute
</div></li></ol>::valid_lft 259149sec preferred_lft 172749sec
<span id="the-setting-method-of-root-user-automatic-login-in-linux-desktop-version-system"><:inet6 fe80::957d:bbbe:4928:3604/span>=== The setting method of root user automatic login in Linux desktop version system ===64 scope link noprefixroute
# Execute ::valid_lft forever preferred_lft forever|}</ol><ol start="18" style="list-style-type: decimal;"><li>Then you can test the following command connectivity of the network to set check whether the desktop system to automatically log in as IP address is configured OK, and the '''ping''' command can be interrupted through the root usershortcut key '''Ctrl+C'''</li>
{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo desktop_loginping 192.168.1.sh root47 -I eth0'''
<ol start="2" style="list-style-typePING 192.168.1.47 (192.168.1.47) from 192.168.1.188 eth0: decimal;"><li>Then restart the system, and the root user will automatically log in to the desktop</li></ol>56(84) bytes of data.
[[File64 bytes from 192.168.1.47:pi3b-img174icmp_seq=1 ttl=64 time=0.png|448x187px]]233 ms
'''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 devices64 bytes from 192.'''168.1.47: icmp_seq=2 ttl=64 time=0.263 ms
'''Also note that this is not a bug, since pulseaudio is not allowed to run as root64 bytes from 192.'''168.1.47: icmp_seq=3 ttl=64 time=0.273 ms
<ol start64 bytes from 192.168.1.47: icmp_seq="3" style4 ttl="list-style-type: decimal;"><li>Execute the following command to set the desktop system to log in automatically with the orangepi user again</li></ol>64 time=0.269 ms
orangepi@orangepi64 bytes from 192.168.1.47:~$ '''sudo desktop_loginicmp_seq=5 ttl=64 time=0.sh orangepi'''275 ms
<span id="the-method-of-disabling-the-desktop-in-the-linux-desktop-version-system"></span>=== The method of disabling the desktop in the Linux desktop version system ===^C
# First enter the following command on the command line,'''Please remember to add sudo permission'''--- 192.168.1.47 ping statistics ---
orangepi@orangepi:~$ '''sudo systemctl disable lightdm.service'''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="2" style="listuse-the-nmcli-command-to-set-a-static-styleip-type: decimal;address"><li>Then restart the Linux system and you will find that the desktop will not be displayed</li></olspan>
orangepi@orangepi:~$ '''sudo reboot'''==== Use the nmcli command to set a static IP address ====
<ol start="3" style="list-style-type: decimal;"><li><p>The steps If you want to set the static IP address of the network port, please insert the network cable into the development board first. '''If you need to set the static IP address of WIFI, please connect the WIFI first, and then start to reopen set the desktop are static IP address'''</p></li><li><p>Then use the '''nmcli con show''' command to view the name of the network device, as follows:shown below</p>
<ol style="list-style-type: lower-alpha;">
<li>First enter <p>'''orangepi''' is the following command on name of the command line,WIFI network interface (the names are not necessarily the same)</p></li><li><p>'''Please remember to add sudo permissionWired 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;">eth0</span><br>|}</ol>
</li></ol>
orangepi@orangepi<ol start="3" style="list-style-type:~$ '''sudo systemctl start lightdm.service'''decimal;"><li>Then enter the following command, where</li>
<ol start="2" style="list-style-type: lower-alphaa. '''&quot;"><li>After Wired connection 1&quot;''' means to set the static IP address of the Ethernet port. If you need to set the static IP address of the command is executedWIFI, please change it to the corresponding name of the WIFI network interface (you can get it through the desktop will be displayed</li></ol>'''nmcli con show''' command)
<span id="onboard-led-light-test-instructions"></span>== Onboard LED Light Test Instructions ==:b. After '''ipv4.addresse''' is the static IP address to be set, which can be modified to the value you want to set
# There are three LED lights on :c. '''ipv4.gateway''' indicates the development board, one green light, one red light, and one PCIe light. The location is shown in address of the figure below:gateway
<div ::{| class="figurewikitable">style="width:800px;" |-| orangepi@orangepi:~$ '''nmcli con mod &quot;Wired connection 1&quot; \'''
[[File:pi3b-img175'''ipv4.png|425x115px|C:\Users\orangepi\Desktop\用户手册插图\pi 3b\3addresses &quot;192.5168.Onboard-LED-Light-Test-Instructions(1).jpg3.5.Onboard-LED-Light-Test-Instructions(1)]]110&quot; \'''
</div><ol start="2" style="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 softwareipv4.gateway &quot;192.168.1.1&quot; \'''</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></li></ol>
'''Note that the following operations should be performed under the root useripv4.dns &quot;8.8.8.8&quot; \'''
'''ipv4.method &quot;manual&quot;'''|}</ol><ol start="4" style="list-style-type: lower-alphadecimal;"><li>First enter the setting directory of Then restart the green lightLinux system</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''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:~$ '''ip addr show eth0'''
root@orangepi3:~# '''cd /sys/class/leds/status'''eth0: &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: lower-alpha;"><li>The command to set the green light to stop flashing is as follows<link/li></ol>ether 5e:ae:14:a5:91:b3 brd ff:ff:ff:ff:ff:ff
root@orangepi:/sys/class/leds/work# inet '''echo none &gt; trigger<span style="color:#FF0000">192.168.1.110</span>'''/32 brd 192.168.1.110 scope global noprefixroute eth0
<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>:valid_lft forever preferred_lft forever
root@orangepi:inet6 240e:3b7:3240:c3a0:97de:1d01:b290:fe3a/sys/class/leds/work# '''echo default-on &gt; trigger'''64 scope global dynamic noprefixroute
<ol start="4" style="list-style-type: lower-alpha;"><li>The command to set the green light to flash is as follows</li></ol>:valid_lft 259183sec preferred_lft 172783sec
root@orangepi:inet6 fe80::3312:861a:a589:d3c/sys/class/leds/work# '''echo heartbeat &gt; trigger'''64 scope link noprefixroute
::valid_lft forever preferred_lft forever|}</ol><span id="networkssh-connectionremote-testlogin-development-board"></span>== Network connection test ==
<span id="ethernet-port-test"></span>=== Ethernet port test =SSH remote login development board ==
{| class="wikitable" style="background-color:# First, insert one end of the network cable into the Ethernet interface of the development board, ffffdc;width:800px;" |-| <big>'''Linux systems enable ssh remote login by default and connect allow the other end of the network cable root user to log in to the routersystem. Before logging in with ssh, and you first need to ensure that the Ethernet or wifi network is unblocked# After the system startsconnected, it will automatically assign an IP address to and then use the Ethernet card through DHCP, '''No other configuration is required'''# The ip addr command or check the router to view obtain the IP address in the Linux system of the development board is as follows.'''</big>|}
orangepi@orangepi:~$ '''ip addr show eth0'''<span id="ssh-remote-login-development-board-under-ubuntu"></span>=== SSH remote login development board under Ubuntu ===
2: eth0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc mq state UP group default qlen 1000# Obtain the IP address of the development board# Then you can remotely log in to the Linux system through the ssh command
link/ether 4a:fe:2b{| class="wikitable" style="width:3d800px;" |-| test@test:17~$ '''ssh [mailto:1c brd ff:ff:ff:ff:ff:ffroot@192.168.1.36 root@192.168.1.]xxx''' &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Need to be replaced with the IP address of the development board)
inet '''root@192.168.1.150xx'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:#FF0000">the specific content of the entered password will not be displayed on the screen</24 brd 192span>, please do not think that there is any fault, just press Enter after inputting.168'''</big>|}::{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''If you are prompted to refuse the connection, 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.1.255 scope global dynamic noprefixroute eth0'''</big>|}
valid_lft 43150sec preferred_lft 43150sec<ol start="3" style="list-style-type: decimal;"><li>After successfully logging in to the system, the display is as shown in the figure below</li>
inet6 fe80::9a04:3703:faed:23be/64 scope link noprefixroute<div class="figure">
valid_lft forever preferred_lft forever[[File:pi3b-img204.png]]
</div>{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''When using ifconfig If ssh cannot log in to view the Linux system normally, please first check whether the IP addressof the development board can be pinged. If the ping is ok, if you can log in to the Linux system through the serial port or HDMI display and then enter the following information is displayed, command on the development board and try again. Is it is because sudo is not added. The correct command ispossible to connect: sudo ifconfig'''
orangepi@orangepi:~$ '''ifconfig'''
Command root@orangepi:~# '''reset_ssh.sh''ifconfig' is available in the following places
* /sbin/ifconfig
* '''If it still doesn't work, try to reset the system.'''</usrbig>|}</sbinol><span id="ssh-remote-login-development-board-under-windows"></ifconfigspan>
The command could not be located because '/sbin:/usr/sbin' is not included in the PATH environment variable.=== SSH remote login development board under Windows ===
This is most likely caused by # First obtain the lack IP address of administrative privileges associated with your user account.the development board# Under Windows, you can use MobaXterm to remotely log in to the development board, first create a new ssh session
ifconfig: command not found:a. Open '''Session'''
::b. Then select '''There are three ways to check the IP address after the development board starts:SSH''' in '''Session Setting'''
# '''Connect the HDMI display, then log in to the system and use the ip addr show eth0 command to view ::c. Then enter the IP address'''# '''Enter of the ip addr show eth0 command development board in the debugging serial terminal to view the IP address'''# '''If there is no debugging serial port and no HDMI display, you can also check the IP address of the development board’s network port through the router’s management interface. However, in this method, some people often cannot see the IP address of the development board normally. If you can't see it, the debug method looks like this:Remote host'''
<!-- --><ol style="list-style-type: upper-alpha;"><li><p>'''First check whether the Linux system has started normally:d. If Then enter the green light of the development board is blinking, it is generally started normally. If only the red light is on, it means that the system has not started normally;user name '''</p></li><li><p>root'''Check whether the network cable is plugged in tightly, or try another network cable;'''</p></li><li><p>orangepi'''Try another router (I have encountered many problems with of the router, such as the router cannot assign the IP address normally, or the IP address has been assigned normally but cannot be seen Linux system 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 debugging serial port to view the IP addressSpecify username'''</p></li></ol>
::e. Finally click '''In addition, it should be noted that the development board DHCP automatically assigns an IP address without any settings.OK'''
<ol startdiv class="4figure" style="list-style-type: 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'''</li></ol>
orangepi@orangepi:~$ '''ping www:[[File:pi3b-img205.baidu.com -I eth0'''png]]
PING www.</div><ol start="3" style="list-style-type: decimal;"><li>Then you will be prompted to enter apassword.shifen.com (14.215.177.38) from 192.168.1.12 eth0The 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: 56(84) bytes #FF0000">the specific content of datathe entered password will not be displayed on the screen</span>, please do not think that there is any fault, just press Enter after inputting.'''</big>|}
64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq<div class=1 ttl=56 time=6.74 ms"figure">
64 bytes from 14.215.177.38 (14.215.177.38)[[File: icmp_seq=2 ttl=56 time=6pi3b-img206.80 mspng]]
64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq</div></ol><ol start=3 ttl"4" style=56 time=6.26 ms"list-style-type: decimal;"><li>After successfully logging in to the system, the display is as shown in the figure below</li>
64 bytes from 14.215.177.38 (14.215.177[[File:pi3b-img207.38): icmp_seqpng]]</ol><span id=4 ttl=56 time=7.27 ms"the-method-of-uploading-files-to-the-linux-system-of-the-development-board"></span>
^C== The method of uploading files to the Linux system of the development board ==
<span id="how-to-upload- www.a.shifen.com ping statistics files-to-the-development-board-linux-system-in-ubuntu-pc"></span>=== How to upload files to the development board Linux system in Ubuntu PC ===
4 packets transmitted, 4 received, 0% packet loss, time 3002ms<span id="how-to-upload-files-using-the-scp-command"></span>==== How to upload files using the scp command ====
rtt min/avg/max/mdev = 6# Use the scp command to upload files from the Ubuntu PC to the Linux system of the development board.260/6.770/7.275/0.373 msThe specific commands are as follows
<span id="wifi-connection-test"></span>=== WIFI connection test ===::a. '''file_path''': need to be replaced with the path of the file to be uploaded
::b. '''Please do not connect to WIFI by modifying the /etc/network/interfaces configuration file. There will be problems connecting to the WIFI network in this way.orangepi''': It is the user name of the Linux system of the development board, and it can also be replaced with other ones, such as root
<span id="wifi-::c. '''192.168.xx.xx''': It is the-server-image-connects-IP address of the development board, please modify it according to-wifi-through-commands"></span>==== WIFI The server image connects to WIFI through commands ====the actual situation
::d. '''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 /home/orangepi''': The path in some serial port software (such as minicom), and cannot display the graphical interface normally. Of course, if Linux system of the development board is connected to an Ethernet or HDMI display, you which can also use the commands demonstrated in this section to connect be modified to the WIFI network.'''other paths
<ol style::{| class="list-style-type: decimal;wikitable"><li><p>First log in to the Linux system, there are the following three ways</p><ol style="list-style-typewidth: lower-alpha800px;"><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<test@test:~$ '''scp file_path orangepi@192.168.xx.xx:/p><home/li></ol><orangepi/li>'''<li><p>First use the nmcli dev wifi command to scan the surrounding WIFI hotspots</p></li></ol>|}
orangepi@orangepi<ol start="2" style="list-style-type:~$ '''nmcli dev wifi'''decimal;"><li>If you want to upload a folder, you need to add the -r parameter</li>
<div {| class="figurewikitable" style="width:800px;">|-| [[Filetest@test:pi3b~$ '''scp <span style="color:#FF0000">-img176r</span> dir_path orangepi@192.168.xx.pngxx:/home/orangepi/'''|575x250px|选区_011]]}</divol>
<ol start="3" style="list-style-type: decimal;">
<li>Then There are more usages of scp, please use the nmcli following command to connect to view the scanned WIFI hotspot, where:man manual</li>{| class="wikitable" style="width:800px;" |-| test@test:~$ '''man scp'''|}</ol><span id="how-to-upload-files-using-filezilla"></span>
a. '''wifi_name''' needs to be replaced with the name of the WIFI hotspot you want to connect ==== How toupload files using filezilla ====
b. '''wifi_passwd''' needs to be replaced with the password of the WIFI hotspot you want to connect to# First install filezilla in Ubuntu PC
orangepi::{| class="wikitable" style="width:800px;" |-| test@orangepitest:~$ '''nmcli dev wifi connect wifi_name password wifi_passwdsudo apt install -y filezilla'''|}
Device 'wlan0' successfully activated with 'cf937f88<ol start="2" style="list-ca1estyle-4411-bb50-61f402eef293'.type: decimal;"><li>Then use the following command to open filezilla</li>
{| class="wikitable" style="width:800px;" |-| test@test:~$ '''filezilla'''|}</ol><ol start="43" style="list-style-type: decimal;"><li>You can view The interface after filezilla is opened is as follows, and the IP address of wifi through display under the '''ip addr show wlan0''' commandremote site on the right is empty</li></ol>
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-img208.png]]
link</ether 23div></ol><ol start="4" style="list-style-type:8c:d6:ae:76:bb brd ff:ff:ff:ff:ff:ffdecimal;"><li>The method of connecting the development board is shown in the figure below</li>
inet '''192.168.1.11'''/24 brd 192.168.1.255 scope global dynamic noprefixroute wlan0<div class="figure">
valid_lft 259192sec preferred_lft 259192sec[[File:pi3b-img209.png]]
inet6 240e:3b7:3240:c3a0:c401:a445:5002</div></ol><ol start="5" style="list-style-type:ccdddecimal;"><li>Then choose to '''save the password''', and then click '''OK'''</64 scope global dynamic noprefixrouteli>
valid_lft 259192sec preferred_lft 172792sec[[File:pi3b-img210.png]]</ol><ol start="6" style="list-style-type: decimal;"><li>Then choose to always '''trust this host''', and then click '''OK'''</li>
inet6 fe80::42f1:6019:a80e:4c31/64 scope link noprefixroute<div class="figure">
valid_lft forever preferred_lft forever[[File:pi3b-img211.png]]
5) Use </div></ol><ol start="7" style="list-style-type: decimal;"><li>After the '''ping''' command to test connection is successful, you can see the connectivity directory structure of the wifi network, and development board Linux file system on the '''ping''' command can be interrupted through right side of the shortcut key '''Ctrl+C'''filezilla software</li>
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[[File: 56(84) bytes of datapi3b-img212.png]]
64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq</div></ol><ol start=1 ttl"8" style=52 time=43"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.5 ms</li>
64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq<div class=2 ttl=52 time=41.3 ms"figure">
64 bytes from 182.92.236.130 (182.92.236.130)[[File: icmp_seq=3 ttl=52 time=44pi3b-img213.9 mspng]]
64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq</div></ol><ol start=4 ttl"9" style=52 time=45.6 ms"list-style-type: decimal;"><li>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</li>
64 bytes <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 182.92.236.130 (182.92.236.130): icmp_seq=5 ttl=52 time=48.8 ms-windows-pc-to-the-linux-system-of-the-development-board"></span>
^C=== The method of uploading files from Windows PC to the Linux system of the development board ===
<span id="how-to-upload- www.orangepi.org ping statistics files-using-filezilla-1"></span>==== How to upload files using filezilla ====
5 packets transmitted# First download the installation file of the Windows version of the filezilla software, 5 received, 0% packet loss, time 4006msthe download link is as follows
rtt min/avg/max/mdev ::{| class="wikitable" style= 41.321"width:800px;" |-| '''https:/44.864/48filezilla-project.834org/2download.484 msphp?type=client'''|}
<span iddiv class="the-server-image-connects-to-wifi-in-a-graphical-wayfigure"></span>==== The server image connects to WIFI in a graphical way ====
1) First log in to the Linux system, there are the following three ways::[[File:pi3b-img214.png]]
<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 [[\l|the Linux system through ssh]]</p></lidiv><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></oldiv class="figure">
<!::[[File:pi3b-- --># # Then enter the nmtui command in the command line to open the wifi connection interfaceimg215.png]]
orangepi@orangepi</div><ol start="2" style="list-style-type:~$ decimal;"><li>The downloaded installation package is as follows, and then double-click to install directly</li> {| class="wikitable" style="width:800px;" |-| '''FileZilla_Server_1.5.1_win64-setup.exe'''|} During the installation process, please select '''Decline'''nmtuion the following installation interface, and then select '''Next&gt;''' <div class="figure"> [[File:pi3b-img216.png]]
</div></ol>
<ol start="3" style="list-style-type: decimal;">
<li>Enter The interface after filezilla is opened is as follows, and the display under the nmtui command to open remote site on the interface as shown belowright is empty</li> </oldiv class="figure">
[[File:pi3b-img177img217.png|345x215px]]
</div></ol>
<ol start="4" style="list-style-type: decimal;">
<li>Select '''Activate a connect''' and press EnterThe method of connecting the development board is shown in the figure below:</li></ol>
[[File:pi3b-img178.png|349x216px]]<div class="figure">
[[File:pi3b-img209.png]]
 
</div></ol>
<ol start="5" style="list-style-type: decimal;">
<li>Then you can see all choose to '''save the searched WIFI hotspotspassword''', and then click '''OK'''</li></ol>
<div class="figure">
[[File:pi3b-img179img218.png|426x270px|16]]
</div></ol>
<ol start="6" style="list-style-type: decimal;">
<li>Select the WIFI hotspot you want to connect Then choose toalways '''trust this host''', and then use the Tab key to position the cursor on click '''ActivateOK''' and press Enter</li></ol>
<div class="figure">
[[File:pi3b-img180img219.png|474x298px|17]]
</div></ol>
<ol start="7" style="list-style-type: decimal;">
<li>Then a dialog box for entering a password will pop upAfter the connection is successful, enter you can see the directory structure of the development board Linux file system on the right side of the corresponding password in '''Password''' and press Enter to start connecting to WIFIfilezilla software</li></ol>
<div class="figure">
[[File:pi3b-img181img220.png|480x308px|18]]
</div></ol>
<ol start="8" style="list-style-type: decimal;">
<li>After Then select the WIFI connection is successfulpath to be uploaded to the development board on the right side of the filezilla software, a &quot;*&quot; will and then select the file to be displayed in front uploaded on the Ubuntu PC on the left side of the connected WIFI namefilezilla software, then click the right mouse button, and then click the upload option to start uploading the file to the development board.</li></ol>
<div class="figure">
[[File:pi3b-img182img221.png|443x283px|C:\Users\orangepi\Desktop\用户手册插图\Zero3\未标题-9.jpg未标题-9]]
</div></ol>
<ol start="9" style="list-style-type: decimal;">
<li>You <p>After the upload is complete, you can go to the corresponding path in the Linux system of the development board to view the IP address uploaded file</p></li><li><p>The method of wifi through uploading a folder is the '''ip addr show wlan0''' commandsame as that of uploading a file</p></li></ol>
orangepi@orangepi:~$ '''ip addr show wlan0'''<span id="hdmi-test"></span>
11: wlan0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast state UP group default qlen 1000== HDMI test ==
link<span id="hdmi-display-test"></ether 24:8c:d3:aa:76:bb brd ff:ff:ff:ff:ff:ffspan>=== HDMI display test ===
inet '''192.168.1.11'''/24 brd 192.168.1.255 scope global dynamic noprefixroute wlan0# Use HDMI to HDMI cable to connect Orange Pi development board and HDMI monitor
valid_lft 259069sec preferred_lft 259069sec::[[File:pi3b-img10.png]]
inet6 240e<ol start="2" style="list-style-type:3b7:3240:c4a0:c401:a445:5002:ccdddecimal;"><li>After starting the Linux system, if the HDMI monitor has image output, it means that the HDMI interface is in normal use</64 scope global dynamic noprefixrouteli>
valid_lft 259071sec preferred_lft 172671sec{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <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.'''
inet6 fe80'''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:42f1:6019:a80e:4c31800px;" |-| <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>|}</64 scope link noprefixrouteol>
valid_lft forever preferred_lft forever<span id="hdmi-to-vga-display-test"></span>
<ol start="10" style="list-style-type: decimal;"><li>Use the '''ping''' command = HDMI to VGA display test the connectivity of the wifi network, and the '''ping''' command can be interrupted through the shortcut key '''Ctrl+C'''</li></ol>===
orangepi@orangepi<ol style="list-style-type: decimal;"><li><p>First, you need to prepare the following accessories</p><ol style="list-style-type:~$ '''ping www.orangepi.org lower-I wlan0'''alpha;"><li>HDMI to VGA converter</li>
PING www[[File:pi3b-img222.orangepi.org (182.92.236.130) from 192.168.1.49 wlan0png]]</ol><ol start="2" style="list-style-type: 56(84) bytes of data.lower-alpha;"><li>A VGA cable</li>
64 bytes from 182[[File:pi3b-img223.92.236.130 (182.92.236.130)png]]</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=1 ttl"2" style=52 time=43.5 ms"list-style-type: decimal;"><li>HDMI to VGA display test as shown below</li>
64 bytes from 182.92.236.130 (182.92.236.130)[[File: icmp_seq=2 ttl=52 time=41pi3b-img224.3 mspng]]
64 bytes from 182.92.236.130 (182{| 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.92So 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.236.130): icmp_seq=3 ttl'''</big>|}</ol><span id=52 time=44.9 ms"hdmi-resolution-setting-method"></span>
64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=4 ttl=52 time=45.6 msHDMI resolution setting method ===
64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=5 ttl=52 time=48.8 ms ^C --- www.orangepi.org ping statistics ---# First open '''Display''' in '''Settings'''
5 packets transmitted, 5 received, 0% packet loss, time 4006ms rtt min/avg/max/mdev = 41.321/44.864/48.834/2.484 ms <span id="test-method-of-desktop-image"></span>==== Test method of desktop image ==== # Click the network configuration icon in the upper right corner of the desktop (please do not connect the network cable when testing WIFI) ::[[File:pi3b-img183img225.png|377x166px]]
<ol start="2" style="list-style-type: decimal;">
<li>Click '''More networks''' in Then you can see the pop-up drop-down box to see all scanned WIFI hotspots, and then select current resolution of the WIFI hotspot you want to connect to.system</li></ol> [[File:pi3b-img184.png|576x353px]]
[[File:pi3b-img226.png]]
</ol>
<ol start="3" style="list-style-type: decimal;">
<li>Then enter Click the password drop-down box of Resolution to see all resolutions currently supported by the WIFI hotspot, and then click '''Connect''' to start connecting to WIFImonitor</li></ol> [[File:pi3b-img185.png|320x163px]]
[[File:pi3b-img227.png]]
</ol>
<ol start="4" style="list-style-type: decimal;">
<li>After connecting Then select the resolution you want to WIFIset, you can open the browser to check whether you can access the Internet. The entrance of the browser is shown in the figure belowand click Apply</li></ol> [[File:pi3b-img186.png|576x308px]]
[[File:pi3b-img228.png]]
</ol>
<ol start="5" style="list-style-type: decimal;">
<li>If you can open other web pages after opening After the browsernew resolution is set, it means that select '''Keep the WIFI connection is normalconfiguration'''</li></ol>
[[File:pi3b-img187img229.png|576x222px]]</ol><span id="how-to-use-bluetooth"></span>
<span id="how-to-set-a-static-ip-address"></span>=== How to set a static IP address =use Bluetooth ==
'''Please do not set a static IP address by modifying the <span id="test-method-of-desktop-image-1"></etc/network/interfaces configuration file.'''span>=== Test method of desktop image ===
<span id="use-# Click the-nmtui-command-to-set-a-static-ip-address"></span>==== Use Bluetooth icon in the nmtui command to set a static IP address ====upper right corner of the desktop.
# First run the '''nmtui''' command orangepi@orangepi:~$ '''nmtui''':[[File:pi3b-img230.png]]
<ol start="2" style="list-style-type: decimal;">
<li>Then select '''Edit a connection''' and press Enterthe adapter</li></ol> [[File:pi3b-img188.png|227x247px]]
[[File:pi3b-img231.png]]
</ol>
<ol start="3" style="list-style-type: decimal;">
<li>Then select the network interface that needs to set If there is a static IP address, for example, to set the static IP address of prompt on the '''Ethernet''' following interface, please select '''Wired connection 1Yes'''.</li></ol> [[File:pi3b-img189.png|310x149px]]
[[File:pi3b-img232.png]]
</ol>
<ol start="4" style="list-style-type: decimal;">
<li>Then select set '''EditVisibility Setting''' with the as '''TabAlways visible''' key in the Bluetooth adapter settings interface, and press the Enter keythen close it</li></ol> [[File:pi3b-img190.png|316x144px]]
[[File:pi3b-img233.png]]
</ol>
<ol start="5" style="list-style-type: decimal;">
<li>Then use open the Tab key to move configuration interface of the cursor to the '''&lt;Automatic&gt;''' position shown in the figure below to configure IPv4Bluetooth device</li></ol> [[File:pi3b-img191.png|575x240px]]
[[File:pi3b-img234.png]]
</ol>
<ol start="6" style="list-style-type: decimal;">
<li>Then press Enter, select Click '''ManualSearch''' with to start scanning the up and down arrow keys, and press Enter to confirmsurrounding Bluetooth device</li></ol> [[File:pi3b-img192.png|576x237px]]
[[File:pi3b-img235.png]]
</ol>
<ol start="7" style="list-style-type: decimal;">
<li>The display after selection Then select the Bluetooth device you want to connect to, and then click the right button of the mouse to pop up the operation interface for this Bluetooth device, select '''Pair''' to start pairing, and the demonstration here is shown in the figure belowto pair with an Android phone</li></ol> [[File:pi3b-img193.png|575x240px]]
[[File:pi3b-img236.png]]
</ol>
<ol start="8" style="list-style-type: decimal;">
<li>Then move When pairing, the cursor to pairing confirmation box will pop up in the upper right corner of the desktop. Select '''&lt;Show&gt;Confirm'''to confirm. At this time, the mobile phone also needs to be confirmed</li></ol> [[File:pi3b-img194.png|576x241px]]
[[File:pi3b-img237.png]]
</ol>
<ol start="9" style="list-style-type: decimal;">
<li>Then press EnterAfter 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 following setting interface will pop up after enteringphone</li></ol> [[File:pi3b-img195.png|575x450px]]
[[File:pi3b-img238.png]]
</ol>
<ol start="10" style="list-style-type: decimal;">
<li>Then you can set The interface of the IP address (Addresses), gateway (Gateway) and DNS server address in the position sending picture 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-img196img239.png|576x233px]]</ol><span id="usb-interface-test"></span>
<ol start="11" style="list-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>USB interface test ==
[[File{| class="wikitable" style="background-color:pi3b#ffffdc;width:800px;" |-img197| <big>'''The USB interface can be connected to a USB hub to expand the number of USB interfaces.png'''</big>|576x116px]]}
<ol startspan id="12" style="listconnect-the-usb-mouse-or-stylekeyboard-type: decimal;test"><li/span>Then click'''&lt;Back&gt;''' to return to === Connect the previous selection interface</li></ol>USB mouse or keyboard test ===
[[File:pi3b-img198.png|330x325px]]# 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)
<ol startspan id="13" style="listconnect-the-usb-storage-styledevice-type: decimal;test"><li>Then select '''Activate a connection''', then move the cursor to'''&lt;OK&gt;''', and finally click Enter</li></olspan>
[[File:pi3b-img199.png|331x248px]]=== Connect the USB storage device test ===
<ol start="14" style="list-style-type: decimal;"># First insert the U disk or USB mobile hard disk into the USB interface of the Orange Pi development board<li>Then select # Execute the network interface that needs to be setfollowing command, such as '''Wired connection 1'''if you can see the output of sdX, then move it means that the cursor to'''&lt;Deactivate&gt;''', and press Enter to disable '''Wired connection 1'''</li></ol>U disk is recognized successfully
[[File:pi3b:{| class="wikitable" style="width:800px;"|-img200.png|orangepi@orangepi:~$ '''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:#FF0000">'''sda1'''</span><br>|576x224px]]}
<ol start="153" style="list-style-type: decimal;"><li>Then please do not move Use the cursor, and then press mount command to mount the Enter key to re-enable U disk into '''Wired connection 1/mnt''', so that and then you can view the file in the static IP address set earlier will take effectU disk</li></ol>
[[File{| class="wikitable" style="width:pi3b800px;" |-img201.png|576x224px]]orangepi@orangepi:~$ '''sudo mount /dev/sda1 /mnt/'''
<ol start="16" style="list-style-typeorangepi@orangepi: decimal;"><li>Then you can exit nmtui through the~$ '''&lt;Back&gt;''' and 'ls /mnt/''Quit''' buttons</li></ol>
[[Filetest.txt|}</ol><ol start="4" style="list-style-type: decimal;"><li>After the mounting, you can view the capacity usage and mount point of the U disk through the '''df -h''' command</li>{| class="wikitable" style="width:pi3b800px;" |-img202.png|300x253px]] [[Fileorangepi@orangepi:pi3b~$ '''df -img203.pngh |227x252px]]grep &quot;sd&quot;'''
/dev/sda1 &nbsp;&nbsp;&nbsp; 29G &nbsp;&nbsp; 208K &nbsp;&nbsp; 29G &nbsp;&nbsp; 1% /mnt|}</ol start><span id="17" style="listusb-wireless-network-stylecard-type: decimal;test"><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></olspan>
orangepi@orangepi:~$ '''ip addr show eth0'''=== USB wireless network card test ===
3: eth0: &lt;BROADCASTThe currently '''tested''' USB wireless network cards are shown below. Please test it by yourself for other models of USB wireless network cards. If you cannot use it,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast state UP group default qlen 1000you need to transplant the corresponding USB wireless network card driver
link/ether 5e{| class="wikitable" style="width:ac800px;text-align:14:a5:92:b3 brd ff:ff:ff:ff:ff:ffcenter;"|-| No.| Model||-| 1| RTL8723BU
inet '''192Support 2.1684G WIFI+BT4.1.177'''/24 brd 192.168.1.255 scope global noprefixroute eth00
valid_lft forever preferred_lft forever| [[File:pi3b-img240.png]]|-| 2| RTL8811
inet6 241e:3b8:3240:c3a0:e269:8305:dc08:135e/64 scope global dynamic noprefixrouteSupport 2.4G +5G WIFI
valid_lft 259149sec preferred_lft 172749sec| [[File:pi3b-img241.png]]|-| 3| RTL8821CU
inet6 fe80::957d:bbbe:4928:3604/64 scope link noprefixrouteSupport 2.4G +5G WIFI
valid_lft forever preferred_lft foreverSupport BT 4.2
| <ol start="18" stylediv class="list-style-type: decimal;figure"><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></ol>
orangepi@orangepi[[File:~$ '''ping 192.168.1pi3b-img242.47 -I eth0'''png]]
PING 192.168.1.47 (192.168.1.47) from 192.168.1.188 eth0: 56(84) bytes of data.</div>|}
64 bytes from 192.168.1.47: icmp_seq<span id="rtl8723bu-test"></span>==== RTL8723BU test ==1 ttl=64 time=0.233 ms
64 bytes from 192.168.1.47: icmp_seq=2 ttl=64 time=0.263 ms# 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
64 bytes from 192.168.1.47: icmp_seq:{| 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=3 ttl"margin-right: 45px;">Used by</span><br><span style=64 time"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.273 ms</span><br>|}
64 bytes from 192.168.1.47: icmp_seq<ol start=4 ttl"3" style=64 time=0.269 ms"list-style-type: decimal;"><li>Through the dmesg command, you can see the loading information of the RTL8723BU module</li>
64 bytes from 192.168.1.47: icmp_seq{| class=5 ttl"wikitable" style=64 time=0.275 ms"width:800px;" |-| orangepi@orangepi:~$ '''dmesg'''
^C......
[ 83.438901] usb 2--- 192.168.1.47 ping statistics -: new high-speed USB device number 2 using ehci-platform
5 packets transmitted[ 83.588375] usb 2-1: New USB device found, 5 receivedidVendor=0bda, 0% packet lossidProduct=b720, time 4042msbcdDevice= 2.00
rtt min/avg/max/mdev [ 83.588403] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber= 0.233/0.262/0.275/0.015 ms3
<span id="use[ 83.588422] usb 2-the-nmcli-command-to-set1: Product: 802.11n WLAN Adapter [ 83.588443] usb 2-a-static-ip-address"></span>==== Use the nmcli command to set a static IP address ====1: Manufacturer: Realtek
<ol style="list[ 83.588460] usb 2-style-type1: 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 first. '''If you need to set the static IP address of WIFI, please connect the WIFI first, and then start to set the static IP address'''</p></li><li><p>Then use the '''nmcli con show''' command to view the name of the network device, as shown below</p><ol style="list-style-typeSerialNumber: 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></ol></li></ol>00e04c000001
orangepi@orangepi[ 83.601974] Bluetooth:~$ '''nmcli con show'''hci0: RTL: examining hci_ver=06 hci_rev=000b lmp_ver=06 lmp_subver=8723
NAME UUID TYPE DEVICE[ 83.603894] Bluetooth: hci0: RTL: rom_version status=0 version=1
'''orangepi''' cfc4f922-ae48-46f1-84e1-2f19e9ec5e2a wifi wlan0[ 83.603920] Bluetooth: hci0: RTL: loading rtl_bt/rtl8723b_fw.bin
'''Wired connection 1''' 9db058b7-7701-37b8-9411-efc2ae8bfa30 ethernet eth0[ 83.610108] Bluetooth: hci0: RTL: loading rtl_bt/rtl8723b_config.bin
<ol start="3" style="list-style-type[ 83.611274] Bluetooth: decimal;"><li>Then enter the following commandhci0: RTL: cfg_sz 68, where</li></ol>total sz 22564
<blockquote>a[ 83.658494] rtk_btusb: Realtek Bluetooth USB driver ver 3. '''&quot;Wired connection 1&quot;''' means to set the static IP address of the Ethernet port. If you need to set the static IP address of the WIFI, please change it to the corresponding name of the WIFI network interface (you can get it through the '''nmcli con show''' command)6d45ddf.20220519-142432
b[ 83. After '''ipv4.addresse''' is the static IP address to be set, which can be modified to the value you want to set658651] usbcore: registered new interface driver rtk_btusb
c[ 83. '''ipv4.gateway''' indicates the address of the gateway</blockquote>orangepi@orangepi667124] usb 2-1: This Realtek USB WiFi dongle (0x0bda:~$ '''nmcli con mod &quot;Wired connection 1&quot; \'''0xb720) is untested!
'''ipv4[ 83.addresses &quot;192667137] usb 2-1: Please report results to Jes.168.1Sorensen@gmail.110&quot; \'''com
'''ipv4.gateway &quot;192.168.1[ 83.890140] usb 2-1&quot; \''': Vendor: Realtek
'''ipv4[ 83.dns &quot;8890153] usb 2-1: Product: 802.8.8.8&quot; \'''11n WLAN Adapter
'''ipv4[ 83.method &quot;manual&quot;'''890159] usb 2-1: rtl8723bu_parse_efuse: dumping efuse (0x200 bytes):
<ol start="4" style="list-style-type: decimal;"><li>Then restart the Linux system</li></ol>......
orangepi@orangepi[ 83.890412] usb 2-1:~$ '''sudo reboot'''RTL8723BU rev E (SMIC) 1T1R, TX queues 3, WiFi=1, BT=1, GPS=0, HI PA=0
<ol start="5" style="list[ 83.890417] usb 2-style-type1: RTL8723BU MAC: 00:13:ef:f4:58: 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></ol>ae
orangepi@orangepi[ 83.890421] usb 2-1:~$ '''ip addr show eth0'''rtl8xxxu: Loading firmware rtlwifi/rtl8723bu_nic.bin
3[ 83.895289] usb 2-1: eth0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast state UP group default qlen 1000Firmware revision 35.0 (signature 0x5301)
link/ether 5e[ 84.050893] Bluetooth:aehci0:14RTL:a5:91:b3 brd ff:ff:ff:ff:ff:fffw version 0x0e2f9f73
inet '''192[ 84.168.1.110'''/32 brd 192.168.1.110 scope global noprefixroute eth0266905] Bluetooth: RFCOMM TTY layer initialized
valid_lft forever preferred_lft forever[ 84.266949] Bluetooth: RFCOMM socket layer initialized
inet6 240e[ 84.266999] Bluetooth:3b7:3240:c3a0:97de:1d01:b290:fe3a/64 scope global dynamic noprefixrouteRFCOMM ver 1.11
valid_lft 259183sec preferred_lft 172783sec[ 84.884270] usbcore: registered new interface driver rtl8xxxu
inet6 fe80[ 84.912046] rtl8xxxu 2-1:1.2 wlx0013eff458ae:3312renamed from wlan0|}</ol><ol start="4" style="list-style-type:861adecimal;"><li>Then you can see the RTL8723BU WIFI device node through the '''sudo ifconfig''' command. Please refer to [[Orange Pi 3B#WIFI connection test|'''the WIFI connection test chapter''']] for WIFI connection and testing methods</li>{| class="wikitable" style="width:a589800px;" |-| orangepi@orangepi:d3c/64 scope link noprefixroute~$ '''sudo ifconfig wlx0013eff458ae'''
valid_lft forever preferred_lft foreverwlx0013eff458ae: flags=4099&lt;UP,BROADCAST,MULTICAST&gt; mtu 1500
<span id="ssh-remote-login-development-board"></span>== SSH remote login development board; ==::ether 00:13:ef:f4:58:ae txqueuelen 1000 (Ethernet)
'''Linux systems enable ssh remote login by default and allow the root user to log in to the system::RX packets 0 bytes 0 (0. 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.'''0 B)
<span id="ssh-remote-login-development-board-under-ubuntu"></span>=== SSH remote login development board under Ubuntu ===::RX errors 0 dropped 0 overruns 0 frame 0
# Obtain the IP address of the development board# Then you can remotely log in to the Linux system through the ssh command::TX packets 0 bytes 0 (0.0 B)
test::TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0|}</ol><ol start="5" style="list-style-type: decimal;"><li>Then you can see the USB Bluetooth device through the '''hciconfig''' command</li>{| class="wikitable" style="width:800px;" |-| orangepi@testorangepi:~$ '''ssh [mailto:root@192.168.1.36 root@192.168.1.]xxxsudo apt update &amp;&amp; sudo apt install bluez''' (Need to be replaced with the IP address of the development board)
rootorangepi@192.168.1.xxorangepi:~$ '''hciconfig'''s password: (Enter the password here, the default password is orangepi)
hci0: Type: Primary Bus: '''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.<span style="color:#FF0000">USB</span>'''
'''If you are prompted to refuse the connection, as long as you are using the image provided by Orange Pi, please do not suspect that the password orangepi is wrong, but look for other reasons.'''::BD Address: 00:13:EF:F4:58:AE ACL MTU: 820:8 SCO MTU: 255:16
<ol start="3" style="list-style-type: decimal;"><li>After successfully logging in to the system, the display is as shown in the figure below</li></ol>:DOWN
<div class="figure">::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="6" style="list-img204style-type: decimal;"><li>You can also see the Bluetooth icon on the desktop.png|405x207px|L467QDF65C(YR79U]TH[TND]]At this time, Bluetooth has not been opened, so a red '''<span style="color:#FF0000">x</span>''' will be displayed</li>
[[File:pi3b-img243.png]]</divol><ol start="7" style="list-style-type: decimal;"><li>Click '''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:Turn Bluetooth On'''to turn on Bluetooth</li>
root@orangepi[[File:~# '''reset_sshpi3b-img244.sh'''png]]</ol><ol start="8" style="list-style-type: decimal;"><li>The display after turning on Bluetooth is as follows</li>
[[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|'''If it still doesnBluetooth use method't work, try to reset the system.'']] for Bluetooth test method, so I won't go into details here.</li></ol>
<span id="sshrtl8811-remote-login-development-board-under-windowstest"></span>=== SSH remote login development board under Windows ===
# First obtain the IP address of the development board==== RTL8811 test ====
2) Under Windows# First insert the RTL8811 wireless network card module into the USB interface of the development board.# Then the Linux system will automatically load the kernel modules related to RTL8811 WIFI, and you can use MobaXterm to remotely log in to see that the following kernel modules have been automatically loaded through the development board, first create a new ssh sessionlsmod command
a. Open ::{| class="wikitable" style="width:800px;" |-|<p>orangepi@orangepi:~$ '''Sessionlsmod'''</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: 50px;">1839104 </span><span style="margin-right: 50px;">0</span><br>|}
b. Then select <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="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''SSH''' in '''Session Settingdmesg'''
c[ 118. Then enter the IP address of the development board in the '''Remote host'''618194] usb 2-1: new high-speed USB device number 2 using ehci-platform
d[ 118. Then enter the user name '''root''' or '''orangepi''' of the Linux system in '''Specify username'''767152] usb 2-1: New USB device found, idVendor=0bda, idProduct=c811, bcdDevice= 2.00
e[ 118. Finally click '''OK'''767181] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
<div class="figure">[ 118.767199] usb 2-1: Product: 802.11ac NIC
[[File:pi3b-img205118.png|553x280px|14]767219]usb 2-1: Manufacturer: Realtek
</div><ol start="[ 118.767235] usb 2" style="list-style-type1: SerialNumber: 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>123456
'''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[ 119.'''500530] usbcore: registered new interface driver rtl8821cu
<div class="figure"> [[File119.525498] rtl8821cu 2-1:pi3b-img2061.png|578x150px|C0 wlx1cbfced9d260:\Users\orangepi\Desktop\用户手册插图\pi 3b\just press Enter after inputting..jpgjust press Enter after inputting.]]renamed from wlan0|}</divol>
<ol start="4" style="list-style-type: decimal;">
<li>After successfully logging in to Then you can see the system, WiFi device node through the display is as shown in '''sudo ifconfig''' command. Please refer to the figure below[[Orange Pi 3B#WIFI connection test|'''WiFi connection test chapter''']] for WIFI connection and testing methods. I won't go into details her</li></ol>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo ifconfig wlx1cbfced9d260'''
[[Filewlx1cbfced9d260:pi3b-img207.png|576x334px]]flags=4099&lt;UP,BROADCAST,MULTICAST&gt; mtu 1500
<span id="the-method-of-uploading-files-to-the-linux-system-of-the-development-board"></span>== The method of uploading files to the Linux system of the development board ==::ether 1c:bf:ce:d9:d2:60 txqueuelen 1000 (Ethernet)
<span id="how-to-upload-files-to-the-development-board-linux-system-in-ubuntu-pc"></span>=== How to upload files to the development board Linux system in Ubuntu PC ===::RX packets 0 bytes 0 (0.0 B)
<span id="how-to-upload-files-using-the-scp-command"></span>==== How to upload files using the scp command ====::RX errors 0 dropped 0 overruns 0 frame 0
# Use the scp command to upload files from the Ubuntu PC to the Linux system of the development board::TX packets 0 bytes 0 (0. The specific commands are as follows0 B)
::TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0|}</ol><blockquotespan id="rtl8821cu-test"></span>a. '''file_path''': need to be replaced with the path of the file to be uploaded
b. '''orangepi''': It is the user name of the Linux system of the development board, and it can also be replaced with other ones, such as root==== RTL8821CU test ====
c. # First insert the rtl8821cu wireless network card module into the USB interface of the development board# Then use the '''192.168.xx.xxlsusb''': It is command to see the IP address device information of the development boardrtl8821cu usb wifi module, please modify it according to make sure that the actual situationUSB module is not in Driver CDROM Mode
d. '''/home/orangepi''': The path in the Linux system of the development board, which can also be modified to other paths:{| class="wikitable" style="width:800px;" |-</blockquote>| testorangepi@testorangepi:~$ '''scp file_path orangepi@192.168.xx.xx:/home/orangepi/lsusb | grep &quot;Realtek&quot;'''
<ol startBus 002 Device 003: ID 0bda:c820 Realtek Semiconductor Corp. 802.11ac NIC|}::{| class="2wikitable" style="listbackground-style-typecolor:#ffffdc;width: decimal800px;"><li>If you want to upload a folder, you need to add the |-r parameter</li></ol>| orangepi@orangepi:~$ '''lsusb | grep &quot;Realtek&quot;'''
test@testBus 002 Device 002:~$ ID 0bda:1a2b Realtek Semiconductor Corp. RTL8188GU 802.11n WLAN Adapter ('''scp -r dir_path orangepi@192.168.xx.xx<span style="color:blue">Driver CDROM Mode</home/orangepi/span>''')
<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:~$ <big>'''man scpIf 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:'''</big>
<span id="how-to-upload-files-using-filezilla"></span>
==== How to upload files using filezilla ====
# First install filezilla in Ubuntu PCorangepi@orangepi:~$ '''sudo usb_modeswitch -KW -v 0bda -p 1a2b'''|}
test<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@testorangepi:~$ '''sudo apt install 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: 50px;">1839104 </span><span style="margin-right: 50px;">0</span><br><span style="margin-right: 90px;">rtk_btusb </span><span style="margin-right: 50px;">61440</span><span style="margin-y filezillaright: 30px;">0</span><br>|}</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;" |-| orangepi@orangepi:~$ '''dmesg'''
<ol start="2" style="list-style-type: decimal;"><li>Then use the following command to open filezilla</li></ol>......
test@test[ 57.083693] usb 2-1:~$ '''filezilla'''new high-speed USB device number 2 using ehci-platform
<ol start[ 57.231888] usb 2-1: New USB device found, idVendor="3" style0bda, idProduct="list-style-type: decimal;"><li>The interface after filezilla is opened is as follows1a2b, and the display under the remote site on the right is empty</li></ol>bcdDevice= 2.00
<div class[ 57.231916] usb 2-1: New USB device strings: Mfr="figure">1, Product=2, SerialNumber=0
[[File:pi3b-img20857.png|576x453px|截图 2022231937] usb 2-12-03 19-04-40]]1: Product: DISK
</div><ol start="4" style="list[ 57.231956] usb 2-style-type1: Manufacturer: decimal;"><li>The method of connecting the development board is shown in the figure below</li></ol>Realtek
<div class="figure">[ 57.242594] usb-storage 2-1:1.0: USB Mass Storage device detected
[[File57.245674] scsi host0:pi3busb-storage 2-img2091:1.png|575x128px|图片565]]0
</div><ol start="5" style="list[ 58.069172] usb 2-style-type1: decimal;"><li>Then choose to '''save the password'''USB disconnect, and then click '''OK'''</li></ol>device number 2
[[File58.440025] usb 2-1:pi3bnew high-img210.png|249x181px]]speed USB device number 3 using ehci-platform
<ol start[ 58.587819] usb 2-1: New USB device found, idVendor="6" style0bda, idProduct="list-style-type: decimal;"><li>Then choose to always '''trust this host'''c820, and then click '''OK'''</li></ol>bcdDevice= 2.00
<div class[ 58.587827] usb 2-1: New USB device strings: Mfr="figure">1, Product=2, SerialNumber=3
[[File58.587833] usb 2-1:pi3b-img211Product: 802.png|278x150px|IMG_256]]11ac NIC
</div><ol start="7" style="list[ 58.587838] usb 2-style-type1: Manufacturer: 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>Realtek
<div class="figure">[ 58.587844] usb 2-1: SerialNumber: 123456
[[File58.610463] rtk_btusb:pi3bRealtek Bluetooth USB driver ver 3.1.6d45ddf.20220519-img212.png|533x330px|IMG_256]]142432
</div><ol start="8" style="list-style-type[ 58.610656] usbcore: 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>registered new interface driver rtk_btusb
<div class[ 58.634631] Bluetooth: hci0: RTL: examining hci_ver="figure">08 hci_rev=000c lmp_ver=08 lmp_subver=8821
[[File:pi3b-img21358.png|485x380px|IMG_256]636729]Bluetooth: hci0: RTL: rom_version status=0 version=1
<[ 58.636740] Bluetooth: hci0: RTL: loading rtl_bt/div>9) After the upload is complete, you can go to the corresponding path in the Linux system of the development board to view the uploaded filertl8821c_fw.bin
10) The method of uploading a folder is the same as that of uploading a file, so I won’t go into details here[ 58.664190] Bluetooth: hci0: RTL: loading rtl_bt/rtl8821c_config.bin
<span id="the-method-of-uploading-files-from-windows-pc-to-the-linux-system-of-the-development-board"></span>=== The method of uploading files from Windows PC to the Linux system of the development board ===[ 58.664746] Bluetooth: hci0: RTL: cfg_sz 10, total sz 31990
<span id="how-to-upload-files-using-filezilla-1"></span>==== How to upload files using filezilla ====[ 59.122471] Bluetooth: hci0: RTL: fw version 0x829a7644
# First download the installation file of the Windows version of the filezilla software, the download link is as follows[ 59.265513] usbcore: registered new interface driver rtl8821cu
https[ 59.280119] rtl8821cu 2-1://filezilla-project1.org2 wlx90de80521825: renamed from wlan0|}</download.php?type=clientol>
<div 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 [[Orange Pi 3B#WIFI connection test|'''WiFi connection test chapter''']] for WIFI connection and testing methods.</li>{| class="figurewikitable" style="width:800px;">|-| orangepi@orangepi:~$ '''sudo ifconfig wlx90de80521825'''
[[Filewlx90de80521825:pi3b-img214.png|472x171px|C:\Users\orangepi\Desktop\用户手册插图\Pi5 Plus\未标题-15.jpg未标题-15]]flags=4099&lt;UP,BROADCAST,MULTICAST&gt; mtu 1500
</div><div class="figure">::ether 00:13:ef:f4:58:ae txqueuelen 1000 (Ethernet)
[[File:pi3b-img215:RX packets 0 bytes 0 (0.png|393x283px|图片5552]]0 B)
</div><ol start="2" style="list-style-type: decimal;"><li>The downloaded installation package is as follows, and then double-click to install directly</li></ol>:RX errors 0 dropped 0 overruns 0 frame 0
'''FileZilla_Server_1::TX packets 0 bytes 0 (0.5.1_win64-setup.exe'''0 B)
During ::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 installation process, please select '''Declinehciconfig''' on the following installation interface, and then select command</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''Nextsudo apt-get update &amp;&gtamp;sudo apt-get install -y bluez''' orangepi@orangepi:~$ '''hciconfig'''
hci0: Type: Primary Bus: '''<div classspan style="figurecolor:#FF0000">USB</span>'''
[[File:pi3b-img216.png|319x251px|IMG_256]]:BD Address: 00:13:EF:F4:58:AE ACL MTU: 820:8 SCO MTU: 255:16
</div><ol start="3" style="list-style-type: 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>:DOWN
<div class="figure">::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-img217style-type: decimal;"><li>Bluetooth icons can also be seen on the desktop.png|451x357px|IMG_256]]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]]</divol><ol start="48" style="list-style-type: decimal;"><li>The method of connecting the development board is shown in the figure below:Click '''Turn Bluetooth On''' to turn on Bluetooth</li></ol>
[[File:pi3b-img244.png]]<div class/ol><ol start="9" style="figurelist-style-type: decimal;"><li>The display after turning on Bluetooth is as follows</li>
[[File:pi3b-img209img245.png]]</ol><ol start="10" style="list-style-type: decimal;"><li>Please refer to the [[Orange Pi 3B#How to use Bluetooth|575x128px|图片565'''Bluetooth use chapter''']]for the Bluetooth test method. I won't go into details here</li></ol>
</div><ol startspan id="5" style="listusb-stylecamera-type: decimal;test"><li>Then choose to '''save the password''', and then click '''OK'''</li></olspan>
<div class="figure">== USB Camera Test ===
[[File:pi3b-img218.png|207x146px|IMG_256]]# 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
</div><ol start="6" style="list::[[File:pi3b-style-type: decimal;"><li>Then choose to always '''trust this host''', and then click '''OK'''</li></ol>img13.png]]
<div 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="figurewikitable" style="width:800px;">|-| orangepi@orangepi:~$ '''v4l2-ctl --list-devices'''
[[FileQ8 HD Webcam:pi3bQ8 HD Webcam ('''<span style="color:#FF0000">usb</span>'''-img219fc880000.png|221x109px|IMG_256]]usb-1):
:'''</div><ol start="7" span style="list-style-typecolor: decimal;blue"><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>dev/video0</olspan>'''
<div class="figure">:/dev/video1
[[File:pi3b/dev/media0|}{| class="wikitable" style="background-img220.pngcolor:#ffffdc;width:800px;" |446x329px-|图片3]]<big>'''Note that the l in v4l2 is a lowercase letter l, not the number 1.'''
</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>
'''In addition, the serial number of the video is not necessarily video0, please refer to what you actually see.'''<div class/big>|}</ol><ol start="3" style="list-style-type: decimal;"><li>In the desktop system, Cheese can be used to directly open the USB camera. The method of opening Cheese is shown in the figure"below:</li>
[[File:pi3b-img221img246.png|501x369px|IMG_256]]
</div><ol start="9" style="list-style-type: decimal;"><li><p>After The interface after Cheese turns on the upload USB camera is complete, you can go to the corresponding path shown 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>figure below:
[[File:pi3b-img247.png]]</ol><span idol start="hdmi4" style="list-style-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= HDMI test =="width:800px;" |-| orangepi@orangepi:~$ '''sudo''' '''apt update'''
orangepi@orangepi:~$ '''sudo apt-get install -y fswebcam'''|}<span id/ol><ol start="2" style="hdmilist-displaystyle-testtype: lower-alpha;"><li><p>After installing fswebcam, you can use the following command to take pictures</spanp><ol style="list-style-type: none;"><li><p>a) -d The option is used to specify the device node of the USB 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 set the number of previous frames to skip</p></li><li><p>e) ./image.jpg The name and path for setting the generated photos</p></li>{| class="wikitable" style= HDMI display test ==="width:800px;" |-| orangepi@orangepi:~$ '''sudo''' '''fswebcam -d /dev/video0 \'''
# Use '''--no-banner -r 1280x720 -S 5 ./image.jpg'''|}</ol></li></ol><ol start="3" 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>{| class="wikitable" style="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 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 cable to connect Orange Pi development board and HDMI monitordisplay</li></ol></li></ol><span id="audio-test"></span>
[[File:pi3b-img10.png|199x129px]]== Audio Test ==
<ol startspan id="2" style="listtest-audio-methods-in-the-styledesktop-type: decimal;system"><li/span>After starting === Test audio methods in the Linux desktop system, if the HDMI monitor has image output, it means that the HDMI interface is in normal use</li></ol>===
'''Note that although many notebook computers have an HDMI interface, # First open 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.'''file manager
'''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::[[File:pi3b-img248.'''png]]
'''When <ol start="2" style="list-style-type: decimal;"><li>Then find the HDMI is not displayed, please check whether the HDMI cable is plugged in tightly. After confirming that following file (if there is no problem with audio file in the connectionsystem, you can change upload a different screen and try audio file to see if it is displayed.'''the system by yourself)</li>
<span iddiv class="hdmi-to-vga-display-testfigure"></span>=== HDMI to VGA display test ===
<ol style="list-style-type: decimal;"><li><p>First, you need to prepare the following accessories</p><ol style="list-style-type[[File: lowerpi3b-alpha;"><li>HDMI to VGA converter</li></ol></li></ol>img249.png]]
[[File</div></ol><ol start="3" style="list-style-type:pi3b-img222decimal;"><li>Then select the audio.png|155x104px]]wav file, right click and select open with vlc to start playing</li>
[[File:pi3b-img250.png]]</ol><ol start="24" style="list-style-type: decimal;" ><li><p>Methods to switch different audio equipment such as HDMI playback and headset playback</p><ol style="list-style-type: lower-alpha;"><li>A VGA cableFirst open the volume control interface</li></ol>
[[File:pi3b-img223img251.png|148x133px]]</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 '''Playback'''. As shown in the figure below, which audio equipment you need to play here can be set.</li>
[[File:pi3b-img252.png]]</ol start="3" style="list-style-type: lower-alpha;"></li>A monitor or TV that supports VGA interface</liol><span id="how-to-play-audio-with-commands"></olspan>
<!-- --><ol start="2" style="list-style-type: decimal;"><li>HDMI = How to VGA display test as shown below</li></ol>play audio with commands ===
[[File:pi3b<span id="headphone-img224.png|576x339px]]interface-play-audio-test"></span>==== Headphone interface play audio test ====
'''When using HDMI to VGA display, # First insert the development board and headset into the Linux system headphone jack of the development board do not need to make any settings, only the HDMI interface of the development board can display normally. So if there is a problem with the test, please check whether there is a problem with the HDMI to VGA converter, VGA cable and monitor.'''
<span id="hdmi::[[File:pi3b-resolution-setting-method"></span>=== HDMI resolution setting method ===img253.png]]
# First open <ol start="2" style="list-style-type: decimal;"><li>Then you can check the sound card device supported by the Linux system through the '''Displayaplay -l''' in command. From the output below, it can be seen that '''Settingscard 0'''is the sound card device with RK809, which is the sound card device of the headset</li>
[[File{| class="wikitable" style="width:pi3b800px;" |-img225.png|576x370px]]orangepi@orangepi:~$ '''aplay -l'''
<ol start="2" style="list-style-type: decimal;"p><li>Then you can see the current resolution **** List of the system</li>PLAYBACK Hardware Devices ****</olp>
'''card 0: rockchiprk809 [rockchip-rk809], device 0: dailink-multicodecs rk817-hifi-0 [File:pi3bdailink-multicodecs rk817-hifi-img226.png|382x254px]0]'''
<ol start="3" style="list-style-type: decimal;"><li>Click the drop-down box of Resolution to see all resolutions currently supported by the monitor</li><'''Subdevices: 0/ol>1'''
[[File:pi3b-img227.png|415x274px]]'''Subdevice #0: subdevice #0'''
<ol start="4" style="listcard 1: rockchiphdmi [rockchip,hdmi], device 0: fe400000.i2s-i2s-hifi i2s-hifi-0 [fe400000.i2s-i2s-hifi i2s-stylehifi-type: decimal;"><li>Then select the resolution you want to set, and click Apply</li></ol>0]
[[File:pi3b-img228.png|415x277px]]Subdevices: 0/1
<ol start="5" style="list-style-type: decimal;"><li>After the new resolution is set, select '''Keep the configuration'''</li></ol>Subdevice #0: subdevice #0
[[File:pi3bSubdevice #0: subdevice #0|}</ol><ol start="3" style="list-img229style-type: decimal;"><li>Then use the '''aplay''' command to play the audio file that comes with the system.png|447x243px]]If the headset can hear the sound, it means that the hardware can be used normally</li>
<span id{| class="howwikitable" style="width:800px;" |-to| orangepi@orangepi:~$ '''aplay -use-bluetooth"><D hw:0,0 /usr/share/sounds/alsa/span>== How to use Bluetooth ==audio.wav'''
Playing WAVE 'audio.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo|}</ol><span id="testhdmi-methodaudio-ofplay-desktop-image-1test"></span>=== Test method of desktop image ===
# Click the Bluetooth icon in the upper right corner of the desktop.==== HDMI Audio Play Test ====
[[File:pi3b-img230# First use the HDMI to HDMI cable to connect the Orange PI development board to the TV (other HDMI displays need to ensure that the audio can be played)# Then check the sound card serial number of HDMI.png|330x128px]]From the output below, you can know that the HDMI sound card is '''card 1'''
<ol start::{| class="2wikitable" style="list-style-typewidth: decimal800px;"><li>Then select the adapter</li></ol>|-| orangepi@orangepi:~$ '''aplay -l'''
[[File:pi3b-img231.png|375x165px]]<p>**** List of PLAYBACK Hardware Devices ****</p>
<ol start="3" style="listcard 0: rockchiprk809 [rockchip-rk809], device 0: dailink-multicodecs rk817-hifi-style0 [dailink-type: decimal;"><li>If there is a prompt below, select '''Yes'''</li></ol>multicodecs rk817-hifi-0]
[[File:pi3b-img232.png|248x85px]]Subdevices: 0/1
<ol start="4" style="list-style-type: decimal;"><li>Then set '''Visibility Setting''' as '''Always visible''' in the Bluetooth adapter settings interface, and then close it</li></ol>Subdevice #0: subdevice #0
'''card 1: rockchiphdmi [[Filerockchip,hdmi], device 0:pi3bfe400000.i2s-img233i2s-hifi i2s-hifi-0 [fe400000.png|243x229px]i2s-i2s-hifi i2s-hifi-0]'''
<ol start="5" style="list-style-type: decimal;"><li>Then open the configuration interface of the Bluetooth device</li><'''Subdevices: 0/ol>1'''
[[File:pi3b-img234.png|438x179px]]'''Subdevice #0: subdevice #0'''
<ol start="6" style="list-style-type: decimal;"><li>Click '''SearchSubdevice #0: subdevice #0''' to start scanning the surrounding Bluetooth device</li></ol>|}
[[File<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>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:pi3b~$ '''aplay -img235D hw:<span style="color:#FF0000">1</span>,0 /usr/share/sounds/alsa/audio.pngwav'''|322x217px]]}</ol><span id="use-the-command-to-test-the-recording-method"></span>
<ol start="7" style="list-style-type: decimal;"><li>Then select = Use the Bluetooth device you want command to connect. If you right -click test the mouse, you will pop up the operating interface of this Bluetooth device. Select '''Pair''' to start pairing. Here, it is demonstrated with the Android phone</li></ol>recording method ===
[[File:pi3b-img236# Orange Pi 3B development board does not have MICs, and can only record audio through headphones with MIC function.png|338x263px]]After inserting the headset with the MIC function into the development board, the command below will record a piece of audio through the headset
<ol start::{| class="8wikitable" style="list-style-typewidth: decimal800px;"><li>When pairing, the pairing confirmation box will pop up in the upper right corner of the desktop. Select |-| orangepi@orangepi:~$ '''amixer -c 0 cset name='Capture MIC Path''Main Mic'Confirm''' to confirm. At this time, the mobile phone also needs to be confirmed</li></ol>
[[Fileorangepi@orangepi:pi3b~$ '''arecord -img237D hw:0,0 -d 5 -f cd -t wav /tmp/test.pngwav'''|417x152px]]}
<ol startspan id="9" style="listtemperature-style-type: decimal;sensor"><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></olspan>
[[File:pi3b-img238.png|439x259px]]== Temperature Sensor ==
<ol start="10" style="list-style-type: decimal;"><li># The interface of command to view the sending picture system temperature sensor is shown below</li></ol>:
[[File:pi3b:{| class="wikitable" style="width:800px;" |-img239.png|437x253px]]orangepi@orangepi:~$ '''sensors'''
<span id="usbsoc_thermal-interfacevirtual-test"></span>== USB interface test ==0
'''The USB interface can connect USB Hub to expand the number of USB interfaces.'''Adapter: Virtual device
<span id="connect-the-usb-mouse-or-keyboard-test"></span>=== Connect the USB mouse or keyboard test ==temp1: +41.9°C (crit =+115.0°C)
# 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)
<span id="connectgpu_thermal-thevirtual-usb-storage-device-test"></span>=== Connect the USB storage device test ===0
# First insert 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 successfulAdapter: Virtual device
orangepi@orangepitemp1:~$ '''cat /proc/partitions +43.8°C| grep &quot;sd*&quot;'''}
major minor <ol start="2" style="list-style-type: decimal;"><li><p>The command to view the current temperature of the nvme ssd solid state drive is:</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''sudo smartctl -a /dev/nvme0 | grep &quot;Temperature:&quot;'''</p><p>Temperature: '''<span style="color:#blocks nameFF0000">40 Celsius</span>'''</p>|}</li></ol>
8 0 30044160 '''sda'''<span id="pin-interface-pin-explanation"></span>
8 1 30043119 '''sda1'''== 40 Pin interface pin explanation ==
<ol start="3" style="list-style-type: decimal;"><li>Use the mount command # Orange Pi 3B Development board 40 Pin interface pins, please refer to mount the U disk into '''/mnt''', and then you can view the file in the U disk</li></ol>figure below
orangepi@orangepi:~$ '''sudo mount /dev/sda1 /mnt/'''<div class="figure">
orangepi@orangepi:~$ '''ls /mnt/''':[[File:pi3b-img254.png]]
test</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.txt</p><ol style="list-style-type: lower-alpha;"><li>Below is a complete pins of 40pin</li>
[[File:pi3b-img255-1.png]]</ol><ol start="42" style="list-style-type: decimallower-alpha;"><li>After The following form is a picture on the left half of the mountingfull table above, you which can view the capacity of the U disk through the '''df -h''' command and the mounting pointbe seen clearly</li></ol>
orangepi@orangepi[[File:~$ '''df pi3b-h | grep &quot;sd&quotimg256-1.png]]</ol><ol start="3" style="list-style-type: lower-alpha;'''"><li>The following form is a picture on the right half of the top table above, which can be seen clearly</li>
[[File:pi3b-img257-1.png]]</ol></li></ol><ol start="3" style="list-style-type: decimal;"><li>There are a total of '''<span style="color:#FF0000">28</devspan>''' GPIO ports in the 40pin interface. The voltage of all GPIO ports is '''<span style="color:#FF0000">3.3v</sda1 29G 208K 29G 1% span>'''</li></mntol>
<span id="usbhow-wirelessto-networkinstall-card-testwiringop"></span>=== USB wireless network card test ===
The currently '''tested''' USB wireless network cards are shown below. Please test it by yourself for other models of USB wireless network cards. If you cannot use it, you need == How to transplant the corresponding USB wireless network card driverinstall wiringOP ==
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
|-
| No<big>'''Note that wiringOP has been pre -installed in the Linux image released by Orange Pi.| Model||Unless wiringOP's code is updated, it is not necessary to re -| 1| RTL8723BUdownload and install. Just use it directly.'''
Support 2.4G WIFI+BT4.0
| [[File'''The storage path of the compiled wiringOP's Deb is wrapped in Orangepi-Build:pi3b-img240.png]]|-| 2| RTL8811'''
Support 2.4G +5G WIFI | [[File'''<span style="color:pi3bblue">orangepi-img241build/external/cache/debs/arm64/wiringpi_x.png]]|-| 3| RTL8821CUxx.deb</span>'''
Support 2.4G +5G WIFI
Support BT 4'''After entering the system, you can run the gpio readall command.2If you can see the output below, it means that wiringOP is pre -installed and can be used normally.'''</big>
| <div class="figure">
[[File:pi3b-img242img258-1.png|tb_imag e_share_1670833201 123]]
</div>
<big>'''wiringOP is currently mainly adapted to the functions of setting GPIO port input and output, setting GPIO port output high and low levels, and setting up and down pull-down resistors. Functions such as hardware PWM are not available.'''</big>
|}
<span id="rtl8723bu-test"></span>==== RTL8723BU test ====# Download the code of wiringOP
# First insert the RTL8723BU wireless network card module into the USB interface of the development board::{| class="wikitable" style="width:800px;" # Then the Linux system will automatically load the RTL8723BU Bluetooth and WiFi |-related kernel modules. You can see that the kernel module below is automatically loaded through the lsmod command| orangepi@orangepi:~$ '''sudo apt update'''
orangepi@orangepi:~$ '''lsmodsudo apt install -y git'''
Module Size Used byorangepi@orangepi:~$ '''git clone https://github.com/orangepi-xunlong/wiringOP.git -b next'''|}
rfcomm 57344 16::{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <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.'''
rtl8xxxu 106496 0
rtk_btusb 61440 0'''If there is a problem with the download code from GitHub, you can use the wiringOP source code that comes with the Linux image directly, and the storage location is: /usr/src/wiringOP'''</big>|}
<ol start="32" style="list-style-type: decimal;"><li>You can see the loading information of the RTL8723BU module through the dmesg commandCompile and install wiringOP</li></ol>
{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''dmesgcd wiringOP'''
orangepi@orangepi:~/wiringOP$ '''sudo ....../build clean'''
[ 83orangepi@orangepi:~/wiringOP$ '''sudo .438901] usb 2/build'''|}</ol><ol start="3" style="list-style-1type: new high-speed USB device number 2 using ehci-platformdecimal;"><li>Test the output of the GPIO Readall command as follows</li>
[ 83.588375] usb 2-1: New USB device found, idVendor<div class=0bda, idProduct=b720, bcdDevice= 2.00"figure">
[ 83[File:pi3b-img258-1.588403png]] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 83.588422] usb 2</div></ol><span id="pin-1: Product: 802.11n WLAN Adapterinterface-gpio-i2c-uart-spi-and-pwm-test"></span>
[ 83.588443] usb 2-1: Manufacturer: Realtek== 40Pin interface GPIO, I2C, UART, SPI, and PWM test ==
[ 83.588460] usb 2{| class="wikitable" style="background-1color: SerialNumber#ffffdc;width: 00e04c000001800px;" |-| <big>'''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.'''</big>
[ 83orangepi@orangepi:~$ '''sudo vim /boot/orangepiEnv.601974] Bluetooth: hci0: RTL: examining hci_ver=06 hci_rev=000b lmp_ver=06 lmp_subver=8723txt'''
[ 83.603894] Bluetooth: hci0: RTL'''<span style="color: rom_version status=0 version#FF0000">overlays=1spi3-m0-cs0-spidev i2c2-m1 i2c3-m0 uart7-m2 uart9-m2 pwm11-m1</span>'''|}
[ 83.603920] Bluetooth: hci0: RTL: loading rtl_bt<span id="pin-gpio-port-test"></rtl8723b_fw.binspan>=== 40pin GPIO port test ===
[ 83.610108] Bluetooth{| class="wikitable" style="background-color: hci0#ffffdc;width: RTL: loading rtl_bt/rtl8723b_config800px;" |-| <big>'''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.bin'''
[ 83.611274] Bluetooth: hci0: RTL: cfg_sz 68, total sz 22564
[ 83.658494] rtk_btusb: Realtek Bluetooth USB driver ver '''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.1.6d45ddf3v.20220519-142432Use this program to test whether the GPIO port can work normally'''
[ 83.658651] usbcore: registered new interface driver rtk_btusb
[ 83.667124] usb 2-1'''The method of running blink_all_gpio program is shown below: This Realtek USB WiFi dongle (0x0bda:0xb720) is untested!'''</big>
[ 83.667137] usb 2-1orangepi@orangepi3b: Please report results ~$ '''sudo blink_all_gpio''' &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #Remember to Jes.Sorensen@gmail.comadd Sudo permissions
[ 83.890140sudo] usb 2-1password for orangepi: Vendor: Realtek&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #You need to enter password here'''|}
[ 83# There are a total of '''28''' GPIO ports in the 40pins of the development board that can be used.890153] usb 2-1: Product: 802.11n WLAN AdapterThe 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
::[[ 83File:pi3b-img259-1.890159png]] usb 2-1: rtl8723bu_parse_efuse: dumping efuse (0x200 bytes):
......<ol start="2" style="list-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>
[ 83.890412] usb 2{| class="wikitable" style="width:800px;" |-1| root@orangepi:~/wiringOP# '''gpio mode <span style="color: RTL8723BU rev E (SMIC) 1T1R, TX queues #FF0000">2</span> out'''|}</ol><ol start="3, WiFi" style=1"list-style-type: decimal;"><li>Then set the GPIO port to output the low level. After setting, BT=1you can use the value of the voltage of the pins with a multimeter. If it is 0v, GPS=0, HI PA=0it means that the low level flat is successful</li>
[ 83.890417] usb 2{| class="wikitable" style="width:800px;" |-1| root@orangepi: RTL8723BU MAC: 00:13:ef:f4:58~/wiringOP# '''gpio write 2 <span style="color:ae#FF0000">0</span>'''|}
[ 83Using GPIO Readall, you can see the value of the No.890421] usb 2-1: rtl8xxxu: Loading firmware rtlwifi/rtl8723bu_nic.bin [ 83.895289] usb 2-1: Firmware revision 35.0  7 pin (signature 0x5301V[ 84.050893] Bluetooth: hci0: RTL: fw version 0x0e2f9f73 [ 84.266905] Bluetooth: RFCOMM TTY layer initialized [ 84.266949] Bluetooth: RFCOMM socket layer initialized [ 84.266999] Bluetooth: RFCOMM ver 1.11 [ 84.884270] usbcore: registered new interface driver rtl8xxxu [ 84.912046] rtl8xxxu 2-1:1.2 wlx0013eff458ae: renamed from wlan0to 0
[[File:pi3b-img260.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 see use a multimeter to measure the RTL8723BU WIFI device node through voltage value of the '''sudo ifconfig''' commandpin. If it is 3. Please refer to 3v, it means that the WIFI connection test a [[\l|'''section for WIFI connection''']] and testing methodshigh level is set successfully.</li></ol>
orangepi{| class="wikitable" style="width:800px;" |-| root@orangepi:~$ /wiringOP# '''sudo ifconfig wlx0013eff458aegpio write 2 <span style="color:#FF0000">1</span>'''|}
wlx0013eff458ae: flags=4099&lt;UPUsing GPIO Readall,BROADCAST,MULTICAST&gt; mtu 1500 ether 00:13:ef:f4:58:ae txqueuelen 1000 (Ethernet) RX packets 0 bytes 0 (0you can see the value of No.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0  7 pin (0.0 BvTX errors 0 dropped 0 overruns 0 carrier 0 collisions 0into 1
[[File:pi3b-img261-1.png]]
</ol>
<ol start="5" style="list-style-type: decimal;">
<li>Then you can see The setting method of other pins is similar, just modify the USB Bluetooth device through serial number of wPi to the '''hciconfig''' commandcorresponding serial number of the pin</li></ol>
orangepi@orangepi:~$ '''sudo apt update &amp;&amp; sudo apt install bluez'''<span id="pin-gpio-port--down-and-downward-pull--down-resistance-setting-method"></span>
orangepi@orangepi:~$ '''hciconfig'''=== 40pin GPIO port pull-down resistance setting method ===
hci0{| class="wikitable" style="background-color: Type: Primary Bus#ffffdc;width: 800px;" |-| <big>'''USBNote 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>
BD Address[[File: 00:13:EF:F4:58:AE ACL MTU: 820:8 SCO MTU: 255:16pi3b-img262-1.png|center]]|}
DOWN# 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
RX bytes:1252 acl:0 sco[[File:0 events:125 errors:0pi3b-img263-1.png]]
TX bytes<ol start="2" style="list-style-type:23307 acldecimal;"><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:0 sco800px;" |-| root@orangepi:0 commands~/wiringOP# '''gpio mode <span style="color:125 errors#FF0000">5</span> in'''|}</ol><ol start="3" style="list-style-type:0decimal;"><li>After the setting is set to input mode, execute the following command to set the GPIO port as the pull-down 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. If the level is 1, it means that the drawing mode is successful</li>{| class="wikitable" style="width:800px;" |-| root@orangepi:~/wiringOP# '''gpio read <span style="color:#FF0000">5</span>'''
'''<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>You can also see Then enter the Bluetooth icon on following command to read the desktoplevel of the GPIO port. At this timeIf the level is 0, Bluetooth has not been opened, so a red it means that the drop-down mode is set successfully</li>{| class="wikitable" style="width:800px;" |-| root@orangepi:~/wiringOP# '''x''' will be displayedgpio read </lispan style="color:#FF0000">5</olspan>'''
[[File'''<span style="color:pi3b#FF0000">0</span>'''|}</ol><span id="pin-img243.png|576x157px]]spi-test"></span>
<ol start="7" style="list-style-type: decimal;"><li>Click '''Turn Bluetooth On''' to open Bluetooth</li></ol>= 40pin SPI Test ===
[[File:pi3b-img244.png|576x262px]]# From the schematic diagram of the 40PIN interface, the SPI available for Orange Pi 3B is spi3
<ol start="8" style="list::[[File:pi3b-styleimg264-type: decimal;"><li>The display after opening Bluetooth is shown below</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:~$ '''sudo orangepi-config'''</p>|}</li><li><p>Then select '''System'''</p><p>[[File:pi3b-img2451.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|576x164px]]</p></li></ol></li></ol>
<ol start="93" style="list-style-type: decimal;"><li>Please refer After restarting, enter the system to check whether there is a spidev3.0 device node in the [[\l|'''Bluetooth use method''']] for Bluetooth test methodLinux system. If it exists, so I won't go into details here.it means that SPI3 has been set up and can be used directly</li></ol>
<span id{| class="rtl8811wikitable" style="width:800px;" |-test"><| orangepi@orangepi:~$ '''ls /dev/span>==== RTL8811 test ====spidev3.0'''
# First insert the RTL8811 wireless network card module into the USB interface of the development board/dev/spidev3.0|}</ol><ol start="4" style="list-style-type: decimal;"># Then <li>Do not short-circuit the Linux system will automatically load mosi and miso pins of SPI3, the RTL8811 WIFI -related kernel modules. You output result of running spidev_test is as follows, you can see that the kernel module below is automatically loaded through the lsmod commanddata of TX and RX are inconsistent</li>
{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''lsmodsudo spidev_test -v -D /dev/spidev3.0'''
Module Size Used byspi mode: 0x0
8821cu 1839104 0bits per word: 8
<ol start="3" style="list-style-typemax speed: decimal;"><li>You can see the loading information of the RTL8811 module through the dmesg command</li></ol>500000 Hz (500 KHz)
orangepi@orangepi:~$ TX | FF FF FF FF FF FF '''dmesg<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 | ......@.…▒..................▒.
[ 118RX | 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 | ...............618194] usb 2.............….|}</ol><ol start="5" style="list-1style-type: new high-speed USB device number 2 using ehcidecimal;"><li>Then short-platformcircuit the two pins of mosi (pin 19 in the 40pin interface) and miso (pin 21 in the 40pin interface) of SPI3, and then run the output of spidev_test as follows, you can see the sending and receiving same data</li>
[ 118[File:pi3b-img265.767152png]] usb 2{| class="wikitable" style="width:800px;" |-1| orangepi@orangepi: New USB device found, idVendor=0bda, idProduct=c811, bcdDevice= 2~$ '''sudo spidev_test -v -D /dev/spidev3.000'''
[ 118.767181] usb 2-1spi mode: New USB device strings: Mfr=1, Product=2, SerialNumber=30x0
[ 118.767199] usb 2-1bits per word: Product: 802.11ac NIC8
[ 118.767219] usb 2-1max speed: Manufacturer: Realtek500000 Hz (500 KHz)
[ 118TX | 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 | ......@.…▒..................▒.767235] usb 2-1: SerialNumber: 123456
[ 119RX | 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 | ......@.…▒...500530] usbcore: registered new interface driver rtl8821cu...............▒.|}</ol><span id="pin-i2c-test"></span>
[ 119.525498] rtl8821cu 2-1:1.0 wlx1cbfced9d260: renamed from wlan0=== 40pin I2C Test ===
<ol start="4" style="list-style-type: decimal;"><li>Then you can see # From the WiFi device node through table below, the '''sudo ifconfig''' command. Please refer to the [[\l|'''WiFi connection test a section''']] I2C available for WIFI connection Orange Pi 3B is I2C2, I2C3, and testing methodsI2C4 a total of three groups of I2C bus. I won't go into details her</li></ol>
orangepi@orangepi:~$ '''sudo ifconfig wlx1cbfced9d260''':[[File:pi3b-img266-1.png]]
wlx1cbfced9d260: flags:{| class="wikitable" style=4099&lt"background-color:#ffffdc;UP,BROADCAST,MULTICAST&gtwidth:800px; mtu 1500" |-| <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>|}
ether 1c<ol start="2" style="list-style-type:bfdecimal;"><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. The detailed steps are as follows:ce</p><ol style="list-style-type:d9lower-alpha;"><li><p>First run '''orangepi-config''', normal users remember to add '''sudo''' permission</p>{| class="wikitable" style="width:d2800px;" |-| <p>orangepi@orangepi:60 txqueuelen 1000 (Ethernet)~$ '''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-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 I2C configuration you want to open</p><p>[[File:pi3b-3-2.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>
RX packets 0 bytes 0 (0.0 B)<ol start="3" style="list-style-type: decimal;"><li>After starting the Linux system, first confirm that the i2c device node exists under/dev</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~# '''ls /dev/i2c-*'''
RX errors 0 dropped 0 overruns 0 frame /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="4" style="list-style-type: decimal;"><li>Then connect a i2c device on the i2c pin of the 40Pin connector</li>
TX packets 0 bytes 0 (0{| 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.0 B) 6 pin|Corresponding to No. 6 pinTX errors 0 dropped 0 overruns 0 carrier 0 collisions 0|Corresponding to No. 6 pin|}</ol><span idol start="5" style="rtl8821culist-style-testtype: 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</spanli>{| class="wikitable" style=== RTL8821CU test ===="width:800px;" |-| orangepi@orangepi:~$ sudo i2cdetect -y 2 #i2c2 command
orangepi@orangepi:~$ sudo i2cdetect -y 3 # First insert the rtl8821cu wireless network card module into the USB interface of the development board# Then use the '''lsusb''' i2c3 command to see the device information of the rtl8821cu usb wifi module. Make sure the USB module is not in the Driver CDROM Mode
orangepi@orangepi:~$ '''lsusb sudo i2cdetect -y 4 #i2c4 command| grep &quot;Realtek&quot;'''}
Bus 002 Device 003: ID 0bda:c820 Realtek Semiconductor Corp. 802.11ac NIC<div class="figure">
orangepi@orangepi[[File:~$ '''lsusb | grep &quot;Realtek&quot;'''pi3b-img267.png]]
Bus 002 Device 002: ID 0bda:1a2b Realtek Semiconductor Corp. RTL8188GU 802.11n WLAN Adapter ('''Driver CDROM Mode''')</div></ol><span id="pin-uart-test"></span>
'''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: '''=== 40pin UART test ===
orangepi@orangepi:~$ '''sudo usb_modeswitch -KW -v 0bda -p 1a2b'''# 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="3" style="list::[[File:pi3b-style-type: decimal;"><li>The Linux system will automatically load the RTL8821CU Bluetooth and WIFI img268-related kernel modules1. You can see that the kernel module below is automatically loaded through the lsmod command</li></ol>png]]
orangepi@orangepi:~$ :{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''lsmodAs 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>|}
Module Size Used <ol start="2" style="list-style-type: decimal;"><li><p>In the linux system, the UART in the 40 pins is closed bydefault, 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:~$ '''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-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>8821cu 1839104 0<ol start="3" style="list-style-type: decimal;">rtk_btusb 61440 0<li>After entering the Linux system, first confirm whether there is a device node corresponding to uart under/dev</li>
{| class="wikitable" style="width:800px;"
|-
|
orangepi@orangepi:~# '''ls /dev/ttyS*'''
 
/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>You can see Then start testing the loading information uart interface, first use the rx and tx of the rtl8821cu module through the dmesg commanduart interface to be tested by DuPont</li></ol>
orangepi@orangepi{| class="wikitable" style="width:~$ '''dmesg'''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 22 pin|}
[[File:pi3b-img269-1.png]]</ol><ol start="5" style="list-style-type: decimal;"><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: lower-alpha;"><li>Test UART3</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo gpio serial /dev/ttyS3'''
[ 57.083693sudo] usb 2-1password for orangepi: new high-speed USB device number 2 using ehci-platform#Enter the password here.
[ 57.231888] usb 2-1: New USB device found, idVendor=0bda, idProduct=1a2b, bcdDevice= 2.00
[ 57.231916] usb 2-1Out: New USB device strings0: Mfr=1, Product=2, SerialNumber=-&gt; 0
[ 57.231937] usb 2Out: 1: -&gt; 1: Product: DISK
[ 57.231956] usb Out: 2: -1: Manufacturer: Realtek&gt; 2
[ 57.242594] usb-storage 2-1Out:1.03: USB Mass Storage device detected-&gt; 3
[ 57.245674] scsi host0Out: 4: usb-storage 2-1:1.0&gt; 4
[ 58.069172] usb Out: 5: -&gt; 5^C|}</ol><ol start="2" style="list-1style-type: USB disconnect, device number 2lower-alpha;"><li>Test UART7</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo gpio serial /dev/ttyS7'''
[ 58.440025sudo] usb 2-1password for orangepi: new high-speed USB device number 3 using ehci-platform#Enter the password here.
[ 58.587819] usb 2-1: New USB device found, idVendor=0bda, idProduct=c820, bcdDevice= 2.00
[ 58.587827] usb 2-1Out: New USB device strings0: Mfr=1, Product=2, SerialNumber=3-&gt; 0
[ 58.587833] usb 2Out: 1: -&gt; 1: Product: 802.11ac NIC
[ 58.587838] usb Out: 2: -1: Manufacturer: Realtek&gt; 2
[ 58.587844] usb 2-1Out: SerialNumber3: 123456-&gt; 3
[ 58.610463] rtk_btusbOut: 4: Realtek Bluetooth USB driver ver 3.1.6d45ddf.20220519-142432&gt; 4
[ 58.610656] usbcoreOut: registered new interface driver rtk_btusb5: -&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/ttyS9'''
[ 58.634631sudo] Bluetoothpassword for orangepi: hci0: RTL: examining hci_ver=08 hci_rev=000c lmp_ver=08 lmp_subver=8821#Enter the password here.
[ 58.636729] Bluetooth: hci0: RTL: rom_version status=0 version=1
[ 58.636740] BluetoothOut: hci00: RTL: loading rtl_bt/rtl8821c_fw.bin-&gt; 0
[ 58.664190] BluetoothOut: hci01: RTL: loading rtl_bt/rtl8821c_config.bin-&gt; 1
[ 58.664746] BluetoothOut: hci02: RTL: cfg_sz 10, total sz 31990-&gt; 2
[ 59.122471] BluetoothOut: hci03: RTL: fw version 0x829a7644-&gt; 3
[ 59.265513] usbcoreOut: registered new interface driver rtl8821cu4: -&gt; 4
[ 59.280119] rtl8821cu 2-1Out:1.2 wlx90de805218255: renamed from wlan0-&gt; 5^C|}</ol></li></ol><span id="pwm-test-method"></span>
<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 [[\l|'''WiFi connection = PWM test''']] a section for WIFI connection and testing methods.</li></ol>method ===
orangepi@orangepi:~$ '''sudo ifconfig wlx90de80521825'''# From the table below, the pwm11 available for Orange Pi 3B
wlx90de80521825: flags=4099&lt;UP,BROADCAST,MULTICAST&gt; mtu 1500:[[File:pi3b-img270-1.png]]
ether 00<ol start="2" style="list-style-type:13decimal;"><li><p>In the linux system, the PWM in the 40 pin is turned off by default, and it needs to be turned on manually before it can be used. The detailed steps are as follows:ef</p><ol style="list-style-type:f4lower-alpha;"><li><p>First run '''orangepi-config''', normal users remember to add sudo permission</p>{| class="wikitable" style="width:58800px;" |-| <p>orangepi@orangepi:ae txqueuelen 1000 (Ethernet)~$ '''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-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 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-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>
RX packets 0 bytes 0 <ol start="3" style="list-style-type: decimal;"><li>After opening a pwm, there will be an extra pwmchipX in '''/sys/class/pwm/''' (0.0 BX is a specific number), for example, after opening pwm11, check the pwmchipX under '''/sys/class/pwm/''' one becomes two</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''ls /sys/class/pwm/'''
RX errors 0 dropped 0 overruns 0 frame 0pwmchip0 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/ -l''' command, you can see that pwmchip1 is linked to fe6f0030.pwm, so pwm11 corresponds to pwmchip as pwmchip1</p></li>
TX packets 0 bytes 0 (0.0 B)<div class="figure">
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0[[File:pi3b-img271.png]]
</div></ol>
<ol start="6" style="list-style-type: decimal;">
<li>Then you can see use the USB Bluetooth device through following command to make pwm11 output a 50Hz square wave (please switch to the root user first, and then execute the following command)</li>{| class="wikitable" style="width:800px;" |-| root@orangepi:~# '''hciconfigecho 0 &gt; /sys/class/pwm/pwmchip1/export''' command</li></ol>
orangepiroot@orangepi:~$ # '''sudo apt-get update &amp;echo 20000000 &ampgt; sudo apt-get install -y bluez/sys/class/pwm/pwmchip1/pwm0/period'''
orangepiroot@orangepi:~$ # '''hciconfigecho 1000000 &gt; /sys/class/pwm/pwmchip1/pwm0/duty_cycle'''
hci0: Type: Primary Busroot@orangepi: ~# '''USBecho 1 &gt; /sys/class/pwm/pwmchip1/pwm0/enable'''|}
BD Address[[File: 00:13:EF:F4:58:AE ACL MTU: 820:8 SCO MTU: 255:16pi3b-img272.png]]
DOWN<li>The test method of pwm11 demonstrated above is similar to other pwm test methods.</li></ol><span id="how-to-install-and-use-wiringop-python"></span>
RX bytes:1252 acl:0 sco:0 events:125 errors:0== How to install and use wiringOP-Python ==
TX bytes{| class="wikitable" style="background-color:23307 acl#ffffdc;width:0 sco:0 commands:125 errors:0800px;" |-| <big>'''wiringOP-Python is the Python language version of wiringOP, which is used to operate the hardware resources of the development board, such as GPIO, I2C, SPI and UART, in the Python program.'''
<ol start="7" style="list-style-type: decimal;">
<li>Bluetooth icons can also be seen on the desktop. At this time, Bluetooth has not been opened, so a red '''x''' will be displayed</li></ol>
[[File:pi3b-img243'''In addition, please note that all the following commands are operated under the root user.png'''</big>|576x157px]]}
<ol startspan id="8" style="listwiringop-python-styleinstallation-type: decimal;method"><li>Click '''Turn Bluetooth On''' to open Bluetooth</li></olspan>=== wiringOP-Python installation method ===
[[File:pi3b-img244.png|576x262px]]# First install the dependency package
<ol start::{| class="9wikitable" style="list-style-typewidth: decimal800px;"><li>The display after opening Bluetooth is shown below</li></ol>|-| [[Fileroot@orangepi:pi3b~# '''sudo apt-img245.png|576x164px]]get update'''
<ol start="10" style="list-style-typeroot@orangepi: decimal;"><li>Please refer to the [[\l|~# '''Bluetooth use chaptersudo apt-get -y install git swig python3-dev python3-setuptools''']] for the Bluetooth test method. I won't go into details her</li></ol>|}
<span idol start="usb2" style="list-camerastyle-testtype: decimal;"><li>Then use the following command to download the source code of wiringOP-Python</spanli>{| class="wikitable" style== USB Camera Test ==="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 network problems.'''
# First, you need to prepare a USB camera that supports the UVC protocol in the figure below, and then insert the USB camera into the USB interface of the Orange PI development board
[[File'''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-Python'''</big>|}{| class="wikitable" style="width:pi3b800px;" |-img13| root@orangepi:~# '''git clone --recursive https://github.png|259x150px]]com/orangepi-xunlong/wiringOP-Python -b next'''
<ol start="2" style="list-style-typeroot@orangepi: decimal;"><li>You can see that the USB camera~# ''s device node information is/dev/video0 through the v4l2'cd wiringOP-ctl command</li></ol>Python'''
orangepiroot@orangepi:~$ /wiringOP-Python# '''v4l2git submodule update -ctl -init --remote'''|}</ol><ol start="3" style="list-devicesstyle-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:~# '''cd wiringOP-Python'''
Q8 HD Webcamroot@orangepi: Q8 HD Webcam (~/wiringOP-Python# '''usbpython3 generate-bindings.py &gt; bindings.i'''-fc880000.usb-1):
root@orangepi:~/wiringOP-Python# '''sudo python3 setup.py install'''|}</dev/video0ol><ol start="4" style="list-style-type: decimal;"><li>Then enter the following command. If there is a help information output, it means that Wiringop-Python is successfully installed. Press the '''q'''key to exit the interface of the help information</li>
{| class="wikitable" style="width:800px;" |-| root@orangepi:~/dev/video1wiringOP-Python# '''python3 -c &quot;import wiringpi; help(wiringpi)&quot;'''
/dev/media0Help on module wiringpi:
'''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.'''NAME
<ol start="3" style="list-style-type: decimal;"><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>wiringpi
[[File:pi3b-img246.png|474x302px]]
The interface after cheese opens the USB camera is shown in the figure below: DESCRIPTION
[[File:pi3b-img247# This file was automatically generated by SWIG (http://www.swig.org).png|473x277px]]
<ol start=": # Version 4" style="list-style-type: decimal;"><li><p>How to test the USB camera using fswebcam</p><ol style="list-style-type: lower-alpha;"><li>Install fswebcam</li></ol></li></ol>.0.2
orangepi@orangepi:~$ '''sudo''' '''apt update'''#
orangepi@orangepi:~$ '''sudo apt# Do not make changes to this file unless you know what you are doing-get install -y fswebcam'''modify
: # the SWIG interface file instead.|}</ol><ol start="25" style="list-style-type: lower-alphadecimal;"><li><p>After installing fswebcam, you can use Test whether the wiringOP-Python is installed successfully under the following Python command to take picturesline is shown below:</p>
<ol style="list-style-type: lower-alpha;">
<li><p>-d The option is used First use the Python3 command to specify enter the device node command line mode of the USB camera</p>Python3</li><li><p>{| class="wikitable" style="width:800px;" |--no-banner Used to remove the watermark of photos| root@orangepi:~# '''python3'''|}</p></liol><li><p>ol start="2" style="list-style-type: lower-r The option is used to specify the resolution of the photo</p></lialpha;"><li><p>-S The option is set to Then import the number Python module of frames before skipping</p>WiringPi</li><li><p>./image.jpg The name and path for setting the generated photos</p></li></ol>{| class="wikitable" style="width:800px;" </li></ol>|-| orangepi@orangepi:~$ '&gt;&gt;&gt; ''sudo''' '''fswebcam -d /dev/video0 \import wiringpi;'''|}'''--no-banner -r 1280x720 -S 5 .</image.jpg'''ol>
<ol start="3" style="list-style-type: lower-alpha;">
<li>In Enter the service version following command to view the help information of the Linux systemwiringOP-Python, you can use and press the scp command '''q''' key to pass exit the picture to the Ubuntu PC to watch after taking interface of the photohelp information</li></ol>{| class="wikitable" style="width:800px;" |-| &gt;&gt;&gt; '''help(wiringpi)'''
orangepi@orangepiHelp on module wiringpi:~$ '''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 actual situation)'''
<ol start="4" style="list-style-type: lower-alpha;">
<li>In the desktop version of the Linux system, you can directly view the shot pictures through the HDMI display</li></ol>
<span id="audio-test"></span>== Audio Test ==NAME
<span id="test-audio-methods-in-the-desktop-system"></span>=== Test audio methods in the desktop system ===:wiringpi
# First open the file manager
[[File:pi3b-img248.png|357x176px]]DESCRIPTION
<ol start="2" style="list-style-type: decimal;"><li>Then find the following # This file was automatically generated by SWIG (if there is no audio file in the system, you can upload a audio file to the system by yourself)<http:/li></ol>www.swig.org).
<div class="figure">: # Version 4.0.2
[[File:pi3b-img249.png|236x186px|图片10]]#
</div><ol start="3" style="list-style-type: decimal;"><li>Then select the audio.wav # Do not make changes to this file, right unless you know what you are doing--click and select VLC to open it to start playing</li></ol>modify
[[File:pi3b-img250# the SWIG interface file instead.png|288x234px]]
<ol start="4" style="list-style-type: decimal;">
<li><p>Methods to switch different audio equipment such as HDMI playback and headset playback</p>
<ol style="list-style-type: lower-alpha;">
<li>First open the volume control interface</li></ol>
</li></ol>
[[File:pi3b-img251.png|308x169px]]CLASSES
<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 '''Playback'''builtins. As shown in the figure below, which audio equipment you need to play here can be set.</li></ol>object
[[File:pi3b-img252.png|576x282px]]:GPIO
<span id="how-to-play-audio-with-commands"></span>=== How to play audio with commands ===::I2C
<span id="headphone-interface-play-audio-test"></span>==== Headphone interface play audio test ====::Serial
# First insert the headset into the headphone jack of the development board::nes
[[File:pi3b-img253.png|395x112px]]
<ol start="2" style="list-style-type: decimal;"><li>Then you can check the sound card device supported by the Linux system through the '''aplay -l''' commandclass GPIO(builtins. From the output below, it can be seen that '''card 0''' is the sound card device with RK809, which is the sound card device of the headset</li></ol>object)
orangepi@orangepi:~$ '''aplay -l'''| GPIO(pinmode=0)
**** List of PLAYBACK Hardware Devices ****:|
'''card 0: rockchiprk809 [rockchip-rk809], device 0: dailink-multicodecs rk817-hifi-0 [dailink-multicodecs rk817-hifi-0]'''
'''Subdevices: 0&gt;&gt;&gt;|}</ol></li></ol><span id="pin-gpio-port-test-1'''"></span>
'''Subdevice #0: subdevice #0'''=== 40pin GPIO port test ===
card 1{| class="wikitable" style="background-color: rockchiphdmi [rockchip,hdmi], device 0#ffffdc;width: fe400000.i2s800px;" |-i2s| <big>'''wiringOP-hifi i2sPython is the same as wiringOP, you can also determine which GPIO pin to operate by specifying the wPi number, because there is no command to check the wPi number in wiringOP-hifi-0 [fe400000Python, so you can only check the board wPi number and physical Correspondence between pins.i2s-i2s-hifi i2s-hifi-0]'''</big>
Subdevices: 0/1<div class="figure">
Subdevice #0[[File: subdevice #0pi3b-img258.png|center]]
Subdevice </div>|}#0: subdevice #0Below the No. 7 pin — corresponding to GPIO4_a4 -corresponding WPI serial number 2 -to demonstrate how to set the height of the GPIO port
<ol start="3" style="list::[[File:pi3b-style-type: decimal;"><li>Then use the '''aplay''' command to play the audio file that comes with the systemimg259. If the headset can hear the sound, it means that the hardware can be used normally</li></ol>png]]
orangepi<ol start="2" style="list-style-type: decimal;"><li><p>The steps of the command test are shown below directly: </p><ol style="list-style-type: lower-alpha;"><li>First set the GPIO port to the output mode. The first parameter of the '''pinMode''' function is the serial number of the wpi corresponding to the pin, and the second parameter is the GPIO mode</li>{| class="wikitable" style="width:800px;" |-| root@orangepi:~$ /wiringOP-Python# '''aplay python3 -D hw:0,0 /usr/share/sounds/alsa/audio.wavc &quot;import wiringpi; \'''
Playing WAVE 'audio''from wiringpi import GPIO; wiringpi.wavwiringPiSetup() ; \''' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
'''wiringpi.pinMode(<span idstyle="hdmicolor:#FF0000">2, GPIO.OUTPUT</span>) ; &quot;'''|}</ol><ol start="2" style="list-audiostyle-playtype: lower-testalpha;"><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 successful</spanli>{| class="wikitable" style=== HDMI Audio Play Test ===="width:800px;" |-| root@orangepi:~/wiringOP-Python# '''python3 -c &quot;import wiringpi; \'''
# First use the HDMI to HDMI cable to connect the Orange PI development board to the TV (other HDMI displays need to ensure that the audio can be played)# Then check the sound card serial number of HDMI. From the output below, you can know that the HDMI sound card is '''card 1from wiringpi import GPIO; wiringpi.wiringPiSetup() ;\'''
orangepi'''wiringpi.digitalWrite(<span style="color:#FF0000">2, GPIO.LOW</span>)&quot;'''|}</ol><ol start="3" 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>{| class="wikitable" style="width:800px;" |-| root@orangepi:~$ /wiringOP-Python# '''aplay python3 -lc &quot;import wiringpi; \'''
**** List of PLAYBACK Hardware Devices **** card 0: rockchiprk809 [rockchip-rk809], device 0: dailink-multicodecs rk817-hifi-0 [dailink-multicodecs rk817-hifi-0] Subdevices: 0/1 Subdevice #0: subdevice #0 '''card 1: rockchiphdmi [rockchip,hdmi], device 0: fe400000from wiringpi import GPIO; wiringpi.i2s-i2s-hifi i2s-hifi-0 [fe400000.i2s-i2s-hifi i2s-hifi-0]''' '''Subdevices: 0/1''' '''Subdevice #0: subdevice #0''' '''Subdevice #0: subdevice #0wiringPiSetup() ;\'''
'''wiringpi.digitalWrite(<span style="color:#FF0000">2, GPIO.HIGH</span>)&quot;'''
|}
</ol>
</li></ol>
<ol start="3" style="list-style-type: decimal;">
<li>Then <p>The steps of testing in the command line of Python3 are shown below: </p><ol style="list-style-type: lower-alpha;"><li>First use the '''aplay''' Python3 command to play enter 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 normallycommand line mode of Python3</li></ol>{| class="wikitable" style="width:800px;" |-| orangepiroot@orangepi:~$ # '''aplay -D hw:1,0 /usr/share/sounds/alsa/audio.wavpython3'''|}</ol><span idol start="use2" style="list-thestyle-commandtype: lower-to-test-the-recording-methodalpha;"><li>Then import the Python module of WiringPi</spanli>{| class="wikitable" style== Use the command to test the recording method ==="width:800px;" |-| &gt;&gt;&gt; '''import wiringpi'''
# Orange Pi 3B development board does not have MICs, and can only record audio through headphones with MIC &gt;&gt;&gt; '''from wiringpi import GPIO'''|}</ol><ol start="3" style="list-style-type: lower-alpha;"><li>Then set the GPIO port as the output mode. The first parameter of the '''pinMode''' function. After inserting is the headset with serial number of the MIC function into wpi corresponding to the development boardpin, and the command below will record a piece of audio through second parameter is the headsetGPIO mode.</li>{| class="wikitable" style="width:800px;" |-| &gt;&gt;&gt; '''wiringpi.wiringPiSetup()'''
orangepi@orangepi:~$ '''amixer -c 0 cset name='Capture MIC Path' 'Main Mic''''
orangepi@orangepi&gt;&gt;&gt; '''wiringpi.pinMode(<span style="color:~$ #FF0000">2, GPIO.OUTPUT</span>)'''arecord |}</ol><ol start="4" style="list-D hwstyle-type:0lower-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,0 it means that the low -d 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-f cd 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>{| class="wikitable" style="width:800px;" |-t wav | &gt;&gt;&gt; '''wiringpi.digitalWrite(2, <span style="color:#FF0000">GPIO.HIGH</span>)'''|}</tmpol></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 '''blink.py''' testprogram in Examples, the voltage of the '''blink.wavpy''' test program will set up the voltage of all GPIO ports in the development board 40 PIN</li>{| class="wikitable" style="width:800px;" |-| root@orangepi:~/wiringOP-Python# '''cd examples'''
<span id="temperatureroot@orangepi:~/wiringOP-sensor"><Python/span>== Temperature Sensor ==examples# '''ls blink.py'''
# The command of the system temperature sensor is: '''blink.py'''
orangepiroot@orangepi:~$ /wiringOP-Python/examples'''sensors# python3 blink.py'''|}</ol><span id="pin-spi-test-1"></span>
soc_thermal-virtual-0=== 40pin SPI test ===
Adapter: Virtual device# From the schematic diagram of the 40pin interface, the SPI available for Orange Pi 3B is spi3
temp1: +41.9°C (crit = +115:[[File:pi3b-img264.0°C)png]]
gpu_thermal::{| class="wikitable" style="background-virtualcolor:#ffffdc;width:800px;" |-0| <big>'''In the Linux system, the spi3 in 40pin is closed by default, and it needs to be opened manually to use.'''
Adapter: Virtual device
temp1: +43'''Add the configuration of the red font part below to the /boot/orangepiEnv.8°Ctxt, and then restart the Linux system to open the spi4.'''</big>
<ol start="2" style="list-style-type: decimal;">
<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 &quot;Temperature:&quot;'''</p>
<p>Temperature: '''40 Celsius'''</p></li></ol>
<span id="pin-interface-pin-explanation"><orangepi@orangepi:~$ '''sudo vim /span>== 40 Pin interface pin explanation ==boot/orangepiEnv.txt'''
'''<span style="color:# Orange Pi 3B Development board 40 Pin interface pins, please refer to the figure belowFF0000">overlays=spi3-m0-cs0-spidev</span>'''|}
<div ol start="2" style="list-style-type: decimal;"><li>First check whether there is a '''spidev3.0''' device node in the Linux system. If it exists, it means that the SPI3 has been set and can be used directly</li>{| class="figurewikitable" style="width:800px;">|-| orangepi@orangepi:~$ '''ls /dev/spidev3.0'''
[[File:pi3b-img254/dev/spidev3.png|400x124px0|C:\Users\orangepi\Desktop\用户手册插图\pi 3b\Orange-Pi-3B-Development-board-40-Pin(1).jpgOrange-Pi-3B-Development-board-40-Pin(1)]]}</divol><ol start="23" style="list-style-type: decimal;"><li><p>The You can then use the spi back function of under the Orange Pi 3B development board 40 PIN interface pins is shown '''spidev_test.py''' program in Examples. The '''spidev_test.py''' program needs to specify the table below.following two parameters: </p>
<ol style="list-style-type: lower-alpha;">
<li>Below is a complete pins <p>'''--channel''': Specify the channel number of SPI</p></li><li><p>'''--port''': Specify the port number of 40pinSPI</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></olli>{| class="wikitable" style="width:800px;" |-| root@orangepi:~/wiringOP-Python# '''cd examples'''
[[Fileroot@orangepi:pi3b~/wiringOP-img255Python/examples# '''python3 spidev_test.png|575x160px]]py \'''
<ol start="2" style="list'''-style-type: lowerchannel 3 -alpha;"><li>The following form is a picture on the left half of the full table above, which can be seen clearly</li></ol>-port 0'''
[[Filespi mode:pi3b-img256.png|478x267px]]0x0
<ol start="3" style="list-style-typemax speed: lower-alpha;"><li>The following form is a picture on the right half of the top table above, which can be seen clearly</li></ol>500000 Hz (500 KHz)
[[File:pi3b-img257Opening device /dev/spidev3.png|479x266px]]0
TX | FF FF FF FF FF FF '''<ol start="3" span style="list-style-typecolor: decimal;#FF0000">40 00 00 00 00 95<li/span>There are a total of '''28''' GPIO ports in the 40pin interfaceFF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D |......@...... The voltage of all GPIO ports is '''3.3v'''</li></ol>…|
RX | FF FF FF FF FF FF '''<span idstyle="how-to-install-wiringopcolor:#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= How to install Wiringop "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# '''cd examples'''
root@orangepi:~/wiringOP-Python/examples# '''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 directlypython3 spidev_test.py \'''
'''The storage path of the compiled Wiringop's Deb is wrapped in Orangepi-Build: -channel 3 --port 0'''
'''orangepi-build/external/cache/debs/arm64/wiringpi_x.xx.deb'''spi mode: 0x0
'''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.'''max speed: 500000 Hz (500 KHz)
<div class="figure">Opening device /dev/spidev3.0
[[FileTX | FF FF FF FF FF FF '''<span style="color:pi3b-img258#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 |.png|575x355px.....@.......…|66AC(IBG%N8L@Y7(1BZPS`N]]
RX | FF FF FF FF FF FF '''<span style="color:#FF0000">40 00 00 00 00 95</divspan>'''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 resistanceFF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D |......@.... It is impossible to use functions like hardware PWM.'''..…||}</ol><span id="pin-i2c-test-1"></span>
# Download the code of Wiringop=== 40pin I2C test ===
orangepi@orangepi<ol start="1" style="list-style-type:~$ '''sudo apt update'''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>
orangepi@orangepi[[File:~$ '''sudo apt install pi3b-y git'''img266.png]]
orangepi@orangepi{| class="wikitable" style="background-color:~$ #ffffdc;width:800px;" |-| <big>'''git clone https://githubIt 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.comThe two cannot be opened at the same time'''</orangepibig>|}{| class="wikitable" style="background-xunlong/wiringOPcolor:#ffffdc;width:800px;" |-| <big>'''In the Linux system, the I2C in 40Pin is closed by default, and it needs to be opened manually to use.git -b next'''
'''Note that Orange Pi 3B needs to download the code of the wiringOP next branch, please don't miss the parameter of -b next.'''
'''If there is a problem with Add the configuration of the red font part below to the download code from GitHub/boot/orangepiEnv.txt, you can use and then restart the wiringOP source code that comes with Linux system to open the Linux image directlyI2C2, i2C3, and I2C4 at the storage location is:/usr/src/wiringOPsame time. If you only need to open one, then fill in one.'''</big>
<ol start="2" style="list-style-type: decimal;">
<li>Compile and install wiringOP</li></ol>
orangepi@orangepi:~$ '''cd wiringOPsudo vim /boot/orangepiEnv.txt'''
orangepi@orangepi'''<span style="color:~#FF0000">overlays=i2c2-m1 i2c3-m0 i2c4-m0</wiringOP$ span>'''sudo |}</ol><ol start="2" style="list-style-type: decimal;"><li>After starting the Linux system, first confirm the I2C device node under/dev.</build clean'''li>
{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~/wiringOP$ # '''sudo .ls /dev/buildi2c-*'''
/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>Test Then connect a I2C device on the output I2C pin of the GPIO Readall command as follows40PIN connector. Here is an example of the DS1307 RTC module.</li></ol>
<div {| class="figurewikitable" style="width:800px;text-align: center;">|-||i2c2-m1[[File:pi3b|i2c3-img258.pngm0|575x355pxi2c4-m0|66AC(IBG%N8L@Y7(1BZPS`N]]-| Sda Pin</div>|Corresponding to No. 3 pin<span id="|Corresponding to No. 27 pin|Corresponding to No. 19 pin|-interface-gpio-i2c-uart-spi-and-pwm-test"></span>== 40Pin interface GPIO, I2C, UART, SPI, and PWM test ==| Sck Pin|Corresponding to No. 5 pin'''Note that if you need |Corresponding to set overlays No. 28 pin|Corresponding to open multiple configurations at the same time, please use a space No. 23 pin|-| Vcc Pin|Corresponding to write in one line like the following spaceNo.''' 1 pin|Corresponding to No. 1 pinorangepi@orangepi:~$ '''sudo vim /boot/orangepiEnv|Corresponding to No.txt'''1 pin|-| Gnd Pin'''overlays=spi3-m0-cs0-spidev i2c2-m1 i2c3-m0 uart7-m2 uart9-m2 pwm11-m1'''|Corresponding to No. 6 pin|Corresponding to No. 6 pin<span id="|Corresponding to No. 6 pin-gpio-port-test"></span>=== 40pin GPIO port test ===|}
[[File:pi3b-img273.png]]</ol><ol start="4" style="list-style-type: decimal;"><li>Then use the '''The Linux system released by Orange Pi has a pre i2cdetect -installed blink_all_gpio program. This program will set up all 28 GPIO ports in 40pin to switch high and low levels.y'''command If the address of the connected I2C device can be detected, it means that the I2C can be used normally</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ sudo i2cdetect -y 2 #i2c2 command
'''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 orangepi@orangepi:~$ sudo i2cdetect -y 3.3v. Use this program to test whether the GPIO port can work normally'''#i2c3 command
'''The method of running blink_all_gpio program is shown beloworangepi@orangepi: '''~$ sudo i2cdetect -y 4 #i2c4 command|}
orangepi@orangepi3b:~$ '''sudo blink_all_gpio''' #Remember to add Sudo permissions<div class="figure">
[sudo[File:pi3b-img274.png]] password for orangepi: #You need to enter a password here
# A total </div></ol><ol start="5" style="list-style-type: decimal;"><li>You can then run the time of 28 GPIO ports can be used the ds '''ds1307.py''' test program in '''examples''' to read the development board 40pin. Below is No. 7 pins RTC time</li>{| class="wikitable" style="width:800px;" |-corresponding GPIO as GPIO4_A4 | root@orangepi:~/wiringOP-corresponding WPI serial number 2 -as an example how to set the height of the GPIO portPython# '''cd examples'''
[[Fileroot@orangepi:pi3b~/wiringOP-img259Python/examples# '''python3 ds1307.png|576x120px]]py --device \'''
<ol start="2" style="list-style-type: decimal'''&quot;"><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><dev/ol>i2c-4&quot;'''
root@orangepiThu 2023-01-05 14:~/wiringOP# '''gpio mode 2 out'''57:55
<ol start="3" style="listThu 2023-style01-type05 14: 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>57:56
root@orangepiThu 2023-01-05 14:~/wiringOP# '''gpio write 2 0'''57:57
Using GPIO Readall, you can see the value of the No. 7 pin (v) to 0^C
[[File:pi3bexit|}</ol><span id="pins-img260uart-test.png|576x120px]]"></span>
<ol start="4" style="list-style-type: decimal;"><li>Then set the GPIO port output high level. After setting, you can use the voltage of the voltage of the permanent meter to measure the voltage. If it is 3.3V, it means that the high-electricity level is successful</li></ol>= 40pin's UART test ===
root@orangepi:~/wiringOP# '''gpio write 2 1'''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
Using GPIO Readall, you can see the value of No::[[File:pi3b-img268. 7 pin (v) into 1png]]
[[File:pi3b:{| class="wikitable" style="width:800px;background-img261.pngcolor:#ffffdc;" |-| <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>|576x118px]]}
<ol start::{| class="5wikitable" style="listwidth:800px;background-style-typecolor: decimal#ffffdc;">|-| <libig>The setting method of other pins is similar. Just modify '''In the serial number of Linux system, the wPi sequence number as the corresponding serial number corresponding UART in 40pin is closed by default, and it needs to be opened manually to the pin</li></ol>use.'''
<span id="pin-gpio-port--down-'''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-downward-pull--down-resistance-setting-method">UART9 at the same time. If you only need to open one, you can fill in one'''</spanbig>=== 40Pin GPIO Port -down and downward pull -down resistance setting method ===
orangepi@orangepi:~$ '''Note that the 4 GPIO pins below Orange Pi 3B are invalid because there are 3sudo vim /boot/orangepiEnv.3V on the outside, so setting drop -down is invalid. Other pins can be set normallytxt'''
[[File'''<span style="color:pi3b#FF0000">overlays=uart3-img262.png|575x353px]] # Below the No. 11 pin—corresponding to GPIO 3_C6m0 uart7-corresponding WPI serial number 5—to demonstrate how to set up and down pullm2 uart9-down resistance of the GPIO portm2</span>'''[[File:pi3b-img263.png|576x147px]]}
<ol start="2" style="list-style-type: decimal;">
<li>First of allAfter entering the Linux system, you need to set the GPIO port as the input mode. The third parameter needs to enter the serial number of the wpi first confirm whether there is a device node corresponding to the pinsUART under/dev</li></ol>
root{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~/wiringOP# '''gpio mode 5 inls /dev/ttyS*'''
/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>After Then start testing the setting is set to input modeUART interface, execute and first use the RX and TX of the following command UART interface to set the GPIO port as the pull -down modebe tested by DuPont</li></ol> root@orangepi:~/wiringOP# '''gpio mode 5 up'''
{| 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>Then enter <p>Use the following command '''serialTest.py''' program in Examples to read test the level loop function of the GPIO serial port. If you can see the level is 1printing below, it means that the drawing mode serial communication is successfulnormal</p><ol style="list-style-type: lower-alpha;"><li>Test UART3</olli>{| class="wikitable" style="width:800px;" |-| root@orangepi:~/wiringOP-Python/examples# '''python3 serialTest.py --device \'''
root@orangepi:~/wiringOP# '''gpio read 5&quot;/dev/ttyS3&quot;'''
'''1'''
<ol start="5" style="listOut: 0: -style-type: decimal&gt;"><li>Then execute the following command to set the GPIO port as the drop-down mode</li></ol>0
root@orangepiOut:~/wiringOP# '''gpio mode 5 down'''1: -&gt; 1
<ol start="6" style="listOut: 2: -style-type: decimal&gt;"><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></ol>2
root@orangepiOut:~/wiringOP# '''gpio read 5'''3: -&gt; 3
'''0'''Out: 4:^C
exit|}</ol><span idol start="pin2" style="list-style-spitype: lower-testalpha;"><li>Test UART7</spanli>{| class="wikitable" style== 40pin SPI Test ==="width:800px;" |-| root@orangepi:~/wiringOP-Python/examples# From the schematic diagram of the 40PIN interface, the SPI available for Orange Pi 3B is spi3'''python3 serialTest.py --device \'''
[[File:pi3b-img264.png|577x193px]]'''&quot;/dev/ttyS7&quot;'''
'''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 spi3.'''Out: 0: -&gt; 0
orangepi@orangepiOut:~$ '''sudo vim /boot/orangepiEnv.txt'''1: -&gt; 1
'''overlays=spi3Out: 2: -m0-cs0-spidev'''&gt; 2
<ol start="2" style="list-styleOut: 3: -type: decimal&gt;"><li>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. You can use it directly</li></ol>3
orangepi@orangepiOut:~$ '''ls /dev/spidev3.0'''4:^C
exit|}</devol><ol start="3" style="list-style-type: lower-alpha;"><li>Test UART9</spidev3li>{| class="wikitable" style="width:800px;" |-| root@orangepi:~/wiringOP-Python/examples# '''python3 serialTest.0py --device \'''
<ol start="3" style="list-style-type: decimal'''&quot;"><li>Do not shorten the two pins of the SPI3 MOSI and MISO, and run the output result of the spidev_test as shown below. You can see that the data of TX and RX is inconsistent</li><dev/ol>ttyS9&quot;'''
orangepi@orangepi:~$ '''sudo spidev_test -v -D /dev/spidev3.0'''
spi modeOut: 0x00: -&gt; 0
bits per wordOut: 81: -&gt; 1
max speedOut: 500000 Hz (500 KHz)2: -&gt; 2
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: 3: -&gt; 3
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: 4:^C
exit|}</ol start="4" style="list-style-type: decimal;"></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.</liol><span id="hardware-watch-the-door-dog-test"></olspan>
[[File:pi3b-img265.png|577x83px]]== Hardware watch the door dog test ==
orangepi@orangepi:~$ '''sudo spidev_test The WatchDog_test program is pre -v -D /dev/spidev3installed in the Linux system released by Orange PI, which can be tested directly.0'''
spi modeThe method of running the WatchDog_test program is shown below: 0x0
bits per word<ol style="list-style-type: 8lower-alpha;"><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>
max speed{| class="wikitable" style="width: 500000 Hz (500 KHz)800px;" |-| orangepi@orangepi:~$ '''sudo watchdog_test 10'''
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 | ......@.…▒..................▒.open success
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 | ......@.…▒..................▒.options is 33152,identity is sunxi-wdt
<span id="pin-i2c-test"></span>=== 40pin I2C Test ===put_usr return,if 0,success:0
# From the table below, the I2C available for Orange Pi 3B The old reset time is I2C2, I2C3, and I2C4 a total of three groups of I2C bus.: 16
[[Filereturn ENOTTY,if -1,success:pi3b-img266.png|576x160px]]0
'''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'''return ENOTTY,if -1,success:0
'''In the Linux systemput_user return, the i2c in 40Pin is closed by defaultif 0, 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_usr return, and then restart the Linux system to open the i2c2if 0, i2c3, and i2c4 at the same time. If you only need to open one, then fill in one.'''success:0
orangepi@orangepi:~$ '''sudo vim /boot/orangepiEnv.txt'''keep alive
'''overlays=i2c2-m1 i2c3-m0 i2c4-m0'''keep alive
keep alive|}</ol start><span id="2" style="listcheck-the-serial-number-of-the-stylerk3566-type: decimal;chip"><li>After starting the Linux system, first confirm that the i2c device node exists under/dev</li></olspan>
orangepi@orangepi:~# '''ls /dev/i2c-*'''== Check the serial number of the RK3566 chip ==
/dev/i2c-0 '''/dev/i2c-2''' '''/dev/i2c-3''' '''/dev/i2c-4''' /dev/i2c-6The 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 start{| class="3wikitable" style="list-style-typewidth: decimal800px;"><li>Then connect a i2c device on the i2c pin of the 40Pin connector</li></ol>|-| orangepi@orangepi:~$ '''cat_serial.sh'''
{| class="wikitable"|-||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 pinSerial : '''8fa18eaf489041f0'''
|}
<ol startspan id="4" style="listthe-method-of-downloading-and-styleinstalling-type: decimal;"><li>Then use the '''i2cdetect -y''' command if the address balenaetcher-version-of the connected I2C device can be detected, it means that the I2C can be used normally</li-arm64"></olspan>
orangepi@orangepi:~$ sudo i2cdetect -y 2 #i2c2 command== The method of downloading and installing the balenaEtcher version of arm64 ==
orangepi@orangepi<ol style="list-style-type: decimal;"><li><p>The download address of Balenaetcher ARM64 version is: </p><ol style="list-style-type:~$ sudo i2cdetect lower-y 3 #i2c3 commandalpha;"><li>The download address of the Deb installation package is shown below, and it needs to be installed to use</li>orangepi@orangepi{| class="wikitable" style="width:~$ sudo i2cdetect 800px;" |-y 4 #i2c4 command| '''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="list-style-type: lower-alpha;"><li>The download address of the Appimage version that does not need to be installed is shown below: </li>{| class="wikitable" style="width:800px;" |-| '''https://github.com/Itai-Nelken/BalenaEtcher-arm/releases/download/v1.7.9/balenaEtcher-1.7.9+5945ab1f-arm64.AppImage'''|}
<div class="figure">
[[File:pi3b-img267img275.png|476x179px|UN}~]Q}T_70O%Z%RNO8R@YE]]
</div></ol><span id/li></ol><ol start="2" style="pinlist-uartstyle-testtype: decimal;"><li><p>How to install and use the deb version of Balenaetcher: </spanp><ol style="list-style-type: lower-alpha;"><li>deb version of Balenaetcher installation commands as shown below: </li>{| class="wikitable" style= 40pin UART test ==="width:800px;" |-| orangepi@orangepi:~$ '''sudo apt install -y \'''
# As '''--fix-broken ./balena-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 seen from opened in the table below, the uart available for Orange Pi 3B is uart3, uart7, and uart9. There are three sets of uart busApplication</li>
[[File:pi3b-img268.png|575x160px]]<div class="figure">
'''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'''[[File:pi3b-img89.png]]
'''In the Linux system, the uart in 40pin </div></ol><ol start="3" style="list-style-type: lower-alpha;"><li>The interface after Balenaetcher is closed by default, and it needs to be opened manually to use.'''is shown below: </li>
'''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..'''<div class="figure">
orangepi@orangepi[[File:~$ '''sudo vim /boot/orangepiEnvpi3b-img276.txt'''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$ '''overlays=uart3chmod +x balenaEtcher-m0 uart71.7.9+5945ab1f-m2 uart9-m2arm64.AppImage'''|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li>Then select the AppImage version balenaEtcher right -click the mouse, and then click Execute to open balenaEtcher</li>
[[File:pi3b-img277.png]]</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</devol></lispan id="the-installation-method-of-the-bt-panel-linux-panel"></olspan>
orangepi@orangepi:~# '''ls /dev/ttyS*'''== The installation method of the Bt-Panel Linux panel ==
/dev/ttyS1 {| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <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/dev'''database/'''ttyS3 Java (excerpted from the [https:/dev/ttyS7 www.bt.cn/devnew/ttyS9index.html official website of the Bt-Panel])'''</big>|}
# First of all, the size of the'''/tmp''' space is needed. After setting, you need to '''<ol start="3" span style="list-style-typecolor: decimal;#FF0000"><li>Then start testing the uart interface, first use restart the rx and tx Linux system of the uart interface to be tested by DuPontdevelopment board</li></olspan>''', and the command is shown below:
::{| class="wikitable" style="width:800px;"
|-
|orangepi@orangepi:~$ '''sudo sed -i 's/nosuid/&amp;,size=2G/' /etc/fstab''' orangepi@orangepi:~$ '''sudo reboot'''|uart3} |uart7<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>{|uart9class="wikitable" style="width:800px;"
|-
| Tx pinorangepi@orangepi:~$ '''df -h |Corresponding to the 28 pingrep &quot;/tmp&quot;''' tmpfs &nbsp;&nbsp;&nbsp;&nbsp; 2.0G &nbsp;&nbsp;&nbsp;&nbsp; 12K &nbsp;&nbsp;&nbsp;&nbsp; '''<span style="color:#FF0000">2.0G</span>''' &nbsp;&nbsp;&nbsp;&nbsp; 1% /tmp|Corresponding }</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 16 pinBt-Panel</li>{|Corresponding to the 29 pinclass="wikitable" style="width:800px;"
|-
| Rx Pin|Corresponding to the 27 pin|Corresponding to the 15 pin|Corresponding to the 7 pinorangepi@orangepi:~$ '''sudo install_bt_panel.sh'''
|}
 [[File:pi3b-img269.png|545x134px]]</ol>
<ol start="4" style="list-style-type: decimal;">
<li><p>Use Then the pagoda installation program reminds whether to install the '''gpio serialBt-Panel''' command to test the loop function of the serial port as shown below. If you can see the following printing'''/www''' folder, it means that the serial communication is normal</p>and enter '''<ol span style="list-style-typecolor: lower-alpha;#FF0000">y<li/span>Test UART3''' at this time</li></ol></li></ol>{| class="wikitable" style="width:800px;" |-| +----------------------------------------------------------------------
orangepi@orangepi:~$ '''sudo gpio serial <p>| Bt-WebPanel FOR CentOS/devUbuntu/ttyS3'''Debian</p>
[sudo] password for orangepi: #Enter the password here.+----------------------------------------------------------------------
Out: 0<p>| Copyright © 2015-2099 BT-SOFT(http: -&gt; 0//www.bt.cn) All rights reserved.</p>
Out: 1: +----------------------------------------------------------------------&gt; 1
Out<p>| The WebPanel URL will be http: 2//SERVER_IP: -&gt; 28888 when installed.</p>
Out: 3: +----------------------------------------------------------------------&gt; 3
Out: 4: -&gt; 4
OutDo you want to install Bt-Panel to the /www directory now?(y/n): '''<span style="color:#FF0000">y</span>'''|}</ol><ol start="5" style="list-style-type: -&gtdecimal; 5^C"><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>
[[File:pi3b-img278.png|800px]]</ol><ol start="26" style="list-style-type: lower-alphadecimal;"><li>Test UART7<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&quot; User Agreement &quot;, and then click&quot; Enter the panel &quot; You can enter the Bt-Panel</olp></li>
orangepi@orangepi[[File:~$ pi3b-img280.png|1200px]]</ol><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 ('''sudo gpio serial https:/dev/ttyS7www.bt.cn''') to register one.</li>
[sudo[File:pi3b-img281.png|1200px]] password for orangepi</ol><ol start="9" style="list-style-type: #Enter decimal;"><li>The final display interface is shown in the password herefigure below.You can intuitively see some status information of the development board Linux system, such as load state, CPU usage, memory usage and storage space usage</li>
Out[[File: 0pi3b-img282.png|1200px]]</ol><ol start="10" style="list-style-type: decimal;"><li>More functions of the Bt-&gt; 0Panel can refer to the following information to explore by yourself</li>
Out{| class="wikitable" style="width: 1800px;" |-| Manual: [http://docs.bt.cn '''http: -&gt; 1//docs.bt.cn''']
OutForum address: 2[https: -&gt; 2//www.bt.cn/bbs '''https://www.bt.cn/bbs''']
OutGitHub Link: 3'''https: //github.com/aaPanel/BaoTa'''|}</ol><span id="set-&gt; 3the-chinese-environment-and-install-chinese-input-method"></span>
Out: 4: -&gt; 4== Set the Chinese environment and install Chinese input method ==
Out{| class="wikitable" style="background-color: 5#ffffdc;width: 800px;" |-&gt; 5^C| <big>'''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.'''</big>|}
<ol startspan id="3" style="listdebian-stylesystem-type: lowerinstallation-alpha;method"><li>Test UART9</li></olspan>=== Debian system installation method ===
orangepi@orangepi<ol style="list-style-type:~$ decimal;"><li><p>First set the default '''sudo gpio serial locale''' as Chinese</dev/ttyS9p><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] password for orangepidpkg-reconfigure locales'''|}</ol><ol start="2" style="list-style-type: #Enter lower-alpha;"><li>Then select '''zh_CN.UTF-8 UTF-8''' in the password here.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>
Out[[File: 0pi3b-img283.png|1200px]]</ol><ol start="3" style="list-style-type: lower-&gtalpha; 0"><li>Then set the default '''locale''' as '''zh_CN.UTF-8'''</li>
Out[[File: 1pi3b-img284.png|1200px]]</ol><ol start="4" style="list-style-type: lower-&gtalpha;"><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; 1" |-| orangepi@orangepi:~$ '''sudo dpkg-reconfigure locales'''
Out: 2: -&gt; 2Generating locales (this might take a while)...
Out: 3: en_US.UTF-&gt; 38... done
Out: 4: zh_CN.UTF-&gt; 48... done
Out: 5Generation complete.|}</ol></li></ol><ol start="2" style="list-style-type: -&gtdecimal; 5^C"><li>Then open '''Input Method'''</li>
[[File:pi3b-img285.png]]</ol><span idol start="pwm3" style="list-teststyle-methodtype: decimal;"><li>Then select '''OK'''</spanli>=== PWM test method ===
# From the table below, the pwm11 available for Orange Pi 3B[[File:pi3b-img286.png]]</ol><ol start="4" style="list-style-type: decimal;"><li>Then select '''Yes'''</li>
[[File:pi3b-img270img287.png|575x160px]]</ol><ol start="5" style="list-style-type: decimal;"><li>Then select '''fcitx'''</li>
[[File:pi3b-img288.png]]</ol><ol start="6" style="list-style-type: decimal;"><li>Then select '''In the Linux system, the pwm in 40pin is closed by default, and it needs to be opened manually to use..OK'''</li>
[[File:pi3b-img289.png]]</ol><ol start="7" style="list-style-type: decimal;"><li><p>'''Add <span style="color:#FF0000">Then restart the configuration of the red font part below Linux system to make the configuration effective</span>'''</bootp></orangepiEnv.txt, and then restart the Linux system to li><li><p>Then open the pwm11.'''Fcitx configuration'''</p></li>
orangepi@orangepi[[File:~$ '''sudo vim pi3b-img290.png]]</bootol><ol start="9" style="list-style-type: decimal;"><li>Then click the + of the position shown in the figure below</orangepiEnv.txt'''li>
'''overlays=pwm11[[File:pi3b-m1'''img291.png]]<ol start="2" style="list-style-type: decimal;"><li>After opening a pwm, a pwmchipX (X is a specific number) will be available in'''/sys/class/pwm/'''</li></ol> orangepi@orangepi:~$ '''ls /sys/class/pwm/''' pwmchip0 pwmchip1 <ol start="310" style="list-style-type: decimal;"><li><p>Which pwmchip corresponds to pwm11 above? Let's first check out the output of Then search '''ls /sys/class/pwm/ -lGoogle Pinyin''' command, as shown below: </p></li><li><p>The base address of the pwm11 register is Fe6F0030. Then see the output of and click '''ls /sys/class/pwm/ -lOK''' command, you can see that the fe6f0030.pwm is connected to the pwmchip1, so the PWM11 corresponding pwmchip is pwmchip1</p></li></ol>
<div class="figure">
[[File:pi3b-img271img292.png|576x46px|RCUS$_~VYM{4ZS]_L}DNZQR]]
</div></ol><ol start="511" style="list-style-type: decimal;"><li>Then use the following command to allow pwm11 to output a 50Hz square wave (please switch put '''Google Pinyin''' to the root user first, and then execute the following command)front</li></ol>
root@orangepi[[File:~# '''echo 0 &gt; /sys/class/pwm/pwmchip1/export'''pi3b-img293.png]]
root@orangepi[[File:~# pi3b-img294.png]]</ol><ol start="12" style="list-style-type: decimal;"><li>Then open the '''echo 20000000 &gt; /sys/class/pwm/pwmchip1/pwm0/periodGeany'''editor to test the Chinese input method</li>
root@orangepi[[File:~# '''echo 1000000 &gtpi3b-img295.png]]</ol><ol start="13" style="list-style-type: decimal; "><li>The Chinese input method test is shown below</sys/class/pwm/pwmchip1/pwm0/duty_cycle'''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:~# $ '''echo 1 &gt; /sys/class/pwmsudo vim /pwmchip1etc/pwm0default/enablelocale'''
[[<p># File:pi3bgenerated by update-img272.png|575x346px]]locale</p>
LC_MESSAGES='''<span idstyle="how-to-install-and-use-wiringop-pythoncolor:#FF0000">zh_CN.UTF-8</span>== How to install and use Wiringop-Python =='''
LANG='''Wiringop<span style="color:#FF0000">zh_CN.UTF-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.8</span>'''
LANGUAGE='''Please note that all <span style="color:#FF0000">zh_CN.UTF-8</span>'''|}</ol><ol start="16" style="list-style-type: decimal;"><li>Then '''<span style="color:#FF0000">restart the following command below is operated under the root user.system</span>'''to see the system displayed as Chinese</li>
[[File:pi3b-img297.png]]</ol><span id="wiringop-pythonthe-installation-method-of-ubuntu-20.04-system"></span>=== Wiringop-Python installation method ===
# First install the dependency package=== The installation method of Ubuntu 20.04 system ===
root@orangepi:~# First open '''sudo apt-get updateLanguage Support'''
root@orangepi:~# '''sudo apt-get -y install git swig python3-dev python3:[[File:pi3b-setuptools'''img298.png]]
<ol start="2" style="list-style-type: decimal;">
<li>Then use the following command to download the source code of wiringOP-Pythonfind '''Chinese (China)''' option</li></ol>
'''Note that the following git clone[[File:pi3b-img299.png]]</ol><ol start="3" style="list-recursivee command will automatically download the source code of Wiringop, because Wiringopstyle-Python depends on Wiringop. Please make sure that type: decimal;"><li>Then use the download process does not report an error due left mouse button to network problems.select '''Chinese (China)'''and hold it down, and then drag it up to the beginning. The display is shown below: </li>
'''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[[File:/usr/src/wiringOPpi3b-Python'''img300.png]]
root@orangepi{| class="wikitable" style="background-color:~# ffffdc;width:800px;" |-| <big>'''git clone --recursive https:Note that this step is not easy to drag, please try more patiently.'''</big>|}</github.com/orangepiol><ol start="4" style="list-xunlong/wiringOPstyle-Python type: decimal;"><li>Then select the '''Apply System-b nextWide'''to apply the Chinese settings to the entire system</li>
root@orangepi[[File:~# pi3b-img301.png]]</ol><ol start="5" style="list-style-type: decimal;"><li>Then set the '''cd wiringOP-PythonKeyboard input method system''' to '''fcitx'''</li>
root@orangepi[[File:~pi3b-img302.png]]</wiringOPol><ol start="6" style="list-Pythonstyle-type: decimal;"><li><p>'''<span style="color:# FF0000">Then restart the Linux system to make the configuration effective</span>'''git submodule update </p></li><li><p>After re --init --remoteentering 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>
[[File:pi3b-img303.png]]</ol><ol start="38" style="list-style-type: decimal;"><li>Then use you can see that the following command to compile wiringOP-Python and install it into the Linux system of the development boarddesktop is displayed as Chinese</li></ol>
root@orangepi[[File:~# pi3b-img304.png]]</ol><ol start="9" style="list-style-type: decimal;"><li>Then we can open the '''cd wiringOP-PythonGeany'''to test Chinese input method , and the way to open is shown in the figure below</li>
root@orangepi[[File:~pi3b-img305.png]]</wiringOPol><ol start="10" style="list-style-Python# type: decimal;"><li>After opening '''Geany''python3 generate-bindings', the default is an English input method.py &gt; bindings.iWe can switch into Chinese input method through the '''Ctrl+Space'''shortcut keys, and then we can enter Chinese</li>
root@orangepi[[File:~pi3b-img306.png]]</wiringOPol><span id="the-installation-method-of-ubuntu-Python# '''sudo python3 setup22.py install'''04-system"></span>
<ol start="4" style="list-style-type: decimal;"><li>Then enter the following command= The installation method of ubuntu 22. 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-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>
DESCRIPTION[[File:pi3b-img308.png]]
{| class="wikitable" style="background-color:# This file was automatically generated by SWIG (httpffffdc;width://www.swig.org).800px;" |-| # Version 4<big>'''Note that this step is not easy to drag, please try more patiently.0.2'''</big>|}#</ol> # Do not make changes to this file unless you know what you are doing<ol start="4" style="list-style-modifytype: decimal;"> # <li>Then select the '''Apply System-Wide''' to apply the Chinese settings to the SWIG interface file instead.entire system</li>
[[File:pi3b-img309.png]]
</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 span style="list-style-typecolor: lower-alpha;#FF0000"><li>First use Then restart the Python3 command Linux system to enter make the command line mode of Python3configuration effective</span>'''</lip></olli><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</lip></olli>
root@orangepi[[File:~# '''python3'''pi3b-img303.png]]</ol><ol start="7" style="list-style-type: decimal;"><li>Then you can see that the desktop is displayed as Chinese</li>
[[File:pi3b-img304.png]]</ol><ol start="28" style="list-style-type: lower-alphadecimal;"><li>Then import open the Python module of WiringPiFcitx5 configuration program</li></ol>
&gt[[File:pi3b-img310.png]]</ol><ol start="9" style="list-style-type: decimal;&gt;&gt; '''import wiringpi;'''"><li>Then choose to use Pinyin input method</li>
<ol startdiv class="3figure" 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></ol>
&gt;&gt;&gt; '''help(wiringpi)'''[[File:pi3b-img311.png]]
Help on module wiringpi</div></ol><ol start="10" style="list-style-type:decimal;"><li>The interface after the selection is shown below, then click OK</li>
NAME[[File:pi3b-img312.png]]</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>
wiringpi[[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>
DESCRIPTION[[File:pi3b-img313.png]]</ol><span id="how-to-remotely-log-in-to-the-linux-system-desktop-method"></span>
# This file was automatically generated by SWIG (http://www.swig.org).== How to remotely log in to the Linux system desktop method ==
{| class="wikitable" style="background-color:# Version 4ffffdc;width:800px;" |-| <big>'''Ubuntu Gnome Wayland image does not support Nomachine and VNCs introduced here to remotely log in to the desktop.0.2'''</big>|}
#<span id="use-nomachine-remote-login"></span>=== Use nomachine remote login ===
{| class="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:# Do not make changes FF0000">desktop version</span>. In addition, nomachine also provides detailed documents. It is strongly recommended to read this file unless you know what you document to be familiar with the use of nomachine. The document links are doing--modifyshown 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 SWIG interface file insteaddevelopment board normally.'''</big>|}
CLASSES<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&id=112&s=ARM '''https://downloads.nomachine.com/download/?id=118&amp;distro=ARM''']|}
builtins[[File:pi3b-img314.objectpng]]</ol><ol start="2" style="list-style-type: lower-alpha;"><li>In addition, you can also download the installation package to '''NoMachine''' in the '''official tools'''.</li>
GPIO[[File:pi3b-img315.png]]
I2CFirst enter the '''remote login software-Nomachine''' folder
Serial[[File:pi3b-img316.png]]
nesThen download the ARM64 version of the 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>Then download the nomachine software Windows version of the installation package, the download address is shown below</li>{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''Note that this download link may change.'''</big>|}{| class GPIO(builtins="wikitable" style="width:800px;" |-| '''https://downloads.nomachine.object)com/download/?id=9'''|}
| GPIO(pinmode[[File:pi3b-img318.png]]</ol><ol start=0)"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>
|[[File:pi3b-img319.png]]</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, 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>
&gt;&gt;&gt[[File:pi3b-img320.png]]</ol><ol start="6" style="list-style-type: decimal;"><li>Then click '''OK'''</li>
[[File:pi3b-img321.png]]<span id/ol><ol start="pin-gpio7" style="list-portstyle-test-1type: decimal;"></spanli>=== 40pin GPIO port test === '''Wiringop-Python is Then enter the same as Wiringop. You can also determine which GPIO pink can be determined by specifying username and password of the WPI number. Because there is no command to check Linux system in the WPI number corresponding position in Wiringop-Pythonthe figure below, you can only check the board WPI number and physical physical physics through the GPIO command in Wiringop. The corresponding relationship of the pin.then click '''OK'''to start logging in</li>
<div class="figure">
[[File:pi3b-img258img322.png|575x355px|66AC(IBG%N8L@Y7(1BZPS`N]]
</div></ol># Below the No. 7 pin — corresponding to GPIO4_a4 <ol start="8" style="list-corresponding WPI serial number 2 style-to demonstrate how to set type: decimal;"><li><p>Then click OK in the next interface</p></li><li><p>Finally, you can see the height desktop of the GPIO portdevelopment board Linux system</p><p>[[File:pi3b-img323.png]]</p></li></ol>
[[File:pi3b<span id="use-img259.png|576x120px]]vnc-remote-login"></span>
<ol start="2" style="list-style-type: decimal;"><li><p>The steps of the command test are shown below directly: </p><ol style="list-style-type: lower-alpha;"><li>First set the GPIO port to the output mode. The first parameter of the '''pinMode''' function is the serial number of the wpi corresponding to the pin, and the second parameter is the GPIO mode</li></ol></li></ol>Use VNC remote login ===
root@orangepi{| class="wikitable" style="background-color:~/wiringOP#ffffdc;width:800px;" |-Python# | <big>'''python3 -c &quot;import wiringpi; \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.'''
'''from wiringpi import GPIO; wiringpi<span style="color:#FF0000">Ubuntu 20.wiringPiSetup() ; \04 tests many problems with VNC, please do not use this method.</span>'''</big>|}
# First run the '''wiringpiset_vnc.pinMode(2sh''' script settings, GPIO.OUTPUT) ; &quot;and '''<span style="color:#FF0000">remember to add Sudo permissions</span>'''
<ol start::{| class="2wikitable" style="list-style-typewidth: lower-alpha800px;"><li>Then set the GPIO port output low level|-| orangepi@orangepi:~$ '''sudo set_vnc. After setting, you can use the voltage of the voltage of the universal meter to measure the pins. If it is 0V, it means that the low -power flat is successful</li></ol>sh'''
root@orangepi:~/wiringOP-Python# '''python3 -c &quot;import wiringpi; \'''You will require a password to access your desktops.
'''from wiringpi import GPIO; wiringpi.wiringPiSetup() ;\'''
Password: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '''wiringpi.digitalWrite(2<span style="color:#FF0000">#Set the VNC password here, GPIO.LOW)&quot;8 -bit characters</span>'''
Verify: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '''<ol start="3" span style="list-style-typecolor: lower-alpha;#FF0000"><li>Then set the GPIO port output high level. After setting, you can use the value of #Set the voltage of the pins with a multimeter. If it is 3.3VVNC password here, it means that the high 8 -power flat is successful.</li>bit characters</olspan>'''
root@orangepi:~Would you like to enter a view-only password (y/wiringOP-Python# n)? '''python3 -c &quot;import wiringpi; \<span style="color:#FF0000">n</span>'''
'''from wiringpi import GPIO; wiringpixauth: file /root/.wiringPiSetup() ;\'''Xauthority does not exist
'''wiringpi.digitalWrite(2, GPIO.HIGH)&quot;'''
<ol start="3" style="list-style-typeNew 'X' desktop is orangepi3b: decimal;"><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 use the Python3 command to enter the command line mode of Python3</li></ol></li></ol>1
root@orangepi:~# '''python3'''
<ol start="2" style="list-style-type: lower-alpha;"><li>Then import the Python module of WiringPi<Creating default startup script /li><root/ol>.vnc/xstartup
&gt;&gt;&gt; '''import wiringpi'''Starting applications specified in /root/.vnc/xstartup
&gt;&gt;&gt; '''from wiringpi import GPIO'''Log file is /root/.vnc/orangepi3b:1.log
<ol start="3" style="list-style-type: lower-alpha;">
<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.</li></ol>
&gt;&gt;&gt; '''wiringpi.wiringPiSetup()'''Killing Xtightvnc process ID 3047
0
&gt;&gt;&gt; '''wiringpi.pinMode(2, GPIO.OUTPUT)'New 'X'desktop is orangepi3b:1
<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; '''wiringpiStarting applications specified in /root/.digitalWrite(2, GPIO.LOW)'''vnc/xstartup
<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 Log file is 3/root/.3V, it means that the high -power flat is successful<vnc/li></ol>orangepi3b:1.log|}
&gt<ol start="2" style="list-style-type: decimal;&gt"><li><p>The steps of using MobaxTerm software to connect the development board Linux system desktop are shown below: </p><ol style="list-style-type: lower-alpha;&gt; '''wiringpi.digitalWrite(2"><li>First click Session, then select VNC, then fill in the IP address and port of the development board, GPIO.HIGH)'''and finally click OK to confirm</li>
<ol startdiv class="4figure" style="list-style-type: decimal;"><li>Wiringop-Python Sets GPIO high and low levels in the Python code. For reference to the '''blink.py''' test program in Examples, the voltage of the '''blink.py''' test program will set up the voltage of all GPIO ports in the development board 40 PIN</li></ol>
root@orangepi[[File:~/wiringOPpi3b-Python# '''cd examples'''img324.png]]
root@orangepi</div></ol><ol start="2" style="list-style-type:~/wiringOPlower-Pythonalpha;"><li>Then enter the password of the previously set VNC</examples# '''ls blink.py'''li>
'''blink[[File:pi3b-img325.py'''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</p><p>[[File:pi3b-img326.png]]</p></li></ol></li></ol>
root@orangepi:~/wiringOP<span id="some-programming-language-tests-supported-by-linux-Pythonsystem"></examples'''# python3 blink.py'''span>
<span id="pin-spi-test-1"></span>=== 40pin SPI test =Some programming language tests supported by Linux system ==
# From the schematic diagram of the 40pin interface, the SPI available for Orange Pi 3B is spi3<span id="debian-bullseye-system"></span>=== Debian Bullseye system ===
[[File<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>{| class="wikitable" style="width:pi3b800px;" |-img264.png|577x193px]]orangepi@orangepi:~$ '''gcc --version'''
'''In the Linux system, the spi3 in 40pin is closed by default, and it needs to be opened manually to usegcc (Debian 10.'''2.1-6) 10.2.1 20210110
'''Add the configuration of the red font part below to the /boot/orangepiEnv.txtCopyright (C) 2020 Free Software Foundation, and then restart the Linux system to open the spi4Inc.'''
orangepi@orangepi:~$ '''sudo vim /boot/orangepiEnvThis is free software; see the source for copying conditions.txt'''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>Write C language of '''Hello_world.c'''overlaysprogram</li>{| class="wikitable" style=spi3"width:800px;" |-m0-cs0-spidev| orangepi@orangepi:~$ '''vim hello_world.c'''
<ol start="2" style="list-style-type: decimal;">
<li>First check whether there is a '''spidev3.0''' device node in the Linux system. If it exists, it means that the SPI3 has been set and can be used directly</li></ol>
orangepi@orangepi:~$ '''ls <p>#include &lt;stdio.h&gt;</dev/spidev3.0'''p>
/dev/spidev3.0int main(void)
<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></ol>{
root@orangepi:~/wiringOP-Python# '''cd examples'''printf(&quot;Hello World!\n&quot;);
root@orangepi:~/wiringOP-Python/examples# '''python3 spidev_test.py \'''
'''--channel 3 --port :return 0''';
spi mode}|}</ol><ol start="3" style="list-style-type: 0x0lower-alpha;"><li>Then compile and run '''hello_world.c'''</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''gcc -o hello_world hello_world.c'''
max speedorangepi@orangepi: 500000 Hz (500 KHz)~$ '''./hello_world'''
Opening device Hello World!|}</devol></spidev3.0li></ol><ol start="2" style="list-style-type: 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>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''python3'''
TX | FF FF FF FF FF FF '''40 00 00 00 00 95Python 3.9.2''' FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D |......@.......…|(default, Feb 28 2021, 17:03:44)
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 |[GCC 10.2............….|1 20210110] on linux
<ol start="5" style="list-style-type: decimalType &quot;"><li>Then use the TXD (No. 19 pins in the 40Pin interface) and RXD (Nohelp&quot;, &quot;copyright&quot;, &quot;credits&quot; or &quot;license&quot; for more information. 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></ol>
root&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:~/wiringOP-Python# $ '''cd examplesvim hello_world.py'''
rootprint('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:~/wiringOP-Python/examples# $ '''python3 spidev_testhello_world.py \'''
Hello World!|}</ol></li></ol><ol start="3" style="list-style-type: decimal;"><li><p>Debian Bullseye's compilation tool and operating environment that is not installed in Java by default</p><ol style="list-style-type: lower-alpha;"><li>You can use the following command to install OpenJDK. The latest version in Debian Bullseye is openjdk-17</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo apt install -y openjdk-channel 3 -17-port 0jdk'''|}spi mode</ol><ol start="2" style="list-style-type: 0x0lower-alpha;"><li>After installation, you can check the version of Java</li>max speed{| class="wikitable" style="width: 500000 Hz (500 KHz)800px;" |-| Opening device /devorangepi@orangepi:~$ '''java --version'''|}</spidev3.0ol><ol start="3" style="list-style-type: lower-alpha;">TX | FF FF FF FF FF FF <li>Edit the '''40 00 00 00 00 95hello_world.java''' FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D of the Jave version</li>{|......@.......…class="wikitable" style="width:800px;" |-| RX | FF FF FF FF FF FF orangepi@orangepi:~$ '''40 00 00 00 00 95vim hello_world.java''' FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D |......@.......…|
<span id="pin-i2c-test-1"></span>=== 40pin I2C test ===public class hello_world
<ol start="5" 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</li></ol>{
:public static void main(String[[File:pi3b-img266.png|576x160px]]args)
'''It can be seen from the above table that I2C4_M0 and SPI3_M0 are pins. The two cannot be opened at the same time. I2C3_M0 and UART3_M0 are also reused. The two cannot be opened at the same time''':{
'''In the Linux system, the I2C in 40Pin is closed by default, and it needs to be opened manually to use::System.'''out.println(&quot;Hello World!&quot;);
'''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.''':}
}|}</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:~$ '''sudo vim /boot/orangepiEnvjavac hello_world.txtjava''' orangepi@orangepi:~$ '''java hello_world''' Hello World!|}</ol></li></ol><span id="ubuntu-focal-system"></span>
'''overlays=i2c2-m1 i2c3-m0 i2c4-m0'''== Ubuntu Focal system ===
<ol start="6" style="list-style-type: decimal;"><li>After starting <p>Ubuntu Focal has the GCC compilation tool chain by default, which can compile the C language program directly in the Linux system, first confirm of the I2C device node under/devdevelopment board.</p><ol style="list-style-type: lower-alpha;"><li>The version of the gcc is shown below</olli>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''gcc --version'''
orangepi@orangepi:gcc (Ubuntu 9.4.0-1ubuntu1~# '''ls /dev/i2c-*'''20.04.1) 9.4.0
/dev/i2c-0 '''/dev/i2c-2''' '''/dev/i2c-3''' '''/dev/i2c-4''' /dev/i2c-6Copyright (C) 2019 Free Software Foundation, Inc.
<ol start="7" style="list-style-type: decimalThis is free software;"><li>Then connect a I2C device on the I2C pin of see the 40PIN connectorsource for copying conditions. Here There is an example of the DS1307 RTC module.</li></ol>NO
{warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.| class}</ol><ol start="wikitable2" style="|list-style-||i2c2type: lower-m1alpha;">|i2c3-m0<li>'''hello_world.c''' program to write C language</li>{|i2c4-m0class="wikitable" style="width:800px;"
|-
| Sda Pin|Corresponding to Noorangepi@orangepi:~$ '''vim hello_world. 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|}c'''
[[File:pi3b-img273<p>#include &lt;stdio.png|180x153px]]h&gt;</p>
<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 commandint main(void)
orangepi@orangepi:~$ sudo i2cdetect -y 3 #i2c3 command{
orangepi@orangepi:~$ sudo i2cdetect -y 4 #i2c4 commandprintf(&quot;Hello World!\n&quot;);
<div class="figure">
[[File:pi3b-img274.png|464x174px|V@(61L~return 0})Q`8VLBCAYEP[2]];
}|}</divol><ol start="93" style="list-style-type: decimallower-alpha;"><li>You can then Then compile and run the time of the ds '''ds1307hello_world.pyc''' test program in </li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''examplesgcc -o hello_world hello_world.c''' to read the RTC time</li></ol>
rootorangepi@orangepi:~/wiringOP-Python# $ '''cd examples./hello_world'''
root@orangepiHello World!|}</ol></li></ol><ol start="2" style="list-style-type:~decimal;"><li><p>Ubuntu Focal defaults to install Python3</wiringOPp><ol style="list-style-type: lower-Pythonalpha;"><li>Python3 specific version is shown below</examples# '''python3 ds1307.py -li>{| class="wikitable" style="width:800px;" |-device \'''| orangepi@orangepi:~$ '''&quot;/dev/i2c-4&quot;python3''' Thu 2023-01-05 14:57:55
Thu 2023-01-05 Python 3.8.10 (default, Nov 142022, 12:5759:5647)
Thu 2023-01-05 14:57:57[GCC 9.4.0] on linux
^CType &quot;help&quot;, &quot;copyright&quot;, &quot;credits&quot; or &quot;license&quot; for more information.
exit&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!')|}<span id/ol><ol start="pins3" style="list-uartstyle-test.type: lower-alpha;"><li>The results of running '''hello_world.py''' are shown below</spanli>{| class="wikitable" style== 40pin"width:800px;" |-| orangepi@orangepi:~$ '''python3 hello_world.py'''s UART test ===
# As Hello World!|}</ol></li></ol><ol start="3" style="list-style-type: decimal;"><li><p>Ubuntu Focal's compilation tool and operating environment without the installation of Java default</p><ol style="list-style-type: lower-alpha;"><li>You can be seen from use the table belowfollowing command to install '''openjdk-17'''</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo apt install -y openjdk-17-jdk'''|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li>After installation, you can check the UART available for Orange Pi 3B is UART3, UART7 and UART9. There are three sets version of UART busJava</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''java --version'''
[[File:pi3bopenjdk 17.0.2 2022-01-img268.png|575x160px]]18
'''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'''OpenJDK Runtime Environment (build 17.0.2+8-Ubuntu-120.04)
OpenJDK 64-Bit Server VM (build 17.0.2+8-Ubuntu-120.04, mixed mode, sharing)|}</ol><ol start="3" style="list-style-type: lower-alpha;"><li>Edit the '''hello_world.java''In the Linux system, the UART in 40pin is closed by default, and it needs to be opened manually to use' of Jave version</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''vim hello_world.java''' public class hello_world
'''Add the configuration of the red font part below to the /boot/orangepiEnv.txt, and then restart the Linux system to open the UART3, UART7, and UART9 at the same time. If you only need to open one, you can fill in one'''{
orangepi@orangepi:~$ '''sudo vim /boot/orangepiEnv.txt'''public static void main(String[] args)
'''overlays=uart3-m0 uart7-m2 uart9-m2''':{
<ol start="2" style="list-style-type: decimal:System.out.println(&quot;Hello World!&quot;);"><li>After entering the Linux system, first confirm whether there is a device node corresponding to UART under/dev</li></ol>
orangepi@orangepi:~# '''ls /dev/ttyS*'''}
}|}</dev/ttyS1 ol><ol start="4" style="list-style-type: lower-alpha;"><li>Then compile and run '''/devhello_world.java'''</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''ttyS3 /dev/ttyS7 /dev/ttyS9javac hello_world.java'''
<ol start="3" style="list-style-typeorangepi@orangepi: decimal;"><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>~$ '''java hello_world'''
{| class="wikitable"|-||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 pinHello World!
|}
</ol>
</li></ol>
<span id="ubuntu-jammy-system"></span>
=== Ubuntu jammy system === <ol start="4" style="list-style-type: decimal;"><li><p>Use Ubuntu Jammy is installed with the GCC compilation tool chain by default, which can directly compile the '''serialTest.py''' C language program in Examples to test the loop function Linux system of the serial port. If you can see the printing below, it means that the serial communication is normaldevelopment board</p>
<ol style="list-style-type: lower-alpha;">
<li>Test UART3The version of the gcc is shown below</li></ol></li></ol>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''gcc --version'''
root@orangepi:~/wiringOPgcc (Ubuntu 11.2.0-Python/examples# 19ubuntu1) '''python3 serialTest11.py --device \2.0'''
'''&quot;/dev/ttyS3&quot;'''Copyright (C) 2021 Free Software Foundation, Inc.
Out: 0: -&gtThis is free software; 0 Out: 1: -&gt; 1 Out: 2: -&gt; 2 Out: 3: -&gt; 3 Out: 4:^C exitsee 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>Test UART7Write 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/ttyS7&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:^C exitreturn 0;
}
|}
</ol>
<ol start="3" style="list-style-type: lower-alpha;">
<li>Test UART9Then compile and run '''hello_world.c'''</li></ol>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''gcc -o hello_world hello_world.c'''
rootorangepi@orangepi:~/wiringOP-Python/examples# $ '''python3 serialTest.py --device \/hello_world'''
'''&quot;Hello World!|}</devol></ttyS9&quot;'''li></ol>
Out<ol start="2" style="list-style-type: 0decimal;"><li><p>Ubuntu jammy is installed with Python3 by default</p><ol style="list-style-type: lower-&gtalpha; 0"><li>Python3 specific version is shown below</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''python3'''
OutPython '''3.10.4''' (main, Apr 2 2022, 09: 104: -&gt; 119) [GCC 11.2.0] on linux
Out: 2: -Type &gtquot; 2help&quot;, &quot;copyright&quot;, &quot;credits&quot; or &quot;license&quot; for more information.
Out&gt;&gt;&gt;|}</ol><ol start="2" style="list-style-type: 3lower-alpha;"><li>Edit '''hello_world.py''' program in Python language</li>{| class="wikitable" style="width: 800px;" |-&gt; 3| orangepi@orangepi:~$ '''vim hello_world.py'''
Outprint('Hello World!')|}</ol><ol start="3" style="list-style-type: 4lower-alpha;"><li>The results of running '''hello_world.py''' are shown below</li>{| class="wikitable" style="width:^C800px;" |-| orangepi@orangepi:~$ '''python3 hello_world.py'''
exitHello World!|}</ol></li></ol><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 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'''
<span id="hardwareopenjdk 18-watchea 2022-the03-door-dog-test"></span>22
== Hardware watch the door dog test ==OpenJDK Runtime Environment (build 18-ea+36-Ubuntu-1)
The WatchDog_test program is pre OpenJDK 64-installed in Bit Server VM (build 18-ea+36-Ubuntu-1, mixed mode, sharing)|}</ol><ol start="3" style="list-style-type: lower-alpha;"><li>Edit the '''hello_world.java''' of the Linux system released by Orange PI, which can be tested directlyJave version</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''vim hello_world.java'''
The method of running the WatchDog_test program is shown below: public class hello_world
<ol style="list-style-type: lower-alpha;"><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></ol>{
orangepi@orangepi:~$ '''sudo watchdog_test 10'''public static void main(String[] args)
open success:{
options is 33152,identity is sunxi-wdt::System.out.println(&quot;Hello World!&quot;);
put_usr return,if 0,success:0}
The old reset time is}|}</ol><ol start="4" style="list-style-type: 16lower-alpha;"><li>Then compile and run '''hello_world.java'''</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''javac hello_world.java'''
return ENOTTY,if -1,successorangepi@orangepi:0~$ '''java hello_world'''
return ENOTTY,if Hello World!|}</ol></li></ol><span id="qt-1,success:0installation-method"></span>
put_user return,if 0,success:0== QT installation method ==
put_usr return,if 0,success:0# Use the following script to install QT5 and QT Creator
keep alive::{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''install_qt.sh'''|}
keep alive<ol start="2" style="list-style-type: decimal;"><li><p>The QT version number will be automatically printed after installation</p><ol style="list-style-type: lower-alpha;"><li>Ubuntu20.04 comes with QT version '''5.12.8'''</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''install_qt.sh'''
keep alive......
<span id="check-the-serial-number-of-the-rk3566-chip"></span>== Check the serial number of the RK3566 chip ==QMake version 3.1
The commands of the RK3566 chip serial number are shown belowUsing Qt version '''<span style="color:#FF0000">5. The serial number of each chip is different, so you can use the serial number to distinguish multiple development boards12.8</span>''' in /usr/lib/aarch64-linux-gnu|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li>Ubuntu22.04 comes with QT version '''5.15.3'''</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''install_qt.sh'''
orangepi@orangepi:~$ '''cat_serial.sh'''.....
Serial : '''8fa18eaf489041f0'''QMake version 3.1
Using Qt version '''<span idstyle="thecolor:#FF0000">5.15.3</span>''' in /usr/lib/aarch64-methodlinux-of-downloading-and-installing-thegnu|}</ol><ol start="3" style="list-balenaetcherstyle-versiontype: lower-of-arm64alpha;"><li>Debian11 comes with QT version '''5.15.2'''</spanli>{| class="wikitable" style= The method of downloading and installing the balenaEtcher version of arm64 =="width:800px;" |-| orangepi@orangepi:~$ '''install_qt.sh'''
<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>......
https://githubQMake version 3.com/Itai-Nelken/BalenaEtcher-arm/releases/download/v1.7.9/balena-etcher-electron_1.7.9+5945ab1f_arm64.deb1
Using Qt version '''<span style="color:#FF0000">5.15.2</span>''' in /usr/lib/aarch64-linux-gnu|}</ol><ol start="24" style="list-style-type: lower-alpha;"><li>The download address of the Appimage Debian12 comes with QT version that does not need to be installed is shown below: '''5.15.8'''</li></ol>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''install_qt.sh'''
https://github.com/Itai-Nelken/BalenaEtcher-arm/releases/download/v1.7.9/balenaEtcher-1.7.9+5945ab1f-arm64.AppImage
<div class="figure">QMake version 3.1
[[File:pi3b-img275.png|527x211px|IMG_256]] </div>Using Qt version '''<ol start="2" span style="list-style-typecolor: decimal;#FF0000">5.15.8<li/span><p>How to install and use the deb version of Balenaetcher: <''' in /usr/lib/p><ol style="listaarch64-stylelinux-type: lower-alpha;">gnu|}<li>deb version of Balenaetcher installation commands as shown below: </li></ol>
</li></ol>
<ol start="3" style="list-style-type: decimal;">
<li>Then you can see the QT Creator launch icon in '''Applications'''</li>
orangepi@orangepi[[File:~$ '''sudo apt install pi3b-y \'''img327.png]]
QT Creator can also be opened using the following command{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''qtcreator'''|}{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-fix-broken ./balena-etcher-electron_1.7| <big>'''During the startup of QT and QT applications, if the following error is displayed, ignore it.9+5945ab1f_arm64This error has no impact on application running.deb'''
<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></ol>
<div class="figure">'''libGL error: failed to create dri screen'''
[[File'''libGL error:pi3b-img89.png|507x249px|IMG_256]]failed to load driver: rockchip'''
</div><ol start="3" style="list-style-type'''libGL error: lower-alpha;"><li>The interface after Balenaetcher is opened is shown below: </li></ol>failed to create dri screen'''
'''libGL error: failed to load driver: rockchip'''<div class/big>|}</ol><ol start="figure4" style="list-style-type: decimal;"><li>The interface after QT Creator is opened is as follows</li>
[[File:pi3b-img276img328.png|429x263px|IMG_256]] </divol><ol start="35" style="list-style-type: decimal;"><li><p>How to use the AppImage The QT Creator version of balenaEtcher: is shown below</p>
<ol style="list-style-type: lower-alpha;">
<li>First add permissions to Balenaetcher</li></ol></li></ol> orangepi@orangepi:~/Desktop$ The default version of QT Creator in '''chmod +x balenaEtcher-1.7.9+5945ab1f-arm64Ubuntu20.AppImage04'''is as follows</li>
[[File:pi3b-img329.png]]
</ol>
<ol start="2" style="list-style-type: lower-alpha;">
<li>Then select the AppImage The default version balenaEtcher right -click the mouse, and then click Execute to open balenaEtcherof QT Creator in '''Ubuntu22.04''' is as follows</li></ol>
[[File:pi3b-img277img330.png|145x118px]]</ol><ol start="3" style="list-style-type: lower-alpha;"><li>The default version of QT Creator in '''Debian11''' is as follows</li>
[[File:pi3b-img331.png]]<span id/ol><ol start="the-installation-method-of-the-bt4" style="list-panelstyle-linuxtype: lower-panelalpha;"></spanli>== The installation method default version of the Bt-Panel Linux panel ==QT Creator in '''Debian12''' is as follows</li>
'''Bt[[File:pi3b-Panel Linux panel is a server management software that improves operation and maintenance efficiencyimg332. It supports more than 100 server management functions such as one -click LAMPpng]]</LNMPol></clusterli></monitoringol><ol start="6" style="list-style-type: decimal;"><li><p>Then set QT</website/FTP/database/Java (excerpted from the [httpsp><ol style="list-style-type://wwwlower-alpha;"><li>First open '''Help'''-&gt;'''About Plugins.bt.cn/new/index.html official website of the Bt-Panel])'''</li>
# First of all, the size of [[File:pi3b-img333.png]]</ol><ol start="2" style="list-style-type: lower-alpha;"><li>Then remove thecheck box for '''/tmpClangCodeModel''' space is needed. After setting, you need to '''restart the Linux system of the development board''', and the command is shown below: </li>
orangepi@orangepi[[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>''sudo sed -i 's</nosuidp></&amp;li><li><p>Then make sure that QT Creator uses the GCC compiler, if the default is Clang,sizechange it to GCC</p></li>{| class="wikitable" style=2G/"background-color:#ffffdc;width:800px;" |-| <big>''' /etc/fstabDebian12 Please skip this step.'''</big>|}
orangepi@orangepi[[File:~$ '''sudo reboot'''pi3b-img335.png]]
[[File:pi3b-img336.png]]</ol></li></ol><ol start="27" style="list-style-type: decimal;"><li>After restarting, you You can see that the size of the'''/tmp''' space has become 2G.then open a sample code</li></ol>
orangepi@orangepi[[File:~$ '''df pi3b-h | grep &quotimg337.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</tmp&quot;'''li>
tmpfs 2[[File:pi3b-img338.0G 12K png]]</ol><ol start="9" style="list-style-type: decimal;"><li>Then click '''2.0GConfigure Project''' 1% </tmpli>
[[File:pi3b-img339.png]]</ol><ol start="310" style="list-style-type: decimal;"><li>Then enter click the following command green triangle in the Linux system lower left corner to start the installation of compile and run the Bt-Panelsample code</li></ol>
orangepi@orangepi[[File:~$ '''sudo install_bt_panelpi3b-img340.sh'''png]]</ol><ol start="11" style="list-style-type: 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>
[[File:pi3b-img341.png]]</ol><ol start="412" style="list-style-type: decimal;"><li>Then the pagoda installation program reminds whether to install the '''BtReference documents</li>{| class="wikitable" style="width:800px;" |-Panel''' to the| '''https://wiki.qt.io/wwwInstall_Qt_5_on_Ubuntu''' folder, and enter y at this time</li></ol> +----------------------------------------------------------------------
| Bt-WebPanel FOR CentOS'''https:/Ubuntu/Debiandownload.qt.io/archive/qtcreator'''
+--------------------------------------------------------------------'''https://download.qt.io/archive/qt'''|}</ol><span id="ros-installation-method"></span>
| Copyright © 2015-2099 BT-SOFT(http://www.bt.cn) All rights reserved.== ROS Installation Method ==
+--------------------------------------------------------------<span id="how-to-install-ros-1-noetic-on-ubuntu-20.04"></span>=== How to install ROS 1 Noetic on Ubuntu 20.04 ===
| # The WebPanel URL will be http://SERVER_IP:8888 when installed.current active version of ROS 1 is as follows, the recommended version is '''Noetic Ninjemys'''
+---------------------------------------------------------------------::[[File:pi3b-img342.png|800px]]
Do you want to install Bt::[[File:pi3b-Panel to the /www directory now?(y/n): '''y'''img343.png|800px]]
<ol start::{| class="5wikitable" style="list-style-typewidth: decimal800px;"><li>Then you have to wait patiently|-| [http://docs. When you see the printing information below the terminal output, it means that the pagoda has been installedros. The entire installation process takes about 34 minutes. There may be some differences according to the difference in network speed<org/ '''http:/li></ol>docs.ros.org''']
[[File'''https:pi3b-img278//wiki.pngros.org/Distributions'''|576x233px]]}
<ol start="62" style="list-style-type: decimal;"><li><p>At this time, enter the '''panel address''' displayed above in the browser to open the login interface The official installation document link of the pagoda Linux panel, and then enter the ROS 1 '''usernameNoetic Ninjemys''' and is as follows:</li>{| class="wikitable" style="width:800px;" |-| [http://wiki.ros.org/noetic/Installation/Ubuntu '''passwordhttp://wiki.ros.org/noetic/Installation/Ubuntu''' displayed in the corresponding position to log in to the Bt-Panel<br />][[File:pi3b-img279.png|575x281px]]}</pol></liol start="3" style="list-style-type: decimal;"><li><p>After successfully logging in to In the pagodaofficial installation document of ROS '''Noetic Ninjemys''', the following welcome interface will pop upUbuntu recommends using Ubuntu20. First04, so please take make sure that the intermediate user notice to read to system used by 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-Paneldevelopment board is '''<span style="color:#FF0000">Ubuntu20.04 desktop system</pspan>'''</li><{| class="wikitable" style="width:800px;" |-| http://wiki.ros.org/noetic/ol>Installation|}
[[File:pi3b-img280img344.png|575x317px]]</ol><ol start="4" style="list-style-type: decimal;"><li>Then use the script below to install ros1</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi3b:~$ '''install_ros.sh ros1'''|}</ol><ol start="5" style="list-style-type: 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</li>{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''Note that running the following command needs to ensure that the development board can access github normally, otherwise an error will be reported due to network problems.'''
<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>
[[File:pi3b-img281'''The install_ros.png|576x300px]]sh script will try to modify /etc/hosts and automatically run the following commands. However, this method 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 of the development board to access github normally, and then manually run the following Order.'''
<ol start="9" style="list-style-type: decimal;">
<li>The final display interface is shown in the figure below. You can intuitively see some status information of the development board Linux system, such as load state, CPU usage, memory usage and storage space usage</li></ol>
[[File'''https:pi3b//raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-img282homebrew.png|575x306px]]yaml'''
<ol start="10" style="list-style-type'''Hit https: decimal;"><li>More functions of the Bt-Panel can refer to the following information to explore by yourself</li></ol>raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml'''
Manual: [http://docs.bt.cn '''httpERROR: error loading sources list://docs.bt.cn''']
Forum address: [https'''The read operation timed out'''</big>|}{| class="wikitable" style="width:800px;" |-| orangepi@orangepi://www.bt.cn/bbs ~$ '''https:source /opt/ros/noetic/www.btsetup.cn/bbsbash''']
GitHub Linkorangepi@orangepi: ~$ '''https://github.com/aaPanel/BaoTasudo rosdep init'''
<span id="setWrote /etc/ros/rosdep/sources.list.d/20-the-chinese-environment-and-install-chinese-input-method"></span>== Set the Chinese environment and install Chinese input method ==default.list
'''Note that before installing the Chinese input method, Recommended: please make sure that the Linux system used in the development board is the desktop version system.'''run
<span id="debian-system-installation-method"></span>
=== Debian system installation method ===
<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>rosdep update
orangepi@orangepi:~$ '''sudo dpkg-reconfigure localesrosdep update'''
<ol start="2" style="reading in sources list-style-type: lower-alpha;"><li>Then select '''zh_CN.UTF-8 UTF-8''' in the pop-up interface (to move up and down through the upper and lower direction buttons on the keyboard, select it through the space key, and finally move the cursor to '''&lt;OK&gt;''' through the TAB key, then press the ENTER key )<data from /etc/ros/li><rosdep/ol>sources.list.d
[[FileHit https:pi3b//raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-img283homebrew.png|575x296px]]yaml
<ol start="3" style="list-style-typeHit https: lower-alpha;"><li>Then set the default '''locale''' as '''zh_CN//raw.githubusercontent.UTF-8'''<com/li><ros/ol>rosdistro/master/rosdep/base.yaml
[[FileHit https:pi3b-img284//raw.png|575x160px]]githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml
<ol start="4" style="list-style-typeHit https: lower-alpha;"><li>After exiting the interface, the '''locale''' settings will be started//raw.githubusercontent. The output displayed by the command line is shown below<com/li><ros/ol>rosdistro/master/rosdep/ruby.yaml
orangepi@orangepiHit https:~$ '''sudo dpkg-reconfigure locales'''//raw.githubusercontent.com/ros/rosdistro/master/releases/fuerte.yaml
Generating locales (this might take a while)Query rosdistro index https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml
en_US.UTFSkip end-8... doneof-life distro &quot;ardent&quot;
zh_CN.UTFSkip end-8... doneof-life distro &quot;bouncy&quot;
Generation complete.Skip end-of-life distro &quot;crystal&quot;
<ol start="2" style="listSkip end-styleof-type: decimallife distro &quot;dashing&quot;"><li>Then open '''Input Method'''</li></ol>
[[File:pi3bSkip end-img285.png|575x361px]]of-life distro &quot;eloquent&quot;
<ol start="3" style="list-style-type: decimalAdd distro &quot;foxy&quot;"><li>Then select '''OK'''</li></ol>
[[File:pi3b-img286.png|295x212px]]Add distro &quot;galactic&quot;
<ol start="4" style="listSkip end-styleof-type: decimallife distro &quot;groovy&quot;"><li>Then select '''Yes'''</li></ol>
[[File:pi3b-img287.png|303x192px]]Add distro &quot;humble&quot;
<ol start="5" style="listSkip end-styleof-type: decimallife distro &quot;hydro&quot;"><li>Then select '''fcitx'''</li></ol>
[[File:pi3bSkip end-img288.png|307x220px]]of-life distro &quot;indigo&quot;
<ol start="6" style="listSkip end-styleof-type: decimallife distro &quot;jade&quot;"><li>Then select '''OK'''</li></ol>
[[File:pi3bSkip end-img289.png|305x216px]]of-life distro &quot;kinetic&quot;
<ol start="7" style="listSkip end-styleof-type: decimallife distro &quot;lunar&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;melodic&quot;
<ol start="9" style="list-style-type: decimalAdd distro &quot;noetic&quot;"><li>Then click the + of the position shown in the figure below</li></ol>
[[File:pi3b-img291.png|280x187px]]Add distro &quot;rolling&quot;
updated cache in /home/orangepi/.ros/rosdep/sources.cache|}</ol><ol start="106" style="list-style-type: decimal;"><li><p>Then search 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:800px;" |-| <p>orangepi@orangepi:~$ '''Google Pinyintest_ros.sh''' and click </p>|}<li><p>After running the '''OKtest_ros.sh'''script, a little turtle as shown in the figure below will pop up</lip></olli>
<div class="figure">
[[File:pi3b-img292img345.png|291x196px|C:\Users\orangepi\Desktop\用户手册插图\Pi5 Plus\未标题-10.jpg未标题-10]]
</div></ol><ol start="118" style="list-style-type: decimal;"><li>Then put '''Google Pinyin''' to please keep the frontterminal window just opened at the top</li></ol>
[[File:pi3b-img293.png|299x202px]]<div class="figure">
[[File:pi3b-img294img346.png|300x202px]]
</div></ol><ol start="129" style="list-style-type: decimal;"><li>Then open At this time, press the direction keys on the '''Geany''' editor keyboard to test control the Chinese input methodlittle turtle to move up, down, left, and right</li></ol>
[[File:pi3b-img295img347.png|349x212px]]</ol><span id="how-to-install-ros-2-galactic-on-ubuntu-20.04"></span>
<ol start="13" style="list-style-type: decimal;"><li>The Chinese input method test is shown below</li></ol>= How to install ROS 2 Galactic on Ubuntu 20.04 ===
[[File:pi3b-img296.png|575x325px]]# The current active version of ROS 2 is as follows, the recommended version is '''Galactic Geochelone'''
<ol start="14" style="list-style::[[File:pi3b-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_CNimg348.UTF-8'''</p></li></ol>png]]
orangepi@orangepi:~$ '''sudo vim /etc/default/locale''':[[File:pi3b-img349.png]]
# File generated by update::{| class="wikitable" style="width:800px;" |-locale| [http://docs.ros.org/ '''http://docs.ros.org''']
LC_MESSAGES='''zh_CNhttp://docs.UTF-8ros.org/en/galactic/Releases.html'''|}
LANG<ol start="2" style="list-style-type: decimal;"><li>The link to the official ROS 2 '''Galactic Geochelone'''zh_CNinstallation documentation is as follows:</li>{| class="wikitable" style="width:800px;" |-| '''docs.UTF-8ros.org/en/galactic/Installation.html'''
LANGUAGE'''http://docs.ros.org/en/galactic/Installation/Ubuntu-Install-Debians.html'''|}</ol><ol start="3" style="list-style-type: decimal;"><li><p>It is recommended to use Ubuntu20.04 in the official installation document of ROS 2 '''Galactic Geochelone''', so please ensure that the system used by the development board is '''<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 '''install_ros.sh''' 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 '''zh_CNinstall_ros.UTFsh''' script will automatically run the '''ros2 -8h'''command after installing ros2. If you can see the following print, it means that the ros2 installation is complete</li>{| class="wikitable" style="width:800px;" |-| usage: ros2 [-h] Call `ros2 &lt;command&gt; -h` for more detailed usage. ...
<ol start="16" style="list-style-type: decimal;">
<li>Then '''restart the system''' to see the system displayed as Chinese</li></ol>
[[File:pi3bros2 is an extensible command-img297line tool for ROS 2.png|576x356px]]
<span id="the-installation-method-of-ubuntu-20.04-system"></span>
=== The installation method of Ubuntu 20.04 system ===
# First open '''Language Support'''optional arguments:
[[File:pi3b-img298.png|575x351px]]h, --help show this help message and exit
<ol start="2" style="list-style-type: decimal;">
<li>Then find '''Chinese (China)''' option</li></ol>
[[FileCommands:pi3b-img299.png|318x311px]]
<ol start="3" style="list-style:action Various action related sub-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></ol>commands
[[File:pi3bbag Various rosbag related sub-img300.png|324x320px]]commands
'''Note that this step is not easy to drag, please try more patiently.''':component Various component related sub-commands
<ol start="4" style="list-style-type: decimal;"><li>Then select the '''Apply Systemdaemon Various daemon related sub-Wide''' to apply the Chinese settings to the entire system</li></ol>commands
[[File:pi3b-img301.png|321x316px]]doctor Check ROS setup and other potential issues
<ol start="5" style="list-style-type: decimal;"><li>Then set the '''Keyboard input method system''' to '''fcitx'''</li></ol>interface Show information about ROS interfaces
[[File:pi3b-img302.png|327x320px]]launch Run a launch file
<ol start="6" style="list-style-type: decimal;"><li><p>'''hen restart the Linux system to make the configuration effective'''</p></li><li><p>After re lifecycle Various lifecycle related sub-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>commands
[[File:pi3bmulticast Various multicast related sub-img303.png|303x247px]]commands
<ol start="8" style="list:node Various node related sub-style-type: decimal;"><li>Then you can see that the desktop is displayed as Chinese</li></ol>commands
[[File:pi3bparam Various param related sub-img304.png|575x383px]]commands
<ol start="9" style="list:pkg Various package 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]]run Run a package specific executable
<ol start="10" style="list:security Various security related sub-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>commands
[[File:pi3bservice Various service related sub-img306.png|575x308px]]commands
<span id="the:topic Various topic related sub-installation-method-of-ubuntu-22.04-system"></span>=== The installation method of ubuntu 22.04 system ===commands
# First open '''Language Support''':wtf Use `wtf` as alias to `doctor`
[[File:pi3b-img298.png|575x351px]]
:Call `ros2 &lt;command&gt; -h` for more detailed usage.|}</ol><ol start="26" style="list-style-type: decimal;"><li>Then find you can use the '''Chinese (China)test_ros.sh''' optionscript 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>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi3b:~$ '''test_ros.sh'''
[INFO] [File:pi3b-img3071671174101.png|335x326px200091527][talker]: Publishing: 'Hello World: 1'
<ol start="3" style="list-style-type[INFO] [1671174101.235661048] [listener]: 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 belowI heard: [Hello World: </li></ol>1]
[INFO] [File:pi3b-img3081671174102.png|337x331px199572327][talker]: Publishing: 'Hello World: 2'
'''Note that this step is not easy to drag, please try more patiently[INFO] [1671174102.'''204196299] [listener]: I heard: [Hello World: 2]
<ol start="4" style="list-style-type[INFO] [1671174103.199580322] [talker]: Publishing: decimal;"><li>Then select the '''Apply System-Wide''Hello World: 3' to apply the Chinese settings to the entire system</li></ol>
[INFO] [1671174103.204019965] [Filelistener]:pi3bI heard: [Hello World: 3]|}</ol><ol start="7" style="list-img309style-type: decimal;"><li>Run the following command to open rviz2</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''source /opt/ros/galactic/setup.png|336x330px]]bash'''
<ol start="5" style="list-style-typeorangepi@orangepi: decimal;"><li><p>~$ '''Then restart the Linux system to make the configuration effectiveros2 run rviz2 rviz2'''</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:pi3b-img303.png|303x247px]]<div class="figure">
<ol start="7" style="list-style-type: decimal;"><li>Then you can see that the desktop is displayed as Chinese</li></ol> [[File:pi3b-img304img350.png|575x383px]]
</div></ol>
<ol start="8" style="list-style-type: decimal;">
<li>Then open For the Fcitx5 configuration programusage of ROS, please refer to the documentation of ROS 2</li>{| class="wikitable" style="width:800px;" |-| '''http://docs.ros.org/en/galactic/Tutorials.html'''|}</ol><span id="how-to-install-ros-2-humble-on-ubuntu-22.04"></span>
[[File:pi3b-img310=== How to install ROS 2 Humble on Ubuntu 22.png|575x349px]]04 ===
<ol start="9" style="list-style-type: decimal;"><li>Then choose # Use the '''install_ros.sh''' script to use Pinyin input method</li></ol>install ros2
<div ::{| class="figurewikitable">style="width:800px;" |-| orangepi@orangepi:~$ '''install_ros.sh ros2'''|}
[[File<ol start="2" style="list-style-type:pi3b-img311decimal;"><li>The '''install_ros.png|338x267px|C:\Users\orangepi\Desktop\用户手册插图\Pi5 Plus\未标题sh''' script will automatically run the '''ros2 -11h''' command after installing ros2.jpg未标题-11]]If you can see the following print, it means that the ros2 installation is complete</li>
</div><ol start{| class="10wikitable" style="list-style-typewidth: decimal800px;"><li>The interface after the selection is shown below, then click OK</li></ol>|-| usage: ros2 [-h] Call `ros2 &lt;command&gt; -h` for more detailed usage. ...
[[File:pi3b-img312.png|366x290px]]
<ol start="11" style="listros2 is an extensible command-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>line tool for ROS 2.
[[File:pi3b-img305.png|576x292px]]
<ol start="12" style="list-style-typeoptional arguments: 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></ol>
[[File:pi3b-img313.png|576x408px]]h, --help show this help message and exit
<span id="how-to-remotely-log-in-to-the-linux-system-desktop-method"></span>
== 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.'''Commands:
<span id="use:action Various action related sub-nomachine-remote-login"></span>=== Use nomachine remote login ===commands
'''Make sure the Ubuntu or Debian system installed on the development board is a desktop version. In addition, nomachine also provides detailed documents. It is strongly recommended to read this document to be familiar with the use of nomachine. The document links are shown below: '''bag Various rosbag related sub-commands
'''https://knowledgebase.nomachine.com/DT10R00166'''component Various component related sub-commands
'''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.''':daemon Various daemon related sub-commands
'''Before operation, please ensure that the Windwos computer :doctor Check ROS setup 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.'''other potential issues
<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>interface Show information about ROS interfaces
'''Note that this download link may change, please recognize the DEB package of the ARMV8/ARM64 version.''':launch Run a launch file
[https://www.nomachine.com/download/download&id=112&s=ARM '''https://downloads.nomachine.com/download/?id=118&amp;distro=ARM''']lifecycle Various lifecycle related sub-commands
[[File:pi3bmulticast Various multicast related sub-img314.png|575x227px]]commands
<ol start="2" style="list-style-type: lowernode Various node related sub-alpha;"><li>In addition, you can also download the installation package to '''NoMachine''' in the '''official tools'''.</li></ol>commands
[[File:pi3bparam Various param related sub-img315.png|66x102px]]commands
<blockquote>First enter the '''remote login software-Nomachine''' folder</blockquote>[[File:pi3bpkg Various package related sub-img316.png|271x43px]]commands
<blockquote>Then download the ARM64 version of the DEB installation :run Run a package</blockquote>[[File:pi3b-img317.png|180x109px]]specific executable
<ol start="3" style="list-style-type: lowersecurity Various security related sub-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>commands
orangepi@orangepi:~$ '''sudo dpkg service Various service related sub-i nomachine_x.x.x_x_arm64_arm64.deb'''commands
<ol start="2" style="list:topic Various topic 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.''':wtf Use `wtf` as alias to `doctor`
'''https://downloads.nomachine.com/download/?id=9'''
 
[[File:pi3b-img318.png|575x163px]]
:Call `ros2 &lt;command&gt; -h` for more detailed usage.
|}
</ol>
<ol start="3" style="list-style-type: decimal;">
<li><p>Then install nomachine in Windows. '''Please restart you can use the computer after installation'''</p></li><li><p>Then open test_ros.sh'''NoMachine''' in Window</p>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>
[[File{| class="wikitable" style="width:pi3b800px;" |-img319| orangepi@orangepi3b:~$ '''test_ros.png|76x66px]]sh'''
<ol start="5" style="list-style-type[INFO] [1671174101.200091527] [talker]: 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>Publishing: 'Hello World: 1'
[INFO] [File:pi3b-img3201671174101.png|321x92px235661048] [listener]: I heard: [Hello World: 1]
<ol start="6" style="list-style-type[INFO] [1671174102.199572327] [talker]: Publishing: decimal;"><li>Then click '''OK''Hello World: 2'</li></ol>
[INFO] [File:pi3b-img3211671174102.png|402x275px204196299] [listener]: I heard: [Hello World: 2]
<ol start="7" style="list-style-type[INFO] [1671174103.199580322] [talker]: Publishing: decimal;"><li>Then enter the username and password of the Linux system in the corresponding position in the figure below, and then click '''OK''Hello World: 3' to start logging in</li></ol>
[INFO] [1671174103.204019965] [listener]: I heard: [Hello World: 3]|}<div /ol><ol start="4" style="list-style-type: decimal;"><li>Run the following command to open rviz2</li>{| class="figurewikitable" style="width:800px;">|-| orangepi@orangepi:~$ '''source /opt/ros/humble/setup.bash'''
[[Fileorangepi@orangepi:pi3b-img322.png~$ '''ros2 run rviz2 rviz2'''|303x204px|C:\Users\orangepi\Desktop\用户手册插图\Pi5 Plus\未标题-12.jpg未标题-12]]}
</div><ol startclass="8figure" 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>[[File:pi3b-img323.png|411x246px]]</p></li></ol>
<span id="use[[File:pi3b-vnc-remote-login"></span>=== Use VNC remote login ===img351.png]]
</div></ol><ol start="5" style="list-style-type: decimal;"><li>Reference documents</li>{| class="wikitable" style="width:800px;" |-| '''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 normallyhttp://docs.ros.org/en/humble/index.html'''
[http://docs.ros.org/en/galactic/Tutorials.html '''http://docs.ros.org/en/humble/Installation/Ubuntu 20.04 tests many problems with VNC, please do not use this method-Install-Debians.html''']|}</ol><span id="how-to-install-kernel-header-files"></span>
# First run the '''set_vnc.sh''' script settings, and '''remember == How to add Sudo permissions'''install kernel header files ==
orangepi@orangepi:~$ # The Linux image released by OPi comes with the deb package of the kernel header file by default, and the storage location is '''sudo set_vnc.sh/opt/'''
You will require a password to access your desktops.::{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''ls /opt/linux-headers*'''
Password: '''#Set the VNC password here, 8 /opt/linux-bit characters'''headers-legacy-rockchip-rk356x_x.x.x_arm64.deb|}
Verify<ol start="2" style="list-style-type: decimal;"><li>Use the following command to install the deb package of the kernel header file</li>{| class="wikitable" style="background-color:#ffffdc;width: 800px;" |-| <big>'''#Set The name of the kernel header file deb package needs to be replaced with the VNC password hereactual name, please do not copy it.'''</big>|}{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo dpkg -i /opt/linux-headers-legacy-rockchip-rk356x_1.x.x_arm64.deb'''|}</ol><ol start="3" style="list-style-type: decimal;"><li>After installation, 8 you can see the folder where the kernel header files are located under '''/usr/src'''</li>{| class="wikitable" style="width:800px;" |-bit characters| orangepi@orangepi:~$ '''ls /usr/src'''
Would linux-headers-5.10.160-rockchip-rk356x|}</ol><ol start="4" style="list-style-type: decimal;"><li><p>Then you like can write a hello kernel module to enter a viewtest the kernel header file</p><ol style="list-style-type: lower-only password (yalpha;"><li>First write the code of the hello kernel module, as follows:</n)? li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''nvim hello.c'''
xauth: file <p>#include &lt;linux/rootinit.h&gt;</.Xauthority does not existp>
New 'X' desktop is orangepi3b:1<p>#include &lt;linux/module.h&gt;</p>
Creating default startup script /root/.vnc/xstartup
Starting applications specified in /root/.vnc/xstartupstatic int hello_init(void)
Log file is /root/.vnc/orangepi3b:1.log{
Killing Xtightvnc process ID 3047:printk(&quot;Hello Orange Pi -- init\n&quot;);
New 'X' desktop is orangepi3b:1
Starting applications specified in /root/.vnc/xstartup:return 0;
Log file is /root/.vnc/orangepi3b:1.log}
<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: </p><ol style="list-style-type: lower-alpha;"><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></ol>static void hello_exit(void)
<div class="figure">{
[[File:pi3bprintk(&quot;Hello Orange Pi -img324.png|490x349px|图片1208]]- exit\n&quot;);
</div>
<ol start="2" style="list-style-type: lower-alpha;">
<li>Then enter the password of the previously set VNC</li></ol>
[[File:pi3b-img325.png|274x131px]]return;
<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 ==
<span id="debian-bullseye-system"></span>=== Debian Bullseye system ===module_init(hello_init);
<ol style="list-style-type: decimalmodule_exit(hello_exit);"><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>
orangepi@orangepi:~$ '''gcc --version'''
gcc MODULE_LICENSE(Debian 10.&quot;GPL&quot;);|}</ol><ol start="2.1" 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;" |-6) 10.2.1 20210110| orangepi@orangepi:~$ '''vim Makefile'''
Copyright ifneq (C$(KERNELRELEASE) 2020 Free Software Foundation, Inc.)
This is free software; see the source for copying conditionsobj-m:=hello. There is NOo
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.else
<ol startKDIR :="2" style="list/lib/modules/$(shell uname -style-type: lower-alpha;"><li>Write C language of '''Hello_world.c''' program</li><r)/ol>build
orangepi@orangepiPWD :~=$ '''vim hello_world.c'''(shell pwd)
#include &lt;stdio.h&gt;all:
int main:make -C $(voidKDIR)M=$(PWD) modules
{clean:
printf(&quot;Hello World!\n&quot;); return 0; }: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 and run the hello kernel module. The output of the compilation process is as follows:</li>{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''hello_worldIf 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.c'''</li></olbig>
[[File:pi3b-img352.png|center]]|}{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''gcc -o hello_world hello_world.cmake'''
orangepi@orangepi:~$ '''make -C /lib/modules/5.10.160-rockchip-35xx/build M=/home/hello_world'''orangepi modules
Hello World!make[1]: Entering directory '/usr/src/linux-headers-5.10.160-rockchip-rk35xx'
<ol start="2" style="list-style-type: decimal;"><li><p>Debian BullSeye Default with Python3<CC [M] /p><ol style="list-style-type: lower-alpha;"><li>The specific version of Python is shown below</li></ol><home/li><orangepi/ol>hello.o
:MODPOST /home/orangepi@orangepi:~$ '''python3'''/Module.symvers
'''Python 3:CC [M] /home/orangepi/hello.9mod.2''' (default, Feb 28 2021, 17:03:44)o
:LD [GCC 10M] /home/orangepi/hello.2.1 20210110] on linuxko
Type &quot;help&quotmake[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, &quot;copyright&quot;, &quot;credits&quot; or &quot;license&quotthe '''hello.ko''' kernel module will be generated</li>{| class="wikitable" style="width:800px; for more information" |-| orangepi@orangepi:~$ '''ls *.ko'''
&gthello.ko|}</ol><ol start="5" style="list-style-type: lower-alpha;&gt"><li>Use the '''insmod''' command to insert the '''hello.ko''' kernel module into the kernel</li>{| class="wikitable" style="width:800px;&gt" |-| 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="2wikitable" style="list-style-typewidth: lower-alpha800px;"><li>|-| orangepi@orangepi:~$ '''hello_world.pydmesg | grep &quot;Hello&quot;''' program in Python language</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:~$ '''vim hello_world.pysudo rmmod hello''' orangepi@orangepi:~$ '''dmesg | grep &quot;Hello&quot;'''
print('[ 2871.893988] Hello World!')Orange Pi -- init
<ol start="3" style="list-style-type: lower-alpha;"><li>The results of running [ 3173.800892] '''hello_world.pyHello Orange Pi -- exit''' are shown below|}</ol></li></ol><span id="use-of-the-raspberry-pis-5-inch-screen"></span>
orangepi@orangepi:~$ '''python3 hello_world.py''== Use of the Raspberry PI's 5-inch screen ==
Hello World!<span id="assembly-method-of-raspberry-pi-5-inch-screen"></span>=== Assembly method of Raspberry PI 5-inch screen ===
<ol start="3" style="list-style-type: decimal;"><li><p>Debian Bullseye's compilation tool and operating environment that is not installed in Java by defaultFirst prepare the required accessories</p>
<ol style="list-style-type: lower-alpha;">
<li>You can use the following command to install OpenJDK. The latest version in Debian Bullseye is openjdkRaspberry PI 5-17inch MIPI LCD display + touch screen</li></ol></li></ol> orangepi@orangepi:~$ '''sudo apt install -y openjdk-17-jdk'''
[[File:pi3b-img353.png]]
</ol>
<ol start="2" style="list-style-type: lower-alpha;">
<li>After installation, you can check the version of Java15pin MIPI cable</li></ol>
orangepi@orangepi[[File:~$ '''java pi3b-img354.png]]</ol></li></ol><ol start="2" style="list-version'''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>
[[File:pi3b-img355.png]]</ol><ol start="3" style="list-style-type: lower-alphadecimal;"><li>Edit Finally connect to the '''hello_world.java''' LCD interface of the Jave versionOrange Pi 3B development board</li></ol>
orangepi@orangepi[[File:~$ '''vim hello_worldpi3b-img356.java'''png]]</ol><span id="open-the-raspberry-pi-5-inch-screen-configuration-method"></span>
public class hello_world=== Open the Raspberry PI 5-inch screen configuration method ===
<ol style="list-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>First run '''orangepi-config''', ordinary users remember to add '''sudo''' permission</li>{| class="wikitable" style="width:800px;" |-public static void main(String[] args)| orangepi@orangepi:~$ '''sudo orangepi-config'''{|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li>Then select '''System.out.println(&quot;Hello World!&quot;);'''</li>
}[[File:pi3b-img357.png]]</ol>}<ol start="3" style="list-style-type: lower-alpha;"><li>Then select '''Hardware'''</li>
[[File:pi3b-img358.png]]
</ol>
<ol start="4" style="list-style-type: lower-alpha;">
<li>Then compile use the arrow keys on the keyboard to locate the Rasp-7inch-touchscreen, and run '''hello_world.java'''then use the space button to check</li></ol>
orangepi@orangepi[[File:~$ pi3b-img359.png]]</ol><ol start="5" style="list-style-type: lower-alpha;"><li>Then select '''javac hello_world.java&lt;Save&gt;'''to save</li>
orangepi@orangepi[[File:~$ pi3b-img360.png]]</ol><ol start="6" style="list-style-type: lower-alpha;"><li>Then select '''java hello_world&lt;Back&gt;'''</li>
Hello World![[File:pi3b-img361.png]]</ol><ol start="7" style="list-style-type: lower-alpha;"><li>Then select '''&lt;Reboot&gt;''' to restart the system for the configuration to take effect</li>
<span id="ubuntu[[File:pi3b-focal-system"></span>=== Ubuntu Focal system ===img362.png]]
<ol {| class="wikitable" style="listbackground-style-typecolor:#ffffdc;width: decimal800px;">|-| <libig><p>Ubuntu Focal has '''The above settings will eventually add the GCC compilation tool chain by default, which can compile the C language program directly in the Linux system configuration of the development board.</p><ol span style="list-style-typecolor: lower-alpha;#FF0000"><li>The version of the gcc is shown below</li>overlays=raspi-7inch-touchscreen</olspan><to /li><boot/ol>orangepiEnv.txt. After setting, you can check it first. If this configuration does not exist, then there is a problem with the settings.'''
orangepi@orangepi:~$ '''gcc If you find it troublesome to use orangepi-config, you can also use the vim editor to open /boot/orangepiEnv.txt, and then add the configuration of <span style="color:#FF0000">overlays=raspi-7inch-versiontouchscreen</span> is also possible.'''</big>
gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0
Copyright (C) 2019 Free Software Foundation, Incorangepi@orangepi:~$ '''cat /boot/orangepiEnv.txt | grep "raspi"'''
This is free software'''<span style="color:#FF0000">overlays=raspi-7inch-touchscreen #Sample configuration</span>'''|}</ol></li></ol><ol start="3" style="list-style-type: decimal; "><li>After startup, you can see the source for copying conditions. There is NOlcd screen display as follows:</li>
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE[[File:pi3b-img363.png]]</ol><span id="the-method-of-server-version-image-rotation-display-direction"></span>
<ol start="2" style="list-style-type: lower-alpha;"><li>'''hello_world.c''' program to write C language</li></ol>= The method of server version image rotation display direction ===
orangepi@orangepi<ol start="1" style="list-style-type:~$ decimal;"><li><p>Add '''vim hello_worldextraargs=fbcon=rotate:the direction to rotate''' in '''/boot/orangepiEnv.ctxt'''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>
#include &lt<ol style="list-style-type: lower-alpha;stdio"><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.h&gt;txt'''
int main(void)overlays=lcd1
'''<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>
printf(&quot;Hello World!\n&quot;);<span id="method-of-rotating-display-and-touch-direction-of-desktop-version-image"></span>
return 0;=== Method of rotating display and touch direction of desktop version image ===
} <ol start="3" style="list-style-type: lower-alpha;"><li>Then compile and run # First open '''hello_world.c'''</li></ol> orangepi@orangepi:~$ '''gcc -o hello_world hello_world.cDisplay'''Settings in Linux
orangepi@orangepi:~$ ''':[[File:pi3b-img364./hello_world''' Hello World!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''' Python 3.8.10 (default, Nov 14 2022, 12:59:47) [GCC 9.4.0] on linux Type &quot;help&quot;, &quot;copyright&quot;, &quot;credits&quot; or &quot;license&quot; for more information. &gt;&gt;&gt;</li>
[[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.sh''' script to rotate the direction of the touch. After the script is set, it will automatically restart, and then you can test whether the touch has been used normally.</p>
<ol style="list-style-type: lower-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>'''hello_world.pyLeft''' program in Python language: rotate left 90 degrees</li></ol>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''vim hello_worldset_lcd_rotate.pysh left'''|}print('Hello World!')</ol>
<ol start="3" style="list-style-type: lower-alpha;">
<li>The results of running '''hello_worldInverted''': Flip up and down, which is equivalent to rotating 180 degrees</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''set_lcd_rotate.pysh inverted''' are shown below|}</ol><ol start="4" style="list-style-type: lower-alpha;"><li>'''Right''': rotate right 90 degrees</olli>{| 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:'''
orangepi@orangepi:~$ '''python3 hello_world.py'''
Hello World!'''1. Rotate the direction displayed by the framebuffer'''
<ol start="3" style="list-style-type: decimal;"><li><p>Ubuntu Focal's compilation tool and operating environment without ''2. Rotate the installation direction of Java default</p><ol style="list-style-type: lower-alpha;"><li>You can use the following command to install '''openjdk-17touch'''</li></ol></li></ol>
orangepi@orangepi:~$ '''sudo apt install -y openjdk-17-jdk3. Turn off the boot logo'''
<ol start="2" style="list-style-type: lower-alpha;"><li>After installation, you can check '''4. Restart the version of Java</li></ol>system'''
orangepi@orangepi:~$ '''java --version'''
openjdk 17'''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/X11/xorg.0conf.2 2022d/40-01libinput.conf Where &quot;x x x x x x x x x&quot; is configured differently for different directions.'''</big>|}</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-18logo"></span>
OpenJDK Runtime Environment (build 17.0.2+8-Ubuntu-120.04)== Instructions for using the switch logo ==
OpenJDK 64-Bit Server VM (build 17# 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.0.2+8-Ubuntu-120.04, mixed mode, sharing)txt''' to turn off the switch logo
<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 class hello_world'''<span style="color:#FF0000">bootlogo=false</span>'''|}
{<ol start="3" style="list-style-type: decimal;"><li>Set the '''bootlogo''' variable to '''true''' in '''/boot/orangepiEnv.txt''' to enable the switch logo</li>
public static void main(String[] args){| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''vim /boot/orangepiEnv.txt'''
{verbosity=1
System.out'''<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="wikitable" style="width:800px;" |-| '''/usr/share/plymouth/themes/orangepi/watermark.println(&quot;Hello World!&quotpng'''|}</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><span id="how-to-use-the-zfs-file-system"></span>
}== How to use the ZFS file system ==
}{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''The latest version of Ubuntu20.04, Ubuntu22.04, Debian11 and Debian12 <span style="color:#FF0000">desktop version systems</span> have pre-installed zfs, you can use it directly.'''
<ol start="4" style="list-style-type: lower-alpha;"><li>Then compile and run '''hello_worldThe pre-installed zfs version in Ubuntu20.04 and Ubuntu22.04 desktop systems is 2.1.6.java'''</li></ol>
orangepi@orangepi:~$ '''javac hello_worldThe pre-installed zfs version in Debian11 and Debian12 desktop systems is 2.1.11.java'''
orangepi@orangepi:~$ '''java 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.'''</big>
Hello World!orangepi@orangepi:~$ '''lsmod | grep &quot;zfs&quot;'''
<span id="ubuntu-jammy-system"></span>=== Ubuntu jammy system ===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
<ol style="list-style-type: decimalzunicode &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; 327680 &nbsp;&nbsp;&nbsp; 1 &nbsp; zfs
orangepi@orangepi:~$ '''gcc --version'''zzstd &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; 471040 &nbsp;&nbsp;&nbsp; 1 &nbsp; zfs
gcc (Ubuntu 11.2.0-19ubuntu1) '''11.2.0'''zlua &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; 139264 &nbsp;&nbsp;&nbsp; 1 &nbsp; zfs
Copyright (C) 2021 Free Software Foundation, Inc.zcommon &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 69632 &nbsp;&nbsp;&nbsp; 1 &nbsp; zfs
This is free softwareznvpair &nbsp; see the source for copying conditions. There is NO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 61440 &nbsp;&nbsp;&nbsp; 2 &nbsp; zfs,zcommon
warrantyzavl &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; 16384 &nbsp;&nbsp;&nbsp; 1 &nbsp; zfs
<ol start="2" style="list-style-type: lower-alphaicp &nbsp;"><li>Write the '''hello_world.c''' program of c language</li></ol>&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
orangepi@orangepi:~$ '''vim hello_world.c'''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|}
#include &lt;stdio.h&gt;<span id="how-to-install-zfs"></span>=== How to install ZFS ===
int main(void){| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''Before installing zfs, please make sure that the Linux image used is the latest version. In addition, if zfs is already installed in the system, it needs to be installed again.'''</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#How to install kernel header files|'''section on the method of installing the kernel header file''']].
printf(&quot;Hello World!\n&quot;);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.
return 0;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.
}[[File:pi3b-img368.png]]
<ol start="3" style="list-style-type: lower-alpha;"><li>Then compile and run 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 '''hello_world[[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]].c'''</li></ol>
orangepi@orangepi:~$ After the upload is complete, use the '''gcc -o hello_world hello_world.ccd'''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.
{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo apt install ./hello_world*.deb'''|}
Hello World!After the installation is complete, use the following command to see the zfs-related kernel modules:
<ol start{| class="2wikitable" style="list-style-typewidth: decimal800px;"><li><p>Ubuntu jammy is installed with Python3 by default<|-| orangepi@orangepi:~$ '''ls /p><ol style="listlib/modules/5.10.160-style-type: lowerrockchip-alpha;"><li>Python3 specific version is shown below<rk356x/li></ol><updates/li><dkms/ol>'''
orangepi@orangepi:~$ '''python3icp.ko spl.ko zavl.ko zcommon.ko zfs.ko zlua.ko znvpair.ko zunicode.ko zzstd.ko'''|}
Python '''3.10.4''' (main, Apr 2 2022, 09Then restart the Linux system to see that the zfs kernel module will be automatically loaded:04:19) [GCC 11.2.0] on linux
Type &quot{| class="wikitable" style="width:800px;help&quot;, &quot;copyright&quot;, &quot;credits&quot; or &quot;license&quot; for more information." |-| orangepi@orangepi:~$ '''lsmod | grep "zfs"'''
zfs &gtnbsp;&gtnbsp;&gtnbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2801664 &nbsp;&nbsp;&nbsp; 0
<ol start="2" style="list-style-type: lower-alphazunicode &nbsp;"><li>Edit '''hello_world.py''' program in Python language</li></ol>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 327680 &nbsp;&nbsp;&nbsp; 1 &nbsp; zfs
orangepi@orangepi:~$ '''vim hello_world.py'''zzstd &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; 471040 &nbsp;&nbsp;&nbsp; 1 &nbsp; zfs
print('Hello World!')zlua &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; 139264 &nbsp;&nbsp;&nbsp; 1 &nbsp; zfs
<ol start="3" style="list-style-type: lower-alphazcommon &nbsp;"><li>The results of running '''hello_world.py''' are shown below</li></ol>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 69632 &nbsp;&nbsp;&nbsp; 1 &nbsp; zfs
orangepi@orangepi:~$ '''python3 hello_world.py'''znvpair &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 61440 &nbsp;&nbsp;&nbsp; 2 &nbsp; zfs,zcommon
Hello World!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
<ol start="3" style="list-style-type: decimalicp &nbsp;"><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&nbsp;"><li>You can use the following command to install openjdk-18</li></ol></li></ol>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 221184 &nbsp;&nbsp;&nbsp; 1 &nbsp; zfs
orangepi@orangepi:~$ '''sudo apt install -y openjdk-18-jdk'''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="In Debian12, the default version of zfs is 2" style="list-style-type: lower-alpha;"><li>After installation.1.11, you so we can check install zfs directly through the version following command. Again, please make sure that the system has installed the deb package of Java</li></ol>the kernel header file before installation.
{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''java sudo apt install -y zfsutils-linux zfs-versiondkms'''|}
openjdk 18<span id="methods-ea 2022of-03creating-22zfs-pools"></span>
OpenJDK Runtime Environment (build 18-ea+36-Ubuntu-1)=== Methods of creating ZFS pools ===
OpenJDK 64{| class="wikitable" style="background-Bit Server VM (build 18color:#ffffdc;width:800px;" |-ea+36-Ubuntu-1| <big>'''ZFS is based on storage pools, mixed modewe can add multiple physical storage devices to the pool, sharing)and then allocate storage space from this pool.'''
<ol start="3" style="list-style-type: lower-alpha;"><li>Edit the '''hello_worldThe following content is demonstrated based on the development board connected to an NVMe SSD and a USB flash drive.java''' of the Jave version</li></olbig>|}
orangepi@orangepi:~$ # First, we can use the '''vim hello_world.javalsblk'''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:
public class hello_world::[[File:pi3b-img369.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:~$ '''sudo 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 static void main(String[[File:pi3b-img370.png]] args)</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="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
System.outtmpfs &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.println(6G &quotnbsp;Hello World!&quotnbsp;)&nbsp;18M 1.6G 2% /run <br>
}/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>
<ol start="tmpfs &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5.0M &nbsp;&nbsp;&nbsp; 4" style="list-style-type: lower-alpha;"><li>Then compile and .0K 5.0M 1% /run '''hello_world.java'''</li>lock </olbr>
orangepi@orangepi:~$ '''javac hello_worldtmpfs &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7.java'''7G &nbsp;&nbsp;&nbsp; 944K 7.7G 1% /tmp <br>
orangepi@orangepi:~$ '''java hello_world'''/dev/mmcblk0p1 &nbsp;&nbsp;&nbsp; 1022M &nbsp;&nbsp;&nbsp; 115M 908M 12% /boot <br>
Hello World!/dev/zram1 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 188M &nbsp;&nbsp;&nbsp; 4.5M 169M 3% /var/log <br>
tmpfs &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.6G &nbsp;&nbsp;&nbsp; 80K 1.6G 1% /run/user/1000 <span id="qt-installation-method"></spanbr>== QT installation method ==
'''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 script command to install QT5 and QT Creatorsee that the file system type of pool1 is zfs</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''mount | grep pool1'''
orangepi@orangepi:~$ pool1 on /pool1 type '''install_qt.sh<span style="color:#FF0000">zfs</span>'''(rw,xattr,noacl)|}</ol><ol start="26" style="list-style-type: decimal;"><li><p>The QT version number will be automatically printed after installationThen we can test copying a file to the ZFS pool</pli><ol {| class="wikitable" style="list-style-typewidth: lower-alpha800px;"><li>Ubuntu20.04 comes with QT version |-| orangepi@orangepi:~$ '''5sudo cp -v /usr/local/test.12.8mp4 /pool1/'''</li></ol></li></ol>
orangepi@orangepi:~$ '/usr/local/test.mp4'-&gt; 'install_qt/pool1/test.sh''mp4'|}</ol><span id="test-the-data-deduplication-function-of-zfs"></span>
......=== Test the data deduplication function of ZFS ===
QMake version 3.1# 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:~$ '''sudo zfs set dedup=on pool1'''|}
Using Qt version <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>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''5.12.8cd /pool1/''' in /usr/lib/aarch64-linux-gnu
<ol start="2" style="list-style-typeroot@orangepi: lower-alpha;"><li>Ubuntu22.04 comes with QT version /pool1$ '''5sudo dd if=/dev/urandom of=test.15.31g bs=1M count=1024'''</li></ol>
orangepi@orangepi:~$ '''install_qt.sh'''1024+0 records in
......1024+0 records out
QMake 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$ '''for ((i=0; i&lt;1000; i++)); do sudo cp test.1g $i.test.11g; 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</li>{| class="wikitable" style="width:800px;" |-| root@orangepi:/pool1$ '''du -lh'''
Using Qt version 1002G|}</ol><ol start="5" style="list-style-type: decimal;"><li>Then use the '''5.15.3zpool list''' in /usr/libcommand to see that only 1.01G is actually occupied, because these 1001 files are all duplicates, indicating that the data deduplication function is effective.</aarch64-linux-gnuli>
[[File:pi3b-img371.png]]</ol start><span id="3" style="listtest-the-data-compression-stylefunction-type: lowerof-alpha;zfs"><li>Debian11 comes with QT version '''5.15.2'''</li></olspan>
orangepi@orangepi:~$ '''install_qt.sh'''=== 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
QMake version 3.1::{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''cd /pool1/'''
Using Qt version root@orangepi:/pool1$ '''5sudo tar -cf text.15.2tar /var/log/ /etc/''' in /usr/lib/aarch64-linux-gnu|}
<ol start="42" style="list-style-type: lower-alphadecimal;"><li>Debian12 comes with QT version Then the file size that can be seen through the '''ls -lh'''5.15.8command and the space occupied in the ZFS pool are both '''27M'''</li></ol>
[[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$ '''install_qtsudo tar -cf text.shtar /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>
[[File:pi3b-img373......png]]</ol><span id="how-to-shut-down-and-restart-the-development-board"></span>
QMake version 3.1== How to shut down and restart the development board ==
Using Qt version # 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 '''5.15.8poweroff''' in /usr/lib/aarch64-linux-gnucommand to shut down the Linux system of the development board before powering off. Then unplug the power again.
<ol start::{| class="3wikitable" style="list-style-typewidth: decimal800px;"><li>Then you can see the QT Creator launch icon in |-| orangepi@orangepi:~$ '''Applicationssudo poweroff'''</li></ol>|}
[[File<ol start="2" style="list-style-type:pi3b-img327decimal;"><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.png|576x270px]]</li>
QT Creator can also be opened using the following command[[File:pi3b-img374.png]]
orangepi@orangepi{| class="wikitable" style="background-color:~$ #ffffdc;width:800px;" |-| <big>'''qtcreatorNote 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>
'''During [[File:pi3b-img375.png|center]]|}</ol><ol start="3" style="list-style-type: decimal;"><li>Short press the startup of QT and QT applications, if switch button on the following error is displayed, ignore it. This error has no impact on application runningdevelopment board after shutting down to start up.'''</li>
[[File:pi3b-img374.png]]</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:~$ '''libGL error: failed to create dri screensudo''' '''libGL error: failed to load driver: rockchipreboot'''|}</ol><span id="linux-sdkorangepi-build-instructions"></span>
= '''libGL error: failed to create dri screenLinux SDK——orangepi-build instructions'''=
'''libGL error: failed to load driver: rockchip'''<span id="compilation-system-requirements"></span>== Compilation system requirements ==
<ol start{| class="4wikitable" style="listbackground-style-typecolor:#ffffdc;width: decimal800px;">|-| <li>The interface after QT Creator is opened is as follows</li></olbig>'''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.'''
[[File:pi3b-img328.png|418x222px]]
<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 '''Ubuntu20If you use orangepi-build to compile the Linux image in the Ubuntu22.04system 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.''' is as follows</li></olbig></li></ol>|}
[[File:pi3b<span id="compile-img329with-the-ubuntu22.04-system-of-the-development-board"></span>=== Compile with the Ubuntu22.png|419x224px]]04 system of the development board ===
<ol start="2" style="list# The Linux SDK, namely '''orangepi-stylebuild''', supports running on the '''Ubuntu 22.04''' of the development board (other systems have not been tested), so before downloading orangepi-type: lower-alpha;"><li>build, please first ensure that the Ubuntu version installed on the development board is Ubuntu 22.04. The default command to check the Ubuntu version of QT Creator in installed on the development board is as follows. If the Release field does not display '''Ubuntu2222.04''' is as follows</li></ol>, it means that the current Ubuntu version does not meet the requirements. Please replace the system before performing the following operations.
[[File:pi3b:{| class="wikitable" style="width:800px;" |-img330.png|443x237px]]orangepi@orangepi:~$ '''lsb_release -a'''
<ol start="3" style="list-style-type: lower-alpha;"><li>The default version of QT Creator in '''Debian11''' is as follows</li></ol>No LSB modules are available.
[[FileDistributor ID:pi3b-img331.png|444x238px]]Ubuntu
<ol start="4" style="list-style-typeDescription: lower-alpha;"><li>The default version of QT Creator in '''Debian12''' is as follows</li></ol>Ubuntu 22.04.1 LTS
[[FileRelease:pi3b-img332'''<span style="color:#FF0000">22.png|449x277px]]04</span>'''
<ol start="6" style="list-style-typeCodename: decimal;">jammy<li><p>Then set QT</p><ol style="list-style-type: lower-alpha;"><li>First open '''Help'''-&gt;'''About Plugins...'''</li></ol></li></ol>|}
[[File<ol start="2" style="list-style-type: decimal;"><li>'''<span style="color:pi3b#FF0000">Since the source codes such as the kernel and U-img333boot are stored on GitHub, it is very important to ensure that the development board can download codes from GitHub normally when compiling the image.png|573x164px]]</span>'''</li></ol>
<ol startspan id="2" style="listcompile-with-stylex64-type: lowerubuntu22.04-alpha;computer"><li>Then remove the check box for '''ClangCodeModel'''</li></olspan>
[[File:pi3b-img334=== Compile with x64 Ubuntu22.png|408x254px]]04 computer ===
<ol start="3" style="list# The Linux SDK, '''orangepi-style-type: lower-alpha;"><li><p>build''', supports running on computers with '''Restart QT Creator after the Settings are completeUbuntu 22.04'''</p></li><li><p>Then installed, so before downloading orangepi-build, please make sure that QT Creator uses the GCC compiler, if Ubuntu version installed on your computer is Ubuntu 22.04. The command to check the Ubuntu version installed on the default computer is Clangas follows. If the Release field does not display '''22.04''', change it to GCC</p></li></ol>means that the current Ubuntu version does not meet the requirements. Please replace the system before performing the following operations.
::{| class="wikitable" style="width:800px;" |-| test@test:~$ '''Debian12 Please skip this step.lsb_release -a'''
[[File:pi3b-img335No LSB modules are available.png|576x315px]]
[[FileDistributor ID:pi3b-img336.png|575x307px]]Ubuntu
<ol start="7" style="list-style-typeDescription: decimal;"><li>You can then open a sample code</li></ol>Ubuntu 22.04 LTS
[[FileRelease:pi3b-img337'''<span style="color:#FF0000">22.png|575x312px]]04</span>'''
<ol start="8" style="list-style-typeCodename: decimal;">jammy<li>Clicking on the example code will automatically open the corresponding instruction document, you can carefully read the instructions</li></ol>|}
[[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-img338build has not been tested in the WSL virtual machine, so it cannot be guaranteed that orangepi-build can be used normally in WSL.png|576x218px]]</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>
<ol start{| class="9wikitable" style="list-style-typewidth: decimal800px;"><li>Then click |-| [https://repo.huaweicloud.com/ubuntu-releases/21.04/ubuntu-21.04-desktop-amd64.iso '''Configure Projecthttps://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/22.04/ubuntu-22.04-desktop-amd64.iso'''</li></ol>]
[[File:pi3b-img339.png|575x304px]]Or
'''https://repo.huaweicloud.com/ubuntu-releases/22.04/ubuntu-22.04.1-desktop-amd64.iso'''|}</ol><ol start="104" style="list-style-type: decimal;"><li>Then click <p>After installing Ubuntu 22.04 on the green triangle in computer or virtual machine, please set the lower left corner software source of Ubuntu 22.04 to Tsinghua source, otherwise it is easy to make mistakes due to compile and run network reasons when installing the sample codesoftware 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</olli>
[[File{| class="wikitable" style="width:pi3b800px;" |-img340| '''https://mirrors.tuna.tsinghua.edu.pngcn/help/ubuntu/'''|575x312px]]}</ol><ol start="2" style="list-style-type: lower-alpha;"><li>Note that the Ubuntu version needs to be switched to 22.04</li>
[[File:pi3b-img376.png]]</ol><ol start="113" style="list-style-type: decimallower-alpha;"><li>After waiting for a period The content of time, the interface shown in the following figure will pop up, which indicates '''/etc/apt/sources.list''' file that QT can compile and run normallyneeds to be replaced is</li></ol>
[[File{| class="wikitable" style="width:pi3b800px;" |-img341| test@test:~$ '''sudo mv /etc/apt/sources.png|576x308px]]list /etc/apt/sources.list.bak'''
<ol start="12" style="list-style-typetest@test: decimal;"><li>Reference documents<~$ '''sudo vim /li><etc/ol>apt/sources.list'''
https:<p># By default, the source image is commented to improve the speed of apt update, you can uncomment it yourself if necessary<//wiki.qt.io/Install_Qt_5_on_Ubuntup>
deb https://downloadmirrors.qttuna.iotsinghua.edu.cn/archiveubuntu/qtcreatorjammy main restricted universe multiverse
<p># deb-src https://downloadmirrors.qttuna.iotsinghua.edu.cn/ubuntu/archivejammy main restricted universe multiverse</qtp>
<span id="rosdeb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-installation-method"></span>== ROS Installation Method ==updates 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">updates 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'''deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
[[File<p># deb-src https:pi3b//mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-img342.png|345x235px]]backports main restricted universe multiverse</p>
[[Filedeb https:pi3b//mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-img343.png|576x210px]]security main restricted universe multiverse
[http<p># deb-src https://docsmirrors.rostuna.orgtsinghua.edu.cn/ http:ubuntu/jammy-security main restricted universe multiverse</docs.ros.org]p>
'''https://wiki.ros.org/Distributions'''
<ol start="2" style="list-stylep># Pre-type: decimal;"><li>The official installation document link of ROS 1 '''Noetic Ninjemys''' is as follows:</li>release software source, not recommended to enable</olp>
[http<p># deb https://wikimirrors.rostuna.org/noetic/Installation/Ubuntu '''http://wikitsinghua.rosedu.orgcn/noeticubuntu/Installationjammy-proposed main restricted universe multiverse</Ubuntu''']p>
<p># deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse</p>|}</ol><ol start="34" style="list-style-type: decimallower-alpha;"><li>In After the replacement, you need to update the official installation document of ROS package information and make sure there is no error</li>{| class="wikitable" style="width:800px;" |-| test@test:~$ '''Noetic Ninjemyssudo apt update'''|}</ol><ol start="5" style="list-style-type: lower-alpha;"><li>'''<span style="color:#FF0000">In addition, Ubuntu recommends using Ubuntu20.04since the source codes such as the kernel and U-boot are stored on GitHub, so please make sure it is very important to ensure that the system used by computer can download codes from GitHub normally when compiling the development board is '''Ubuntu20image.04 desktop system</span>'''</li></ol> http:</li></wiki.ros.org/noetic/Installationol> [[File:pi3b<span id="get-the-source-code-of-linux-img344.png|312x176px]]sdk"></span>
<ol start="4" style="list-style-type: decimal;"><li>Then use Get the script below to install ros1</li></ol>source code of Linux sdk ==
<span id="download-orangepi@orangepi3b:~$ '''install_ros.sh ros1'''-build-from-github"></span>=== Download orangepi-build from github ===
<ol start="5" style="list# The Linux sdk actually refers to the code of orangepi-stylebuild. orangepi-type: decimal;"><li>Before using build is modified based on the ROS toolarmbian build system. Using orangepi-build, you first need to initialize rosdep, and then you multiple versions of Linux images can quickly install some system dependencies and some core components in ROS when compiling be compiled. First download the source code</li></ol>of orangepi-build, the command is as follows:
::{| class="wikitable" style="width:800px;" |-| test@test:~$ '''Note that running the following command needs to ensure that the development board can access github normally, otherwise an error will be reported due to network problems.sudo apt-get update'''
test@test:~$ '''The install_ros.sh script will try to modify /etc/hosts and automatically run the following commands. However, this method 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 of the development board to access github normally, and then manually run the following Order.sudo apt-get install -y git'''
test@test:~$ '''git clone https://raw.githubusercontentgithub.com/rosorangepi-xunlong/rosdistroorangepi-build.git -b next'''|}::{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''Note that the Orange Pi 3B development board needs to download the source code of the <span style="color:#FF0000">next</master/rosdep/osxspan> branch of orangepi-build. The above git clone command needs to specify the branch of the orangepi-homebrewbuild source code as next.yaml'''</big>
'''Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml'''<div class="figure">
'''ERROR[[File: error loading sources list:'''pi3b-img377.png|center]]
</div>|}::{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''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 read operation timed outname 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.'''</big>|}
orangepi@orangepi<ol start="2" style="list-style-type:~$ '''source decimal;"><li>The u-boot and Linux kernel versions currently used by the development board are as follows</opt/ros/noetic/setup.bash'''li>
orangepi@orangepi{| class="wikitable" style="width:800px;text-align: center;"|-|'''branch'''|'''u-boot version'''|'''Linux Kernel version'''|-|'''legacy'''|'''u-boot 2017.09'''|'''Linux5.10'''|}{| class="wikitable" style="background-color:#ffffdc;width:~$ 800px;" |-| <big>'''sudo rosdep initThe 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.'''
Wrote '''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.'''</big>|}</ol><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.</rosp></li><li><p>'''LICENSE''': GPL 2 license file</rosdepp></sourcesli><li><p>README.list.dmd: orangepi-build documentation</p></li><li><p>'''scripts''': General script for compiling Linux images</p></20li>{| class="wikitable" style="width:800px;" |-default.list| Recommendedtest@test: please run~/orangepi-build$ '''ls'''
rosdep update'''build.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:~$ '''rosdep update'''=== Download the cross-compilation toolchain ===
reading {| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''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 sources list data from the Ubuntu22.04 of the development board will not download the cross-compilation toolchain. At this time, orangepi-build/etc/ros/rosdeptoolchains will be an empty folder.'''</sources.list.dbig>|}
Hit https://raw# When orangepi-build runs for the first time, it will automatically download the cross-compilation toolchain and put it in the '''toolchains''' folder.githubusercontentEvery time after running the build.com/ros/rosdistro/master/rosdep/osxsh script of orangepi-build, it will check whether the cross-homebrewcompilation 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.yaml
Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml<div class="figure">
Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python:[[File:pi3b-img378.yamlpng]]
Hit </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://rawmirrors.tuna.tsinghua.githubusercontentedu.comcn/armbian-releases/ros_toolchain/rosdistro'''|}</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</masterli>{| class="wikitable" style="width:800px;" |-| test@test:~/rosdeporangepi-build$ '''ls toolchains/ruby.yaml'''
Hit https://rawgcc-arm-11.githubusercontent2-2022.com/ros/rosdistro/master/releases/fuerte.yaml02-x86_64-aarch64-none-linux-gnu
Query rosdistro index https://rawgcc-arm-11.githubusercontent2-2022.com/ros/rosdistro/master/index02-x86_64-arm-none-linux-v4.yamlgnueabihf
Skip endgcc-ofarm-life distro &quot;ardent&quot;9.2-2019.12-x86_64-aarch64-none-linux-gnu
Skip endgcc-ofarm-life distro &quot;bouncy&quot;9.2-2019.12-x86_64-arm-none-linux-gnueabihf
Skip endgcc-oflinaro-life distro &quot;crystal&quot;4.9.4-2017.01-x86_64_arm-linux-gnueabi
Skip endgcc-oflinaro-life distro &quot;dashing&quot;5.5.0-2017.10-x86_64_arm-linux-gnueabihf
Skip endgcc-oflinaro-life distro &quot;eloquent&quot;7.4.1-2019.02-x86_64_aarch64-linux-gnu
Add distro &quot;foxy&quot;gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabi
Add distro &quot;galactic&quot;gcc-linaro-aarch64-none-elf-4.8-2013.11_linux
Skip endgcc-oflinaro-life distro &quot;groovy&quot;arm-linux-gnueabihf-4.8-2014.04_linux
Add distro &quotgcc-linaro-arm-none-eabi-4.8-2014.04_linux|}</ol><ol start="4" style="list-style-type: decimal;humble&quot"><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;"><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;hydro&quot;build complete directory structure description ===
Skip end<ol style="list-style-type: decimal;"><li><p>The orangepi-build repository does not contain the source code ofthe 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-life distro &quottype: lower-alpha;indigo&quot"><li>The git repository where the Linux kernel source code is stored is as follows:</li>{| class="wikitable" style="width:800px;" |-| Skip end'''https://github.com/orangepi-ofxunlong/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-life distro &quotboot source code is stored is as follows:</li>{| class="wikitable" style="width:800px;jade&quot" |-| '''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>Skip end:<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 ofthe 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-life distro &quot;kinetic&quot;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>Skip end:<p>i. '''u-boot''': stores the source code ofu-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-life distro 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;&quotnbsp;lunarREADME.md &quotnbsp;&nbsp;&nbsp; scripts &nbsp;&nbsp;&nbsp; toolchains &nbspAdd distro &quotnbsp;melodic&quotnbsp; u-boot &nbspAdd distro &quotnbsp;noetic&quotnbsp;userpatches'''</p>|}</ol><span id="compile-u-boot"></span>
Add distro &quot;rolling&quot;== Compile u-boot ==
updated cache in /home/orangepi/# Run the build.ros/rosdep/sources.cachesh script, remember to add sudo permission
<ol start::{| class="6wikitable" style="list-style-typewidth: decimal800px;"><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@orangepitest:~/orangepi-build$ '''test_rossudo .sh'''</p></li><li><p>After running the '''test_rosbuild.sh''' script, a little turtle as shown in the figure below will pop up</p></li></ol>|}
<div class="figure"> [[File:pi3b-img345.png|575x275px|图片4]] </div><ol start="82" style="list-style-type: decimal;"><li>Then please keep the terminal window just opened at the topSelect '''U-boot package''', then enter</li></ol>
<div class="figure">
[[File:pi3b-img346img379.png|576x275px|图片5]] </div><ol start="9" style="list-style-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></ol> [[File:pi3b-img347.png|575x296px]] <span id="how-to-install-ros-2-galactic-on-ubuntu-20.04"></span>=== How to install ROS 2 Galactic on Ubuntu 20.04 === # The current active version of ROS 2 is as follows, the recommended version is '''Galactic Geochelone''' [[File:pi3b-img348.png|576x271px]] [[File:pi3b-img349.png|575x265px]] [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>The link to the official ROS 2 '''Galactic Geochelone''' installation documentation is as follows:</li></ol> '''docs.ros.org/en/galactic/Installation.html''' '''http://docs.ros.org/en/galactic/Installation/Ubuntu-Install-Debians.html'''
</div></ol>
<ol start="3" style="list-style-type: decimal;">
<li><p>It is recommended to use Ubuntu20.04 in Then select the official installation document model 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 '''install_ros.sh''' script to install ros2</p></li></ol>
orangepi@orangepi:~$ '''install_ros.sh ros2'''<div class="figure">
<ol start="5" style="list-style-type[[File: decimal;"><li>The '''install_ros.sh''' script will automatically run the '''ros2 pi3b-h''' command after installing ros2img380. If you can see the following print, it means that the ros2 installation is complete</li></ol>png]]
usage</div></ol><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: ros2 lower-alpha;"><li>u-boot source code version</li>{| class="wikitable" style="width:800px;" |-| [ o.k. ] Compiling u-boot [ '''v2017.09''' ]|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li>The version of the cross-compilation toolchain</li>{| class="wikitable" style="width:800px;" |-| [ o.k. ] Compiler version ['''aarch64-linux-gnu-hgcc 7.4.1''' ] Call `ros2 &lt|}</ol><ol start="3" style="list-style-type: lower-alpha;"><li>Path to the generated u-boot deb package</li>{| class="wikitable" style="width:800px;" |-| [ o.k. ] Target directory [ '''orangepi-build/output/debs/u-boot''' ]|}</ol><ol start="4" style="list-style-type: lower-alpha;"><li>The package name of the generated u-boot deb package</li>{| class="wikitable" style="width:800px;" |-| [ o.k. ] File name [ '''linux-u-boot-legacy-orangepi3b_1.0.0_arm64.deb''' ]|}</ol><ol start="5" style="list-style-type: lower-alpha;"><li>Compilation time</li>{| class="wikitable" style="width:800px;" |-| [ o.k. ] Runtime [ '''1 min''' ]|}</ol><ol start="6" style="list-style-type: lower-alpha;"><li>Repeat the command to compile u-boot, use the following command&gtto start compiling u-boot 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=u-boot KERNEL_CONFIGURE=no''' ]|}</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/'''
ros2 is an extensible 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 commandto decompress the deb package</li>{| class="wikitable" style="width:800px;" |-| test@test:~/orangepi-build$ '''cd output/debs/u-line tool for ROS 2.boot'''
optional argumentstest@test:~/orangepi_build/output/debs/u-boot$ $ '''dpkg -x''' \
'''linux-h, u-boot-help show this help message and exitlegacy-orangepi3b_1.0.0_arm64.deb . (Note that there is a &quot;.&quot; at the end of the command)'''
Commandstest@test:~/orangepi_build/output/debs/u-boot$ '''ls'''
action Various action related sublinux-commandsu-boot-legacy-orangepi3b_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/u-boot$ '''tree usr'''
bag Various rosbag related sub-commandsusr
component Various component related sub-commands└── lib
daemon Various daemon related sub:├── linux-commandsu-boot-legacy-orangepi3b_1.0.0_arm64
doctor Check ROS setup and other potential issues:│   ├── idbloader.img
interface Show information about ROS interfaces:│   ├── rkspi_loader.img
launch Run a launch file:│   └── u-boot.itb
lifecycle Various lifecycle related sub:└── u-commandsboot
multicast Various multicast related sub-commands::├── LICENSE
node Various node related sub::├── orangepi-commands3b-rk3566_defconfig
param Various param related sub-commands::└── platform_install.sh
pkg Various package related sub-commands
run Run a 3 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 specific executableis 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>
security Various security related subSet the IGNORE_UPDATES variable in userpatches/config-commandsdefault.conf to &quot;yes&quot;
service Various service related sub{| class="wikitable" style="width:800px;" |-commands| test@test:~/orangepi-build$ '''vim userpatches/config-default.conf'''
topic Various topic 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'''
wtf Use `wtf` as alias to `doctor`test@test:~/orangepi_build/output/debs/u-boot$ '''scp \'''
Call `ros2 &lt;command&gt; '''linux-u-boot-legacy-h` for more detailed usageorangepi3b_1.0.0_arm64.deb root@192.168.1.xxx:/root'''|}</ol><ol start="62" style="list-style-type: decimallower-alpha;"><li>Then you can use log in to the development board and uninstall the deb package of u-boot installed</li>{| class="wikitable" style="width:800px;" |-| root@orangepi:~# '''test_ros.shapt purge -y linux-u-boot-orangepi3b-legacy''' script to test whether ROS 2 is installed successfully. If you can see the following print, it means that ROS 2 can run normally|}</ol><ol start="3" style="list-style-type: lower-alpha;"><li>Install the new u-boot deb package just uploaded</olli>{| class="wikitable" style="width:800px;" |-| root@orangepi@orangepi3b:~$ # '''dpkg -i'''test_ros'''linux-u-boot-legacy-orangepi3b_1.sh0.0_arm64.deb'''|}</ol><ol start="4" style="list-style-type: lower-alpha;"><li>Then run the nand-sata-install script</li>[INFO] [1671174101.200091527] [talker]{| class="wikitable" style="width: Publishing800px;" |-| root@orangepi: ~# ''Hello World'nand-sata-install'''|}</ol><ol start="5" style="list-style-type: 1lower-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>
[INFO] [1671174101File:pi3b-img381.235661048png] [listener]</ol><ol start="6" style="list-style-type: I heard: [Hello World: 1]lower-alpha;"><li>After pressing the Enter key, a Warning will pop up first</li>
[INFO] [1671174102File:pi3b-img382.199572327png] [talker]</ol><ol start="7" style="list-style-type: Publishing: 'Hello World: 2'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>
[INFO] [1671174102File:pi3b-img383.204196299png] ]</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;" |-| [listenerhttps://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: I heardlower-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;" |-| [Hello Worldhttps: 2//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>
[INFO] [1671174103.199580322] [talker]: Publishing: 'Hello World: 3'== Compile the Linux kernel ==
[INFO] [1671174103# Run the build.204019965] [listener]: I heard: [Hello World: 3]sh script, remember to add sudo permission
<ol start::{| class="7wikitable" style="list-style-typewidth: decimal800px;"><li>Run the following command to open rviz2</li></ol>|-| orangepitest@orangepitest:~/orangepi-build$ '''source sudo ./opt/ros/galactic/setupbuild.bashsh'''|}
orangepi@orangepi<ol start="2" style="list-style-type:~$ decimal;"><li>Select '''ros2 run rviz2 rviz2Kernel package''', then enter</li>
<div class="figure">
[[File:pi3b-img350img384.png|576x324px|1]]
</div></ol><ol start="83" style="list-style-type: decimal;"><li>For Then select the usage model of ROS, please refer to the documentation of ROS 2development board</li></ol>
http://docs.ros.org/en/galactic/Tutorials.html<div class="figure">
<span id="how[[File:pi3b-to-install-ros-2-humble-on-ubuntu-22.04"></span>=== How to install ROS 2 Humble on Ubuntu 22img380.04 ===png]]
# Use </div></ol><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 '''install_rosfirst one.sh''' script If you need to install ros2modify the kernel configuration, select the second one.</li>
orangepi@orangepi[[File:~$ pi3b-img385.png]]</ol><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 '''install_ros.sh ros2make 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 start="2" style="list-style-type[[File: decimal;"><li>The '''install_ros.sh''' script will automatically run the '''ros2 pi3b-h''' command after installing ros2img386. If you can see the following print, it means that the ros2 installation is complete</li></ol>png]]
usage<ol style="list-style-type: ros2 [lower-h] Call `ros2 &ltalpha;command&gt"><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-h` for more detailed usagebuild$ '''sudo . /build.sh KERNEL_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 again</p></li>
ros2 [[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 an extensible commandas 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 [ '''5.10.160''' ]|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li>The version of the cross-compilation toolchain used</li>{| class="wikitable" style="width:800px;" |-| [ o.k. ] Compiler version [ '''aarch64-none-linux-gnu-line tool for ROS gcc 11.2.1''' ]|}</ol>optional arguments<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;" |-h, | [ o.k. ] Using kernel config file [ '''config/kernel/linux-rockchip-rk356x-legacy.config''' ]|}</ol><ol start="4" style="list-style-type: lower-alpha;"><li>The path of the deb package related to the kernel 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-help show this help message and exitalpha;"><li>The package name of the compiled kernel image deb package</li>Commands{| class="wikitable" style="width:800px;" |-| action Various action related sub[ 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;" |-commands| bag Various rosbag related sub[ o.k. ] Runtime [ '''5 min''' ]|}</ol><ol start="7" style="list-style-type: lower-commandsalpha;"><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>component Various component related sub{| class="wikitable" style="width:800px;" |-commands| [ 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;">daemon Various daemon <li><p>View the deb package related subto the kernel generated by compilation</p><ol style="list-commandsstyle-type: lower-alpha;"><li><p>'''linux-dtb-legacy-rockchip-rk356x_1.0.0_arm64.deb''' Contains dtb files used by the kernel</p></li>doctor Check ROS setup <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 other potential issueskernel modules</p></li>{| class="wikitable" style="width:800px;" interface Show information about ROS interfaces|-| launch Run a launch filetest@test:~/orangepi-build$ '''ls output/debs/linux-*'''
lifecycle Various lifecycle related suboutput/debs/linux-commandsdtb-legacy-rockchip-rk356x_1.0.0_arm64.deb output/debs/linux-image-legacy-rockchip-rk356x_1.0.0_arm64.deb
multicast Various multicast related suboutput/debs/linux-commandsheaders-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-style-type: lower-alpha;"><li>Use the following command to decompress the deb package</li>{| class="wikitable" style="width:800px;" node Various node related sub|-commands| param Various param related subtest@test:~/orangepi-commandsbuild$ '''cd output/debs'''
pkg Various package related sub-commandstest@test:~/orangepi_build/output/debs$ '''mkdir test'''
run Run a package specific executabletest@test:~/orangepi_build/output/debs$ '''cp \'''
security Various security related sub'''linux-commandsimage-legacy-rockchip-rk356x_1.0.0_arm64.deb test/'''
service Various service related sub-commandstest@test:~/orangepi_build/output/debs$ '''cd test'''
topic Various topic related subtest@test:~/orangepi_build/output/debs/test$ '''dpkg -commandsx \'''
wtf Use `wtf` as alias to `doctor`'''linux-image-legacy-rockchip-rk356x_1.0.0_arm64.deb .'''
Call `ros2 &lt;command&gt; -h` for more detailed usage.test@test:~/orangepi_build/output/debs/test$ '''ls'''
'''boot etc lib''' linux-image-legacy-rockchip-rk356x_1.0.0_arm64.deb '''usr'''|}</ol><ol start="32" style="list-style-type: decimallower-alpha;"><li>Then you can use the The decompressed file is as follows</li>{| class="wikitable" style="width:800px;" |-| test@test:~/orangepi-build/output/debs/test$ '''test_ros.shtree -L 2''' 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>
orangepi@orangepi3b:~$ '''test_ros.sh'''
[INFO] [1671174101.200091527] [talker]: Publishing: 'Hello World: 1'├── boot
[INFO] [1671174101│   ├── config-5.235661048] [listener]: I heard: [Hello World: 1]10.160-rockchip-rk356x
[INFO] [1671174102│   ├── System.199572327] [talker]: Publishing: 'Hello World: 2'map-5.10.160-rockchip-rk356x
[INFO] [1671174102│   └── vmlinuz-5.204196299] [listener]: I heard: [Hello World: 2]10.160-rockchip-rk356x
[INFO] [1671174103.199580322] [talker]: Publishing: 'Hello World: 3'├── etc
[INFO] [1671174103.204019965] [listener]: I heard: [Hello World: 3]│   └── kernel
<ol start="4" style="list-style-type: decimal;"><li>Run the following command to open rviz2</li></ol>├── lib
orangepi@orangepi:~$ '''source /opt/ros/humble/setup.bash'''│   └── modules
orangepi@orangepi:~$ '''ros2 run rviz2 rviz2'''├── linux-image-legacy-rockchip-rk356x_1.0.0_arm64.deb
<div class="figure">└── usr
[[File:pi3b-img351.png|576x324px|1]]├── lib
:└── share|}</divol></li></ol><ol start="59" style="list-style-type: decimal;"><li>Reference documentsThe 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>
Set the IGNORE_UPDATES variable in '''http:userpatches//docs.ros.org/en/humble/indexconfig-default.htmlconf'''to &quot;yes&quot;
[http{| class="wikitable" style="width:800px;" |-| test@test:~//docs.ros.org/en/galactic/Tutorials.html orangepi-build$ '''http:vim userpatches//docs.ros.org/en/humble/Installation/Ubuntu-Installconfig-Debiansdefault.htmlconf''']
<span idIGNORE_UPDATES="how-to-install-kernel-header-files"></span>== How to install kernel header files == # The Linux image released by OPi comes with the deb package of the kernel header file by default, and the storage location is '''/opt/''' orangepi@orangepi:~$ &quot;'''ls /opt/linux-headers*''' /opt/linux-headers-legacy-rockchip-rk356x_x.x.x_arm64.deb <ol start="2" span style="list-style-typecolor: decimal;#FF0000"><li>Use the following command to install the deb package of the kernel header file</li>yes</olspan'''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'''&quot;|}<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:~$ '''ls /usr/src''' linux-headers-5.10.160-rockchip-rk356x <ol start="410" style="list-style-type: decimal;"><li><p>Then you If the kernel has been modified, the following method can write a hello kernel module be used to test update the kernel header fileand kernel modules of the development board Linux system</p>
<ol style="list-style-type: lower-alpha;">
<li>First write Upload the code deb package of the hello compiled Linux kernel module, as follows:to the Linux system of the development board</li></ol><{| class="wikitable" style="width:800px;" |-| test@test:~/li><orangepi-build$ '''cd output/ol>debs'''
orangepitest@orangepitest:~/orangepi-build/output/debs$ '''vim hello.cscp \'''
'''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:~#include &lt'''apt purge -y linux-image-legacy-rockchip-rk356x'''|}</ol><ol start="3" style="list-style-type: lower-alpha;linux"><li>Install the deb package of the new Linux kernel just uploaded</init.h&gtli>{| class="wikitable" style="width:800px;" |-| root@orangepi:~#include &lt'''dpkg -i linux-image-legacy-rockchip-rk356x_1.0.0_arm64.deb'''|}</ol><ol start="4" style="list-style-type: lower-alpha;linux"><li>Then restart the development board, and then check whether the kernel-related modifications have taken effect</module.h&gtli>{| class="wikitable" style="width:800px;" |-static int hello_init(void)| root@orangepi:~# '''reboot'''{|}</ol>printk(&quot</li></ol><ol start="11" style="list-style-type: decimal;Hello Orange Pi "><li><p>Other useful information</p><ol style="list-style- init\n&quottype: 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;)" |-| [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><ol start="2" style="list-style-type: lower-alpha;"><li>The location of the dts file used by the development board is</li>return 0{| class="wikitable" style="width:800px;" |-| [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''']|}</ol></li></ol><span id="compile-rootfs"></span>
static void hello_exit(void)== Compile rootfs ==
{# Run the build.sh script, remember to add sudo permission
printk(&quot::{| class="wikitable" style="width:800px;Hello Orange Pi " |-| test@test:~/orangepi- exit\n&quot;);build$ '''sudo ./build.sh'''|}
return<ol start="2" style="list-style-type: decimal;"><li>Select '''Rootfs and all deb packages''', then enter</li>
}<div class="figure">
module_init(hello_init);[[File:pi3b-img388.png]]
module_exit(hello_exit)</div></ol><ol start="3" style="list-style-type: decimal;"><li>Then select the model of the development board</li>
MODULE_LICENSE(&quot;GPL&quot;);<div class="figure">
<ol start="2" style="list-style-type[[File: lowerpi3b-alpha;"><li>Then write the Makefile for compiling the hello kernel module, as follows:</li></ol>img380.png]]
orangepi@orangepi</div></ol><ol start="4" style="list-style-type:~$ '''vim Makefile'''decimal;"><li>Then select the type of rootfs</li>
ifneq [[File:pi3b-img389.png]]</ol><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 ($(KERNELRELEASEserver)''' 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>
obj-m:<div class=hello.o"figure">
else[[File:pi3b-img390.png]]
KDIR :=</div></libol></modulesli></$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 '''(shell uname please do not choose the Minimal version if there is no special requirement, because many things are not pre-rinstalled by default. Some functions may not be available)'''</buildli>
PWD :<div class=$(shell pwd)"figure">
all[[File:pi3b-img391.png]]
make </div></ol><ol start="7" style="list-style-C $(KDIR) M=$(PWD) modulestype: 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>
clean:<div class="figure">
rm [[File:pi3b-f *img392.ko *.o *.mod.o *.mod *.symvers *.cmd *.mod.c *.orderpng]]
endif</div>[[File:pi3b-img393.png]]
<ol start="3" style="list-style-type: lower-alpha;"><li>Then use You can then select additional packages that need to be installed. Please press the make command Enter key to compile the hello kernel moduleskip directly here. The output of the compilation process is as follows:</li></ol>
'''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.''' [[File:pi3b-img352img394.png|337x52px]]</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>orangepi@orangepi<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 '''makejammy''']|}make </ol><ol start="2" style="list-C /lib/modules/5.10.160style-rockchiptype: lower-35xxalpha;"><li>The storage path of the compiled rootfs compressed package</build Mli>{| class="wikitable" style=/home/orangepi modules"width:800px;" |-| make[1o.k. ]: Entering Target directory [ '''external/usrcache/srcrootfs''' ]|}</linuxol><ol start="3" style="list-style-headerstype: lower-alpha;"><li>The name of the rootfs compressed package generated by compilation</li>{| class="wikitable" style="width:800px;" |-5| [ o.10k.160] File name [ '''jammy-rockchipxfce-rk35xxarm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4''' ]|}CC [M] </homeol><ol start="4" style="list-style-type: lower-alpha;"><li>The time used for compilation</orangepi/hello.oli>{| class="wikitable" style="width:800px;" MODPOST /home/orangepi/Module.symvers|-| CC [M] /home/orangepi/helloo.modk.o LD ] Runtime [M'''13 min''' ] /home/orangepi/hello.ko|}make[1]: Leaving directory '</usrol></srcli></linux-headers-5.10.160-rockchip-rk35xx'ol><ol start="49" style="list-style-type: decimal;"><li><p>View the rootfs compressed package generated by compilation</p><ol style="list-style-type: lower-alpha;"><li>After compiling<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: none;"><li><p>a) '''jammy'hello.ko'' 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><li><p>d) '''f930ff6ebbac1a72108a2e100762b18f''' kernel module 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 generatedrecompiled</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/'''
orangepi@orangepi:~$ '''ls *jammy-xfce-arm64.kof930ff6ebbac1a72108a2e100762b18f.tar.lz4'''
hellojammy-xfce-arm64.kof930ff6ebbac1a72108a2e100762b18f.tar.lz4.current
jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4.list|}</ol></li></ol><ol start="510" style="list-style-type: lower-alphadecimal;"><li>Use If the required rootfs already exists under '''insmodexternal/cache/rootfs''' command , 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 insert the '''hello.koexternal/cache/rootfs''' kernel module into to find out whether it has If there is rootfs available in the kernelcache, use it directly, which can save a lot of download and compilation time.</li></ol>
orangepi@orangepi:~$ '''sudo insmod hello.ko'''<span id="compile-linux-image"></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>Compile Linux image ==
orangepi@orangepi:~$ '''dmesg | grep &quot;Hello&quot;'''# Run the build.sh script, remember to add sudo permission
[ 2871.893988] ::{| class="wikitable" style="width:800px;" |-| test@test:~/orangepi-build$ '''Hello Orange Pi -- initsudo ./build.sh'''|}
<ol start="72" style="list-style-type: lower-alphadecimal;"><li>Use the '''rmmod''Select ' command to uninstall the ''Full OS image for flashing'hello.ko''' kernel module, then enter</li></ol>
orangepi@orangepi:~$ '''sudo rmmod hello'''<div class="figure">
orangepi@orangepi[[File:~$ '''dmesg | grep &quot;Hello&quot;'''pi3b-img395.png]]
[ 2871.893988] Hello Orange Pi </div></ol><ol start="3" style="list-style- inittype: decimal;"><li>Then select the model of the development board</li>
[ 3173.800892] '''Hello Orange Pi -- exit'''<div class="figure">
<span id="use[[File:pi3b-of-the-raspberry-pis-5-inch-screen"></span>== Use of the Raspberry PI's 5-inch screen ==img380.png]]
<span id/div></ol><ol start="assembly-method4" style="list-ofstyle-raspberry-pi-5-inch-screentype: decimal;"><li>Then select the type of rootfs</spanli>=== Assembly method of Raspberry PI 5-inch screen ===
[[File:pi3b-img389.png]]</ol ><ol start="5" style="list-style-type: decimal;"><li><p>First prepare Then select the required accessoriestype of image</p>
<ol style="list-style-type: lower-alpha;">
<li>Raspberry PI 5-inch MIPI LCD display + touch screen<p>'''Image with console interface (server)''' Indicates the image of the server version, which is relatively small</lip></olli><li><p>'''Image with desktop environment''' Indicates a image with a desktop, which is relatively large</lip></olli>
<blockquote>[[File:pi3b-img353.png|306x219px]]</blockquote><ol startdiv class="2figure" style="list-style-type: lower-alpha;"><li>15pin MIPI cable</li></ol>
<blockquote>[[File:pi3b-img354img390.png|276x111px]]</blockquote><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></ol>
[[File:pi3b-img355.png|294x160px]] <ol start="3" style="list-style-type: decimal;"><li>Finally connect to the LCD interface of the Orange Pi 3B development board</li></ol> [[File:pi3b-img356.png|333x199px]] <span id="open-the-raspberry-pi-5-inch-screen-configuration-method"></span>=== Open the Raspberry PI 5-inch screen configuration method === <ol style="list-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>First run '''orangepi-config''', ordinary users remember to add '''sudo''' permission</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:~$ '''sudo orangepi-config'''<div class="figure">
<ol start="2" style="list-style-type[[File: lowerpi3b-alpha;"><li>Then select '''System'''</li></ol>img391.png]]
[[File</div></ol><ol start="7" style="list-style-type:pi3b-img357decimal;"><li>If you are compiling the image of the desktop version, you also need to select the type of desktop environment.png|575x272px]]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 startdiv class="3figure" style="list-style-type: lower-alpha;"><li>Then select '''Hardware'''</li></ol>
[[File:pi3b-img358img392.png|576x266px]]
<ol start="4" style="list-style-type: lower-alpha;"/div><li>Then use the arrow keys on the keyboard to locate the Rasp[[File:pi3b-7inch-touchscreen, and then use the space button to check</li></ol>img393.png]]
[[File:pi3b-img359You can then select additional packages that need to be installed. Please press the Enter key to skip directly here.png|408x310px]]
[[File:pi3b-img394.png]]</ol><ol start="58" 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 select '''&lt;Save&gt;''' make an image file and format the partition, the default type is ext4</p></li><li><p>Then copy the configured rootfs to savethe 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 compiling the image, the following information will be prompted</p>[[File<ol style="list-style-type: lower-alpha;"><li>The storage path of the compiled image</li>{| class="wikitable" style="width:pi3b800px;" |-img360| [ o.k.png|404x133px]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="62" style="list-style-type: lower-alpha;"><li>Then select '''&lt;Back&gt;'''Compilation time</li></ol>{| class="wikitable" style="width:800px;" |-| '''[[File:pi3b-img361o.k.png|397x151px]Runtime [ 19 min ]'''|}</ol><ol start="73" style="list-style-type: lower-alpha;"><li>Then select 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 [ '''&lt;Reboot&gt;sudo ./build.sh BOARD=orangepi3b BRANCH=legacy BUILD_OPT=image RELEASE=bullseye BUILD_MINIMAL=no BUILD_DESKTOP=no KERNEL_CONFIGURE=yes''' to restart the system for the configuration to take effect]|}</ol></li></ol><span id="android-11-operating-system-instructions"></span>
[[File:pi3b-img362.png|331x154px]]= '''Android 11 operating system instructions''' =
'''The above settings will eventually add the configuration of overlays<span id=raspi"supported-7inchandroid-touchscreen to versions"></boot/orangepiEnv.txt. After setting, you can check it first. If this configuration does not exist, then there is a problem with the settings.'''span>== Supported Android versions ==
{| class="wikitable" style="width:800px;text-align: center;"|-|'''Android version'''|'''Kernel version'''If you find it troublesome to use orangepi|-config, you can also use the vim editor to open /boot/orangepiEnv.txt, and then add the configuration of overlays=raspi-7inch-touchscreen is also possible|'''Android 11'''|'''Linux4.19'''|}
orangepi@orangepi:~$ '''cat /boot/orangepiEnv.txt | grep <span id="raspiandroid-function-adaptation"'''></span>
'''overlays=raspi-7inch-touchscreen #Sample configuration'''= Android Function Adaptation ==
<ol start{| class="3wikitable" style="listwidth:800px;text-style-typealign: decimalcenter;"><li>After startup, you can see the lcd screen display as follows:</li></ol>|-|'''Functions'''[[File:pi3b|'''Android 11'''|-img363|'''USB2.png0x3'''|381x262px]]'''OK'''|-<span id="the|'''USB3.0x1'''|'''OK'''|-method|'''M.2 NVMe SSD boot'''|'''OK'''|-of|'''WIFI'''|'''OK'''|-server|'''Bluetooth'''|'''OK'''|-version|'''GPIO(40pin)'''|'''OK'''|-image|'''UART(40pin)'''|'''OK'''|-rotation|'''SPI(40pin)'''|'''OK'''|-display-direction"></span>=== The method of server version image rotation display direction ===|'''I2C(40pin)'''|'''OK'''|-# Add |'''extraargs=fbcon=rotate:the direction to rotatePWM(40pin)''' in |'''/boot/orangepiEnv.txtOK''' This line configuration can set the direction displayed by the server version of the Linux system, where the number after |-|'''fbcon=rotate:PWM fan interface''' can be set as:|'''OK'''<!-- -|-><ol style="list-style-type: lower-alpha;">|'''3pin Debugging serial port'''<li><p>0: normal screen (default is landscape)</p></li>|'''OK'''<li><p>1: Turn clockwise 90 degrees</p></li>|-<li><p>2: Flip 180 degrees</p></li>|'''EMMC'''<li><p>3: Turn clockwise 270 degrees</p></li></ol>|'''OK'''|-orangepi@orangepi:~$ |'''sudo vim /TF card boot/orangepiEnv.txt'''|'''OK'''overlays=lcd1|-|'''HDMI video'''|'''extraargs=cma=64M fbcon=rotate:3OK'''|-|'''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).HDMI Audio'''|'''OK'''<ol start="2" style="list|-style-type: decimal;"><li>Then |'''restartLCD''' the Linux system and you can see that the direction displayed on the LCD screen has been rotated</li></ol>|'''OK'''<span id="method-of-rotating|-|'''eDP display'''|'''OK'''|-and-touch-direction-of-desktop-version-image"></span>=== Method of rotating display and touch direction of desktop version image ===|'''Gigabit network port'''|'''OK'''|-# First open |'''DisplayNetwork port status indicator''' Settings in Linux|'''OK'''[[File:pi3b|-img364.png|298x206px]]'''Headphone playback'''|'''OK'''<ol start="2" style="list|-style-type: decimal;"><li><p>Then select the direction you want to rotate in |'''Headphone recording'''|'''RotationOK'''</p><ol style="list-style-type: lower|-alpha;"><li><p>|'''NoneLED Light''': no rotation</p></li><li><p>|'''LeftOK''': rotate left 90 degrees</p></li><li><p>|-|'''InvertedGPU''': Flip up and down, which is equivalent to rotating 180 degrees</p></li><li><p>|'''RightOK''': rotate right 90 degrees</p></li></ol></li></ol>|-|'''NPU'''[[File:pi3b|'''OK'''|-img365.png|286x180px]]'''VPU'''|'''OK'''<ol start="3" style="list|-style-type: decimal;"><li>Then click |'''RTC'''|'''ApplyOK'''</li></ol>|}
[[File:pi3b<span id="wifi-img366.png|330x207px]]connection-test-method"></span>
<ol start="4" style="list-style-type: decimal;"><li>Then select '''Keep this configuration'''</li></ol>WIFI connection test method ==
[[File:pi3b-img367.png|374x210px]]# First click enter '''Setting'''
::[[File:pi3b-img396.png]] <ol start="52" style="list-style-type: decimal;"><li><p>At this point, the screen display has been rotated, and then close the Then select '''DisplayNetwork &amp; internet''' 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.sh''' script to rotate the direction of the touch. After the script is set, it will automatically restart, and then you can test whether the touch has been used normally[[File:pi3b-img397.png]]</pol><ol start="3" style="list-style-type: lower-alphadecimal;"><li>Then select '''NoneWi-Fi''': no rotation</li></ol></li></ol>
orangepi@orangepi[[File:~$ pi3b-img398.png]]</ol><ol start="4" style="list-style-type: decimal;"><li>Then turn on the '''set_lcd_rotate.sh noneWi-Fi'''switch</li>
[[File:pi3b-img399.png]]</ol><ol start="25" style="list-style-type: lower-alphadecimal;"><li>After turning on '''LeftWi-Fi''': rotate left 90 degrees, if everything is normal, you can scan for nearby Wi-Fi hotspots</li></ol>
orangepi@orangepi[[File:~$ '''set_lcd_rotatepi3b-img400.sh left'''png]]</ol><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>
[[File:pi3b-img401.png]]</ol><ol start="37" style="list-style-type: lower-alphadecimal;"><li>'''Inverted''': Flip up Then use the keyboard to enter the password corresponding to Wi-Fi, and down, which is equivalent then use the mouse to click the Enter button in the virtual keyboard to start connecting to rotating 180 degreesWi-Fi</li></ol>
orangepi@orangepi[[File:~$ '''set_lcd_rotatepi3b-img402.sh inverted'''png]]</ol><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>
[[File:pi3b-img403.png]]</ol start><span id="4" style="listhow-to-use-stylewi-type: lowerfi-alpha;hotspot"><li>'''Right''': rotate right 90 degrees</li></olspan>
orangepi@orangepi:~$ '''set_lcd_rotate.sh right'''== 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 '''The set_lcd_rotate.sh script mainly does four things:Settings'''
'''1::[[File:pi3b-img396. Rotate the direction displayed by the framebuffer'''png]]
<ol start="3" style="list-style-type: decimal;"><li>Then select '''2. Rotate the direction of the touchNetwork &amp; internet'''</li>
[[File:pi3b-img397.png]]</ol><ol start="4" style="list-style-type: decimal;"><li>Then select '''3. Turn off the boot logoHotspot &amp; tethering'''</li>
[[File:pi3b-img404.png]]</ol><ol start="5" style="list-style-type: decimal;"><li>Then select '''4. Restart the systemWi-Fi hotspot'''</li>
[[File:pi3b-img405.png]]</ol><ol start="6" style="list-style-type: decimal;"><li>Then turn on the '''Rotating Wi-Fi hotspot''', you can also see the touch direction is achieved by adding name and password of the line Option &quot;TransformationMatrix&quot; &quot;x x x x x x x x x&quot; 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</usr/share/X11/xorg.conf.dspan>)</40-libinput.conf Where &quot;x x x x x x x x x&quot; is configured differently for different directions.'''li>
[[File:pi3b-img406.png]]
</ol>
<ol start="7" style="list-style-type: decimal;">
<li>Touch rotation referenceAt 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>
https[[File:pi3b-img407.png]]<//wikiol><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.ubuntuIf you can open the webpage normally, it means that the '''WI-FI Hotspot''' of the development board can be used normally.com/X</InputCoordinateTransformationli>
[[File:pi3b-img408.png]]</ol><span id="instructions-for-using-thebluetooth-switchtest-logomethod"></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== Bluetooth test method ==
orangepi@orangepi:~$ # First click enter '''vim /boot/orangepiEnv.txtSetting'''
verbosity=1::[[File:pi3b-img396.png]]
<ol start="2" style="list-style-type: decimal;"><li>Then select '''bootlogo=falseConnected devices'''</li>
[[File:pi3b-img409.png]]
</ol>
<ol start="3" style="list-style-type: decimal;">
<li>Set the Then click '''bootlogoPair new device''' variable to '''true''' in '''/boot/orangepiEnv.txt''' to enable turn on Bluetooth and start scanning the switch logosurrounding Bluetooth devices</li></ol> orangepi@orangepi:~$ '''vim /boot/orangepiEnv.txt''' verbosity=1 '''bootlogo=true'''
[[File:pi3b-img410.png]]
</ol>
<ol start="4" style="list-style-type: decimal;">
<li>The location of the boot logo image in the Linux system is</li></ol> searched Bluetooth devices will be displayed under '''/usr/share/plymouth/themes/orangepi/watermark.pngAvailable devices'''</li>
[[File:pi3b-img411.png]]
</ol>
<ol start="5" style="list-style-type: decimal;">
<li>After replacing Then click the boot logo picture, Bluetooth device you need want to connect to run start pairing. When the following command interface pops up, please use the mouse to take effectselect the '''Pair''' option</li></ol>
orangepi@orangepi[[File:~$ '''sudo updatepi3b-initramfs img412.png]]</ol><ol start="6" style="list-u'''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>
[[File:pi3b-img413.png]]<span id/ol><ol start="how-to-use-the-zfs7" style="list-filestyle-systemtype: decimal;"><li>After the pairing is completed, you can see the paired Bluetooth device as shown in the figure below</spanli>== How to use the ZFS file system ==
'''The latest version of Ubuntu20[[File:pi3b-img414.04, Ubuntu22.04, Debian11 and Debian12 desktop version systems have prepng]]</ol><ol start="8" style="list-style-installed zfstype: decimal;"><li>At this time, you can use it directlythe 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>
[[File:pi3b-img415.png]]</ol><ol start="9" style="list-style-type: decimal;"><li>You can open the '''The pre-installed zfs version in Ubuntu20.04 and Ubuntu22.04 desktop systems is 2.1.6.Download'''directory in the file manager to view the pictures received by the Android system Bluetooth of the development board</li>
'''The pre[[File:pi3b-installed zfs version in Debian11 and Debian12 desktop systems is 2img416.1.11.'''png]]</ol><span id="how-to-use-raspberry-pi-5-inch-screen"></span>
'''After the system starts, please first confirm whether the zfs kernel module has been loaded. If you can see zfs== How to use Raspberry Pi 5-related content using the lsmod command, it means that the system has pre-installed zfs.'''inch screen ==
orangepi@orangepi{| class="wikitable" style="background-color:~$ #ffffdc;width:800px;" |-| <big>'''lsmod | grep &quot;zfs&quot;Please make sure that the image used is the following two versions of the image:'''
zfs 2801664 0'''OrangePi3B_RK3566_Android11_lcd_v1.x.x.img'''
zunicode 327680 1 zfs'''OrangePi3B_RK3566_Android11_spi-nvme_lcd_v1.x.x.img'''</big>|}
zzstd 471040 1 zfs# The screen needs to be assembled first, please refer to [[Orange Pi 3B#Use of the Raspberry PI's 5-inch screen|'''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
zlua 139264 1 zfs::[[File:pi3b-img417.png]]
zcommon 69632 1 zfs<span id="pin-interface-gpio-uart-spi-and-pwm-test"></span>
znvpair 61440 2 zfs== 40pin interface GPIO,zcommonUART, SPI and PWM test ==
zavl 16384 1 zfs<span id="pin-gpio-port-test-2"></span>=== 40pin GPIO port test ===
icp 221184 1 zfs# First click on the wiringOP icon to open the wiringOP APP
spl 77824 6 zfs,icp,zzstd,znvpair,zcommon,zavl::[[File:pi3b-img418.png]]
<span idol start="how2" style="list-tostyle-install-zfstype: 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</spanli>=== How to install ZFS ===
[[File:pi3b-img419.png]]</ol><ol start="3" style="list-style-type: decimal;"><li>The GPIO test interface is shown in the figure below. The two rows of '''CheckBox''Before installing zfs, please make sure that ' buttons on the left are in one-to-one correspondence with the 40pin pins. When the Linux image used '''CheckBox''' button is checked, the latest version. In additioncorresponding GPIO pin will be set to '''OUT''' mode, if zfs and the pin level will be set to high level; when the checkbox is already installed in unchecked, the GPIO pin level will be set to low level; When the system'''GPIO READALL''' button is pressed, information such as wPi number, GPIO mode, it needs to and pin level can be installed again.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>
Before installing zfs, you need to install the kernel header file first[[File:pi3b-img420. For the method of installing the kernel header file, please refer to the instructions in png]]</ol><ol start="4" style="list-style-type: decimal;"><li>Then click the [[\l|'''section on the method of installing the kernel header fileGPIO READALL''']].button, the output information is as shown in the figure below:</li>
In Ubuntu20[[File:pi3b-img421.04, Ubuntu22png]]</ol><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.04 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 Debian11 systemslow levels of the GPIO port. First click the '''CheckBox''' button corresponding to pin 7. When the button is selected, zfs cannot pin 7 will be installed directly through apt, because the default apt source zfs version is lower than 2.1set to high level.6After setting, and there is you can use a problem multimeter to measure the voltage value of incompatibility with rk Linux5.10 kernelthe pin. This problem If it is fixed in zfs version 2.1.6 and later3.3v, it means setting high level success</li>
To solve this problem, we provide a zfs deb package that can be installed normally, which can be downloaded from the [http[File://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orangepi3b-Pi-3Bimg422.html '''official tool'''png]] of the development board. Open the '''</ol><span classol start="mark6" style="list-style-type: decimal;">official tool</spanli>Then click the '''GPIO READALL''' button, and enter you can see that the current pin 7 mode is '''<span class="mark">zfs-related deb package folders used by Ubuntu and Debian systems</span>OUT'''. You can see three types of deb packages: Ubuntu20.04, Ubuntu22.04 and Debian11. Please download the required version.pin level is high</li>
[[File:pi3b-img368img423.png|230x93px]]</ol><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>
After downloading the zfs deb packages of the corresponding version, please upload them to the Linux system of the development board[[File:pi3b-img424. For png]]</ol><ol start="8" style="list-style-type: decimal;"><li>Then click the upload method, please refer to '''[[\l|the description in the section of the method of uploading files to the Linux system of the development board]].GPIO READALL'''button, you can see that the current pin 7 mode is OUT, and the pin level is low</li>
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[[File:pi3b-img425.png]]</ol><span id="pin-uart-test-1"></span>
orangepi@orangepi:~$ '''sudo apt install ./*.deb'''=== 40pin UART test ===
After # UART7 and UART9 are enabled by default in Android. The position of the installation 40pin is completeshown in the figure below, use the following command to see and the zfs-related kernel modules:corresponding device nodes are '''/dev/ttyS7''' and '''/dev/ttyS9''' respectively
orangepi@orangepi:~$ '''ls /lib/modules/5.10:[[File:pi3b-img269.160-rockchip-rk356x/updates/dkms/'''png]]
'''icp.ko spl.ko zavl.ko zcommon.ko zfs.ko zlua.ko znvpair.ko zunicode.ko zzstd.ko'''<ol start="2" style="list-style-type: decimal;"><li>First click on the wiringOP icon to open the wiringOP APP</li>
Then restart [[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 Linux system '''UART_TEST''' button to see that open the zfs kernel module will be automatically loaded:UART test interface</li>
orangepi@orangepi[[File:~$ '''lsmod | grep &quot;zfs&quotpi3b-img426.png]]</ol><ol start="4" style="list-style-type: decimal;'''"><li>The serial port test interface of the APP is shown in the figure below</li>
zfs 2801664 0[[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''' 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>
zunicode 327680 1 zfs[[File:pi3b-img428.png]]</ol><ol start="6" style="list-style-type: decimal;"><li>Then use Dupont wire to short the RXD and TXD pins of uart7</li>
zzstd 471040 1 zfs[[File:pi3b-img429.png]]</ol><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>
zlua 139264 1 zfs[[File:pi3b-img430.png]]</ol><ol start="8" style="list-style-type: decimal;"><li>If everything is normal, the received string will be displayed in the receiving box</li>
zcommon 69632 1 zfs[[File:pi3b-img431.png]]</ol><span id="pin-spi-test-2"></span>
znvpair 61440 2 zfs,zcommon=== 40pin SPI test ===
zavl 16384 1 zfs# According to the schematic diagram of the 40pin interface, the spi available for Orange Pi 3B is spi3
icp 221184 1 zfs::[[File:pi3b-img264.png]]
spl 77824 6 zfs<ol start="2" style="list-style-type: decimal;"><li>Here,icpthe SPI interface is tested through the w25q64 module. First,zzstd,znvpair,zcommon,zavlthe w25q64 device is connected to the SPI3 interface</li>
In Debian12, the default version of zfs is 2.1.11, so we can install zfs directly through the following command[[File:pi3b-img432. Again, please make sure that png]]</ol><ol start="3" style="list-style-type: decimal;"><li>Then click the system has installed wiringOP icon to open the deb package of the kernel header file before installation.wiringOP APP</li>
orangepi@orangepi[[File:~$ '''sudo apt install pi3b-y zfsutilsimg418.png]]</ol><ol start="4" style="list-linux zfsstyle-dkms'''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>
[[File:pi3b-img433.png]]</ol><span idol start="methods5" style="list-ofstyle-creating-zfs-poolstype: decimal;"><li>Then click the '''OPEN''' button to initialize the SPI</spanli>=== Methods of creating ZFS pools ===
'''ZFS is based on storage pools[[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, we can add multiple physical storage devices to fill in the pooladdress 0x9f in data[0], and then allocate storage space from this pool.click the '''TRANSFER'''button</li>
'''The following content is demonstrated based on [[File:pi3b-img435.png]]</ol><ol start="7" style="list-style-type: decimal;"><li>Finally, the development board connected to an NVMe SSD and a USB flash drive.'''APP will display the read ID information</li>
# First, we can use the '''lsblk''' command to view all storage devices on the development board[[File:pi3b-img436. png]]</ol><ol start="8" style="list-style-type: decimal;"><li>The current development board MANUFACTURER ID of the w25q64 module is connected to an NVMe SSD EFh, and a U disk. The output the Device ID is as follows:4017h, corresponding to the value read above (h stands for hexadecimal)</li>
[[File:pi3b-img369img437.png|379x227px]]</ol><span id="pin-pwm-test"></span>
<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>= 40pin PWM test ===
orangepi@orangepi:~$ # Android enables '''sudo zpool create -f pool1 /dev/nvme0n1 /dev/sdaPWM11'''by default, and the corresponding pin is located at 40pin as shown in the figure below
::[[File:pi3b-img438.png]]
 
<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>Then use click the '''zpool listPWM_TEST''' command to see that button on the system has created a ZFS pool named '''pool1''', and the size main interface of wiringOP to enter the ZFS pool pool1 is the size of the NVME SSD plus the size of the U diskPWM test interface</li></ol> [[File:pi3b-img370.png|576x37px]]
[[File:pi3b-img439.png]]
</ol>
<ol start="4" style="list-style-type: decimal;">
<li>Then execute The base address corresponding to PWM11 is '''df -hfe6f0030''' to see that , here pwmchip0 shows '''pool1fdd70020.pwm''' is mounted on the right, then you need to click the drop-down option to select other pwmchips until '''/pool1febf0030.pwm''' directoryis displayed on the right</li></ol>
orangepi@orangepi[[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 ''df -h'fe6f0030'''on the right</li>
Filesystem Size Used Avail Use% Mounted on[[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>
tmpfs 1[[File:pi3b-img442.6G 18M 1.6G 2% png]]</ol><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</runli>
[[File:pi3b-img443.png]]</dev/mmcblk0p2 29G 6ol><ol start="8" style="list-style-type: decimal;"><li>Then use an oscilloscope to measure the No.0G 22G 22%  32 pin in the 40pin of the development board, and you can see the following waveform</li>
tmpfs 7[[File:pi3b-img444.7G 46M 7.7G 1% png]]</devol><span id="how-to-use-adb"></shmspan>
tmpfs 5.0M 4.0K 5.0M 1% /run/lock== How to use ADB ==
tmpfs 7.7G 944K 7.7G 1% <span id="use-network-connection-adb-debugging"></tmpspan>=== Use network connection adb debugging ===
{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''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.'''</dev/mmcblk0p1 1022M 115M 908M 12% /bootbig>|}
/dev/zram1 188M 4# Make sure that the '''service.5M 169M 3% /var/logadb.tcp.port''' of the Android system is set to port number 5555
tmpfs 1::{| class="wikitable" style="width:800px;" |-| console:/ # '''getprop | grep &quot;adb.6G 80K 1.6G 1% /run/user/1000tcp&quot;'''
[service.adb.tcp.port]: ['''pool1 489G 9.3M 489G 1% /pool15555''']|}
<ol start="52" style="list-style-type: decimal;"><li>Use If '''service.adb.tcp.port''' is not set, you can use the following command to see that set the file system type port number of pool1 is zfsnetwork adb</li></ol>
orangepi@orangepi{| class="wikitable" style="width:~$ 800px;" |-| console:/ # '''mount | grep pool1setprop service.adb.tcp.port 5555'''
pool1 on console:/pool1 type # '''zfsstop adbd''' (rw,xattr,noacl)
console:/ # '''start adbd'''|}</ol><ol start="63" style="list-style-type: decimal;"><li>Then we can test copying a file to the ZFS poolInstall adb tool on Ubuntu PC</li></ol>
orangepi{| class="wikitable" style="width:800px;" |-| test@orangepitest:~$ '''sudo cp -v /usr/local/test.mp4 /pool1/apt update'''
test@test:~$ ''/usr/local/test.mp4' sudo apt install -&gt; y adb'''|}</pool1ol><ol start="4" style="list-style-type: decimal;"><li>Then connect network adb on Ubuntu PC</test.mp4'li>
<span id{| class="wikitable" style="width:800px;" |-| test@test-:~$ '''adb connect 192.168.1.xxx''' '''(The IP address needs to be changed to the-data-deduplication-function-IP address of-zfs"></span>=== Test the data deduplication function of ZFS ===development board)'''
# The data deduplication function of ZFS is disabled by default, we need to execute the following command to enable it<p>* daemon not running; starting now at tcp:5037</p>
orangepi@orangepi:~$ '''sudo zfs set dedup=on pool1'''<p>* daemon started successfully</p>
<ol start="2" style="list-style-typeconnected to 192.168.1.xxx: 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>5555
orangepi@orangepi:~$ '''cd /pool1/'''
roottest@orangepitest:/pool1~$ '''sudo dd if=/dev/urandom of=test.1g bs=1M count=1024adb devices'''
1024+0 records inList of devices attached
1024+0 records out192.168.1.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>
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 5.04367 s, 213 MB/s{| class="wikitable" style="width:800px;" |-| test@test:~$ '''adb shell'''
console:/ #|}</ol start><span id="3" style="list-style-type: decimal;appendix"><li>Then use the following command to copy 1000 random files of size 1G</li></olspan>
root@orangepi:/pool1$ = '''for ((i=0; i&lt;1000; i++)); do sudo cp test.1g $i.test.1g; doneAppendix'''=
<ol startspan id="4" style="listuser-manual-styleupdate-type: decimal;history"><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></olspan>== User Manual Update History ==
root@orangepi{| class="wikitable" style="width:/pool1$ 800px;text-align: center;"|-|'''Version'''du -lh|'''Date'''|'''Update Notes'''|-|v0.1|2023-07-19|initial version|}
1002G<span id="image-update-history"></span>== Image Update History ==
<ol start{| class="5wikitable" style="listwidth:800px;"|-| style="text-align: center;" | '''Date'''| style="text-typealign: decimalcenter;">| <li>Then use the '''zpool listUpdate Notes''' command to see that only 1|-| style="text-align: center;" | 2023-07-19|Orangepi3b_1.0.0_debian_bullseye_desktop_xfce_linux5.10.01G is actually occupied, because these 1001 files are all duplicates, indicating that the data deduplication function is effective160.</li></ol>7z
[[File:pi3b-img371Orangepi3b_1.png|576x36px]]0.0_ubuntu_jammy_desktop_xfce_linux5.10.160.7z
<span id="test-the-data-compression-function-of-zfs"></span>=== Test the data compression function of ZFS ===Orangepi3b_1.0.0_ubuntu_focal_desktop_xfce_linux5.10.160.7z
# 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 tarballOrangePi3B_RK3566_Android11_v1.0.0.tar.gz
orangepi@orangepi:~$ '''cd /pool1/'''OrangePi3B_RK3566_Android11_lcd_v1.0.0.tar.gz
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 orangepiOrangePi3B_RK3566_Android11_spi-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"|-|'''branch'''|'''u-boot version'''|'''Linux Kernel version'''|-|'''legacy'''|'''u-boot 2017.09'''|'''Linux5.10'''|} '''The branch mentioned here is not the same thing as the branch of the orangepi-build source code, please do not confuse it. This branch is mainly used to distinguish different kernel source code versions.''' '''Currently, the Linux5.10 bsp kernel provided by RK is defined as the legacy branch. If the mainline kernel is supported in the future, a current branch will be added.''' <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.5nvme_v1.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. '''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></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"|-|'''Android version'''|'''Kernel version'''|-|'''Android 11'''|'''Linux4.19'''|} <span id="android-function-adaptation"></span>== Android Function Adaptation == {| class="wikitable"|-|'''Functions'''|'''Android 11'''|-|'''USB2.0x3'''|'''OK'''|-|'''USB3.0x1'''|'''OK'''|-|'''M.2 NVMe SSD boot'''|'''OK'''|-|'''WIFI'''|'''OK'''|-|'''Bluetooth'''|'''OK'''|-|'''GPIO(40pin)'''|'''OK'''|-|'''UART(40pin)'''|'''OK'''|-|'''SPI(40pin)'''|'''OK'''|-|'''I2C(40pin)'''|'''OK'''|-|'''PWM(40pin)'''|'''OK'''|-|'''PWM fan interface'''|'''OK'''|-|'''3pin Debugging serial port'''|'''OK'''|-|'''EMMC'''|'''OK'''|-|'''TF card boot'''|'''OK'''|-|'''HDMI video'''|'''OK'''|-|'''HDMI Audio'''|'''OK'''|-|'''LCD'''|'''OK'''|-|'''eDP display'''|'''OK'''|-|'''Gigabit network port'''|'''OK'''|-|'''Network port status indicator'''|'''OK'''|-|'''Headphone playback'''|'''OK'''|-|'''Headphone recording'''|'''OK'''|-|'''LED Light'''|'''OK'''|-|'''GPU'''|'''OK'''|-|'''NPU'''|'''OK'''|-|'''VPU'''|'''OK'''|-|'''RTC'''|'''OK'''|} <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 devices'''</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 devicegz
<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"|-|'''Version'''|'''Date'''|'''Update Notes'''|-|v0.1|2023-07-19|initial version|} <span id="image-update-history"></span>== Image Update History == {| class="wikitable"|-| '''Date'''| '''Update Notes'''|-| 2023-07-19| Orangepi3 b_1.0.0_debian_bullseye_desktop_xfce_linux5.10.160.7z Orange pi3b_1.0.0_ubuntu_jammy_desktop_xfce_linux5.10.160.7z Orange pi3b_1.0.0_ubuntu_focal_desktop_xfce_linux5.10.160.7z OrangePi3B_RK3566_Android11_v1.0.0.tar.gz OrangePi3B_RK3566_Android11_lcd_v1.0.0.tar.gz OrangePi3B_RK3566_Android11_spiOrangePi3B_RK3566_Android11_lcd_spi-nvme_v1.0.0.tar.gz
O rangePi3B_RK3566_Android11_lcd_spi-nvme_v1.0.0.tar.gz
<p>* initial version</p>
|}