Difference between revisions of "Orange Pi 5 Plus"

From Wiki-Orange Pi
Jump to: navigation, search
(Download the image of the development board and related materials)
(Burn Orange Pi OS (Droid) image toeMMC)
 
(526 intermediate revisions by the same user not shown)
Line 87: Line 87:
 
• 1 x HDMI input, up to 4K@60FPS
 
• 1 x HDMI input, up to 4K@60FPS
  
• 1 x MIPI DSI 4 Lane output, up to 4K@60Hz
+
• 1 x MIPI DSI 4 Lane output, up to 4K@60FPS
  
 
|-
 
|-
Line 159: Line 159:
 
== Top view and bottom view of Orange Pi 5 Plus ==
 
== Top view and bottom view of Orange Pi 5 Plus ==
  
'''Top view:'''
+
<big>'''Top view:'''</big>
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image4.jpeg|486x342px|Orange-Pi-5-PLUS-1]]
+
[[File:plus5-img4.png]]
  
 
</div>
 
</div>
'''Bottom view:'''
+
<big>'''Bottom view:'''</big>
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image5.jpeg|495x329px|Orange-Pi-5-PLUS-2]]
+
[[File:plus5-img5.png]]
  
 
</div>
 
</div>
 
<span id="nterface-details-of-orange-pi-5-plus"></span>
 
<span id="nterface-details-of-orange-pi-5-plus"></span>
 +
 
== Interface details of Orange Pi 5 Plus ==
 
== Interface details of Orange Pi 5 Plus ==
  
[[File:media/image6.png|600x553px]]
+
[[File:plus5-img6.png]]
  
[[File:media/image7.jpeg|576x483px|未标题-1]]
+
<div style="margin-left: 100px;">[[File:plus5-img7.png]]</div>
  
 
<span id="section"></span>
 
<span id="section"></span>
Line 189: Line 190:
 
# TF card, a class 10 or above high-speed SanDisk card with a minimum capacity of 16GB (32GB or above is recommended)
 
# TF card, a class 10 or above high-speed SanDisk card with a minimum capacity of 16GB (32GB or above is recommended)
  
::[[File:media/image8.png|124x96px]]
+
::[[File:plus5-img8.png]]
  
 
<ol start="2" style="list-style-type: decimal;">
 
<ol start="2" style="list-style-type: decimal;">
 
<li>TF card reader, used to burn the image into the TF card</li>
 
<li>TF card reader, used to burn the image into the TF card</li>
  
[[File:media/image9.png|139x106px]]
+
[[File:plus5-img9.png]]
 
</ol>
 
</ol>
 
<ol start="3" style="list-style-type: decimal;">
 
<ol start="3" style="list-style-type: decimal;">
 
<li>Display with HDMI interface</li>
 
<li>Display with HDMI interface</li>
  
[[File:media/image10.png|313x205px]]
+
[[File:plus5-img10-1.png]]
 
</ol>
 
</ol>
 
<ol start="4" style="list-style-type: decimal;">
 
<ol start="4" style="list-style-type: decimal;">
 
<li>HDMI to HDMI cable, used to connect the development board to an HDMI monitor or TV for display</li>
 
<li>HDMI to HDMI cable, used to connect the development board to an HDMI monitor or TV for display</li>
  
[[File:media/image11.png|199x129px]]
+
[[File:plus5-img11.png]]
  
 
{| class="wikitable" style="background-color:#ffffdc;width:800px;"  
 
{| class="wikitable" style="background-color:#ffffdc;width:800px;"  
 
|-
 
|-
 
|  
 
|  
<big>'''\Note, if you want to connect a 4K or 8K display, please make sure that the HDMI cable supports 4K or 8K video display.'''</big>
+
<big>'''Note, if you want to connect a 4K or 8K display, please make sure that the HDMI cable supports 4K or 8K video display.'''</big>
 
|}
 
|}
 
</ol>
 
</ol>
Line 217: Line 218:
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image12.jpeg|243x166px|IMG_256]]
+
[[File:plus5-img12.png]]
  
 
</div></ol>
 
</div></ol>
Line 225: Line 226:
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image13.jpeg|245x166px|98F5D70E2C9B3673E8ECE4B8ABDDFD80]]
+
[[File:plus5-img13.png]]
  
 
</div></ol>
 
</div></ol>
Line 233: Line 234:
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image14.jpeg|223x203px|IMG_7546]]
+
[[File:plus5-img14.png]]
  
 
</div></ol>
 
</div></ol>
Line 239: Line 240:
 
<li>Power adapter, Orange Pi 5 Plus is recommended to use 5V/4A Type-C power supply for power supply</li>
 
<li>Power adapter, Orange Pi 5 Plus is recommended to use 5V/4A Type-C power supply for power supply</li>
  
[[File:media/image15.png|274x194px]]
+
[[File:plus5-img15.png]]
  
 
{| class="wikitable" style="background-color:#ffffdc;width:800px;"  
 
{| class="wikitable" style="background-color:#ffffdc;width:800px;"  
 
|-
 
|-
 
|  
 
|  
<big>'''There are two Type-C ports that look the same on the development board. The one next to the network port is the power port, and the other Type-C port has no power supply function. Please don’t connect it wrong.'''</big>
+
<big>'''There are two Type-C ports that look the same on the development board. The one next to the network port is the power port, and the other Type-C port has no power supply function. Please don't connect it wrong.'''</big>
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image16.jpeg|269x240px|01]]
+
[[File:plus5-img16.png|center]]
  
 
</div>
 
</div>
Line 257: Line 258:
 
<li>The mouse and keyboard of the USB interface, as long as the mouse and keyboard of the standard USB interface are acceptable, the mouse and keyboard can be used to control the Orange Pi development board</li>
 
<li>The mouse and keyboard of the USB interface, as long as the mouse and keyboard of the standard USB interface are acceptable, the mouse and keyboard can be used to control the Orange Pi development board</li>
  
[[File:media/image17.png|311x264px]]
+
[[File:plus5-img17.png]]
 
</ol>
 
</ol>
 
<ol start="10" style="list-style-type: decimal;">
 
<ol start="10" style="list-style-type: decimal;">
 
<li>USB camera</li>
 
<li>USB camera</li>
  
[[File:media/image18.png|331x191px]]
+
[[File:plus5-img18.png]]
 
</ol>
 
</ol>
 
<ol start="11" style="list-style-type: decimal;">
 
<ol start="11" style="list-style-type: decimal;">
<li>'''5V cooling fan. As shown in the figure below, the development board has an interface for connecting the cooling fan, and the interface specification is''' 2p'''in 1.25mm pitch'''</li>
+
<li>'''5V cooling fan. As shown in the figure below, the development board has an interface for connecting the cooling fan, and the interface specification is 2pin 1.25mm pitch'''</li>
  
 
{| class="wikitable" style="background-color:#ffffdc;width:800px;"  
 
{| class="wikitable" style="background-color:#ffffdc;width:800px;"  
Line 273: Line 274:
 
|}
 
|}
  
[[File:media/image19.png|410x171px]]
+
[[File:plus5-img19.png]]
 
</ol>
 
</ol>
 
<ol start="12" style="list-style-type: decimal;">
 
<ol start="12" style="list-style-type: decimal;">
 
<li>Network cable, used to connect the development board to the Internet</li>
 
<li>Network cable, used to connect the development board to the Internet</li>
  
[[File:media/image20.png|143x112px]]
+
[[File:plus5-img20.png]]
 
</ol>
 
</ol>
 
<ol start="13" style="list-style-type: decimal;">
 
<ol start="13" style="list-style-type: decimal;">
 
<li>The data cable of the Type-C interface, used for burning images, using ADB and other functions</li>
 
<li>The data cable of the Type-C interface, used for burning images, using ADB and other functions</li>
  
[[File:media/image21.png|143x113px]]
+
[[File:plus5-img21.png]]
 
</ol>
 
</ol>
 
<ol start="14" style="list-style-type: decimal;">
 
<ol start="14" style="list-style-type: decimal;">
 
<li>Infrared remote control</li>
 
<li>Infrared remote control</li>
  
[[File:media/image22.png|170x173px]]
+
[[File:plus5-img22.png]]
  
 
{| class="wikitable" style="background-color:#ffffdc;width:800px;"  
 
{| class="wikitable" style="background-color:#ffffdc;width:800px;"  
Line 298: Line 299:
 
<ol start="15" style="list-style-type: decimal;">
 
<ol start="15" style="list-style-type: decimal;">
 
<li><p>OV13850 camera with 13 million MIPI interface (common with OPi5/OPi5B)</p>
 
<li><p>OV13850 camera with 13 million MIPI interface (common with OPi5/OPi5B)</p>
<p>[[File:media/image23.png|268x151px]]</p></li>
+
<p>[[File:plus5-img23.png]]</p></li>
 
<li><p>OV13855 camera with 13 million MIPI interface (common with OPi5/OPi5B)</p>
 
<li><p>OV13855 camera with 13 million MIPI interface (common with OPi5/OPi5B)</p>
<p>[[File:media/image24.png|253x150px]]</p></li>
+
<p>[[File:plus5-img24.png]]</p></li>
 
<li><p>M.2 M-KEY 2280 specification NVMe SSD solid state drive, PCIe interface specification is PCIe3.0x4</p></li>
 
<li><p>M.2 M-KEY 2280 specification NVMe SSD solid state drive, PCIe interface specification is PCIe3.0x4</p></li>
<p>[[File:media/image25.png|358x104px]]</p></ol>
+
<p>[[File:plus5-img25.png]]</p></ol>
 
<ol start="18" style="list-style-type: decimal;">
 
<ol start="18" style="list-style-type: decimal;">
 
<li>eMMC expansion module (to be added physical pictures)</li>
 
<li>eMMC expansion module (to be added physical pictures)</li>
Line 311: Line 312:
 
<big>'''The position where the eMMC module is inserted on the development board is shown in the figure below:'''</big>
 
<big>'''The position where the eMMC module is inserted on the development board is shown in the figure below:'''</big>
  
[[File:media/image26.png|317x144px]]
+
[[File:plus5-img26.png|center]]
 
|}
 
|}
 
</ol>
 
</ol>
 
<ol start="19" style="list-style-type: decimal;">
 
<ol start="19" style="list-style-type: decimal;">
 
<li><p>RTC battery, the interface is 2pin, 1.25mm pitch</p>
 
<li><p>RTC battery, the interface is 2pin, 1.25mm pitch</p>
<p>[[File:media/image27.png|250x134px]]</p></li>
+
<p>[[File:plus5-img27.png]]</p></li>
  
 
{| class="wikitable" style="background-color:#ffffdc;width:800px;"  
 
{| class="wikitable" style="background-color:#ffffdc;width:800px;"  
Line 323: Line 324:
 
<big>'''The location of the RTC battery interface on the development board is shown in the figure below:'''</big>
 
<big>'''The location of the RTC battery interface on the development board is shown in the figure below:'''</big>
  
[[File:media/image28.png|344x126px]]
+
[[File:plus5-img28.png|center]]
 
|}
 
|}
 
</ol>
 
</ol>
Line 329: Line 330:
 
<li>Horn, the interface is 2pin, 1.25mm pitch</li>
 
<li>Horn, the interface is 2pin, 1.25mm pitch</li>
  
[[File:media/image29.png|200x138px]]
+
[[File:plus5-img29.png]]
  
 
{| class="wikitable" style="background-color:#ffffdc;width:800px;"  
 
{| class="wikitable" style="background-color:#ffffdc;width:800px;"  
Line 336: Line 337:
 
<big>'''The interface position of the speaker on the development board is shown in the figure below:'''</big>
 
<big>'''The interface position of the speaker on the development board is shown in the figure below:'''</big>
  
[[File:media/image30.png|312x158px]]
+
[[File:plus5-img30.png|center]]
 
|}
 
|}
 
</ol>
 
</ol>
Line 343: Line 344:
 
<li><p>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</p></li>
 
<li><p>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</p></li>
  
[[File:media/image31.png|217x89px|G7U7JZX(V`L$`A6864]38$P]] [[File:media/image32.png|305x110px]]
+
[[File:plus5-img31.png]] [[File:plus5-img32.png]]
 
</ol>
 
</ol>
 
<ol start="23" style="list-style-type: decimal;">
 
<ol start="23" style="list-style-type: decimal;">
Line 370: Line 371:
 
'''http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html'''
 
'''http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html'''
 
|}
 
|}
::[[File:media/image33.png|361x300px]]
+
::[[File:plus5-img33.png]]
  
 
<ol start="2" style="list-style-type: decimal;">
 
<ol start="2" style="list-style-type: decimal;">
Line 391: Line 392:
 
== Method of burning Linux image to TF card based on Windows PC ==
 
== Method of burning Linux image to TF card based on Windows PC ==
  
'''Note that the Linux image mentioned here specifically refers to the image of Linux distributions such as Debian, Ubuntu, OpenWRT or OPi OS Arch downloaded from the''' Orange Pi data download page'''.'''
+
{| 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-5-plus.html '''Orange Pi's download page'''].'''</big>
 +
|}
  
 
<span id="how-to-use-balenaetcher-to-burn-linux-image"></span>
 
<span id="how-to-use-balenaetcher-to-burn-linux-image"></span>
Line 398: Line 403:
 
# First prepare a TF card with a capacity of 16GB or more. The transmission speed of the TF card must be '''class 10''' or above. It is recommended to use a TF card of SanDisk and other brands
 
# First prepare a TF card with a capacity of 16GB or more. The transmission speed of the TF card must be '''class 10''' or above. It is recommended to use a TF card of SanDisk and other brands
 
# Then use the card reader to insert the TF card into the computer
 
# Then use the card reader to insert the TF card into the computer
# Download the Linux operating system image file compression package that you want to burn from the '''Orange Pi data download page''', and then use the decompression software to decompress it. Among the decompressed files, the file ending with &quot;'''.img'''&quot; is the image file of the operating system. The size is generally above 2GB.
+
# 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-5-plus.html '''Orange Pi's download page'''], and then use the decompression software to decompress it. Among the decompressed files, the file ending with &quot;'''.img'''&quot; is the image file of the operating system. The size is generally above 2GB.
  
'''Note, if you download the OpenWRT image, you will see the following two types of images in the download link of the OpenWRT image, please download the image file in the &quot;TF card, eMMC and NVME SSD boot image&quot; folder.'''
+
::{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''Note, if you download the OpenWRT image, you will see the following two types of images in the download link of the OpenWRT image, please download the image file in the &quot;TF card, eMMC and NVME SSD boot image&quot; folder.'''</big>
  
[[File:media/image34.png|277x88px]]
+
[[File:plus5-img34.png|center]]
 +
|}
  
 
<ol start="4" style="list-style-type: decimal;">
 
<ol start="4" style="list-style-type: decimal;">
<li>Then download the burning software of Linux image——'''balenaEtcher,''' the download address is:</li></ol>
+
<li>Then download the burning software of Linux image——'''balenaEtcher,''' the download address is:</li>
 
 
[https://www.balena.io/etcher/ '''https://www.balena.io/etcher/''']
 
  
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
'''https://www.balena.io/etcher/'''
 +
|}
 +
</ol>
 
<ol start="5" style="list-style-type: decimal;">
 
<ol start="5" style="list-style-type: decimal;">
 
<li><p>After entering the balenaEtcher download page, click the green download button to jump to the place where the software is downloaded</p>
 
<li><p>After entering the balenaEtcher download page, click the green download button to jump to the place where the software is downloaded</p>
<p>[[File:media/image35.png|575x276px]]</p></li>
+
<p>[[File:plus5-img35.png]]</p></li>
<li><p>Then you can choose to download the Portable version of balenaEtcher software. The Portable version does not need to be installed, and you can use it by double-clicking to open it</p></li></ol>
+
<li><p>Then you can choose to download the Portable version of balenaEtcher software. The Portable version does not need to be installed, and you can use it by double-clicking to open it</p></li>
 
 
[[File:media/image36.png|576x213px]]
 
  
 +
[[File:plus5-img36.png]]
 +
</ol>
 
<ol start="7" style="list-style-type: decimal;">
 
<ol start="7" style="list-style-type: decimal;">
<li>If the downloaded version of balenaEtcher needs to be installed, please install it before using it. If you downloaded the Portable version of balenaEtcher, just double-click to open it. The balenaEtcher interface after opening is shown in the figure below:</li></ol>
+
<li>If the downloaded version of balenaEtcher needs to be installed, please install it before using it. If you downloaded the Portable version of balenaEtcher, just double-click to open it. The balenaEtcher interface after opening is shown in the figure below:</li>
  
[[File:media/image37.png|483x304px]]
+
[[File:plus5-img37.png]]
  
'''When opening balenaEtcher, if the following error is prompted:'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''When opening balenaEtcher, if the following error is prompted:'''</big>
  
[[File:media/image38.png|261x205px]]
+
[[File:plus5-img38.png|center]]
  
'''Please select balenaEtcher, right-click, and select Run as administrator.'''
+
<big>'''Please select balenaEtcher, right-click, and select Run as administrator.'''</big>
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image39.png|300x104px|图形用户界面, 文本, 应用程序 描述已自动生成]]
+
[[File:plus5-img39.png|center]]
  
 
</div>
 
</div>
 +
|}
 +
</ol>
 
<ol start="8" style="list-style-type: decimal;">
 
<ol start="8" style="list-style-type: decimal;">
<li>The specific steps to use balenaEtcher to burn the Linux image are as follows</li></ol>
+
<li>The specific steps to use balenaEtcher to burn the Linux image are as follows</li>
  
 
a. First select the path of the Linux image file to be burned
 
a. First select the path of the Linux image file to be burned
Line 443: Line 461:
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image40.png|501x281px|03]]
+
[[File:plus5-img40.png]]
  
</div>
+
</div></ol>
 
<ol start="9" style="list-style-type: decimal;">
 
<ol start="9" style="list-style-type: decimal;">
<li>The interface displayed in the process of burning the Linux image by balenaEtcher is shown in the figure below, and the progress bar displays purple, indicating that the Linux image is being burned into the TF card.</li></ol>
+
<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:media/image41.png|506x317px]]
 
  
 +
[[File:plus5-img41.png]]
 +
</ol>
 
<ol start="10" style="list-style-type: decimal;">
 
<ol start="10" style="list-style-type: decimal;">
<li>After burning the Linux image, balenaEtcher will also verify the image burned to the TF card by default to ensure that there is no problem in the burning process. As shown in the figure below, a green progress bar indicates that the image has been burnt, and balenaEtcher is verifying the burnt image.</li></ol>
+
<li>After burning the Linux image, balenaEtcher will also verify the image burned to 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:media/image42.png|519x325px]]
 
  
 +
[[File:plus5-img42.png]]
 +
</ol>
 
<ol start="11" style="list-style-type: decimal;">
 
<ol start="11" style="list-style-type: decimal;">
<li>After successful burning, the display interface of balenaEtcher is as shown in the figure below. If the 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.</li></ol>
+
<li>After successful burning, the display interface of balenaEtcher is as shown in the figure below. If the 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.</li>
  
[[File:media/image43.png|523x324px]]
+
[[File:plus5-img43-1.png]]
 +
</ol>
 +
<span id="how-to-use-rkdevtool-to-burn-linux-image-to-tf-card"></span>
  
<span id="how-to-use-rkdevtool-to-burn-linux-image-to-tf-card"></span>
 
 
=== How to use RKDevTool to burn Linux image to TF card ===
 
=== How to use RKDevTool to burn Linux image to TF card ===
  
 
# First, you need to prepare a data cable with a good quality Type-C interface
 
# First, you need to prepare a data cable with a good quality Type-C interface
  
[[File:media/image21.png|193x196px]]
+
::[[File:plus5-img21.png]]
  
 
<ol start="2" style="list-style-type: decimal;">
 
<ol start="2" style="list-style-type: decimal;">
 
<li><p>You also need to prepare a 16GB or larger TF card. The transmission speed of the TF card must be class 10 or above. It is recommended to use a TF card of SanDisk and other brands</p></li>
 
<li><p>You also need to prepare a 16GB or larger TF card. The transmission speed of the TF card must be class 10 or above. It is recommended to use a TF card of SanDisk and other brands</p></li>
<li><p>Then insert the TF card into the card slot of the development board</p></li></ol>
+
<li><p>Then insert the TF card into the card slot of the development board</p></li>
 
 
[[File:media/image44.png|300x87px]]
 
  
 +
[[File:plus5-img44.png]]
 +
</ol>
 
<ol start="4" style="list-style-type: decimal;">
 
<ol start="4" style="list-style-type: decimal;">
<li><p>Then download Rockchip '''DriverAssitant_v5.12.zip''' and MiniLoader and the burning tool '''RKDevTool_Release_v2.96.zipRKDevTool_Release_v3.15.zip''' from the '''Orange Pi data download page''', please ensure that the version of the downloaded RKDevTool tool is v2.96</p>
+
<li><p>Then download Rockchip '''DriverAssitant_v5.12.zip''' and MiniLoader and the burning tool '''RKDevTool_Release_v2.96.zip RKDevTool_Release_v3.15.zip''' from the [http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html '''Orange Pi's download page'''], please ensure that the version of the downloaded RKDevTool tool is v2.96</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li>On the Orange Pi data download page, first select the official tool, and then enter the following folder.</li></ol>
+
<li>On the [http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html '''Orange Pi's download page'''], first select the official tool, and then enter the following folder.</li>
</li></ol>
 
 
 
[[File:media/image45.png|382x97px]]
 
  
 +
[[File:plus5-img45.png]]
 +
</ol>
 
<ol start="2" style="list-style-type: lower-alpha;">
 
<ol start="2" style="list-style-type: lower-alpha;">
<li>Then download all the files below</li></ol>
+
<li>Then download all the files below</li>
  
[[File:media/image46.png|392x145px]]
+
[[File:plus5-img46.png]]
 
 
'''Note that the &quot;MiniLoader-things needed to burn the Linux image&quot; folder is hereinafter referred to as the MiniLoader folder.'''
 
  
 +
{| 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="5" style="list-style-type: decimal;">
 
<ol start="5" style="list-style-type: decimal;">
<li>Then download the Linux operating system image file compression package that you want to burn from the '''Orange Pi data download page''', and then use the decompression software to decompress it. Among the decompressed files, the file ending with &quot;'''.img'''&quot; is the image file of the operating system , the size is generally more than 2GB</li></ol>
+
<li>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-5-plus.html '''Orange Pi's download page'''], and then use the decompression software to decompress it. Among the decompressed files, the file ending with &quot;'''.img'''&quot; is the image file of the operating system , the size is generally more than 2GB</li>
  
'''Note, if you download the OpenWRT image, you will see the following two types of images in the download link of the OpenWRT image, please download the image file in the &quot;TF card, eMMC and NVME SSD boot image&quot; folder.'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 
+
|-
[[File:media/image34.png|301x95px]]
+
|
 +
<big>'''Note, if you download the OpenWRT image, you will see the following two types of images in the download link of the OpenWRT image, please download the image file in the &quot;TF card, eMMC and NVME SSD boot image&quot; folder.'''</big>
  
 +
[[File:plus5-img34.png|center]]
 +
|}
 +
</ol>
 
<ol start="6" style="list-style-type: decimal;">
 
<ol start="6" 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></ol>
+
<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:media/image47.png|575x169px]]
 
  
 +
[[File:plus5-img47.png]]
 +
</ol>
 
<ol start="7" style="list-style-type: decimal;">
 
<ol start="7" style="list-style-type: decimal;">
 
<li><p>After opening '''DriverInstall.exe''', the steps to install the Rockchip driver are as follows</p>
 
<li><p>After opening '''DriverInstall.exe''', the steps to install the Rockchip driver are as follows</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li>Click the &quot;'''Driver Installation'''&quot; button</li></ol>
+
<li>Click the &quot;'''Driver Installation'''&quot; button</li>
</li></ol>
 
 
 
[[File:media/image48.png|300x157px]]
 
  
 +
[[File:plus5-img48.png]]
 +
</ol>
 
<ol start="2" style="list-style-type: lower-alpha;">
 
<ol start="2" style="list-style-type: lower-alpha;">
<li>After waiting for a period of time, a pop-up window will prompt &quot;'''driver installed successfully'''&quot;, and then click the &quot;'''OK'''&quot; button.</li></ol>
+
<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:media/image49.png|429x223px]]
 
  
 +
[[File:plus5-img49.png]]
 +
</ol>
 +
</li></ol>
 
<ol start="8" style="list-style-type: decimal;">
 
<ol start="8" style="list-style-type: decimal;">
<li>Then decompress '''RKDevTool_Release_v2.96.zipRKDevTool_Release_v3.15.zip''', this software does not need to be installed, just find '''RKDevTool''' in the decompressed folder and open it</li></ol>
+
<li>Then decompress '''RKDevTool_Release_v2.96.zipRKDevTool_Release_v3.15.zip''', this software does not need to be installed, just find '''RKDevTool''' in the decompressed folder and open it</li>
 
 
[[File:media/image50.png|575x170px]]
 
  
 +
[[File:plus5-img50.png]]
 +
</ol>
 
<ol start="9" style="list-style-type: decimal;">
 
<ol start="9" style="list-style-type: decimal;">
<li>After opening the '''RKDevTool''' burning tool, because the computer has not been connected to the development board through the Type-C cable at this time, the lower left corner will prompt &quot;'''No device found'''&quot;</li></ol>
+
<li>After opening the '''RKDevTool''' burning tool, because the computer has not been connected to the development board through the Type-C cable at this time, the lower left corner will prompt &quot;'''No device found'''&quot;</li>
 
 
[[File:media/image51.png|402x189px]]
 
  
 +
[[File:plus5-img51.png]]
 +
</ol>
 
<ol start="10" style="list-style-type: decimal;">
 
<ol start="10" style="list-style-type: decimal;">
 
<li><p>Then start burning the Linux image to the TF card</p>
 
<li><p>Then start burning the Linux image to the TF card</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li>First, connect the development board to the Windows computer through the Type-C data cable. The position of the Type-C interface on the development board is shown in the figure below</li></ol>
+
<li>First, connect the development board to the Windows computer through the Type-C data cable. The position of the Type-C interface on the development board is shown in the figure below</li>
</li></ol>
 
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image52.jpeg|400x113px|C:\Users\orangepi\Desktop\用户手册插图\Pi5 Plus\未标题-2.jpg未标题-2]]
+
[[File:plus5-img52.png]]
  
</div>
+
</div></ol>
 
<ol start="2" style="list-style-type: lower-alpha;">
 
<ol start="2" style="list-style-type: lower-alpha;">
 
<li><p>Make sure the development board is not connected to the Type-C power supply</p></li>
 
<li><p>Make sure the development board is not connected to the Type-C 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>
+
<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:media/image53.png|382x93px]]
 
  
 +
[[File:plus5-img53.png]]
 +
</ol>
 
<ol start="4" style="list-style-type: lower-alpha;">
 
<ol start="4" style="list-style-type: lower-alpha;">
<li>Finally, connect the power supply of the Type-C interface to the development board, and power on, and then release the MaskROM button. The location of the Type-C power interface is as follows:</li></ol>
+
<li>Finally, connect the power supply of the Type-C interface to the development board, and power on, and then release the MaskROM button. The location of the Type-C power interface is as follows:</li>
 
 
[[File:media/image54.png|404x123px]]
 
  
 +
[[File:plus5-img54.png]]
 +
</ol>
 
<ol start="5" style="list-style-type: lower-alpha;">
 
<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>
+
<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:media/image55.png|457x215px]]
 
  
 +
[[File:plus5-img55.png]]
 +
</ol>
 
<ol start="6" style="list-style-type: lower-alpha;">
 
<ol start="6" style="list-style-type: lower-alpha;">
<li>Then place the mouse cursor in the area below</li></ol>
+
<li>Then place the mouse cursor in the area below</li>
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image56.png|455x216px|图片1]]
+
[[File:plus5-img56.png]]
  
</div>
+
</div></ol>
 
<ol start="7" style="list-style-type: lower-alpha;">
 
<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>
+
<li>Then click the right mouse button and the selection interface shown in the figure below will pop up</li>
 
 
[[File:media/image57.png|453x213px]]
 
  
 +
[[File:plus5-img57.png]]
 +
</ol>
 
<ol start="8" style="list-style-type: lower-alpha;">
 
<ol start="8" style="list-style-type: lower-alpha;">
<li>Then select the '''import configuration''' option</li></ol>
+
<li>Then select the '''import configuration''' option</li>
 
 
[[File:media/image58.png|458x215px]]
 
  
 +
[[File:plus5-img58.png]]
 +
</ol>
 
<ol style="list-style-type: lower-roman;">
 
<ol style="list-style-type: lower-roman;">
<li>Then select the '''rk3588_linux_tfcard.cfg''' configuration file in the '''MiniLoader''' folder downloaded earlier, and click '''Open'''</li></ol>
+
<li>Then select the '''rk3588_linux_tfcard.cfg''' configuration file in the '''MiniLoader''' folder downloaded earlier, and click '''Open'''</li>
 
 
[[File:media/image59.png|483x227px]]
 
  
 +
[[File:plus5-img59.png]]
 +
</ol>
 
<ol start="10" style="list-style-type: lower-alpha;">
 
<ol start="10" style="list-style-type: lower-alpha;">
<li>Then click '''OK'''</li></ol>
+
<li>Then click '''OK'''</li>
 
 
[[File:media/image60.png|483x227px]]
 
  
 +
[[File:plus5-img60.png]]
 +
</ol>
 
<ol start="11" style="list-style-type: lower-alpha;">
 
<ol start="11" style="list-style-type: lower-alpha;">
<li>Then click the position shown in the figure below</li></ol>
+
<li>Then click the position shown in the figure below</li>
 
 
[[File:media/image61.png|486x228px]]
 
  
 +
[[File:plus5-img61.png]]
 +
</ol>
 
<ol start="12" style="list-style-type: lower-alpha;">
 
<ol start="12" style="list-style-type: lower-alpha;">
<li>Then select '''MiniLoaderAll.bin''' in the '''MiniLoader''' folder downloaded earlier, and then click to '''open'''</li></ol>
+
<li>Then select '''MiniLoaderAll.bin''' in the '''MiniLoader''' folder downloaded earlier, and then click to '''open'''</li>
 
 
[[File:media/image62.png|492x231px]]
 
  
 +
[[File:plus5-img62.png]]
 +
</ol>
 
<ol start="13" style="list-style-type: lower-alpha;">
 
<ol start="13" style="list-style-type: lower-alpha;">
<li>Then click the position shown in the figure below</li></ol>
+
<li>Then click the position shown in the figure below</li>
 
 
[[File:media/image63.png|493x232px]]
 
  
 +
[[File:plus5-img63.png]]
 +
</ol>
 
<ol start="14" style="list-style-type: lower-alpha;">
 
<ol start="14" style="list-style-type: lower-alpha;">
<li>Then select the path of the linux image you want to burn, and click '''Open'''</li></ol>
+
<li>Then select the path of the linux image you want to burn, and click '''Open'''</li>
  
'''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.'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 
+
|-
[[File:media/image64.png|499x234px]]
+
|
 +
<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:plus5-img64.png]]
 +
</ol>
 
<ol start="15" style="list-style-type: lower-alpha;">
 
<ol start="15" style="list-style-type: lower-alpha;">
<li>Then please check the '''option to force writing by address'''</li></ol>
+
<li>Then please check the '''option to force writing by address'''</li>
 
 
[[File:media/image65.png|489x230px]]
 
  
 +
[[File:plus5-img65.png]]
 +
</ol>
 
<ol start="16" style="list-style-type: lower-alpha;">
 
<ol start="16" style="list-style-type: lower-alpha;">
<li>Then click the execute button to start burning the linux image to the tf card of the development board</li></ol>
+
<li>Then click the execute button to start burning the linux image to the tf card of the development board</li>
 
 
[[File:media/image66.png|492x231px]]
 
  
 +
[[File:plus5-img66.png]]
 +
</ol>
 
<ol start="17" style="list-style-type: lower-alpha;">
 
<ol start="17" style="list-style-type: lower-alpha;">
<li>The log displayed after burning the linux image is shown in the figure below</li></ol>
+
<li>The log displayed after burning the linux image is shown in the figure below</li>
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image67.png|492x231px|%O4~FPPAT$0RH{3S~CGJ@@Q(1)]]
+
[[File:plus5-img67.png]]
  
</div>
+
</div></ol>
 
<ol start="18" style="list-style-type: lower-alpha;">
 
<ol start="18" style="list-style-type: lower-alpha;">
 
<li>After burning the linux image to the TF card, the linux system will start automatically.</li></ol>
 
<li>After burning the linux image to the TF card, the linux system will start automatically.</li></ol>
 +
</li></ol>
 +
<span id="how-to-use-win32diskimager-to-burn-linux-image"></span>
  
<span id="how-to-use-win32diskimager-to-burn-linux-image"></span>
 
 
=== How to use Win32Diskimager to burn Linux image ===
 
=== How to use Win32Diskimager to burn Linux image ===
  
Line 630: Line 661:
 
<li><p>Then format the TF card</p>
 
<li><p>Then format the TF card</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li>'''SD Card Formatter''' can be used to format the TF card. The download link is</li></ol>
+
<li>'''SD Card Formatter''' can be used to format the TF card. The download link is</li>
</li></ol>
+
{| class="wikitable" style="width:800px;"
 
+
|-
[https://www.sdcard.org/downloads/formatter/eula_windows/SDCardFormatterv5_WinEN.zip '''https://www.sdcard.org/downloads/formatter/eula_windows/SDCardFormatterv5_WinEN.zip''']
+
|
 
+
'''https://www.sdcard.org/downloads/formatter/eula_windows/SDCardFormatterv5_WinEN.zip'''
 +
|}
 +
</ol>
 
<ol start="2" style="list-style-type: lower-alpha;">
 
<ol start="2" style="list-style-type: lower-alpha;">
 
<li><p>After downloading, unzip and install directly, and then open the software</p></li>
 
<li><p>After downloading, unzip and install directly, and then open the software</p></li>
<li><p>If only a TF card is inserted into the computer, the drive letter of the TF card will be displayed in the &quot;'''Select card'''&quot; column. If multiple USB storage devices are inserted into the computer, you can select the corresponding drive letter of the TF card through the drop-down box</p></li></ol>
+
<li><p>If only a TF card is inserted into the computer, the drive letter of the TF card will be displayed in the &quot;'''Select card'''&quot; column. If multiple USB storage devices are inserted into the computer, you can select the corresponding drive letter of the TF card through the drop-down box</p></li>
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image68.png|209x228px|选区_199]]
+
[[File:plus5-img68.png]]
  
</div>
+
</div></ol>
 
<ol start="4" style="list-style-type: lower-alpha;">
 
<ol start="4" style="list-style-type: lower-alpha;">
<li>Then click &quot;'''Format'''&quot;, a warning box will pop up before formatting, and formatting will start after selecting &quot;'''Yes (Y)'''&quot;</li></ol>
+
<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:media/image69.png|304x147px]]
 
  
 +
[[File:plus5-img69.png]]
 +
</ol>
 
<ol start="5" style="list-style-type: lower-alpha;">
 
<ol start="5" style="list-style-type: lower-alpha;">
<li>After formatting the TF card, the message shown in the figure below will pop up, click OK</li></ol>
+
<li>After formatting the TF card, the message shown in the figure below will pop up, click OK</li>
  
<blockquote>[[File:media/image70.png|186x149px]]
+
[[File:plus5-img70.png]]</ol>
</blockquote>
+
</li></ol>
 
<ol start="4" style="list-style-type: decimal;">
 
<ol start="4" style="list-style-type: decimal;">
<li>Download the image file compression package of the Linux operating system that you want to burn from the '''Orange Pi data download page''', and then use the decompression software to decompress it. Among the decompressed files, the file ending with &quot;'''.img'''&quot; is the image file of the operating system. The size is generally more than 2GB</li></ol>
+
<li>Download the image file compression package of the Linux operating system that you want to burn from the '''Orange Pi's download page''', and then use the decompression software to decompress it. Among the decompressed files, the file ending with &quot;'''.img'''&quot; is the image file of the operating system. The size is generally more than 2GB</li>
  
'''Note, if you download the OpenWRT image, you will see the following two types of images in the download link of the OpenWRT image, please download the image file in the &quot;TF card, eMMC and NVME SSD boot image&quot; folder.'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 
+
|-
[[File:media/image34.png|309x98px]]
+
|
 +
<big>'''Note, if you download the OpenWRT image, you will see the following two types of images in the download link of the OpenWRT image, please download the image file in the &quot;TF card, eMMC and NVME SSD boot image&quot; folder.'''</big>
  
 +
[[File:plus5-img34.png|center]]
 +
|}
 +
</ol>
 
<ol start="5" style="list-style-type: decimal;">
 
<ol start="5" style="list-style-type: decimal;">
<li>Use '''Win32Diskimager''' to burn the Linux image to the TF card</li></ol>
+
<li>Use '''Win32Diskimager''' to burn the Linux image to the TF card</li>
  
<!-- -->
 
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li>The download page of Win32Diskimager is</li></ol>
+
<li>The download page of Win32Diskimager is</li>
 
 
[http://sourceforge.net/projects/win32diskimager/files/Archive/ '''http://sourceforge.net/projects/win32diskimager/files/Archive/''']
 
  
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
'''http://sourceforge.net/projects/win32diskimager/files/Archive/'''
 +
|}
 +
</ol>
 
<ol start="2" style="list-style-type: lower-alpha;">
 
<ol start="2" style="list-style-type: lower-alpha;">
<li>After downloading, install it directly. The interface of &gt; Win32Diskimager is as follows</li></ol>
+
<li>After downloading, install it directly. The interface of Win32Diskimager is as follows</li>
  
 
a) First select the path of the image file
 
a) First select the path of the image file
Line 683: Line 723:
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image71.png|297x206px|C:\Users\orangepi\Desktop\用户手册插图\Pi5 Plus\a8fda8737c5b0b3b38fbb75ef68acfc.pnga8fda8737c5b0b3b38fbb75ef68acfc]]
+
[[File:plus5-img71.png]]
  
</div>
+
</div></ol>
 
<ol start="3" style="list-style-type: lower-alpha;">
 
<ol start="3" style="list-style-type: lower-alpha;">
<li><p>After the image writing is completed, click the &quot;'''Exit'''&quot; button &gt; to exit, and then you</p>
+
<li><p>After the image writing is completed, click the '''&quot; Exit &quot;''' button to exit, and then you can pull out the TF card and insert it into the development board to start</p></li></ol>
<p>can pull out the TF card and insert it into the development board to start</p></li></ol>
+
</ol>
 +
<span id="method-of-burning-linux-image-to-tf-card-based-on-ubuntu-pc"></span>
  
<span id="method-of-burning-linux-image-to-tf-card-based-on-ubuntu-pc"></span>
 
 
== Method of burning Linux image to TF card based on Ubuntu PC ==
 
== Method of burning Linux image to TF card based on Ubuntu PC ==
  
'''Note that the Linux image mentioned here specifically refers to the image of Linux distributions such as Debian, Ubuntu, OpenWRT or OPi OS Arch downloaded from the''' Orange Pi data download page''', and the Ubuntu PC refers to the personal computer with the Ubuntu system installed.'''
+
{| 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-5-plus.html '''Orange Pi's download page'''], and the Ubuntu PC refers to the personal computer with the Ubuntu system installed.'''</big>
 +
|}
  
 
# First prepare a TF card with a capacity of '''16GB''' or more. The transmission speed of the TF card must be '''class 10''' or above. It is recommended to use a TF card of SanDisk and other brands
 
# First prepare a TF card with a capacity of '''16GB''' or more. The transmission speed of the TF card must be '''class 10''' or above. It is recommended to use a TF card of SanDisk and other brands
Line 699: Line 743:
 
# Download the balenaEtcher software, the download address is
 
# Download the balenaEtcher software, the download address is
  
[https://www.balena.io/etcher/ '''https://www.balena.io/etcher/''']
+
::{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
'''https://www.balena.io/etcher/'''
 +
|}
  
 
<ol start="4" style="list-style-type: decimal;">
 
<ol start="4" style="list-style-type: decimal;">
<li>After entering the balenaEtcher download page, click the green download button to jump to the place where the software is downloaded</li></ol>
+
<li>After entering the balenaEtcher download page, click the green download button to jump to the place where the software is downloaded</li>
 
 
[[File:media/image35.png|575x276px]]
 
  
 +
[[File:plus5-img35.png]]
 +
</ol>
 
<ol start="5" style="list-style-type: decimal;">
 
<ol start="5" style="list-style-type: decimal;">
<li>Then choose to download the Linux version of the software</li></ol>
+
<li>Then choose to download the Linux version of the software</li>
 
 
[[File:media/image72.png|575x218px]]
 
  
 +
[[File:plus5-img72.png]]
 +
</ol>
 
<ol start="6" style="list-style-type: decimal;">
 
<ol start="6" style="list-style-type: decimal;">
<li>Download the Linux operating system image file compression package that you want to burn from the '''Orange Pi data download page,''' and then use the decompression software to decompress it. Among the decompressed files, the file ending with &quot;'''.img'''&quot; is the image file of the operating system. The size is generally more than 2GB</li></ol>
+
<li>Download the Linux operating system image file compression package that you want to burn from the [http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html '''Orange Pi's download page'''], and then use the decompression software to decompress it. Among the decompressed files, the file ending with &quot;'''.img'''&quot; is the image file of the operating system. The size is generally more than 2GB</li>
  
'''Note, if you download the OpenWRT image, you will see the following two types of images in the download link of the OpenWRT image, please download the image file in the &quot;TF card, eMMC and NVME SSD boot image&quot; folder.'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''Note, if you download the OpenWRT image, you will see the following two types of images in the download link of the OpenWRT image, please download the image file in the &quot;TF card, eMMC and NVME SSD boot image&quot; folder.'''</big>
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image73.png|275x87px|e6986fc9c8fc078e8cb6a9c39b76fb8]]
+
[[File:plus5-img73.png|center]]
  
 
</div>
 
</div>
<blockquote>The decompression command for the compressed package ending in 7z is as follows:
+
|}
</blockquote>
+
 
 +
The decompression command for the compressed package ending in 7z is as follows:
 +
 
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
test@test:~$ '''7z x orangepi5plus_1.0.0_debian_bullseye_desktop_xfce_linux5.10.110.7z'''
 
test@test:~$ '''7z x orangepi5plus_1.0.0_debian_bullseye_desktop_xfce_linux5.10.110.7z'''
  
Line 730: Line 786:
  
 
orangepi5plus_1.0.0_debian_bullseye_desktop_xfce_linux5.10.110.img # mirror file
 
orangepi5plus_1.0.0_debian_bullseye_desktop_xfce_linux5.10.110.img # mirror file
 +
|}
  
 
If you download the OpenWRT image, the compressed package ends with gz, and the decompression command is as follows:
 
If you download the OpenWRT image, the compressed package ends with gz, and the decompression command is as follows:
  
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
test@test:~$ '''gunzip openwrt-aarch64-opi5plus-23.05-linux-5.10.110-ext4.img.gz'''
 
test@test:~$ '''gunzip openwrt-aarch64-opi5plus-23.05-linux-5.10.110-ext4.img.gz'''
  
Line 738: Line 798:
  
 
'''openwrt-aarch64-opi5plus-23.05-linux-5.10.110-ext4.img''' # mirror file
 
'''openwrt-aarch64-opi5plus-23.05-linux-5.10.110-ext4.img''' # mirror file
 
+
|}
 +
</ol>
 
<ol start="7" style="list-style-type: decimal;">
 
<ol start="7" style="list-style-type: decimal;">
<li>After decompressing the image, you can first use the '''sha256sum -c *.sha'''.sha command to calculate whether the checksum is correct. If the prompt is successful, it means that the downloaded image is correct, and you can safely burn it to the TF card. If it prompts that the '''checksum does not match''', it means There is a problem with the downloaded image, please try to download again</li></ol>
+
<li>After decompressing the image, you can first use the '''sha256sum -c *.sha'''.sha command to calculate whether the checksum is correct. If the prompt is successful, it means that the downloaded image is correct, and you can safely burn it to the TF card. If it prompts that the '''checksum does not match''', it means There is a problem with the downloaded image, please try to download again</li>
  
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
test@test:~$ '''sha256sum -c *.sha'''
 
test@test:~$ '''sha256sum -c *.sha'''
  
 
orangepi5plus_1.0.0_debian_bullseye_desktop_xfce_linux5.10.110.img: OK
 
orangepi5plus_1.0.0_debian_bullseye_desktop_xfce_linux5.10.110.img: OK
 +
|}
  
 
If you download the OpenWRT image, you need to verify the compressed package, do not decompress it and then verify it
 
If you download the OpenWRT image, you need to verify the compressed package, do not decompress it and then verify it
  
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
test@test:~$ '''sha256sum -c openwrt-aarch64-opi5plus-23.04-linux-5.10.110-ext4.img.gz.sha'''
 
test@test:~$ '''sha256sum -c openwrt-aarch64-opi5plus-23.04-linux-5.10.110-ext4.img.gz.sha'''
  
 
openwrt-aarch64-opi5plus-23.04-linux-5.10.110-ext4.img.gz: OK
 
openwrt-aarch64-opi5plus-23.04-linux-5.10.110-ext4.img.gz: OK
 
+
|}
 +
</ol>
 
<ol start="8" style="list-style-type: decimal;">
 
<ol start="8" style="list-style-type: decimal;">
<li>Then double-click '''balenaEtcher-1.14.3-x64.AppImage''' on the graphical interface of Ubuntu PC to open balenaEtcher (no installation required), and the interface after balenaEtcher is opened is shown in the figure below</li></ol>
+
<li>Then double-click '''balenaEtcher-1.14.3-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:media/image74.png|423x251px]]
 
  
 +
[[File:plus5-img74.png]]
 +
</ol>
 
<ol start="9" style="list-style-type: decimal;">
 
<ol start="9" style="list-style-type: decimal;">
<li>The specific steps to use balenaEtcher to burn the Linux image are as follows</li></ol>
+
<li>The specific steps to use balenaEtcher to burn the Linux image are as follows</li>
  
 
a. First select the path of the Linux image file to be burned
 
a. First select the path of the Linux image file to be burned
Line 768: Line 837:
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image40.png|501x281px|03]]
+
[[File:plus5-img40.png]]
  
</div>
+
</div></ol>
 
<ol start="10" style="list-style-type: decimal;">
 
<ol start="10" style="list-style-type: decimal;">
<li>The interface displayed in the process of burning the Linux image by balenaEtcher is shown in the figure below, and the progress bar displays purple, indicating that the Linux image is being burned into the TF card</li></ol>
+
<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:media/image75.png|576x247px]]
+
[[File:plus5-img75.png]]
 +
</ol>
 +
<ol start="11" style="list-style-type: decimal;">
 +
<li>After burning the Linux image, balenaEtcher will also verify the image burned into the TF card by default to ensure that there is no problem in the burning process. As shown in the figure below, a green progress bar indicates that the image has been burnt, and balenaEtcher is verifying the burnt image</li>
  
 +
[[File:plus5-img76.png]]
 +
</ol>
 
<ol start="12" style="list-style-type: decimal;">
 
<ol start="12" style="list-style-type: decimal;">
<li>The interface displayed in the process of burning the Linux image by balenaEtcher is shown in the figure below, and the progress bar displays purple, indicating that the Linux image is being burned into the TF card</li></ol>
 
 
[[File:media/image76.png|576x252px]]
 
 
<ol start="13" style="list-style-type: decimal;">
 
 
<li><p>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.</p>
 
<li><p>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.</p>
<p>[[File:media/image77.png|576x340px]]</p></li></ol>
+
<p>[[File:plus5-img77.png]]</p></li></ol>
  
 
<span id="how-to-burn-linux-image-to-emmc"></span>
 
<span id="how-to-burn-linux-image-to-emmc"></span>
 +
 
== How to burn Linux image to eMMC ==
 
== How to burn Linux image to eMMC ==
  
'''Note, after burning the image into eMMC, if the test finds that it cannot be started, please clear the SPIFlash and try again. For the method of clearing SPIFlash, please refer to the method of using RKDevTool to clear SPIFlash.'''
+
{| 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 the method of using RKDevTool to clear SPIFlash.'''</big>
 +
|}
  
 
<span id="how-to-use-rkdevtool-to-burn-linux-image-into-emmc"></span>
 
<span id="how-to-use-rkdevtool-to-burn-linux-image-into-emmc"></span>
 
=== How to use RKDevTool to burn Linux image into eMMC ===
 
=== How to use RKDevTool to burn Linux image into eMMC ===
  
'''Note that all the following operations are performed on a Windows computer.'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''Note that all the following operations are performed on a Windows computer.'''</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''' Orange Pi data download page.
+
{| 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-5-plus.html '''Orange Pi's download page''']</big>
 +
|}
  
 
# The development board reserves the expansion interface of the eMMC module. Before programming 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 location of the eMMC interface is as follows:
 
# The development board reserves the expansion interface of the eMMC module. Before programming 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 location of the eMMC interface is as follows:
  
[[File:media/image78.png|307x141px]]
+
::[[File:plus5-img78-1.png]][[File:plus5-img78-2.png]]
 +
 
 +
::[[File:plus5-img78-3.png]]
  
 
<ol start="2" style="list-style-type: decimal;">
 
<ol start="2" style="list-style-type: decimal;">
<li>It is also necessary to prepare a data cable with a good quality Type-C interface</li></ol>
+
<li>It is also necessary to prepare a data cable with a good quality Type-C interface</li>
 
 
[[File:media/image21.png|150x152px]]
 
  
 +
[[File:plus5-img21.png]]
 +
</ol>
 
<ol start="3" style="list-style-type: decimal;">
 
<ol start="3" style="list-style-type: decimal;">
<li><p>Then download Rockchip '''DriverAssitant_v5.12.zip''' and '''MiniLoader''' and the burning tool RKDevTool_Release_v2.96.zipRKDevTool_Release_v3.15.zip from the '''Orange Pi data download page''', please make sure that the version of the downloaded RKDevTool tool is v2.96.</p>
+
<li><p>Then download Rockchip '''DriverAssitant_v5.12.zip''' and '''MiniLoader''' and the burning tool RKDevTool_Release_v2.96.zipRKDevTool_Release_v3.15.zip from the [http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html '''Orange Pi's download page'''], please make sure that the version of the downloaded RKDevTool tool is v2.96.</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li>On the download page of Orange Pi, first select the official tool, and then enter the following folder</li></ol>
+
<li>On the download page of Orange Pi, first select the official tool, and then enter the following folder</li>
</li></ol>
 
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image79.png|408x99px|c40e71d1a66216e12b3b4297138f749]]
+
[[File:plus5-img79.png]]
  
</div>
+
</div></ol>
 
<ol start="2" style="list-style-type: lower-alpha;">
 
<ol start="2" style="list-style-type: lower-alpha;">
<li>Then download all the files below</li></ol>
+
<li>Then download all the files below</li>
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image80.png|337x138px|2feec28318eaa60c0514000158b889a]]
+
[[File:plus5-img80.png]]
 
 
</div>
 
'''Note that the &quot;MiniLoader-things needed to burn the Linux image&quot; folder is hereinafter referred to as the MiniLoader folder.'''
 
  
 +
</div></ol>
 +
{| 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>
 +
|}
 +
</li></ol>
 
<ol start="4" style="list-style-type: decimal;">
 
<ol start="4" style="list-style-type: decimal;">
<li>Then download the Linux operating system image file compression package that you want to burn from the '''Orange Pi data download page''', and then use the decompression software to decompress it. Among the decompressed files, the file ending with &quot;'''.img'''&quot; is the image file of the operating system , the size is generally more than 2GB</li></ol>
+
<li>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-5-plus.html '''Orange Pi's download page'''], and then use the decompression software to decompress it. Among the decompressed files, the file ending with &quot;'''.img'''&quot; is the image file of the operating system , the size is generally more than 2GB</li>
  
'''Note, if you download the OpenWRT image, you will see the following two types of images in the download link of the OpenWRT image, please download the image file in the &quot;TF card, eMMC and NVME SSD boot image&quot; folder.'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''Note, if you download the OpenWRT image, you will see the following two types of images in the download link of the OpenWRT image, please download the image file in the &quot;TF card, eMMC and NVME SSD boot image&quot; folder.'''</big>
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image73.png|340x108px|e6986fc9c8fc078e8cb6a9c39b76fb8]]
+
[[File:plus5-img73.png|center]]
  
 
</div>
 
</div>
 +
|}
 +
</ol>
 
<ol start="5" style="list-style-type: decimal;">
 
<ol start="5" 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></ol>
+
<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:media/image47.png|496x146px]]
 
  
 +
[[File:plus5-img47.png]]
 +
</ol>
 
<ol start="6" style="list-style-type: decimal;">
 
<ol start="6" style="list-style-type: decimal;">
 
<li><p>After opening '''DriverInstall.exe,''' the steps to install the Rockchip driver are as follows</p>
 
<li><p>After opening '''DriverInstall.exe,''' the steps to install the Rockchip driver are as follows</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li>Click the &quot;'''Driver Installation'''&quot; button</li></ol>
+
<li>Click the &quot;'''Driver Installation'''&quot; button</li>
</li></ol>
 
 
 
[[File:media/image48.png|284x149px]]
 
  
 +
[[File:plus5-img48.png]]
 +
</ol>
 
<ol start="2" style="list-style-type: lower-alpha;">
 
<ol start="2" style="list-style-type: lower-alpha;">
<li>After waiting for a period of time, a pop-up window will prompt &quot;'''driver installed successfully'''&quot;, and then click the &quot;'''OK'''&quot; button.</li></ol>
+
<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:media/image49.png|296x154px]]
 
  
 +
[[File:plus5-img49.png]]
 +
</ol>
 +
</li></ol>
 
<ol start="7" style="list-style-type: decimal;">
 
<ol start="7" style="list-style-type: decimal;">
<li>Then decompress RKDevTool_Release_v3.15.zip, this software does not need to be installed, just find '''RKDevTool''' in the decompressed folder and open it</li></ol>
+
<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:media/image50.png|484x143px]]
 
  
 +
[[File:plus5-img50.png]]
 +
</ol>
 
<ol start="8" style="list-style-type: decimal;">
 
<ol start="8" style="list-style-type: decimal;">
<li>After opening the '''RKDevTool''' burning tool, because the computer has not been connected to the development board through the Type-C cable at this time, the lower left corner will prompt &quot;'''No device found'''&quot;</li></ol>
+
<li>After opening the '''RKDevTool''' burning tool, because the computer has not been connected to the development board through the Type-C cable at this time, the lower left corner will prompt &quot;'''No device found'''&quot;</li>
 
 
[[File:media/image51.png|442x208px]]
 
  
 +
[[File:plus5-img51.png]]
 +
</ol>
 
<ol start="9" style="list-style-type: decimal;">
 
<ol start="9" style="list-style-type: decimal;">
 
<li><p>Then start burning the Linux image into eMMC</p>
 
<li><p>Then start burning the Linux image into eMMC</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li>First, connect the development board to the Windows computer through the Type-C data cable. The position of the Type-C interface on the development board is shown in the figure below</li></ol>
+
<li>First, connect the development board to the Windows computer through the Type-C data cable. The position of the Type-C interface on the development board is shown in the figure below</li>
</li></ol>
 
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image52.jpeg|403x114px|C:\Users\orangepi\Desktop\用户手册插图\Pi5 Plus\未标题-2.jpg未标题-2]]
+
[[File:plus5-img52.png]]
  
</div>
+
</div></ol>
 
<ol start="2" style="list-style-type: lower-alpha;">
 
<ol start="2" style="list-style-type: lower-alpha;">
 
<li><p>Make sure that the development board is not inserted into the TF card and not connected to the power supply</p></li>
 
<li><p>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>
+
<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:media/image53.png|418x94px]]
 
  
 +
[[File:plus5-img53.png]]
 +
</ol>
 
<ol start="4" style="list-style-type: lower-alpha;">
 
<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>
+
<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:media/image54.png|407x124px]]
 
  
 +
[[File:plus5-img54.png]]
 +
</ol>
 
<ol start="5" style="list-style-type: lower-alpha;">
 
<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>
+
<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:media/image55.png|457x215px]]
 
  
 +
[[File:plus5-img55.png]]
 +
</ol>
 
<ol start="6" style="list-style-type: lower-alpha;">
 
<ol start="6" style="list-style-type: lower-alpha;">
<li>Then place the mouse cursor in the area below</li></ol>
+
<li>Then place the mouse cursor in the area below</li>
 
 
[[File:media/image81.png|458x215px]]
 
  
 +
[[File:plus5-img81-1.png]]
 +
</ol>
 
<ol start="7" style="list-style-type: lower-alpha;">
 
<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>
+
<li>Then click the right mouse button and the selection interface shown in the figure below will pop up</li>
 
 
[[File:media/image57.png|460x216px]]
 
  
 +
[[File:plus5-img57.png]]
 +
</ol>
 
<ol start="8" style="list-style-type: lower-alpha;">
 
<ol start="8" style="list-style-type: lower-alpha;">
<li>Then select the '''import configuration''' option</li></ol>
+
<li>Then select the '''import configuration''' option</li>
 
 
[[File:media/image58.png|458x215px]]
 
  
 +
[[File:plus5-img58.png]]
 +
</ol>
 
<ol style="list-style-type: lower-roman;">
 
<ol style="list-style-type: lower-roman;">
<li>Then select the '''rk3588_linux_emmc.cfg''' configuration file in the '''MiniLoader''' folder downloaded earlier, and click '''Open'''</li></ol>
+
<li>Then select the '''rk3588_linux_emmc.cfg''' configuration file in the '''MiniLoader''' folder downloaded earlier, and click '''Open'''</li>
 
 
[[File:media/image82.png|466x219px]]
 
  
 +
[[File:plus5-img82.png]]
 +
</ol>
 
<ol start="10" style="list-style-type: lower-alpha;">
 
<ol start="10" style="list-style-type: lower-alpha;">
<li>Then click '''OK'''</li></ol>
+
<li>Then click '''OK'''</li>
 
 
[[File:media/image83.png|468x220px]]
 
  
 +
[[File:plus5-img83.png]]
 +
</ol>
 
<ol start="11" style="list-style-type: lower-alpha;">
 
<ol start="11" style="list-style-type: lower-alpha;">
<li>Then click the position shown in the figure below</li></ol>
+
<li>Then click the position shown in the figure below</li>
 
 
[[File:media/image84.png|462x217px]]
 
  
 +
[[File:plus5-img84.png]]
 +
</ol>
 
<ol start="12" style="list-style-type: lower-alpha;">
 
<ol start="12" style="list-style-type: lower-alpha;">
<li>Then select '''MiniLoaderAll.bin''' in the '''MiniLoader''' folder downloaded earlier, and then click to '''open'''</li></ol>
+
<li>Then select '''MiniLoaderAll.bin''' in the '''MiniLoader''' folder downloaded earlier, and then click to '''open'''</li>
 
 
[[File:media/image85.png|463x217px]]
 
  
 +
[[File:plus5-img85.png]]
 +
</ol>
 
<ol start="13" style="list-style-type: lower-alpha;">
 
<ol start="13" style="list-style-type: lower-alpha;">
<li>Then click the position shown in the figure below</li></ol>
+
<li>Then click the position shown in the figure below</li>
 
 
[[File:media/image86.png|459x216px]]
 
  
 +
[[File:plus5-img86.png]]
 +
</ol>
 
<ol start="14" style="list-style-type: lower-alpha;">
 
<ol start="14" style="list-style-type: lower-alpha;">
<li>. Then select the path of the linux image you want to burn, and click '''Open'''</li></ol>
+
<li>Then select the path of the linux image you want to burn, and click '''Open'''</li>
  
'''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.'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 
+
|-
[[File:media/image64.png|499x234px]]
+
|
 +
<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:plus5-img64.png]]
 +
|}
 +
</ol>
 
<ol start="15" style="list-style-type: lower-alpha;">
 
<ol start="15" style="list-style-type: lower-alpha;">
<li>Then please check the option to '''force writing by address'''</li></ol>
+
<li>Then please check the option to '''force writing by address'''</li>
 
 
[[File:media/image87.png|501x235px]]
 
  
 +
[[File:plus5-img87.png]]
 +
</ol>
 
<ol start="16" style="list-style-type: lower-alpha;">
 
<ol start="16" style="list-style-type: lower-alpha;">
<li>Then click the execute button to start burning the linux image to the eMMC of the development board</li></ol>
+
<li>Then click the execute button to start burning the linux image to the eMMC of the development board</li>
 
 
[[File:media/image88.png|502x236px]]
 
  
 +
[[File:plus5-img88.png]]
 +
</ol>
 
<ol start="17" style="list-style-type: lower-alpha;">
 
<ol start="17" style="list-style-type: lower-alpha;">
<li>The log displayed after burning the linux image is shown in the figure below</li></ol>
+
<li>The log displayed after burning the linux image is shown in the figure below</li>
 
 
[[File:media/image89.png|500x235px]]
 
  
 +
[[File:plus5-img89.png]]
 +
</ol>
 
<ol start="18" style="list-style-type: lower-alpha;">
 
<ol start="18" style="list-style-type: lower-alpha;">
<li>After burning the linux image into the eMMC, the linux system will &gt; start automatically.</li></ol>
+
<li>After burning the linux image into the eMMC, the linux system will start automatically.</li>
 +
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''Note, after burning the image into eMMC, if the test finds that it cannot be started, please clear the SPIFlash and try again. For the method of clearing SPIFlash, please refer to the method of using RKDevTool to clear SPIFlash.'''</big>
 +
|}
 +
</ol>
 +
</li></ol>
 +
<span id="using-the-dd-command-to-burn-the-linux-image-into-emmc"></span>
  
<span id="using-the-dd-command-to-burn-the-linux-image-into-emmc"></span>
 
 
=== Using the dd command to burn the Linux image into eMMC ===
 
=== Using the dd command to burn the Linux image into eMMC ===
  
'''Note that the Linux image mentioned here specifically refers to the image of Linux distributions such as Debian, Ubuntu, OpenWRT or OPi OS Arch downloaded from the Orange Pi data download page.'''
+
{| 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 Orange Pi's download page.'''</big>
 +
|}
  
 
# The development board reserves the expansion interface of the eMMC module. Before programming 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 location of the eMMC interface is as follows:
 
# The development board reserves the expansion interface of the eMMC module. Before programming 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 location of the eMMC interface is as follows:
  
[[File:media/image78.png|312x143px]]
+
::[[File:plus5-img78-1.png]][[File:plus5-img78-2.png]]
 +
 
 +
::[[File:plus5-img78-3.png]]
  
 
<ol start="2" style="list-style-type: decimal;">
 
<ol start="2" style="list-style-type: decimal;">
<li><p>Using the dd command to burn the linux image to eMMC needs to be done with a TF card, so first you need to burn the linux image to the TF card, and then use the TF card to start the development board to enter the linux system. For the method of burning the Linux image to the TF card, please refer to the instructions in the two sections of '''the method of burning the Linux image to the TF card based on the Windows PC''' and '''the method of burning the Linux image to the TF card based on the Ubuntu PC.'''</p></li>
+
<li><p>Using the dd command to burn the linux image to eMMC needs to be done with 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 [[Orange Pi 5 Plus#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 5 Plus#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 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>
+
<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 [[Orange Pi 5 Plus#The method of uploading files to the Linux system of the development board|'''uploading the linux image file to the development board,''']] please refer to the description in the section of the method of uploading files to the development board Linux system.</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>
  
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
orangepi@orangepi:~$ '''cd /home/orangepi/Desktop'''
 
orangepi@orangepi:~$ '''cd /home/orangepi/Desktop'''
  
Line 976: Line 1,088:
  
 
Orangepi5plus_x.x.x_debian_bullseye_desktop_xfce_linux5.10.110.img
 
Orangepi5plus_x.x.x_debian_bullseye_desktop_xfce_linux5.10.110.img
 +
|}
 +
 +
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''How to enter the command line of the development board linux system?'''
  
'''How to enter the command line of the development board linux system?'''
+
'''1. For the method of using the serial port to log in to the terminal, please refer to the instructions in the section on how to use the debugging serial port.'''
  
# '''For the method of using the serial port to log in to the terminal, please refer to the instructions in the section on how to use the debugging serial port.'''
+
'''2. Use ssh to remotely log in to the Linux system, please refer to the instructions in the section of SSH remote login to the development board.'''
# '''Use ssh to remotely log in to the Linux system, please refer to the instructions in the section of SSH remote login to the development board.'''
 
# '''If a display screen such as HDMI or LCD is connected, you can open a command line terminal on the desktop.'''
 
  
 +
'''3. If a display screen such as HDMI or LCD is connected, you can open a command line terminal on the desktop.'''
 +
</big>
 +
|}
 +
</ol>
 
<!-- -->
 
<!-- -->
 
<ol start="5" style="list-style-type: decimal;">
 
<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>
+
<li>Next, we first use the following command to confirm the device node of eMMC</li>
  
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
orangepi@orangepi:~/Desktop$ '''ls /dev/mmcblk*boot0 | cut -c1-12'''
 
orangepi@orangepi:~/Desktop$ '''ls /dev/mmcblk*boot0 | cut -c1-12'''
  
'''/dev/mmcblk1'''
+
<span style="color:#FF0000">'''/dev/mmcblk1'''</span>
 
+
|}
 +
</ol>
 
<ol start="6" style="list-style-type: decimal;">
 
<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>
+
<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>
  
orangepi@orangepi:~/Desktop$ '''sudo dd bs=1M if=/dev/zero of=/dev/mmcblk1 count=1000 status=progress'''
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
orangepi@orangepi:~/Desktop$ '''sudo dd bs=1M if=/dev/zero of=<span style="color:#FF0000">/dev/mmcblk1</span> count=1000 status=progress'''
  
 
orangepi@orangepi:~/Desktop$ '''sudo sync'''
 
orangepi@orangepi:~/Desktop$ '''sudo sync'''
 
+
|}
 +
</ol>
 
<ol start="7" style="list-style-type: decimal;">
 
<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>
 
<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;">
 
<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>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><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>
</li></ol>
 
  
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
'''sudo dd bs=1M if=Orangepi5plus_x.x.x_debian_bullseye_desktop_xfce_linux5.10.110.img of=/dev/mmcblk1 status=progress'''
 
'''sudo dd bs=1M if=Orangepi5plus_x.x.x_debian_bullseye_desktop_xfce_linux5.10.110.img of=/dev/mmcblk1 status=progress'''
  
 
'''sudo''' '''sync'''
 
'''sudo''' '''sync'''
 +
|}
  
'''Note, if you upload a .7z or .xz linux image compressed file, please remember to decompress it before using the dd command to burn.'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 
+
|-
'''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>'''<span style="color:#FF0000">Note, if you upload a <span style="color:blue">.7z or .xz</span> linux image compressed file, please remember to decompress it before using the dd command to burn.</span>'''
  
 +
'''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;">
 
<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></ol>
 
<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></ol>
  
 
<span id="how-to-burn-linux-image-to-spiflashnvme-ssd"></span>
 
<span id="how-to-burn-linux-image-to-spiflashnvme-ssd"></span>
 +
 
== How to burn Linux image to SPIFlash+NVMe SSD ==
 
== How to burn Linux image to SPIFlash+NVMe SSD ==
  
'''Note that the Linux image mentioned here specifically refers to the image of Linux distributions such as Debian, Ubuntu, OpenWRT or OPi OS Arch downloaded from the''' Orange Pi data download page.
+
{| 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-5-plus.html '''Orange Pi's download page'''].</big>
 +
|}
  
'''Note that all the following operations are performed on a Windows computer.'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''Note that all the following operations are performed on a Windows computer.'''</big>
 +
|}
  
 
<span id="the-method-of-using-the-dd-command-to-burn"></span>
 
<span id="the-method-of-using-the-dd-command-to-burn"></span>
Line 1,028: Line 1,173:
 
# First, you need to prepare an M-Key 2280 specification NVMe SSD solid state drive, and the specification of the PCIe interface in the M.2 slot of the development board is PCIe3.0x4.
 
# First, you need to prepare an M-Key 2280 specification NVMe SSD solid state drive, and the specification of the PCIe interface in the M.2 slot of the development board is PCIe3.0x4.
  
[[File:media/image25.png|306x89px]]
+
::[[File:plus5-img25.png]]
  
 
<ol start="2" style="list-style-type: decimal;">
 
<ol start="2" style="list-style-type: decimal;">
<li>Then insert the NVMe SSD into the M.2 PCIe interface of the development board shown in the figure below, and fix it</li></ol>
+
<li>Then insert the NVMe SSD into the M.2 PCIe interface of the development board shown in the figure below, and fix it</li>
 
 
[[File:media/image90.png|274x110px]]
 
  
 +
[[File:plus5-img90.png]]
 +
</ol>
 
<ol start="3" style="list-style-type: decimal;">
 
<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>
+
<li>The position of the SPI Flash on the development board is shown in the figure below, no other settings are required before starting the programming</li>
 
 
[[File:media/image91.png|416x115px]]
 
  
 +
[[File:plus5-img91.png]]
 +
</ol>
 
<ol start="4" style="list-style-type: decimal;">
 
<ol start="4" style="list-style-type: decimal;">
<li><p>Burning the linux image to SPIFlash+NVMe SSD needs to be done with a TF card, so first you need to burn the linux image to the TF card, and then use the TF card to start the development board to enter the linux system. For the method of burning the Linux image to the TF card, please refer to the instructions in the two sections of '''the method of burning the Linux image to the TF card based on the Windows PC''' and t'''he method of burning the Linux image to the TF card based on the Ubuntu PC'''</p></li>
+
<li><p>Burning the linux image to SPIFlash+NVMe SSD needs to be done with 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 [[Orange Pi 5 Plus#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 5 Plus#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>
 
<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;">
 
<ol style="list-style-type: lower-alpha;">
<li>Run '''nand-sata-install''' first, '''ordinary users remember to add sudo permission.'''</li></ol>
+
<li>Run '''nand-sata-install''' first, '''<span style="color:#FF0000">ordinary users remember to add sudo permission.</span>'''</li>
</li></ol>
 
  
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
orangepi@orangepi:~$ '''sudo nand-sata-install'''
 
orangepi@orangepi:~$ '''sudo nand-sata-install'''
 
+
|}
 +
</ol>
 
<ol start="2" style="list-style-type: lower-alpha;">
 
<ol start="2" style="list-style-type: lower-alpha;">
<li>Then select '''7 Install/Update ther bootloader on SPI Flash'''</li></ol>
+
<li>Then select '''7 Install/Update ther bootloader on SPI Flash'''</li>
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image92.png|355x174px|IMG_256]]
+
[[File:plus5-img92.png]]
  
</div>
+
</div></ol>
 
<ol start="3" style="list-style-type: lower-alpha;">
 
<ol start="3" style="list-style-type: lower-alpha;">
<li>Then select '''&lt;Yes&gt;'''</li></ol>
+
<li>Then select '''&lt;Yes&gt;'''</li>
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image93.png|356x179px|IMG_256]]
+
[[File:plus5-img93.png]]
  
</div>
+
</div></ol>
 
<ol start="4" style="list-style-type: lower-alpha;">
 
<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>
+
<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>
  
[[File:media/image94.png|406x199px]]
+
[[File:plus5-img94.png]]
  
'''There is no nand-sata-install script in OPi OS Arch system, please use the following command to mirror u-boot to SPI Flash:'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''There is no nand-sata-install script in OPi OS Arch system, please use the following command to mirror u-boot to SPI Flash:'''</big>
  
 
[orangepi@orangepi ~]$ '''sudo dd if=/boot/rkspi_loader.img of=/dev/mtdblock0'''
 
[orangepi@orangepi ~]$ '''sudo dd if=/boot/rkspi_loader.img of=/dev/mtdblock0'''
 
+
|}
 +
</ol>
 +
</li></ol>
 
<ol start="6" style="list-style-type: decimal;">
 
<ol start="6" style="list-style-type: decimal;">
<li>Then upload the linux image file (Debian, Ubuntu or OpenWRT image downloaded from the official website) to the TF card. For the method of '''uploading the linux image file to the development board,''' please refer to the description in the section of the method of uploading files to the development board Linux system.</li></ol>
+
<li>Then upload the linux image file (Debian, Ubuntu or OpenWRT image downloaded from the official website) to the TF card. For the method of [[Orange Pi 5 Plus#The method of uploading files to the Linux system of the development board|'''uploading the linux image file to the development board,''']] please refer to the description in the section of the method of uploading files to the development board Linux system.</li>
  
'''Note, if you download the OpenWRT image, you will see the following two types of images in the download link of the OpenWRT image, please download the image file in the &quot;TF card, eMMC and NVME SSD boot image&quot; folder.'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''Note, if you download the OpenWRT image, you will see the following two types of images in the download link of the OpenWRT image, please download the image file in the &quot;TF card, eMMC and NVME SSD boot image&quot; folder.'''</big>
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image73.png|284x90px|e6986fc9c8fc078e8cb6a9c39b76fb8]]
+
[[File:plus5-img73.png|center]]
  
 
</div>
 
</div>
 +
|}
 +
</ol>
 
<ol start="7" style="list-style-type: decimal;">
 
<ol start="7" style="list-style-type: decimal;">
<li>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.</li></ol>
+
<li>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.</li>
  
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
orangepi@orangepi:~$ '''cd /home/orangepi/Desktop'''
 
orangepi@orangepi:~$ '''cd /home/orangepi/Desktop'''
  
Line 1,092: Line 1,253:
  
 
orangepi5plus_x.x.x_debian_bullseye_desktop_xfce_linux5.10.110.img
 
orangepi5plus_x.x.x_debian_bullseye_desktop_xfce_linux5.10.110.img
 +
|}
  
'''How to enter the command line of the development board linux system?'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"  
 
+
|-
<ol start="4" style="list-style-type: decimal;">
+
|
<li><p>'''For the method of using the serial port to log in to the terminal, please refer to the instructions in the section on how to use the debugging serial port.'''</p></li>
+
<big>'''How to enter the command line of the development board linux system?'''
<li><p>'''Use ssh to remotely log in to the Linux system, please refer to the instructions in the section of SSH remote login to the development board.'''</p></li>
 
<li><p>'''If HDMI, LCD and other display screens are connected, you can open a command line terminal on the desktop.'''</p></li></ol>
 
  
 +
<p>'''1. For the method of using the serial port to log in to the terminal, please refer to the instructions in the section on how to use the debugging serial port.'''</p>
 +
<p>'''2. Use ssh to remotely log in to the Linux system, please refer to the instructions in the section of SSH remote login to the development board.'''</p>
 +
<p>'''3. If HDMI, LCD and other display screens are connected, you can open a command line terminal on the desktop.'''</p></big>
 +
|}
 +
</ol>
 
<!-- -->
 
<!-- -->
 
<ol start="8" style="list-style-type: decimal;">
 
<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>
+
<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>
  
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
orangepi@orangepi:~/Desktop$ '''sudo fdisk -l | grep &quot;nvme0n1&quot;'''
 
orangepi@orangepi:~/Desktop$ '''sudo fdisk -l | grep &quot;nvme0n1&quot;'''
  
 
Disk /dev/nvme0n1: 1.86 TiB, 2048408248320 bytes, 4000797360 sectors
 
Disk /dev/nvme0n1: 1.86 TiB, 2048408248320 bytes, 4000797360 sectors
 +
|}
  
 
Use the lspci command to see an NVMe-related PCI device
 
Use the lspci command to see an NVMe-related PCI device
  
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
orangepi@orangepi:~$ '''lspci'''
 
orangepi@orangepi:~$ '''lspci'''
  
 
0000:00:00.0 PCI bridge: Rockchip Electronics Co., Ltd Device 3588 (rev 01)
 
0000:00:00.0 PCI bridge: Rockchip Electronics Co., Ltd Device 3588 (rev 01)
  
0000:01:00.0 Non-Volatile memory controller: SK hynix BC501 '''NVMe''' Solid State Drive
+
0000:01:00.0 Non-Volatile memory controller: SK hynix BC501 '''<span style="color:#FF0000">NVMe</span>''' Solid State Drive
  
 
.…
 
.…
 
+
|}
 +
</ol>
 
<ol start="9" style="list-style-type: decimal;">
 
<ol start="9" style="list-style-type: decimal;">
<li>Then we can use the dd command to clear the NVMe SSD (optional)</li></ol>
+
<li>Then we can use the dd command to clear the NVMe SSD (optional)</li>
  
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
orangepi@orangepi5plus:~/Desktop$ '''sudo dd bs=1M if=/dev/zero of=/dev/nvme0n1 count=2000 status=progress'''
 
orangepi@orangepi5plus:~/Desktop$ '''sudo dd bs=1M if=/dev/zero of=/dev/nvme0n1 count=2000 status=progress'''
  
 
orangepi@orangepi5plus:~/Desktop$ '''sudo sync'''
 
orangepi@orangepi5plus:~/Desktop$ '''sudo sync'''
 
+
|}
 +
</ol>
 
<ol start="10" style="list-style-type: decimal;">
 
<ol start="10" style="list-style-type: decimal;">
 
<li><p>Then you can use the dd command to burn the linux image of the development board to the NVMe SSD</p>
 
<li><p>Then you can use the dd command to burn the linux image of the development board to the NVMe SSD</p>
 
<ol style="list-style-type: lower-alpha;">
 
<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>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><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>
</li></ol>
 
  
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
'''sudo dd bs=1M if=orangepi5plus_x.x.x_debian_bullseye_desktop_xfce_linux5.10.110.img of=/dev/nvme0n1 status=progress'''
 
'''sudo dd bs=1M if=orangepi5plus_x.x.x_debian_bullseye_desktop_xfce_linux5.10.110.img of=/dev/nvme0n1 status=progress'''
  
 
'''sudo''' '''sync'''
 
'''sudo''' '''sync'''
 +
|}
  
'''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.'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 
+
|-
'''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>'''<span style="color:#FF0000">Note, if you upload a <span style="color:blue">.7z or .xz or .gz</span> linux image compressed file, please remember to decompress it before using the dd command to burn.</span>'''
  
 +
'''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="11" style="list-style-type: decimal;">
 
<ol start="11" style="list-style-type: decimal;">
 
<li>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.</li></ol>
 
<li>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.</li></ol>
  
 
<span id="how-to-use-balenaetcher-software-to-program"></span>
 
<span id="how-to-use-balenaetcher-software-to-program"></span>
 +
 
=== How to use balenaEtcher software to program ===
 
=== How to use balenaEtcher software to program ===
  
'''Please do not use this method for OPi OS Arch system and OpenWRT system.'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''Please do not use this method for OPi OS Arch system and OpenWRT system.'''</big>
 +
|}
  
 
# First, you need to prepare an M-Key 2280 specification NVMe SSD solid state drive, and the specification of the PCIe interface in the M.2 slot of the development board is PCIe3.0x4.
 
# First, you need to prepare an M-Key 2280 specification NVMe SSD solid state drive, and the specification of the PCIe interface in the M.2 slot of the development board is PCIe3.0x4.
  
[[File:media/image25.png|375x108px]]
+
::[[File:plus5-img25.png]]
  
 
<ol start="2" style="list-style-type: decimal;">
 
<ol start="2" style="list-style-type: decimal;">
<li>Then insert the NVMe SSD into the M.2 PCIe interface of the development board shown in the figure below, and fix it</li></ol>
+
<li>Then insert the NVMe SSD into the M.2 PCIe interface of the development board shown in the figure below, and fix it</li>
 
 
[[File:media/image90.png|349x140px]]
 
  
 +
[[File:plus5-img90.png]]
 +
</ol>
 
<ol start="3" style="list-style-type: decimal;">
 
<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>
+
<li>The position of the SPI Flash on the development board is shown in the figure below, no other settings are required before starting the programming</li>
 
 
[[File:media/image91.png|395x109px]]
 
  
 +
[[File:plus5-img91.png]]
 +
</ol>
 
<ol start="4" style="list-style-type: decimal;">
 
<ol start="4" style="list-style-type: decimal;">
<li><p>Burning the linux image to SPIFlash+NVMe SSD needs to be done with a TF card, so first you need to burn the linux image to the TF card, and then use the TF card to start the development board to enter the linux system. For the method of burning the Linux image to the TF card, please refer to the instructions in the two sections of '''the method of burning the Linux image to the TF card based on the Windows PC''' and '''the method of burning the Linux image to the TF card based on the Ubuntu PC.'''</p></li>
+
<li><p>Burning the linux image to SPIFlash+NVMe SSD needs to be done with 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 [[Orange Pi 5 Plus#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 5 Plus#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 booting into the linux system in the TF card, please confirm that the NVMe SSD has been recognized by the linux system of the development board. If the NVMe SSD is recognized normally, use the '''sudo fdisk -l'''command to see nvme-related information</p></li></ol>
+
<li><p>After booting into the linux system in the TF card, please confirm that the NVMe SSD has been recognized by the linux system of the development board. If the NVMe SSD is recognized normally, use the '''sudo fdisk -l''' command to see nvme-related information</p></li>
  
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
orangepi@orangepi:~/Desktop$ '''sudo fdisk -l | grep &quot;nvme0n1&quot;'''
 
orangepi@orangepi:~/Desktop$ '''sudo fdisk -l | grep &quot;nvme0n1&quot;'''
  
 
Disk /dev/nvme0n1: 1.86 TiB, 2048408248320 bytes, 4000797360 sectors
 
Disk /dev/nvme0n1: 1.86 TiB, 2048408248320 bytes, 4000797360 sectors
 +
|}
  
 
Use the lspci command to see an NVMe-related PCI device
 
Use the lspci command to see an NVMe-related PCI device
  
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
orangepi@orangepi:~$ '''lspci'''
 
orangepi@orangepi:~$ '''lspci'''
  
Line 1,179: Line 1,376:
  
 
.…
 
.…
 
+
|}
 +
</ol>
 
<ol start="6" style="list-style-type: decimal;">
 
<ol start="6" style="list-style-type: decimal;">
<li>The balenaEtcher has been pre-installed in the linux image, and the opening method is as follows:</li></ol>
+
<li>The balenaEtcher has been pre-installed in the linux image, and the opening method is as follows:</li>
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image95.png|506x249px|IMG_256]]
+
[[File:plus5-img95.png]]
  
 
</div>
 
</div>
'''If it is not pre-installed, for how to download and install the arm64 version of balenaEtcher, please refer to the instructions in the section on h'''ow to download and install the arm64 version of balenaEtcher.
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 
+
|-
 +
|
 +
<big>'''If it is not pre-installed, for how to download and install the arm64 version of balenaEtcher, please refer to the instructions in the section on '''[[Orange Pi 5 Plus#How to download and install arm64 version balenaEtcher|'''how to download and install the arm64 version of balenaEtcher''']].</big>
 +
|}
 +
</ol>
 
<ol start="7" style="list-style-type: decimal;">
 
<ol start="7" style="list-style-type: decimal;">
<li>The interface after opening balenaEtcher is as follows:</li></ol>
+
<li>The interface after opening balenaEtcher is as follows:</li>
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image96.png|406x207px|IMG_256]]
+
[[File:plus5-img96.png]]
  
</div>
+
</div></ol>
 
<ol start="8" style="list-style-type: decimal;">
 
<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>
 
<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;">
 
<ol style="list-style-type: lower-alpha;">
<li>First click'''Flash from file'''</li></ol>
+
<li>First click '''Flash from file'''</li>
</li></ol>
 
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image97.png|406x205px|IMG_256]]
+
[[File:plus5-img97.png]]
  
</div>
+
</div></ol>
 
<ol start="2" style="list-style-type: lower-alpha;">
 
<ol start="2" style="list-style-type: lower-alpha;">
<li>Then enter the '''/usr/lib/linux-u-boot-legacy-orangepi5plus_1.x.x_arm64''' directory, select '''rkspi_loader.img''', and click '''Open'''to open</li></ol>
+
<li>Then enter the '''/usr/lib/linux-u-boot-legacy-orangepi5plus_1.x.x_arm64''' directory, select '''rkspi_loader.img''', and click '''Open''' to open</li>
 
 
[[File:media/image98.png|575x162px]]
 
  
 +
[[File:plus5-img98.png]]
 +
</ol>
 
<ol start="3" style="list-style-type: lower-alpha;">
 
<ol start="3" style="list-style-type: lower-alpha;">
<li>The interface after opening '''rkspi_loader.img''' is as follows:</li></ol>
+
<li>The interface after opening '''rkspi_loader.img''' is as follows:</li>
 
 
[[File:media/image99.png|379x181px]]
 
  
 +
[[File:plus5-img99.png]]
 +
</ol>
 
<ol start="4" style="list-style-type: lower-alpha;">
 
<ol start="4" style="list-style-type: lower-alpha;">
<li>Then click '''Select target'''</li></ol>
+
<li>Then click '''Select target'''</li>
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image100.png|379x171px|IMG_256]]
+
[[File:plus5-img100.png]]
  
</div>
+
</div></ol>
 
<ol start="5" style="list-style-type: lower-alpha;">
 
<ol start="5" style="list-style-type: lower-alpha;">
<li>Then click '''Show 2 hidden''' to open more options for storage devices</li></ol>
+
<li>Then click '''Show 2 hidden''' to open more options for storage devices</li>
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image101.png|385x155px|IMG_256]]
+
[[File:plus5-img101.png]]
  
</div>
+
</div></ol>
 
<ol start="6" style="list-style-type: lower-alpha;">
 
<ol start="6" style="list-style-type: lower-alpha;">
<li>Then select the device name of SPI Flash '''/dev/mtdblock0''', and click '''Select'''</li></ol>
+
<li>Then select the device name of SPI Flash '''/dev/mtdblock0''', and click '''Select'''</li>
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image102.png|389x264px|IMG_256]]
+
[[File:plus5-img102.png]]
  
</div>
+
</div></ol>
 
<ol start="7" style="list-style-type: lower-alpha;">
 
<ol start="7" style="list-style-type: lower-alpha;">
<li>Then click'''Flash'''</li></ol>
+
<li>Then click '''Flash'''</li>
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image103.png|394x268px|IMG_256]]
+
[[File:plus5-img103.png]]
  
</div>
+
</div></ol>
 
<ol start="8" style="list-style-type: lower-alpha;">
 
<ol start="8" style="list-style-type: lower-alpha;">
<li>Then click'''Yes, I’m sure'''</li></ol>
+
<li>Then click '''Yes, I’m sure'''</li>
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image104.png|396x269px|IMG_256]]
+
[[File:plus5-img104.png]]
  
</div>
+
</div></ol>
 
<ol style="list-style-type: lower-roman;">
 
<ol style="list-style-type: lower-roman;">
<li>Then enter the password orangepi of the development board linux system, and it will start burning the u-boot image into the SPI Flash</li></ol>
+
<li>Then enter the password orangepi of the development board linux system, and it will start burning the u-boot image into the SPI Flash</li>
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image105.png|393x269px|IMG_256]]
+
[[File:plus5-img105.png]]
  
</div>
+
</div></ol>
 
<ol start="10" style="list-style-type: lower-alpha;">
 
<ol start="10" style="list-style-type: lower-alpha;">
<li>The display of the burning process is as follows:</li></ol>
+
<li>The display of the burning process is as follows:</li>
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image106.png|397x272px|IMG_256]]
+
[[File:plus5-img106.png]]
  
</div>
+
</div></ol>
 
<ol start="11" style="list-style-type: lower-alpha;">
 
<ol start="11" style="list-style-type: lower-alpha;">
<li>After the burning is completed, the display is as follows:</li></ol>
+
<li>After the burning is completed, the display is as follows:</li>
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image107.png|395x225px|IMG_256]]
+
[[File:plus5-img107.png]]
  
</div>
+
</div></ol>
 +
</li></ol>
 
<ol start="9" style="list-style-type: decimal;">
 
<ol start="9" style="list-style-type: decimal;">
 
<li><p>The method of burning the linux system in the TF card to the NVMe SSD (this method is equivalent to cloning the system in the TF card to the NVMe SSD)</p>
 
<li><p>The method of burning the linux system in the TF card to the NVMe SSD (this method is equivalent to cloning the system in the TF card to the NVMe SSD)</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li>First click '''Clone drive'''</li></ol>
+
<li>First click '''Clone drive'''</li>
</li></ol>
 
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image108.png|386x204px|IMG_256]]
+
[[File:plus5-img108.png]]
  
</div>
+
</div></ol>
 
<ol start="2" style="list-style-type: lower-alpha;">
 
<ol start="2" style="list-style-type: lower-alpha;">
<li>Then select the device name of the TF card '''/dev/mmcblk1'''</li></ol>
+
<li>Then select the device name of the TF card '''/dev/mmcblk1'''</li>
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image109.png|386x261px|IMG_256]]
+
[[File:plus5-img109.png]]
  
</div>
+
</div></ol>
 
<ol start="3" style="list-style-type: lower-alpha;">
 
<ol start="3" style="list-style-type: lower-alpha;">
<li>The interface after opening the TF card is as follows:</li></ol>
+
<li>The interface after opening the TF card is as follows:</li>
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image110.png|381x191px|IMG_256]]
+
[[File:plus5-img110.png]]
  
</div>
+
</div></ol>
 
<ol start="4" style="list-style-type: lower-alpha;">
 
<ol start="4" style="list-style-type: lower-alpha;">
<li>Then click '''Select target'''</li></ol>
+
<li>Then click '''Select target'''</li>
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image100.png|379x171px|IMG_256]]
+
[[File:plus5-img100.png]]
  
</div>
+
</div></ol>
 
<ol start="5" style="list-style-type: lower-alpha;">
 
<ol start="5" style="list-style-type: lower-alpha;">
<li>Then click '''Show 2 hidden''' Option to open more storage devices</li></ol>
+
<li>Then click '''Show 2 hidden''' Option to open more storage devices</li>
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image101.png|385x155px|IMG_256]]
+
[[File:plus5-img101.png]]
  
</div>
+
</div></ol>
 
<ol start="6" style="list-style-type: lower-alpha;">
 
<ol start="6" style="list-style-type: lower-alpha;">
<li>Then select the device name of the NVMe SSD '''/dev/nvme0n1''', and click '''Select'''</li></ol>
+
<li>Then select the device name of the NVMe SSD '''/dev/nvme0n1''', and click '''Select'''</li>
 
 
[[File:media/image111.png|386x264px]]
 
  
 +
[[File:plus5-img111.png]]
 +
</ol>
 
<ol start="7" style="list-style-type: lower-alpha;">
 
<ol start="7" style="list-style-type: lower-alpha;">
<li>Then click '''Flash'''</li></ol>
+
<li>Then click '''Flash'''</li>
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image112.png|389x264px|IMG_256]]
+
[[File:plus5-img112.png]]
  
</div>
+
</div></ol>
 
<ol start="8" style="list-style-type: lower-alpha;">
 
<ol start="8" style="list-style-type: lower-alpha;">
<li>Then click '''Yes, I’m sure'''</li></ol>
+
<li>Then click '''Yes, I’m sure'''</li>
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image113.png|392x268px|IMG_256]]
+
[[File:plus5-img113.png]]
  
</div>
+
</div></ol>
 
<ol style="list-style-type: lower-roman;">
 
<ol style="list-style-type: lower-roman;">
<li>Then enter the password orangepi of the linux system on the development board, and it will start burning the linux image to the SSD</li></ol>
+
<li>Then enter the password orangepi of the linux system on the development board, and it will start burning the linux image to the SSD</li>
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image114.png|390x267px|IMG_256]]
+
[[File:plus5-img114.png]]
  
</div>
+
</div></ol>
 
<ol start="10" style="list-style-type: lower-alpha;">
 
<ol start="10" style="list-style-type: lower-alpha;">
<li>The display of the burning process is as follows:</li></ol>
+
<li>The display of the burning process is as follows:</li>
  
[[File:media/image115.png|393x212px]]
+
[[File:plus5-img115.png]]
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image116.png|395x205px|IMG_256]]
+
[[File:plus5-img116.png]]
  
</div>
+
</div></ol>
 
<ol start="11" style="list-style-type: lower-alpha;">
 
<ol start="11" style="list-style-type: lower-alpha;">
<li>After the burning is completed, the display is as follows:</li></ol>
+
<li>After the burning is completed, the display is as follows:</li>
 
 
[[File:media/image117.png|398x227px]]
 
  
 +
[[File:plus5-img117.png]]
 +
</ol>
 
<ol start="12" style="list-style-type: lower-alpha;">
 
<ol start="12" style="list-style-type: lower-alpha;">
 
<li><p>Then you need to expand the capacity of the rootfs partition in the NVMe SSD. The steps are as follows:</p>
 
<li><p>Then you need to expand the capacity of the rootfs partition in the NVMe SSD. The steps are as follows:</p>
<ol style="list-style-type: lower-alpha;">
+
<ol style="list-style-type: none;">
<li>open first '''GParted'''</li></ol>
+
<li>a) open first '''GParted''', if the system does not have Gparted pre-installed, please use the apt command to install it</li>
</li></ol>
+
 
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
orangepi@orangepi:~$ '''sudo apt-get install -y gparted'''
 +
|}
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image118.png|590x317px|IMG_256]]
+
[[File:plus5-img118.png]]
  
</div>
+
</div></ol>
<ol start="2" style="list-style-type: lower-alpha;">
+
<ol start="2" style="list-style-type: none;">
<li>Then enter the password orangepi of the linux system, and then click '''Authenticate'''</li></ol>
+
<li>b) Then enter the password orangepi of the linux system, and then click '''Authenticate'''</li>
  
[[File:media/image119.png|356x173px]]
+
[[File:plus5-img119.png]]
 +
</ol>
 +
<ol start="3" style="list-style-type: none;">
 +
<li>c) Then click '''Fix'''</li>
  
<ol start="3" style="list-style-type: lower-alpha;">
+
[[File:plus5-img120.png]]
<li>Then click '''Fix'''</li></ol>
+
</ol>
 
+
<ol start="4" style="list-style-type: none;">
[[File:media/image120.png|375x276px]]
+
<li>d) Then select NVMe SSD</li>
 
 
<ol start="4" style="list-style-type: lower-alpha;">
 
<li>Then select NVMe SSD</li></ol>
 
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image121.png|452x187px|IMG_256]]
+
[[File:plus5-img121.png]]
  
</div>
+
</div></ol>
<ol start="5" style="list-style-type: lower-alpha;">
+
<ol start="5" style="list-style-type: none;">
<li>The display interface after selecting NVMe SSD is as follows:</li></ol>
+
<li>e) The display interface after selecting NVMe SSD is as follows:</li>
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image122.png|451x187px|IMG_256]]
+
[[File:plus5-img122.png]]
  
</div>
+
</div></ol>
<ol start="6" style="list-style-type: lower-alpha;">
+
<ol start="6" style="list-style-type: none;">
<li>Then select the '''/dev/nvme0n1p2''' partition, then right-click, and then select '''Resize/Move'''</li></ol>
+
<li>f) Then select the '''/dev/nvme0n1p2''' partition, then right-click, and then select '''Resize/Move'''</li>
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image123.png|448x345px|IMG_256]]
+
[[File:plus5-img123.png]]
  
</div>
+
</div></ol>
<ol start="7" style="list-style-type: lower-alpha;">
+
<ol start="7" style="list-style-type: none;">
<li>Then drag the capacity to the maximum at the position shown in the figure below</li></ol>
+
<li>g) Then drag the capacity to the maximum at the position shown in the figure below</li>
  
[[File:media/image124.png|339x210px]]
+
[[File:plus5-img124.png]]
 +
</ol>
 +
<ol start="8" style="list-style-type: none;">
 +
<li>h) and click '''Resize/Move'''</li>
  
<ol start="8" style="list-style-type: lower-alpha;">
+
[[File:plus5-img125.png]]
<li>and click '''Resize/Move'''</li></ol>
+
</ol>
 +
<ol start="9" style="list-style-type: none;">
 +
<li>i) Then click the green one in the picture below '''<span style="color:green">√</span>'''</li>
  
[[File:media/image125.png|339x212px]]
+
[[File:plus5-img126.png]]
 +
</ol>
 +
<ol start="10" style="list-style-type: none;">
 +
<li>j) Click again '''Apply'''</li>
  
<ol style="list-style-type: lower-roman;">
+
[[File:plus5-img127.png]]
<li>Then click the green one in the picture below''''''</li></ol>
+
</ol>
 +
<ol start="11" style="list-style-type: none;">
 +
<li>k) Then click '''Close''' to close</li>
  
[[File:media/image126.png|425x166px]]
+
[[File:plus5-img128.png]]
 
+
</ol>
<ol start="10" style="list-style-type: lower-alpha;">
+
</li></ol>
<li>Click again '''Apply'''</li></ol>
+
<ol start="13" style="list-style-type: lower-alpha;">
 
 
[[File:media/image127.png|378x276px]]
 
 
 
<ol start="11" style="list-style-type: lower-alpha;">
 
<li>Then click '''Close''' to close</li></ol>
 
 
 
[[File:media/image128.png|383x234px]]
 
 
 
<ol start="13" style="list-style-type: lower-alpha;">
 
 
<li>At this point, you can use the '''sudo poweroff''' command to shut down. Then please pull out the TF card, and then short press the power button to turn on, then the linux system in SPIFlash+NVMe SSD will be started.</li></ol>
 
<li>At this point, you can use the '''sudo poweroff''' command to shut down. Then please pull out the TF card, and then short press the power button to turn on, then the linux system in SPIFlash+NVMe SSD will be started.</li></ol>
 
+
</li></ol>
 
<!-- -->
 
<!-- -->
 
<ol start="10" style="list-style-type: decimal;">
 
<ol start="10" style="list-style-type: decimal;">
<li><p>Step '''9)''' is to clone the system in the TF card to the NMVe SSD. We can also directly burn the linux image file to the NVMe SSD. Here are the steps:</p>
+
<li><p>Step '''9''' is to clone the system in the TF card to the NMVe SSD. We can also directly burn the linux image file to the NVMe SSD. Here are the steps:</p>
 
<ol style="list-style-type: lower-alpha;">
 
<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>Upload the linux image file to the linux system of the development board</p></li>
<li><p>Then use balenaEtcher to burn</p></li></ol>
+
<li><p>Then use balenaEtcher to burn</p></li>
</li></ol>
 
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image129.png|575x361px|图片1]]
+
[[File:plus5-img129.png]]
  
</div>
+
</div></ol>
'''c. After using this method to burn the image, there is no need to manually expand the capacity, and it will automatically expand the capacity at the first startup.'''
+
:'''c. After using this method to burn the image, there is no need to manually expand the capacity, and it will automatically expand the capacity at the first startup.'''
 +
</li></ol>
 +
<span id="using-rkdevtool-to-burn"></span>
  
<span id="using-rkdevtool-to-burn"></span>
 
 
=== Using RKDevTool to burn ===
 
=== Using RKDevTool to burn ===
  
 
# First, you need to prepare an M-Key 2280 specification NVMe SSD solid state drive, and the specification of the PCIe interface in the M.2 slot of the development board is PCIe3.0x4.
 
# First, you need to prepare an M-Key 2280 specification NVMe SSD solid state drive, and the specification of the PCIe interface in the M.2 slot of the development board is PCIe3.0x4.
  
[[File:media/image25.png|261x75px]]
+
::[[File:plus5-img25.png]]
  
 
<ol start="2" style="list-style-type: decimal;">
 
<ol start="2" style="list-style-type: decimal;">
<li>Then insert the NVMe SSD into the M.2 PCIe interface of the development board shown in the figure below, and fix it</li></ol>
+
<li>Then insert the NVMe SSD into the M.2 PCIe interface of the development board shown in the figure below, and fix it</li>
 
 
[[File:media/image90.png|259x104px]]
 
  
 +
[[File:plus5-img90.png]]
 +
</ol>
 
<ol start="3" style="list-style-type: decimal;">
 
<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>
+
<li>The position of the SPI Flash on the development board is shown in the figure below, no other settings are required before starting the programming</li>
 
 
[[File:media/image91.png|340x94px]]
 
  
 +
[[File:plus5-img91.png]]
 +
</ol>
 
<ol start="4" style="list-style-type: decimal;">
 
<ol start="4" style="list-style-type: decimal;">
<li>Then you need to prepare a data cable with good quality Type-C interface</li></ol>
+
<li>Then you need to prepare a data cable with good quality Type-C interface</li>
 
 
[[File:media/image21.png|123x124px]]
 
  
 +
[[File:plus5-img21.png]]
 +
</ol>
 
<ol start="5" style="list-style-type: decimal;">
 
<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>
+
<li><p>Then download the Rockchip driver '''DriverAssitant_v5.12.zip''' and MiniLoader and the burning tool '''RKDevTool_Release_v3.15.zip''' from the [http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html '''Orange Pi's download page''']</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li>On the download page of Orange Pi, first select the official tool, and then enter the following folder</li></ol>
+
<li>On the download page of Orange Pi, first select the official tool, and then enter the following folder</li>
</li></ol>
 
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image79.png|371x90px|c40e71d1a66216e12b3b4297138f749]]
+
[[File:plus5-img79.png]]
  
</div>
+
</div></ol>
 
<ol start="2" style="list-style-type: lower-alpha;">
 
<ol start="2" style="list-style-type: lower-alpha;">
<li>Then download all the files below</li></ol>
+
<li>Then download all the files below</li>
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image80.png|340x140px|2feec28318eaa60c0514000158b889a]]
+
[[File:plus5-img80.png]]
 
 
</div>
 
'''Note that the &quot;MiniLoader-things needed to burn the Linux image&quot; folder is hereinafter referred to as the MiniLoader folder.'''
 
  
 +
</div></ol>
 +
{| 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>
 +
|}
 +
</li></ol>
 
<ol start="6" style="list-style-type: decimal;">
 
<ol start="6" style="list-style-type: decimal;">
<li>Then download the Linux operating system image file compression package that you want to burn from the Orange Pi data download page, and then use the decompression software to decompress it. Among the decompressed files, the file ending with &quot;'''.img'''&quot; is the image file of the operating system , the size is generally more than 2GB</li></ol>
+
<li>Then download the Linux operating system image file compression package that you want to burn from the Orange Pi's download page, and then use the decompression software to decompress it. Among the decompressed files, the file ending with &quot;'''.img'''&quot; is the image file of the operating system , the size is generally more than 2GB</li>
  
'''Note, if you download the OpenWRT image, you will see the following two types of images in the download link of the OpenWRT image, please download the image file in the &quot;TF card, eMMC and NVME SSD boot image&quot; folder.'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''Note, if you download the OpenWRT image, you will see the following two types of images in the download link of the OpenWRT image, please download the image file in the &quot;TF card, eMMC and NVME SSD boot image&quot; folder.'''</big>
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image73.png|340x108px|e6986fc9c8fc078e8cb6a9c39b76fb8]]
+
[[File:plus5-img73.png|center]]
  
 
</div>
 
</div>
 +
|}
 +
</ol>
 
<ol start="7" style="list-style-type: decimal;">
 
<ol start="7" style="list-style-type: decimal;">
<li>Then use decompression software to decompress '''DriverAssitant_v5.12.zip''', then find '''DriverInstall.exe''' executable file in the decompressed folder and open it</li></ol>
+
<li>Then use decompression software to decompress '''DriverAssitant_v5.12.zip''', then find '''DriverInstall.exe''' executable file in the decompressed folder and open it</li>
 
 
[[File:media/image47.png|429x126px]]
 
  
 +
[[File:plus5-img47.png]]
 +
</ol>
 
<ol start="8" style="list-style-type: decimal;">
 
<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>
 
<li><p>After opening '''DriverInstall.exe''', the steps to install the Rockchip driver are as follows</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li>Click the &quot;'''Driver Installation'''&quot; button</li></ol>
+
<li>Click the &quot;'''Driver Installation'''&quot; button</li>
</li></ol>
 
 
 
[[File:media/image48.png|300x157px]]
 
  
 +
[[File:plus5-img48.png]]
 +
</ol>
 
<ol start="2" style="list-style-type: lower-alpha;">
 
<ol start="2" style="list-style-type: lower-alpha;">
<li>After waiting for a period of time, a pop-up window will prompt &quot;'''driver installed successfully'''&quot;, and then click the &quot;'''OK'''&quot; button.</li></ol>
+
<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:media/image49.png|324x168px]]
 
  
 +
[[File:plus5-img49.png]]
 +
</ol>
 +
</li></ol>
 
<ol start="9" style="list-style-type: decimal;">
 
<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></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:media/image50.png|455x135px]]
 
  
 +
[[File:plus5-img50.png]]
 +
</ol>
 
<ol start="10" style="list-style-type: decimal;">
 
<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 Type-C cable at this time, the lower left corner will prompt &quot;'''No device found'''&quot;</li></ol>
+
<li>After opening the '''RKDevTool''' burning tool, because the computer is not connected to the development board through the Type-C cable at this time, the lower left corner will prompt &quot;'''No device found'''&quot;</li>
 
 
[[File:media/image51.png|436x205px]]
 
  
 +
[[File:plus5-img51.png]]
 +
</ol>
 
<ol start="11" style="list-style-type: decimal;">
 
<ol start="11" style="list-style-type: decimal;">
 
<li><p>Then start burning the Linux image to the SSD</p>
 
<li><p>Then start burning the Linux image to the SSD</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li>First, connect the development board to the Windows computer through the Type-C data cable. The position of the Type-C interface on the development board is shown in the figure below</li></ol>
+
<li>First, connect the development board to the Windows computer through the Type-C data cable. The position of the Type-C interface on the development board is shown in the figure below</li>
</li></ol>
 
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image52.jpeg|446x126px|C:\Users\orangepi\Desktop\用户手册插图\Pi5 Plus\未标题-2.jpg未标题-2]]
+
[[File:plus5-img52.png]]
  
</div>
+
</div></ol>
 
<ol start="2" style="list-style-type: lower-alpha;">
 
<ol start="2" style="list-style-type: lower-alpha;">
 
<li><p>Make sure the development board is not connected to the power supply, and no TF card or eMMC module is inserted</p></li>
 
<li><p>Make sure the development board is not connected to the power supply, and no TF card or eMMC module is inserted</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>
+
<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:media/image53.png|424x103px]]
 
  
 +
[[File:plus5-img53.png]]
 +
</ol>
 
<ol start="4" style="list-style-type: lower-alpha;">
 
<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. The location of the Type-C power interface is as follows:</li></ol>
+
<li>Then connect the power supply of the Type-C interface to the development board, and power on, and then release the MaskROM button. The location of the Type-C power interface is as follows:</li>
 
 
[[File:media/image54.png|439x134px]]
 
  
 +
[[File:plus5-img54.png]]
 +
</ol>
 
<ol start="5" style="list-style-type: lower-alpha;">
 
<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>
+
<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:media/image55.png|457x215px]]
 
  
 +
[[File:plus5-img55.png]]
 +
</ol>
 
<ol start="6" style="list-style-type: lower-alpha;">
 
<ol start="6" style="list-style-type: lower-alpha;">
<li>Then place the mouse cursor in the area below</li></ol>
+
<li>Then place the mouse cursor in the area below</li>
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image130.jpeg|452x212px|C:\Users\orangepi\Desktop\用户手册插图\Pi5 Plus\未标题-4.jpg未标题-4]]
+
[[File:plus5-img130.png]]
  
</div>
+
</div></ol>
 
<ol start="7" style="list-style-type: lower-alpha;">
 
<ol start="7" style="list-style-type: lower-alpha;">
<li>Then place the mouse cursor in the area below</li></ol>
+
<li>Then click the right mouse button and the selection interface shown in the figure below will pop up</li>
 
 
[[File:media/image57.png|453x213px]]
 
  
 +
[[File:plus5-img57.png]]
 +
</ol>
 
<ol start="8" style="list-style-type: lower-alpha;">
 
<ol start="8" style="list-style-type: lower-alpha;">
<li>Then select the '''Import configuration''' option</li></ol>
+
<li>Then select the '''Import configuration''' option</li>
 
 
[[File:media/image58.png|458x215px]]
 
  
 +
[[File:plus5-img58.png]]
 +
</ol>
 
<ol style="list-style-type: lower-roman;">
 
<ol style="list-style-type: lower-roman;">
<li>Then enter the MiniLoader folder downloaded earlier, then select the '''rk3588_linux_pcie.cfg''' configuration file, and click '''Open'''</li></ol>
+
<li>Then enter the MiniLoader folder downloaded earlier, then select the '''rk3588_linux_pcie.cfg''' configuration file, and click '''Open'''</li>
 
 
[[File:media/image131.png|462x217px]]
 
  
 +
[[File:plus5-img131.png]]
 +
</ol>
 
<ol start="10" style="list-style-type: lower-alpha;">
 
<ol start="10" style="list-style-type: lower-alpha;">
<li>Then click '''OK'''</li></ol>
+
<li>Then click '''OK'''</li>
 
 
[[File:media/image132.png|468x220px]]
 
  
 +
[[File:plus5-img132.png]]
 +
</ol>
 
<ol start="11" style="list-style-type: lower-alpha;">
 
<ol start="11" style="list-style-type: lower-alpha;">
<li>Then click the location shown in the figure below</li></ol>
+
<li>Then click the location shown in the figure below</li>
 
 
[[File:media/image133.png|480x225px]]
 
  
 +
[[File:plus5-img133.png]]
 +
</ol>
 
<ol start="12" style="list-style-type: lower-alpha;">
 
<ol start="12" style="list-style-type: lower-alpha;">
<li>Then select '''MiniLoaderAll.bin''' in the '''MiniLoader''' folder downloaded earlier, and then click to '''open'''</li></ol>
+
<li>Then select '''MiniLoaderAll.bin''' in the '''MiniLoader''' folder downloaded earlier, and then click to '''open'''</li>
 
 
[[File:media/image62.png|484x227px]]
 
  
 +
[[File:plus5-img62.png]]
 +
</ol>
 
<ol start="13" style="list-style-type: lower-alpha;">
 
<ol start="13" style="list-style-type: lower-alpha;">
<li>Then click the position shown in the figure below</li></ol>
+
<li>Then click the position shown in the figure below</li>
 
 
[[File:media/image134.png|486x228px]]
 
  
 +
[[File:plus5-img134.png]]
 +
</ol>
 
<ol start="14" style="list-style-type: lower-alpha;">
 
<ol start="14" style="list-style-type: lower-alpha;">
<li>Then enter the '''MiniLoader''' folder downloaded earlier, select '''rkspi_loader.img,''' and click '''Open'''</li></ol>
+
<li>Then enter the '''MiniLoader''' folder downloaded earlier, select '''rkspi_loader.img,''' and click '''Open'''</li>
 
 
[[File:media/image135.png|501x235px]]
 
  
 +
[[File:plus5-img135.png]]
 +
</ol>
 
<ol start="15" style="list-style-type: lower-alpha;">
 
<ol start="15" style="list-style-type: lower-alpha;">
<li>Then click the location shown in the figure below</li></ol>
+
<li>Then click the location shown in the figure below</li>
 
 
[[File:media/image136.png|501x235px]]
 
  
 +
[[File:plus5-img136.png]]
 +
</ol>
 
<ol start="16" style="list-style-type: lower-alpha;">
 
<ol start="16" style="list-style-type: lower-alpha;">
<li>Then select the path of the linux image you want to burn, and click '''Open'''</li></ol>
+
<li>Then select the path of the linux image you want to burn, and click '''Open'''</li>
  
'''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.'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 
+
|-
[[File:media/image64.png|499x234px]]
+
|
 +
<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:plus5-img64.png]]
 +
</ol>
 
<ol start="17" style="list-style-type: lower-alpha;">
 
<ol start="17" style="list-style-type: lower-alpha;">
<li>Then please check the option to '''force write by address'''</li></ol>
+
<li>Then please check the option to '''force write by address'''</li>
 
 
[[File:media/image137.png|487x229px]]
 
  
 +
[[File:plus5-img137.png]]
 +
</ol>
 
<ol start="18" style="list-style-type: lower-alpha;">
 
<ol start="18" style="list-style-type: lower-alpha;">
<li>Click the Execute button again to start burning the u-boot+linux image to SPIFlash+SSD</li></ol>
+
<li>Click the Execute button again to start burning the u-boot+linux image to SPIFlash+SSD</li>
 
 
[[File:media/image138.png|489x230px]]
 
  
 +
[[File:plus5-img138.png]]
 +
</ol>
 
<ol start="19" style="list-style-type: lower-alpha;">
 
<ol start="19" style="list-style-type: lower-alpha;">
<li>The display log after burning the image is shown in the figure below</li></ol>
+
<li>The display log after burning the image is shown in the figure below</li>
  
[[File:media/image139.png|490x230px]]
+
[[File:plus5-img139.png]]
  
 +
{| 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 instructions in the section of using RKDevTool to clear SPIFlash.'''</big>
 +
|}
 +
</ol>
 
<ol start="20" style="list-style-type: lower-alpha;">
 
<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>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="how-to-burn-openwrt-image-to-spi-flash"></span>
  
<span id="how-to-burn-openwrt-image-to-spi-flash"></span>
 
 
== How to burn OpenWRT image to SPI FLASH ==
 
== How to burn OpenWRT image to SPI FLASH ==
  
'''The method introduced in this section is to burn the entire OpenWRT image to spi flash, no nvme ssd is required. In other words, u-boot, kernel and rootfs are all stored in spi flash.'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''The method introduced in this section is to burn the entire OpenWRT image to spi flash, no nvme ssd is required. In other words, u-boot, kernel and rootfs are all stored in spi flash.'''
  
'''Since the spi flash on the development board is only 16MB, this system basically cannot install much software, and currently only some basic functions can be realized.'''
+
'''Since the spi flash on the development board is only 16MB, this system basically cannot install much software, and currently only some basic functions can be realized.'''</big>
 +
|}
  
 
<span id="the-method-of-using-the-dd-command-to-burn-1"></span>
 
<span id="the-method-of-using-the-dd-command-to-burn-1"></span>
 
=== The method of using the dd command to burn ===
 
=== The method of using the dd command to burn ===
  
# Burning the OpenWRT image to SPIFlash needs to be completed with the help of a TF card, so first you need to burn the OpenWRT image that supports TF card startup to the TF card, and then use the TF card to start the development board to enter the OpenWRT system. For the method of burning the OpenWRT image to the TF card, please refer to the instructions in the two sections of '''the method of burning the Linux image to the TF card based on the Windows PC''' and '''the method of burning the Linux image to the TF card based on the Ubuntu PC.'''
+
# Burning the OpenWRT image to SPIFlash needs to be completed with the help of a TF card, so first you need to burn the OpenWRT image that supports TF card startup to the TF card, and then use the TF card to start the development board to enter the OpenWRT system. For the method of burning the OpenWRT image to the TF card, please refer to the instructions in the two sections of [[Orange Pi 5 Plus#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 5 Plus#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''']].
# Then download the '''OpenWRT''' image that can boot from '''SPIFlash''' from '''Orange Pi's download page.''' After opening the download link, you can see the following two types of '''OpenWRT images''', please select the image in the SPIFlash boot image folder to download
+
# Then download the '''OpenWRT''' image that can boot from '''SPIFlash''' from [http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html '''Orange Pi's download page''']. After opening the download link, you can see the following two types of '''OpenWRT images''', please select the image in the SPIFlash boot image folder to download
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image140.png|329x112px|25566f72fb1f4567c78af07e73b5134]]
+
::[[File:plus5-img140.png]]
  
 
</div>
 
</div>
 
<ol start="3" style="list-style-type: decimal;">
 
<ol start="3" style="list-style-type: decimal;">
 
<li><p>Then upload the image downloaded from the official website to the TF card.</p></li>
 
<li><p>Then upload the image downloaded from the official website to the TF card.</p></li>
<li><p>Then execute the following command to burn the OpenWRT image into SPIFlash. Note that after if=, you need to specify the actual path where the image is stored</p></li></ol>
+
<li><p>Then execute the following command to burn the OpenWRT image into SPIFlash. Note that after if=, you need to specify the actual path where the image is stored</p></li>
  
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
root@OpenWrt:~# '''dd if=openwrt-rockchip-armv8-xunlong_orangepi-5-plus-spi-squashfs-sysupgrade.bin of=/dev/mtdblock0'''
 
root@OpenWrt:~# '''dd if=openwrt-rockchip-armv8-xunlong_orangepi-5-plus-spi-squashfs-sysupgrade.bin of=/dev/mtdblock0'''
 
+
|}
 +
</ol>
 
<ol start="5" style="list-style-type: decimal;">
 
<ol start="5" style="list-style-type: decimal;">
 
<li>Then 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 OpenWRT system in SPIFlash will be started.</li></ol>
 
<li>Then 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 OpenWRT system in SPIFlash will be started.</li></ol>
  
 
<span id="using-rkdevtool-to-burn-1"></span>
 
<span id="using-rkdevtool-to-burn-1"></span>
 +
 
=== Using RKDevTool to burn ===
 
=== Using RKDevTool to burn ===
  
 
# 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
 
# 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
  
[[File:media/image91.png|389x107px]]
+
::[[File:plus5-img91.png]]
  
 
<ol start="2" style="list-style-type: decimal;">
 
<ol start="2" style="list-style-type: decimal;">
<li>Then you need to prepare a data cable with good quality Type-C interface</li></ol>
+
<li>Then you need to prepare a data cable with good quality Type-C interface</li>
 
 
[[File:media/image21.png|152x154px]]
 
  
 +
[[File:plus5-img21.png]]
 +
</ol>
 
<ol start="3" style="list-style-type: decimal;">
 
<ol start="3" style="list-style-type: decimal;">
<li><p>Then download the Rockchip driver '''DriverAssitant_v5.12.zip''' and MiniLoader and the burning tool '''RKDevTool_Release_v3.15.zip''' from the Orange Pi data download page</p>
+
<li><p>Then download the Rockchip driver '''DriverAssitant_v5.12.zip''' and MiniLoader and the burning tool '''RKDevTool_Release_v3.15.zip''' from the [http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html '''Orange Pi's download page''']</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li>On the download page of Orange Pi, first select the official tool, and then enter the following folder</li></ol>
+
<li>On the download page of Orange Pi, first select the official tool, and then enter the following folder</li>
</li></ol>
 
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image73.png|340x108px|e6986fc9c8fc078e8cb6a9c39b76fb8]]
+
[[File:plus5-img73.png]]
  
</div>
+
</div></ol>
 
<ol start="2" style="list-style-type: lower-alpha;">
 
<ol start="2" style="list-style-type: lower-alpha;">
<li>Then download all the files below</li></ol>
+
<li>Then download all the files below</li>
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image80.png|401x165px|2feec28318eaa60c0514000158b889a]]
+
[[File:plus5-img80.png]]
  
</div>
+
</div></ol>
'''Note that the''' &quot;MiniLoader-things needed to burn the Linux image&quot; '''folder is hereinafter referred to as the MiniLoader folder.'''
+
{| 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>
 +
|}
  
 +
</li></ol>
 
<ol start="4" style="list-style-type: decimal;">
 
<ol start="4" style="list-style-type: decimal;">
<li>Then download the '''OpenWRT''' image that can be booted from SPIFlash from the download page of Orange Pi. Limited by the capacity of SPIFlash, the image size is less than '''16MB.''' After opening the download link, you can see the following two types of OpenWRT images, please select the image in the '''SPIFlash boot image''' folder</li></ol>
+
<li>Then download the '''OpenWRT''' image that can be booted from SPIFlash from the download page of Orange Pi. Limited by the capacity of SPIFlash, the image size is less than '''16MB.''' After opening the download link, you can see the following two types of OpenWRT images, please select the image in the '''SPIFlash boot image''' folder</li>
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image140.png|329x112px|25566f72fb1f4567c78af07e73b5134]]
+
[[File:plus5-img140.png]]
  
</div>
+
</div></ol>
 
<ol start="5" style="list-style-type: decimal;">
 
<ol start="5" 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></ol>
+
<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:media/image47.png|472x139px]]
 
  
 +
[[File:plus5-img47.png]]
 +
</ol>
 
<ol start="6" style="list-style-type: decimal;">
 
<ol start="6" style="list-style-type: decimal;">
 
<li><p>After opening '''DriverInstall.exe''', the steps to install the Rockchip driver are as follows</p>
 
<li><p>After opening '''DriverInstall.exe''', the steps to install the Rockchip driver are as follows</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li>Click the &quot;'''Driver Installation'''&quot; button</li></ol>
+
<li>Click the &quot;'''Driver Installation'''&quot; button</li>
</li></ol>
 
 
 
[[File:media/image48.png|276x145px]]
 
  
 +
[[File:plus5-img48.png]]
 +
</ol>
 
<ol start="2" style="list-style-type: lower-alpha;">
 
<ol start="2" style="list-style-type: lower-alpha;">
<li>After waiting for a period of time, a pop-up window will prompt &quot;'''driver installed successfully'''&quot;, and then click the &quot;'''OK'''&quot; button.</li></ol>
+
<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:media/image49.png|292x151px]]
 
  
 +
[[File:plus5-img49.png]]
 +
</ol>
 +
</li></ol>
 
<ol start="7" style="list-style-type: decimal;">
 
<ol start="7" style="list-style-type: decimal;">
<li>Then decompress '''RKDevTool_Release_v3.15.zip''', this software does not need to be installed, just find '''RKDevTool''' in the decompressed folder and open it</li></ol>
+
<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:media/image50.png|467x138px]]
 
  
 +
[[File:plus5-img50.png]]
 +
</ol>
 
<ol start="8" style="list-style-type: decimal;">
 
<ol start="8" style="list-style-type: decimal;">
<li>After opening the '''RKDevTool''' burning tool, because the computer has not been connected to the development board through the Type-C cable at this time, the lower left corner will prompt &quot;'''No device found'''&quot;</li></ol>
+
<li>After opening the '''RKDevTool''' burning tool, because the computer has not been connected to the development board through the Type-C cable at this time, the lower left corner will prompt &quot;'''No device found'''&quot;</li>
 
 
[[File:media/image51.png|402x189px]]
 
  
 +
[[File:plus5-img51.png]]
 +
</ol>
 
<ol start="9" style="list-style-type: decimal;">
 
<ol start="9" style="list-style-type: decimal;">
 
<li><p>Then start burning the OpenWRT image into SPI FLASH</p>
 
<li><p>Then start burning the OpenWRT image into SPI FLASH</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li>First, connect the development board to the Windows computer through the Type-C data cable. The position of the Type-C interface on the development board is shown in the figure below</li></ol>
+
<li>First, connect the development board to the Windows computer through the Type-C data cable. The position of the Type-C interface on the development board is shown in the figure below</li>
</li></ol>
 
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image52.jpeg|424x120px|C:\Users\orangepi\Desktop\用户手册插图\Pi5 Plus\未标题-2.jpg未标题-2]]
+
[[File:plus5-img52.png]]
  
</div>
+
</div></ol>
 
<ol start="2" style="list-style-type: lower-alpha;">
 
<ol start="2" style="list-style-type: lower-alpha;">
 
<li><p>Make sure the development board is not connected to the power supply, and the TF card and eMMC module are not inserted</p></li>
 
<li><p>Make sure the development board is not connected to the power supply, and the TF card and eMMC module are not inserted</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>
+
<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:media/image53.png|444x100px]]
 
  
 +
[[File:plus5-img53.png]]
 +
</ol>
 
<ol start="4" style="list-style-type: lower-alpha;">
 
<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>
+
<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:media/image54.png|402x123px]]
 
  
 +
[[File:plus5-img54.png]]
 +
</ol>
 
<ol start="5" style="list-style-type: lower-alpha;">
 
<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>
+
<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:media/image55.png|457x215px]]
 
  
 +
[[File:plus5-img55.png]]
 +
</ol>
 
<ol start="6" style="list-style-type: lower-alpha;">
 
<ol start="6" style="list-style-type: lower-alpha;">
<li>Then place the mouse cursor in the area below</li></ol>
+
<li>Then place the mouse cursor in the area below</li>
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image130.jpeg|452x212px|C:\Users\orangepi\Desktop\用户手册插图\Pi5 Plus\未标题-4.jpg未标题-4]]
+
[[File:plus5-img130.png]]
  
</div>
+
</div></ol>
 
<ol start="7" style="list-style-type: lower-alpha;">
 
<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>
+
<li>Then click the right mouse button and the selection interface shown in the figure below will pop up</li>
 
 
[[File:media/image57.png|453x213px]]
 
  
 +
[[File:plus5-img57.png]]
 +
</ol>
 
<ol start="8" style="list-style-type: lower-alpha;">
 
<ol start="8" style="list-style-type: lower-alpha;">
<li>Then select the '''Import configuration''' option</li></ol>
+
<li>Then select the '''Import configuration''' option</li>
 
 
[[File:media/image58.png|458x215px]]
 
  
 +
[[File:plus5-img58.png]]
 +
</ol>
 
<ol style="list-style-type: lower-roman;">
 
<ol style="list-style-type: lower-roman;">
<li>Then select the '''rk3588_linux_spiflash.cfg''' configuration file in the MiniLoader folder downloaded earlier, and click '''Open'''</li></ol>
+
<li>Then select the '''rk3588_linux_spiflash.cfg''' configuration file in the MiniLoader folder downloaded earlier, and click '''Open'''</li>
 
 
[[File:media/image141.png|465x218px]]
 
  
 +
[[File:plus5-img141.png]]
 +
</ol>
 
<ol start="10" style="list-style-type: lower-alpha;">
 
<ol start="10" style="list-style-type: lower-alpha;">
<li>Then click '''OK'''</li></ol>
+
<li>Then click '''OK'''</li>
 
 
[[File:media/image142.png|466x219px]]
 
  
 +
[[File:plus5-img142.png]]
 +
</ol>
 
<ol start="11" style="list-style-type: lower-alpha;">
 
<ol start="11" style="list-style-type: lower-alpha;">
<li>Then click the location shown in the figure below</li></ol>
+
<li>Then click the location shown in the figure below</li>
 
 
[[File:media/image143.png|467x219px]]
 
  
 +
[[File:plus5-img143.png]]
 +
</ol>
 
<ol start="12" style="list-style-type: lower-alpha;">
 
<ol start="12" style="list-style-type: lower-alpha;">
<li>Then select '''MiniLoaderAll.bin''' in the '''MiniLoader''' folder downloaded earlier, and click '''Open'''</li></ol>
+
<li>Then select '''MiniLoaderAll.bin''' in the '''MiniLoader''' folder downloaded earlier, and click '''Open'''</li>
 
 
[[File:media/image144.png|469x220px]]
 
  
 +
[[File:plus5-img144.png]]
 +
</ol>
 
<ol start="13" style="list-style-type: lower-alpha;">
 
<ol start="13" style="list-style-type: lower-alpha;">
<li>Then click the location shown in the figure below</li></ol>
+
<li>Then click the location shown in the figure below</li>
 
 
[[File:media/image145.png|452x212px]]
 
  
 +
[[File:plus5-img145.png]]
 +
</ol>
 
<ol start="14" style="list-style-type: lower-alpha;">
 
<ol start="14" style="list-style-type: lower-alpha;">
 
<li><p>Then select the path of the OpenWRT image you want to burn, and click '''Open'''</p>
 
<li><p>Then select the path of the OpenWRT image you want to burn, and click '''Open'''</p>
<p>'''Before burning the image, it is recommended to rename the OpenWRT 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.'''</p></li></ol>
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 
+
|-
[[File:media/image64.png|456x214px]]
+
|
 +
<big><p>'''Before burning the image, it is recommended to rename the OpenWRT 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.'''</p></big>
 +
|}
 +
</li>
  
 +
[[File:plus5-img64.png]]
 +
</ol>
 
<ol start="15" style="list-style-type: lower-alpha;">
 
<ol start="15" style="list-style-type: lower-alpha;">
<li>Then please make sure that the option to '''force writing by address''' is ticked</li></ol>
+
<li>Then please make sure that the option to '''force writing by address''' is ticked</li>
 
 
[[File:media/image146.png|463x217px]]
 
  
 +
[[File:plus5-img146.png]]
 +
</ol>
 
<ol start="16" style="list-style-type: lower-alpha;">
 
<ol start="16" style="list-style-type: lower-alpha;">
<li>Click the '''Execute''' button again to start burning the OpenWRT image into SPIFlash</li></ol>
+
<li>Click the '''Execute''' button again to start burning the OpenWRT image into SPIFlash</li>
 
 
[[File:media/image147.png|463x218px]]
 
  
 +
[[File:plus5-img147.png]]
 +
</ol>
 
<ol start="17" style="list-style-type: lower-alpha;">
 
<ol start="17" style="list-style-type: lower-alpha;">
<li>The display log after burning the OpenWRT image is shown in the figure below</li></ol>
+
<li>The display log after burning the OpenWRT image is shown in the figure below</li>
  
[[File:media/image148.png|465x219px]]
+
[[File:plus5-img148.png]]
  
 +
{| 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 instructions in the section of using RKDevTool to clear SPIFlash.'''</big>
 +
|}
 +
</ol>
 
<ol start="18" style="list-style-type: lower-alpha;">
 
<ol start="18" style="list-style-type: lower-alpha;">
 
<li>The OpenWRT image will start automatically after burning, if it does not start normally, please try again with power on.</li></ol>
 
<li>The OpenWRT image will start automatically after burning, if it does not start normally, please try again with power on.</li></ol>
 +
</li></ol>
 +
<span id="how-to-burn-android-image-to-tf-card"></span>
  
<span id="how-to-burn-android-image-to-tf-card"></span>
 
 
== How to burn Android image to TF card ==
 
== How to burn Android image to TF card ==
  
Line 1,840: Line 2,089:
 
<li><p>First prepare a TF card with a capacity of 16GB or greater. 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>First prepare a TF card with a capacity of 16GB or greater. 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 use the card reader to insert the TF card into the computer</p></li>
<li><p>Then download the SDDiskTool programming tool from '''the Orange Pi data download page''', '''please make sure that the version of the SDDiskTool tool is the latest v1.72'''</p></li>
+
<li><p>Then download the SDDiskTool programming tool from the [http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html '''Orange Pi's 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 Android12 image from the Orange Pi download page</p>
 
<li><p>Then download the Android12 image from the Orange Pi download page</p>
 
<ol style="list-style-type: lower-alpha;">
 
<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 boot image''' folder to download</li></ol>
+
<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 boot image''' folder to download</li>
</li></ol>
 
 
 
[[File:media/image149.png|240x98px]]
 
  
 +
[[File:plus5-img149.png]]
 +
</ol>
 
<ol start="2" style="list-style-type: lower-alpha;">
 
<ol start="2" style="list-style-type: lower-alpha;">
<li>After entering the '''TF card and eMMC boot image''' folder, you can see the following three images, the difference between them is:</li></ol>
+
<li>After entering the '''TF card and eMMC boot image''' folder, you can see the following three images, the difference between them is:</li>
  
a) The first image is dedicated to HDMI display and supports 8K display. If you
+
a) The first image is dedicated to HDMI display and supports 8K display. If you don’t use LCD screen, please download the image without lcd
 
 
don’t use LCD screen, please download the image without lcd
 
  
 
b) If you want to use lcd screen, please choose image with lcd
 
b) If you want to use lcd screen, please choose image with lcd
Line 1,859: Line 2,105:
 
c) The image with box is a image dedicated to the TV box
 
c) The image with box is a image dedicated to the TV box
  
[[File:media/image150.png|255x97px]]
+
[[File:plus5-img150.png]]
 
+
</ol>
 +
</li></ol>
 
<ol start="5" style="list-style-type: decimal;">
 
<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 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></ol>
+
<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:media/image151.png|575x138px]]
 
  
 +
[[File:plus5-img151.png]]
 +
</ol>
 
<ol start="7" style="list-style-type: decimal;">
 
<ol start="7" style="list-style-type: decimal;">
<li>After opening SDDiskTool, if the TF card is recognized normally, the inserted disk device will be displayed in the &quot;'''Select Removable Disk Device'''&quot; column. '''Please make sure that the displayed disk device is consistent with the drive letter of the TF card you want to burn''' If there is no display, you can try to unplug the TF card</li></ol>
+
<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:media/image152.png|267x228px]]
 
  
 +
[[File:plus5-img152.png]]
 +
</ol>
 
<ol start="8" style="list-style-type: decimal;">
 
<ol start="8" style="list-style-type: decimal;">
<li>After confirming the drive letter, you can format the TF card first, click the restore disk button in '''SDDiskTool''', or use the SD Card Formatter mentioned above to format the TF card</li></ol>
+
<li>After confirming the drive letter, you can format the TF card first, click the restore disk button in '''SDDiskTool''', or use the SD Card Formatter mentioned above to format the TF card</li>
 
 
[[File:media/image153.png|247x212px]]
 
  
 +
[[File:plus5-img153.png]]
 +
</ol>
 
<ol start="9" style="list-style-type: decimal;">
 
<ol start="9" style="list-style-type: decimal;">
<li>Then start to write the Android image to the TF card</li></ol>
+
<li>Then start to write the Android image to the TF card</li>
  
 
a. First check &quot;'''SD Boot'''&quot; in &quot;'''Select Function Mode'''&quot;
 
a. First check &quot;'''SD Boot'''&quot; in &quot;'''Select Function Mode'''&quot;
Line 1,886: Line 2,133:
 
c. Finally click the &quot;'''Start Create'''&quot; button to start burning the Android image to the TF card
 
c. Finally click the &quot;'''Start Create'''&quot; button to start burning the Android image to the TF card
  
[[File:media/image154.png|346x292px]]
+
[[File:plus5-img154.png]]
 
+
</ol>
 
<ol start="10" style="list-style-type: decimal;">
 
<ol start="10" style="list-style-type: decimal;">
<li>After burning, you can exit the SDDiskTool software, and then you can pull out the TF card from the computer and insert it into the development board to start</li></ol>
+
<li>After burning, you can exit the SDDiskTool software, and then you can pull out the TF card from the computer and insert it into the development board to start</li>
  
[[File:media/image155.png|304x258px]]
+
[[File:plus5-img155.png]]
 +
</ol>
 +
<span id="how-to-burn-android-image-into-emmc"></span>
  
<span id="how-to-burn-android-image-into-emmc"></span>
 
 
== How to burn Android image into eMMC ==
 
== How to burn Android image into eMMC ==
  
'''Note, after burning the image into eMMC, if the test finds that it cannot be started, please clear the SPIFlash and try again. For the method of clearing SPIFlash, please refer to the method of using RKDevTool to clear SPIFlash.'''
+
{| 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 the method of using RKDevTool to clear SPIFlash.'''</big>
 +
|}
  
 
<span id="how-to-burn-android-image-into-emmc-via-type-c-cable"></span>
 
<span id="how-to-burn-android-image-into-emmc-via-type-c-cable"></span>
 
=== How to burn Android image into eMMC via Type-C cable ===
 
=== How to burn Android image into eMMC via Type-C cable ===
  
'''Note that all the following operations are performed on a Windows computer.'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''Note that all the following operations are performed on a Windows computer.'''</big>
 +
|}
  
 
# The development board reserves an eMMC expansion interface. Before programming the system to eMMC, you first need to purchase an eMMC module that matches the eMMC interface of the development board. Then install the eMMC module to the development board. The location of the eMMC interface is as follows:
 
# The development board reserves an eMMC expansion interface. Before programming the system to eMMC, you first need to purchase an eMMC module that matches the eMMC interface of the development board. Then install the eMMC module to the development board. The location of the eMMC interface is as follows:
  
[[File:media/image78.png|307x141px]]
+
::[[File:plus5-img78-1.png]][[File:plus5-img78-2.png]]
 +
 
 +
::[[File:plus5-img78-3.png]]
  
 
<ol start="2" style="list-style-type: decimal;">
 
<ol start="2" style="list-style-type: decimal;">
 
<li><p>It is also necessary to prepare a data cable with a good quality Type-C interface</p>
 
<li><p>It is also necessary to prepare a data cable with a good quality Type-C interface</p>
<p>[[File:media/image21.png|134x136px]]</p></li>
+
<p>[[File:plus5-img21.png]]</p></li>
<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 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-5-plus.html '''Orange Pi's download page''']</p></li>
<li><p>Then download the Android image from '''Orange Pi's download page.'''</p></li></ol>
+
<li><p>Then download the Android image from [http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html '''Orange Pi's download page'''].</p></li>
  
<!-- -->
 
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li>After opening the download link of the Android image, you can see &gt; the following two types of Android images, please select the image &gt; in the '''TF card and eMMC startup image''' folder to download</li></ol>
+
<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>
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image156.png|240x98px|4db492fa03e0cf83396c36286128350]]
+
[[File:plus5-img156.png]]
  
</div>
+
</div></ol>
 
<ol start="2" style="list-style-type: lower-alpha;">
 
<ol start="2" style="list-style-type: lower-alpha;">
<li>After entering the TF card and eMMC boot image folder, you can see &gt; the following three images, the difference between them is:</li></ol>
+
<li>After entering the TF card and eMMC boot image folder, you can see the following three images, the difference between them is:</li>
  
<!-- -->
 
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li><p>The first image is dedicated to HDMI display and supports 8K &gt; display. If you don’t use LCD screen, please download the image &gt; without lcd</p></li>
+
<li><p>The first image is dedicated to HDMI display and supports 8K 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>
 
<li><p>If you want to use lcd screen, please choose image with lcd</p></li>
<li><p>The image with box is a image dedicated to the TV box</p></li></ol>
+
<li><p>The image with box is a image dedicated to the TV box</p></li>
 
 
[[File:media/image150.png|255x97px]]
 
  
 +
[[File:plus5-img150.png]]
 +
</ol>
 +
</ol>
 +
</ol>
 
<ol start="5" style="list-style-type: decimal;">
 
<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 the compressed package of the downloaded Android image. Among the decompressed files, the file ending with &quot;.img&quot; is the Android image file, and the size is more than 1GB</p></li>
<li><p>Then use decompression software to decompress '''DriverAssitant_v5.12.zip''', and then find the '''DriverInstall.exe''' executable file in the decompressed folder and open it</p></li></ol>
+
<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:media/image47.png|575x169px]]
 
  
 +
[[File:plus5-img47.png]]
 +
</ol>
 
<ol start="7" style="list-style-type: decimal;">
 
<ol start="7" style="list-style-type: decimal;">
 
<li><p>After opening '''DriverInstall.exe''', the steps to install the Rockchip driver are as follows</p>
 
<li><p>After opening '''DriverInstall.exe''', the steps to install the Rockchip driver are as follows</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li>Click the &quot;'''Driver Installation'''&quot; button</li></ol>
+
<li>Click the &quot;'''Driver Installation'''&quot; button</li>
</li></ol>
 
 
 
[[File:media/image48.png|300x157px]]
 
  
 +
[[File:plus5-img48.png]]
 +
</ol>
 
<ol start="2" style="list-style-type: lower-alpha;">
 
<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;, then click &quot;OK&quot;</li></ol>
+
<li>After waiting for a period of time, a pop-up window will prompt &quot;driver installed successfully&quot;, then click &quot;OK&quot;</li>
 
 
[[File:media/image49.png|315x164px]]
 
  
 +
[[File:plus5-img49.png]]
 +
</ol>
 +
</li></ol>
 
<ol start="8" style="list-style-type: decimal;">
 
<ol start="8" style="list-style-type: decimal;">
<li>Then decompress '''RKDevTool_Release_v3.15.zip''', this software does not need to be installed, just find '''RKDevTool''' in the decompressed folder and open it</li></ol>
+
<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:media/image50.png|454x134px]]
 
  
 +
[[File:plus5-img50.png]]
 +
</ol>
 
<ol start="9" style="list-style-type: decimal;">
 
<ol start="9" style="list-style-type: decimal;">
<li>After opening the '''RKDevTool''' burning tool, because the computer has not been connected to the development board through the Type-C cable at this time, the lower left corner will prompt &quot;'''No device found'''&quot;</li></ol>
+
<li>After opening the '''RKDevTool''' burning tool, because the computer has not been connected to the development board through the Type-C cable at this time, the lower left corner will prompt &quot;'''No device found'''&quot;</li>
 
 
[[File:media/image51.png|442x208px]]
 
  
 +
[[File:plus5-img51.png]]
 +
</ol>
 
<ol start="10" style="list-style-type: decimal;">
 
<ol start="10" style="list-style-type: decimal;">
 
<li><p>Then start burning the Android image into eMMC</p>
 
<li><p>Then start burning the Android image into eMMC</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li>First, connect the development board to the Windows computer through the Type-C data cable. The position of the Type-C interface on the development board is shown in the figure below</li></ol>
+
<li>First, connect the development board to the Windows computer through the Type-C data cable. The position of the Type-C interface on the development board is shown in the figure below</li>
</li></ol>
 
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image52.jpeg|439x124px|C:\Users\orangepi\Desktop\用户手册插图\Pi5 Plus\未标题-2.jpg未标题-2]]
+
[[File:plus5-img52.png]]
  
</div>
+
</div></ol>
 
<ol start="2" style="list-style-type: lower-alpha;">
 
<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 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>
+
<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:media/image53.png|456x103px]]
 
  
 +
[[File:plus5-img53.png]]
 +
</ol>
 
<ol start="4" style="list-style-type: lower-alpha;">
 
<ol start="4" style="list-style-type: lower-alpha;">
<li>Then connect the power supply of the Type-C interface to the development board, and power on</li></ol>
+
<li>Then connect the power supply of the Type-C interface to the development board, and power on</li>
 
 
[[File:media/image54.png|441x135px]]
 
  
 +
[[File:plus5-img54.png]]
 +
</ol>
 
<ol start="5" style="list-style-type: lower-alpha;">
 
<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>
+
<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:media/image55.png|457x215px]]
 
  
 +
[[File:plus5-img55.png]]
 +
</ol>
 
<ol start="6" style="list-style-type: lower-alpha;">
 
<ol start="6" style="list-style-type: lower-alpha;">
<li>Then click the &quot;'''Upgrade Firmware'''&quot; column of the burning tool</li></ol>
+
<li>Then click the &quot;'''Upgrade Firmware'''&quot; column of the burning tool</li>
 
 
[[File:media/image157.png|442x208px]]
 
  
 +
[[File:plus5-img157.png]]
 +
</ol>
 
<ol start="7" style="list-style-type: lower-alpha;">
 
<ol start="7" 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>
+
<li>Then click the &quot;'''Firmware'''&quot; button to select the path of the Android image that needs to be burned</li>
 
 
[[File:media/image158.png|444x209px]]
 
  
 +
[[File:plus5-img158.png]]
 +
</ol>
 
<ol start="8" style="list-style-type: lower-alpha;">
 
<ol start="8" style="list-style-type: lower-alpha;">
 
<li><p>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.</p>
 
<li><p>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.</p>
<p>[[File:media/image159.png|449x211px]]</p></li></ol>
+
<p>[[File:plus5-img159.png]]</p></li></ol>
 +
</li></ol>
 +
<span id="how-to-burn-android-12-image-into-emmc-via-tf-card"></span>
  
<span id="how-to-burn-android-12-image-into-emmc-via-tf-card"></span>
 
 
=== How to burn Android 12 image into eMMC via TF card ===
 
=== How to burn Android 12 image into eMMC via TF card ===
  
'''Note that all the following operations are performed on a Windows computer.'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''Note that all the following operations are performed on a Windows computer.'''</big>
 +
|}
  
 
# The development board reserves an eMMC expansion interface. Before programming the system to eMMC, you first need to purchase an eMMC module that matches the eMMC interface of the development board. Then install the eMMC module to the development board. The location of the eMMC interface is as follows:
 
# The development board reserves an eMMC expansion interface. Before programming the system to eMMC, you first need to purchase an eMMC module that matches the eMMC interface of the development board. Then install the eMMC module to the development board. The location of the eMMC interface is as follows:
  
[[File:media/image78.png|392x180px]]
+
::[[File:plus5-img78-1.png]][[File:plus5-img78-2.png]]
 +
 
 +
::[[File:plus5-img78-3.png]]
  
 
<ol start="2" style="list-style-type: decimal;">
 
<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</p></li>
 
<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</p></li>
 
<li><p>Then use the card reader to insert the TF card into the computer</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 '''Orange Pi data download page''', '''please ensure that the version of the SDDiskTool tool is the latest v1.72'''</p></li>
+
<li><p>Then download the SDDiskTool programming tool from the [http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html '''Orange Pi's download page'''], '''<span style="color:#FF0000">please ensure that the version of the SDDiskTool tool is the latest v1.72</span>'''</p></li>
<li><p>Then download the Android image from '''Orange Pi's download page'''</p>
+
<li><p>Then download the Android image from the [http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html '''Orange Pi's download page''']</p>
 
<ol style="list-style-type: lower-alpha;">
 
<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>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>
</li></ol>
 
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image156.png|240x98px|4db492fa03e0cf83396c36286128350]]
+
[[File:plus5-img156.png]]
  
</div>
+
</div></ol>
 
<ol start="2" style="list-style-type: lower-alpha;">
 
<ol start="2" style="list-style-type: lower-alpha;">
 
<li><p>'''After entering the TF card and eMMC boot image folder''', you can see the following three images, the difference between them is:</p>
 
<li><p>'''After entering the TF card and eMMC boot image folder''', you can see the following three images, the difference between them is:</p>
Line 2,031: Line 2,294:
 
<li><p>The first image is dedicated to HDMI display and supports 8K display. If you don’t use LCD screen, please download the image without lcd</p></li>
 
<li><p>The first image is dedicated to HDMI display and supports 8K 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 mirror with lcd</p></li>
 
<li><p>If you want to use lcd screen, please choose mirror with lcd</p></li>
<li><p>The mirror with box is a mirror dedicated to the TV box</p></li></ol>
+
<li><p>The mirror with box is a mirror dedicated to the TV box</p></li>
 +
 
 +
[[File:plus5-img150.png]]</ol>
 +
</li></ol>
 
</li></ol>
 
</li></ol>
 
[[File:media/image150.png|255x97px]]
 
 
 
<ol start="6" style="list-style-type: decimal;">
 
<ol start="6" 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 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.ex''' in the decompressed folder and open it</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.ex''' in the decompressed folder and open it</p></li>
<li></li></ol>
 
  
[[File:media/image151.png|429x103px]]
+
[[File:plus5-img151.png]]
 +
</ol>
 +
<ol start="8" style="list-style-type: decimal;">
 +
<li>After opening '''SDDiskTool''', if the TF card is recognized normally, the inserted disk device will be displayed in the &quot;'''Select Removable Disk Device'''&quot; column. '''<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:plus5-img152.png]]
 +
</ol>
 
<ol start="9" style="list-style-type: decimal;">
 
<ol start="9" style="list-style-type: decimal;">
<li>After opening '''SDDiskTool''', if the TF card is recognized normally, the inserted disk device will be displayed in the &quot;'''Select Removable Disk Device'''&quot; column. '''Please make sure that the displayed disk device is consistent with the drive letter of the TF card you want to burn''', if there is no display, you can try to unplug the TF card</li></ol>
+
<li>After confirming the drive letter, you can format the TF card first, click the '''restore disk''' button in '''SDDiskTool,''' or use the '''SD Card Formatter''' mentioned above to format the TF card</li>
 
 
[[File:media/image152.png|267x228px]]
 
  
 +
[[File:plus5-img153.png]]
 +
</ol>
 
<ol start="10" style="list-style-type: decimal;">
 
<ol start="10" style="list-style-type: decimal;">
<li>After confirming the drive letter, you can format the TF card first, click the '''restore disk''' button in '''SDDiskTool,''' or use the '''SD Card Formatter''' mentioned above to format the TF card</li></ol>
 
 
[[File:media/image153.png|247x212px]]
 
 
<ol start="11" style="list-style-type: decimal;">
 
 
<li><p>Then start to write the Android image into the TF card</p>
 
<li><p>Then start to write the Android image into the TF card</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
Line 2,059: Line 2,321:
 
<li><p>Then select &quot;'''Firmware Upgrade'''&quot; in &quot;'''Select Function Mode'''&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>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>
+
<li><p>Finally click the &quot;'''Start Create'''&quot; button to start burning</p></li>
 +
 
 +
[[File:plus5-img160.png]]
 +
</ol>
 
</li></ol>
 
</li></ol>
 +
<ol start="11" style="list-style-type: decimal;">
 +
<li><p>After the burning is completed, the display is as shown in the figure below, and then you can exit SDDiskTool</p></li>
  
[[File:media/image160.png|290x246px]]
+
[[File:plus5-img161.png]]
 
+
</ol>
 
<ol start="12" style="list-style-type: decimal;">
 
<ol start="12" style="list-style-type: decimal;">
<li><p>After the burning is completed, the display is as shown in the figure below, and then you can exit SDDiskTool</p></li>
 
<li></li></ol>
 
 
[[File:media/image161.png|285x243px]]
 
 
<ol start="14" 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>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>
 
<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>
<li></li></ol>
 
  
[[File:media/image162.png|430x247px]]
+
[[File:plus5-img162.png]]
 
+
</ol>
<ol start="17" style="list-style-type: decimal;">
+
<ol start="14" style="list-style-type: decimal;">
 
<li><p>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.</p>
 
<li><p>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.</p>
<p>[[File:media/image163.png|576x389px]]</p></li></ol>
+
<p>[[File:plus5-img163.png]]</p></li></ol>
  
 
<span id="how-to-burn-android-image-to-spiflashnvme-ssd"></span>
 
<span id="how-to-burn-android-image-to-spiflashnvme-ssd"></span>
 +
 
== How to burn Android image to SPIFlash+NVMe SSD ==
 
== How to burn Android image to SPIFlash+NVMe SSD ==
  
'''Note that all the following operations are performed on a Windows computer.'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''Note that all the following operations are performed on a Windows computer.'''</big>
 +
|}
  
 
# First, you need to prepare an M-Key 2280 specification NVMe SSD solid state drive, and the specification of the PCIe interface in the M.2 slot of the development board is PCIe3.0x4.
 
# First, you need to prepare an M-Key 2280 specification NVMe SSD solid state drive, and the specification of the PCIe interface in the M.2 slot of the development board is PCIe3.0x4.
  
[[File:media/image25.png|361x104px]]
+
::[[File:plus5-img25.png]]
  
 
<ol start="2" style="list-style-type: decimal;">
 
<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>
+
<li>Then insert the NVMe SSD into the M.2 PCIe interface of the development board and fix it</li>
 
 
[[File:media/image90.png|355x143px]]
 
  
 +
[[File:plus5-img90.png]]
 +
</ol>
 
<ol start="3" style="list-style-type: decimal;">
 
<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>
+
<li>The position of the SPI Flash on the development board is shown in the figure below, no other settings are required before starting the programming</li>
 
 
[[File:media/image91.png|415x114px]]
 
  
 +
[[File:plus5-img91.png]]
 +
</ol>
 
<ol start="4" style="list-style-type: decimal;">
 
<ol start="4" style="list-style-type: decimal;">
<li>It is also necessary to prepare a data cable with a good quality Type-C interface</li></ol>
+
<li>It is also necessary to prepare a data cable with a good quality Type-C interface</li>
 
 
[[File:media/image21.png|150x152px]]
 
  
 +
[[File:plus5-img21.png]]
 +
</ol>
 
<ol start="5" style="list-style-type: decimal;">
 
<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 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-5-plus.html '''Orange Pi's download page''']</p></li>
<li><p>Then download the Android12 image from the '''Orange Pi download page'''</p>
+
<li><p>Then download the Android12 image from the [http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html '''Orange Pi's download page''']</p>
 
<ol style="list-style-type: lower-alpha;">
 
<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 '''SPIFlash-NVME SSD boot image''' folder to download</li></ol>
+
<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 '''SPIFlash-NVME SSD boot image''' folder to download</li>
</li></ol>
 
 
 
[[File:media/image164.png|234x91px]]
 
  
 +
[[File:plus5-img164.png]]
 +
</ol>
 
<ol start="2" style="list-style-type: lower-alpha;">
 
<ol start="2" style="list-style-type: lower-alpha;">
 
<li><p>After entering the '''SPIFlash-NVME SSD boot image''' folder, you can see the following three images. Their differences are:</p>
 
<li><p>After entering the '''SPIFlash-NVME SSD boot image''' folder, you can see the following three images. Their differences are:</p>
Line 2,119: Line 2,383:
 
<li><p>The first image is dedicated to HDMI display and supports 8K display. If you don’t use LCD screen, please download the image without lcd</p></li>
 
<li><p>The first image is dedicated to HDMI display and supports 8K 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>
 
<li><p>If you want to use lcd screen, please choose image with lcd</p></li>
<li><p>The image with box is a image dedicated to the TV box</p></li></ol>
+
<li><p>The image with box is a image dedicated to the TV box</p></li>
 +
 
 +
[[File:plus5-img165.png]]
 +
</ol>
 +
</li></ol>
 
</li></ol>
 
</li></ol>
 
[[File:media/image165.png|241x70px]]
 
 
 
<ol start="7" style="list-style-type: decimal;">
 
<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></ol>
+
<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:media/image47.png|575x169px]]
+
[[File:plus5-img47.png]]
 +
</ol>
 +
:8.  After opening DriverInstall.exe, the steps to install the Rockchip driver are as followsa. Click the &quot;'''Driver Install'''&quot; button
  
8) After opening DriverInstall.exe, the steps to install the Rockchip driver are as followsa. Click the &quot;'''Driver Install'''&quot; button
+
::[[File:plus5-img48.png]]
  
[[File:media/image48.png|300x157px]]
+
:::a. After waiting for a period of time, a pop-up window will prompt &quot;'''driver installed successfully'''&quot;, then click the &quot;'''OK'''&quot; button
  
a. After waiting for a period of time, a pop-up window will prompt &quot;'''driver installed successfully'''&quot;, then click the &quot;'''OK'''&quot; button
+
::::[[File:plus5-img49.png]]
  
[[File:media/image49.png|429x223px]]
+
:9. 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
 +
::[[File:plus5-img50.png]]
  
<blockquote>9)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
+
<ol start="10" style="list-style-type: decimal;">
</blockquote>
+
<li>After opening the '''RKDevTool''' burning tool, because the computer is not connected to the development board through the Type-C cable at this time, the lower left corner will prompt &quot;'''No device found'''&quot;</li>
[[File:media/image50.png|421x124px]]
 
 
 
<ol start="11" style="list-style-type: decimal;">
 
<li>After opening the '''RKDevTool''' burning tool, because the computer is not connected to the development board through the Type-C cable at this time, the lower left corner will prompt &quot;'''No device found'''&quot;</li></ol>
 
 
 
[[File:media/image51.png|442x208px]]
 
  
 +
[[File:plus5-img51.png]]
 +
</ol>
 
<ol start="12" style="list-style-type: decimal;">
 
<ol start="12" style="list-style-type: decimal;">
 
<li><p>Then start burning the Android image to SPIFlash+NVMe SSD</p>
 
<li><p>Then start burning the Android image to SPIFlash+NVMe SSD</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li>First, connect the development board to the Windows computer &gt; through the Type-C data cable. The position of the Type-C &gt; interface on the development board is shown in the figure &gt; below</li></ol>
+
<li>First, connect the development board to the Windows computer through the Type-C data cable. The position of the Type-C interface on the development board is shown in the figure below</li>
</li></ol>
 
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image52.jpeg|418x118px|C:\Users\orangepi\Desktop\用户手册插图\Pi5 Plus\未标题-2.jpg未标题-2]]
+
[[File:plus5-img52.png]]
  
</div>
+
</div></ol>
 
<ol start="2" style="list-style-type: lower-alpha;">
 
<ol start="2" style="list-style-type: lower-alpha;">
<li><p>Make sure that the development board is not plugged into TF and eMMC &gt; modules, and is not connected to the power supply</p></li>
+
<li><p>Make sure that the development board is not plugged into TF and eMMC modules, and is not connected to the power supply</p></li>
<li><p>Then press and hold the MaskROM button on the development board, the &gt; position of the MaskROM button on the development board is shown &gt; in the figure below:</p></li></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:media/image53.png|443x100px]]
 
  
 +
[[File:plus5-img53.png]]
 +
</ol>
 
<ol start="4" style="list-style-type: lower-alpha;">
 
<ol start="4" style="list-style-type: lower-alpha;">
<li>Then connect the power supply of the Type-C interface to the &gt; development board, and power on, and then release the MaskROM &gt; button</li></ol>
+
<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:media/image54.png|449x137px]]
 
  
 +
[[File:plus5-img54.png]]
 +
</ol>
 
<ol start="5" style="list-style-type: lower-alpha;">
 
<ol start="5" style="list-style-type: lower-alpha;">
<li>If the previous steps are successful, the development board will &gt; enter the '''MASKROM''' mode at this time, and the interface of the &gt; burning tool will prompt &quot;'''Found a MASKROM device'''&quot;</li></ol>
+
<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:media/image55.png|457x215px]]
 
  
 +
[[File:plus5-img55.png]]
 +
</ol>
 
<ol start="6" style="list-style-type: lower-alpha;">
 
<ol start="6" style="list-style-type: lower-alpha;">
<li>Then click the &quot;Upgrade Firmware&quot; column of the burning tool</li></ol>
+
<li>Then click the &quot;Upgrade Firmware&quot; column of the burning tool</li>
 
 
[[File:media/image157.png|442x208px]]
 
  
 +
[[File:plus5-img157.png]]
 +
</ol>
 
<ol start="7" style="list-style-type: lower-alpha;">
 
<ol start="7" style="list-style-type: lower-alpha;">
<li>Then click the &quot;Firmware&quot; button to select the Android image to be &gt; burned</li></ol>
+
<li>Then click the &quot;Firmware&quot; button to select the Android image to be burned</li>
 
 
[[File:media/image158.png|447x210px]]
 
  
 +
[[File:plus5-img158.png]]
 +
</ol>
 
<ol start="8" style="list-style-type: lower-alpha;">
 
<ol start="8" style="list-style-type: lower-alpha;">
<li>Finally, click the &quot;Upgrade&quot; button to start burning. The burning &gt; process is shown in the figure below. After the burning is &gt; completed, the Android system will automatically start.</li></ol>
+
<li>Finally, click the &quot;Upgrade&quot; button to start burning. The burning process is shown in the figure below. After the burning is completed, the Android system will automatically start.</li>
  
[[File:media/image166.png|450x210px]]
+
[[File:plus5-img166.png]]
 +
</ol>
 +
</li></ol>
 +
<span id="how-to-burn-orange-pi-os-droid-image-to-tf-card"></span>
  
<span id="how-to-burn-orange-pi-os-droid-image-to-tf-card"></span>
 
 
== How to burn Orange Pi OS (Droid) image to TF card ==
 
== How to burn Orange Pi OS (Droid) image to TF card ==
  
'''Note that all the following operations are performed on a Windows computer.'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''Note that all the following operations are performed on a Windows computer.'''</big>
 +
|}
  
 
# 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
 
# First prepare a TF card with 8GB or larger capacity. The transmission speed of the TF card must be class10 or above. It is recommended to use a TF card of SanDisk and other brands
 
# Then use the card reader to insert the TF card into the computer
 
# Then use the card reader to insert the TF card into the computer
# Then download the SDDiskTool programming tool from the '''Orange Pi data download page''', '''please make sure that the version of the SDDiskTool tool is the latest v1.72.'''
+
# Then download the SDDiskTool programming tool from the [http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html '''Orange Pi's download page'''], '''<span style="color:#FF0000">please make sure that the version of the SDDiskTool tool is the latest v1.72</span>.'''
# Then download the Orange Pi OS (Droid) image from the O'''range Pi data download page''', open the download link of the Orange Pi OS (Droid) image, and you can see the following two types of images, please select the image below
+
# Then download the Orange Pi OS (Droid) image from the [http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html '''Orange Pi's download page'''], open the download link of the Orange Pi OS (Droid) image, and you can see the following two types of images, please select the image below
  
[[File:media/image167.png|286x49px]]
+
::[[File:plus5-img167.png]]
  
 
<ol start="5" style="list-style-type: decimal;">
 
<ol start="5" style="list-style-type: decimal;">
 
<li><p>Then use decompression software to decompress the compressed file of the downloaded Orange Pi OS (Droid) image. Among the decompressed files, the file ending with &quot;'''.img'''&quot; is the Orange Pi OS (Droid) image file, and the size is more than 1GB</p></li>
 
<li><p>Then use decompression software to decompress the compressed file of the downloaded Orange Pi OS (Droid) image. Among the decompressed files, the file ending with &quot;'''.img'''&quot; is the Orange Pi OS (Droid) 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.ex''' in the decompressed folder and open it</p></li></ol>
+
<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.ex''' in the decompressed folder and open it</p></li>
 
 
[[File:media/image151.png|486x117px]]
 
  
 +
[[File:plus5-img151.png]]
 +
</ol>
 
<ol start="7" style="list-style-type: decimal;">
 
<ol start="7" style="list-style-type: decimal;">
<li>After opening '''SDDiskTool''', if the TF card is recognized normally, the inserted disk device will be displayed in the &quot;'''Select Removable Disk Device'''&quot; column. '''Please make sure that the displayed disk device is consistent with the drive letter of the TF card you want to burn''' , if there is no display, you can try to unplug the TF card</li></ol>
+
<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:media/image152.png|248x212px]]
 
  
 +
[[File:plus5-img152.png]]
 +
</ol>
 
<ol start="8" style="list-style-type: decimal;">
 
<ol start="8" style="list-style-type: decimal;">
<li>After confirming the drive letter, you can format the TF card first, click the '''restore disk''' button in SDDiskTool, or use the '''SD Card Formatter''' mentioned above to format the TF card</li></ol>
+
<li>After confirming the drive letter, you can format the TF card first, click the '''restore disk''' button in SDDiskTool, or use the '''SD Card Formatter''' mentioned above to format the TF card</li>
 
 
[[File:media/image153.png|261x224px]]
 
  
 +
[[File:plus5-img153.png]]
 +
</ol>
 
<ol start="9" style="list-style-type: decimal;">
 
<ol start="9" style="list-style-type: decimal;">
 
<li><p>Then start to write the Orange Pi OS (Droid) image into the TF card</p>
 
<li><p>Then start to write the Orange Pi OS (Droid) image into the TF card</p>
Line 2,221: Line 2,490:
 
<li><p>First check &quot;'''SD Boot'''&quot; in &quot;'''Select Function Mode'''&quot;</p></li>
 
<li><p>First check &quot;'''SD Boot'''&quot; in &quot;'''Select Function Mode'''&quot;</p></li>
 
<li><p>Then select the path of the Orange Pi OS (Droid) image in the &quot;'''Select to upgrade firmware'''&quot; column</p></li>
 
<li><p>Then select the path of the Orange Pi OS (Droid) image in the &quot;'''Select to upgrade firmware'''&quot; column</p></li>
<li><p>Finally, click the &quot;'''Start Create'''&quot; button to start burning the Orange Pi OS (Droid) image to the TF card</p></li></ol>
+
<li><p>Finally, click the &quot;'''Start Create'''&quot; button to start burning the Orange Pi OS (Droid) image to the TF card</p></li>
 +
 
 +
[[File:plus5-img154.png]]
 +
</ol>
 
</li></ol>
 
</li></ol>
 
[[File:media/image154.png|279x236px]]
 
 
 
<ol start="10" style="list-style-type: decimal;">
 
<ol start="10" style="list-style-type: decimal;">
<li>After burning, you can exit the SDDiskTool software, and then you can pull out the TF card from the computer and insert it into the development board to start</li></ol>
+
<li>After burning, you can exit the SDDiskTool software, and then you can pull out the TF card from the computer and insert it into the development board to start</li>
  
[[File:media/image155.png|304x258px]]
+
[[File:plus5-img155.png]]
 +
</ol>
 +
<span id="how-to-burn-orange-pi-os-droid-image-into-emmc"></span>
  
<span id="how-to-burn-orange-pi-os-droid-image-into-emmc"></span>
 
 
== How to burn Orange Pi OS (Droid) image into eMMC ==
 
== How to burn Orange Pi OS (Droid) image into eMMC ==
  
'''Note, after burning the image into eMMC, if the test finds that it cannot be started, please clear the SPIFlash and try again. For the method of clearing SPIFlash, please refer to the method of using RKDevTool to clear SPIFlash.'''
+
{| 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 the method of using RKDevTool to clear SPIFlash.'''</big>
 +
|}
  
 
<span id="burn-orange-pi-os-droid-image-toemmc"></span>
 
<span id="burn-orange-pi-os-droid-image-toemmc"></span>
=== Burn Orange Pi OS (Droid) image toeMMC ===
+
=== Burn Orange Pi OS (Droid) image to eMMC ===
  
'''Note that all the following operations are performed on a Windows computer.'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''Note that all the following operations are performed on a Windows computer.'''</big>
 +
|}
  
 
# The development board reserves an eMMC expansion interface. Before programming the system to eMMC, you first need to purchase an eMMC module that matches the eMMC interface of the development board. Then install the eMMC module to the development board. The location of the eMMC interface is as follows:
 
# The development board reserves an eMMC expansion interface. Before programming the system to eMMC, you first need to purchase an eMMC module that matches the eMMC interface of the development board. Then install the eMMC module to the development board. The location of the eMMC interface is as follows:
  
[[File:media/image78.png|324x149px]]
+
::[[File:plus5-img78-1.png]][[File:plus5-img78-2.png]]
 +
 
 +
::[[File:plus5-img78-3.png]]
  
 
<ol start="2" style="list-style-type: decimal;">
 
<ol start="2" style="list-style-type: decimal;">
<li>It is also necessary to prepare a data cable with a good quality Type-C interface</li></ol>
+
<li>It is also necessary to prepare a data cable with a good quality Type-C interface</li>
 
 
[[File:media/image21.png|127x129px]]
 
  
 +
[[File:plus5-img21.png]]
 +
</ol>
 
<ol start="3" style="list-style-type: decimal;">
 
<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 '''Orange Pi's data download page'''</p></li>
+
<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-5-plus.html '''Orange Pi's download page''']</p></li>
<li><p>Then download the Orange Pi OS (Droid) image from the '''Orange Pi download page'''</p></li></ol>
+
<li><p>Then download the Orange Pi OS (Droid) image from the [http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html '''Orange Pi's download page''']</p></li>
 
 
[[File:media/image167.png|286x49px]]
 
  
 +
[[File:plus5-img167.png]]
 +
</ol>
 
<ol start="5" style="list-style-type: decimal;">
 
<ol start="5" style="list-style-type: decimal;">
 
<li><p>Then use decompression software to decompress the compressed file of the downloaded Orange Pi OS (Droid) image. Among the decompressed files, the file ending with &quot;'''.img'''&quot; is the Orange Pi OS (Droid) image file, and the size is more than 1GB</p></li>
 
<li><p>Then use decompression software to decompress the compressed file of the downloaded Orange Pi OS (Droid) image. Among the decompressed files, the file ending with &quot;'''.img'''&quot; is the Orange Pi OS (Droid) image file, and the size is more than 1GB</p></li>
<li><p>Then use decompression software to decompress '''DriverAssitant_v5.12.zip''', then find the '''DriverInstall.exe''' executable file in the decompressed folder and open it</p></li></ol>
+
<li><p>Then use decompression software to decompress '''DriverAssitant_v5.12.zip''', then find the '''DriverInstall.exe''' executable file in the decompressed folder and open it</p></li>
 
 
[[File:media/image47.png|575x169px]]
 
  
 +
[[File:plus5-img47.png]]
 +
</ol>
 
<ol start="7" style="list-style-type: decimal;">
 
<ol start="7" style="list-style-type: decimal;">
 
<li><p>After opening '''DriverInstall.exe''', the steps to install the Rockchip driver are as follows</p>
 
<li><p>After opening '''DriverInstall.exe''', the steps to install the Rockchip driver are as follows</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li>Click the &quot;Driver Installation&quot; button</li></ol>
+
<li>Click the &quot;Driver Installation&quot; button</li>
</li></ol>
 
 
 
[[File:media/image48.png|300x157px]]
 
  
 +
[[File:plus5-img48.png]]
 +
</ol>
 
<ol start="2" style="list-style-type: lower-alpha;">
 
<ol start="2" style="list-style-type: lower-alpha;">
<li>After waiting for a period of time, a pop-up window will prompt &quot;driver installed successfully&quot;, and then click the &quot;OK&quot; button.</li></ol>
+
<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:media/image49.png|318x165px]]
 
  
 +
[[File:plus5-img49.png]]
 +
</ol>
 +
</li></ol>
 
<ol start="8" style="list-style-type: decimal;">
 
<ol start="8" style="list-style-type: decimal;">
<li>Then decompress'''RKDevTool_Release_v3.15.zip''', this software does not need to be installed, just find '''RKDevTool''' in the decompressed folder and open it</li></ol>
+
<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:media/image50.png|575x170px]]
 
  
 +
[[File:plus5-img50.png]]
 +
</ol>
 
<ol start="9" style="list-style-type: decimal;">
 
<ol start="9" style="list-style-type: decimal;">
<li>After opening the '''RKDevTool''' burning tool, because the computer is not connected to the development board through the Type-C cable at this time, the lower left corner will prompt &quot;'''No device found'''&quot;</li></ol>
+
<li>After opening the '''RKDevTool''' burning tool, because the computer is not connected to the development board through the Type-C cable at this time, the lower left corner will prompt &quot;'''No device found'''&quot;</li>
 
 
[[File:media/image51.png|442x208px]]
 
  
 +
[[File:plus5-img51.png]]
 +
</ol>
 
<ol start="10" style="list-style-type: decimal;">
 
<ol start="10" style="list-style-type: decimal;">
 
<li><p>Then start burning Orange Pi OS (Droid) image into eMMC</p>
 
<li><p>Then start burning Orange Pi OS (Droid) image into eMMC</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li>First, connect the development board to the Windows computer through the Type-C data cable. The position of the Type-C interface on the development board is shown in the figure below</li></ol>
+
<li>First, connect the development board to the Windows computer through the Type-C data cable. The position of the Type-C interface on the development board is shown in the figure below</li>
</li></ol>
 
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image52.jpeg|468x132px|C:\Users\orangepi\Desktop\用户手册插图\Pi5 Plus\未标题-2.jpg未标题-2]]
+
[[File:plus5-img52.png]]
  
</div>
+
</div></ol>
 
<ol start="2" style="list-style-type: lower-alpha;">
 
<ol start="2" style="list-style-type: lower-alpha;">
 
<li><p>Make sure that the development board is not inserted into the TF card and not connected to the power supply</p></li>
 
<li><p>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>
+
<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:media/image53.png|479x108px]]
 
  
 +
[[File:plus5-img53.png]]
 +
</ol>
 
<ol start="4" style="list-style-type: lower-alpha;">
 
<ol start="4" style="list-style-type: lower-alpha;">
<li>Then connect the power supply of the Type-C interface to the development board, and power on</li></ol>
+
<li>Then connect the power supply of the Type-C interface to the development board, and power on</li>
 
 
[[File:media/image54.png|457x140px]]
 
  
 +
[[File:plus5-img54.png]]
 +
</ol>
 
<ol start="5" style="list-style-type: lower-alpha;">
 
<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>
+
<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:media/image55.png|457x215px]]
 
  
 +
[[File:plus5-img55.png]]
 +
</ol>
 
<ol start="6" style="list-style-type: lower-alpha;">
 
<ol start="6" style="list-style-type: lower-alpha;">
<li>Then click the &quot;'''Upgrade Firmware'''&quot; column of the burning tool</li></ol>
+
<li>Then click the &quot;'''Upgrade Firmware'''&quot; column of the burning tool</li>
 
 
[[File:media/image157.png|461x217px]]
 
  
 +
[[File:plus5-img157.png]]
 +
</ol>
 
<ol start="7" style="list-style-type: lower-alpha;">
 
<ol start="7" style="list-style-type: lower-alpha;">
<li>Then click the &quot;'''Firmware'''&quot; button to select the path of the Orange Pi OS (Droid) image that needs to be burned</li></ol>
+
<li>Then click the &quot;'''Firmware'''&quot; button to select the path of the Orange Pi OS (Droid) image that needs to be burned</li>
 
 
[[File:media/image158.png|453x213px]]
 
  
 +
[[File:plus5-img158.png]]
 +
</ol>
 
<ol start="8" style="list-style-type: lower-alpha;">
 
<ol start="8" 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, the Orange Pi OS (Droid) system will start automatically.</li></ol>
+
<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, the Orange Pi OS (Droid) system will start automatically.</li>
 
 
[[File:media/image168.png|456x214px]]
 
  
 +
[[File:plus5-img168.png]]
 +
</ol>
 +
</li></ol>
 
<span id="burn-orange-pi-os-droid-image-to-emmc-via-tf-card"></span>
 
<span id="burn-orange-pi-os-droid-image-to-emmc-via-tf-card"></span>
 +
 
=== Burn Orange Pi OS (Droid) image to eMMC via TF card ===
 
=== Burn Orange Pi OS (Droid) image to eMMC via TF card ===
  
'''Note that all the following operations are performed on a Windows computer.'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''Note that all the following operations are performed on a Windows computer.'''</big>
 +
|}
  
 
# The development board reserves an eMMC expansion interface. Before programming the system to eMMC, you first need to purchase an eMMC module that matches the eMMC interface of the development board. Then install the eMMC module to the development board. The location of the eMMC interface is as follows:
 
# The development board reserves an eMMC expansion interface. Before programming the system to eMMC, you first need to purchase an eMMC module that matches the eMMC interface of the development board. Then install the eMMC module to the development board. The location of the eMMC interface is as follows:
  
[[File:media/image78.png|342x157px]]
+
::[[File:plus5-img78.png]]
  
 
<ol start="2" style="list-style-type: decimal;">
 
<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</p></li>
 
<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</p></li>
 
<li><p>Then use the card reader to insert the TF card into the computer</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 '''Orange Pi data download page''', '''please ensure that the version of the SDDiskTool tool is the latest v1.72.'''</p></li>
+
<li><p>Then download the SDDiskTool programming tool from the [http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html '''Orange Pi's download page'''], '''<span style="color:#FF0000">please ensure that the version of the SDDiskTool tool is the latest v1.72</span>.'''</p></li>
<li><p>Then download the Orange Pi OS (Droid) image from the '''Orange Pi download page'''</p></li></ol>
+
<li><p>Then download the Orange Pi OS (Droid) image from the [http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html '''Orange Pi's download page''']</p></li>
 
 
[[File:media/image167.png|286x49px]]
 
  
 +
[[File:plus5-img167.png]]
 +
</ol>
 
<ol start="6" style="list-style-type: decimal;">
 
<ol start="6" style="list-style-type: decimal;">
 
<li><p>Then use the decompression software to decompress the compressed package of the downloaded Orange Pi OS (Droid) image. Among the decompressed files, the file ending with &quot;.img&quot; is the Orange Pi OS (Droid) image file, and the size is more than 1GB</p></li>
 
<li><p>Then use the decompression software to decompress the compressed package of the downloaded Orange Pi OS (Droid) image. Among the decompressed files, the file ending with &quot;.img&quot; is the Orange Pi OS (Droid) 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></ol>
+
<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:media/image151.png|454x109px]]
 
  
 +
[[File:plus5-img151.png]]
 +
</ol>
 
<ol start="8" style="list-style-type: decimal;">
 
<ol start="8" style="list-style-type: decimal;">
<li>After opening '''SDDiskTool''', if the TF card is recognized normally, the inserted disk device will be displayed in the &quot;'''Select Removable Disk Device'''&quot; column. '''Please make sure that the displayed disk device is consistent with the drive letter of the TF card you want to burn''', if there is no display, you can try to unplug the TF card.</li></ol>
+
<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:media/image152.png|267x228px]]
 
  
 +
[[File:plus5-img152.png]]
 +
</ol>
 
<ol start="9" style="list-style-type: decimal;">
 
<ol start="9" style="list-style-type: decimal;">
<li>After confirming the drive letter, you can format the TF card first, click the restore disk button in '''SDDiskTool''', or use the '''SD Card Formatter''' mentioned above to format the TF card</li></ol>
+
<li>After confirming the drive letter, you can format the TF card first, click the restore disk button in '''SDDiskTool''', or use the '''SD Card Formatter''' mentioned above to format the TF card</li>
 
 
[[File:media/image153.png|267x228px]]
 
  
 +
[[File:plus5-img153.png]]
 +
</ol>
 
<ol start="10" style="list-style-type: decimal;">
 
<ol start="10" style="list-style-type: decimal;">
<li>Then start to write the Orange Pi OS (Droid) image into the TF card</li></ol>
+
<li>Then start to write the Orange Pi OS (Droid) image into the TF card</li>
  
 
a. First confirm that the displayed drive letter is the drive letter corresponding to the TF card under &quot;'''Select Removable Disk Device'''&quot;
 
a. First confirm that the displayed drive letter is the drive letter corresponding to the TF card under &quot;'''Select Removable Disk Device'''&quot;
Line 2,371: Line 2,656:
 
d. Finally click the &quot;'''Start Create'''&quot; button to start burning
 
d. Finally click the &quot;'''Start Create'''&quot; button to start burning
  
[[File:media/image160.png|289x246px]]
+
[[File:plus5-img160.png]]
 
+
</ol>
 
<ol start="11" style="list-style-type: decimal;">
 
<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></ol>
+
<li>After the burning is completed, the display is as shown in the figure below, and then you can exit SDDiskTool</li>
 
 
[[File:media/image161.png|285x243px]]
 
  
 +
[[File:plus5-img161.png]]
 +
</ol>
 
<ol start="12" style="list-style-type: decimal;">
 
<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 Orange Pi OS (Droid) image in the TF card to the eMMC of the development board.</p></li>
 
<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 Orange Pi OS (Droid) 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 Orange Pi OS (Droid) image to eMMC from the HDMI display</p></li></ol>
+
<li><p>If the development board is connected to an HDMI display, you can also see the progress bar of burning the Orange Pi OS (Droid) image to eMMC from the HDMI display</p></li>
 
 
[[File:media/image162.png|430x247px]]
 
  
 +
[[File:plus5-img162.png]]
 +
</ol>
 
<ol start="14" style="list-style-type: decimal;">
 
<ol start="14" style="list-style-type: decimal;">
<li>When the HDMI monitor displays the following information, it means that the burning of the Orange Pi OS (Droid) image to the eMMC has been completed. At this time, the TF card can be pulled out, and then the Orange Pi OS (Droid) system in the eMMC will start to start .</li></ol>
+
<li>When the HDMI monitor displays the following information, it means that the burning of the Orange Pi OS (Droid) image to the eMMC has been completed. At this time, the TF card can be pulled out, and then the Orange Pi OS (Droid) system in the eMMC will start to start .</li>
  
[[File:media/image163.png|576x389px]]
+
[[File:plus5-img163.png]]
 +
</ol>
 +
<span id="burn-orange-pi-os-droid-image-to-spiflashnvme-ssd"></span>
  
<span id="burn-orange-pi-os-droid-image-to-spiflashnvme-ssd"></span>
 
 
== Burn Orange Pi OS (Droid) image to SPIFlash+NVMe SSD ==
 
== Burn Orange Pi OS (Droid) image to SPIFlash+NVMe SSD ==
  
'''Note that all the following operations are performed on a Windows computer.'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''Note that all the following operations are performed on a Windows computer.'''</big>
 +
|}
  
 
# First, you need to prepare a 2280 specification NVMe SSD solid state drive. The specification of the PCIe interface in the M.2 slot of the development board is PCIe3.0x4.
 
# First, you need to prepare a 2280 specification NVMe SSD solid state drive. The specification of the PCIe interface in the M.2 slot of the development board is PCIe3.0x4.
  
[[File:media/image25.png|314x91px]]
+
::[[File:plus5-img25.png]]
  
 
<ol start="2" style="list-style-type: decimal;">
 
<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>
+
<li>Then insert the NVMe SSD into the M.2 PCIe interface of the development board and fix it</li>
 
 
[[File:media/image90.png|323x130px]]
 
  
 +
[[File:plus5-img90.png]]
 +
</ol>
 
<ol start="3" style="list-style-type: decimal;">
 
<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>
+
<li>The position of the SPI Flash on the development board is shown in the figure below, no other settings are required before starting the programming</li>
 
 
[[File:media/image91.png|382x105px]]
 
  
 +
[[File:plus5-img91.png]]
 +
</ol>
 
<ol start="4" style="list-style-type: decimal;">
 
<ol start="4" style="list-style-type: decimal;">
<li>It is also necessary to prepare a data cable with a good quality Type-C interface</li></ol>
+
<li>It is also necessary to prepare a data cable with a good quality Type-C interface</li>
 
 
[[File:media/image21.png|143x145px]]
 
  
 +
[[File:plus5-img21.png]]
 +
</ol>
 
<ol start="5" style="list-style-type: decimal;">
 
<ol start="5" style="list-style-type: decimal;">
<li><p>Then download the Rockchip driver '''DriverAssitant_v5.12.zip''' and the burning tool '''RKDevTool_Release_v3.15.zip''' from the '''Orange Pi data download page''',</p></li>
+
<li><p>Then download the Rockchip driver '''DriverAssitant_v5.12.zip''' and the burning tool '''RKDevTool_Release_v3.15.zip''' from the [http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html '''Orange Pi's download page'''],</p></li>
<li><p>Then download the Orange Pi OS (Droid) image, open the download link of the Orange Pi OS (Droid) image and you can see the following two types of images, please select the image with '''spi-nvme''' to download</p></li></ol>
+
<li><p>Then download the Orange Pi OS (Droid) image, open the download link of the Orange Pi OS (Droid) image and you can see the following two types of images, please select the image with '''spi-nvme''' to download</p></li>
 
 
[[File:media/image169.png|352x62px]]
 
  
 +
[[File:plus5-img169.png]]
 +
</ol>
 
<ol start="7" style="list-style-type: decimal;">
 
<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></ol>
+
<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:media/image47.png|423x124px]]
 
  
 +
[[File:plus5-img47.png]]
 +
</ol>
 
<ol start="8" style="list-style-type: decimal;">
 
<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>
 
<li><p>After opening '''DriverInstall.exe''', the steps to install the Rockchip driver are as follows</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li>Click the &quot;Driver Installation&quot; button</li></ol>
+
<li>Click the &quot;Driver Installation&quot; button</li>
</li></ol>
 
 
 
[[File:media/image48.png|268x140px]]
 
  
 +
[[File:plus5-img48.png]]
 +
</ol>
 
<ol start="2" style="list-style-type: lower-alpha;">
 
<ol start="2" style="list-style-type: lower-alpha;">
<li>After waiting for a period of time, a pop-up window will prompt &quot;'''driver installed successfully'''&quot;, and then click the &quot;'''OK'''&quot; button.</li></ol>
+
<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:media/image49.png|301x156px]]
 
  
 +
[[File:plus5-img49.png]]
 +
</ol>
 +
</li></ol>
 
<ol start="9" style="list-style-type: decimal;">
 
<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></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:media/image50.png|455x134px]]
 
  
 +
[[File:plus5-img50.png]]
 +
</ol>
 
<ol start="10" style="list-style-type: decimal;">
 
<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 Type-C cable at this time, the lower left corner will prompt &quot;'''No device found'''&quot;</li></ol>
+
<li>After opening the '''RKDevTool''' burning tool, because the computer is not connected to the development board through the Type-C cable at this time, the lower left corner will prompt &quot;'''No device found'''&quot;</li>
 
 
[[File:media/image51.png|442x208px]]
 
  
 +
[[File:plus5-img51.png]]
 +
</ol>
 
<ol start="11" style="list-style-type: decimal;">
 
<ol start="11" style="list-style-type: decimal;">
 
<li><p>Then start burning the Android image to SPIFlash+NVMe SSD</p>
 
<li><p>Then start burning the Android image to SPIFlash+NVMe SSD</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li>First, connect the development board to the Windows computer through the Type-C data cable. The position of the Type-C interface on the development board is shown in the figure below</li></ol>
+
<li>First, connect the development board to the Windows computer through the Type-C data cable. The position of the Type-C interface on the development board is shown in the figure below</li>
</li></ol>
 
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image52.jpeg|435x123px|C:\Users\orangepi\Desktop\用户手册插图\Pi5 Plus\未标题-2.jpg未标题-2]]
+
[[File:plus5-img52.png]]
  
</div>
+
</div></ol>
 
<ol start="2" style="list-style-type: lower-alpha;">
 
<ol start="2" style="list-style-type: lower-alpha;">
 
<li><p>Make sure that the development board is not plugged into the TF and eMMC modules, and is not connected to the power supply</p></li>
 
<li><p>Make sure that the development board is not plugged into the TF and eMMC modules, and is 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>
+
<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:media/image53.png|460x103px]]
 
  
 +
[[File:plus5-img53.png]]
 +
</ol>
 
<ol start="4" style="list-style-type: lower-alpha;">
 
<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>
+
<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:media/image54.png|440x134px]]
 
  
 +
[[File:plus5-img54.png]]
 +
</ol>
 
<ol start="5" style="list-style-type: lower-alpha;">
 
<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>
+
<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:media/image55.png|457x215px]]
 
  
 +
[[File:plus5-img55.png]]
 +
</ol>
 
<ol start="6" style="list-style-type: lower-alpha;">
 
<ol start="6" style="list-style-type: lower-alpha;">
<li>Then click the &quot;'''Upgrade Firmware'''&quot; column of the burning tool</li></ol>
+
<li>Then click the &quot;'''Upgrade Firmware'''&quot; column of the burning tool</li>
 
 
[[File:media/image157.png|457x215px]]
 
  
 +
[[File:plus5-img157.png]]
 +
</ol>
 
<ol start="7" style="list-style-type: lower-alpha;">
 
<ol start="7" style="list-style-type: lower-alpha;">
<li>Then click the &quot;'''Firmware'''&quot; button to select the Orange Pi OS (Droid) image to be burned</li></ol>
+
<li>Then click the &quot;'''Firmware'''&quot; button to select the Orange Pi OS (Droid) image to be burned</li>
 
 
[[File:media/image158.png|472x222px]]
 
  
 +
[[File:plus5-img158.png]]
 +
</ol>
 
<ol start="8" style="list-style-type: lower-alpha;">
 
<ol start="8" style="list-style-type: lower-alpha;">
 
<li><p>Finally, click the &quot;'''Upgrade'''&quot; button to start burning. The burning process is shown in the figure below. After the burning is completed, the Orange Pi OS (Droid) system will automatically start.</p>
 
<li><p>Finally, click the &quot;'''Upgrade'''&quot; button to start burning. The burning process is shown in the figure below. After the burning is completed, the Orange Pi OS (Droid) system will automatically start.</p>
<p>[[File:media/image170.png|476x225px]]</p></li></ol>
+
<p>[[File:plus5-img170.png]]</p></li></ol>
 +
</li></ol>
 +
<span id="how-to-use-rkdevtool-to-clear-spiflash"></span>
  
<span id="how-to-use-rkdevtool-to-clear-spiflash"></span>
 
 
== How to use RKDevTool to clear SPIFlash ==
 
== How to use RKDevTool to clear SPIFlash ==
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>The position of SPI Flash on the development board is shown in the figure below</p>
 
<li><p>The position of SPI Flash on the development board is shown in the figure below</p>
<p>[[File:media/image91.png|389x107px]]</p></li>
+
<p>[[File:plus5-img91.png]]</p></li>
 
<li><p>First, you need to prepare a data cable with a good quality Type-C interface</p>
 
<li><p>First, you need to prepare a data cable with a good quality Type-C interface</p>
<p>[[File:media/image21.png|152x154px]]</p></li>
+
<p>[[File:plus5-img21.png]]</p></li>
<li><p>Then download the Rockchip driver '''DriverAssitant_v5.12.zip''' and '''MiniLoader''' and the burning tool '''RKDevTool_Release_v3.15.zip''' from the '''Orange Pi data download page'''</p>
+
<li><p>Then download the Rockchip driver '''DriverAssitant_v5.12.zip''' and '''MiniLoader''' and the burning tool '''RKDevTool_Release_v3.15.zip''' from the [http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html '''Orange Pi's download page''']</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li><p>On the Orange Pi data download page, first select the '''official &gt; tool''', and then enter the following folder</p>
+
<li><p>On the Orange Pi's download page, first select the '''official tool''', and then enter the following folder</p>
<p>[[File:media/image171.png|486x155px]]</p></li>
+
<p>[[File:plus5-img171.png]]</p></li>
 
<li><p>Then download all the files below</p>
 
<li><p>Then download all the files below</p>
<p>[[File:media/image172.png|389x175px]]</p>
+
<p>[[File:plus5-img172.png]]</p>
<p>'''Note that the &quot;MiniLoader-things needed to burn the Linux image&quot; folder is hereinafter referred to as the MiniLoader folder.'''</p></li></ol>
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big><p>'''Note that the &quot;MiniLoader-things needed to burn the Linux image&quot; folder is hereinafter referred to as the MiniLoader folder.'''</p></big>
 +
|}
 +
</li></ol>
 
</li>
 
</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><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>
<p>[[File:media/image47.png|472x139px]]</p></li>
+
<p>[[File:plus5-img47.png]]</p></li>
 
<li><p>After opening '''DriverInstall.exe''', the steps to install the Rockchip driver are as follows</p>
 
<li><p>After opening '''DriverInstall.exe''', the steps to install the Rockchip driver are as follows</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
 
<li><p>Click the &quot;'''Driver Installation'''&quot; button</p>
 
<li><p>Click the &quot;'''Driver Installation'''&quot; button</p>
<p>[[File:media/image48.png|276x145px]]</p></li>
+
<p>[[File:plus5-img48.png]]</p></li>
<li><p>After waiting for a period of time, a pop-up window will prompt &gt; &quot;'''The driver is installed successfully'''&quot;, and then click &gt; the &quot;'''OK'''&quot; button.</p>
+
<li><p>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.</p>
<p>[[File:media/image49.png|292x151px]]</p></li></ol>
+
<p>[[File:plus5-img49.png]]</p></li></ol>
 
</li>
 
</li>
 
<li><p>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</p>
 
<li><p>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</p>
<p>[[File:media/image50.png|467x138px]]</p></li>
+
<p>[[File:plus5-img50.png]]</p></li>
 
<li><p>After opening the '''RKDevTool''' burning tool, because the computer has not been connected to the development board through the Type-C cable at this time, the lower left corner will prompt &quot;'''No device found'''&quot;</p>
 
<li><p>After opening the '''RKDevTool''' burning tool, because the computer has not been connected to the development board through the Type-C cable at this time, the lower left corner will prompt &quot;'''No device found'''&quot;</p>
<p>[[File:media/image51.png|402x189px]]</p></li>
+
<p>[[File:plus5-img51.png]]</p></li>
 
<li><p>Then you can start to clear the contents of the SPI FLASH</p>
 
<li><p>Then you can start to clear the contents of the SPI FLASH</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li><p>First, connect the development board to the Windows computer &gt; through the Type-C data cable. The position of the Type-C &gt; interface on the development board is shown in the figure &gt; below</p>
+
<li><p>First, connect the development board to the Windows computer through the Type-C data cable. The position of the Type-C interface on the development board is shown in the figure below</p>
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image173.jpeg|424x120px|C:\Users\orangepi\Desktop\用户手册插图\Pi5 Plus\未标题-1.jpg未标题-1]]
+
[[File:plus5-img173.png]]
  
 
</div></li>
 
</div></li>
<li><p>Make sure the development board is not connected to the power &gt; supply</p></li>
+
<li><p>Make sure the development board is not connected to the power supply</p></li>
<li><p>Then press and hold the MaskROM button on the development board, &gt; the position of the MaskROM button on the development board is &gt; shown in the figure below:</p>
+
<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>
<p>[[File:media/image53.png|444x100px]]</p></li>
+
<p>[[File:plus5-img53.png]]</p></li>
<li><p>Then connect the power supply of the Type-C interface to the &gt; development board, and power on, and then release the MaskROM &gt; button</p>
+
<li><p>Then connect the power supply of the Type-C interface to the development board, and power on, and then release the MaskROM button</p>
<p>[[File:media/image54.png|402x123px]]</p></li>
+
<p>[[File:plus5-img54.png]]</p></li>
<li><p>If the previous steps are smooth, at this time the development &gt; board will enter the '''Maskrom''' mode, and it will be prompted &gt; &quot;'''Find a Maskrom device'''&quot; on the interface of the &gt; recording tool</p>
+
<li><p>If the previous steps are smooth, at this time the development board will enter the '''Maskrom''' mode, and it will be prompted &quot;'''Find a Maskrom device'''&quot; on the interface of the recording tool</p>
<p>[[File:media/image55.png|457x215px]]</p></li>
+
<p>[[File:plus5-img55.png]]</p></li>
 
<li><p>Then please select '''advanced features'''</p>
 
<li><p>Then please select '''advanced features'''</p>
<p>[[File:media/image174.png|458x138px]]</p></li>
+
<p>[[File:plus5-img174.png]]</p></li>
 
<li><p>Then click the position shown in the figure below</p>
 
<li><p>Then click the position shown in the figure below</p>
<p>[[File:media/image175.png|459x216px]]</p></li>
+
<p>[[File:plus5-img175.png]]</p></li>
 
<li><p>Then select '''MiniLoaderAll.bin''' in the '''MiniLoader''' folder downloaded earlier, and then click Open</p>
 
<li><p>Then select '''MiniLoaderAll.bin''' in the '''MiniLoader''' folder downloaded earlier, and then click Open</p>
<p>[[File:media/image144.png|469x220px]]</p></li>
+
<p>[[File:plus5-img144.png]]</p></li>
 
<li><p>Then click '''download'''</p>
 
<li><p>Then click '''download'''</p>
<p>[[File:media/image176.png|472x222px]]</p></li>
+
<p>[[File:plus5-img176.png]]</p></li>
 
<li><p>The display after downloading '''MiniLoaderAll.bin''' is shown in the figure below</p>
 
<li><p>The display after downloading '''MiniLoaderAll.bin''' is shown in the figure below</p>
<p>[[File:media/image177.png|474x223px]]</p></li>
+
<p>[[File:plus5-img177.png]]</p></li>
 
<li><p>Then select the storage device as '''SPINOR'''</p>
 
<li><p>Then select the storage device as '''SPINOR'''</p>
<p>[[File:media/image178.png|467x220px]]</p></li>
+
<p>[[File:plus5-img178.png]]</p></li>
 
<li><p>Then click '''switch storage'''</p>
 
<li><p>Then click '''switch storage'''</p>
<p>[[File:media/image179.png|464x218px]]</p></li>
+
<p>[[File:plus5-img179.png]]</p></li>
 
<li><p>Then click '''Erase All''' to start erasing SPIFlash</p>
 
<li><p>Then click '''Erase All''' to start erasing SPIFlash</p>
<p>[[File:media/image180.png|467x220px]]</p></li>
+
<p>[[File:plus5-img180.png]]</p></li>
 
<li><p>The display log after erasing SPIFlash is shown in the figure below</p>
 
<li><p>The display log after erasing SPIFlash is shown in the figure below</p>
<p>[[File:media/image181.png|450x212px]]</p></li></ol>
+
<p>[[File:plus5-img181.png]]</p></li></ol>
 
</li></ol>
 
</li></ol>
  
 
<span id="start-the-orange-pi-development-board"></span>
 
<span id="start-the-orange-pi-development-board"></span>
 +
 
== Start the Orange Pi development board ==
 
== Start the Orange Pi development board ==
  
Line 2,561: Line 2,857:
 
# Connect a '''high-quality''' power adapter with a 5V/4A USB Type-C interface.
 
# Connect a '''high-quality''' power adapter with a 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.'''
+
::{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big style="color:#FF0000">'''Remember not to plug in a power adapter with a voltage output greater than 5V, as this will burn out the development board.'''
  
 
'''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'''
 
'''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'''
Line 2,569: Line 2,868:
 
'''The Type-C power port does not support PD negotiation.'''
 
'''The Type-C power port does not support PD negotiation.'''
  
'''In addition, please do not connect the USB interface of the computer to power the development board.'''
+
'''In addition, please do not connect the USB interface of the computer to power the development board.'''</big>
 +
|}
  
'''There are two Type-C ports that look the same on the development board. The one next to the network port is the power port, and the other Type-C port has no power supply function. Please don’t connect it wrong.'''
+
::{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''There are two Type-C ports that look the same on the development board. The one next to the network port is the power port, and the other Type-C port has no power supply function. Please don’t connect it wrong.'''</big>
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image182.jpeg|262x234px|C:\Users\orangepi\Desktop\用户手册插图\Pi5 Plus\01.jpg01]]
+
[[File:plus5-img182.png|center]]
  
 
</div>
 
</div>
 +
|}
 
<ol start="6" style="list-style-type: decimal;">
 
<ol start="6" style="list-style-type: decimal;">
 
<li><p>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.</p></li>
 
<li><p>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.</p></li>
<li><p>If you want to view the output information of the system through the debugging serial port, please use the serial cable to connect the development board to the computer. For the connection method of the serial port, please refer to the section on '''how to use the debugging serial port'''.</p></li></ol>
+
<li><p>If you want to view the output information of the system through the debugging serial port, please use the serial cable to connect the development board to the computer. For the connection method of the serial port, please refer to the section on [[Orange Pi 5 Plus#How to use the debugging serial port|'''how to use the debugging serial port''']].</p></li></ol>
  
 
<span id="how-to-use-the-debugging-serial-port"></span>
 
<span id="how-to-use-the-debugging-serial-port"></span>
 +
 
== How to use the debugging serial port ==
 
== How to use the debugging serial port ==
  
Line 2,590: Line 2,895:
 
# 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.
 
# First, you need to prepare a '''3.3V''' USB to TTL module, and then insert the USB interface end of the USB to TTL module into the USB interface of the computer.
  
'''For better compatibility, it is recommended to use CH340 USB to TTL module, please do not use CP2102, PL2303 type USB to TTL module.'''
+
::{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''For better compatibility, it is recommended to use CH340 USB to TTL module, please do not use CP2102, PL2303 type USB to TTL module.'''
 +
 
  
'''Before purchasing a USB to TTL module, please confirm that the module supports a baud rate of 1500000.'''
+
'''Before purchasing a USB to TTL module, please confirm that the module supports a baud rate of 1500000.'''</big>
 +
|}
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image183.png|576x115px|07]]
+
::[[File:plus5-img183.png]]
  
 
</div>
 
</div>
 
<ol start="2" style="list-style-type: decimal;">
 
<ol start="2" style="list-style-type: decimal;">
 
<li><p>The corresponding relationship between GND, RXD and TXD pins of the debugging serial port of the development board is shown in the figure below:</p>
 
<li><p>The corresponding relationship between GND, RXD and TXD pins of the debugging serial port of the development board is shown in the figure below:</p>
<p>[[File:media/image184.png|485x174px]]</p></li>
+
<p>[[File:plus5-img184.png]]</p></li>
 
<li><p>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</p>
 
<li><p>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</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li><p>The GND of the USB to TTL module is connected to the GND of the &gt; development board</p></li>
+
<li><p>The GND of the USB to TTL module is connected to the GND of the development board</p></li>
<li><p>The '''RX''' of the USB to TTL module is '''connected to the TX of &gt; the development board'''</p></li>
+
<li><p>The '''<span style="color:#FF0000">RX</span>''' of the USB to TTL module is '''<span style="color:#FF0000">connected to the TX of the development board</span>'''</p></li>
<li><p>The '''TX''' of the USB to TTL module is '''connected to the RX of &gt; the development board'''</p></li></ol>
+
<li><p>The '''<span style="color:#FF0000">TX</span>''' of the USB to TTL module is '''<span style="color:#FF0000">connected to the RX of the development board</span>'''</p></li></ol>
 
</li>
 
</li>
 
<li><p>The schematic diagram of connecting the USB to TTL module to the computer and the Orange Pi development board is as follows</p>
 
<li><p>The schematic diagram of connecting the USB to TTL module to the computer and the Orange Pi development board is as follows</p>
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image185.png|524x189px|08]]
+
[[File:plus5-img185.png]]
  
 
</div>
 
</div>
<p>'''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. If there is no output in the test, then exchange the order of TX and RX, so that there is always a This order is correct.'''</p></li></ol>
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big><p>'''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. If there is no output in the test, then exchange the order of TX and RX, so that there is always a This order is correct.'''</p></big>
 +
|}
 +
</li></ol>
  
 
<span id="how-to-use-the-debugging-serial-port-on-the-ubuntu-platform"></span>
 
<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 ===
 
=== How to use the debugging serial port on the Ubuntu platform ===
  
'''There are many serial port debugging software that can be used under Linux, such as putty, minicom, etc. The following demonstrates how to use putty.'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''There are many serial port debugging software that can be used under Linux, such as putty, minicom, etc. The following demonstrates how to use putty.'''</big>
 +
|}
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>First, insert the USB-to-TTL module into the USB port of the Ubuntu computer. If the connection and recognition of the USB-to-TTL module is normal, you can see the corresponding device node name under '''/dev''' on the Ubuntu PC. Remember this node name, and then set the serial port software will be used.</p>
 
<li><p>First, insert the USB-to-TTL module into the USB port of the Ubuntu computer. If the connection and recognition of the USB-to-TTL module is normal, you can see the corresponding device node name under '''/dev''' on the Ubuntu PC. Remember this node name, and then set the serial port software will be used.</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>test@test:~$ '''ls /dev/ttyUSB*'''</p>
 
<p>test@test:~$ '''ls /dev/ttyUSB*'''</p>
<p>/dev/ttyUSB0</p></li>
+
<p>/dev/ttyUSB0</p>
 +
|}
 +
</li>
 
<li><p>Then use the following command to install putty on Ubuntu PC</p>
 
<li><p>Then use the following command to install putty on Ubuntu PC</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>test@test:~$ '''sudo apt-get update'''</p>
 
<p>test@test:~$ '''sudo apt-get update'''</p>
<p>test@test:~$ '''sudo apt-get install -y putty'''</p></li>
+
<p>test@test:~$ '''sudo apt-get install -y putty'''</p>
<li><p>Then run putty, '''remember to add sudo permission'''</p>
+
|}
<p>test@test:~$ '''sudo putty'''</p></li>
+
</li>
 +
<li><p>Then run putty, '''<span style="color:#FF0000">remember to add sudo permission</span>'''</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>test@test:~$ '''sudo putty'''</p>
 +
|}
 +
</li>
 
<li><p>After executing the putty command, the following interface will pop up</p>
 
<li><p>After executing the putty command, the following interface will pop up</p>
<p>[[File:media/image186.png|367x321px]]</p></li>
+
<p>[[File:plus5-img186.png]]</p></li>
 
<li><p>First select the setting interface of the serial port</p>
 
<li><p>First select the setting interface of the serial port</p>
<p>[[File:media/image187.png|359x352px]]</p></li>
+
<p>[[File:plus5-img187.png]]</p></li>
 
<li><p>Then set the parameters of the serial port</p>
 
<li><p>Then set the parameters of the serial port</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li><p>Set the Serial line to connect to as /dev/ttyUSB0 (modify to the &gt; corresponding node name, generally /dev/ttyUSB0)</p></li>
+
<li><p>Set the Serial line to connect to as /dev/ttyUSB0 (modify to the corresponding node name, generally /dev/ttyUSB0)</p></li>
<li><p>Set Speed(baud) to '''1500000''' (the baud rate of the serial &gt; port)</p></li>
+
<li><p>Set Speed(baud) to '''1500000''' (the baud rate of the serial port)</p></li>
 
<li><p>Set Flow control to None</p>
 
<li><p>Set Flow control to None</p>
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image188.png|317x312px|09]]
+
[[File:plus5-img188.png]]
  
 
</div></li></ol>
 
</div></li></ol>
Line 2,651: Line 2,986:
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image189.png|345x340px|10]]
+
[[File:plus5-img189.png]]
  
 
</div></li></ol>
 
</div></li></ol>
 
</li>
 
</li>
 
<li><p>After starting the development board, you can see the Log information output by the system from the opened serial port terminal</p>
 
<li><p>After starting the development board, you can see the Log information output by the system from the opened serial port terminal</p>
<p>[[File:media/image190.png|287x208px]]</p></li></ol>
+
<p>[[File:plus5-img190.png]]</p></li></ol>
  
 
<span id="how-to-use-the-debugging-serial-port-on-windows-platform"></span>
 
<span id="how-to-use-the-debugging-serial-port-on-windows-platform"></span>
 +
 
=== How to use the debugging serial port on Windows platform ===
 
=== 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.'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''There are many serial port debugging software that can be used under Windows, such as SecureCRT, MobaXterm, etc. The following demonstrates how to use MobaXterm. This software has a free version and can be used without buying a serial number.'''</big>
 +
|}
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
Line 2,667: Line 3,007:
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
 
<li><p>Download MobaXterm website as follows</p>
 
<li><p>Download MobaXterm website as follows</p>
<p>[https://mobaxterm.mobatek.net/ '''https://mobaxterm.mobatek.net''']</p></li>
+
{| class="wikitable" style="width:800px;"
<li><p>After entering the MobaXterm download page, click '''GET XOBATERM &gt; NOW!'''</p>
+
|-
<p>[[File:media/image191.png|576x334px]]</p></li>
+
|
 +
'''https://mobaxterm.mobatek.net'''
 +
|}
 +
</li>
 +
<li><p>After entering the MobaXterm download page, click '''GET XOBATERM NOW!'''</p>
 +
<p>[[File:plus5-img191.png]]</p></li>
 
<li><p>Then choose to download the Home version</p>
 
<li><p>Then choose to download the Home version</p>
<p>[[File:media/image192.png|353x231px]]</p></li>
+
<p>[[File:plus5-img192.png]]</p></li>
 
<li><p>Then select Portable portable version, no need to install after downloading, just open it and use it</p>
 
<li><p>Then select Portable portable version, no need to install after downloading, just open it and use it</p>
<p>[[File:media/image193.png|575x259px]]</p></li></ol>
+
<p>[[File:plus5-img193.png]]</p></li></ol>
 
</li>
 
</li>
 
<li><p>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</p>
 
<li><p>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</p>
<p>[[File:media/image194.png|576x81px]]</p></li>
+
<p>[[File:plus5-img194.png]]</p></li>
 
<li><p>After opening the software, the steps to set up the serial port connection are as follows</p>
 
<li><p>After opening the software, the steps to set up the serial port connection are as follows</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
 
<li><p>Open the session settings interface</p></li>
 
<li><p>Open the session settings interface</p></li>
 
<li><p>Select the serial port type</p></li>
 
<li><p>Select the serial port type</p></li>
<li><p>Select the port number of the serial port (select the &gt; corresponding port number according to the actual situation), &gt; if you cannot see the port number, please use '''360 Driver &gt; Master''' to scan and install the driver for the USB to TTL &gt; serial port chip</p></li>
+
<li><p>Select the port number of the serial port (select the corresponding port number according to the actual situation), if you cannot see the port number, please use '''360 Driver Master''' to scan and install the driver for the USB to TTL serial port chip</p></li>
 
<li><p>Select the baud rate of the serial port as '''1500000'''</p></li>
 
<li><p>Select the baud rate of the serial port as '''1500000'''</p></li>
<li><p>Finally click the &quot;'''OK'''&quot; button to complete the settings</p></li></ol>
+
<li><p>Finally click the &quot;'''OK'''&quot; button to complete the settings</p></li>
 
</li></ol>
 
</li></ol>
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image195.png|575x438px|11]]
+
[[File:plus5-img195.png]]
  
</div>
+
</div></ol>
 
<ol start="4" style="list-style-type: decimal;">
 
<ol start="4" style="list-style-type: decimal;">
 
<li><p>After clicking the &quot;'''OK'''&quot; button, you will enter the following interface. At this time, start the development board and you can see the output information of the serial port</p>
 
<li><p>After clicking the &quot;'''OK'''&quot; button, you will enter the following interface. At this time, start the development board and you can see the output information of the serial port</p>
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image196.png|575x291px|12]]
+
[[File:plus5-img196.png]]
  
 
</div></li></ol>
 
</div></li></ol>
  
 
<span id="ubuntudebian-server-and-xfce-desktop-system-instructions"></span>
 
<span id="ubuntudebian-server-and-xfce-desktop-system-instructions"></span>
= '''Ubuntu/Debian Server and Xfce desktop system instructions''' =
 
  
'''The content of this chapter is written based on the Ubuntu/Debian server version image and the xfce desktop version image.'''
+
== Instructions for using the 5v pin in the 40pin interface of the development board to supply power ==
  
'''If you are using the Ubuntu22.04 Gnome image, please first check the instructions in the chapter Ubuntu22.04 Gnome Wayland Desktop System Instructions.'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''The power supply method we recommend for the development board is to use the 5V/4A or 5V/5A 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 cable 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>
 +
|}
  
'''You can refer to the instructions in this chapter for the content that does not exist in the chapter of Ubuntu22.04 Gnome Wayland Desktop System User Manual, but some details may be different, please pay special attention to this point.'''
+
<ol style="list-style-type: decimal;">
 +
<li><p>First, you need to prepare a power cord as shown in the figure below</p>
 +
<p>[[File:5plus-1.png]]</p>
 +
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''The power cord shown in the picture above can be bought on Taobao, please search and buy by yourself.'''</big>
 +
|}
 +
</li>
 +
<li><p>Use the 5V pin in the 40pin interface to supply power to the development board. The connection method of the power line is as follows</p>
 +
<ol style="list-style-type: lower-alpha;">
 +
<li><p>The USB A port of the power cord shown in the above picture needs to be plugged into the 5V/4A or 5V/5A power adapter connector '''(please do not plug into the USB port of the computer for power supply, nor can the general mobile phone charging head, because the development board Without the PD function, the general mobile phone charging head can only output the lowest 5V/2A)'''</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 line needs to be inserted into the GND pin of the 40pin interface</p></li>
 +
<li><p>The positions of the 5V pin and the GND pin of the 40pin interface in the development board are shown in the figure below, '''remember not to reverse the connection'''</p>
 +
<p>[[File:5plus-2.png]]</p></li></ol>
 +
</li>
 +
</ol>
 +
 
 +
= '''Ubuntu/Debian Server and Xfce desktop system instructions''' =
 +
 
 +
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''The content of this chapter is written based on the Ubuntu/Debian server version image and the xfce desktop version image.'''
 +
 
 +
'''If you are using the Ubuntu22.04 Gnome image, please first check the instructions in the chapter [[Orange Pi 5 Plus#Ubuntu22.04 Gnome Wayland Desktop system instructions|'''Ubuntu22.04 Gnome Wayland Desktop System Instructions''']].'''
  
'''If you are using the OPi OS Arch image, please refer to the chapter Orange Pi OS Arch System Instructions.'''
+
'''You can refer to the instructions in this chapter for the content that does not exist in the chapter of [[Orange Pi 5 Plus#Ubuntu22.04 Gnome Wayland Desktop system instructions|'''Ubuntu22.04 Gnome Wayland Desktop System User Manual''']], but some details may be different, please pay special attention to this point.'''
 +
 
 +
'''If you are using the OPi OS Arch image, please refer to the chapter [[Orange Pi 5 Plus#Orange Pi OS Arch system use instructions|'''Orange Pi OS Arch System Instructions''']].'''</big>
 +
|}
  
 
<span id="supported-ubuntudebian-image-types-and-kernel-versions"></span>
 
<span id="supported-ubuntudebian-image-types-and-kernel-versions"></span>
 
== Supported Ubuntu/Debian image types and kernel versions ==
 
== Supported Ubuntu/Debian image types and kernel versions ==
  
{| class="wikitable"
+
{| class="wikitable" style="width:800px;"  
 
|-
 
|-
 
| style="text-align: left;"| '''Linux image type'''
 
| style="text-align: left;"| '''Linux image type'''
Line 2,744: Line 3,121:
 
== Linux system adaptation ==
 
== Linux system adaptation ==
  
{| class="wikitable"
+
{| class="wikitable" style="width:800px;"  
 
|-
 
|-
 
| style="text-align: left;"| '''Function'''
 
| style="text-align: left;"| '''Function'''
Line 3,070: Line 3,447:
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>In this manual, all commands that need to be entered in the Linux system will be framed in the following box</p>
 
<li><p>In this manual, all commands that need to be entered in the Linux system will be framed in the following box</p>
 +
{| class="wikitable" style="width:800px;height: 50px;"
 +
|-
 +
|
 +
 +
|}
 
<p>As shown below, the content in the yellow box indicates the content that needs special attention, except for the commands in it.</p></li>
 
<p>As shown below, the content in the yellow box indicates the content that needs special attention, except for the commands in it.</p></li>
 +
{| class="wikitable" style="background-color:#ffffdc;width:800px;height: 50px;"
 +
|-
 +
|
 +
 +
|}
 
<li><p>Description of the prompt type in front of the command</p>
 
<li><p>Description of the prompt type in front of the command</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li><p>The prompt in front of the command refers to the content of the &gt; red part in the box below, which is not part of the linux &gt; command, so when entering the command in the linux system, &gt; please do not enter the content of the red font part.</p>
+
<li><p>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.</p>
<p>'''orangepi@orangepi:~$ sudo apt update'''</p>
+
{| class="wikitable" style="width:800px;"
<p>'''root@orangepi:~#''' '''vim /boot/boot.cmd'''</p>
+
|-
<p>'''test@test:~$ ssh [mailto:root@192.168.1.36 root@192.168.1.]xxx'''</p>
+
|
<p>'''root@test:~# ls'''</p></li>
+
<p>'''<span style="color:#FF0000">orangepi@orangepi:~$</span> sudo apt update'''</p>
<li><p>'''root@orangepi:~$''' prompt indicates that this command is &gt; entered in the '''linux system''' '''of the development board''', &gt; and the last '''$''' of the prompt indicates that the current &gt; user of the system is an ordinary user. When executing a &gt; privileged command, you need to add '''sudo'''</p></li>
+
<p>'''<span style="color:#FF0000">root@orangepi:~#</span>''' '''vim /boot/boot.cmd'''</p>
<li><p>'''root@orangepi:~#''' The prompt indicates that this command is &gt; entered in the '''linux system of the development board''', and &gt; the '''#''' at the end of the prompt indicates that the current &gt; user of the system is the root user, who can execute any &gt; desired command</p></li>
+
<p>'''<span style="color:#FF0000">test@test:~$</span> ssh [mailto:root@192.168.1.36 root@192.168.1.]xxx'''</p>
<li><p>'''test@test:~$''' prompt indicates that this command is entered &gt; in the Ubuntu PC or Ubuntu virtual machine, not in the linux &gt; system of the development board. The '''$''' at the end of the &gt; prompt indicates that the current user of the system is an &gt; ordinary user. When executing privileged commands, you need to &gt; add '''sudo'''</p></li>
+
<p>'''<span style="color:#FF0000">root@test:~#</span> ls'''</p>
<li><p>'''root@test:~#''' prompt indicates that this command is entered &gt; in the Ubuntu PC or Ubuntu virtual machine, not in the linux &gt; system of the development board. The # at the end of the &gt; prompt indicates that the current user of the system is the &gt; root user and can execute any command you want</p></li></ol>
+
|}
 +
</li>
 +
<li><p>'''<span style="color:#FF0000">root@orangepi:~$</span>''' prompt indicates that this command is entered in the '''linux system''' '''of the development board''', and the last '''<span style="color:#FF0000">$</span>''' of the prompt indicates that the current user of the system is an ordinary 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 '''<span style="color:#FF0000">#</span>''' 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>''' 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 '''<span style="color:#FF0000">$</span>''' at the end of the prompt indicates that the current user of the system is an ordinary user. When executing privileged commands, you need to add '''sudo'''</p></li>
 +
<li><p>'''<span style="color:#FF0000">root@test:~#</span>''' 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 '''<span style="color:#FF0000">#</span>''' 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>
 
</li>
 
<li><p>What are the commands that need to be entered?</p>
 
<li><p>What are the commands that need to be entered?</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li><p>As shown below, the '''black bold part''' is the command that &gt; needs to be input, and the content below the command is the &gt; output content (some commands have output, some may not have &gt; output), this part of the content does not need to be input</p>
+
<li><p>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 have output), this part of the content does not need to be input</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>root@orangepi:~# '''cat /boot/orangepiEnv.txt'''</p>
 
<p>root@orangepi:~# '''cat /boot/orangepiEnv.txt'''</p>
<p>'''verbosity=7'''</p>
+
<p>'''<span style="color:#FF0000">verbosity=7</span>'''</p>
 
<p>bootlogo=false</p>
 
<p>bootlogo=false</p>
<p>'''console=serial'''</p></li>
+
<p>'''<span style="color:#FF0000">console=serial</span>'''</p>
<li><p>As shown below, some commands cannot be written in one line and &gt; will be placed on the next line. As long as the black and bold &gt; parts are all commands that need to be input. When these &gt; commands are entered into one line, the last &quot;\&quot; of each &gt; line needs to be removed, this is not part of the command. In &gt; addition, there are spaces in different parts of the command, &gt; please don’t miss it</p>
+
|}
 +
</li>
 +
<li><p>As shown below, some commands cannot be written in one line and will be placed on the next line. As long as the black and bold parts are all commands that need to be input. When these commands are entered into one line, the last &quot;\&quot; of each line needs to be removed, this is not part of the command. In addition, there are spaces in different parts of the command, please don't miss it</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''echo \'''</p>
 
<p>orangepi@orangepi:~$ '''echo \'''</p>
 
<p>'''&quot;deb [arch=$(dpkg --print-architecture) \'''</p>
 
<p>'''&quot;deb [arch=$(dpkg --print-architecture) \'''</p>
 
<p>'''signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] \'''</p>
 
<p>'''signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] \'''</p>
 
<p>'''https://download.docker.com/linux/debian \'''</p>
 
<p>'''https://download.docker.com/linux/debian \'''</p>
<p>'''$(lsb_release -cs) stable&quot; | sudo tee /etc/apt/sources.list.d/docker.list &gt; /dev/null'''</p></li></ol>
+
<p>'''$(lsb_release -cs) stable&quot; | sudo tee /etc/apt/sources.list.d/docker.list &gt; /dev/null'''</p>
 +
|}
 +
</li></ol>
 
</li></ol>
 
</li></ol>
  
 
<span id="linux-system-login-instructions"></span>
 
<span id="linux-system-login-instructions"></span>
 +
 
== Linux system login instructions ==
 
== Linux system login instructions ==
  
Line 3,104: Line 3,507:
 
=== Linux system default login account and password ===
 
=== Linux system default login account and password ===
  
{| class="wikitable"
+
{| class="wikitable" style="width:800px;"  
 
|-
 
|-
 
| style="text-align: left;"| '''Account'''
 
| style="text-align: left;"| '''Account'''
Line 3,116: Line 3,519:
 
|}
 
|}
  
'''Note that when entering the password, the specific content of the entered password will not be displayed on the screen, please do not think that there is any fault, just press Enter after inputting.'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''Note that when entering the password, <span style="color:#FF0000">the specific content of the entered password will not be displayed on the screen</span>, please do not think that there is any fault, just press Enter after inputting.'''</big>
 +
|}
  
'''When the wrong password is prompted, or there is a problem with the ssh connection, please note that as long as you are using the Linux image provided by Orange Pi, please do not suspect that the above password is wrong, but look for other reasons.'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''When the wrong password is prompted, or there is a problem with the ssh connection, please note that as long as you are using the Linux image provided by Orange Pi, <span style="color:#FF0000">please do not suspect that the above password is wrong, but look for other reasons</span>.'''</big>
 +
|}
  
 
<span id="how-to-set-automatic-terminal-login-in-linux-system"></span>
 
<span id="how-to-set-automatic-terminal-login-in-linux-system"></span>
 +
 
=== How to set automatic terminal login in linux system ===
 
=== How to set automatic terminal login in linux system ===
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
<li><p>By default, the Linux system automatically logs in to the terminal, and the default login user name is '''orangepi'''</p>
+
<li><p>By default, the Linux system automatically logs in to the terminal, and the default login user name is '''<span style="color:#FF0000">orangepi</span>'''</p>
<p>[[File:media/image197.png|387x253px]]</p></li>
+
<p>[[File:plus5-img197.png]]</p></li>
 
<li><p>Use the following command to set the root user to automatically log in to the terminal</p>
 
<li><p>Use the following command to set the root user to automatically log in to the terminal</p>
<p>orangepi@orangepi:~$ '''sudo auto_login_cli.sh root'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''sudo auto_login_cli.sh root'''</p>
 +
|}
 +
</li>
 
<li><p>Use the following command to disable automatic login terminal</p>
 
<li><p>Use the following command to disable automatic login terminal</p>
<p>orangepi@orangepi:~$ '''sudo auto_login_cli.sh -d'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''sudo auto_login_cli.sh -d'''</p>
 +
|}
 +
</li>
 
<li><p>Use the following command to set the orangepi user to automatically log in to the terminal again</p>
 
<li><p>Use the following command to set the orangepi user to automatically log in to the terminal again</p>
<p>orangepi@orangepi:~$ '''sudo auto_login_cli.sh orangepi'''</p></li></ol>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''sudo auto_login_cli.sh orangepi'''</p>
 +
|}
 +
</li></ol>
  
 
<span id="instructions-for-automatic-login-of-linux-desktop-version-system"></span>
 
<span id="instructions-for-automatic-login-of-linux-desktop-version-system"></span>
 +
 
=== Instructions for automatic login of Linux desktop version system ===
 
=== Instructions for automatic login of Linux desktop version system ===
  
Line 3,140: Line 3,568:
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image198.png|576x324px|1]]
+
[[File:plus5-img198.png]]
  
 
</div></li>
 
</div></li>
 
<li><p>Run the following command to prohibit the desktop system from automatically logging into the desktop</p>
 
<li><p>Run the following command to prohibit the desktop system from automatically logging into the desktop</p>
<p>orangepi@orangepi:~$ '''sudo disable_desktop_autologin.sh'''</p></li>
+
{| class="wikitable" style="width:800px;"
<li><p>Then restart the system and a login dialog box will appear, at which point a '''password''' is required to enter the system</p></li></ol>
+
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''sudo disable_desktop_autologin.sh'''</p>
 +
|}
 +
</li>
 +
<li><p>Then restart the system and a login dialog box will appear, at which point a '''password''' is required to enter the system</p></li>
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image199.png|569x320px|IMG_256]]
+
[[File:plus5-img199.png]]
  
</div>
+
</div></ol>
 
<span id="the-setting-method-of-root-user-automatic-login-in-linux-desktop-version-system"></span>
 
<span id="the-setting-method-of-root-user-automatic-login-in-linux-desktop-version-system"></span>
 +
 
=== The setting method of root user automatic login in Linux desktop version system ===
 
=== The setting method of root user automatic login in Linux desktop version system ===
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>Execute the following command to set the desktop system to automatically log in as the root user</p>
 
<li><p>Execute the following command to set the desktop system to automatically log in as the root user</p>
<p>orangepi@orangepi:~$ '''sudo desktop_login.sh root'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''sudo desktop_login.sh root'''</p>
 +
|}
 +
</li>
 
<li><p>Then restart the system, it will automatically use the root user to log in to the desktop</p>
 
<li><p>Then restart the system, it will automatically use the root user to log in to the desktop</p>
<p>[[File:media/image200.png|362x152px]]</p>
+
<p>[[File:plus5-img200.png]]</p>
<p>'''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.'''</p>
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
<p>'''Also note that this is not a bug, since pulseaudio is not allowed to run as root.'''</p></li>
+
|-
 +
|
 +
<big><p>'''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.'''</p>
 +
<p>'''Also note that this is not a bug, since pulseaudio is not allowed to run as root.'''</p></big>
 +
|}
 +
</li>
 
<li><p>Execute the following command to set the desktop system to log in automatically with the orangepi user again</p>
 
<li><p>Execute the following command to set the desktop system to log in automatically with the orangepi user again</p>
<p>orangepi@orangepi:~$ '''sudo desktop_login.sh orangepi'''</p></li></ol>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''sudo desktop_login.sh orangepi'''</p>
 +
|}
 +
</li></ol>
  
 
<span id="the-method-of-disabling-the-desktop-in-the-linux-desktop-version-system"></span>
 
<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 ===
 
=== The method of disabling the desktop in the Linux desktop version system ===
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
<li><p>First enter the following command in the command line, '''please remember to add sudo permission'''</p>
+
<li><p>First enter the following command in the command line, '''<span style="color:#FF0000">please remember to add sudo permission</span>'''</p>
<p>orangepi@orangepi:~$ '''sudo systemctl disable lightdm.service'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''sudo systemctl disable lightdm.service'''</p>
 +
|}
 +
</li>
 
<li><p>Then restart the Linux system and you will find that the desktop will not be displayed</p>
 
<li><p>Then restart the Linux system and you will find that the desktop will not be displayed</p>
<p>orangepi@orangepi:~$ '''sudo reboot'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''sudo reboot'''</p>
 +
|}
 +
</li>
 
<li><p>The steps to reopen the desktop are as follows:</p>
 
<li><p>The steps to reopen the desktop are as follows:</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li><p>First enter the following command in the command line, '''please &gt; remember to add sudo permission'''</p>
+
<li><p>First enter the following command in the command line, '''<span style="color:#FF0000">please remember to add sudo permission</span>'''</p>
<p>orangepi@orangepi:~$ '''sudo systemctl start lightdm.service'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''sudo systemctl start lightdm.service'''</p>
 +
orangepi@orangepi:~$ '''sudo systemctl enable lightdm.service'''
 +
|}
 +
</li>
 
<li><p>After selection, the monitor will display the desktop</p></li></ol>
 
<li><p>After selection, the monitor will display the desktop</p></li></ol>
 
</li></ol>
 
</li></ol>
  
 
<span id="onboard-led-light-test-instructions"></span>
 
<span id="onboard-led-light-test-instructions"></span>
 +
 
== Onboard LED Light Test Instructions ==
 
== Onboard LED Light Test Instructions ==
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>There is a red, green and blue three-color light on the development board, and its location is shown in the figure below:</p>
 
<li><p>There is a red, green and blue three-color light on the development board, and its location is shown in the figure below:</p>
<p>[[File:media/image201.png|374x77px]]</p></li>
+
<p>[[File:plus5-img201.png]]</p></li>
<li><p>'''As long as the development board is powered on, the red LED light will always be on, which is controlled by the hardware and cannot be turned off by the software. The red LED light can be used to determine whether the power supply of the development board is turned on normally.'''</p></li>
+
<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. The red LED light can be used to determine whether the power supply of the development board is turned on normally.</span>'''</p></li>
 
<li><p>The green and blue LED lights will keep blinking after the kernel boots, which is controlled by software.</p></li>
 
<li><p>The green and blue LED lights will keep blinking after the kernel boots, which is controlled by software.</p></li>
 
<li><p>The method of setting the green light on and off and flashing is as follows:</p>
 
<li><p>The method of setting the green light on and off and flashing is as follows:</p>
<p>'''Note that the following operations should be performed under the root user.'''</p>
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big><p>'''Note that the following operations should be performed under the root user.'''</p></big>
 +
|}
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
 
<li><p>First enter the setting directory of the green light</p>
 
<li><p>First enter the setting directory of the green light</p>
<p>root@orangepi:~# '''cd /sys/class/leds/green_led'''</p></li>
+
{| class="wikitable" style="width:800px;"
<li><p>The command to set the green light to stop flashing is as &gt; follows</p>
+
|-
<p>root@orangepi:/sys/class/leds/green_led# '''echo none &gt; trigger'''</p></li>
+
|
<li><p>The command to set the green light to be on is as follows</p>
+
<p>root@orangepi:~# '''cd /sys/class/leds/green_led'''</p>
<p>root@orangepi:/sys/class/leds/green_led# '''echo default-on &gt; trigger'''</p></li>
+
|}
<li><p>The command to set the green light to flash is as follows</p>
 
<p>root@orangepi:/sys/class/leds/green_led# '''echo heartbeat &gt; trigger'''</p></li></ol>
 
 
</li>
 
</li>
<li><p>The method of setting the blue light on and off and flashing is as follows:</p>
+
<li><p>The command to set the green light to stop flashing is as follows</p>
<p>'''Note that the following operations should be performed under the root user.'''</p>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>root@orangepi:/sys/class/leds/green_led# '''echo none &gt; trigger'''</p>
 +
|}
 +
</li>
 +
<li><p>The command to set the green light to be on is as follows</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>root@orangepi:/sys/class/leds/green_led# '''echo default-on &gt; trigger'''</p>
 +
|}
 +
</li>
 +
<li><p>The command to set the green light to flash is as follows</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>root@orangepi:/sys/class/leds/green_led# '''echo heartbeat &gt; trigger'''</p>
 +
|}
 +
</li></ol>
 +
</li>
 +
<li><p>The method of setting the blue light on and off and flashing is as follows:</p>
 +
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big><p>'''Note that the following operations should be performed under the root user.'''</p></big>
 +
|}
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
 
<li><p>First enter the setting directory of the blue light</p>
 
<li><p>First enter the setting directory of the blue light</p>
<p>root@orangepi:~# '''cd /sys/class/leds/blue_led'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>root@orangepi:~# '''cd /sys/class/leds/blue_led'''</p>
 +
|}
 +
</li>
 
<li><p>The command to set the blue light to stop flashing is as follows</p>
 
<li><p>The command to set the blue light to stop flashing is as follows</p>
<p>root@orangepi:/sys/class/leds/blue_led# '''echo none &gt; trigger'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>root@orangepi:/sys/class/leds/blue_led# '''echo none &gt; trigger'''</p>
 +
|}
 +
</li>
 
<li><p>The command to set the blue light to be on is as follows</p>
 
<li><p>The command to set the blue light to be on is as follows</p>
<p>root@orangepi:/sys/class/leds/blue_led# '''echo default-on &gt; trigger'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>root@orangepi:/sys/class/leds/blue_led# '''echo default-on &gt; trigger'''</p>
 +
|}
 +
</li>
 
<li><p>The command to set the blue light to flash is as follows</p>
 
<li><p>The command to set the blue light to flash is as follows</p>
<p>root@orangepi:/sys/class/leds/blue_led# '''echo heartbeat &gt; trigger'''</p></li></ol>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>root@orangepi:/sys/class/leds/blue_led# '''echo heartbeat &gt; trigger'''</p>
 +
|}
 +
</li></ol>
 +
 
 +
<li><p>If you don't want the LED light to flash after booting, you can use the following method to turn off the green light and blue light</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:5plus-51.png]]</p>
 +
</li>
 +
<li><p>Then select '''Hardware'''</p>
 +
<p>[[File:5plus-52.png]]</p>
 +
</li>
 +
<li><p>Then use the arrow keys of the keyboard to navigate to the position shown in the figure below, and then use the space to select the '''opi5plus-disable-leds''' configuration</p>
 +
<p>[[File:5plus-53.png]]</p>
 +
</li>
 +
<li><p>Then select '''<Save>''' to save</p>
 +
<p>[[File:5plus-54.png]]</p>
 +
</li>
 +
<li><p>Then select '''<Back>'''</p>
 +
<p>[[File:5plus-55.png]]</p>
 +
</li>
 +
<li><p>Then select '''<Reboot>''' to restart the system to make the configuration take effect</p>
 +
<p>[[File:5plus-56.png]]</p>
 +
</li>
 +
<li><p>After restarting, you can see that only the red light on the development board is always on, and the green and blue lights will not flash</p>
 +
</li></ol>
 
</li></ol>
 
</li></ol>
  
 
<span id="network-connection-test"></span>
 
<span id="network-connection-test"></span>
 +
 
== Network connection test ==
 
== Network connection test ==
  
Line 3,221: Line 3,767:
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>The development board has two 2.5G Ethernet ports, and the test methods for the two ports are the same. 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 unimpeded.</p></li>
 
<li><p>The development board has two 2.5G Ethernet ports, and the test methods for the two ports are the same. 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 unimpeded.</p></li>
<li><p>After the system starts, it will automatically assign an IP address to the Ethernet card through DHCP '''without any other configuration'''.</p></li>
+
<li><p>After the system starts, it will automatically assign an IP address to the Ethernet card through DHCP '''<span style="color:#FF0000">without any other configuration</span>'''.</p></li>
 
<li><p>The command to view the IP address in the Linux system of the development board is as follows:</p>
 
<li><p>The command to view the IP address in the Linux system of the development board is as follows:</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''ip addr show'''</p>
 
<p>orangepi@orangepi:~$ '''ip addr show'''</p>
 
<p>1: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000</p>
 
<p>1: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000</p>
<p>link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00</p>
+
:<p>link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00</p>
<p>inet 127.0.0.1/8 scope host lo</p>
+
:<p>inet 127.0.0.1/8 scope host lo</p>
<p>valid_lft forever preferred_lft forever</p>
+
::<p>valid_lft forever preferred_lft forever</p>
<p>inet6 ::1/128 scope host</p>
+
:<p>inet6 ::1/128 scope host</p>
<p>valid_lft forever preferred_lft forever</p>
+
::<p>valid_lft forever preferred_lft forever</p>
<p>2: '''enP3p49s0''': &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc mq state UP group default qlen 1000</p>
+
<p>2: '''<span style="color:#FF0000">enP3p49s0</span>''': &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc mq state UP group default qlen 1000</p>
<p>link/ether 00:e0:4c:68:00:26 brd ff:ff:ff:ff:ff:ff</p>
+
:<p>link/ether 00:e0:4c:68:00:26 brd ff:ff:ff:ff:ff:ff</p>
<p>inet '''192.168.1.245'''/24 brd 192.168.1.255 scope global dynamic noprefixroute enP3p49s0</p>
+
:<p>inet '''<span style="color:#FF0000">192.168.1.245</span>'''/24 brd 192.168.1.255 scope global dynamic noprefixroute enP3p49s0</p>
<p>valid_lft 42537sec preferred_lft 42537sec</p>
+
::<p>valid_lft 42537sec preferred_lft 42537sec</p>
<p>inet6 fe80::9005:95ac:b9c0:2beb/64 scope link noprefixroute</p>
+
:<p>inet6 fe80::9005:95ac:b9c0:2beb/64 scope link noprefixroute</p>
<p>valid_lft forever preferred_lft forever</p>
+
::<p>valid_lft forever preferred_lft forever</p>
<p>3: '''enP4p65s0''': &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc mq state UP group default qlen 1000</p>
+
<p>3: '''<span style="color:#FF0000">enP4p65s0</span>''': &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc mq state UP group default qlen 1000</p>
<p>link/ether 00:e0:4c:68:00:27 brd ff:ff:ff:ff:ff:ff</p>
+
:<p>link/ether 00:e0:4c:68:00:27 brd ff:ff:ff:ff:ff:ff</p>
<p>inet '''192.168.1.247'''/24 brd 192.168.1.255 scope global dynamic noprefixroute enP4p65s0</p>
+
:<p>inet '''<span style="color:#FF0000">192.168.1.247</span>'''/24 brd 192.168.1.255 scope global dynamic noprefixroute enP4p65s0</p>
<p>valid_lft 43179sec preferred_lft 43179sec</p>
+
::<p>valid_lft 43179sec preferred_lft 43179sec</p>
<p>inet6 fe80::62b5:dc5e:728e:39a3/64 scope link noprefixroute</p>
+
:<p>inet6 fe80::62b5:dc5e:728e:39a3/64 scope link noprefixroute</p>
<p>valid_lft forever preferred_lft forever</p>
+
::<p>valid_lft forever preferred_lft forever</p>
<p>'''When using ifconfig to view the IP address, if the following information is prompted, it is because sudo is not added. The correct command is: sudo ifconfig'''</p>
+
|}
 +
 
 +
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big><p>'''When using ifconfig to view the IP address, if the following information is prompted, it is because sudo is not added. The correct command is: sudo ifconfig'''</p></big>
 +
 
 
<p>orangepi@orangepi:~$ '''ifconfig'''</p>
 
<p>orangepi@orangepi:~$ '''ifconfig'''</p>
 
<p>Command 'ifconfig' is available in the following places</p>
 
<p>Command 'ifconfig' is available in the following places</p>
Line 3,249: Line 3,804:
 
<p>The command could not be located because '/sbin:/usr/sbin' is not included in the PATH environment variable.</p>
 
<p>The command could not be located because '/sbin:/usr/sbin' is not included in the PATH environment variable.</p>
 
<p>This is most likely caused by the lack of administrative privileges associated with your user account.</p>
 
<p>This is most likely caused by the lack of administrative privileges associated with your user account.</p>
<p>ifconfig: command not found</p></li></ol>
+
<p>ifconfig: command not found</p>
 +
|}
  
'''There are three ways to check the IP address after the development board starts:'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''There are three ways to check the IP address after the development board starts:'''
  
 
# '''Connect the HDMI display, then log in to the system and use the ip addr show command to view the IP address'''
 
# '''Connect the HDMI display, then log in to the system and use the ip addr show command to view the IP address'''
Line 3,257: Line 3,816:
 
# '''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:'''
 
# '''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;">
 
<ol style="list-style-type: upper-alpha;">
 
<li><p>'''First check whether the Linux system has started normally. If the three-color light on the development board is flashing, 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>'''First check whether the Linux system has started normally. If the three-color light on the development board is flashing, it is generally started normally. If only the red light is on, it means that the system has not started normally;'''</p></li>
Line 3,263: Line 3,821:
 
<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'''</p>
 
<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'''</p>
 
<p>'''assigned normally but cannot be seen in the router);'''</p></li>
 
<p>'''assigned normally but cannot be seen in the router);'''</p></li>
<li><p>'''If there is no router to replace, you can only connect to an HDMI display or use the debugging serial port to check the IP address.'''</p>
+
<li><p>'''If there is no router to replace, you can only connect to an HDMI display or use the debugging serial port to check the IP address.'''</p></li></ol>
<p>'''In addition, it should be noted that the development board DHCP automatically assigns an IP address without any settings.'''</p></li></ol>
+
<p>'''In addition, it should be noted that the development board DHCP automatically assigns an IP address without any settings.'''</p>
 
+
</big>
 +
|}
 +
</li></ol>
 
<!-- -->
 
<!-- -->
 
<ol start="4" style="list-style-type: decimal;">
 
<ol start="4" style="list-style-type: decimal;">
 
<li><p>The command to test the network connectivity is as follows, the '''ping''' command can be interrupted through the shortcut key of '''Ctrl+C'''</p>
 
<li><p>The command to test the network connectivity is as follows, the '''ping''' command can be interrupted through the shortcut key of '''Ctrl+C'''</p>
<p>orangepi@orangepi:~$ '''ping www.baidu.com -I enP4p65s0 #Test command for one of the network ports'''</p>
+
{| class="wikitable" style="width:800px;"
<p>orangepi@orangepi:~$ '''ping www.baidu.com -I enP3p49s0 #Test command of another network port'''</p>
+
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''ping www.baidu.com -I enP4p65s0 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #Test command for one of the network ports'''</p>
 +
<p>orangepi@orangepi:~$ '''ping www.baidu.com -I enP3p49s0 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #Test command of another network port'''</p>
 
<p>PING www.a.shifen.com (14.119.104.254) from 192.168.1.182 enP3p49s0: 56(84) bytes of data.</p>
 
<p>PING www.a.shifen.com (14.119.104.254) from 192.168.1.182 enP3p49s0: 56(84) bytes of data.</p>
 
<p>64 bytes from 14.119.104.254 (14.119.104.254): icmp_seq=1 ttl=56 time=6.26 ms</p>
 
<p>64 bytes from 14.119.104.254 (14.119.104.254): icmp_seq=1 ttl=56 time=6.26 ms</p>
Line 3,277: Line 3,840:
 
<p>--- www.a.shifen.com ping statistics ---</p>
 
<p>--- www.a.shifen.com ping statistics ---</p>
 
<p>6 packets transmitted, 6 received, 0% packet loss, time 5008ms</p>
 
<p>6 packets transmitted, 6 received, 0% packet loss, time 5008ms</p>
<p>rtt min/avg/max/mdev = 5.671/5.859/6.264/0.202 ms</p></li></ol>
+
<p>rtt min/avg/max/mdev = 5.671/5.859/6.264/0.202 ms</p>
 +
|}
 +
</li></ol>
  
 
<span id="wifi-connection-test"></span>
 
<span id="wifi-connection-test"></span>
 +
 
=== WIFI connection test ===
 
=== WIFI connection test ===
  
'''First of all, please note that there is no WIFI module on the Orange Pi 5 Plus development board, and an external PCIe network card or USB network card is required to use the WIFI function.'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''<span style="color:#FF0000">First of all, please note that there is no WIFI module on the Orange Pi 5 Plus development board, and an external PCIe network card or USB network card is required to use the WIFI function.</span>'''
  
'''For instructions on using the external PCIe network card, please refer to the section on how to use the PCIe WIFI6+Bluetooth module.'''
+
'''For instructions on using the external PCIe network card, please refer to the section on [[Orange Pi 5 Plus#How to use E-Key PCIe WIFI6+Bluetooth module|'''how to use the PCIe WIFI6+Bluetooth module''']].'''
  
'''For instructions on using the external USB network card, please refer to the USB wireless network card test section.'''
+
'''For instructions on using the external USB network card, please refer to [[Orange Pi 5 Plus#USB wireless network card test|'''the USB wireless network card test section''']].'''
  
'''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.'''
+
'''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>
 +
|}
  
 +
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''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>
 +
|}
 
<span id="the-server-image-connects-to-wifi-through-commands"></span>
 
<span id="the-server-image-connects-to-wifi-through-commands"></span>
 
==== The server image connects to WIFI through commands ====
 
==== The server image connects to WIFI through commands ====
  
'''When the development board is not connected to Ethernet, not connected to HDMI display, but only connected to the serial port, it is recommended to use the commands demonstrated in this section to connect to the WIFI network. Because nmtui can only display characters in some serial port software (such as minicom), and cannot display the graphical interface normally. Of course, if the development board is connected to an Ethernet or HDMI display, you can also use the commands demonstrated in this section to connect to the WIFI network.'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''When the development board is not connected to Ethernet, not connected to HDMI display, but only connected to the serial port, it is recommended to use the commands demonstrated in this section to connect to the WIFI network. Because nmtui can only display characters in some serial port software (such as minicom), and cannot display the graphical interface normally. Of course, if the development board is connected to an Ethernet or HDMI display, you can also use the commands demonstrated in this section to connect to the WIFI network.'''
 +
 
  
'''The commands demonstrated below are the default WIFI network device node name wlan0, but the node names of different WIFI modules will be different, please replace it with the actual node name you see, do not copy it.'''
+
'''<span style="color:#FF0000">The commands demonstrated below are the default WIFI network device node name wlan0, but the node names of different WIFI modules will be different, please replace it with the actual node name you see, do not copy it.</span>'''</big>
 +
|}
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>First log in to the linux system, there are the following three ways</p>
 
<li><p>First log in to the linux system, there are the following three ways</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li><p>If the development board is connected with a network cable, you &gt; can '''remotely log in to the Linux system through ssh'''</p></li>
+
<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 &gt; port, you can use the serial port terminal to log in to the &gt; Linux system</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 &gt; can log in to the linux system through the HDMI display &gt; terminal</p></li></ol>
+
<li><p>If the development board is connected to the HDMI display, you can log in to the linux system through the HDMI display terminal</p></li></ol>
</li></ol>
+
</li>
 
 
<!-- -->
 
<ol style="list-style-type: decimal;">
 
 
<li><p>First use the '''nmcli dev wifi''' command to scan the surrounding WIFI hotspots</p>
 
<li><p>First use the '''nmcli dev wifi''' command to scan the surrounding WIFI hotspots</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''nmcli dev wifi'''</p>
 
<p>orangepi@orangepi:~$ '''nmcli dev wifi'''</p>
 +
|}
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image202.png|575x250px|选区_011]]
+
[[File:plus5-img202.png]]
  
 
</div></li>
 
</div></li>
Line 3,317: Line 3,898:
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
 
<li><p>'''wifi_name''' needs to be replaced with the</p></li>
 
<li><p>'''wifi_name''' needs to be replaced with the</p></li>
<li><p>'''wifi_passwd''' needs to be replaced with the password of the &gt; WIFI hotspot you want to connect to</p>
+
<li><p>'''wifi_passwd''' needs to be replaced with the password of the WIFI hotspot you want to connect to</p>
<p>orangepi@orangepi:~$ '''nmcli dev wifi connect wifi_name password wifi_passwd'''</p>
+
{| class="wikitable" style="width:800px;"
<p>Device 'wlan0' successfully activated with 'cf937f88-ca1e-4411-bb50-61f402eef293'.</p></li></ol>
+
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''nmcli dev wifi connect <span style="color:#FF0000">wifi_name</span> password <span style="color:#FF0000">wifi_passwd</span>'''</p>
 +
<p>Device 'wlan0' successfully activated with 'cf937f88-ca1e-4411-bb50-61f402eef293'.</p>
 +
|}
 +
</li></ol>
 
</li>
 
</li>
 
<li><p>Through the '''ip addr show wlan0''' command, you can view the IP address of wifi</p>
 
<li><p>Through the '''ip addr show wlan0''' command, you can view the IP address of wifi</p>
<p>'''The device node names of WIFI are not necessarily all wlan0, please refer to what you actually see.'''</p>
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big><p>'''The device node names of WIFI are not necessarily all wlan0, please refer to what you actually see.'''</p></big>
 +
|}
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''ip addr show wlan0'''</p>
 
<p>orangepi@orangepi:~$ '''ip addr show wlan0'''</p>
 
<p>11: wlan0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast state UP group default qlen 1000</p>
 
<p>11: wlan0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast state UP group default qlen 1000</p>
<p>link/ether 23:8c:d6:ae:76:bb brd ff:ff:ff:ff:ff:ff</p>
+
:<p>link/ether 23:8c:d6:ae:76:bb brd ff:ff:ff:ff:ff:ff</p>
<p>inet '''192.168.1.11'''/24 brd 192.168.1.255 scope global dynamic noprefixroute wlan0</p>
+
:<p>inet '''<span style="color:#FF0000">192.168.1.11</span>'''/24 brd 192.168.1.255 scope global dynamic noprefixroute wlan0</p>
<p>valid_lft 259192sec preferred_lft 259192sec</p>
+
::<p>valid_lft 259192sec preferred_lft 259192sec</p>
<p>inet6 240e:3b7:3240:c3a0:c401:a445:5002:ccdd/64 scope global dynamic noprefixroute</p>
+
:<p>inet6 240e:3b7:3240:c3a0:c401:a445:5002:ccdd/64 scope global dynamic noprefixroute</p>
<p>valid_lft 259192sec preferred_lft 172792sec</p>
+
::<p>valid_lft 259192sec preferred_lft 172792sec</p>
<p>inet6 fe80::42f1:6019:a80e:4c31/64 scope link noprefixroute</p>
+
:<p>inet6 fe80::42f1:6019:a80e:4c31/64 scope link noprefixroute</p>
<p>valid_lft forever preferred_lft forever</p></li>
+
::<p>valid_lft forever preferred_lft forever</p>
 +
|}
 +
</li>
 
<li><p>Use the '''ping''' command to test the connectivity of the wifi network, and the '''ping''' command can be interrupted through the shortcut key '''Ctrl+C'''</p>
 
<li><p>Use the '''ping''' command to test the connectivity of the wifi network, and the '''ping''' command can be interrupted through the shortcut key '''Ctrl+C'''</p>
<p>'''The device node names of WIFI are not necessarily all wlan0, please refer to what you actually see.'''</p>
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
<p>orangepi@orangepi:~$ '''ping www.orangepi.org -I wlan0'''</p>
+
|-
<p>PING www.orangepi.org (182.92.236.130) from 192.168.1.49 wlan0: 56(84) bytes of data.</p>
+
|
<p>64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=1 ttl=52 time=43.5 ms</p>
+
<big><p>'''The device node names of WIFI are not necessarily all wlan0, please refer to what you actually see.'''</p></big>
 +
|}
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''ping www.orangepi.org -I wlan0'''</p>
 +
<p>PING www.orangepi.org (182.92.236.130) from 192.168.1.49 wlan0: 56(84) bytes of data.</p>
 +
<p>64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=1 ttl=52 time=43.5 ms</p>
 
<p>64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=2 ttl=52 time=41.3 ms</p>
 
<p>64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=2 ttl=52 time=41.3 ms</p>
 
<p>64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=3 ttl=52 time=44.9 ms</p>
 
<p>64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=3 ttl=52 time=44.9 ms</p>
Line 3,344: Line 3,946:
 
<p>--- www.orangepi.org ping statistics ---</p>
 
<p>--- www.orangepi.org ping statistics ---</p>
 
<p>5 packets transmitted, 5 received, 0% packet loss, time 4006ms</p>
 
<p>5 packets transmitted, 5 received, 0% packet loss, time 4006ms</p>
<p>rtt min/avg/max/mdev = 41.321/44.864/48.834/2.484 ms</p></li></ol>
+
<p>rtt min/avg/max/mdev = 41.321/44.864/48.834/2.484 ms</p>
 +
|}
 +
</li></ol>
  
 
<span id="the-server-image-connects-to-wifi-in-a-graphical-way"></span>
 
<span id="the-server-image-connects-to-wifi-in-a-graphical-way"></span>
 +
 
==== The server image connects to WIFI in a graphical way ====
 
==== The server image connects to WIFI in a graphical way ====
  
Line 3,352: Line 3,957:
 
<li><p>First log in to the linux system, there are the following three ways</p>
 
<li><p>First log in to the linux system, there are the following three ways</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li><p>If the development board is connected with a network cable, you &gt; can '''remotely log in to the Linux system through ssh'''</p></li>
+
<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 &gt; port, you can use the serial port terminal to log in to the &gt; linux system (please use MobaXterm for the serial port &gt; software, and minicom cannot display the graphical interface)</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 minicom cannot display the graphical interface)</p></li>
<li><p>If the development board is connected to the HDMI display, you &gt; can log in to the linux system through the terminal displayed &gt; on the HDMI</p></li></ol>
+
<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>
 
<li><p>Then enter the nmtui command in the command line to open the wifi connection interface</p>
 
<li><p>Then enter the nmtui command in the command line to open the wifi connection interface</p>
<p>orangepi@orangepi:~$ '''nmtui'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''nmtui'''</p>
 +
|}
 +
</li>
 
<li><p>Enter the nmtui command to open the interface as shown below</p>
 
<li><p>Enter the nmtui command to open the interface as shown below</p>
<p>[[File:media/image203.png|345x215px]]</p></li>
+
<p>[[File:plus5-img203.png]]</p></li>
 
<li><p>Select '''Activate a connect''' and press Enter</p>
 
<li><p>Select '''Activate a connect''' and press Enter</p>
<p>[[File:media/image204.png|349x216px]]</p></li>
+
<p>[[File:plus5-img204.png]]</p></li>
 
<li><p>Then you can see all the searched WIFI hotspots</p>
 
<li><p>Then you can see all the searched WIFI hotspots</p>
<p>[[File:media/image205.png|358x226px]]</p></li>
+
<p>[[File:plus5-img205.png]]</p></li>
 
<li><p>Select the WIFI hotspot you want to connect to, then use the Tab key to position the cursor on '''Activate''' and press Enter</p>
 
<li><p>Select the WIFI hotspot you want to connect to, then use the Tab key to position the cursor on '''Activate''' and press Enter</p>
<p>[[File:media/image206.png|357x226px]]</p></li>
+
<p>[[File:plus5-img206.png]]</p></li>
 
<li><p>Then a dialog box for entering a password will pop up, enter the corresponding password in '''Password''' and press Enter to start connecting to WIFI</p>
 
<li><p>Then a dialog box for entering a password will pop up, enter the corresponding password in '''Password''' and press Enter to start connecting to WIFI</p>
<p>[[File:media/image207.png|352x225px]]</p></li>
+
<p>[[File:plus5-img207.png]]</p></li>
 
<li><p>After the WIFI connection is successful, a &quot;*&quot; will be displayed in front of the connected WIFI name</p>
 
<li><p>After the WIFI connection is successful, a &quot;*&quot; will be displayed in front of the connected WIFI name</p>
<p>[[File:media/image208.png|349x223px]]</p></li>
+
<p>[[File:plus5-img208.png]]</p></li>
 
<li><p>You can view the IP address of wifi through the '''ip addr show wlan0''' command</p>
 
<li><p>You can view the IP address of wifi through the '''ip addr show wlan0''' command</p>
<p>'''The device node names of WIFI are not necessarily all wlan0, please refer to what you actually see.'''</p>
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big><p>'''The device node names of WIFI are not necessarily all wlan0, please refer to what you actually see.'''</p></big>
 +
|}
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''ip addr show wlan0'''</p>
 
<p>orangepi@orangepi:~$ '''ip addr show wlan0'''</p>
 
<p>11: wlan0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast state UP group default qlen 1000</p>
 
<p>11: wlan0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast state UP group default qlen 1000</p>
<p>link/ether 24:8c:d3:aa:76:bb brd ff:ff:ff:ff:ff:ff</p>
+
:<p>link/ether 24:8c:d3:aa:76:bb brd ff:ff:ff:ff:ff:ff</p>
<p>inet '''192.168.1.11'''/24 brd 192.168.1.255 scope global dynamic noprefixroute wlan0</p>
+
:<p>inet '''<span style="color:#FF0000">192.168.1.11</span>'''/24 brd 192.168.1.255 scope global dynamic noprefixroute wlan0</p>
<p>valid_lft 259069sec preferred_lft 259069sec</p>
+
::<p>valid_lft 259069sec preferred_lft 259069sec</p>
<p>inet6 240e:3b7:3240:c4a0:c401:a445:5002:ccdd/64 scope global dynamic</p>
+
:<p>inet6 240e:3b7:3240:c4a0:c401:a445:5002:ccdd/64 scope global dynamic noprefixroute</p>
<p>noprefixroute</p>
+
::<p>valid_lft 259071sec preferred_lft 172671sec</p>
<p>valid_lft 259071sec preferred_lft 172671sec</p>
+
:<p>inet6 fe80::42f1:6019:a80e:4c31/64 scope link noprefixroute</p>
<p>inet6 fe80::42f1:6019:a80e:4c31/64 scope link noprefixroute</p>
+
::<p>valid_lft forever preferred_lft forever</p>
<p>valid_lft forever preferred_lft forever</p></li>
+
|}
 +
</li>
 
<li><p>Use the '''ping''' command to test the connectivity of the wifi network, and the '''ping''' command can be interrupted through the shortcut key '''Ctrl+C'''</p>
 
<li><p>Use the '''ping''' command to test the connectivity of the wifi network, and the '''ping''' command can be interrupted through the shortcut key '''Ctrl+C'''</p>
<p>'''The device node names of WIFI are not necessarily all wlan0, please refer to what you actually see.'''</p>
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big><p>'''The device node names of WIFI are not necessarily all wlan0, please refer to what you actually see.'''</p></big>
 +
|}
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''ping www.orangepi.org -I wlan0'''</p>
 
<p>orangepi@orangepi:~$ '''ping www.orangepi.org -I wlan0'''</p>
 
<p>PING www.orangepi.org (182.92.236.130) from 192.168.1.49 wlan0: 56(84) bytes of data.</p>
 
<p>PING www.orangepi.org (182.92.236.130) from 192.168.1.49 wlan0: 56(84) bytes of data.</p>
Line 3,394: Line 4,019:
 
<p>--- www.orangepi.org ping statistics ---</p>
 
<p>--- www.orangepi.org ping statistics ---</p>
 
<p>5 packets transmitted, 5 received, 0% packet loss, time 4006ms</p>
 
<p>5 packets transmitted, 5 received, 0% packet loss, time 4006ms</p>
<p>rtt min/avg/max/mdev = 41.321/44.864/48.834/2.484 ms</p></li></ol>
+
<p>rtt min/avg/max/mdev = 41.321/44.864/48.834/2.484 ms</p>
 +
|}
 +
</li></ol>
  
 
<span id="test-method-of-desktop-image"></span>
 
<span id="test-method-of-desktop-image"></span>
 +
 
==== Test method of desktop image ====
 
==== Test method of desktop image ====
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>Click the network configuration icon in the upper right corner of the desktop (please do not connect the network cable when testing WIFI)</p>
 
<li><p>Click the network configuration icon in the upper right corner of the desktop (please do not connect the network cable when testing WIFI)</p>
<p>[[File:media/image209.png|377x166px]]</p></li>
+
<p>[[File:plus5-img209.png]]</p></li>
 
<li><p>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</p>
 
<li><p>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</p>
<p>[[File:media/image210.png|576x353px]]</p></li>
+
<p>[[File:plus5-img210.png]]</p></li>
 
<li><p>Then enter the password of the WIFI hotspot, and then click '''Connect''' to start connecting to WIFI</p>
 
<li><p>Then enter the password of the WIFI hotspot, and then click '''Connect''' to start connecting to WIFI</p>
<p>[[File:media/image211.png|320x163px]]</p></li>
+
<p>[[File:plus5-img211.png]]</p></li>
 
<li><p>After connecting to WIFI, you can open the browser to check whether you can access the Internet. The entrance of the browser is shown in the figure below</p>
 
<li><p>After connecting to WIFI, you can open the browser to check whether you can access the Internet. The entrance of the browser is shown in the figure below</p>
<p>[[File:media/image212.png|576x308px]]</p></li>
+
<p>[[File:plus5-img212.png]]</p></li>
 
<li><p>If you can open other web pages after opening the browser, it means that the WIFI connection is normal</p>
 
<li><p>If you can open other web pages after opening the browser, it means that the WIFI connection is normal</p>
<p>[[File:media/image213.png|574x222px]]</p></li></ol>
+
<p>[[File:plus5-img213.png]]</p></li></ol>
  
 
<span id="how-to-set-a-static-ip-address"></span>
 
<span id="how-to-set-a-static-ip-address"></span>
 +
 
=== How to set a static IP address ===
 
=== How to set a static IP address ===
  
'''Please do not set a static IP address by modifying the /etc/network/interfaces configuration file.'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''Please do not set a static IP address by modifying the /etc/network/interfaces configuration file.'''</big>
 +
|}
  
 
<span id="use-the-nmtui-command-to-set-a-static-ip-address"></span>
 
<span id="use-the-nmtui-command-to-set-a-static-ip-address"></span>
Line 3,421: Line 4,054:
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>First run the '''nmtui''' command</p>
 
<li><p>First run the '''nmtui''' command</p>
<p>orangepi@orangepi:~$ '''nmtui'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''nmtui'''</p>
 +
|}
 +
</li>
 
<li><p>Then select '''Edit a connection''' and press Enter</p>
 
<li><p>Then select '''Edit a connection''' and press Enter</p>
<p>[[File:media/image214.png|234x234px]]</p></li>
+
<p>[[File:plus5-img214.png]]</p></li>
 
<li><p>Then select the network interface that needs to set a static IP address, such as setting the static IP address of the Ethernet interface to select '''Wired connection 1''' or '''Wired connection 2'''</p>
 
<li><p>Then select the network interface that needs to set a static IP address, such as setting the static IP address of the Ethernet interface to select '''Wired connection 1''' or '''Wired connection 2'''</p>
<p>[[File:media/image215.png|306x121px]]</p></li>
+
<p>[[File:plus5-img215.png]]</p></li>
 
<li><p>Then select '''Edit''' via the '''Tab''' key and press the Enter key</p>
 
<li><p>Then select '''Edit''' via the '''Tab''' key and press the Enter key</p>
<p>[[File:media/image216.png|356x142px]]</p></li>
+
<p>[[File:plus5-img216.png]]</p></li>
 
<li><p>Then use the Tab key to move the cursor to the &lt;'''Automatic'''&gt; position shown in the figure below to configure IPv4</p>
 
<li><p>Then use the Tab key to move the cursor to the &lt;'''Automatic'''&gt; position shown in the figure below to configure IPv4</p>
<p>[[File:media/image217.png|576x215px]]</p></li>
+
<p>[[File:plus5-img217.png]]</p></li>
 
<li><p>Then press Enter, select '''Manual''' through the up and down arrow keys, and press Enter to confirm</p>
 
<li><p>Then press Enter, select '''Manual''' through the up and down arrow keys, and press Enter to confirm</p>
<p>[[File:media/image218.png|575x212px]]</p></li>
+
<p>[[File:plus5-img218.png]]</p></li>
 
<li><p>The display after selection is shown in the figure below</p>
 
<li><p>The display after selection is shown in the figure below</p>
<p>[[File:media/image219.png|575x215px]]</p></li>
+
<p>[[File:plus5-img219.png]]</p></li>
 
<li><p>Then move the cursor to &lt;'''Show'''&gt; via the Tab key</p>
 
<li><p>Then move the cursor to &lt;'''Show'''&gt; via the Tab key</p>
<p>[[File:media/image220.png|576x215px]]</p></li>
+
<p>[[File:plus5-img220.png]]</p></li>
 
<li><p>Then press Enter, and the following setting interface will pop up after entering</p>
 
<li><p>Then press Enter, and the following setting interface will pop up after entering</p>
<p>[[File:media/image221.png|576x386px]]</p></li>
+
<p>[[File:plus5-img221.png]]</p></li>
<li><p>Then you can set the IP address (Addresses), gateway (Gateway) and DNS server address in the position shown in the figure below (there are many other setting options in it, please explore by yourself), '''please set according to your specific needs, The values set in the image below are just an example'''</p>
+
<li><p>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), '''<span style="color:#FF0000">please set according to your specific needs, The values set in the image below are just an example</span>'''</p>
<p>[[File:media/image222.png|575x217px]]</p></li>
+
<p>[[File:plus5-img222.png]]</p></li>
 
<li><p>After setting, move the cursor to '''&lt;OK&gt;''' in the lower right corner, and press Enter to confirm</p>
 
<li><p>After setting, move the cursor to '''&lt;OK&gt;''' in the lower right corner, and press Enter to confirm</p>
<p>[[File:media/image223.png|575x114px]]</p></li>
+
<p>[[File:plus5-img223.png]]</p></li>
 
<li><p>Then click '''&lt;Back&gt;''' to return to the previous selection interface</p>
 
<li><p>Then click '''&lt;Back&gt;''' to return to the previous selection interface</p>
<p>[[File:media/image224.png|278x341px]]</p></li>
+
<p>[[File:plus5-img224.png]]</p></li>
 
<li><p>Then select '''Activate a connection''', then move the cursor to '''&lt;OK&gt;''', and finally click Enter</p>
 
<li><p>Then select '''Activate a connection''', then move the cursor to '''&lt;OK&gt;''', and finally click Enter</p>
<p>[[File:media/image225.png|226x224px]]</p></li>
+
<p>[[File:plus5-img225.png]]</p></li>
 
<li><p>Then select the network interface that needs to be set, such as '''Wired connection 2''', then move the cursor to '''&lt;Deactivate&gt;''', and press the Enter key to disable '''Wired connection 2'''</p>
 
<li><p>Then select the network interface that needs to be set, such as '''Wired connection 2''', then move the cursor to '''&lt;Deactivate&gt;''', and press the Enter key to disable '''Wired connection 2'''</p>
<p>[[File:media/image226.png|417x159px]]</p></li>
+
<p>[[File:plus5-img226.png]]</p></li>
 
<li><p>Then re-select and enable '''Wired connection 2''', so that the static IP set earlier will take effect</p>
 
<li><p>Then re-select and enable '''Wired connection 2''', so that the static IP set earlier will take effect</p>
<p>[[File:media/image227.png|414x160px]]</p></li>
+
<p>[[File:plus5-img227.png]]</p></li>
 
<li><p>Then you can exit nmtui through the '''&lt;Back&gt;''' and '''Quit''' buttons</p>
 
<li><p>Then you can exit nmtui through the '''&lt;Back&gt;''' and '''Quit''' buttons</p>
<p>[[File:media/image228.png|260x224px]] [[File:media/image229.png|225x225px]]</p></li>
+
<p>[[File:plus5-img228.png]] [[File:plus5-img229.png]]</p></li>
 
<li><p>Then through '''ip addr show,''' you can see that the IP address of the network port has changed to the static IP address set earlier</p>
 
<li><p>Then through '''ip addr show,''' you can see that the IP address of the network port has changed to the static IP address set earlier</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''ip addr show enP4p65s0'''</p>
 
<p>orangepi@orangepi:~$ '''ip addr show enP4p65s0'''</p>
 
<p>3: eth0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast state UP group default qlen 1000</p>
 
<p>3: eth0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast state UP group default qlen 1000</p>
<p>link/ether 5e:ac:14:a5:92:b3 brd ff:ff:ff:ff:ff:ff</p>
+
:<p>link/ether 5e:ac:14:a5:92:b3 brd ff:ff:ff:ff:ff:ff</p>
<p>inet '''192.168.1.100'''/24 brd 192.168.1.255 scope global noprefixroute enP4p65s0</p>
+
:<p>inet '''<span style="color:#FF0000">192.168.1.100</span>'''/24 brd 192.168.1.255 scope global noprefixroute enP4p65s0</p>
<p>valid_lft forever preferred_lft forever</p>
+
::<p>valid_lft forever preferred_lft forever</p>
<p>inet6 241e:3b8:3240:c3a0:e269:8305:dc08:135e/64 scope global dynamic noprefixroute</p>
+
:<p>inet6 241e:3b8:3240:c3a0:e269:8305:dc08:135e/64 scope global dynamic noprefixroute</p>
<p>valid_lft 259149sec preferred_lft 172749sec</p>
+
::<p>valid_lft 259149sec preferred_lft 172749sec</p>
<p>inet6 fe80::957d:bbbe:4928:3604/64 scope link noprefixroute</p>
+
:<p>inet6 fe80::957d:bbbe:4928:3604/64 scope link noprefixroute</p>
<p>valid_lft forever preferred_lft forever</p></li>
+
::<p>valid_lft forever preferred_lft forever</p>
 +
|}
 +
</li>
 
<li><p>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'''</p>
 
<li><p>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'''</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''ping 192.168.1.47 -I enP4p65s0'''</p>
 
<p>orangepi@orangepi:~$ '''ping 192.168.1.47 -I enP4p65s0'''</p>
 
<p>PING 192.168.1.47 (192.168.1.47) from 192.168.1.188 enP4p65s0: 56(84) bytes of data.</p>
 
<p>PING 192.168.1.47 (192.168.1.47) from 192.168.1.188 enP4p65s0: 56(84) bytes of data.</p>
Line 3,470: Line 4,116:
 
<p>--- 192.168.1.47 ping statistics ---</p>
 
<p>--- 192.168.1.47 ping statistics ---</p>
 
<p>5 packets transmitted, 5 received, 0% packet loss, time 4042ms</p>
 
<p>5 packets transmitted, 5 received, 0% packet loss, time 4042ms</p>
<p>rtt min/avg/max/mdev = 0.233/0.262/0.275/0.015 ms</p></li></ol>
+
<p>rtt min/avg/max/mdev = 0.233/0.262/0.275/0.015 ms</p>
 +
|}
 +
</li></ol>
  
 
<span id="use-the-nmcli-command-to-set-a-static-ip-address"></span>
 
<span id="use-the-nmcli-command-to-set-a-static-ip-address"></span>
 +
 
==== Use the nmcli command to set a static IP address ====
 
==== Use the nmcli command to set a static IP address ====
  
Line 3,478: Line 4,127:
 
<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>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, '''Wired connection 1''' and '''Wired connection 2''' are the names of the Ethernet interfaces</p>
 
<li><p>Then use the '''nmcli con show''' command to view the name of the network device, as shown below, '''Wired connection 1''' and '''Wired connection 2''' are the names of the Ethernet interfaces</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''nmcli con show'''</p>
 
<p>orangepi@orangepi:~$ '''nmcli con show'''</p>
<p>NAME UUID TYPE DEVICE</p>
+
<p>NAME &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UUID &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TYPE &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DEVICE</p>
<p>Wired connection 1 c043c817-1156-3b72-a559-9a8cd642bf70 ethernet enP3p49s0</p>
+
<p>Wired connection 1 &nbsp;&nbsp;&nbsp;&nbsp; c043c817-1156-3b72-a559-9a8cd642bf70 &nbsp;&nbsp;&nbsp;&nbsp; ethernet &nbsp;&nbsp;&nbsp;&nbsp; enP3p49s0</p>
<p>Wired connection 2 6f74598a-ccc6-358b-be05-87eaf34df930 ethernet enP4p65s0</p></li>
+
<p>Wired connection 2 &nbsp;&nbsp;&nbsp;&nbsp; 6f74598a-ccc6-358b-be05-87eaf34df930 &nbsp;&nbsp;&nbsp;&nbsp; ethernet &nbsp;&nbsp;&nbsp;&nbsp; enP4p65s0</p>
 +
|}
 +
</li>
 
<li><p>Then enter the following command, where</p>
 
<li><p>Then enter the following command, where</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li><p>'''&quot;Wired connection 1&quot;''' means to set the static IP address of &gt; the Ethernet port. If you need to set the static IP address of &gt; other network ports, please modify it to the name &gt; corresponding to the corresponding network interface (you can &gt; get it through the '''nmcli con show''' command)</p></li>
+
<li><p>'''&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 other network ports, please modify it to the name corresponding to the corresponding network interface (you can get it through the '''nmcli con show''' command)</p></li>
<li><p>'''ipv4.addresses''' is followed by the static IP address to be &gt; set, which can be modified to the value you want to set</p></li>
+
<li><p>'''ipv4.addresses''' is followed by the static IP address to be set, which can be modified to the value you want to set</p></li>
 
<li><p>'''ipv4.gateway''' represents the address of the gateway</p>
 
<li><p>'''ipv4.gateway''' represents the address of the gateway</p>
<p>orangepi@orangepi:~$ '''nmcli con mod &quot;Wired connection 1&quot; \'''</p>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''nmcli con mod &quot;Wired connection 1&quot; \'''</p>
 
<p>'''ipv4.addresses &quot;192.168.1.110&quot; \'''</p>
 
<p>'''ipv4.addresses &quot;192.168.1.110&quot; \'''</p>
 
<p>'''ipv4.gateway &quot;192.168.1.1&quot; \'''</p>
 
<p>'''ipv4.gateway &quot;192.168.1.1&quot; \'''</p>
 
<p>'''ipv4.dns &quot;8.8.8.8&quot; \'''</p>
 
<p>'''ipv4.dns &quot;8.8.8.8&quot; \'''</p>
<p>'''ipv4.method &quot;manual&quot;'''</p></li></ol>
+
<p>'''ipv4.method &quot;manual&quot;'''</p>
 +
|}
 +
</li></ol>
 
</li>
 
</li>
 
<li><p>Then restart the linux system</p>
 
<li><p>Then restart the linux system</p>
<p>orangepi@orangepi:~$ '''sudo reboot'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''sudo reboot'''</p>
 +
|}
 +
</li>
 
<li><p>Then re-enter the linux system and use the '''ip addr show''' command to see that the IP address has been set to the desired value</p>
 
<li><p>Then re-enter the linux system and use the '''ip addr show''' command to see that the IP address has been set to the desired value</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''ip addr show'''</p>
 
<p>orangepi@orangepi:~$ '''ip addr show'''</p>
 
<p>2: enP3p49s0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc mq state UP group default qlen 1000</p>
 
<p>2: enP3p49s0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc mq state UP group default qlen 1000</p>
<p>link/ether 00:e0:4c:68:00:26 brd ff:ff:ff:ff:ff:ff</p>
+
:<p>link/ether 00:e0:4c:68:00:26 brd ff:ff:ff:ff:ff:ff</p>
<p>inet '''192.168.1.110'''/32 scope global noprefixroute enP3p49s0</p>
+
:<p>inet '''<span style="color:#FF0000">192.168.1.110</span>'''/32 scope global noprefixroute enP3p49s0</p>
<p>valid_lft forever preferred_lft forever</p>
+
::<p>valid_lft forever preferred_lft forever</p>
<p>inet6 fe80::9005:95ac:b9c0:2beb/64 scope link noprefixroute</p>
+
:<p>inet6 fe80::9005:95ac:b9c0:2beb/64 scope link noprefixroute</p>
<p>valid_lft forever preferred_lft forever</p></li></ol>
+
::<p>valid_lft forever preferred_lft forever</p>
 +
|}
 +
</li></ol>
  
 
<span id="how-to-use-e-key-pcie-wifi6bluetooth-module"></span>
 
<span id="how-to-use-e-key-pcie-wifi6bluetooth-module"></span>
 +
 
== How to use E-Key PCIe WIFI6+Bluetooth module ==
 
== How to use E-Key PCIe WIFI6+Bluetooth module ==
  
 
# First you need to buy a PCIe WIFI6+Bluetooth module
 
# First you need to buy a PCIe WIFI6+Bluetooth module
  
{| class="wikitable"
+
::{| class="wikitable" style="width:800px;"
 
|-
 
|-
 
| ''' S/N'''
 
| ''' S/N'''
Line 3,521: Line 4,191:
 
'''(PCIE+USB port)'''
 
'''(PCIE+USB port)'''
  
| [[File:media/image230.p%20ng]]
+
| [[File:plus5-img230.png]]
| '''Debian'''
+
| '''<span style="color:#FF0000">Debian</span>'''
  
'''Ubuntu'''
+
'''<span style="color:#FF0000">Ubuntu</span>'''
  
 
'''OpenWRT'''
 
'''OpenWRT'''
Line 3,536: Line 4,206:
 
'''(PCIE+USB port)'''
 
'''(PCIE+USB port)'''
  
| [[File:media%20/image231.png]]{w idth=“1.06875in” height=“1.45in”}
+
| [[File:plus5-img231.png]]
| '''Debian'''
+
| '''<span style="color:#FF0000">Debian</span>'''
  
'''Ubuntu'''
+
'''<span style="color:#FF0000">Ubuntu</span>'''
  
 
'''OpenWRT'''
 
'''OpenWRT'''
Line 3,551: Line 4,221:
 
'''(PCIE+USB port)'''
 
'''(PCIE+USB port)'''
  
| [[File:media/image232.p%20ng]]
+
| [[File:plus5-img232.png]]
| '''Debian'''
+
| '''<span style="color:#FF0000">Debian</span>'''
  
'''Ubuntu'''
+
'''<span style="color:#FF0000">Ubuntu</span>'''
  
 
'''Android12'''
 
'''Android12'''
Line 3,566: Line 4,236:
 
<ol start="2" style="list-style-type: decimal;">
 
<ol start="2" style="list-style-type: decimal;">
 
<li><p>Then insert the module into the M.2 E-Key interface of the development board and fix it. The position is shown in the figure below:</p>
 
<li><p>Then insert the module into the M.2 E-Key interface of the development board and fix it. The position is shown in the figure below:</p>
<p>[[File:media/image233.png|296x133px]]</p></li>
+
<p>[[File:plus5-img233.png]]</p></li>
<li><p>Then open the configuration of the WIFI module in the Linux system, the steps are as follows:</p>
+
<li><p>Then use the '''lspci''' command, if you can see the information of the WIFI module, it means that the module is in good contact</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li><p>First run '''orangepi-config''', normal users remember to add &gt; '''sudo''' permission</p>
+
<li><p>AX200 displays as follows</p>
<p>orangepi@orangepi:~$ '''sudo orangepi-config'''</p></li>
+
{| class="wikitable" style="width:800px;"
<li><p>Then select '''System'''</p>
+
|-
<p>[[File:media/image234.png|374x173px]]</p></li>
+
|
<li><p>Then select '''Hardware'''</p>
+
<p>orangepi@orangepi:~$ '''lspci | grep "Network"'''</p>
<p>[[File:media/image235.png|373x162px]]</p></li>
+
<p>0002:21:00.0 Network controller: Intel Corporation Wi-Fi 6 AX200 (rev 1a)</p>
<li><p>Then use the arrow keys of the keyboard to navigate to the &gt; position shown in the figure below, and then use the space to &gt; select the '''wifi-pcie''' configuration</p>
+
|}
<p>[[File:media/image236.png|298x40px]]</p></li>
+
</li>
<li><p>Then select '''&lt;Save&gt;''' to save</p>
+
<li><p>AX210 displays as follows</p>
<p>[[File:media/image237.png|297x80px]]</p></li>
+
{| class="wikitable" style="width:800px;"
<li><p>Then select '''&lt;Back&gt;'''</p>
+
|-
<p>[[File:media/image238.png|255x71px]]</p></li>
+
|
<li><p>Then select '''&lt;Reboot&gt;''' to restart the system to make the &gt; configuration take effect</p>
+
<p>orangepi@orangepi:~$ '''lspci | grep "Network"'''</p>
<p>[[File:media/image239.png|256x113px]]</p></li></ol>
+
<p>0002:21:00.0 Network controller: Intel Corporation Wi-Fi 6 AX210/AX211/AX411 160MHz (rev 1a)</p>
 +
|}
 +
</li>
 +
<li><p>RTL8852 display as shown below</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''lspci | grep "Network"'''</p>
 +
<p>0002:21:00.0 Network controller: Intel Corporation Wi-Fi 6 AX200 (rev 1a)</p>
 +
|}
 +
</li></ol>
 +
</li>
 +
<li><p>Then use the following command to see that there will be an additional WIFI device node</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>[orangepi@orangepi ~]$ '''ip a'''</p>
 +
|}
 
</li>
 
</li>
<li><p>If everything is normal after restarting the system, use the following command to see that there will be an additional WIFI device node. If you can't see it, please check if there is any problem with the previous configuration</p>
+
<li><p>For the WIFI connection and test method, please refer to the [[Orange Pi 5 Plus#WIFI connection test method|'''WIFI connection test section''']], and will not repeat them here.</p></li>
<p>[orangepi@orangepi ~]$ '''ip addr show'''</p></li>
+
<li><p>For the test method of Bluetooth, please refer to the section on [[Orange Pi 5 Plus#How to use E-Key PCIe WIFI6+Bluetooth module|'''Bluetooth usage''']], so I won’t go into details here.</p></li></ol>
<li><p>For the WIFI connection and test method, please refer to the '''WIFI connection test section''', and will not repeat them here.</p></li>
 
<li><p>For the test method of Bluetooth, please refer to the section on '''Bluetooth usage''', so I won’t go into details here.</p></li></ol>
 
  
 
<span id="ssh-remote-login-development-board"></span>
 
<span id="ssh-remote-login-development-board"></span>
 +
 
== SSH remote login development board ==
 
== SSH remote login development board ==
  
'''Linux systems enable ssh remote login by default and allow the root user to log in to the system. Before logging in with ssh, you first need to ensure that the Ethernet or wifi network is connected, and then use the ip addr command or check the router to obtain the IP address of the development board.'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''Linux systems enable ssh remote login by default and allow the root user to log in to the system. 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.'''</big>
 +
|}
 +
 
  
 
<span id="ssh-remote-login-development-board-under-ubuntu"></span>
 
<span id="ssh-remote-login-development-board-under-ubuntu"></span>
Line 3,600: Line 4,291:
 
# Then you can remotely log in to the linux system through the ssh command
 
# Then you can remotely log in to the linux system through the ssh command
  
 +
::{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
test@test:~$ '''ssh [mailto:root@192.168.1.36 root@192.168.1.]xxx''' (Need to be replaced with the IP address of the development board)
 
test@test:~$ '''ssh [mailto:root@192.168.1.36 root@192.168.1.]xxx''' (Need to be replaced with the IP address of the development board)
  
 
root@192.168.1.xx's password: (Enter the password here, the default password is orangepi)
 
root@192.168.1.xx's password: (Enter the password here, the default password is orangepi)
 +
|}
  
'''Note that when entering the password, the specific content of the entered password will not be displayed on the screen, please do not think that there is any fault, just press Enter after inputting.'''
+
::{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''Note that when entering the password, <span style="color:#FF0000">the specific content of the entered password will not be displayed on the screen</span>, please do not think that there is any fault, just press Enter after inputting.'''
  
'''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.'''
+
'''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.'''</big>
 +
|}
  
 
<ol start="3" style="list-style-type: decimal;">
 
<ol start="3" style="list-style-type: decimal;">
Line 3,612: Line 4,311:
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image240.png|437x262px|953iring_001]]
+
[[File:plus5-img240.png]]
  
 
</div>
 
</div>
<p>'''If ssh fails to log in to the linux system normally, 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:'''</p></li></ol>
+
 
 +
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big><p>'''If ssh fails to log in to the linux system normally, 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:'''</p></big>
 +
 
  
 
root@orangepi:~# '''reset_ssh.sh'''
 
root@orangepi:~# '''reset_ssh.sh'''
  
'''If it still doesn't work, try to reset the system.'''
 
  
 +
<big>'''If it still doesn't work, try to reset the system.'''</big>
 +
|}
 +
</li></ol>
 
<span id="ssh-remote-login-development-board-under-windows"></span>
 
<span id="ssh-remote-login-development-board-under-windows"></span>
 +
 
=== SSH remote login development board under Windows ===
 
=== SSH remote login development board under Windows ===
  
Line 3,630: Line 4,337:
 
<li><p>Open '''Session'''</p></li>
 
<li><p>Open '''Session'''</p></li>
 
<li><p>Then select '''SSH''' in '''Session Setting'''</p></li>
 
<li><p>Then select '''SSH''' in '''Session Setting'''</p></li>
<li><p>Then enter the IP address of the development board in the &gt; '''Remote host'''</p></li>
+
<li><p>Then enter the IP address of the development board in the '''Remote host'''</p></li>
<li><p>Then enter the user name '''root''' or '''orangepi''' of the linux &gt; system in '''Specify username'''</p></li>
+
<li><p>Then enter the user name '''root''' or '''orangepi''' of the linux system in '''Specify username'''</p></li>
 
<li><p>Finally click '''OK'''</p>
 
<li><p>Finally click '''OK'''</p>
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image241.png|575x292px|13]]
+
[[File:plus5-img241.png]]
  
 
</div></li></ol>
 
</div></li></ol>
 
</li>
 
</li>
 
<li><p>Then you will be prompted to enter a password. The default passwords for root and orangepi users are orangepi</p>
 
<li><p>Then you will be prompted to enter a password. The default passwords for root and orangepi users are orangepi</p>
<p>'''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.'''</p></li></ol>
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 
+
|-
[[File:media/image242.png|576x192px]]
+
|
 +
<big><p>'''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.'''</p></big>
  
 +
[[File:plus5-img242.png|center]]
 +
|}
 +
</li></ol>
 
<ol start="4" style="list-style-type: decimal;">
 
<ol start="4" style="list-style-type: decimal;">
<li>After successfully logging in to the system, the display is as shown in the figure below</li></ol>
+
<li>After successfully logging in to the system, the display is as shown in the figure below</li>
  
[[File:media/image243.png|575x353px]]
+
[[File:plus5-img243.png]]
 +
</ol>
 +
<span id="how-to-use-adb"></span>
  
<span id="how-to-use-adb"></span>
 
 
== How to use ADB ==
 
== How to use ADB ==
  
Line 3,657: Line 4,369:
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>After the system starts, please confirm that '''adbd''' has been started</p>
 
<li><p>After the system starts, please confirm that '''adbd''' has been started</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''ps -ax | grep &quot;adbd&quot;'''</p>
 
<p>orangepi@orangepi:~$ '''ps -ax | grep &quot;adbd&quot;'''</p>
<p>808 ? Sl 0:00 /usr/bin/adbd</p>
+
<p>808 ? &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Sl &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0:00 /usr/bin/adbd</p>
<p>3707 ttyFIQ0 S+ 0:00 grep --color=auto adbd</p></li>
+
<p>3707 ttyFIQ0 &nbsp;&nbsp; S+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0:00 grep --color=auto adbd</p>
 +
|}
 +
</li>
 
<li><p>Then check the IP address of the development board and write it down</p></li>
 
<li><p>Then check the IP address of the development board and write it down</p></li>
 
<li><p>Then install the adb tool on the Ubuntu PC</p>
 
<li><p>Then install the adb tool on the Ubuntu PC</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>test@test:~$ '''sudo apt-get update'''</p>
 
<p>test@test:~$ '''sudo apt-get update'''</p>
<p>test@test:~$ '''sudo apt-get install -y adb'''</p></li>
+
<p>test@test:~$ '''sudo apt-get install -y adb'''</p>
<li><p>Then use the following command to connect to the network adb</p></li></ol>
+
|}
 +
</li>
 +
<li><p>Then use the following command to connect to the network adb</p></li>
  
test@test:~$ '''adb connect 192.168.1.xx:5555 #Please replace the IP address with the IP address of the development board'''
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
test@test:~$ '''adb connect 192.168.1.xx:5555 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color:#FF0000">#Please replace the IP address with the IP address of the development board</span>'''
  
 
* daemon not running; starting now at tcp:5037
 
* daemon not running; starting now at tcp:5037
Line 3,678: Line 4,403:
 
List of devices attached
 
List of devices attached
  
'''192.168.1.xx:5555 device'''
+
'''<span style="color:blue">192.168.1.xx:5555 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  device</span>'''
 
+
|}
 +
</ol>
 
<ol start="5" style="list-style-type: decimal;">
 
<ol start="5" style="list-style-type: decimal;">
<li>Then use the following command to log in to the linux system of the development board</li></ol>
+
<li>Then use the following command to log in to the linux system of the development board</li>
  
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
test@test:~$ '''adb shell'''
 
test@test:~$ '''adb shell'''
  
 
'''root@orangepi5plus:/# &lt;--- After seeing this prompt, it means that you have successfully logged in to the development board'''
 
'''root@orangepi5plus:/# &lt;--- After seeing this prompt, it means that you have successfully logged in to the development board'''
 
+
|}
 +
</ol>
 
<ol start="6" style="list-style-type: decimal;">
 
<ol start="6" style="list-style-type: decimal;">
 
<li><p>The command to upload files to the development board using adb is as follows</p>
 
<li><p>The command to upload files to the development board using adb is as follows</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>test@test:~$ '''adb push filename /root'''</p>
 
<p>test@test:~$ '''adb push filename /root'''</p>
<p>filename: 1 file pushed. 3.7 MB/s (1075091 bytes in 0.277s)</p></li>
+
<p>filename: 1 file pushed. 3.7 MB/s (1075091 bytes in 0.277s)</p>
 +
|}
 +
</li>
 
<li><p>The command to restart the development board using adb is as follows</p>
 
<li><p>The command to restart the development board using adb is as follows</p>
<p>test@test:~$ '''adb reboot'''</p></li></ol>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>test@test:~$ '''adb reboot'''</p>
 +
|}
  
'''If there is no adb tool in your Windows system, you can use the adb program in the RKDevTool software (this software is useful in the section on how to use RKDevTool to burn the Linux image to the TF card).'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''If there is no adb tool in your Windows system, you can use the adb program in the RKDevTool software (this software is useful in the section on [[Orange Pi 5 Plus#How to use RKDevTool to burn Linux image to TF card|'''how to use RKDevTool to burn the Linux image to the TF card''']]).'''</big>
  
[[File:media/image244.png|576x131px]]
+
[[File:plus5-img244.png]]
  
'''An example using adb in Windows looks like this:'''
+
<big>'''An example using adb in Windows looks like this:'''</big>
  
[[File:media/image245.png|576x335px]]
+
[[File:plus5-img245.png|800px]]
 +
|}
 +
</li></ol>
  
 
<span id="adb3.9.2.-use-type-c-data-cable-to-connect-to-adb"></span>
 
<span id="adb3.9.2.-use-type-c-data-cable-to-connect-to-adb"></span>
 +
 
=== adb3.9.2. Use type-c data cable to connect to adb ===
 
=== adb3.9.2. Use type-c data cable to connect to adb ===
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>First prepare a good quality Type-C data cable</p>
 
<li><p>First prepare a good quality Type-C data cable</p>
<p>[[File:media/image21.png|125x126px]]</p></li>
+
<p>[[File:plus5-img21.png]]</p></li>
 
<li><p>Then connect the development board and Ubuntu PC through the Type-C data cable. The position of the Type-C interface of the development board is shown in the figure below:</p>
 
<li><p>Then connect the development board and Ubuntu PC through the Type-C data cable. The position of the Type-C interface of the development board is shown in the figure below:</p>
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image173.jpeg|323x91px|C:\Users\orangepi\Desktop\用户手册插图\Pi5 Plus\未标题-1.jpg未标题-1]]
+
[[File:plus5-img173.png]]
  
 
</div></li>
 
</div></li>
 
<li><p>Then run the following command to set the Type-C interface to '''device''' mode</p>
 
<li><p>Then run the following command to set the Type-C interface to '''device''' mode</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''sudo set_device.sh'''</p>
 
<p>orangepi@orangepi:~$ '''sudo set_device.sh'''</p>
 +
|}
 
<p>If the '''set_device.sh''' script does not exist in the Linux system, please use the following command directly:</p>
 
<p>If the '''set_device.sh''' script does not exist in the Linux system, please use the following command directly:</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''sudo bash -c &quot;echo device &gt; /sys/kernel/debug/usb/fc000000.usb/mode&quot;'''</p>
 
<p>orangepi@orangepi:~$ '''sudo bash -c &quot;echo device &gt; /sys/kernel/debug/usb/fc000000.usb/mode&quot;'''</p>
<p>orangepi@orangepi:~$ '''sudo systemctl restart usbdevice'''</p></li>
+
<p>orangepi@orangepi:~$ '''sudo systemctl restart usbdevice'''</p>
 +
|}
 +
</li>
 
<li><p>'''Then please confirm that adbd has been started'''</p>
 
<li><p>'''Then please confirm that adbd has been started'''</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''ps -ax | grep &quot;adbd&quot;'''</p>
 
<p>orangepi@orangepi:~$ '''ps -ax | grep &quot;adbd&quot;'''</p>
<p>808 ? Sl 0:00 /usr/bin/adbd</p>
+
<p>808 ? &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Sl &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0:00 /usr/bin/adbd</p>
<p>3707 ttyFIQ0 S+ 0:00 grep --color=auto adbd</p></li>
+
<p>3707 ttyFIQ0 &nbsp;&nbsp; S+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0:00 grep --color=auto adbd</p>
 +
|}
 +
</li>
 
<li><p>Then install the adb tool on the Ubuntu PC</p>
 
<li><p>Then install the adb tool on the Ubuntu PC</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>test@test:~$ '''sudo apt-get update'''</p>
 
<p>test@test:~$ '''sudo apt-get update'''</p>
<p>test@test:~$ '''sudo apt-get install -y adb'''</p></li>
+
<p>test@test:~$ '''sudo apt-get install -y adb'''</p>
<li><p>Then use the following command to check whether the adb device is recognized</p></li></ol>
+
|}
 
+
</li>
 +
<li><p>Then use the following command to check whether the adb device is recognized</p></li>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
test@test:~$ '''adb devices'''
 
test@test:~$ '''adb devices'''
  
Line 3,733: Line 4,499:
  
 
'''e0f9f71bc343c305 device'''
 
'''e0f9f71bc343c305 device'''
 
+
|}
<ol start="8" style="list-style-type: decimal;">
+
</ol>
<li>Then use the following command to log in to the linux system of the development board</li></ol>
+
<ol start="7" style="list-style-type: decimal;">
 
+
<li>Then use the following command to log in to the linux system of the development board</li>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
test@test:~$ '''adb shell'''
 
test@test:~$ '''adb shell'''
  
 
'''root@orangepi5plus:/# &lt;--- After seeing this prompt, it means that you have successfully logged in to the development board'''
 
'''root@orangepi5plus:/# &lt;--- After seeing this prompt, it means that you have successfully logged in to the development board'''
 
+
|}
<ol start="9" style="list-style-type: decimal;">
+
</ol>
 +
<ol start="8" style="list-style-type: decimal;">
 
<li><p>The command to upload files to the development board using adb is as follows</p>
 
<li><p>The command to upload files to the development board using adb is as follows</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>test@test:~$ '''adb push filename /root'''</p>
 
<p>test@test:~$ '''adb push filename /root'''</p>
<p>filename: 1 file pushed. 3.7 MB/s (1075091 bytes in 0.277s)</p></li></ol>
+
<p>filename: 1 file pushed. 3.7 MB/s (1075091 bytes in 0.277s)</p>
 +
|}
 +
</li>
  
'''If there is no adb tool in your Windows system, you can use the adb program in the RKDevTool software (this software is useful in the section on how to use RKDevTool to burn the Linux image to the TF card).'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''If there is no adb tool in your Windows system, you can use the adb program in the RKDevTool software (this software is useful in the section on [[Orange Pi 5 Plus#How to use RKDevTool to burn Linux image to TF card|'''how to use RKDevTool to burn the Linux image to the TF card''']]).'''</big>
  
[[File:media/image244.png|576x131px]]
+
[[File:plus5-img244.png]]
  
'''An example using adb in Windows looks like this:'''
+
<big>'''An example using adb in Windows looks like this:'''</big>
  
[[File:media/image246.png|576x304px]]
+
[[File:plus5-img246.png|800px]]
 +
|}
 +
</ol>
 +
<span id="the-method-of-uploading-files-to-the-linux-system-of-the-development-board"></span>
  
<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 ==
 
== The method of uploading files to the Linux system of the development board ==
  
Line 3,766: Line 4,546:
 
<li><p>Use the scp command to upload files from the Ubuntu PC to the Linux system on the development board. The specific commands are as follows</p>
 
<li><p>Use the scp command to upload files from the Ubuntu PC to the Linux system on the development board. The specific commands are as follows</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li><p>'''file_path''': need to be replaced with the path of the file to &gt; be uploaded</p></li>
+
<li><p>'''file_path''': need to be replaced with the path of the file to be uploaded</p></li>
<li><p>'''orangepi''': It is the user name of the Linux system of the &gt; development board, and it can also be replaced with other &gt; ones, such as root</p></li>
+
<li><p>'''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</p></li>
<li><p>'''192.168.xx.xx''': It is the IP address of the development &gt; board, please modify it according to the actual situation</p></li>
+
<li><p>'''192.168.xx.xx''': It is the IP address of the development board, please modify it according to the actual situation</p></li>
<li><p>'''/home/orangepi''': The path in the Linux system of the &gt; development board, which can also be modified to other paths</p>
+
<li><p>'''/home/orangepi''': The path in the Linux system of the development board, which can also be modified to other paths</p>
<p>test@test:~$ '''scp file_path orangepi@192.168.xx.xx:/home/orangepi/'''</p></li></ol>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>test@test:~$ '''scp file_path orangepi@192.168.xx.xx:/home/orangepi/'''</p>
 +
|}
 +
</li></ol>
 
</li>
 
</li>
 
<li><p>If you want to upload a folder, you need to add the -r parameter</p>
 
<li><p>If you want to upload a folder, you need to add the -r parameter</p>
<p>test@test:~$ '''scp -r dir_path orangepi@192.168.xx.xx:/home/orangepi/'''</p></li>
+
{| class="wikitable" style="width:800px;"
<li><p>There are more usages of scp, please use the following command to view the man manual</p></li></ol>
+
|-
 
+
|
 +
<p>test@test:~$ '''scp <span style="color:#FF0000">-r</span> dir_path orangepi@192.168.xx.xx:/home/orangepi/'''</p>
 +
|}
 +
</li>
 +
<li><p>There are more usages of scp, please use the following command to view the man manual</p></li>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
test@test:~$ '''man scp'''
 
test@test:~$ '''man scp'''
 +
|}
 +
</ol>
 +
<span id="how-to-upload-files-using-filezilla"></span>
  
<span id="how-to-upload-files-using-filezilla"></span>
 
 
==== How to upload files using filezilla ====
 
==== How to upload files using filezilla ====
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>First install filezilla in Ubuntu PC</p>
 
<li><p>First install filezilla in Ubuntu PC</p>
<p>test@test:~$ '''sudo apt install -y filezilla'''</p></li>
+
{| class="wikitable" style="width:800px;"
<li><p>Then use the following command to open filezilla</p>
+
|-
<p>test@test:~$ '''filezilla'''</p></li>
+
|
 +
<p>test@test:~$ '''sudo apt install -y filezilla'''</p>
 +
|}
 +
</li>
 +
<li><p>Then use the following command to open filezilla</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>test@test:~$ '''filezilla'''</p>
 +
|}
 +
</li>
 
<li><p>The interface after filezilla is opened is as follows, at this time, the display under the remote site on the right is empty</p>
 
<li><p>The interface after filezilla is opened is as follows, at this time, the display under the remote site on the right is empty</p>
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image247.png|576x453px|截图 2022-12-03 19-04-40]]
+
[[File:plus5-img247.png]]
  
 
</div></li>
 
</div></li>
<li><p>The method of connecting the development board is shown in the figure below</p></li></ol>
+
<li><p>The method of connecting the development board is shown in the figure below</p></li>
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image248.png|575x128px|图片565]]
+
[[File:plus5-img248.png]]
  
</div>
+
</div></ol>
 
<ol start="5" style="list-style-type: decimal;">
 
<ol start="5" style="list-style-type: decimal;">
 
<li><p>Then choose to '''save the password''', and then click '''OK'''</p>
 
<li><p>Then choose to '''save the password''', and then click '''OK'''</p>
<p>[[File:media/image249.png|249x181px]]</p></li>
+
<p>[[File:plus5-img249.png]]</p></li>
<li><p>Then choose to '''always trust this host''', and then click '''OK'''</p></li></ol>
+
<li><p>Then choose to '''always trust this host''', and then click '''OK'''</p></li>
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image250.png|278x150px|IMG_256]]
+
[[File:plus5-img250.png]]
  
</div>
+
</div></ol>
 
<ol start="7" style="list-style-type: decimal;">
 
<ol start="7" style="list-style-type: decimal;">
<li>After the connection is successful, you can see the directory structure of the development board linux file system on the right side of the filezilla software</li></ol>
+
<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>
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image251.png|533x330px|IMG_256]]
+
[[File:plus5-img251.png]]
  
</div>
+
</div></ol>
 
<ol start="8" style="list-style-type: decimal;">
 
<ol start="8" style="list-style-type: decimal;">
<li>Then select the path to be uploaded to the development board on the right side of the filezilla software, and then select the file to be uploaded on the Ubuntu PC on the left side of the filezilla software, then click the right mouse button, and then click the upload option to start uploading the file to the development board bingo.</li></ol>
+
<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>
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image252.png|529x414px|IMG_256]]
+
[[File:plus5-img252.png]]
  
</div>
+
</div></ol>
 
<ol start="9" style="list-style-type: decimal;">
 
<ol start="9" style="list-style-type: decimal;">
 
<li><p>After the upload is complete, you can go to the corresponding path in the Linux system of the development board to view the uploaded file</p></li>
 
<li><p>After the upload is complete, you can go to the corresponding path in the Linux system of the development board to view the uploaded file</p></li>
<li><p>The method of uploading a folder is the same as that of uploading a file, so I won’t go into details here</p></li></ol>
+
<li><p>The method of uploading a folder is the same as that of uploading a file, so I won't go into details here</p></li></ol>
  
 
<span id="the-method-of-uploading-files-to-the-development-board-linux-system-in-windows-pc"></span>
 
<span id="the-method-of-uploading-files-to-the-development-board-linux-system-in-windows-pc"></span>
 +
 
=== The method of uploading files to the development board Linux system in Windows PC ===
 
=== The method of uploading files to the development board Linux system in Windows PC ===
  
Line 3,837: Line 4,642:
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>First download the installation file of the Windows version of the filezilla software, the download link is as follows</p>
 
<li><p>First download the installation file of the Windows version of the filezilla software, the download link is as follows</p>
<p>[https://filezilla-project.org/download.php?type=server '''https://filezilla-project.org/download.php?type=client''']</p></li></ol>
+
{| class="wikitable" style="width:800px;"
 
+
|-
 +
|
 +
'''https://filezilla-project.org/download.php?type=client'''
 +
|}
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image253.png|472x171px|IMG_256]]
+
[[File:plus5-img253.png]]
  
 
</div>
 
</div>
[[File:media/image254.png|384x276px]]
+
[[File:plus5-img254.png]]
 +
</li></ol>
  
 
<ol start="2" style="list-style-type: decimal;">
 
<ol start="2" style="list-style-type: decimal;">
 
<li><p>The downloaded installation package is as follows, and then double-click to install directly</p>
 
<li><p>The downloaded installation package is as follows, and then double-click to install directly</p>
<p>'''FileZilla_Server_1.5.1_win64-setup.exe'''</p></li></ol>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>'''FileZilla_Server_1.5.1_win64-setup.exe'''</p>
 +
|}
  
 
During the installation process, please select '''Decline''' on the following installation interface, and then select '''Next&gt;'''
 
During the installation process, please select '''Decline''' on the following installation interface, and then select '''Next&gt;'''
Line 3,854: Line 4,667:
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image255.png|355x279px|IMG_256]]
+
[[File:plus5-img255.png]]
  
 
</div>
 
</div>
 +
</li></ol>
 
<ol start="3" style="list-style-type: decimal;">
 
<ol start="3" style="list-style-type: decimal;">
<li>The interface after filezilla is opened is as follows, at this time, the display under the remote site on the right is empty</li></ol>
+
<li>The interface after filezilla is opened is as follows, at this time, the display under the remote site on the right is empty</li>
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image256.png|451x357px|IMG_256]]
+
[[File:plus5-img256.png]]
  
</div>
+
</div></ol>
 
<ol start="4" style="list-style-type: decimal;">
 
<ol start="4" style="list-style-type: decimal;">
<li>The method of connecting the development board is shown in the figure below:</li></ol>
+
<li>The method of connecting the development board is shown in the figure below:</li>
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image248.png|575x128px|图片565]]
+
[[File:plus5-img248.png]]
  
</div>
+
</div></ol>
 
<ol start="5" style="list-style-type: decimal;">
 
<ol start="5" style="list-style-type: decimal;">
<li>Then choose to '''save the password''', and then click '''OK'''</li></ol>
+
<li>Then choose to '''save the password''', and then click '''OK'''</li>
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image257.png|207x146px|IMG_256]]
+
[[File:plus5-img257.png]]
  
</div>
+
</div></ol>
 
<ol start="6" style="list-style-type: decimal;">
 
<ol start="6" style="list-style-type: decimal;">
<li>Then choose to '''always trust this host''', and then click '''OK'''</li></ol>
+
<li>Then choose to '''always trust this host''', and then click '''OK'''</li>
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image258.png|221x109px|IMG_256]]
+
[[File:plus5-img258.png]]
  
</div>
+
</div></ol>
 
<ol start="7" style="list-style-type: decimal;">
 
<ol start="7" style="list-style-type: decimal;">
<li>After the connection is successful, you can see the directory structure of the development board linux file system on the right side of the filezilla software</li></ol>
+
<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>
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image259.png|449x332px|IMG_256]]
+
[[File:plus5-img259.png]]
  
</div>
+
</div></ol>
 
<ol start="8" style="list-style-type: decimal;">
 
<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>
+
<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>
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image260.png|461x340px|IMG_256]]
+
[[File:plus5-img260.png]]
  
</div>
+
</div></ol>
 
<ol start="9" style="list-style-type: decimal;">
 
<ol start="9" style="list-style-type: decimal;">
 
<li><p>After the upload is complete, you can go to the corresponding path in the Linux system of the development board to view the uploaded file</p></li>
 
<li><p>After the upload is complete, you can go to the corresponding path in the Linux system of the development board to view the uploaded file</p></li>
Line 3,910: Line 4,724:
  
 
<span id="hdmi-test"></span>
 
<span id="hdmi-test"></span>
 +
 
== HDMI test ==
 
== HDMI test ==
  
Line 3,917: Line 4,732:
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>There are two HDMI output interfaces on the development board, and their locations are shown in the figure below:</p>
 
<li><p>There are two HDMI output interfaces on the development board, and their locations are shown in the figure below:</p>
<p>[[File:media/image261.png|333x92px]]</p></li>
+
<p>[[File:plus5-img261.png]]</p></li>
 
<li><p>By default, the Linux system configures HDMI_TX1 to support 8K display, and HDMI_TX2 supports only 4K display by default (only one HDMI_TX interface can support 8K display at a time). If you want to set HDMI_TX2 to support 8K display, please follow the steps below:</p>
 
<li><p>By default, the Linux system configures HDMI_TX1 to support 8K display, and HDMI_TX2 supports only 4K display by default (only one HDMI_TX interface can support 8K display at a time). If you want to set HDMI_TX2 to support 8K display, please follow the steps below:</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
 
<li><p>First run '''orangepi-config''', normal users remember to add &gt; '''sudo''' permission</p>
 
<li><p>First run '''orangepi-config''', normal users remember to add &gt; '''sudo''' permission</p>
<p>orangepi@orangepi:~$ '''sudo orangepi-config'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''sudo orangepi-config'''</p>
 +
|}
 +
</li>
 
<li><p>Then select '''System'''</p>
 
<li><p>Then select '''System'''</p>
<p>[[File:media/image234.png|362x167px]]</p></li>
+
<p>[[File:plus5-img234.png]]</p></li>
 
<li><p>Then select '''Hardware'''</p>
 
<li><p>Then select '''Hardware'''</p>
<p>[[File:media/image235.png|362x157px]]</p></li>
+
<p>[[File:plus5-img235.png]]</p></li>
 
<li><p>Then use the arrow keys of the keyboard to navigate to the &gt; position shown in the figure below, and then use the '''space''' &gt; to select '''hdmi2-8k''' configuration</p>
 
<li><p>Then use the arrow keys of the keyboard to navigate to the &gt; position shown in the figure below, and then use the '''space''' &gt; to select '''hdmi2-8k''' configuration</p>
<p>[[File:media/image262.png|361x66px]]</p></li>
+
<p>[[File:plus5-img262.png]]</p></li>
 
<li><p>Then select '''&lt;Save&gt;''' to save</p>
 
<li><p>Then select '''&lt;Save&gt;''' to save</p>
<p>[[File:media/image263.png|363x105px]]</p></li>
+
<p>[[File:plus5-img263.png]]</p></li>
 
<li><p>Then select '''&lt;Back&gt;'''</p>
 
<li><p>Then select '''&lt;Back&gt;'''</p>
<p>[[File:media/image264.png|362x110px]]</p></li>
+
<p>[[File:plus5-img264.png]]</p></li>
 
<li><p>Then select '''&lt;Reboot&gt;''' to restart the system to make the &gt; configuration take effect</p>
 
<li><p>Then select '''&lt;Reboot&gt;''' to restart the system to make the &gt; configuration take effect</p>
<p>[[File:media/image239.png|276x121px]]</p></li></ol>
+
<p>[[File:plus5-img239.png]]</p></li></ol>
 
</li>
 
</li>
 
<li><p>Then use HDMI to HDMI cable to connect Orange Pi development board and HDMI display</p>
 
<li><p>Then use HDMI to HDMI cable to connect Orange Pi development board and HDMI display</p>
<p>[[File:media/image11.png|199x129px]]</p>
+
<p>[[File:plus5-img11.png]]</p>
<p>'''Note, if you want to connect a 4K or 8K display, please make sure that the HDMI cable supports 4K or 8K video display.'''</p></li>
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
<li><p>After starting the linux system, if the HDMI display has image output, it means that the HDMI interface is in normal use</p></li></ol>
+
|-
 +
|
 +
<big><p>'''Note, if you want to connect a 4K or 8K display, please make sure that the HDMI cable supports 4K or 8K video display.'''</p></big>
 +
|}
 +
</li>
 +
<li><p>After starting the linux system, if the HDMI display has image output, it means that the HDMI interface is in normal use</p></li>
  
'''Note that although many laptops 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 the development board cannot be displayed on the screen of the notebook.'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''Note that although many laptops 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 the development board cannot be displayed on the screen of the notebook.'''
  
'''When you want to connect the HDMI of the development board to the HDMI port of the laptop, please make sure that your laptop supports the HDMI in function.'''
+
'''When 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>
 +
|}
  
'''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.'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''When the HDMI is not displayed, please check whether the HDMI cable is plugged in tightly. After confirming that there is no problem with the connection, you can change a different screen and try to see if it is displayed.'''</big>
 +
|}
 +
</ol>
 +
<span id="hdmi-in-test-method"></span>
  
<span id="hdmi-in-test-method"></span>
 
 
=== HDMI IN test method ===
 
=== HDMI IN test method ===
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>The location of the HDMI In interface on the development board is as follows:</p>
 
<li><p>The location of the HDMI In interface on the development board is as follows:</p>
<p>[[File:media/image265.png|351x112px]]</p></li>
+
<p>[[File:plus5-img265.png]]</p></li>
 
<li><p>First use the HDMI to HDMI cable shown in the figure below to connect the HDMI output of other devices to the HDMI In interface of the development board</p>
 
<li><p>First use the HDMI to HDMI cable shown in the figure below to connect the HDMI output of other devices to the HDMI In interface of the development board</p>
<p>[[File:media/image11.png|199x129px]]</p></li>
+
<p>[[File:plus5-img11.png]]</p></li>
 
<li><p>The HDMI In function of the Linux system is disabled by default, and the opening method is as follows:</p>
 
<li><p>The HDMI In function of the Linux system is disabled by default, and the opening method is as follows:</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li><p>First run '''orangepi-config''', normal users remember to add &gt; '''sudo''' permission</p>
+
<li><p>First run '''orangepi-config''', normal users remember to add '''sudo''' permission</p>
<p>orangepi@orangepi:~$ '''sudo orangepi-config'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''sudo orangepi-config'''</p>
 +
|}
 +
</li>
 
<li><p>Then select '''System'''</p>
 
<li><p>Then select '''System'''</p>
<p>[[File:media/image234.png|362x167px]]</p></li>
+
<p>[[File:plus5-img234.png]]</p></li>
 
<li><p>Then select '''Hardware'''</p>
 
<li><p>Then select '''Hardware'''</p>
<p>[[File:media/image235.png|362x157px]]</p></li>
+
<p>[[File:plus5-img235.png]]</p></li>
<li><p>Then use the arrow keys of the keyboard to navigate to the &gt; position shown in the figure below, and then use the '''space''' &gt; to select the '''hdmirx''' configuration</p>
+
<li><p>Then use the arrow keys of the keyboard to navigate to the position shown in the figure below, and then use the '''space''' to select the '''hdmirx''' configuration</p>
<p>[[File:media/image266.png|359x82px]]</p></li>
+
<p>[[File:plus5-img266.png]]</p></li>
 
<li><p>Then select '''&lt;Save&gt;''' to save</p>
 
<li><p>Then select '''&lt;Save&gt;''' to save</p>
<p>[[File:media/image263.png|363x105px]]</p></li>
+
<p>[[File:plus5-img263.png]]</p></li>
 
<li><p>Then select '''&lt;Back&gt;'''</p>
 
<li><p>Then select '''&lt;Back&gt;'''</p>
<p>[[File:media/image264.png|362x110px]]</p></li>
+
<p>[[File:plus5-img264.png]]</p></li>
<li><p>Then select '''&lt;Reboot&gt;''' to restart the system to make the &gt; configuration take effect</p>
+
<li><p>Then select '''&lt;Reboot&gt;''' to restart the system to make the configuration take effect</p>
<p>[[File:media/image239.png|276x121px]]</p></li></ol>
+
<p>[[File:plus5-img239.png]]</p></li></ol>
 
</li>
 
</li>
 
<li><p>Restart the system and open a terminal on the desktop, then run the '''test_hdmiin.sh''' script</p>
 
<li><p>Restart the system and open a terminal on the desktop, then run the '''test_hdmiin.sh''' script</p>
<p>[orangepi@orangepi ~]$ '''test_hdmiin.sh'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>[orangepi@orangepi ~]$ '''test_hdmiin.sh'''</p>
 +
|}
 +
</li>
 
<li><p>Then you can see the input screen of HDMI In (the HDMI In in the figure below shows the HDMI output screen of the opi5 development board, and a video is being played at this time). The '''test_hdmiin.sh''' script will play the audio input from HDMI In to HDMI_TX1, HDMI_TX2 and ES8388 (representing speakers or headphones) of the development board by default.</p>
 
<li><p>Then you can see the input screen of HDMI In (the HDMI In in the figure below shows the HDMI output screen of the opi5 development board, and a video is being played at this time). The '''test_hdmiin.sh''' script will play the audio input from HDMI In to HDMI_TX1, HDMI_TX2 and ES8388 (representing speakers or headphones) of the development board by default.</p>
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image267.png|576x324px|1]]
+
[[File:plus5-img267.png]]
  
 
</div></li></ol>
 
</div></li></ol>
  
 
<span id="hdmi-to-vga-display-test"></span>
 
<span id="hdmi-to-vga-display-test"></span>
 +
 
=== HDMI to VGA display test ===
 
=== HDMI to VGA display test ===
  
Line 3,987: Line 4,832:
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
 
<li><p>HDMI to VGA Converter</p>
 
<li><p>HDMI to VGA Converter</p>
<p>[[File:media/image268.png|155x104px]]</p></li>
+
<p>[[File:plus5-img268.png]]</p></li>
 
<li><p>A VGA cable</p>
 
<li><p>A VGA cable</p>
<p>[[File:media/image269.png|148x133px]]</p></li>
+
<p>[[File:plus5-img269.png]]</p></li>
 
<li><p>A monitor or TV that supports VGA interface</p></li></ol>
 
<li><p>A monitor or TV that supports VGA interface</p></li></ol>
 
</li>
 
</li>
 
<li><p>The HDMI to VGA display test is as follows:</p>
 
<li><p>The HDMI to VGA display test is as follows:</p>
<p>[[File:media/image270.png|575x341px]]</p>
+
<p>[[File:plus5-img270.png]]</p>
<p>'''When using HDMI to VGA display, the development board and the Linux system of the development board do not need to make any settings, only the HDMI interface of the development board can display normally. So if there is a problem with the test, please check whether there is a problem with the HDMI to VGA converter, VGA cable and monitor.'''</p></li></ol>
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big><p>'''When using HDMI to VGA display, the development board and the Linux system of the development board do not need to make any settings, only the HDMI interface of the development board can display normally. So if there is a problem with the test, please check whether there is a problem with the HDMI to VGA converter, VGA cable and monitor.'''</p></big>
 +
|}
 +
</li></ol>
  
 
<span id="hdmi-resolution-setting-method"></span>
 
<span id="hdmi-resolution-setting-method"></span>
 +
 
=== HDMI resolution setting method ===
 
=== HDMI resolution setting method ===
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>First open '''Display''' in '''Settings'''</p>
 
<li><p>First open '''Display''' in '''Settings'''</p>
<p>[[File:media/image271.png|576x370px]]</p></li>
+
<p>[[File:plus5-img271.png]]</p></li>
 
<li><p>Then you can see the current resolution of the system</p>
 
<li><p>Then you can see the current resolution of the system</p>
<p>[[File:media/image272.png|288x191px]]</p></li>
+
<p>[[File:plus5-img272.png]]</p></li>
 
<li><p>Click the drop-down box of Resolution to see all resolutions currently supported by the monitor</p>
 
<li><p>Click the drop-down box of Resolution to see all resolutions currently supported by the monitor</p>
<p>[[File:media/image273.png|353x233px]]</p></li>
+
<p>[[File:plus5-img273.png]]</p></li>
 
<li><p>Then select the resolution you want to set, and click Apply</p>
 
<li><p>Then select the resolution you want to set, and click Apply</p>
<p>[[File:media/image274.png|351x234px]]</p></li>
+
<p>[[File:plus5-img274.png]]</p></li>
 
<li><p>After the new resolution is set, select '''Keep the configuration'''</p>
 
<li><p>After the new resolution is set, select '''Keep the configuration'''</p>
<p>[[File:media/image275.png|462x251px]]</p></li></ol>
+
<p>[[File:plus5-img275.png]]</p></li></ol>
  
 
<span id="how-to-use-bluetooth"></span>
 
<span id="how-to-use-bluetooth"></span>
 
== How to use Bluetooth ==
 
== How to use Bluetooth ==
  
'''Please note that there is no Bluetooth module on the Orange Pi 5 Plus development board, and an external PCIe network card with Bluetooth or a USB network card with Bluetooth is required to use the Bluetooth function.'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''<span style="color:#FF0000">Please note that there is no Bluetooth module on the Orange Pi 5 Plus development board, and an external PCIe network card with Bluetooth or a USB network card with Bluetooth is required to use the Bluetooth function.</span>'''
  
'''For instructions on using the external PCIe network card, please refer to the section on how to use the PCIe WIFI6+Bluetooth module.'''
+
'''For instructions on using the external PCIe network card, please refer to the section on [[Orange Pi 5 Plus#How to use E-Key PCIe WIFI6+Bluetooth module|'''how to use the PCIe WIFI6+Bluetooth module''']].'''
  
'''For instructions on using the external USB network card, please refer to the USB wireless network card test section.'''
+
'''For instructions on using the external USB network card, please refer to the [[Orange Pi 5 Plus#USB wireless network card test|'''USB wireless network card test section''']].'''</big>
 +
|}
  
 
<span id="test-method-of-desktop-image-1"></span>
 
<span id="test-method-of-desktop-image-1"></span>
Line 4,025: Line 4,880:
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>Click on the Bluetooth icon in the upper right corner of the desktop</p>
 
<li><p>Click on the Bluetooth icon in the upper right corner of the desktop</p>
<p>[[File:media/image276.png|386x149px]]</p></li>
+
<p>[[File:plus5-img276.png]]</p></li>
 
<li><p>Then select the adapter</p>
 
<li><p>Then select the adapter</p>
<p>[[File:media/image277.png|375x165px]]</p></li>
+
<p>[[File:plus5-img277.png]]</p></li>
 
<li><p>If there is a prompt on the following interface, please select '''Yes'''</p>
 
<li><p>If there is a prompt on the following interface, please select '''Yes'''</p>
<p>[[File:media/image278.png|248x85px]]</p></li>
+
<p>[[File:plus5-img278.png]]</p></li>
 
<li><p>Then set the '''Visibility Setting''' to '''Always visible''' in the Bluetooth adapter setting interface, and then close it</p>
 
<li><p>Then set the '''Visibility Setting''' to '''Always visible''' in the Bluetooth adapter setting interface, and then close it</p>
<p>[[File:media/image279.png|243x229px]]</p></li>
+
<p>[[File:plus5-img279.png]]</p></li>
 
<li><p>Then open the configuration interface of the Bluetooth device</p>
 
<li><p>Then open the configuration interface of the Bluetooth device</p>
<p>[[File:media/image280.png|438x179px]]</p></li>
+
<p>[[File:plus5-img280.png]]</p></li>
 
<li><p>Click '''Search''' to start scanning the surrounding Bluetooth devices</p>
 
<li><p>Click '''Search''' to start scanning the surrounding Bluetooth devices</p>
<p>[[File:media/image281.png|322x217px]]</p></li></ol>
+
<p>[[File:plus5-img281.png]]</p></li></ol>
  
 
<!-- -->
 
<!-- -->
 
<ol start="6" style="list-style-type: decimal;">
 
<ol start="6" style="list-style-type: decimal;">
 
<li><p>Then select the Bluetooth device you want to connect to, and then click the right mouse button to pop up the operation interface for this Bluetooth device, select '''Pair''' to start pairing, and the demonstration here is to pair with an Android phone</p>
 
<li><p>Then select the Bluetooth device you want to connect to, and then click the right mouse button to pop up the operation interface for this Bluetooth device, select '''Pair''' to start pairing, and the demonstration here is to pair with an Android phone</p>
<p>[[File:media/image282.png|338x263px]]</p></li>
+
<p>[[File:plus5-img282.png]]</p></li>
 
<li><p>When pairing, a pairing confirmation box will pop up in the upper right corner of the desktop, just select '''Confirm''' to confirm, and the phone also needs to confirm at this time</p>
 
<li><p>When pairing, a pairing confirmation box will pop up in the upper right corner of the desktop, just select '''Confirm''' to confirm, and the phone also needs to confirm at this time</p>
<p>[[File:media/image283.png|417x152px]]</p></li>
+
<p>[[File:plus5-img283.png]]</p></li>
 
<li><p>After pairing with the mobile phone, you can select the paired Bluetooth device, then right-click and select '''Send a File''' to start sending a picture to the mobile phone</p>
 
<li><p>After pairing with the mobile phone, you can select the paired Bluetooth device, then right-click and select '''Send a File''' to start sending a picture to the mobile phone</p>
<p>[[File:media/image284.png|439x259px]]</p></li>
+
<p>[[File:plus5-img284.png]]</p></li>
 
<li><p>The interface for sending pictures is as follows</p>
 
<li><p>The interface for sending pictures is as follows</p>
<p>[[File:media/image285.png|437x253px]]</p></li></ol>
+
<p>[[File:plus5-img285.png]]</p></li></ol>
  
 
<span id="usb-interface-test"></span>
 
<span id="usb-interface-test"></span>
 +
 
== USB interface test ==
 
== USB interface test ==
  
'''The USB interface can be connected to a USB hub to expand the number of USB interfaces.'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''The USB interface can be connected to a USB hub to expand the number of USB interfaces.'''</big>
 +
|}
  
 
<span id="connect-usb-mouse-or-keyboard-to-test"></span>
 
<span id="connect-usb-mouse-or-keyboard-to-test"></span>
 
=== Connect USB mouse or keyboard to test ===
 
=== Connect USB mouse or keyboard to test ===
  
# Insert the keyboard with USB interface into the USB interface of Orange Pi development board
+
# Insert the keyboard with USB interface into the USB interface of Orange Pi development board<br>
# Connect the Orange Pi development board to the HDMI display
+
# Connect the Orange Pi development board to the HDMI display<br>
 
# 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)
 
# 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)
  
 
<span id="connect-usb-storage-device-test"></span>
 
<span id="connect-usb-storage-device-test"></span>
 +
 
=== Connect USB storage device test ===
 
=== Connect USB storage device test ===
  
Line 4,066: Line 4,927:
 
# Execute the following command, if you can see the output of sdX, it means that the U disk is recognized successfully
 
# Execute the following command, if you can see the output of sdX, it means that the U disk is recognized successfully
  
orangepi@orangepi:~$ '''cat /proc/partitions | grep &quot;sd*&quot;'''
+
::{| class="wikitable" style="width:800px;"
 
+
|-
major minor #blocks name
+
|
 
+
orangepi@orangepi:~$ '''cat /proc/partitions | grep &quot;sd*&quot;'''<br>
8 0 30044160 '''sda'''
+
<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>
8 1 30043119 '''sda1'''
+
<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>
 +
|}
  
 
<ol start="3" style="list-style-type: decimal;">
 
<ol start="3" style="list-style-type: decimal;">
<li>Use the mount command to mount the U disk to '''/mnt''', and then you can view the files in the U disk</li></ol>
+
<li>Use the mount command to mount the U disk to '''/mnt''', and then you can view the files in the U disk</li>
  
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
orangepi@orangepi:~$ '''sudo mount /dev/sda1 /mnt/'''
 
orangepi@orangepi:~$ '''sudo mount /dev/sda1 /mnt/'''
  
Line 4,082: Line 4,947:
  
 
test.txt
 
test.txt
 
+
|}
 +
</ol>
 
<ol start="4" style="list-style-type: decimal;">
 
<ol start="4" style="list-style-type: decimal;">
<li>After mounting, you can view the capacity usage and mount point of the U disk through the '''df -h''' command</li></ol>
+
<li>After mounting, you can view the capacity usage and mount point of the U disk through the '''df -h''' command</li>
  
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
orangepi@orangepi:~$ '''df -h | grep &quot;sd&quot;'''
 
orangepi@orangepi:~$ '''df -h | grep &quot;sd&quot;'''
  
/dev/sda1 29G 208K 29G 1% /mnt
+
/dev/sda1 &nbsp;&nbsp;&nbsp;&nbsp; 29G &nbsp;&nbsp;&nbsp;&nbsp; 208K &nbsp;&nbsp;&nbsp;&nbsp; 29G &nbsp;&nbsp;&nbsp;&nbsp; 1% /mnt
 +
|}
 +
</ol>
 +
<span id="usb-wireless-network-card-test"></span>
  
<span id="usb-wireless-network-card-test"></span>
 
 
=== USB wireless network card test ===
 
=== USB wireless network card test ===
  
 
The usable USB wireless network cards that '''have been tested''' so far are as follows. For other types of USB wireless network cards, please test them yourself. If they cannot be used, you need to transplant the corresponding USB wireless network card driver.
 
The usable USB wireless network cards that '''have been tested''' so far are as follows. For other types of USB wireless network cards, please test them yourself. If they cannot be used, you need to transplant the corresponding USB wireless network card driver.
  
{| class="wikitable"
+
{| class="wikitable" style="width:800px;"  
 
|-
 
|-
 
| S/N
 
| S/N
Line 4,106: Line 4,977:
 
Support 2.4G WIFI+BT4.0
 
Support 2.4G WIFI+BT4.0
  
| [[File:me%20dia/image286.png]]{width =“0.7868055555555555in” height= “0.8291666666666667in”}
+
| [[File:plus5-img286.png]]
 
|-
 
|-
 
| 2
 
| 2
Line 4,113: Line 4,984:
 
Support 2.4G +5G WIFI
 
Support 2.4G +5G WIFI
  
| [[File:me%20dia/image287.png]]{width =“0.8555555555555555in” height= “0.8145833333333333in”}
+
| [[File:plus5-img287.png]]
 
|-
 
|-
 
| 3
 
| 3
Line 4,122: Line 4,993:
 
Support BitTorrent 4.2
 
Support BitTorrent 4.2
  
| [[File:med%20ia/image288.jpeg|tb_image_s hare_1670833201123]]{width =“0.8777777777777778in” height= “0.8777777777777778in”}
+
| [[File:plus5-img288.png]]
 
|}
 
|}
  
Line 4,131: Line 5,002:
 
<li><p>First insert the RTL8723BU wireless network card module into the USB interface of the development board</p></li>
 
<li><p>First insert the RTL8723BU wireless network card module into the USB interface of the development board</p></li>
 
<li><p>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</p>
 
<li><p>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</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''lsmod'''</p>
 
<p>orangepi@orangepi:~$ '''lsmod'''</p>
<p>Module Size Used by</p>
+
<span style="margin-right: 100px;">Module </span><span style="margin-right: 50px;">Size </span><span style="margin-right: 45px;">Used by</span><br>
<p>rfcomm 57344 16</p>
+
<span style="margin-right: 100px;">rfcomm </span><span style="margin-right: 50px;">57344</span><span style="margin-right: 50px;">16</span><br>
<p>rtl8xxxu 106496 0</p>
+
<span style="margin-right: 95px;">rtl8xxxu </span><span style="margin-right: 50px;">106496</span><span style="margin-right: 30px;">0</span><br>
<p>rtk_btusb 61440 0</p></li>
+
<span style="margin-right: 90px;">rtk_btusb </span><span style="margin-right: 50px;">61440</span><span style="margin-right: 30px;">0</span><br>
 +
|}
 +
</li>
 
<li><p>Through the dmesg command, you can see the loading information of the RTL8723BU module</p>
 
<li><p>Through the dmesg command, you can see the loading information of the RTL8723BU module</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''dmesg'''</p>
 
<p>orangepi@orangepi:~$ '''dmesg'''</p>
 
<p>......</p>
 
<p>......</p>
Line 4,167: Line 5,046:
 
<p>[ 84.266999] Bluetooth: RFCOMM ver 1.11</p>
 
<p>[ 84.266999] Bluetooth: RFCOMM ver 1.11</p>
 
<p>[ 84.884270] usbcore: registered new interface driver rtl8xxxu</p>
 
<p>[ 84.884270] usbcore: registered new interface driver rtl8xxxu</p>
<p>[ 84.912046] rtl8xxxu 2-1:1.2 wlx0013eff458ae: renamed from wlan0</p></li>
+
<p>[ 84.912046] rtl8xxxu 2-1:1.2 wlx0013eff458ae: renamed from wlan0</p>
<li><p>Then through the '''sudo ifconfig''' command, you can see the device node of RTL8723BU WIFI. For the connection and test method of WIFI, please refer to the section of '''WIFI connection test''', which will not be repeated here</p>
+
|}
<p>orangepi@orangepi:~$ '''sudo ifconfig wlx0013eff458ae'''</p>
+
</li>
 +
<li><p>Then through the '''sudo ifconfig''' command, you can see the device node of RTL8723BU WIFI. For the connection and test method of WIFI, please refer to the section of [[Orange Pi 5 Plus#WIFI connection test|'''WIFI connection test''']], which will not be repeated here</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''sudo ifconfig wlx0013eff458ae'''</p>
 
<p>wlx0013eff458ae: flags=4099&lt;UP,BROADCAST,MULTICAST&gt; mtu 1500</p>
 
<p>wlx0013eff458ae: flags=4099&lt;UP,BROADCAST,MULTICAST&gt; mtu 1500</p>
<p>ether 00:13:ef:f4:58:ae txqueuelen 1000 (Ethernet)</p>
+
::<p>ether 00:13:ef:f4:58:ae txqueuelen 1000 (Ethernet)</p>
<p>RX packets 0 bytes 0 (0.0 B)</p>
+
::<p>RX packets 0 bytes 0 (0.0 B)</p>
<p>RX errors 0 dropped 0 overruns 0 frame 0</p>
+
::<p>RX errors 0 dropped 0 overruns 0 frame 0</p>
<p>TX packets 0 bytes 0 (0.0 B)</p>
+
::<p>TX packets 0 bytes 0 (0.0 B)</p>
<p>TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0</p></li>
+
::<p>TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0</p>
 +
|}
 +
</li>
 
<li><p>Then you can see the USB Bluetooth device through the '''hciconfig''' command</p>
 
<li><p>Then you can see the USB Bluetooth device through the '''hciconfig''' command</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''sudo apt update &amp;&amp; sudo apt install bluez'''</p>
 
<p>orangepi@orangepi:~$ '''sudo apt update &amp;&amp; sudo apt install bluez'''</p>
 
<p>orangepi@orangepi:~$ '''hciconfig'''</p>
 
<p>orangepi@orangepi:~$ '''hciconfig'''</p>
<p>hci0: Type: Primary Bus: '''USB'''</p>
+
<p>hci0: Type: Primary Bus: '''<span style="color:#FF0000">USB</span>'''</p>
<p>BD Address: 00:13:EF:F4:58:AE ACL MTU: 820:8 SCO MTU: 255:16</p>
+
::<p>BD Address: 00:13:EF:F4:58:AE ACL MTU: 820:8 SCO MTU: 255:16</p>
<p>DOWN</p>
+
::<p>DOWN</p>
<p>RX bytes:1252 acl:0 sco:0 events:125 errors:0</p>
+
::<p>RX bytes:1252 acl:0 sco:0 events:125 errors:0</p>
<p>TX bytes:23307 acl:0 sco:0 commands:125 errors:0</p></li>
+
::<p>TX bytes:23307 acl:0 sco:0 commands:125 errors:0</p>
<li><p>You can also see the bluetooth icon on the desktop. At this time, the bluetooth is not turned on, so a red '''x''' will be displayed</p>
+
|}
<p>[[File:media/image289.png|576x157px]]</p></li>
+
</li>
 +
<li><p>You can also see the bluetooth icon on the desktop. At this time, the bluetooth is not turned on, so a red '''<span style="color:#FF0000">x</span>''' will be displayed</p>
 +
<p>[[File:plus5-img289.png]]</p></li>
 
<li><p>Click '''Turn Bluetooth On''' to turn on Bluetooth</p>
 
<li><p>Click '''Turn Bluetooth On''' to turn on Bluetooth</p>
<p>[[File:media/image290.png|576x262px]]</p></li>
+
<p>[[File:plus5-img290.png]]</p></li>
 
<li><p>The display after turning on Bluetooth is as follows</p>
 
<li><p>The display after turning on Bluetooth is as follows</p>
<p>[[File:media/image291.png|576x164px]]</p></li>
+
<p>[[File:plus5-img291.png]]</p></li>
<li><p>For the test method of Bluetooth, please refer to the section on '''Bluetooth usage''', so I won’t go into details here</p></li></ol>
+
<li><p>For the test method of Bluetooth, please refer to the section on [[Orange Pi 5 Plus#How to use E-Key PCIe WIFI6+Bluetooth module|'''Bluetooth usage''']], so I won't go into details here</p></li></ol>
  
 
<span id="rtl8811-test"></span>
 
<span id="rtl8811-test"></span>
 +
 
==== RTL8811 test ====
 
==== RTL8811 test ====
  
Line 4,198: Line 5,090:
 
<li><p>First insert the RTL8811 wireless network card module into the USB interface of the development board</p></li>
 
<li><p>First insert the RTL8811 wireless network card module into the USB interface of the development board</p></li>
 
<li><p>Then the linux system will automatically load the kernel module related to RTL8811 WIFI, through the lsmod command, you can see that the following kernel module has been automatically loaded</p>
 
<li><p>Then the linux system will automatically load the kernel module related to RTL8811 WIFI, through the lsmod command, you can see that the following kernel module has been automatically loaded</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''lsmod'''</p>
 
<p>orangepi@orangepi:~$ '''lsmod'''</p>
<p>Module Size Used by</p>
+
<span style="margin-right: 100px;">Module </span><span style="margin-right: 50px;">Size </span><span style="margin-right: 45px;">Used by</span><br>
<p>8821cu 1839104 0</p></li>
+
<span style="margin-right: 100px;">8821cu </span><span style="margin-right: 50px;">1839104 </span><span style="margin-right: 50px;">0</span><br>
 +
|}
 +
</li>
 
<li><p>Through the dmesg command, you can see the loading information of the RTL8811 module</p>
 
<li><p>Through the dmesg command, you can see the loading information of the RTL8811 module</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''dmesg'''</p>
 
<p>orangepi@orangepi:~$ '''dmesg'''</p>
 
<p>[ 118.618194] usb 2-1: new high-speed USB device number 2 using ehci-platform</p>
 
<p>[ 118.618194] usb 2-1: new high-speed USB device number 2 using ehci-platform</p>
Line 4,210: Line 5,110:
 
<p>[ 118.767235] usb 2-1: SerialNumber: 123456</p>
 
<p>[ 118.767235] usb 2-1: SerialNumber: 123456</p>
 
<p>[ 119.500530] usbcore: registered new interface driver rtl8821cu</p>
 
<p>[ 119.500530] usbcore: registered new interface driver rtl8821cu</p>
<p>[ 119.525498] rtl8821cu 2-1:1.0 wlx1cbfced9d260: renamed from wlan0</p></li>
+
<p>[ 119.525498] rtl8821cu 2-1:1.0 wlx1cbfced9d260: renamed from wlan0</p>
<li><p>Then, you can see the WIFI device node through the '''sudo ifconfig''' command. For the '''WIFI connection and test method''', please refer to the section of WIFI connection test, which will not be repeated here</p>
+
|}
 +
</li>
 +
<li><p>Then, you can see the WIFI device node through the '''sudo ifconfig''' command. For the [[Orange Pi 5 Plus#WIFI connection test|'''WIFI connection and test method''']], please refer to the section of WIFI connection test, which will not be repeated here</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''sudo ifconfig wlx1cbfced9d260'''</p>
 
<p>orangepi@orangepi:~$ '''sudo ifconfig wlx1cbfced9d260'''</p>
 
<p>wlx1cbfced9d260: flags=4099&lt;UP,BROADCAST,MULTICAST&gt; mtu 1500</p>
 
<p>wlx1cbfced9d260: flags=4099&lt;UP,BROADCAST,MULTICAST&gt; mtu 1500</p>
<p>ether 1c:bf:ce:d9:d2:60 txqueuelen 1000 (Ethernet)</p>
+
::<p>ether 1c:bf:ce:d9:d2:60 txqueuelen 1000 (Ethernet)</p>
<p>RX packets 0 bytes 0 (0.0 B)</p>
+
::<p>RX packets 0 bytes 0 (0.0 B)</p>
<p>RX errors 0 dropped 0 overruns 0 frame 0</p>
+
::<p>RX errors 0 dropped 0 overruns 0 frame 0</p>
<p>TX packets 0 bytes 0 (0.0 B)</p>
+
::<p>TX packets 0 bytes 0 (0.0 B)</p>
<p>TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0</p></li></ol>
+
::<p>TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0</p>
 +
|}
 +
</li></ol>
  
 
<span id="usb-camera-test"></span>
 
<span id="usb-camera-test"></span>
 +
 
=== USB camera test ===
 
=== USB camera test ===
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>First, you need to prepare a USB camera that supports the 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</p>
 
<li><p>First, you need to prepare a USB camera that supports the 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</p>
<p>[[File:media/image18.png|277x160px]]</p></li>
+
<p>[[File:plus5-img18.png]]</p></li>
<li><p>Through the v4l2-ctl command, you can see that the device node information of the USB camera is /dev/video0</p>
+
<li><p>Through the v4l2-ctl command, you can see that the device node information of the USB camera is '''/dev/video0'''</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''v4l2-ctl --list-devices'''</p>
 
<p>orangepi@orangepi:~$ '''v4l2-ctl --list-devices'''</p>
<p>Q8 HD Webcam: Q8 HD Webcam ('''usb'''-fc880000.usb-1):</p>
+
<p>Q8 HD Webcam: Q8 HD Webcam ('''<span style="color:#FF0000">usb</span>'''-fc880000.usb-1):</p>
<p>'''/dev/video0'''</p>
+
::<p>'''/dev/video0'''</p>
<p>/dev/video1</p>
+
::<p>/dev/video1</p>
<p>/dev/media0</p>
+
::<p>/dev/media0</p>
<p>'''Note that the l in v4l2 is a lowercase letter l, not the number 1.'''</p>
+
|}
<p>'''In addition, the serial number of the video is not necessarily video0, please refer to what you actually see.'''</p></li>
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big><p>'''Note that the l in v4l2 is a lowercase letter l, not the number 1.'''</p>
 +
 
 +
<p>'''In addition, the serial number of the video is not necessarily video0, please refer to what you actually see.'''</p></big>
 +
|}
 +
</li>
 
<li><p>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:</p>
 
<li><p>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:</p>
<p>[[File:media/image292.png|474x302px]]</p>
+
<p>[[File:plus5-img292.png]]</p>
 
<p>The interface after Cheese turns on the USB camera is shown in the figure below:</p>
 
<p>The interface after Cheese turns on the USB camera is shown in the figure below:</p>
<p>[[File:media/image293.png|480x282px]]</p></li>
+
<p>[[File:plus5-img293.png]]</p></li>
 
<li><p>Method of using fswebcam to test USB camera</p>
 
<li><p>Method of using fswebcam to test USB camera</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
 
<li><p>Install fswebcam</p>
 
<li><p>Install fswebcam</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''sudo''' '''apt update'''</p>
 
<p>orangepi@orangepi:~$ '''sudo''' '''apt update'''</p>
<p>orangepi@orangepi:~$ '''sudo apt-get install -y fswebcam'''</p></li>
+
<p>orangepi@orangepi:~$ '''sudo apt-get install -y fswebcam'''</p>
<li><p>After installing fswebcam, you can use the following command to &gt; take pictures</p>
+
|}
<ol style="list-style-type: lower-alpha;">
+
</li>
<li><p>-d option is used to specify the device node of the USB &gt; camera</p></li>
+
<li><p>After installing fswebcam, you can use the following command to take pictures</p>
<li><p>--no-banner is used to remove the watermark of the photo</p></li>
+
<ol style="list-style-type: none;">
<li><p>-r option is used to specify the resolution of the photo</p></li>
+
<li><p>a) -d option is used to specify the device node of the USB camera</p></li>
<li><p>-S option is used to set the number of previous frames to &gt; skip</p></li>
+
<li><p>b) --no-banner is used to remove the watermark of the photo</p></li>
<li><p>./image.jpg is used to set the name and path of the &gt; generated photo</p>
+
<li><p>c) -r option is used to specify the resolution of the photo</p></li>
 +
<li><p>d) -S option is used to set the number of previous frames to skip</p></li>
 +
<li><p>e) ./image.jpg is used to set the name and path of the generated photo</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''sudo''' '''fswebcam -d /dev/video0 \'''</p>
 
<p>orangepi@orangepi:~$ '''sudo''' '''fswebcam -d /dev/video0 \'''</p>
<p>'''--no-banner -r 1280x720 -S 5 ./image.jpg'''</p></li></ol>
+
<p>'''--no-banner -r 1280x720 -S 5 ./image.jpg'''</p>
 +
|}
 +
</li></ol>
 +
</li>
 +
<li><p>In the server version of the linux system, you can use the scp command to transfer the taken pictures to the Ubuntu PC for image viewing after taking pictures</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>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)'''</p>
 +
|}
 
</li>
 
</li>
<li><p>In the server version of the linux system, you can use the scp &gt; command to transfer the taken pictures to the Ubuntu PC for &gt; image viewing after taking pictures</p>
+
<li><p>In the desktop version of the linux system, you can directly view the captured pictures through the HDMI display d. In the desktop version of the linux system, you can directly view the captured pictures through the HDMI display</p></li></ol>
<p>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)'''</p></li>
 
<li><p>In the desktop version of the linux system, you can directly &gt; view the captured pictures through the HDMI display d. In the &gt; desktop version of the linux system, you can directly view the &gt; captured pictures through the HDMI display</p></li></ol>
 
 
</li></ol>
 
</li></ol>
  
 
<span id="audio-test"></span>
 
<span id="audio-test"></span>
 +
 
== Audio Test ==
 
== Audio Test ==
  
Line 4,266: Line 5,200:
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>First open the file manager</p>
 
<li><p>First open the file manager</p>
<p>[[File:media/image294.png|257x126px]]</p></li>
+
<p>[[File:plus5-img294.png]]</p></li>
 
<li><p>Then find the following file (if there is no audio file in the system, you can upload an audio file to the system yourself)</p>
 
<li><p>Then find the following file (if there is no audio file in the system, you can upload an audio file to the system yourself)</p>
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image295.jpeg|236x186px|图片10]]
+
[[File:plus5-img295.png]]
  
 
</div></li>
 
</div></li>
 
<li><p>Then select the audio.wav file, right click and select open with vlc to start playing</p>
 
<li><p>Then select the audio.wav file, right click and select open with vlc to start playing</p>
<p>[[File:media/image296.png|241x195px]]</p></li>
+
<p>[[File:plus5-img296.png]]</p></li>
 
<li><p>How to switch between different audio devices such as HDMI playback and headphone playback</p>
 
<li><p>How to switch between different audio devices such as HDMI playback and headphone playback</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
 
<li><p>First open the volume control interface</p>
 
<li><p>First open the volume control interface</p>
<p>[[File:media/image297.png|294x161px]]</p></li>
+
<p>[[File:plus5-img297.png]]</p></li>
<li><p>When playing audio, the audio device options that the playback &gt; software can use will be displayed in '''Playback''', as shown &gt; in the figure below, where you can set which audio device to &gt; play to</p>
+
<li><p>When playing audio, the audio device options that the playback software can use will be displayed in '''Playback''', as shown in the figure below, where you can set which audio device to play to</p>
<p>[[File:media/image298.png|575x303px]]</p></li></ol>
+
<p>[[File:plus5-img298.png]]</p></li></ol>
 
</li></ol>
 
</li></ol>
  
 
<span id="the-method-of-using-commands-to-play-audio"></span>
 
<span id="the-method-of-using-commands-to-play-audio"></span>
 +
 
=== The method of using commands to play audio ===
 
=== The method of using commands to play audio ===
  
Line 4,291: Line 5,226:
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>First insert the earphone into the earphone jack of the development board</p>
 
<li><p>First insert the earphone into the earphone jack of the development board</p>
<p>[[File:media/image299.png|365x89px]]</p></li>
+
<p>[[File:plus5-img299.png]]</p></li>
 
<li><p>Then you can use the '''aplay -l''' command to view the sound card devices supported by the linux system. From the output below, you can see that '''card 3''' is the sound card device of es8388, that is, the sound card device of the headset</p>
 
<li><p>Then you can use the '''aplay -l''' command to view the sound card devices supported by the linux system. From the output below, you can see that '''card 3''' is the sound card device of es8388, that is, the sound card device of the headset</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''aplay -l'''</p>
 
<p>orangepi@orangepi:~$ '''aplay -l'''</p>
 
<p>**** List of PLAYBACK Hardware Devices ****</p>
 
<p>**** List of PLAYBACK Hardware Devices ****</p>
 
<p>card 0: rockchipdp0 [rockchip,dp0], device 0: rockchip,dp0 spdif-hifi-0 [rockchip,dp0 spdif-hifi-0]</p>
 
<p>card 0: rockchipdp0 [rockchip,dp0], device 0: rockchip,dp0 spdif-hifi-0 [rockchip,dp0 spdif-hifi-0]</p>
<p>Subdevices: 0/1</p>
+
:<p>Subdevices: 0/1</p>
<p>Subdevice #0: subdevice #0</p>
+
:<p>Subdevice #0: subdevice #0</p>
 
<p>card 1: rockchiphdmi0 [rockchip-hdmi0], device 0: rockchip-hdmi0 i2s-hifi-0 [rockchip-hdmi0 i2s-hifi-0]</p>
 
<p>card 1: rockchiphdmi0 [rockchip-hdmi0], device 0: rockchip-hdmi0 i2s-hifi-0 [rockchip-hdmi0 i2s-hifi-0]</p>
<p>Subdevices: 0/1</p>
+
:<p>Subdevices: 0/1</p>
<p>Subdevice #0: subdevice #0</p>
+
:<p>Subdevice #0: subdevice #0</p>
 
<p>card 2: rockchiphdmi1 [rockchip-hdmi1], device 0: rockchip-hdmi1 i2s-hifi-0 [rockchip-hdmi1 i2s-hifi-0]</p>
 
<p>card 2: rockchiphdmi1 [rockchip-hdmi1], device 0: rockchip-hdmi1 i2s-hifi-0 [rockchip-hdmi1 i2s-hifi-0]</p>
<p>Subdevices: 1/1</p>
+
:<p>Subdevices: 1/1</p>
<p>Subdevice #0: subdevice #0</p>
+
:<p>Subdevice #0: subdevice #0</p>
 
<p>'''card 3: rockchipes8388 [rockchip,es8388], device 0: dailink-multicodecs ES8323.7-0011-0 [dailink-multicodecs ES8323.7-0011-0]'''</p>
 
<p>'''card 3: rockchipes8388 [rockchip,es8388], device 0: dailink-multicodecs ES8323.7-0011-0 [dailink-multicodecs ES8323.7-0011-0]'''</p>
<p>'''Subdevices: 0/1'''</p>
+
:<p>'''Subdevices: 0/1'''</p>
<p>'''Subdevice #0: subdevice #0'''</p></li>
+
:<p>'''Subdevice #0: subdevice #0'''</p>
 +
|}
 +
</li>
 
<li><p>Then use the '''aplay''' command to play the audio file that comes with the system. If the earphone can hear the sound, it means that the hardware can be used normally.</p>
 
<li><p>Then use the '''aplay''' command to play the audio file that comes with the system. If the earphone can hear the sound, it means that the hardware can be used normally.</p>
<p>orangepi@orangepi:~$ '''aplay -D hw:3,0 /usr/share/sounds/alsa/audio.wav'''</p>
+
{| class="wikitable" style="width:800px;"
<p>Playing WAVE 'audio.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo</p></li></ol>
+
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''aplay -D hw:<span style="color:#FF0000">3</span>,0 /usr/share/sounds/alsa/audio.wav'''</p>
 +
<p>Playing WAVE 'audio.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo</p>
 +
|}
 +
</li></ol>
  
 
<span id="speaker-interface-playback-audio-test"></span>
 
<span id="speaker-interface-playback-audio-test"></span>
 +
 
==== Speaker interface playback audio test ====
 
==== Speaker interface playback audio test ====
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>First, you need to prepare a speaker as shown in the figure below. The specification of the speaker seat on the development board is 2pin 1.25mm pitch</p>
 
<li><p>First, you need to prepare a speaker as shown in the figure below. The specification of the speaker seat on the development board is 2pin 1.25mm pitch</p>
<p>[[File:media/image29.png|229x158px]]</p></li>
+
<p>[[File:plus5-img29.png]]</p></li>
 
<li><p>The position of the speaker interface on the development board is as follows. After preparing the speaker, please insert it into the speaker interface of the development board</p>
 
<li><p>The position of the speaker interface on the development board is as follows. After preparing the speaker, please insert it into the speaker interface of the development board</p>
<p>[[File:media/image300.png|325x184px]]</p></li>
+
<p>[[File:plus5-img300.png]]</p></li>
 
<li><p>The speaker and earphone use the same sound card. Before using the speaker, please make sure that the earphone jack is not plugged into the earphone (if the earphone is plugged in, the audio will be played to the earphone). Then use the '''aplay''' command to play the audio file that comes with the system. If the speaker can hear the sound, it means that the hardware can be used normally.</p>
 
<li><p>The speaker and earphone use the same sound card. Before using the speaker, please make sure that the earphone jack is not plugged into the earphone (if the earphone is plugged in, the audio will be played to the earphone). Then use the '''aplay''' command to play the audio file that comes with the system. If the speaker can hear the sound, it means that the hardware can be used normally.</p>
<p>orangepi@orangepi:~$ '''aplay -D hw:3,0 /usr/share/sounds/alsa/audio.wav'''</p>
+
{| class="wikitable" style="width:800px;"
<p>Playing WAVE 'audio.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo</p></li></ol>
+
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''aplay -D hw:<span style="color:#FF0000">3</span>,0 /usr/share/sounds/alsa/audio.wav'''</p>
 +
<p>Playing WAVE 'audio.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo</p>
 +
|}
 +
</li></ol>
  
 
<span id="hdmi-audio-playback-test"></span>
 
<span id="hdmi-audio-playback-test"></span>
 +
 
==== HDMI audio playback test ====
 
==== HDMI audio playback test ====
  
Line 4,329: Line 5,281:
 
<li><p>First use the HDMI to HDMI cable to connect the Orange Pi development board to the TV (other HDMI monitors need to ensure that they can play audio)</p></li>
 
<li><p>First use the HDMI to HDMI cable to connect the Orange Pi development board to the TV (other HDMI monitors need to ensure that they can play audio)</p></li>
 
<li><p>Then check the serial number of the HDMI sound card. From the output below, you can know that the sound card of HDMI_TX1 is '''card 1''', and the sound card of HDMI_TX2 is '''card 2'''</p>
 
<li><p>Then check the serial number of the HDMI sound card. From the output below, you can know that the sound card of HDMI_TX1 is '''card 1''', and the sound card of HDMI_TX2 is '''card 2'''</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''aplay -l'''</p>
 
<p>orangepi@orangepi:~$ '''aplay -l'''</p>
 
<p>**** List of PLAYBACK Hardware Devices ****</p>
 
<p>**** List of PLAYBACK Hardware Devices ****</p>
 
<p>card 0: rockchipdp0 [rockchip,dp0], device 0: rockchip,dp0 spdif-hifi-0 [rockchip,dp0 spdif-hifi-0]</p>
 
<p>card 0: rockchipdp0 [rockchip,dp0], device 0: rockchip,dp0 spdif-hifi-0 [rockchip,dp0 spdif-hifi-0]</p>
<p>Subdevices: 1/1</p>
+
:<p>Subdevices: 1/1</p>
<p>Subdevice #0: subdevice #0</p>
+
:<p>Subdevice #0: subdevice #0</p>
 
<p>'''card 1: rockchiphdmi0 [rockchip-hdmi0], device 0: rockchip-hdmi0 i2s-hifi-0 [rockchip-hdmi0 i2s-hifi-0]'''</p>
 
<p>'''card 1: rockchiphdmi0 [rockchip-hdmi0], device 0: rockchip-hdmi0 i2s-hifi-0 [rockchip-hdmi0 i2s-hifi-0]'''</p>
<p>'''Subdevices: 1/1'''</p>
+
:<p>'''Subdevices: 1/1'''</p>
<p>'''Subdevice #0: subdevice #0'''</p>
+
:<p>'''Subdevice #0: subdevice #0'''</p>
 
<p>'''card 2: rockchiphdmi1 [rockchip-hdmi1], device 0: rockchip-hdmi1 i2s-hifi-0 [rockchip-hdmi1 i2s-hifi-0]'''</p>
 
<p>'''card 2: rockchiphdmi1 [rockchip-hdmi1], device 0: rockchip-hdmi1 i2s-hifi-0 [rockchip-hdmi1 i2s-hifi-0]'''</p>
<p>'''Subdevices: 1/1'''</p>
+
:<p>'''Subdevices: 1/1'''</p>
<p>'''Subdevice #0: subdevice #0'''</p></li>
+
:<p>'''Subdevice #0: subdevice #0'''</p>
 +
|}
 +
</li>
 
<li><p>Then use the '''aplay''' command to play the audio file that comes with the system. If the HDMI monitor or TV can hear the sound, it means that the hardware can be used normally.</p>
 
<li><p>Then use the '''aplay''' command to play the audio file that comes with the system. If the HDMI monitor or TV can hear the sound, it means that the hardware can be used normally.</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
 
<li><p>The command to play audio to HDMI_TX1 is as follows:</p>
 
<li><p>The command to play audio to HDMI_TX1 is as follows:</p>
<p>orangepi@orangepi:~$ '''aplay -D hw:1,0 /usr/share/sounds/alsa/audio.wav'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''aplay -D hw:<span style="color:#FF0000">1</span>,0 /usr/share/sounds/alsa/audio.wav'''</p>
 +
|}
 +
</li>
 
<li><p>The command to play audio to HDMI_TX2 is as follows:</p>
 
<li><p>The command to play audio to HDMI_TX2 is as follows:</p>
<p>orangepi@orangepi:~$ '''aplay -D hw:2,0 /usr/share/sounds/alsa/audio.wav'''</p></li></ol>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''aplay -D hw:<span style="color:#FF0000">2</span>,0 /usr/share/sounds/alsa/audio.wav'''</p>
 +
|}
 +
</li></ol>
 
</li></ol>
 
</li></ol>
  
 
<span id="method-of-using-commands-to-test-recording"></span>
 
<span id="method-of-using-commands-to-test-recording"></span>
 +
 
=== Method of using commands to test recording ===
 
=== Method of using commands to test recording ===
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>There is an onboard MIC on the development board, the location is as follows:</p>
 
<li><p>There is an onboard MIC on the development board, the location is as follows:</p>
<p>[[File:media/image301.png|339x112px]]</p></li>
+
<p>[[File:plus5-img301.png]]</p></li>
 
<li><p>Running the '''test_record.sh main''' command will record a piece of audio through the onboard MIC, and then play it to HDMI_TX1 and the headset.</p>
 
<li><p>Running the '''test_record.sh main''' command will record a piece of audio through the onboard MIC, and then play it to HDMI_TX1 and the headset.</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''test_record.sh main'''</p>
 
<p>orangepi@orangepi:~$ '''test_record.sh main'''</p>
 
<p>Start recording: /tmp/test.wav</p>
 
<p>Start recording: /tmp/test.wav</p>
Line 4,360: Line 5,331:
 
<p>Start playing</p>
 
<p>Start playing</p>
 
<p>Playing WAVE '/tmp/test.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo</p>
 
<p>Playing WAVE '/tmp/test.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo</p>
<p>Playing WAVE '/tmp/test.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo</p></li>
+
<p>Playing WAVE '/tmp/test.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo</p>
 +
|}
 +
</li>
 
<li><p>In addition to the onboard MIC, we can also record audio through headphones with MIC function. After inserting the headset with MIC function into the development board, run the '''test_record.sh headset''' command to record a piece of audio through the headset, and then play it to HDMI_TX1 and the headset.</p>
 
<li><p>In addition to the onboard MIC, we can also record audio through headphones with MIC function. After inserting the headset with MIC function into the development board, run the '''test_record.sh headset''' command to record a piece of audio through the headset, and then play it to HDMI_TX1 and the headset.</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''test_record.sh headset'''</p>
 
<p>orangepi@orangepi:~$ '''test_record.sh headset'''</p>
 
<p>Start recording: /tmp/test.wav</p>
 
<p>Start recording: /tmp/test.wav</p>
Line 4,367: Line 5,343:
 
<p>Start playing</p>
 
<p>Start playing</p>
 
<p>Playing WAVE '/tmp/test.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo</p>
 
<p>Playing WAVE '/tmp/test.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo</p>
<p>Playing WAVE '/tmp/test.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo</p></li></ol>
+
<p>Playing WAVE '/tmp/test.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo</p>
 +
|}
 +
</li></ol>
  
 
<span id="temperature-sensor"></span>
 
<span id="temperature-sensor"></span>
 +
 
== Temperature sensor ==
 
== Temperature sensor ==
  
 
The command to view the system temperature sensor is:
 
The command to view the system temperature sensor is:
  
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
orangepi@orangepi:~$ '''sensors'''
 
orangepi@orangepi:~$ '''sensors'''
  
Line 4,381: Line 5,363:
  
 
temp1: +47.2°C
 
temp1: +47.2°C
 +
  
 
littlecore_thermal-virtual-0
 
littlecore_thermal-virtual-0
Line 4,387: Line 5,370:
  
 
temp1: +47.2°C
 
temp1: +47.2°C
 +
  
 
bigcore0_thermal-virtual-0
 
bigcore0_thermal-virtual-0
Line 4,393: Line 5,377:
  
 
temp1: +47.2°C
 
temp1: +47.2°C
 +
  
 
tcpm_source_psy_6_0022-i2c-6-22
 
tcpm_source_psy_6_0022-i2c-6-22
Line 4,401: Line 5,386:
  
 
curr1: 0.00 A (max = +0.00 A)
 
curr1: 0.00 A (max = +0.00 A)
 +
  
 
npu_thermal-virtual-0
 
npu_thermal-virtual-0
Line 4,407: Line 5,393:
  
 
temp1: +47.2°C
 
temp1: +47.2°C
 +
  
 
center_thermal-virtual-0
 
center_thermal-virtual-0
Line 4,413: Line 5,400:
  
 
temp1: +47.2°C
 
temp1: +47.2°C
 +
  
 
bigcore1_thermal-virtual-0
 
bigcore1_thermal-virtual-0
Line 4,419: Line 5,407:
  
 
temp1: +47.2°C
 
temp1: +47.2°C
 +
  
 
soc_thermal-virtual-0
 
soc_thermal-virtual-0
Line 4,425: Line 5,414:
  
 
temp1: +47.2°C (crit = +115.0°C)
 
temp1: +47.2°C (crit = +115.0°C)
 +
|}
  
 
<span id="pin-expansion-interface-pin-instructions"></span>
 
<span id="pin-expansion-interface-pin-instructions"></span>
 +
 
== 40 Pin Expansion Interface Pin Instructions ==
 
== 40 Pin Expansion Interface Pin Instructions ==
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image302.jpeg|575x166px|5725d46c4ff256fbd1d42ed5ba883f9f]]
+
::[[File:plus5-img302.png]]
  
 
</div>
 
</div>
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>Please refer to the figure below for the order of the 40 pin expansion interface pins on the Orange Pi 5 Plus development board:</p>
 
<li><p>Please refer to the figure below for the order of the 40 pin expansion interface pins on the Orange Pi 5 Plus development board:</p>
<p>[[File:media/image303.png|567x418px]]</p></li>
+
<p>[[File:plus5-img303.png]]</p></li>
 
<li><p>The functions of the 40 pin interface pins on the Orange Pi 5 Plus development board are shown in the table below</p>
 
<li><p>The functions of the 40 pin interface pins on the Orange Pi 5 Plus development board are shown in the table below</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
 
<li><p>The following is the complete pin diagram of 40 pin</p>
 
<li><p>The following is the complete pin diagram of 40 pin</p>
<p>[[File:media/image304.png|575x137px]]</p>
+
<p>[[File:plus5-img304.png]]</p>
 
<p>The following is a color map containing some of the content in the above table:</p>
 
<p>The following is a color map containing some of the content in the above table:</p>
<p>[[File:media/image305.png|575x199px]]</p></li>
+
<p>[[File:plus5-img305.png]]</p></li>
 
<li><p>The table below is the picture of the left half of the complete &gt; table above, so you can see it clearly</p>
 
<li><p>The table below is the picture of the left half of the complete &gt; table above, so you can see it clearly</p>
<p>[[File:media/image306.png|576x287px]]</p></li>
+
<p>[[File:plus5-img306.png]]</p></li>
 
<li><p>The table below is the picture of the right half of the complete &gt; table above, so you can see it clearly</p>
 
<li><p>The table below is the picture of the right half of the complete &gt; table above, so you can see it clearly</p>
<p>[[File:media/image307.png|575x263px]]</p>
+
<p>[[File:plus5-img307.png]]</p>
<p>'''The pwm in the above table has marked the base address of the corresponding register, which is useful when checking which pwmchip in /sys/class/pwm/ corresponds to which pwm pin in the 40 pin header.'''</p></li></ol>
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big><p>'''The pwm in the above table has marked the base address of the corresponding register, which is useful when checking which pwmchip in /sys/class/pwm/ corresponds to which pwm pin in the 40 pin header.'''</p></big>
 +
|}
 +
</li></ol>
 
</li>
 
</li>
<li><p>There are a total of '''28''' GPIO ports in the 40 pin interface, and the voltage of all GPIO ports is '''3.3v'''.</p></li></ol>
+
<li><p>There are a total of '''<span style="color:#FF0000">28</span>''' GPIO ports in the 40 pin interface, and the voltage of all GPIO ports is '''<span style="color:#FF0000">3.3v</span>'''.</p></li></ol>
  
 
<span id="how-to-install-wiringop"></span>
 
<span id="how-to-install-wiringop"></span>
 +
 
== How to install wiringOP ==
 
== How to install wiringOP ==
  
'''Note that wiringOP has been pre-installed in the linux image released by Orange Pi. Unless the code of wiringOP is updated, there is no need to re-download, compile and install, just use it directly.'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''Note that wiringOP has been pre-installed in the linux image released by Orange Pi. Unless the code of wiringOP is updated, there is no need to re-download, compile and install, just use it directly.'''
  
 
'''The storage path of the compiled wiringOP deb package in orangepi-build is:'''
 
'''The storage path of the compiled wiringOP deb package in orangepi-build is:'''
  
'''orangepi-build/external/cache/debs/arm64/wiringpi_x.xx.deb'''
+
'''<span style="color:blue">orangepi-build/external/cache/debs/arm64/wiringpi_x.xx.deb</span>'''
  
'''After entering the system, you can run the gpio readall command. If you can see the following output, it means that wiringOP has been pre-installed and can be used normally.'''
+
'''After entering the system, you can run the gpio readall command. If you can see the following output, it means that wiringOP has been pre-installed and can be used normally.'''</big>
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image308.png|575x403px|876iring_001]]
+
[[File:plus5-img308.png]]
  
 
</div>
 
</div>
'''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>'''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>
 +
|}
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>Download the code of wiringOP</p>
 
<li><p>Download the code of wiringOP</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''sudo apt update'''</p>
 
<p>orangepi@orangepi:~$ '''sudo apt update'''</p>
 
<p>orangepi@orangepi:~$ '''sudo apt install -y git'''</p>
 
<p>orangepi@orangepi:~$ '''sudo apt install -y git'''</p>
 
<p>orangepi@orangepi:~$ '''git clone https://github.com/orangepi-xunlong/wiringOP.git -b next'''</p>
 
<p>orangepi@orangepi:~$ '''git clone https://github.com/orangepi-xunlong/wiringOP.git -b next'''</p>
<p>'''Note that Orange Pi 5 Plus needs to download the code of the wiringOP next branch, please don't miss the -b next parameter.'''</p>
+
|}
<p>'''If you have problems downloading the code from GitHub, you can directly use the wiringOP source code that comes with the Linux image, and the storage location is: /usr/src/wiringOP'''</p></li>
+
 
 +
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big><p>'''Note that Orange Pi 5 Plus needs to download the code of the wiringOP next branch, please don't miss the -b next parameter.'''</p>
 +
<p>'''If you have problems downloading the code from GitHub, you can directly use the wiringOP source code that comes with the Linux image, and the storage location is: /usr/src/wiringOP'''</p></big>
 +
|}
 +
</li>
 
<li><p>Compile and install wiringOP</p>
 
<li><p>Compile and install wiringOP</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''cd wiringOP'''</p>
 
<p>orangepi@orangepi:~$ '''cd wiringOP'''</p>
 
<p>orangepi@orangepi:~/wiringOP$ '''sudo ./build clean'''</p>
 
<p>orangepi@orangepi:~/wiringOP$ '''sudo ./build clean'''</p>
<p>orangepi@orangepi:~/wiringOP$ '''sudo ./build'''</p></li>
+
<p>orangepi@orangepi:~/wiringOP$ '''sudo ./build'''</p>
 +
|}
 +
</li>
 
<li><p>Test the output of the gpio readall command as follows</p>
 
<li><p>Test the output of the gpio readall command as follows</p>
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image308.png|575x403px|876iring_001]]
+
[[File:plus5-img308.png]]
  
 
</div></li></ol>
 
</div></li></ol>
  
 
<span id="pin-interface-gpio-i2c-uart-spi-can-and-pwm-test"></span>
 
<span id="pin-interface-gpio-i2c-uart-spi-can-and-pwm-test"></span>
 +
 
== 40 pin interface GPIO, I2C, UART, SPI, CAN and PWM test ==
 
== 40 pin interface GPIO, I2C, UART, SPI, CAN and PWM test ==
  
Line 4,493: Line 5,511:
 
=== 40 pin GPIO port test ===
 
=== 40 pin GPIO port test ===
  
'''The linux system released by Orange Pi has a pre-installed blink_all_gpio program, which will set all 28 GPIO ports in the 40 pins to switch between high and low levels continuously.'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''The linux system released by Orange Pi has a pre-installed blink_all_gpio program, which will set all 28 GPIO ports in the 40 pins to switch between high and low levels continuously.'''
  
 
'''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 switch between 0 and 3.3v continuously. Using this program we can test whether the GPIO port is working properly.'''
 
'''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 switch between 0 and 3.3v continuously. Using this program we can test whether the GPIO port is working properly.'''
  
'''The way to run the blink_all_gpio program is as follows:'''
+
'''The way to run the blink_all_gpio program is as follows:'''</big>
  
orangepi@orangepi5plus:~$ '''sudo blink_all_gpio #Remember to add sudo permission'''
+
orangepi@orangepi5plus:~$ '''sudo blink_all_gpio &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #Remember to add sudo permission'''
  
[sudo] password for orangepi: '''#A password is required here'''
+
[sudo] password for orangepi: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '''#A password is required here'''
 +
|}
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
Line 4,507: Line 5,529:
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image309.png|575x145px|874iring_001]]
+
[[File:plus5-img309.png]]
  
 
</div></li>
 
</div></li>
 
<li><p>First set the GPIO port to output mode, where the third parameter needs to input the serial number of wPi corresponding to the pin</p>
 
<li><p>First set the GPIO port to output mode, where the third parameter needs to input the serial number of wPi corresponding to the pin</p>
<p>root@orangepi:~/wiringOP# '''gpio mode 2 out'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>root@orangepi:~/wiringOP# '''gpio mode <span style="color:#FF0000">2</span> out'''</p>
 +
|}
 +
</li>
 
<li><p>Then set the GPIO port to output a 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.</p>
 
<li><p>Then set the GPIO port to output a 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.</p>
<p>root@orangepi:~/wiringOP# '''gpio write 2 0'''</p>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>root@orangepi:~/wiringOP# '''gpio write 2 <span style="color:#FF0000">0</span>'''</p>
 +
|}
 
<p>Use gpio readall to see that the value (V) of pin 7 has changed to 0</p>
 
<p>Use gpio readall to see that the value (V) of pin 7 has changed to 0</p>
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image310.png|575x127px|874iring_002]]
+
[[File:plus5-img310.png]]
  
 
</div></li>
 
</div></li>
 
<li><p>Then set the GPIO port to output a high level. After setting, you can use a multimeter to measure the voltage value of the pin. If it is 3.3v, it means that the high level is set successfully.</p>
 
<li><p>Then set the GPIO port to output a high level. After setting, you can use a multimeter to measure the voltage value of the pin. If it is 3.3v, it means that the high level is set successfully.</p>
<p>root@orangepi:~/wiringOP# '''gpio write 2 1'''</p>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>root@orangepi:~/wiringOP# '''gpio write 2 <span style="color:#FF0000">1</span>'''</p>
 +
|}
 
<p>Use gpio readall to see that the value (V) of pin 7 has changed to 1</p>
 
<p>Use gpio readall to see that the value (V) of pin 7 has changed to 1</p>
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image311.png|575x131px|875iring_001]]
+
[[File:plus5-img311.png]]
  
 
</div></li>
 
</div></li>
Line 4,531: Line 5,566:
  
 
<span id="how-to-set-the-pull-down-resistance-of-pin-gpio-port"></span>
 
<span id="how-to-set-the-pull-down-resistance-of-pin-gpio-port"></span>
 +
 
=== How to set the pull-down resistance of pin GPIO port ===
 
=== How to set the pull-down resistance of pin GPIO port ===
  
Line 4,537: Line 5,573:
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image311.png|575x131px|875iring_001]]
+
[[File:plus5-img311.png]]
  
 
</div></li>
 
</div></li>
 
<li><p>First, you need to set the GPIO port to the input mode, and the third parameter needs to be the serial number of the wPi corresponding to the input pin</p>
 
<li><p>First, you need to set the GPIO port to the input mode, and the third parameter needs to be the serial number of the wPi corresponding to the input pin</p>
<p>root@orangepi:~/wiringOP# '''gpio mode 2 in'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>root@orangepi:~/wiringOP# '''gpio mode <span style="color:#FF0000">2</span> in'''</p>
 +
|}
 +
</li>
 
<li><p>After setting to input mode, execute the following command to set the GPIO port to pull-up mode</p>
 
<li><p>After setting to input mode, execute the following command to set the GPIO port to pull-up mode</p>
<p>root@orangepi:~/wiringOP# '''gpio mode 2 up'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>root@orangepi:~/wiringOP# '''gpio mode <span style="color:#FF0000">2</span> up'''</p>
 +
|}
 +
</li>
 
<li><p>Then enter the following command to read the level of the GPIO port, if the level is 1, it means that the pull-up mode is set successfully</p>
 
<li><p>Then enter the following command to read the level of the GPIO port, if the level is 1, it means that the pull-up mode is set successfully</p>
<p>root@orangepi:~/wiringOP# '''gpio read 2'''</p>
+
{| class="wikitable" style="width:800px;"
<p>'''1'''</p></li>
+
|-
 +
|
 +
<p>root@orangepi:~/wiringOP# '''gpio read <span style="color:#FF0000">2</span>'''</p>
 +
<p>'''1'''</p>
 +
|}
 +
</li>
 
<li><p>Then execute the following command to set the GPIO port to pull-down mode</p>
 
<li><p>Then execute the following command to set the GPIO port to pull-down mode</p>
<p>root@orangepi:~/wiringOP# '''gpio mode 2 down'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>root@orangepi:~/wiringOP# '''gpio mode <span style="color:#FF0000">2</span> down'''</p>
 +
|}
 +
</li>
 
<li><p>Then enter the following command to read the level of the GPIO port, if the level is 0, the pull-down mode is set successfully</p>
 
<li><p>Then enter the following command to read the level of the GPIO port, if the level is 0, the pull-down mode is set successfully</p>
<p>root@orangepi:~/wiringOP# '''gpio read 2'''</p>
+
{| class="wikitable" style="width:800px;"
<p>'''0'''</p></li></ol>
+
|-
 +
|
 +
<p>root@orangepi:~/wiringOP# '''gpio read <span style="color:#FF0000">2</span>'''</p>
 +
<p>'''0'''</p>
 +
|}
 +
</li></ol>
  
 
<span id="pin-spi-test"></span>
 
<span id="pin-spi-test"></span>
 +
 
=== 40 pin SPI test ===
 
=== 40 pin SPI test ===
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>As can be seen from the figure below, the SPIs available for Orange Pi 5 Plus are SPI0 and SPI4</p>
 
<li><p>As can be seen from the figure below, the SPIs available for Orange Pi 5 Plus are SPI0 and SPI4</p>
<p>[[File:media/image304.png|575x137px]]</p></li>
+
<p>[[File:plus5-img304.png]]</p></li>
<li><p>The corresponding pins of SPI0 and SPI4 in 40pin are shown in the table below. SPI4_M1 and SPI4_M2 can only use one of them at the same time, and they cannot be used at the same time. They are all the same SPI4, but they are connected to different pins. Please don't think that they are two different sets of SPI buses.</p></li></ol>
+
<li><p>The corresponding pins of SPI0 and SPI4 in 40pin are shown in the table below. SPI4_M1 and SPI4_M2 can only use one of them at the same time, and they cannot be used at the same time. They are all the same SPI4, but they are connected to different pins. Please don't think that they are two different sets of SPI buses.</p></li>
  
{| class="wikitable"
+
{| class="wikitable" style="width:800px;"
 
|-
 
|-
 
|
 
|
Line 4,591: Line 5,653:
 
| '''Pin 26'''
 
| '''Pin 26'''
 
| '''Pin 38'''
 
| '''Pin 38'''
| '''none'''
+
| '''<span style="color:#FF0000">none</span>'''
 
|-
 
|-
| '''dtbo confi guration'''
+
| '''dtbo configuration'''
| '''spi 0-m2-cs0-spidev'''
+
| '''spi0-m2-cs0-spidev'''
  
'''spi 0-m2-cs1-spidev'''
+
'''spi0-m2-cs1-spidev'''
  
 
'''spi0-m2 -cs0-cs1-spidev'''
 
'''spi0-m2 -cs0-cs1-spidev'''
  
| '''spi 4-m1-cs0-spidev'''
+
| '''spi4-m1-cs0-spidev'''
  
'''spi 4-m1-cs1-spidev'''
+
'''spi4-m1-cs1-spidev'''
  
 
'''spi4-m1 -cs0-cs1-spidev'''
 
'''spi4-m1 -cs0-cs1-spidev'''
  
| '''spi4-m 2-cs0-spidev'''
+
| '''spi4-m2-cs0-spidev'''
 
|}
 
|}
 
+
</ol>
 
<ol start="3" style="list-style-type: decimal;">
 
<ol start="3" 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>
 
<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;">
 
<ol style="list-style-type: lower-alpha;">
<li><p>First run '''orangepi-config''', normal users remember to add &gt; '''sudo''' permission</p>
+
<li><p>First run '''orangepi-config''', normal users remember to add '''sudo''' permission</p>
<p>orangepi@orangepi:~$ '''sudo orangepi-config'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''sudo orangepi-config'''</p>
 +
|}
 +
</li>
 
<li><p>Then select '''System'''</p>
 
<li><p>Then select '''System'''</p>
<p>[[File:media/image234.png|389x180px]]</p></li>
+
<p>[[File:plus5-img234.png]]</p></li>
 
<li><p>Then select '''Hardware'''</p>
 
<li><p>Then select '''Hardware'''</p>
<p>[[File:media/image235.png|389x169px]]</p></li>
+
<p>[[File:plus5-img235.png]]</p></li>
<li><p>Then use the arrow keys on the keyboard to navigate to the &gt; position shown in the figure below, and then use the '''space''' &gt; to select the SPI configuration you want to open</p>
+
<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:media/image312.png|388x132px]]</p></li>
+
<p>[[File:plus5-img312.png]]</p></li>
 
<li><p>Then select '''&lt;Save&gt;''' to save</p>
 
<li><p>Then select '''&lt;Save&gt;''' to save</p>
<p>[[File:media/image263.png|391x113px]]</p></li>
+
<p>[[File:plus5-img263.png]]</p></li>
 
<li><p>Then select '''&lt;Back&gt;'''</p>
 
<li><p>Then select '''&lt;Back&gt;'''</p>
<p>[[File:media/image264.png|404x123px]]</p></li>
+
<p>[[File:plus5-img264.png]]</p></li>
<li><p>Then select '''&lt;Reboot&gt;''' to restart the system to make the &gt; configuration take effect</p>
+
<li><p>Then select '''&lt;Reboot&gt;''' to restart the system to make the configuration take effect</p>
<p>[[File:media/image239.png|332x146px]]</p></li></ol>
+
<p>[[File:plus5-img239.png]]</p></li></ol>
 
</li>
 
</li>
 
<li><p>After restarting, enter the system and first check whether there is a '''spidevx.x''' device node in the linux system. If it exists, it means that the SPI has been set up and can be used directly.</p>
 
<li><p>After restarting, enter the system and first check whether there is a '''spidevx.x''' device node in the linux system. If it exists, it means that the SPI has been set up and can be used directly.</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''ls /dev/spidev*'''</p>
 
<p>orangepi@orangepi:~$ '''ls /dev/spidev*'''</p>
 
<p>/dev/spidev0.0 /dev/spidev0.1 /dev/spidev4.0 /dev/spidev4.1</p>
 
<p>/dev/spidev0.0 /dev/spidev0.1 /dev/spidev4.0 /dev/spidev4.1</p>
<p>'''The above is the result displayed after turning on spi0-m2-cs0-cs1-spidev and spi4-m1-cs0-cs1-spidev.'''</p></li>
+
|}
 +
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big><p>'''The above is the result displayed after turning on spi0-m2-cs0-cs1-spidev and spi4-m1-cs0-cs1-spidev.'''</p></big>
 +
|}
 +
</li>
 
<li><p>Then do not short-circuit the MOSI and MISO pins of SPI0 or SPI4, the output result of running spidev_test is as follows, you can see that the data of TX and RX are inconsistent</p>
 
<li><p>Then do not short-circuit the MOSI and MISO pins of SPI0 or SPI4, the output result of running spidev_test is as follows, you can see that the data of TX and RX are inconsistent</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''sudo spidev_test -v -D /dev/spidev4.0'''</p>
 
<p>orangepi@orangepi:~$ '''sudo spidev_test -v -D /dev/spidev4.0'''</p>
 
<p>'''or'''</p>
 
<p>'''or'''</p>
Line 4,638: Line 5,717:
 
<p>bits per word: 8</p>
 
<p>bits per word: 8</p>
 
<p>max speed: 500000 Hz (500 KHz)</p>
 
<p>max speed: 500000 Hz (500 KHz)</p>
<p>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 | ......@.…▒..................▒.</p>
+
<p>TX | 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 | ......@.…▒..................▒.</p>
<p>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 | ............................….</p></li>
+
<p>RX | 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 | ............................….</p>
 +
|}
 +
</li>
 
<li><p>Then short-circuit the MOSI and MISO pins of SPI0 or SPI4, and then run the output of spidev_test as follows. You can see that the sent and received data are the same, indicating that the SPI loopback test is normal.</p>
 
<li><p>Then short-circuit the MOSI and MISO pins of SPI0 or SPI4, and then run the output of spidev_test as follows. You can see that the sent and received data are the same, indicating that the SPI loopback test is normal.</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''sudo spidev_test -v -D /dev/spidev4.0'''</p>
 
<p>orangepi@orangepi:~$ '''sudo spidev_test -v -D /dev/spidev4.0'''</p>
 
<p>'''or'''</p>
 
<p>'''or'''</p>
Line 4,647: Line 5,731:
 
<p>bits per word: 8</p>
 
<p>bits per word: 8</p>
 
<p>max speed: 500000 Hz (500 KHz)</p>
 
<p>max speed: 500000 Hz (500 KHz)</p>
<p>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 | ......@.…▒..................▒.</p>
+
<p>TX | 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 | ......@.…▒..................▒.</p>
<p>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 | ......@.…▒..................▒.</p></li></ol>
+
<p>RX | 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 | ......@.…▒..................▒.</p>
 +
|}
 +
</li></ol>
  
 
<span id="pin-i2c-test"></span>
 
<span id="pin-i2c-test"></span>
 +
 
=== 40 pin I2C test ===
 
=== 40 pin I2C test ===
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>As can be seen from the table below, the available i2c for Orange Pi 5 Plus is i2c2, i2c4, i2c5 and i2c8, a total of four sets of i2c buses.</p>
 
<li><p>As can be seen from the table below, the available i2c for Orange Pi 5 Plus is i2c2, i2c4, i2c5 and i2c8, a total of four sets of i2c buses.</p>
<p>[[File:media/image304.png|575x137px]]</p></li>
+
<p>[[File:plus5-img304.png]]</p></li>
<li><p>The corresponding pins of the 4 groups of I2C buses in 40pin are shown in the table below. I2C2_M0 and I2C2_M4 can only use one of them at the same time, and they cannot be used at the same time. They are all the same I2C2, but they are connected to different pins. Please don’t think that they are two different sets of I2C2 buses.</p></li></ol>
+
<li><p>The corresponding pins of the 4 groups of I2C buses in 40pin are shown in the table below. I2C2_M0 and I2C2_M4 can only use one of them at the same time, and they cannot be used at the same time. They are all the same I2C2, but they are connected to different pins. Please don’t think that they are two different sets of I2C2 buses.</p></li>
  
{| class="wikitable"
+
{| class="wikitable" style="width:800px;"
 
|-
 
|-
 
| style="text-align: left;"| '''I2C bus'''
 
| style="text-align: left;"| '''I2C bus'''
Line 4,690: Line 5,777:
 
| style="text-align: left;"| '''i2c8-m2'''
 
| style="text-align: left;"| '''i2c8-m2'''
 
|}
 
|}
 
+
</ol>
 
<ol start="3" style="list-style-type: decimal;">
 
<ol start="3" style="list-style-type: decimal;">
 
<li><p>In the linux system, the I2C bus in the 40 pin is closed by default, and it needs to be opened manually to use it. The detailed steps are as follows:</p>
 
<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:</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li><p>First run '''orangepi-config''', normal users remember to add &gt; '''sudo''' permission</p>
+
<li><p>First run '''orangepi-config''', normal users remember to add '''sudo''' permission</p>
<p>orangepi@orangepi:~$ '''sudo orangepi-config'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''sudo orangepi-config'''</p>
 +
|}
 +
</li>
 
<li><p>Then select '''System'''</p>
 
<li><p>Then select '''System'''</p>
<p>[[File:media/image234.png|397x184px]]</p></li>
+
<p>[[File:plus5-img234.png]]</p></li>
 
<li><p>Then select '''Hardware'''</p>
 
<li><p>Then select '''Hardware'''</p>
<p>[[File:media/image235.png|401x174px]]</p></li>
+
<p>[[File:plus5-img235.png]]</p></li>
<li><p>Then use the arrow keys on the keyboard to navigate to the &gt; position shown in the figure below, and then use the '''space''' &gt; to select the I2C configuration you want to open</p>
+
<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:media/image313.png|406x153px]]</p></li>
+
<p>[[File:plus5-img313.png]]</p></li>
 
<li><p>Then select '''&lt;Save&gt;''' to save</p>
 
<li><p>Then select '''&lt;Save&gt;''' to save</p>
<p>[[File:media/image263.png|380x109px]]</p></li>
+
<p>[[File:plus5-img263.png]]</p></li>
 
<li><p>Then select '''&lt;Back&gt;'''</p>
 
<li><p>Then select '''&lt;Back&gt;'''</p>
<p>[[File:media/image264.png|355x108px]]</p></li>
+
<p>[[File:plus5-img264.png]]</p></li>
<li><p>Then select '''&lt;Reboot&gt;''' to restart the system to make the &gt; configuration take effect</p>
+
<li><p>Then select '''&lt;Reboot&gt;''' to restart the system to make the configuration take effect</p>
<p>[[File:media/image239.png|323x142px]]</p></li></ol>
+
<p>[[File:plus5-img239.png]]</p></li></ol>
 
</li>
 
</li>
 
<li><p>After starting the linux system, first confirm that there are device nodes that need to use I2C under '''/dev'''</p>
 
<li><p>After starting the linux system, first confirm that there are device nodes that need to use I2C under '''/dev'''</p>
<p>orangepi@orangepi:~$ '''ls /dev/i2c-*'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''ls /dev/i2c-*'''</p>
 +
|}
 +
</li>
 
<li><p>Then connect an I2C device to the I2C pin corresponding to the 40 pin interface</p></li>
 
<li><p>Then connect an I2C device to the I2C pin corresponding to the 40 pin interface</p></li>
 
<li><p>Then use the '''i2cdetect -y''' command, if the address of the connected i2c device can be detected, it means that i2c can be used normally</p>
 
<li><p>Then use the '''i2cdetect -y''' command, if the address of the connected i2c device can be detected, it means that i2c can be used normally</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''sudo i2cdetect -y 2''' #i2c2 command</p>
 
<p>orangepi@orangepi:~$ '''sudo i2cdetect -y 2''' #i2c2 command</p>
 
<p>orangepi@orangepi:~$ '''sudo i2cdetect -y 4''' #i2c4 command</p>
 
<p>orangepi@orangepi:~$ '''sudo i2cdetect -y 4''' #i2c4 command</p>
 
<p>orangepi@orangepi:~$ '''sudo i2cdetect -y 5''' #i2c8 command</p>
 
<p>orangepi@orangepi:~$ '''sudo i2cdetect -y 5''' #i2c8 command</p>
<p>orangepi@orangepi:~$ '''sudo i2cdetect -y 8''' #i2c8 command</p></li></ol>
+
<p>orangepi@orangepi:~$ '''sudo i2cdetect -y 8''' #i2c8 command</p>
 
+
|}
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image314.png|336x170px|521iring_001]]
+
[[File:plus5-img314.png]]
  
 
</div>
 
</div>
 +
</li></ol>
 +
 
<span id="pin-uart-test"></span>
 
<span id="pin-uart-test"></span>
 +
 
=== 40 pin UART test ===
 
=== 40 pin UART test ===
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>As can be seen from the table below, the uarts available for Orange Pi 5 Plus are uart1, uart3, uart4, uart6, uart7 and uart8, a total of 6 sets of uart buses</p>
 
<li><p>As can be seen from the table below, the uarts available for Orange Pi 5 Plus are uart1, uart3, uart4, uart6, uart7 and uart8, a total of 6 sets of uart buses</p>
<p>[[File:media/image304.png|575x137px]]</p></li>
+
<p>[[File:plus5-img304.png]]</p></li>
<li><p>The corresponding pins of the 6 groups of UART buses in 40pin are shown in the following table:</p></li></ol>
+
<li><p>The corresponding pins of the 6 groups of UART buses in 40pin are shown in the following table:</p></li>
  
{| class="wikitable"
+
{| class="wikitable" style="width:800px;"
 
|-
 
|-
 
| style="text-align: left;"| '''UART bus'''
 
| style="text-align: left;"| '''UART bus'''
Line 4,768: Line 5,871:
 
| style="text-align: left;"| '''uart8-m1'''
 
| style="text-align: left;"| '''uart8-m1'''
 
|}
 
|}
 
+
</ol>
 
<ol start="3" style="list-style-type: decimal;">
 
<ol start="3" style="list-style-type: decimal;">
 
<li><p>In the linux system, the UART in the 40 pin is closed by default, and it needs to be opened manually to use it. The detailed steps are as follows:</p>
 
<li><p>In the linux system, the UART in the 40 pin is closed by default, and it needs to be opened manually to use it. The detailed steps are as follows:</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li><p>First run '''orangepi-config''', normal users remember to add &gt; '''sudo''' permission</p>
+
<li><p>First run '''orangepi-config''', normal users remember to add '''sudo''' permission</p>
<p>orangepi@orangepi:~$ '''sudo orangepi-config'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''sudo orangepi-config'''</p>
 +
|}
 +
</li>
 
<li><p>Then select '''System'''</p>
 
<li><p>Then select '''System'''</p>
<p>[[File:media/image234.png|403x186px]]</p></li>
+
<p>[[File:plus5-img234.png]]</p></li>
 
<li><p>Then select '''Hardware'''</p>
 
<li><p>Then select '''Hardware'''</p>
<p>[[File:media/image235.png|413x179px]]</p></li>
+
<p>[[File:plus5-img235.png]]</p></li>
<li><p>Then use the arrow keys on the keyboard to navigate to the &gt; position shown in the figure below, and then use the space to &gt; select the UART configuration you want to open</p>
+
<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:media/image315.png|408x144px]]</p></li>
+
<p>[[File:plus5-img315.png]]</p></li>
 
<li><p>Then select '''&lt;Save&gt;''' to save</p>
 
<li><p>Then select '''&lt;Save&gt;''' to save</p>
<p>[[File:media/image263.png|405x117px]]</p></li>
+
<p>[[File:plus5-img263.png]]</p></li>
 
<li><p>Then select '''&lt;Back&gt;'''</p>
 
<li><p>Then select '''&lt;Back&gt;'''</p>
<p>[[File:media/image264.png|401x122px]]</p></li>
+
<p>[[File:plus5-img264.png]]</p></li>
<li><p>Then select '''&lt;Reboot&gt;''' to restart the system to make the &gt; configuration take effect</p>
+
<li><p>Then select '''&lt;Reboot&gt;''' to restart the system to make the configuration take effect</p>
<p>[[File:media/image239.png|320x141px]]</p></li></ol>
+
<p>[[File:plus5-img239.png]]</p></li></ol>
 
</li>
 
</li>
 
<li><p>After entering the linux system, first confirm whether there is a device node corresponding to uart under /dev</p>
 
<li><p>After entering the linux system, first confirm whether there is a device node corresponding to uart under /dev</p>
<p>orangepi@orangepi:~$ '''ls /dev/ttyS*'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''ls /dev/ttyS*'''</p>
 +
|}
 +
</li>
 
<li><p>Then start to test the uart interface, first use the DuPont line to short the rx and tx pins of the uart interface to be tested</p></li>
 
<li><p>Then start to test the uart interface, first use the DuPont line to short the rx and tx pins of the uart interface to be tested</p></li>
 
<li><p>Use the '''gpio serial''' command to test the loopback function of the serial port as shown below. If you can see the following print, it means that the serial port communication is normal (ttySX needs to be replaced with the node name corresponding to uart, please do not copy it)</p>
 
<li><p>Use the '''gpio serial''' command to test the loopback function of the serial port as shown below. If you can see the following print, it means that the serial port communication is normal (ttySX needs to be replaced with the node name corresponding to uart, please do not copy it)</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''sudo gpio serial /dev/ttySX'''</p>
 
<p>orangepi@orangepi:~$ '''sudo gpio serial /dev/ttySX'''</p>
 
<p>[sudo] password for orangepi: #enter password here</p>
 
<p>[sudo] password for orangepi: #enter password here</p>
Line 4,798: Line 5,914:
 
<p>Out: 3: -&gt; 3</p>
 
<p>Out: 3: -&gt; 3</p>
 
<p>Out: 4: -&gt; 4</p>
 
<p>Out: 4: -&gt; 4</p>
<p>Out: 5: -&gt; 5^C</p></li></ol>
+
<p>Out: 5: -&gt; 5^C</p>
 +
|}
 +
</li></ol>
  
 
<span id="pwm-test-method"></span>
 
<span id="pwm-test-method"></span>
 +
 
=== PWM test method ===
 
=== PWM test method ===
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>As can be seen from the table below, the available PWM for Orange Pi 5 Plus includes six channels of PWM: pwm0, pwm1, pwm11, pwm12, pwm13 and pwm14</p>
 
<li><p>As can be seen from the table below, the available PWM for Orange Pi 5 Plus includes six channels of PWM: pwm0, pwm1, pwm11, pwm12, pwm13 and pwm14</p>
<p>[[File:media/image304.png|575x137px]]</p></li>
+
<p>[[File:plus5-img304.png]]</p></li>
<li><p>The corresponding pins of PWM in 40pin are shown in the table below. Only one of PWM0_M0 and PWM0_M2, PWM1_M0 and PWM1_M2, PWM14_M0 and PWM14_M2 can be used at the same time, and they cannot be used at the same time. They are all the same PWM, but they are connected to different pins. Please don’t think that they are two different PWM bus.</p></li></ol>
+
<li><p>The corresponding pins of PWM in 40pin are shown in the table below. Only one of PWM0_M0 and PWM0_M2, PWM1_M0 and PWM1_M2, PWM14_M0 and PWM14_M2 can be used at the same time, and they cannot be used at the same time. They are all the same PWM, but they are connected to different pins. Please don’t think that they are two different PWM bus.</p></li>
  
{| class="wikitable"
+
{| class="wikitable" style="width:800px;"  
 
|-
 
|-
 
| style="text-align: left;"| '''PWM总线'''
 
| style="text-align: left;"| '''PWM总线'''
Line 4,850: Line 5,969:
 
| style="text-align: left;"| '''pwm14-m0'''
 
| style="text-align: left;"| '''pwm14-m0'''
 
|}
 
|}
 
+
</ol>
 
<ol start="3" style="list-style-type: decimal;">
 
<ol start="3" style="list-style-type: decimal;">
 
<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:</p>
 
<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:</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li><p>First run '''orangepi-config''', normal users remember to add &gt; '''sudo''' permission</p>
+
<li><p>First run '''orangepi-config''', normal users remember to add '''sudo''' permission</p>
<p>orangepi@orangepi:~$ '''sudo orangepi-config'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''sudo orangepi-config'''</p>
 +
|}
 +
</li>
 
<li><p>Then select '''System'''</p>
 
<li><p>Then select '''System'''</p>
<p>[[File:media/image234.png|416x192px]]</p></li>
+
<p>[[File:plus5-img234.png]]</p></li>
 
<li><p>Then select '''Hardware'''</p>
 
<li><p>Then select '''Hardware'''</p>
<p>[[File:media/image235.png|457x198px]]</p></li>
+
<p>[[File:plus5-img235.png]]</p></li>
<li><p>Then use the arrow keys on the keyboard to navigate to the &gt; position shown in the figure below, and then use the space to &gt; select the PWM configuration you want to open</p>
+
<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:media/image316.png|279x222px]]</p></li>
+
<p>[[File:plus5-img316.png]]</p></li>
 
<li><p>Then select '''&lt;Save&gt;''' to save</p>
 
<li><p>Then select '''&lt;Save&gt;''' to save</p>
<p>[[File:media/image263.png|368x106px]]</p></li>
+
<p>[[File:plus5-img263.png]]</p></li>
 
<li><p>Then select '''&lt;Back&gt;'''</p>
 
<li><p>Then select '''&lt;Back&gt;'''</p>
<p>[[File:media/image264.png|370x112px]]</p></li>
+
<p>[[File:plus5-img264.png]]</p></li>
<li><p>Then select '''&lt;Reboot&gt;''' to restart the system to make the &gt; configuration take effect</p>
+
<li><p>Then select '''&lt;Reboot&gt;''' to restart the system to make the configuration take effect</p>
<p>[[File:media/image239.png|303x133px]]</p></li></ol>
+
<p>[[File:plus5-img239.png]]</p></li></ol>
 
</li>
 
</li>
 
<li><p>After opening a pwm, there will be an extra pwmchipX in '''/sys/class/pwm/''' (X is a specific number), for example, after opening pwm14, check the pwmchipX under '''/sys/class/pwm/''' two became three</p>
 
<li><p>After opening a pwm, there will be an extra pwmchipX in '''/sys/class/pwm/''' (X is a specific number), for example, after opening pwm14, check the pwmchipX under '''/sys/class/pwm/''' two became three</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''ls /sys/class/pwm/'''</p>
 
<p>orangepi@orangepi:~$ '''ls /sys/class/pwm/'''</p>
<p>pwmchip0 pwmchip1 pwmchip2</p></li>
+
<p>pwmchip0 pwmchip1 pwmchip2</p>
 +
|}
 +
</li>
 
<li><p>Which pwmchip above corresponds to pwm14? Let’s check the output of the ls /sys/class/pwm/ -l command first, as shown below:</p>
 
<li><p>Which pwmchip above corresponds to pwm14? Let’s check the output of the ls /sys/class/pwm/ -l command first, as shown below:</p>
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image317.png|576x77px|985iring_001]]
+
[[File:plus5-img317.png]]
  
 
</div></li>
 
</div></li>
 
<li><p>Then it can be known from the table below that the base address of the pwm14 register is febf0020, and then look at the output of the '''ls /sys/class/pwm/ -l''' command, you can see that pwmchip2 is linked to febf0020.pwm, so pwm14 corresponds to pwmchip as pwmchip2</p>
 
<li><p>Then it can be known from the table below that the base address of the pwm14 register is febf0020, and then look at the output of the '''ls /sys/class/pwm/ -l''' command, you can see that pwmchip2 is linked to febf0020.pwm, so pwm14 corresponds to pwmchip as pwmchip2</p>
<p>[[File:media/image318.png|575x287px]]</p></li>
+
<p>[[File:plus5-img318.png]]</p></li>
<li><p>Then use the following command to make pwm14 output a 50Hz square wave (please switch to the root user first, and then execute the following command)</p></li></ol>
+
<li><p>Then use the following command to make pwm14 output a 50Hz square wave (please switch to the root user first, and then execute the following command)</p></li>
  
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
root@orangepi:~# '''echo 0 &gt; /sys/class/pwm/pwmchip2/export'''
 
root@orangepi:~# '''echo 0 &gt; /sys/class/pwm/pwmchip2/export'''
  
Line 4,890: Line 6,022:
 
root@orangepi:~# '''echo 1 &gt; /sys/class/pwm/pwmchip2/pwm0/enable'''
 
root@orangepi:~# '''echo 1 &gt; /sys/class/pwm/pwmchip2/pwm0/enable'''
  
[[File:media/image319.png|575x346px]]
+
[[File:plus5-img319.png]]
 
+
|}
 +
</ol>
 
<ol start="8" style="list-style-type: decimal;">
 
<ol start="8" style="list-style-type: decimal;">
 
<li>The test method of pwm14 demonstrated above is similar to other pwm test methods.</li></ol>
 
<li>The test method of pwm14 demonstrated above is similar to other pwm test methods.</li></ol>
  
 
<span id="can-test-method"></span>
 
<span id="can-test-method"></span>
 +
 
=== CAN test method ===
 
=== CAN test method ===
  
Line 4,903: Line 6,037:
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>As can be seen from the table below, the available CAN bus for Orange Pi 5 Plus is CAN0 and CAN1, a total of two CAN buses</p>
 
<li><p>As can be seen from the table below, the available CAN bus for Orange Pi 5 Plus is CAN0 and CAN1, a total of two CAN buses</p>
<p>[[File:media/image320.png|574x137px]]</p></li>
+
<p>[[File:plus5-img320.png]]</p></li>
 
<li><p>In the linux system, the CAN 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>
 
<li><p>In the linux system, the CAN 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;">
 
<ol style="list-style-type: lower-alpha;">
 
<li><p>First run '''orangepi-config''', normal users remember to add &gt; '''sudo''' permission</p>
 
<li><p>First run '''orangepi-config''', normal users remember to add &gt; '''sudo''' permission</p>
<p>orangepi@orangepi:~$ '''sudo orangepi-config'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''sudo orangepi-config'''</p>
 +
|}
 +
</li>
 
<li><p>Then select '''System'''</p>
 
<li><p>Then select '''System'''</p>
<p>[[File:media/image234.png|374x173px]]</p></li>
+
<p>[[File:plus5-img234.png]]</p></li>
 
<li><p>Then select '''Hardware'''</p>
 
<li><p>Then select '''Hardware'''</p>
<p>[[File:media/image235.png|370x160px]]</p></li>
+
<p>[[File:plus5-img235.png]]</p></li>
 
<li><p>Then use the arrow keys on the keyboard to navigate to the &gt; position shown in the figure below, and then use the space to &gt; select the CAN configuration you want to open ('''can0-m0''' and &gt; '''cam1-m0''' are optional for OPi 5 Plus)</p>
 
<li><p>Then use the arrow keys on the keyboard to navigate to the &gt; position shown in the figure below, and then use the space to &gt; select the CAN configuration you want to open ('''can0-m0''' and &gt; '''cam1-m0''' are optional for OPi 5 Plus)</p>
<p>[[File:media/image321.png|370x61px]]</p></li>
+
<p>[[File:plus5-img321.png]]</p></li>
 
<li><p>Then select '''&lt;Save&gt;''' to save</p>
 
<li><p>Then select '''&lt;Save&gt;''' to save</p>
<p>[[File:media/image263.png|332x96px]]</p></li>
+
<p>[[File:plus5-img63.png]]</p></li>
 
<li><p>Then select '''&lt;Back&gt;'''</p>
 
<li><p>Then select '''&lt;Back&gt;'''</p>
<p>[[File:media/image264.png|341x103px]]</p></li>
+
<p>[[File:plus5-img264.png]]</p></li>
 
<li><p>Then select '''&lt;Reboot&gt;''' to restart the system to make the &gt; configuration take effect</p>
 
<li><p>Then select '''&lt;Reboot&gt;''' to restart the system to make the &gt; configuration take effect</p>
<p>[[File:media/image239.png|283x125px]]</p></li></ol>
+
<p>[[File:plus5-img239.png]]</p></li></ol>
 
</li>
 
</li>
 
<li><p>After entering the Linux system, use the '''sudo ifconfig -a''' command, if you can see the CAN device node, it means that the CAN has been opened correctly</p>
 
<li><p>After entering the Linux system, use the '''sudo ifconfig -a''' command, if you can see the CAN device node, it means that the CAN has been opened correctly</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''sudo ifconfig -a'''</p>
 
<p>orangepi@orangepi:~$ '''sudo ifconfig -a'''</p>
 
<p>can0: flags=128&lt;NOARP&gt; mtu 16</p>
 
<p>can0: flags=128&lt;NOARP&gt; mtu 16</p>
<p>unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 10 (UNSPEC)</p>
+
::<p>unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 10 (UNSPEC)</p>
<p>RX packets 0 bytes 0 (0.0 B)</p>
+
::<p>RX packets 0 bytes 0 (0.0 B)</p>
<p>RX errors 0 dropped 0 overruns 0 frame 0</p>
+
::<p>RX errors 0 dropped 0 overruns 0 frame 0</p>
<p>TX packets 0 bytes 0 (0.0 B)</p>
+
::<p>TX packets 0 bytes 0 (0.0 B)</p>
<p>TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0</p>
+
::<p>TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0</p>
<p>device interrupt 94</p>
+
::<p>device interrupt 94</p>
 
<p>can1: flags=128&lt;NOARP&gt; mtu 16</p>
 
<p>can1: flags=128&lt;NOARP&gt; mtu 16</p>
<p>unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 10 (UNSPEC)</p>
+
::<p>unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 10 (UNSPEC)</p>
<p>RX packets 0 bytes 0 (0.0 B)</p>
+
::<p>RX packets 0 bytes 0 (0.0 B)</p>
<p>RX errors 0 dropped 0 overruns 0 frame 0</p>
+
::<p>RX errors 0 dropped 0 overruns 0 frame 0</p>
<p>TX packets 0 bytes 0 (0.0 B)</p>
+
::<p>TX packets 0 bytes 0 (0.0 B)</p>
<p>TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0</p>
+
::<p>TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0</p>
<p>device interrupt 95</p></li>
+
::<p>device interrupt 95</p>
<li><p>The corresponding pins of CAN0 and CAN1 are</p></li></ol>
+
|}
 +
</li>
 +
<li><p>The corresponding pins of CAN0 and CAN1 are</p></li>
  
{| class="wikitable"
+
{| class="wikitable" style="width:800px;"  
 
|-
 
|-
 
|
 
|
Line 4,953: Line 6,097:
 
| style="text-align: left;"| '''Corresponding to pin 16 of 40pin'''
 
| style="text-align: left;"| '''Corresponding to pin 16 of 40pin'''
 
|}
 
|}
 +
</ol>
 +
<span id="use-the-canalyst-ii-analyzer-to-test-sending-and-receiving-messages"></span>
  
<span id="use-the-canalyst-ii-analyzer-to-test-sending-and-receiving-messages"></span>
 
 
==== Use the CANalyst-II analyzer to test sending and receiving messages ====
 
==== Use the CANalyst-II analyzer to test sending and receiving messages ====
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>The CANalyst-II analyzer used in the test is shown in the figure below</p>
 
<li><p>The CANalyst-II analyzer used in the test is shown in the figure below</p>
<p>[[File:media/image322.png|165x134px]]</p></li>
+
<p>[[File:plus5-img322.png]]</p></li>
 
<li><p>CANalyst-II analyzer data download link</p>
 
<li><p>CANalyst-II analyzer data download link</p>
<p>[https://www.zhcxgd.com/3.html '''https://www.zhcxgd.com/3.html''']</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
'''https://www.zhcxgd.com/3.html'''
 +
|}
 +
</li>
 
<li><p>First install the software USBCANToolSetup</p>
 
<li><p>First install the software USBCANToolSetup</p>
<p>[[File:media/image323.png|553x94px]]</p></li>
+
<p>[[File:plus5-img323.png]]</p></li>
 
<li><p>The shortcut after installation of USBCANToolSetup is</p>
 
<li><p>The shortcut after installation of USBCANToolSetup is</p>
<p>[[File:media/image324.png|59x80px]]</p></li>
+
<p>[[File:plus5-img324.png]]</p></li>
 
<li><p>In addition, you need to install the USB driver</p>
 
<li><p>In addition, you need to install the USB driver</p>
<p>[[File:media/image325.png|553x112px]]</p></li>
+
<p>[[File:plus5-img325.png]]</p></li>
 
<li><p>The end of the USB interface of the CANalyst-II analyzer needs to be connected to the USB interface of the computer</p>
 
<li><p>The end of the USB interface of the CANalyst-II analyzer needs to be connected to the USB interface of the computer</p>
<p>[[File:media/image326.png|137x121px]]</p></li>
+
<p>[[File:plus5-img326.png]]</p></li>
 
<li><p>To test the CAN function, you need to prepare a CAN transceiver as shown in the figure below. The main function of the CAN transceiver is to convert the TTL signal of the CAN controller into the differential signal of the CAN bus</p>
 
<li><p>To test the CAN function, you need to prepare a CAN transceiver as shown in the figure below. The main function of the CAN transceiver is to convert the TTL signal of the CAN controller into the differential signal of the CAN bus</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li><p>The 3.3V pin of the CAN transceiver needs to be connected to the &gt; 3.3V pin in the 40 pins of the development board</p></li>
+
<li><p>The 3.3V pin of the CAN transceiver needs to be connected to the 3.3V pin in the 40 pins of the development board</p></li>
<li><p>The GND pin of the CAN transceiver needs to be connected to the &gt; GND pin in the 40 pin of the development board</p></li>
+
<li><p>The GND pin of the CAN transceiver needs to be connected to the GND pin in the 40 pin of the development board</p></li>
<li><p>The CAN TX pin of the CAN transceiver needs to be connected to &gt; the TX pin of the CAN bus in the 40 pin of the development &gt; board</p></li>
+
<li><p>The CAN TX pin of the CAN transceiver needs to be connected to the TX pin of the CAN bus in the 40 pin of the development board</p></li>
<li><p>The CAN RX pin of the CAN transceiver needs to be connected to &gt; the RX pin of the CAN bus in the 40 pin of the development &gt; board</p></li>
+
<li><p>The CAN RX pin of the CAN transceiver needs to be connected to the RX pin of the CAN bus in the 40 pin of the development board</p></li>
<li><p>The CANL pin of the CAN transceiver needs to be connected to the &gt; H interface of the analyzer</p></li>
+
<li><p>The CANL pin of the CAN transceiver needs to be connected to the H interface of the analyzer</p></li>
<li><p>The CANL pin of the CAN transceiver needs to be connected to the &gt; L interface of the analyzer</p>
+
<li><p>The CANL pin of the CAN transceiver needs to be connected to the L interface of the analyzer</p>
<p>[[File:media/image327.png|243x78px]]</p></li></ol>
+
<p>[[File:plus5-img327.png]]</p></li></ol>
 
</li>
 
</li>
 
<li><p>Then you can open the USB-CAN software</p>
 
<li><p>Then you can open the USB-CAN software</p>
<p>[[File:media/image328.png|553x267px]]</p></li>
+
<p>[[File:plus5-img328.png]]</p></li>
 
<li><p>Then click to start the device</p>
 
<li><p>Then click to start the device</p>
<p>[[File:media/image329.png|553x238px]]</p></li>
+
<p>[[File:plus5-img329.png]]</p></li>
 
<li><p>Then click OK</p>
 
<li><p>Then click OK</p>
<p>[[File:media/image330.png|279x110px]]</p></li>
+
<p>[[File:plus5-img330.png]]</p></li>
 
<li><p>Set the baud rate to 1000k bps</p>
 
<li><p>Set the baud rate to 1000k bps</p>
<p>[[File:media/image331.png|322x268px]]</p></li>
+
<p>[[File:plus5-img331.png]]</p></li>
 
<li><p>After successful opening, the USB-CAN software will display the serial number and other information</p>
 
<li><p>After successful opening, the USB-CAN software will display the serial number and other information</p>
<p>[[File:media/image332.png|553x262px]]</p></li>
+
<p>[[File:plus5-img332.png]]</p></li>
 
<li><p>Development board receives CAN message test</p>
 
<li><p>Development board receives CAN message test</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li><p>a. First set the baud rate of the CAN bus to '''1000kbps''' in &gt; the Linux system of the development board</p>
+
<li><p>a. First set the baud rate of the CAN bus to '''1000kbps''' in the Linux system of the development board</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''sudo ip link set can0 down'''</p>
 
<p>orangepi@orangepi:~$ '''sudo ip link set can0 down'''</p>
 
<p>orangepi@orangepi:~$ '''sudo ip link set can0 type can bitrate 1000000'''</p>
 
<p>orangepi@orangepi:~$ '''sudo ip link set can0 type can bitrate 1000000'''</p>
<p>orangepi@orangepi:~$ '''sudo ip link set can0 up'''</p></li>
+
<p>orangepi@orangepi:~$ '''sudo ip link set can0 up'''</p>
<li><p>Then run the '''candump can0''' command to prepare to receive &gt; messages</p>
+
|}
<p>orangepi@orangepi:~$ '''sudo candump can0'''</p></li>
 
<li><p>Then send a message to the development board in the USB-CAN &gt; software</p>
 
<p>[[File:media/image333.png|553x188px]]</p></li>
 
<li><p>If the message sent by the analyzer can be received in the &gt; development board, it means that the CAN bus can be used &gt; normally</p>
 
<p>orangepi@orangepi5plus:~$ '''sudo candump can0'''</p>
 
<p>'''can0 001 [8] 01 02 03 04 05 06 07 08'''</p></li></ol>
 
 
</li>
 
</li>
<li><p>Development board sends CAN message test</p>
+
<li><p>Then run the '''candump can0''' command to prepare to receive messages</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''sudo candump can0'''</p>
 +
|}
 +
</li>
 +
<li><p>Then send a message to the development board in the USB-CAN software</p>
 +
<p>[[File:plus5-img333.png]]</p></li>
 +
<li><p>If the message sent by the analyzer can be received in the development board, it means that the CAN bus can be used normally</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>orangepi@orangepi5plus:~$ '''sudo candump can0'''</p>
 +
<p>'''&nbsp;&nbsp;&nbsp;&nbsp; can0 &nbsp;&nbsp;&nbsp;&nbsp; 001 &nbsp;&nbsp;&nbsp;&nbsp; [8] &nbsp;&nbsp;&nbsp;&nbsp; 01 02 03 04 05 06 07 08'''</p>
 +
|}
 +
</li></ol>
 +
</li>
 +
<li><p>Development board sends CAN message test</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li><p>a. First set the CAN baud rate to '''1000kbps''' in the Linux &gt; system</p>
+
<li><p>First set the CAN baud rate to '''1000kbps''' in the Linux system</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''sudo ip link set can0 down'''</p>
 
<p>orangepi@orangepi:~$ '''sudo ip link set can0 down'''</p>
 
<p>orangepi@orangepi:~$ '''sudo ip link set can0 type can bitrate 1000000'''</p>
 
<p>orangepi@orangepi:~$ '''sudo ip link set can0 type can bitrate 1000000'''</p>
<p>orangepi@orangepi:~$ '''sudo ip link set can0 up'''</p></li>
+
<p>orangepi@orangepi:~$ '''sudo ip link set can0 up'''</p>
<li><p>Execute the '''cansend''' command on the development board and &gt; send a message</p>
+
|}
<p>orangepi@orangepi:~$ '''sudo cansend can0 123#1122334455667788'''</p></li>
+
</li>
<li><p>If the USB-CAN software can receive the message from the &gt; development board, the communication is successful</p>
+
<li><p>Execute the '''cansend''' command on the development board and send a message</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''sudo cansend can0 123#1122334455667788'''</p>
 +
|}
 +
</li>
 +
<li><p>If the USB-CAN software can receive the message from the development board, the communication is successful</p>
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image334.jpeg|483x377px|未标题-5]]
+
[[File:plus5-img334.png]]
  
 
</div></li></ol>
 
</div></li></ol>
Line 5,021: Line 6,196:
  
 
<span id="how-to-install-and-use-wiringop-python"></span>
 
<span id="how-to-install-and-use-wiringop-python"></span>
 +
 
== How to install and use wiringOP-Python ==
 
== How to install and use wiringOP-Python ==
  
'''wiringOP-Python is the Python language version of wiringOP, which is used to operate the hardware resources of the development board, such as GPIO, I2C, SPI and UART, in the Python program.'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<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.'''
  
'''In addition, please note that all the following commands are operated under the root user.'''
+
'''In addition, please note that all the following commands are operated under the <span style="color:#FF0000">root</span> user.'''</big>
 +
|}
  
 
<span id="how-to-install-wiringop-python"></span>
 
<span id="how-to-install-wiringop-python"></span>
Line 5,032: Line 6,212:
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>First install the dependency package</p>
 
<li><p>First install the dependency package</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>root@orangepi:~# '''sudo apt-get update'''</p>
 
<p>root@orangepi:~# '''sudo apt-get update'''</p>
<p>root@orangepi:~# '''sudo apt-get -y install git swig python3-dev python3-setuptools'''</p></li>
+
<p>root@orangepi:~# '''sudo apt-get -y install git swig python3-dev python3-setuptools'''</p>
 +
|}
 +
</li>
 
<li><p>Then use the following command to download the source code of wiringOP-Python</p>
 
<li><p>Then use the following command to download the source code of wiringOP-Python</p>
<p>'''Note that the following git clone --recursive 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 errors due to network problems.'''</p>
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
<p>'''If you have problems downloading the code from GitHub, you can directly use the wiringOP-Python source code that comes with the Linux image, and the storage location is: /usr/src/wiringOP-Python.'''</p>
+
|-
<p>root@orangepi:~# '''git clone --recursive https://github.com/orangepi-xunlong/wiringOP-Python -b next'''</p>
+
|
<p>Cloning into 'wiringOP-Python'...</p>
+
<big><p>'''Note that the following git clone --recursive 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 errors due to network problems.'''</p>
<p>remote: Enumerating objects: 602, done.</p>
+
<p>'''If you have problems downloading the code from GitHub, you can directly use the wiringOP-Python source code that comes with the Linux image, and the storage location is: /usr/src/wiringOP-Python.'''</p></big>
<p>remote: Counting objects: 100% (40/40), done.</p>
+
|}
<p>remote: Compressing objects: 100% (28/28), done.</p>
+
{| class="wikitable" style="width:800px;"
<p>remote: Total 602 (delta 20), reused 26 (delta 12), pack-reused 562</p>
+
|-
<p>Receiving objects: 100% (602/602), 309.30 KiB | 1.23 MiB/s, done.</p>
+
|
<p>Resolving deltas: 100% (349/349), done.</p>
+
root@orangepi:~# '''git clone --recursive https://github.com/orangepi-xunlong/wiringOP-Python -b next'''
<p>Submodule 'wiringOP' (https://github.com/orangepi-xunlong/wiringOP.git) registered for path 'wiringOP'</p>
+
 
<p>Cloning into '/root/test/wiringOP-Python/wiringOP'...</p>
+
root@orangepi:~# '''cd wiringOP-Python'''
<p>remote: Enumerating objects: 654, done.</p>
+
 
<p>remote: Counting objects: 100% (273/273), done.</p>
+
root@orangepi:~/wiringOP-Python# '''git submodule update --init --remote'''
<p>remote: Compressing objects: 100% (33/33), done.</p>
+
|}
<p>remote: Total 654 (delta 244), reused 245 (delta 238), pack-reused 381</p>
+
</li>
<p>Receiving objects: 100% (654/654), 360.54 KiB | 1.73 MiB/s, done.</p>
 
<p>Resolving deltas: 100% (424/424), done.</p>
 
<p>Submodule path 'wiringOP': checked out '85f1331cd8fda668115461ec1c06cb342057eb03'</p></li>
 
 
<li><p>Then use the following command to compile wiringOP-Python and install it into the Linux system of the development board</p>
 
<li><p>Then use the following command to compile wiringOP-Python and install it into the Linux system of the development board</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>root@orangepi:~# '''cd wiringOP-Python'''</p>
 
<p>root@orangepi:~# '''cd wiringOP-Python'''</p>
 
<p>root@orangepi:~/wiringOP-Python# '''python3 generate-bindings.py &gt; bindings.i'''</p>
 
<p>root@orangepi:~/wiringOP-Python# '''python3 generate-bindings.py &gt; bindings.i'''</p>
<p>root@orangepi:~/wiringOP-Python# '''sudo python3 setup.py install'''</p></li>
+
<p>root@orangepi:~/wiringOP-Python# '''sudo python3 setup.py install'''</p>
<li><p>Then enter the following command, if there is help information output, it means that wiringOP-Python is installed successfully, press the '''q''' key to exit the help information interface</p></li></ol>
+
|}
 +
</li>
 +
<li><p>Then enter the following command, if there is help information output, it means that wiringOP-Python is installed successfully, press the '''q''' key to exit the help information interface</p></li>
  
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
root@orangepi:~/wiringOP-Python# '''python3 -c &quot;import wiringpi; help(wiringpi)&quot;'''
 
root@orangepi:~/wiringOP-Python# '''python3 -c &quot;import wiringpi; help(wiringpi)&quot;'''
  
 
Help on module wiringpi:
 
Help on module wiringpi:
 +
  
 
NAME
 
NAME
  
wiringpi
+
:wiringpi
 +
 
  
 
DESCRIPTION
 
DESCRIPTION
  
# This file was automatically generated by SWIG (http://www.swig.org).
 
  
# Version 4.0.2
+
: # This file was automatically generated by SWIG (http://www.swig.org).
  
#
+
: # Version 4.0.2
  
# Do not make changes to this file unless you know what you are doing--modify
+
: #
  
# the SWIG interface file instead.
+
: # Do not make changes to this file unless you know what you are doing--modify
  
 +
: # the SWIG interface file instead.
 +
|}
 +
</ol>
 
<ol start="5" style="list-style-type: decimal;">
 
<ol start="5" style="list-style-type: decimal;">
 
<li><p>The steps to test whether wiringOP-Python is successfully installed under the python command line are as follows:</p>
 
<li><p>The steps to test whether wiringOP-Python is successfully installed under the python command line are as follows:</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li>First use the python3 command to enter the command line mode of &gt; python3</li></ol>
+
<li>First use the python3 command to enter the command line mode of python3</li>
</li></ol>
 
  
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
root@orangepi:~# '''python3'''
 
root@orangepi:~# '''python3'''
 
+
|}
 +
</ol>
 
<ol start="2" style="list-style-type: lower-alpha;">
 
<ol start="2" style="list-style-type: lower-alpha;">
<li>Then import the python module of wiringpi</li></ol>
+
<li>Then import the python module of wiringpi</li>
  
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
&gt;&gt;&gt; '''import wiringpi;'''
 
&gt;&gt;&gt; '''import wiringpi;'''
 
+
|}
 +
</ol>
 
<ol start="3" style="list-style-type: lower-alpha;">
 
<ol start="3" style="list-style-type: lower-alpha;">
<li>Finally, enter the following command to view the help information of &gt; wiringOP-Python, and press the q key to exit the help information &gt; interface</li></ol>
+
<li>Finally, enter the following command to view the help information of wiringOP-Python, and press the q key to exit the help information interface</li>
  
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
&gt;&gt;&gt; '''help(wiringpi)'''
 
&gt;&gt;&gt; '''help(wiringpi)'''
  
 
Help on module wiringpi:
 
Help on module wiringpi:
 +
  
 
NAME
 
NAME
  
wiringpi
+
:wiringpi
 +
 
  
 
DESCRIPTION
 
DESCRIPTION
  
# This file was automatically generated by SWIG (http://www.swig.org).
+
: # This file was automatically generated by SWIG (http://www.swig.org).
 +
 
 +
: # Version 4.0.2
  
# Version 4.0.2
+
: #
  
#
+
: # Do not make changes to this file unless you know what you are doing--modify
  
# Do not make changes to this file unless you know what you are doing--modify
+
: # the SWIG interface file instead.
  
# the SWIG interface file instead.
 
  
 
CLASSES
 
CLASSES
  
builtins.object
+
:builtins.object
 +
 
 +
::GPIO
 +
 
 +
::I2C
  
GPIO
+
::Serial
  
I2C
+
::nes
  
Serial
 
  
nes
+
:class GPIO(builtins.object)
  
class GPIO(builtins.object)
+
:| GPIO(pinmode=0)
  
| GPIO(pinmode=0)
+
:|
  
|
 
  
 
&gt;&gt;&gt;
 
&gt;&gt;&gt;
 +
|}
 +
</ol>
 +
</li></ol>
 +
<span id="pin-gpio-port-test-1"></span>
  
<span id="pin-gpio-port-test-1"></span>
 
 
=== 40 pin GPIO port test ===
 
=== 40 pin GPIO port test ===
  
'''wiringOP-Python is the same as wiringOP, you can also determine which GPIO pin to operate by specifying the wPi number, because there is no command to check the wPi number in wiringOP-Python, so you can only check the board wPi number and physical Correspondence between pins.'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''wiringOP-Python is the same as wiringOP, you can also determine which GPIO pin to operate by specifying the wPi number, because there is no command to check the wPi number in wiringOP-Python, so you can only check the board wPi number and physical Correspondence between pins.'''</big>
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image308.png|415x291px|876iring_001]]
+
[[File:plus5-img308.png]]
  
 
</div>
 
</div>
 +
|}
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>The following takes pin No. 7—the corresponding GPIO is GPIO1_D6—the corresponding wPi number is 2—as an example to demonstrate how to set the high and low levels of the GPIO port</p>
 
<li><p>The following takes pin No. 7—the corresponding GPIO is GPIO1_D6—the corresponding wPi number is 2—as an example to demonstrate how to set the high and low levels of the GPIO port</p>
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image309.png|419x106px|874iring_001]]
+
[[File:plus5-img309.png]]
  
 
</div></li>
 
</div></li>
Line 5,156: Line 6,372:
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
 
<li><p>First set the GPIO port to output mode, where the first &gt; parameter of the '''pinMode''' function is the serial number of &gt; the wPi corresponding to the pin, and the second parameter is &gt; the GPIO mode</p>
 
<li><p>First set the GPIO port to output mode, where the first &gt; parameter of the '''pinMode''' function is the serial number of &gt; the wPi corresponding to the pin, and the second parameter is &gt; the GPIO mode</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>root@orangepi:~/wiringOP-Python# '''python3 -c &quot;import wiringpi; \'''</p>
 
<p>root@orangepi:~/wiringOP-Python# '''python3 -c &quot;import wiringpi; \'''</p>
 
<p>'''from wiringpi import GPIO; wiringpi.wiringPiSetup() ; \'''</p>
 
<p>'''from wiringpi import GPIO; wiringpi.wiringPiSetup() ; \'''</p>
<p>'''wiringpi.pinMode(2, GPIO.OUTPUT) ; &quot;'''</p></li>
+
<p>'''wiringpi.pinMode(<span style="color:#FF0000">2, GPIO.OUTPUT</span>) ; &quot;'''</p>
 +
|}
 +
</li>
 
<li><p>Then set the GPIO port to output a low level. After setting, you &gt; can use a multimeter to measure the voltage value of the pin. &gt; If it is 0v, it means that the low level is set successfully.</p>
 
<li><p>Then set the GPIO port to output a low level. After setting, you &gt; can use a multimeter to measure the voltage value of the pin. &gt; If it is 0v, it means that the low level is set successfully.</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>root@orangepi:~/wiringOP-Python# '''python3 -c &quot;import wiringpi; \'''</p>
 
<p>root@orangepi:~/wiringOP-Python# '''python3 -c &quot;import wiringpi; \'''</p>
 
<p>'''from wiringpi import GPIO; wiringpi.wiringPiSetup() ;\'''</p>
 
<p>'''from wiringpi import GPIO; wiringpi.wiringPiSetup() ;\'''</p>
<p>'''wiringpi.digitalWrite(2, GPIO.LOW)&quot;'''</p></li>
+
<p>'''wiringpi.digitalWrite(<span style="color:#FF0000">2, GPIO.LOW</span>)&quot;'''</p>
 +
|}
 +
</li>
 
<li><p>Then set the GPIO port to output a high level. After setting, &gt; you can use a multimeter to measure the voltage value of the &gt; pin. If it is 3.3v, it means that the high level is set &gt; successfully.</p>
 
<li><p>Then set the GPIO port to output a high level. After setting, &gt; you can use a multimeter to measure the voltage value of the &gt; pin. If it is 3.3v, it means that the high level is set &gt; successfully.</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>root@orangepi:~/wiringOP-Python# '''python3 -c &quot;import wiringpi; \'''</p>
 
<p>root@orangepi:~/wiringOP-Python# '''python3 -c &quot;import wiringpi; \'''</p>
 
<p>'''from wiringpi import GPIO; wiringpi.wiringPiSetup() ;\'''</p>
 
<p>'''from wiringpi import GPIO; wiringpi.wiringPiSetup() ;\'''</p>
<p>'''wiringpi.digitalWrite(2, GPIO.HIGH)&quot;'''</p></li></ol>
+
<p>'''wiringpi.digitalWrite(<span style="color:#FF0000">2, GPIO.HIGH</span>)&quot;'''</p>
 +
|}
 +
</li></ol>
 
</li>
 
</li>
 
<li><p>The steps to test in the command line of python3 are as follows:</p>
 
<li><p>The steps to test in the command line of python3 are as follows:</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
 
<li><p>First use the python3 command to enter the command line mode of &gt; python3</p>
 
<li><p>First use the python3 command to enter the command line mode of &gt; python3</p>
<p>root@orangepi:~# '''python3'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>root@orangepi:~# '''python3'''</p>
 +
|}
 +
</li>
 
<li><p>Then import the python module of wiringpi</p>
 
<li><p>Then import the python module of wiringpi</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>&gt;&gt;&gt; '''import wiringpi'''</p>
 
<p>&gt;&gt;&gt; '''import wiringpi'''</p>
<p>&gt;&gt;&gt; '''from wiringpi import GPIO'''</p></li>
+
<p>&gt;&gt;&gt; '''from wiringpi import GPIO'''</p>
 +
|}
 +
</li>
 
<li><p>Then set the GPIO port to output mode, where the first parameter &gt; of the '''pinMode''' function is the serial number of the wPi &gt; corresponding to the pin, and the second parameter is the GPIO &gt; mode</p>
 
<li><p>Then set the GPIO port to output mode, where the first parameter &gt; of the '''pinMode''' function is the serial number of the wPi &gt; corresponding to the pin, and the second parameter is the GPIO &gt; mode</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>&gt;&gt;&gt; '''wiringpi.wiringPiSetup()'''</p>
 
<p>&gt;&gt;&gt; '''wiringpi.wiringPiSetup()'''</p>
 
<p>0</p>
 
<p>0</p>
<p>&gt;&gt;&gt; '''wiringpi.pinMode(2, GPIO.OUTPUT)'''</p></li>
+
<p>&gt;&gt;&gt; '''wiringpi.pinMode(<span style="color:#FF0000">2, GPIO.OUTPUT</span>)'''</p>
 +
|}
 +
</li>
 
<li><p>Then set the GPIO port to output low level. After setting, you &gt; can use a multimeter to measure the voltage value of the pin. &gt; If it is 0v, it means that the low level is set successfully.</p>
 
<li><p>Then set the GPIO port to output low level. After setting, you &gt; can use a multimeter to measure the voltage value of the pin. &gt; If it is 0v, it means that the low level is set successfully.</p>
<p>&gt;&gt;&gt; '''wiringpi.digitalWrite(2, GPIO.LOW)'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>&gt;&gt;&gt; '''wiringpi.digitalWrite(<span style="color:#FF0000">2, GPIO.LOW</span>)'''</p>
 +
|}
 +
</li>
 
<li><p>Then set the GPIO port to output a high level. After setting, &gt; you can use a multimeter to measure the voltage value of the &gt; pin. If it is 3.3v, it means that the high level is set &gt; successfully.</p>
 
<li><p>Then set the GPIO port to output a high level. After setting, &gt; you can use a multimeter to measure the voltage value of the &gt; pin. If it is 3.3v, it means that the high level is set &gt; successfully.</p>
<p>&gt;&gt;&gt; '''wiringpi.digitalWrite(2, GPIO.HIGH)'''</p></li></ol>
+
{| class="wikitable" style="width:800px;"
</li>
+
|-
<li><p>The method of wiringOP-Python setting GPIO high and low levels in python code can refer to the '''blink.py''' test program in the examples below. The '''blink.py''' test program will set the voltage of all GPIO ports in the 40 pins of the development board to change continuously.</p>
+
|
 +
<p>&gt;&gt;&gt; '''wiringpi.digitalWrite(<span style="color:#FF0000">2, GPIO.HIGH</span>)'''</p>
 +
|}
 +
</li></ol>
 +
</li>
 +
<li><p>The method of wiringOP-Python setting GPIO high and low levels in python code can refer to the '''blink.py''' test program in the examples below. The '''blink.py''' test program will set the voltage of all GPIO ports in the 40 pins of the development board to change continuously.</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>root@orangepi:~/wiringOP-Python# '''cd examples'''</p>
 
<p>root@orangepi:~/wiringOP-Python# '''cd examples'''</p>
 
<p>root@orangepi:~/wiringOP-Python/examples# '''ls blink.py'''</p>
 
<p>root@orangepi:~/wiringOP-Python/examples# '''ls blink.py'''</p>
 
<p>'''blink.py'''</p>
 
<p>'''blink.py'''</p>
<p>root@orangepi:~/wiringOP-Python/examples'''# python3 blink.py'''</p></li></ol>
+
<p>root@orangepi:~/wiringOP-Python/examples'''# python3 blink.py'''</p>
 +
|}
 +
</li></ol>
  
 
<span id="pin-spi-test-1"></span>
 
<span id="pin-spi-test-1"></span>
 +
 
=== 40 pin SPI test ===
 
=== 40 pin SPI test ===
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>As can be seen from the figure below, the SPIs available for Orange Pi 5 Plus are SPI0 and SPI4</p>
 
<li><p>As can be seen from the figure below, the SPIs available for Orange Pi 5 Plus are SPI0 and SPI4</p>
<p>[[File:media/image304.png|575x137px]]</p></li>
+
<p>[[File:plus5-img304.png]]</p></li>
<li><p>The corresponding pins of SPI0 and SPI4 in 40pin are shown in the table below. SPI4_M1 and SPI4_M2 can only use one of them at the same time, and they cannot be used at the same time. They are all the same SPI4, but they are connected to different pins. Please don't think that they are two different sets of SPI buses.</p></li></ol>
+
<li><p>The corresponding pins of SPI0 and SPI4 in 40pin are shown in the table below. SPI4_M1 and SPI4_M2 can only use one of them at the same time, and they cannot be used at the same time. They are all the same SPI4, but they are connected to different pins. Please don't think that they are two different sets of SPI buses.</p></li>
  
{| class="wikitable"
+
{| class="wikitable" style="width:800px;"
 
|-
 
|-
 
|
 
|
Line 5,228: Line 6,490:
 
| '''Pin 26'''
 
| '''Pin 26'''
 
| '''Pin 38'''
 
| '''Pin 38'''
| '''none'''
+
| '''<span style="color:#FF0000">none</span>'''
 
|-
 
|-
| '''dtbo confi guration'''
+
| '''dtbo configuration'''
| '''spi 0-m2-cs0-spidev'''
+
| '''spi0-m2-cs0-spidev'''
  
'''spi 0-m2-cs1-spidev'''
+
'''spi0-m2-cs1-spidev'''
  
'''spi0-m2 -cs0-cs1-spidev'''
+
'''spi0-m2-cs0-cs1-spidev'''
  
| '''spi 4-m1-cs0-spidev'''
+
| '''spi4-m1-cs0-spidev'''
  
'''spi 4-m1-cs1-spidev'''
+
'''spi4-m1-cs1-spidev'''
  
'''spi4-m1 -cs0-cs1-spidev'''
+
'''spi4-m1-cs0-cs1-spidev'''
  
| '''spi4-m 2-cs0-spidev'''
+
| '''spi4-m2-cs0-spidev'''
 
|}
 
|}
 
+
</ol>
 
<ol start="3" style="list-style-type: decimal;">
 
<ol start="3" 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>
 
<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;">
 
<ol style="list-style-type: lower-alpha;">
 
<li><p>First run '''orangepi-config''', normal users remember to add &gt; '''sudo''' permission</p>
 
<li><p>First run '''orangepi-config''', normal users remember to add &gt; '''sudo''' permission</p>
<p>orangepi@orangepi:~$ '''sudo orangepi-config'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''sudo orangepi-config'''</p>
 +
|}
 +
</li>
 
<li><p>Then select '''System'''</p>
 
<li><p>Then select '''System'''</p>
<p>[[File:media/image234.png|413x191px]]</p></li>
+
<p>[[File:plus5-img234.png]]</p></li>
 
<li><p>Then select '''Hardware'''</p>
 
<li><p>Then select '''Hardware'''</p>
<p>[[File:media/image235.png|419x182px]]</p></li>
+
<p>[[File:plus5-img235.png]]</p></li>
 
<li><p>Then use the arrow keys on the keyboard to navigate to the &gt; position shown in the figure below, and then use the space to &gt; select the SPI configuration you want to open</p>
 
<li><p>Then use the arrow keys on the keyboard to navigate to the &gt; position shown in the figure below, and then use the space to &gt; select the SPI configuration you want to open</p>
<p>[[File:media/image312.png|415x141px]]</p></li>
+
<p>[[File:plus5-img312.png]]</p></li>
 
<li><p>Then select '''&lt;Save&gt;''' to save</p>
 
<li><p>Then select '''&lt;Save&gt;''' to save</p>
<p>[[File:media/image263.png|415x120px]]</p></li>
+
<p>[[File:plus5-img263.png]]</p></li>
 
<li><p>Then select '''&lt;Back&gt;'''</p>
 
<li><p>Then select '''&lt;Back&gt;'''</p>
<p>[[File:media/image264.png|414x126px]]</p></li>
+
<p>[[File:plus5-img264.png]]</p></li>
<li><p>g. Then select '''&lt;Reboot&gt;''' to restart the system to make the &gt; configuration take effect</p>
+
<li><p>Then select '''&lt;Reboot&gt;''' to restart the system to make the &gt; configuration take effect</p>
<p>[[File:media/image239.png|293x129px]]</p></li></ol>
+
<p>[[File:plus5-img239.png]]</p></li></ol>
 
</li>
 
</li>
 
<li><p>After restarting, enter the system and first check whether there is a '''spidevx.x''' device node in the linux system. If it exists, it means that the SPI has been set up and can be used directly.</p>
 
<li><p>After restarting, enter the system and first check whether there is a '''spidevx.x''' device node in the linux system. If it exists, it means that the SPI has been set up and can be used directly.</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''ls /dev/spidev*'''</p>
 
<p>orangepi@orangepi:~$ '''ls /dev/spidev*'''</p>
 
<p>/dev/spidev0.0 /dev/spidev0.1 /dev/spidev4.0 /dev/spidev4.1</p>
 
<p>/dev/spidev0.0 /dev/spidev0.1 /dev/spidev4.0 /dev/spidev4.1</p>
<p>'''The above is the result displayed after turning on spi0-m2-cs0-cs1-spidev and spi4-m1-cs0-cs1-spidev.'''</p></li>
+
|}
 +
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big><p>'''The above is the result displayed after turning on spi0-m2-cs0-cs1-spidev and spi4-m1-cs0-cs1-spidev.'''</p></big>
 +
|}
 +
</li>
 
<li><p>Then you can use the '''spidev_test.py''' program in the examples to test the loopback function of the SPI. The '''spidev_test.py''' program needs to specify the following two parameters:</p>
 
<li><p>Then you can use the '''spidev_test.py''' program in the examples to test the loopback function of the SPI. The '''spidev_test.py''' program needs to specify the following two parameters:</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
Line 5,274: Line 6,550:
 
</li>
 
</li>
 
<li><p>Do not short-circuit the MOSI and MISO pins of the SPI, the output of running '''spidev_test.py''' is as follows, you can see that the data of TX and RX are inconsistent</p>
 
<li><p>Do not short-circuit the MOSI and MISO pins of the SPI, the output of running '''spidev_test.py''' is as follows, you can see that the data of TX and RX are inconsistent</p>
<p>'''The x after the --channel and --port parameters needs to be replaced with the channel number of the specific SPI and the port number of the SPI.'''</p>
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
<p>root@orangepi:~/wiringOP-Python# '''cd examples'''</p></li></ol>
+
|-
 +
|
 +
<big><p>'''The x after the --channel and --port parameters needs to be replaced with the channel number of the specific SPI and the port number of the SPI.'''</p></big>
 +
|}
 +
 
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>root@orangepi:~/wiringOP-Python# '''cd examples'''</p>
  
 
root@orangepi:~/wiringOP-Python/examples# '''python3 spidev_test.py --channel x --port x'''
 
root@orangepi:~/wiringOP-Python/examples# '''python3 spidev_test.py --channel x --port x'''
Line 5,285: Line 6,569:
 
Opening device /dev/spidev4.1
 
Opening device /dev/spidev4.1
  
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 |......@.......…|
+
TX | 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 |......@.......…|
 
 
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 |.............….|
 
  
 +
RX | 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 |.............….|
 +
|}
 +
</li></ol>
 
<ol start="7" style="list-style-type: decimal;">
 
<ol start="7" style="list-style-type: decimal;">
 
<li><p>Then use the Dupont wire to short-circuit the MOSI and MISO pins of the SPI, and then run the output of spidev_test.py as follows, you can see that the data sent and received are the same, indicating that the SPI loopback test is normal</p>
 
<li><p>Then use the Dupont wire to short-circuit the MOSI and MISO pins of the SPI, and then run the output of spidev_test.py as follows, you can see that the data sent and received are the same, indicating that the SPI loopback test is normal</p>
<p>'''The x after the --channel and --port parameters needs to be replaced with the channel number of the specific SPI and the port number of the SPI.'''</p>
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
<p>root@orangepi:~/wiringOP-Python# '''cd examples'''</p></li></ol>
+
|-
 +
|
 +
<big><p>'''The x after the --channel and --port parameters needs to be replaced with the channel number of the specific SPI and the port number of the SPI.'''</p></big>
 +
|}
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>root@orangepi:~/wiringOP-Python# '''cd examples'''</p>
  
 
root@orangepi:~/wiringOP-Python/examples# '''python3 spidev_test.py --channel x --port x'''
 
root@orangepi:~/wiringOP-Python/examples# '''python3 spidev_test.py --channel x --port x'''
Line 5,302: Line 6,594:
 
Opening device /dev/spidev4.1
 
Opening device /dev/spidev4.1
  
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 |......@.......…|
+
TX | 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 |......@.......…|
  
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 |......@.......…|
+
RX | 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 |......@.......…|
 +
|}
 +
</li></ol>
 +
<span id="pin-i2c-test-1"></span>
  
<span id="pin-i2c-test-1"></span>
 
 
=== 40 pin I2C test ===
 
=== 40 pin I2C test ===
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>As can be seen from the table below, the available i2c for Orange Pi 5 Plus is i2c2, i2c4, i2c5 and i2c8, a total of four sets of i2c buses.</p>
 
<li><p>As can be seen from the table below, the available i2c for Orange Pi 5 Plus is i2c2, i2c4, i2c5 and i2c8, a total of four sets of i2c buses.</p>
<p>[[File:media/image304.png|575x137px]]</p></li>
+
<p>[[File:plus5-img304.png]]</p></li>
<li><p>4组I2C总线在40pin中对应的引脚如下表所示。I2C2_M0和I2C2_M4同一时间只The corresponding pins of the 4 groups of I2C buses in 40pin are shown in the table below. I2C2_M0 and I2C2_M4 can only use one of them at the same time, and they cannot be used at the same time. They are all the same I2C2, but they are connected to different pins. Please don’t think that they are two different sets of I2C2 buses.</p></li></ol>
+
<li><p>The corresponding pins of the 4 groups of I2C buses in 40pin are shown in the table below. I2C2_M0 and I2C2_M4 can only use one of them at the same time, and they cannot be used at the same time. They are all the same I2C2, but they are connected to different pins. Please don’t think that they are two different sets of I2C2 buses.</p></li>
  
{| class="wikitable"
+
{| class="wikitable" style="width:800px;"
 
|-
 
|-
 
| style="text-align: left;"| '''I2C bus'''
 
| style="text-align: left;"| '''I2C bus'''
Line 5,346: Line 6,640:
 
| style="text-align: left;"| '''i2c8-m2'''
 
| style="text-align: left;"| '''i2c8-m2'''
 
|}
 
|}
 
+
</ol>
 
<ol start="3" style="list-style-type: decimal;">
 
<ol start="3" style="list-style-type: decimal;">
 
<li><p>In the linux system, the I2C bus in the 40 pin is closed by default, and it needs to be opened manually before it can be used. The detailed steps are as follows:</p>
 
<li><p>In the linux system, the I2C bus 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;">
 
<ol style="list-style-type: lower-alpha;">
 
<li><p>First run '''orangepi-config''', normal users remember to add &gt; '''sudo''' permission</p>
 
<li><p>First run '''orangepi-config''', normal users remember to add &gt; '''sudo''' permission</p>
<p>orangepi@orangepi:~$ '''sudo orangepi-config'''</p></li>
+
{| class="wikitable" style="width:800px;"
<li><p>Then select '''System'''</p>
+
|-
<p>[[File:media/image234.png|382x176px]]</p></li>
+
|
<li><p>Then select '''Hardware'''</p>
+
<p>orangepi@orangepi:~$ '''sudo orangepi-config'''</p>
<p>[[File:media/image235.png|385x167px]]</p></li>
+
|}
 +
</li>
 +
<li><p>Then select '''System'''</p>
 +
<p>[[File:plus5-img234.png]]</p></li>
 +
<li><p>Then select '''Hardware'''</p>
 +
<p>[[File:plus5-img235.png]]</p></li>
 
<li><p>Then use the arrow keys on the keyboard to navigate to the &gt; position shown in the figure below, and then use the space to &gt; select the I2C configuration you want to open</p>
 
<li><p>Then use the arrow keys on the keyboard to navigate to the &gt; position shown in the figure below, and then use the space to &gt; select the I2C configuration you want to open</p>
<p>[[File:media/image313.png|381x144px]]</p></li>
+
<p>[[File:plus5-img313.png]]</p></li>
 
<li><p>Then select '''&lt;Save&gt;''' to save</p>
 
<li><p>Then select '''&lt;Save&gt;''' to save</p>
<p>[[File:media/image263.png|347x100px]]</p></li>
+
<p>[[File:plus5-img263.png]]</p></li>
 
<li><p>Then select '''&lt;Back&gt;'''</p>
 
<li><p>Then select '''&lt;Back&gt;'''</p>
<p>[[File:media/image264.png|325x98px]]</p></li>
+
<p>[[File:plus5-img264.png]]</p></li>
 
<li><p>Then select '''&lt;Reboot&gt;''' to restart the system to make the &gt; configuration take effect</p>
 
<li><p>Then select '''&lt;Reboot&gt;''' to restart the system to make the &gt; configuration take effect</p>
<p>[[File:media/image239.png|254x112px]]</p></li></ol>
+
<p>[[File:plus5-img239.png]]</p></li></ol>
 
</li>
 
</li>
 
<li><p>After starting the linux system, first confirm that there is a device node corresponding to i2c under '''/dev'''</p>
 
<li><p>After starting the linux system, first confirm that there is a device node corresponding to i2c under '''/dev'''</p>
<p>orangepi@orangepi:~$ '''ls /dev/i2c-*'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''ls /dev/i2c-*'''</p>
 +
|}
 +
</li>
 
<li><p>Then connect an i2c device to the i2c pin of the 40 pin connector, here we take the ds1307 RTC module as an example</p>
 
<li><p>Then connect an i2c device to the i2c pin of the 40 pin connector, here we take the ds1307 RTC module as an example</p>
<p>[[File:media/image335.png|124x106px]]</p></li>
+
<p>[[File:plus5-img335.png]]</p></li>
 
<li><p>Then use the '''i2cdetect -y''' command, if the address of the connected i2c device can be detected, it means that i2c can be recognized normally.</p>
 
<li><p>Then use the '''i2cdetect -y''' command, if the address of the connected i2c device can be detected, it means that i2c can be recognized normally.</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''sudo i2cdetect -y 2''' #i2c2 command</p>
 
<p>orangepi@orangepi:~$ '''sudo i2cdetect -y 2''' #i2c2 command</p>
 
<p>orangepi@orangepi:~$ '''sudo i2cdetect -y 4''' #i2c4 command</p>
 
<p>orangepi@orangepi:~$ '''sudo i2cdetect -y 4''' #i2c4 command</p>
 
<p>orangepi@orangepi:~$ '''sudo i2cdetect -y 5''' #i2c5 command</p>
 
<p>orangepi@orangepi:~$ '''sudo i2cdetect -y 5''' #i2c5 command</p>
<p>orangepi@orangepi:~$ '''sudo i2cdetect -y 8''' #i2c8 command</p></li>
+
<p>orangepi@orangepi:~$ '''sudo i2cdetect -y 8''' #i2c8 command</p>
 +
|}
 +
</li>
 
<li><p>Then you can run the '''ds1307.py''' test program in the '''wiringOP-Python/examples''' file to read the time of RTC</p>
 
<li><p>Then you can run the '''ds1307.py''' test program in the '''wiringOP-Python/examples''' file to read the time of RTC</p>
<p>'''/dev/i2c-x needs to be replaced with the serial number of the specific i2c device node.'''</p>
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big><p>'''/dev/i2c-x needs to be replaced with the serial number of the specific i2c device node.'''</p></big>
 +
|}
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>root@orangepi:~/wiringOP-Python# '''cd examples'''</p>
 
<p>root@orangepi:~/wiringOP-Python# '''cd examples'''</p>
 
<p>root@orangepi:~/wiringOP-Python/examples# '''python3 ds1307.py --device &quot;/dev/i2c-x&quot;'''</p>
 
<p>root@orangepi:~/wiringOP-Python/examples# '''python3 ds1307.py --device &quot;/dev/i2c-x&quot;'''</p>
Line 5,382: Line 6,698:
 
<p>Thu 2023-01-05 14:57:57</p>
 
<p>Thu 2023-01-05 14:57:57</p>
 
<p>^C</p>
 
<p>^C</p>
<p>exit</p></li></ol>
+
<p>exit</p>
 +
|}
 +
</li></ol>
  
 
<span id="pin-uart-test-1"></span>
 
<span id="pin-uart-test-1"></span>
 +
 
=== 40 pin UART test ===
 
=== 40 pin UART test ===
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>As can be seen from the table below, the uarts available for Orange Pi 5 Plus are uart1, uart3, uart4, uart6, uart7 and uart8, a total of 6 sets of uart buses</p>
 
<li><p>As can be seen from the table below, the uarts available for Orange Pi 5 Plus are uart1, uart3, uart4, uart6, uart7 and uart8, a total of 6 sets of uart buses</p>
<p>[[File:media/image304.png|575x137px]]</p></li>
+
<p>[[File:plus5-img304.png]]</p></li>
<li><p>The corresponding pins of the 6 groups of UART buses in 40pin are shown in the following table:</p></li></ol>
+
<li><p>The corresponding pins of the 6 groups of UART buses in 40pin are shown in the following table:</p></li>
  
{| class="wikitable"
+
{| class="wikitable" style="width:800px;"
 
|-
 
|-
 
| style="text-align: left;"| '''UART bus'''
 
| style="text-align: left;"| '''UART bus'''
Line 5,429: Line 6,748:
 
| style="text-align: left;"| '''uart8-m1'''
 
| style="text-align: left;"| '''uart8-m1'''
 
|}
 
|}
 
+
</ol>
 
<ol start="3" style="list-style-type: decimal;">
 
<ol start="3" style="list-style-type: decimal;">
 
<li><p>In the linux system, the UART in the 40 pins is closed by default, and it needs to be opened manually before it can be used. The detailed steps are as follows:</p>
 
<li><p>In the linux system, the UART in the 40 pins is closed by default, and it needs to be opened manually before it can be used. The detailed steps are as follows:</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li><p>First run '''orangepi-confi'''g, normal users remember to add &gt; '''sudo''' permission</p>
+
<li><p>First run '''orangepi-confi'''g, normal users remember to add '''sudo''' permission</p>
<p>orangepi@orangepi:~$ '''sudo orangepi-config'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''sudo orangepi-config'''</p>
 +
|}
 +
</li>
 
<li><p>Then select '''System'''</p>
 
<li><p>Then select '''System'''</p>
<p>[[File:media/image234.png|404x186px]]</p></li>
+
<p>[[File:plus5-img234.png]]</p></li>
 
<li><p>Then select '''Hardware'''</p>
 
<li><p>Then select '''Hardware'''</p>
<p>[[File:media/image235.png|403x175px]]</p></li>
+
<p>[[File:plus5-img235.png]]</p></li>
<li><p>Then use the arrow keys on the keyboard to navigate to the &gt; position shown in the figure below, and then use the '''space''' &gt; to select the UART configuration you want to open</p>
+
<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:media/image315.png|350x124px]]</p></li>
+
<p>[[File:plus5-img315.png]]</p></li>
 
<li><p>Then select '''&lt;Save&gt;''' to save</p>
 
<li><p>Then select '''&lt;Save&gt;''' to save</p>
<p>[[File:media/image263.png|334x96px]]</p></li>
+
<p>[[File:plus5-img263.png]]</p></li>
 
<li><p>Then select '''&lt;Back&gt;'''</p>
 
<li><p>Then select '''&lt;Back&gt;'''</p>
<p>[[File:media/image264.png|336x102px]]</p></li>
+
<p>[[File:plus5-img264.png]]</p></li>
<li><p>Then select '''&lt;Reboot&gt;''' to restart the system to make the &gt; configuration take effect</p>
+
<li><p>Then select '''&lt;Reboot&gt;''' to restart the system to make the configuration take effect</p>
<p>[[File:media/image239.png|235x103px]]</p></li></ol>
+
<p>[[File:plus5-img239.png]]</p></li></ol>
 
</li>
 
</li>
 
<li><p>After entering the linux system, first confirm whether there is a device node corresponding to uart under /dev</p>
 
<li><p>After entering the linux system, first confirm whether there is a device node corresponding to uart under /dev</p>
<p>orangepi@orangepi:~$ '''ls /dev/ttyS*'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''ls /dev/ttyS*'''</p>
 +
|}
 +
</li>
 
<li><p>Then start to test the uart interface, first use the DuPont line to short the rx and tx pins of the uart interface to be tested</p></li>
 
<li><p>Then start to test the uart interface, first use the DuPont line to short the rx and tx pins of the uart interface to be tested</p></li>
 
<li><p>Then use the '''serialTest.py''' program in '''wiringOP-Python/examples''' to test the loopback function of the serial port. As shown below, if you can see the print below, it means the serial port communication is normal.</p>
 
<li><p>Then use the '''serialTest.py''' program in '''wiringOP-Python/examples''' to test the loopback function of the serial port. As shown below, if you can see the print below, it means the serial port communication is normal.</p>
<p>'''/dev/ttySX needs to be replaced with the serial number of the specific uart device node.'''</p>
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big><p>'''/dev/ttySX needs to be replaced with the serial number of the specific uart device node.'''</p></big>
 +
|}
 +
 
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>root@orangepi:~/wiringOP-Python/examples# '''python3 serialTest.py --device &quot;/dev/ttySX&quot;'''</p>
 
<p>root@orangepi:~/wiringOP-Python/examples# '''python3 serialTest.py --device &quot;/dev/ttySX&quot;'''</p>
 
<p>Out: 0: -&gt; 0</p>
 
<p>Out: 0: -&gt; 0</p>
Line 5,459: Line 6,796:
 
<p>Out: 3: -&gt; 3</p>
 
<p>Out: 3: -&gt; 3</p>
 
<p>Out: 4:^C</p>
 
<p>Out: 4:^C</p>
<p>exit</p></li></ol>
+
<p>exit</p>
 +
|}
 +
</li></ol>
  
 
<span id="hardware-watchdog-test"></span>
 
<span id="hardware-watchdog-test"></span>
 +
 
== Hardware watchdog test ==
 
== Hardware watchdog test ==
  
Line 5,471: Line 6,811:
 
<li><p>The second parameter 10 indicates the counting time of the watchdog. If the dog is not fed within this time, the system will restart</p></li>
 
<li><p>The second parameter 10 indicates the counting time of the watchdog. If the dog is not fed within this time, the system will restart</p></li>
 
<li><p>We can feed the dog by pressing any key on the keyboard (except ESC). After feeding the dog, the program will print a line of keep alive to indicate that the dog is fed successfully</p>
 
<li><p>We can feed the dog by pressing any key on the keyboard (except ESC). After feeding the dog, the program will print a line of keep alive to indicate that the dog is fed successfully</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''sudo watchdog_test 10'''</p>
 
<p>orangepi@orangepi:~$ '''sudo watchdog_test 10'''</p>
 
<p>open success</p>
 
<p>open success</p>
Line 5,482: Line 6,825:
 
<p>keep alive</p>
 
<p>keep alive</p>
 
<p>keep alive</p>
 
<p>keep alive</p>
<p>keep alive</p></li></ol>
+
<p>keep alive</p>
 +
|}
 +
</li></ol>
  
 
<span id="check-the-serial-number-of-rk3588-chip"></span>
 
<span id="check-the-serial-number-of-rk3588-chip"></span>
 +
 
== Check the serial number of RK3588 chip ==
 
== Check the serial number of RK3588 chip ==
  
 
The command to view the serial number of the RK3588 chip is as follows. The serial number of each chip is different, so the serial number can be used to distinguish multiple development boards.
 
The command to view the serial number of the RK3588 chip is as follows. The serial number of each chip is different, so the serial number can be used to distinguish multiple development boards.
  
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
orangepi@orangepi:~$ '''cat_serial.sh'''
 
orangepi@orangepi:~$ '''cat_serial.sh'''
  
 
Serial : '''1404a7682e86830c'''
 
Serial : '''1404a7682e86830c'''
 +
|}
  
 
<span id="how-to-install-docker"></span>
 
<span id="how-to-install-docker"></span>
 +
 
== How to install Docker ==
 
== How to install Docker ==
  
Line 5,499: Line 6,850:
 
<li><p>The linux image provided by Orange Pi has pre-installed Docker, but the Docker service is not enabled by default</p></li>
 
<li><p>The linux image provided by Orange Pi has pre-installed Docker, but the Docker service is not enabled by default</p></li>
 
<li><p>Use the '''enable_docker.sh''' script to enable the docker service, and then you can start using the docker command, and the docker service will be automatically started when the system is started next time</p>
 
<li><p>Use the '''enable_docker.sh''' script to enable the docker service, and then you can start using the docker command, and the docker service will be automatically started when the system is started next time</p>
<p>orangepi@orangepi:~$ '''enable_docker.sh'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''enable_docker.sh'''</p>
 +
|}
 +
</li>
 
<li><p>Then you can use the following command to test docker, if you can run hello-world, it means that docker can be used normally</p>
 
<li><p>Then you can use the following command to test docker, if you can run hello-world, it means that docker can be used normally</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''docker run hello-world'''</p>
 
<p>orangepi@orangepi:~$ '''docker run hello-world'''</p>
 
<p>Unable to find image 'hello-world:latest' locally</p>
 
<p>Unable to find image 'hello-world:latest' locally</p>
Line 5,507: Line 6,866:
 
<p>Digest: sha256:7f0a9f93b4aa3022c3a4c147a449ef11e0941a1fd0bf4a8e6c9408b2600777c5</p>
 
<p>Digest: sha256:7f0a9f93b4aa3022c3a4c147a449ef11e0941a1fd0bf4a8e6c9408b2600777c5</p>
 
<p>Status: Downloaded newer image for hello-world:latest</p>
 
<p>Status: Downloaded newer image for hello-world:latest</p>
<p>'''Hello from Docker!'''</p>
+
 
<p>'''This message shows that your installation appears to be working correctly.'''</p>
+
 
<p>'''.….'''</p></li></ol>
+
<p style="color:#FF0000">'''Hello from Docker!'''</p>
 +
<p style="color:#FF0000">'''This message shows that your installation appears to be working correctly.'''</p>
 +
<p>'''.….'''</p>
 +
|}
 +
</li></ol>
  
 
<span id="how-to-download-and-install-arm64-version-balenaetcher"></span>
 
<span id="how-to-download-and-install-arm64-version-balenaetcher"></span>
 +
 
== How to download and install arm64 version balenaEtcher ==
 
== How to download and install arm64 version balenaEtcher ==
  
Line 5,517: Line 6,881:
 
<li><p>The download address of balenaEtcher arm64 version is:</p>
 
<li><p>The download address of balenaEtcher arm64 version is:</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li><p>The download address of the a.deb installation package is as &gt; follows, it needs to be installed before it can be used</p>
+
<li><p>The download address of the a.deb installation package is as follows, it needs to be installed before it can be used</p>
<p>[https://github.com/Itai-Nelken/BalenaEtcher-arm/releases/download/v1.7.9/balena-etcher-electron_1.7.9+5945ab1f_arm64.deb '''https://github.com/Itai-Nelken/BalenaEtcher-arm/releases/download/v1.7.9/balena-etcher-electron_1.7.9+5945ab1f_arm64.deb''']</p></li>
+
{| class="wikitable" style="width:800px;"
<li><p>The download address of the AppImage version that does not need &gt; to be installed is as follows: b. The download address of the &gt; AppImage version that does not need to be installed is as &gt; follows:</p>
+
|-
<p>[https://github.com/Itai-Nelken/BalenaEtcher-arm/releases/download/v1.7.9/balenaEtcher-1.7.9+5945ab1f-arm64.AppImage '''https://github.com/Itai-Nelken/BalenaEtcher-arm/releases/download/v1.7.9/balenaEtcher-1.7.9+5945ab1f-arm64.AppImage''']</p></li></ol>
+
|
</li></ol>
+
'''https://github.com/Itai-Nelken/BalenaEtcher-arm/releases/download/v1.7.9/balena-etcher-electron_1.7.9+5945ab1f_arm64.deb'''
 +
|}
 +
</li>
 +
<li><p>The download address of the AppImage version that does not need to be installed is as follows: b. The download address of the AppImage version that does not need to be installed is as follows:</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
'''https://github.com/Itai-Nelken/BalenaEtcher-arm/releases/download/v1.7.9/balenaEtcher-1.7.9+5945ab1f-arm64.AppImage'''
 +
|}
 +
</li>
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image336.png|527x211px|IMG_256]]
+
[[File:plus5-img336.png|1200px]]
  
</div>
+
</div></ol>
 +
</li></ol>
 
<ol start="2" style="list-style-type: decimal;">
 
<ol start="2" style="list-style-type: decimal;">
 
<li><p>How to install and use deb version balenaEtcher:</p>
 
<li><p>How to install and use deb version balenaEtcher:</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li><p>The deb version of balenaEtcher installation command is as &gt; follows:</p>
+
<li><p>The deb version of balenaEtcher installation command is as follows:</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''sudo apt install -y \'''</p>
 
<p>orangepi@orangepi:~$ '''sudo apt install -y \'''</p>
<p>'''--fix-broken ./balena-etcher-electron_1.7.9+5945ab1f_arm64.deb'''</p></li>
+
<p>'''--fix-broken ./balena-etcher-electron_1.7.9+5945ab1f_arm64.deb'''</p>
<li><p>After the deb version of balenaEtcher is installed, it can be &gt; opened in the Application</p>
+
|}
 +
</li>
 +
<li><p>After the deb version of balenaEtcher is installed, it can be opened in the Application</p>
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image95.png|507x249px|IMG_256]]
+
[[File:plus5-img95.png|1200px]]
  
 
</div></li>
 
</div></li>
<li><p>The interface after balenaEtcher is opened is as follows:</p></li></ol>
+
<li><p>The interface after balenaEtcher is opened is as follows:</p></li>
</li></ol>
 
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image337.png|429x263px|IMG_256]]
+
[[File:plus5-img337.png]]
  
</div>
+
</div></ol>
 +
</li></ol>
 
<ol start="3" style="list-style-type: decimal;">
 
<ol start="3" style="list-style-type: decimal;">
 
<li><p>How to use the AppImage version of balenaEtcher:</p>
 
<li><p>How to use the AppImage version of balenaEtcher:</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
 
<li><p>First add permissions to balenaEtcher</p>
 
<li><p>First add permissions to balenaEtcher</p>
<p>orangepi@orangepi:~/Desktop$ '''chmod +x balenaEtcher-1.7.9+5945ab1f-arm64.AppImage'''</p></li>
+
{| class="wikitable" style="width:800px;"
<li><p>Then select the AppImage version balenaEtcher, click the right &gt; mouse button, and then click Execute to open balenaEtcher</p>
+
|-
<p>[[File:media/image338.png|145x118px]]</p></li></ol>
+
|
 +
<p>orangepi@orangepi:~/Desktop$ '''chmod +x balenaEtcher-1.7.9+5945ab1f-arm64.AppImage'''</p>
 +
|}
 +
</li>
 +
<li><p>Then select the AppImage version balenaEtcher, click the right mouse button, and then click Execute to open balenaEtcher</p>
 +
<p>[[File:plus5-img338.png]]</p></li></ol>
 
</li></ol>
 
</li></ol>
  
 
<span id="the-installation-method-of-the-pagoda-linux-panel"></span>
 
<span id="the-installation-method-of-the-pagoda-linux-panel"></span>
 +
 
== The installation method of the pagoda linux panel ==
 
== The installation method of the pagoda linux panel ==
  
'''Pagoda Linux panel is a server management software that improves operation and maintenance efficiency. It supports more than 100 server management functions such as one -click LAMP/LNMP/cluster/monitoring/website/FTP/database/Java (extracted from the official website of the pagoda)'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''Pagoda Linux panel is a server management software that improves operation and maintenance efficiency. It supports more than 100 server management functions such as one -click LAMP/LNMP/cluster/monitoring/website/FTP/database/Java (extracted from the official website of the pagoda)'''</big>
 +
|}
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>The order of compatibility recommendation of the pagoda Linux system is</p>
 
<li><p>The order of compatibility recommendation of the pagoda Linux system is</p>
<p>'''Debian11 &gt; Ubuntu 22.04'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>'''Debian11 > Ubuntu 22.04 > Debian12'''</p>
 +
|}
 +
</li>
 
<li><p>Then enter the following command in the Linux system to start the installation of the pagoda</p>
 
<li><p>Then enter the following command in the Linux system to start the installation of the pagoda</p>
<p>orangepi@orangepi:~$ '''sudo install_bt_panel.sh'''</p></li>
+
{| class="wikitable" style="width:800px;"
<li><p>Then the pagoda installation program reminds whether to install the '''<span class="mark">BT-Panel</span>''' to the'''<span class="mark">/www</span>''' folder, and enter Y at this time</p>
+
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''sudo install_bt_panel.sh'''</p>
 +
|}
 +
</li>
 +
<li><p>Then the pagoda installation program reminds whether to install the '''<span class="mark">BT-Panel</span>''' to the '''<span class="mark">/www</span>''' folder, and enter Y at this time</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>+----------------------------------------------------------------------</p>
 
<p>+----------------------------------------------------------------------</p>
 
<p>| Bt-WebPanel FOR CentOS/Ubuntu/Debian</p>
 
<p>| Bt-WebPanel FOR CentOS/Ubuntu/Debian</p>
Line 5,575: Line 6,977:
 
<p>| The WebPanel URL will be http://SERVER_IP:8888 when installed.</p>
 
<p>| The WebPanel URL will be http://SERVER_IP:8888 when installed.</p>
 
<p>+----------------------------------------------------------------------</p>
 
<p>+----------------------------------------------------------------------</p>
<p>Do you want to install Bt-Panel to the /www directory now?(y/n): '''y'''</p></li>
+
 
<li><p>Then what to do is 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 9 minutes. There may be some differences according to the difference in network speed</p>
+
 
<p>[[File:media/image339.png|363x237px]]</p></li>
+
<p>Do you want to install Bt-Panel to the /www directory now?(y/n): '''<span style="color:#FF0000">y</span>'''</p>
 +
|}
 +
</li>
 +
<li><p>Then what to do is 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 9 minutes. There may be some differences according to the difference in network speed</p>
 +
<p>[[File:plus5-img339.png]]</p></li>
 
<li><p>At this time, enter the '''panel address''' displayed above in the browser to open the login interface of the pagoda Linux panel, and then enter the '''username''' and '''password''' displayed above in the corresponding position to log in to the pagoda.</p>
 
<li><p>At this time, enter the '''panel address''' displayed above in the browser to open the login interface of the pagoda Linux panel, and then enter the '''username''' and '''password''' displayed above in the corresponding position to log in to the pagoda.</p>
<p>[[File:media/image340.png|576x241px]]</p></li>
+
<p>[[File:plus5-img340.png]]</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 pagoda</p>
 
<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 pagoda</p>
<p>[[File:media/image341.png|576x213px]]</p></li>
+
<p>[[File:plus5-img341.png|1500px]]</p></li>
 
<li><p>After entering the pagoda, you will first prompt that you need to bind the account of the pagoda official website. If you do n’t have an account, you can go to the official website of the pagoda '''(https://www.bt.cn)''' to register one</p>
 
<li><p>After entering the pagoda, you will first prompt that you need to bind the account of the pagoda official website. If you do n’t have an account, you can go to the official website of the pagoda '''(https://www.bt.cn)''' to register one</p>
<p>[[File:media/image342.png|576x218px]]</p></li>
+
<p>[[File:plus5-img342.png|1500px]]</p></li>
 
<li><p>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 status, CPU usage, memory usage, and storage space usage</p>
 
<li><p>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 status, CPU usage, memory usage, and storage space usage</p>
<p>[[File:media/image343.png|574x283px]]</p></li>
+
<p>[[File:plus5-img343.png]]</p></li>
 
<li><p>Test the SSH terminal login of the pagoda</p>
 
<li><p>Test the SSH terminal login of the pagoda</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li><p>After opening the SSH terminal of the pagoda, you will first &gt; prompt that you need to enter the password of the development &gt; board system. At this time, enter '''orangepi''' in the password &gt; box (the default password, if you have modification, please &gt; fill in the modified one).</p>
+
<li><p>After opening the SSH terminal of the pagoda, you will first prompt that you need to enter the password of the development board system. At this time, enter '''orangepi''' in the password box (the default password, if you have modification, please fill in the modified one).</p>
<p>[[File:media/image344.png|475x330px]]</p></li>
+
<p>[[File:plus5-img344.png]]</p></li>
 
<li><p>The display after successful login is shown in the figure below</p>
 
<li><p>The display after successful login is shown in the figure below</p>
<p>[[File:media/image345.png|575x206px]]</p></li></ol>
+
<p>[[File:plus5-img345.png]]</p></li></ol>
 
</li>
 
</li>
 
<li><p>Software such as Apache, MySQL, and PHP can be installed in the software store of the pagoda. You can also deploy various applications in one click. Please explore it yourself</p>
 
<li><p>Software such as Apache, MySQL, and PHP can be installed in the software store of the pagoda. You can also deploy various applications in one click. Please explore it yourself</p>
<p>[[File:media/image346.png|575x279px]]</p></li>
+
<p>[[File:plus5-img346.png|1500px]]</p></li>
 
<li><p>Pagoda command line tool test</p>
 
<li><p>Pagoda command line tool test</p>
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image347.png|388x343px|815iring_001]]
+
[[File:plus5-img347.png]]
  
 
</div></li>
 
</div></li>
 
<li><p>For more functions of the pagoda, please refer to the following information to explore by yourself</p>
 
<li><p>For more functions of the pagoda, please refer to the following information to explore by yourself</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>manual:[http://docs.bt.cn '''http://docs.bt.cn''']</p>
 
<p>manual:[http://docs.bt.cn '''http://docs.bt.cn''']</p>
 
<p>Forum address:[https://www.bt.cn/bbs '''https://www.bt.cn/bbs''']</p>
 
<p>Forum address:[https://www.bt.cn/bbs '''https://www.bt.cn/bbs''']</p>
<p>GitHub Link:'''https://github.com/aaPanel/BaoTa'''</p></li></ol>
+
<p>GitHub Link:'''https://github.com/aaPanel/BaoTa'''</p>
 +
|}
 +
</li></ol>
  
 
<span id="set-the-chinese-environment-and-install-chinese-input-method"></span>
 
<span id="set-the-chinese-environment-and-install-chinese-input-method"></span>
 +
 
== Set the Chinese environment and install Chinese input method ==
 
== Set the Chinese environment and install Chinese input method ==
  
'''Note that before installing the Chinese input method, please make sure that the Linux system used in the development board is the desktop version system。'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<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>
 +
|}
  
 
<span id="debian-11-system-installation-method"></span>
 
<span id="debian-11-system-installation-method"></span>
Line 5,618: Line 7,034:
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
 
<li><p>Enter the command below to start configured '''locale'''</p>
 
<li><p>Enter the command below to start configured '''locale'''</p>
<p>orangepi@orangepi:~$ '''sudo dpkg-reconfigure locales'''</p></li>
+
{| class="wikitable" style="width:800px;"
<li><p>Then select '''zh_CN.UTF-8 UTF-8''' in the pop-up interface &gt; (through the upper and lower direction keys on the keyboard to &gt; move up and down, select it through the space key, and finally &gt; move the cursor to '''&lt;OK&gt;''' through the Tab key, and then &gt; press Enter key.)</p>
+
|-
<p>[[File:media/image348.png|575x296px]]</p></li>
+
|
 +
<p>orangepi@orangepi:~$ '''sudo dpkg-reconfigure locales'''</p>
 +
|}
 +
</li>
 +
<li><p>Then select '''zh_CN.UTF-8 UTF-8''' in the pop-up interface (through the upper and lower direction keys on the keyboard to move up and down, select it through the space key, and finally move the cursor to '''&lt;OK&gt;''' through the Tab key, and then press Enter key.)</p>
 +
<p>[[File:plus5-img348.png|1500px]]</p></li>
 
<li><p>Then set the default '''locale''' as '''zh_CN.UTF-8'''</p>
 
<li><p>Then set the default '''locale''' as '''zh_CN.UTF-8'''</p>
<p>[[File:media/image349.png|575x160px]]</p></li>
+
<p>[[File:plus5-img349.png|1500px]]</p></li>
<li><p>After exiting the interface,'''locale''' will be set. The output &gt; displayed by the command line is shown below</p>
+
<li><p>After exiting the interface,'''locale''' will be set. The output displayed by the command line is shown below</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''sudo dpkg-reconfigure locales'''</p>
 
<p>orangepi@orangepi:~$ '''sudo dpkg-reconfigure locales'''</p>
 
<p>Generating locales (this might take a while)...</p>
 
<p>Generating locales (this might take a while)...</p>
<p>en_US.UTF-8... done</p>
+
:<p>en_US.UTF-8... done</p>
<p>zh_CN.UTF-8... done</p>
+
:<p>zh_CN.UTF-8... done</p>
<p>Generation complete.</p></li></ol>
+
<p>Generation complete.</p>
 +
|}
 +
</li></ol>
 
</li>
 
</li>
 
<li><p>Then open '''Input Method'''</p>
 
<li><p>Then open '''Input Method'''</p>
<p>[[File:media/image350.png|575x361px]]</p></li>
+
<p>[[File:plus5-img350.png]]</p></li>
 
<li><p>Then choose '''OK'''</p>
 
<li><p>Then choose '''OK'''</p>
<p>[[File:media/image351.png|295x212px]]</p></li>
+
<p>[[File:plus5-img351.png]]</p></li>
 
<li><p>Then choose '''Yes'''</p>
 
<li><p>Then choose '''Yes'''</p>
<p>[[File:media/image352.png|303x192px]]</p></li>
+
<p>[[File:plus5-img352.png]]</p></li>
 
<li><p>Then choose '''fcitx'''</p>
 
<li><p>Then choose '''fcitx'''</p>
<p>[[File:media/image353.png|307x220px]]</p></li>
+
<p>[[File:plus5-img353.png]]</p></li>
 
<li><p>Then choose '''OK'''</p>
 
<li><p>Then choose '''OK'''</p>
<p>[[File:media/image354.png|305x216px]]</p></li>
+
<p>[[File:plus5-img354.png]]</p></li>
<li><p>'''Then restart the Linux system to make the configuration effective'''</p></li>
+
<li><p>'''<span style="color:#FF0000">Then restart the Linux system to make the configuration effective</span>'''</p></li>
 
<li><p>Then Open '''Fcitx configuration'''</p>
 
<li><p>Then Open '''Fcitx configuration'''</p>
<p>[[File:media/image355.png|575x376px]]</p></li>
+
<p>[[File:plus5-img355.png]]</p></li>
 
<li><p>Then click the “+” of the position shown in the figure below</p>
 
<li><p>Then click the “+” of the position shown in the figure below</p>
<p>[[File:media/image356.png|280x187px]]</p></li>
+
<p>[[File:plus5-img356.png]]</p></li>
 
<li><p>Then search '''Google Pinyin''' and click '''OK'''</p>
 
<li><p>Then search '''Google Pinyin''' and click '''OK'''</p>
<p>[[File:media/image357.png|291x196px]]</p></li>
+
<p>[[File:plus5-img357.png]]</p></li>
 
<li><p>Then put '''Google Pinyin''' to the forefront</p>
 
<li><p>Then put '''Google Pinyin''' to the forefront</p>
<p>[[File:media/image358.png|299x202px]]</p>
+
<p>[[File:plus5-img358.png]]</p>
<p>[[File:media/image359.png|300x202px]]</p></li>
+
<p>[[File:plus5-img359.png]]</p></li>
 
<li><p>Then open the '''Geany''' Editor and test the Chinese input method.</p>
 
<li><p>Then open the '''Geany''' Editor and test the Chinese input method.</p>
<p>[[File:media/image360.png|349x212px]]</p></li>
+
<p>[[File:plus5-img360.png]]</p></li>
 
<li><p>Chinese input method test is shown below</p>
 
<li><p>Chinese input method test is shown below</p>
<p>[[File:media/image361.png|575x325px]]</p></li>
+
<p>[[File:plus5-img361.png]]</p></li>
 
<li><p>You can switch between Chinese and English input methods through '''Ctrl+Space''' shortcut</p></li>
 
<li><p>You can switch between Chinese and English input methods through '''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><p>If the entire system is required as Chinese, the variables in '''/etc/default/locale''' can be set to '''zh_CN.UTF-8'''</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''sudo vim /etc/default/locale'''</p>
 
<p>orangepi@orangepi:~$ '''sudo vim /etc/default/locale'''</p>
 
<p># File generated by update-locale</p>
 
<p># File generated by update-locale</p>
<p>LC_MESSAGES='''zh_CN.UTF-8'''</p>
+
<p>LC_MESSAGES='''<span style="color:#FF0000">zh_CN.UTF-8</span>'''</p>
<p>LANG='''zh_CN.UTF-8'''</p>
+
<p>LANG='''<span style="color:#FF0000">zh_CN.UTF-8</span>'''</p>
<p>LANGUAGE='''zh_CN.UTF-8'''</p></li>
+
<p>LANGUAGE='''<span style="color:#FF0000">zh_CN.UTF-8</span>'''</p>
 +
|}
 +
</li>
 
<li><p>Then '''restart the system''' to see the system display as Chinese</p>
 
<li><p>Then '''restart the system''' to see the system display as Chinese</p>
<p>[[File:media/image362.png|576x356px]]</p></li></ol>
+
<p>[[File:plus5-img362.png]]</p></li></ol>
  
 
<span id="ubuntu-20.04-system-installation-method"></span>
 
<span id="ubuntu-20.04-system-installation-method"></span>
 +
 
=== ubuntu 20.04 system installation method ===
 
=== ubuntu 20.04 system installation method ===
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>First open '''Language Support'''</p>
 
<li><p>First open '''Language Support'''</p>
<p>[[File:media/image363.png|575x351px]]</p></li>
+
<p>[[File:plus5-img363.png]]</p></li>
 
<li><p>Then find the '''<span class="mark">Chinese (China)</span>''' option</p>
 
<li><p>Then find the '''<span class="mark">Chinese (China)</span>''' option</p>
<p>[[File:media/image364.png|318x311px]]</p></li>
+
<p>[[File:plus5-img364.png]]</p></li>
 
<li><p>Then use the left mouse button to select '''<span class="mark">Chinese (China)</span>''' and hold it down, and then drag it up to the beginning. The display after dragging is shown in the figure below:</p>
 
<li><p>Then use the left mouse button to select '''<span class="mark">Chinese (China)</span>''' and hold it down, and then drag it up to the beginning. The display after dragging is shown in the figure below:</p>
<p>[[File:media/image365.png|324x320px]]</p></li></ol>
+
<p>[[File:plus5-img365.png]]</p></li>
 
 
'''Note that this step is not very easy to drag, please try a few more times。'''
 
  
 +
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''Note that this step is not very easy to drag, please try a few more times.'''</big>
 +
|}
 +
</ol>
 
<ol start="4" style="list-style-type: decimal;">
 
<ol start="4" style="list-style-type: decimal;">
 
<li><p>Then select the '''<span class="mark">Apply System-Wide</span>''' to apply the Chinese settings to the entire system</p>
 
<li><p>Then select the '''<span class="mark">Apply System-Wide</span>''' to apply the Chinese settings to the entire system</p>
<p>[[File:media/image366.png|321x316px]]</p></li>
+
<p>[[File:plus5-img366.png]]</p></li>
 
<li><p>Then set the '''Keyboard input method system''' as '''fcitx'''</p>
 
<li><p>Then set the '''Keyboard input method system''' as '''fcitx'''</p>
<p>[[File:media/image367.png|327x320px]]</p></li>
+
<p>[[File:plus5-img367.png]]</p></li>
<li><p>'''Then restart the linux system to make the configuration effective'''</p></li>
+
<li><p>'''<span style="color:#FF0000">Then restart the linux system to make the configuration effective</span>'''</p></li>
 
<li><p>After re -entering the system, please choose '''<span class="mark">not to ask me again</span>''' at the interface below, and then determine whether the standard folder should be updated in Chinese according to your preference</p>
 
<li><p>After re -entering the system, please choose '''<span class="mark">not to ask me again</span>''' at the interface below, and then determine whether the standard folder should be updated in Chinese according to your preference</p>
<p>[[File:media/image368.png|303x247px]]</p></li>
+
<p>[[File:plus5-img368.png]]</p></li>
 
<li><p>Then you can see that the desktop is displayed as Chinese</p>
 
<li><p>Then you can see that the desktop is displayed as Chinese</p>
<p>[[File:media/image369.png|575x383px]]</p></li>
+
<p>[[File:plus5-img369.png]]</p></li>
 
<li><p>Then we can open the '''Geany''' test in the Chinese input method. The way to open the way is shown in the figure below</p>
 
<li><p>Then we can open the '''Geany''' test in the Chinese input method. The way to open the way is shown in the figure below</p>
<p>[[File:media/image370.png|576x292px]]</p></li>
+
<p>[[File:plus5-img370.png]]</p></li>
 
<li><p>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</p>
 
<li><p>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</p>
<p>[[File:media/image371.png|575x308px]]</p></li></ol>
+
<p>[[File:plus5-img371.png]]</p></li></ol>
  
 
<span id="ubuntu-22.04-installation-method"></span>
 
<span id="ubuntu-22.04-installation-method"></span>
 +
 
=== Ubuntu 22.04 installation method ===
 
=== Ubuntu 22.04 installation method ===
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>First open '''Language Support'''</p>
 
<li><p>First open '''Language Support'''</p>
<p>[[File:media/image363.png|575x351px]]</p></li>
+
<p>[[File:plus5-img363.png]]</p></li>
 
<li><p>Then find the '''<span class="mark">Chinese (China)</span>''' option</p>
 
<li><p>Then find the '''<span class="mark">Chinese (China)</span>''' option</p>
<p>[[File:media/image372.png|249x242px]]</p></li>
+
<p>[[File:plus5-img372.png]]</p></li>
 
<li><p>Then please use the mouse to select '''<span class="mark">Chinese (China)</span>''' and hold it down, and then drag it up to the beginning. The display after the dragging is shown in the figure below:</p>
 
<li><p>Then please use the mouse to select '''<span class="mark">Chinese (China)</span>''' and hold it down, and then drag it up to the beginning. The display after the dragging is shown in the figure below:</p>
<p>[[File:media/image373.png|267x262px]]</p></li></ol>
+
<p>[[File:plus5-img373.png]]</p></li>
 
 
'''Note that this step is not very easy to drag, please try a few more times。'''
 
  
 +
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''Note that this step is not very easy to drag, please try a few more times.'''</big>
 +
|}
 +
</ol>
 
<ol start="4" style="list-style-type: decimal;">
 
<ol start="4" style="list-style-type: decimal;">
 
<li><p>Then select the '''Apply System-Wide''' to apply the Chinese settings to the entire system</p>
 
<li><p>Then select the '''Apply System-Wide''' to apply the Chinese settings to the entire system</p>
<p>[[File:media/image374.png|287x282px]]</p></li>
+
<p>[[File:plus5-img374.png]]</p></li>
<li><p>'''Then restart the linux system to make the configuration effective'''</p></li>
+
<li><p>'''<span style="color:#FF0000">Then restart the linux system to make the configuration effective</span>'''</p></li>
 
<li><p>After re-entering the system, please choose '''<span class="mark">not to ask me again</span>''' at the interface below, and then determine whether the standard folder should be updated to Chinese according to your preference</p>
 
<li><p>After re-entering the system, please choose '''<span class="mark">not to ask me again</span>''' at the interface below, and then determine whether the standard folder should be updated to Chinese according to your preference</p>
<p>[[File:media/image368.png|303x247px]]</p></li>
+
<p>[[File:plus5-img368.png]]</p></li>
 
<li><p>Then you can see that the desktop is displayed as Chinese</p>
 
<li><p>Then you can see that the desktop is displayed as Chinese</p>
<p>[[File:media/image369.png|575x383px]]</p></li>
+
<p>[[File:plus5-img369.png]]</p></li>
 
<li><p>Then open the Fcitx5 configuration program</p>
 
<li><p>Then open the Fcitx5 configuration program</p>
<p>[[File:media/image375.png|575x349px]]</p></li>
+
<p>[[File:plus5-img375.png]]</p></li>
 
<li><p>Then choose to use Pinyin input method</p>
 
<li><p>Then choose to use Pinyin input method</p>
<p>[[File:media/image376.png|338x267px]]</p></li>
+
<p>[[File:plus5-img376.png]]</p></li>
 
<li><p>The interface after selecting is shown below, then click OK</p>
 
<li><p>The interface after selecting is shown below, then click OK</p>
<p>[[File:media/image377.png|366x290px]]</p></li>
+
<p>[[File:plus5-img377.png]]</p></li>
 
<li><p>Then we can open the '''Geany''' to test Chinese input method.The way to open is shown in the figure below</p>
 
<li><p>Then we can open the '''Geany''' to test Chinese input method.The way to open is shown in the figure below</p>
<p>[[File:media/image370.png|576x292px]]</p></li>
+
<p>[[File:plus5-img370.png]]</p></li>
 
<li><p>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</p>
 
<li><p>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</p>
<p>[[File:media/image378.png|434x308px]]</p></li></ol>
+
<p>[[File:plus5-img378.png]]</p></li></ol>
  
 
<span id="how-to-remotely-log-in-to-the-linux-system-desktop-method"></span>
 
<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 ==
 
== How to remotely log in to the Linux system desktop method ==
  
'''Ubuntu Gnome Wayland image does not support nomachine and VNC described here to remotely log in to the desktop。'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''Ubuntu Gnome Wayland image does not support NoMachine and VNC described here to remotely log in to the desktop.'''</big>
 +
|}
  
 
<span id="use-nomachine-remote-login"></span>
 
<span id="use-nomachine-remote-login"></span>
 
=== Use NoMachine remote login ===
 
=== Use NoMachine remote login ===
  
'''Make sure the Ubuntu or Debian system installed on the development board is a <span class="mark">desktop version</span>. In addition, nomachine also provides detailed documents. It is strongly recommended to read this document to be familiar with the use of nomachine. The document links are shown below:'''
+
{| 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:#FF0000">desktop version</span>. In addition, NoMachine also provides detailed documents. It is strongly recommended to read this document to be familiar with the use of NoMachine. The document links are shown below:'''
  
'''https://knowledgebase.nomachine.com/DT10R00166'''
+
'''https://knowledgebase.nomachine.com/DT10R00166'''</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。'''
+
{| 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>
 +
|}
  
'''Before operation, please ensure that the Windows computer and the development board are in the same local area network, and can log in to the Ubuntu or Debian system that can log in to the development board normally'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''Before operation, please ensure that the Windows computer and the development board are in the same local area network, and can log in to the Ubuntu or Debian system that can log in to the development board normally'''</big>
 +
|}
  
 
<ol style="list-style-type: decimal;">
 
<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>
+
<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;">
 
<ol style="list-style-type: lower-alpha;">
<li>Since RK3588 is a SOC of the ARMV8 architecture, the system we &gt; use is Ubuntu or Debian, so you need to download '''NoMachine &gt; for ARM ARMv8 DEB''' installation package here. The download &gt; link is shown below:</li></ol>
+
<li>Since RK3588 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>
</li></ol>
 
  
'''Note that this download link may change, please recognize the deb package of the Armv8/Arm64 version.'''
+
{| 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>
 +
|}
  
[https://www.nomachine.com/download/download&id=112&s=ARM '''https://downloads.nomachine.com/download/?id=118&amp;distro=ARM''']
+
{| class="wikitable" style="width:800px;"
 
+
|-
[[File:media/image379.png|575x227px]]
+
|
 +
'''https://downloads.nomachine.com/download/?id=118&amp;distro=ARM'''
 +
|}
  
 +
[[File:plus5-img379.png]]
 +
</ol>
 
<ol start="2" style="list-style-type: lower-alpha;">
 
<ol start="2" style="list-style-type: lower-alpha;">
<li><p>In addition, you can also download the installation package of &gt; '''NoMachine''' in the '''official tools'''</p>
+
<li><p>In addition, you can also download the installation package of '''NoMachine''' in the '''official tools'''</p>
<p>[[File:media/image380.png|70x86px]]</p>
+
<p>[[File:plus5-img380.png]]</p>
 
<p>First Enter the '''<span class="mark">remote login software-Nomachine</span>''' Folder</p>
 
<p>First Enter the '''<span class="mark">remote login software-Nomachine</span>''' Folder</p>
<p>[[File:media/image381.png|256x46px]]</p>
+
<p>[[File:plus5-img381.png]]</p>
 
<p>Then download the arm64 version of the deb installation package</p>
 
<p>Then download the arm64 version of the deb installation package</p>
<p>[[File:media/image382.png|180x109px]]</p></li>
+
<p>[[File:plus5-img382.png]]</p></li>
<li><p>Then upload the downloaded '''nomachine_x.x.x_x_arm64.deb''' to the &gt; Linux system of the development board</p></li>
+
<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 &gt; system in the development board</p>
+
<li><p>Then use the following command to install '''NoMachine''' in the Linux system in the development board</p>
<p>orangepi@orangepi:~$ '''sudo dpkg -i nomachine_x.x.x_x_arm64_arm64.deb'''</p></li></ol>
 
  
<!-- -->
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''sudo dpkg -i nomachine_x.x.x_x_arm64_arm64.deb'''</p>
 +
|}
 +
</li></ol>
 +
</li></ol>
 
<ol start="2" style="list-style-type: decimal;">
 
<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></ol>
+
<li>Then download the NoMachine software Windows version of the installation package, the download address is shown below</li>
  
'''Note that this download link may change'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''Note that this download link may change'''</big>
 +
|}
  
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
'''https://downloads.nomachine.com/download/?id=9'''
 
'''https://downloads.nomachine.com/download/?id=9'''
 +
|}
  
[[File:media/image383.png|575x163px]]
+
[[File:plus5-img383.png]]
 
+
</ol>
 
<ol start="3" style="list-style-type: decimal;">
 
<ol start="3" style="list-style-type: decimal;">
 
<li><p>Then install nomachine in Windows. '''Please restart the computer after installation'''</p></li>
 
<li><p>Then install nomachine in Windows. '''Please restart the computer after installation'''</p></li>
 
<li><p>Then open '''NoMachine''' in Window</p>
 
<li><p>Then open '''NoMachine''' in Window</p>
<p>[[File:media/image384.png|76x66px]]</p></li>
+
<p>[[File:plus5-img384.png]]</p></li>
 
<li><p>After Nomachine is started, 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. You can start logging in to the Linux system desktop of the development board</p>
 
<li><p>After Nomachine is started, 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. You can start logging in to the Linux system desktop of the development board</p>
<p>[[File:media/image385.png|321x92px]]</p></li>
+
<p>[[File:plus5-img385.png]]</p></li>
 
<li><p>Then click '''OK'''</p>
 
<li><p>Then click '''OK'''</p>
<p>[[File:media/image386.png|269x184px]]</p></li>
+
<p>[[File:plus5-img386.png]]</p></li>
 
<li><p>Then enter the username and password of the linux system in the corresponding position in the figure below, and then click '''OK''' to start logging in</p>
 
<li><p>Then enter the username and password of the linux system in the corresponding position in the figure below, and then click '''OK''' to start logging in</p>
<p>[[File:media/image387.png|303x204px]]</p></li>
+
<p>[[File:plus5-img387-1.png]]</p></li>
 
<li><p>Then click OK in the next interface</p></li>
 
<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>
 
<li><p>Finally, you can see the desktop of the development board Linux system</p>
<p>[[File:media/image388.png|411x246px]]</p></li></ol>
+
<p>[[File:plus5-img388.png]]</p></li></ol>
  
 
<span id="use-vnc-remote-login"></span>
 
<span id="use-vnc-remote-login"></span>
 +
 
=== Use VNC remote login ===
 
=== Use VNC remote login ===
  
'''Before operation, please ensure that the Windwos computer and the development board are in the same local area network, and you can log in to the Ubuntu or Debian system of the development board normally.'''
+
{| 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 you can log in to the Ubuntu or Debian system of the development board normally.'''
  
'''Ubuntu 20.04 tests many problems with VNC, please do not use this method.'''
+
'''<span style="color:#FF0000">Ubuntu 20.04 tests many problems with VNC, please do not use this method.</span>'''</big>
 +
|}
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
<li><p>First run the '''set_vnc.sh''' script settings vnc, and '''remember to add Sudo permissions'''</p>
+
<li><p>First run the '''set_vnc.sh''' script settings vnc, and '''<span style="color:#FF0000">remember to add Sudo permissions</span>'''</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''sudo set_vnc.sh'''</p>
 
<p>orangepi@orangepi:~$ '''sudo set_vnc.sh'''</p>
 
<p>You will require a password to access your desktops.</p>
 
<p>You will require a password to access your desktops.</p>
<p>Password: '''#Set the VNC password here, 8 -bit characters'''</p>
+
 
<p>Verify: '''#Set the VNC password here, 8 -bit characters'''</p>
+
 
<p>Would you like to enter a view-only password (y/n)? '''n'''</p>
+
<p>Password: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'''<span style="color:#FF0000">#Set the VNC password here, 8 -bit characters</span>'''</p>
 +
<p>Verify: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'''<span style="color:#FF0000">#Set the VNC password here, 8 -bit characters</span>'''</p>
 +
<p>Would you like to enter a view-only password (y/n)? '''<span style="color:#FF0000">n</span>'''</p>
 
<p>xauth: file /root/.Xauthority does not exist</p>
 
<p>xauth: file /root/.Xauthority does not exist</p>
 +
 +
 
<p>New 'X' desktop is orangepi:1</p>
 
<p>New 'X' desktop is orangepi:1</p>
 +
 +
 
<p>Creating default startup script /root/.vnc/xstartup</p>
 
<p>Creating default startup script /root/.vnc/xstartup</p>
 
<p>Starting applications specified in /root/.vnc/xstartup</p>
 
<p>Starting applications specified in /root/.vnc/xstartup</p>
 
<p>Log file is /root/.vnc/orangepi:1.log</p>
 
<p>Log file is /root/.vnc/orangepi:1.log</p>
 +
 +
 
<p>Killing Xtightvnc process ID 3047</p>
 
<p>Killing Xtightvnc process ID 3047</p>
 +
 +
 
<p>New 'X' desktop is orangepi:1</p>
 
<p>New 'X' desktop is orangepi:1</p>
 +
 +
 
<p>Starting applications specified in /root/.vnc/xstartup</p>
 
<p>Starting applications specified in /root/.vnc/xstartup</p>
<p>Log file is /root/.vnc/orangepi:1.log</p></li>
+
<p>Log file is /root/.vnc/orangepi:1.log</p>
 +
|}
 +
</li>
 
<li><p>The steps of using MobaxTerm software to connect the development board Linux system desktop are shown below:</p>
 
<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;">
 
<ol style="list-style-type: lower-alpha;">
<li>First click the session, then select VNC, then fill in the IP &gt; address and port of the development board, and finally click &gt; OK to confirm</li></ol>
+
<li>First click the session, then select VNC, then fill in the IP address and port of the development board, and finally click OK to confirm</li>
</li></ol>
 
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image389.png|490x349px|图片1208]]
+
[[File:plus5-img389.png]]
  
</div>
+
</div></ol>
 
<ol start="2" style="list-style-type: lower-alpha;">
 
<ol start="2" style="list-style-type: lower-alpha;">
 
<li><p>Then enter the password of the previously set VNC</p>
 
<li><p>Then enter the password of the previously set VNC</p>
<p>[[File:media/image390.png|221x105px]]</p></li>
+
<p>[[File:plus5-img390.png]]</p></li>
<li><p>The interface after the login is successfully displayed as shown in &gt; the figure below, and then you can remotely operate the desktop of &gt; the linux system remotely</p></li></ol>
+
<li><p>The interface after the login is successfully displayed as shown in the figure below, and then you can remotely operate the desktop of the linux system remotely</p></li>
  
[[File:media/image391.png|405x293px]]
+
[[File:plus5-img391.png]]
 +
</ol>
 +
</li></ol>
 +
<span id="some-programming-language-test-supported-by-thelinux-system"></span>
  
<span id="some-programming-language-test-supported-by-thelinux-system"></span>
 
 
== Some programming language test supported by thelinux system ==
 
== Some programming language test supported by thelinux system ==
  
Line 5,837: Line 7,338:
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
 
<li><p>The version of the gcc is shown below</p>
 
<li><p>The version of the gcc is shown below</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''gcc --version'''</p>
 
<p>orangepi@orangepi:~$ '''gcc --version'''</p>
 
<p>gcc (Debian 10.2.1-6) 10.2.1 20210110</p>
 
<p>gcc (Debian 10.2.1-6) 10.2.1 20210110</p>
 
<p>Copyright (C) 2020 Free Software Foundation, Inc.</p>
 
<p>Copyright (C) 2020 Free Software Foundation, Inc.</p>
 
<p>This is free software; see the source for copying conditions. There is NO</p>
 
<p>This is free software; see the source for copying conditions. There is NO</p>
<p>warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.</p></li>
+
<p>warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.</p>
 +
|}
 +
</li>
 
<li><p>'''hello_world.c''' program to write c language</p>
 
<li><p>'''hello_world.c''' program to write c language</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''vim hello_world.c'''</p>
 
<p>orangepi@orangepi:~$ '''vim hello_world.c'''</p>
 
<p>#include &lt;stdio.h&gt;</p>
 
<p>#include &lt;stdio.h&gt;</p>
 +
 +
 
<p>int main(void)</p>
 
<p>int main(void)</p>
 
<p>{</p>
 
<p>{</p>
<p>printf(&quot;Hello World!\n&quot;);</p>
+
:<p>printf(&quot;Hello World!\n&quot;);</p>
<p>return 0;</p>
+
:<p>return 0;</p>
<p>}</p></li>
+
<p>}</p>
 +
|}
 +
</li>
 
<li><p>Then compile and run '''hello_world.c'''</p>
 
<li><p>Then compile and run '''hello_world.c'''</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''gcc -o hello_world hello_world.c'''</p>
 
<p>orangepi@orangepi:~$ '''gcc -o hello_world hello_world.c'''</p>
 
<p>orangepi@orangepi:~$ '''./hello_world'''</p>
 
<p>orangepi@orangepi:~$ '''./hello_world'''</p>
<p>Hello World!</p></li></ol>
+
<p>Hello World!</p>
 +
|}
 +
</li></ol>
 
</li>
 
</li>
 
<li><p>Debian Bullseye Default with Python3</p>
 
<li><p>Debian Bullseye Default with Python3</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
 
<li><p>The specific version of Python is shown below</p>
 
<li><p>The specific version of Python is shown below</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''python3'''</p>
 
<p>orangepi@orangepi:~$ '''python3'''</p>
 
<p>'''Python 3.9.2''' (default, Feb 28 2021, 17:03:44)</p>
 
<p>'''Python 3.9.2''' (default, Feb 28 2021, 17:03:44)</p>
Line 5,863: Line 7,384:
 
<p>Type &quot;help&quot;, &quot;copyright&quot;, &quot;credits&quot; or &quot;license&quot; for more information.</p>
 
<p>Type &quot;help&quot;, &quot;copyright&quot;, &quot;credits&quot; or &quot;license&quot; for more information.</p>
 
<p>&gt;&gt;&gt;</p>
 
<p>&gt;&gt;&gt;</p>
<p>'''Use CTRL+D shortcut key to exit Python's interactive mode。'''</p></li>
+
|}
 +
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big><p>'''Use CTRL+D shortcut key to exit Python's interactive mode.'''</p></big>
 +
|}
 +
</li>
 
<li><p>'''hello_world.py''' program in Python language</p>
 
<li><p>'''hello_world.py''' program in Python language</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''vim hello_world.py'''</p>
 
<p>orangepi@orangepi:~$ '''vim hello_world.py'''</p>
<p>print('Hello World!')</p></li>
+
<p>print('Hello World!')</p>
 +
|}
 +
</li>
 
<li><p>The results of running '''hello_world.py''' are shown below</p>
 
<li><p>The results of running '''hello_world.py''' are shown below</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''python3 hello_world.py'''</p>
 
<p>orangepi@orangepi:~$ '''python3 hello_world.py'''</p>
<p>Hello World!</p></li></ol>
+
<p>Hello World!</p>
 +
|}
 +
</li></ol>
 
</li>
 
</li>
 
<li><p>Debian Bullseye's compilation tool and operating environment without Java default</p>
 
<li><p>Debian Bullseye's compilation tool and operating environment without Java default</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li><p>You can use the following command to install openjdk. The latest &gt; version in Debian Bullseye is openjdk-17</p>
+
<li><p>You can use the following command to install openjdk. The latest version in Debian Bullseye is openjdk-17</p>
<p>orangepi@orangepi:~$ '''sudo apt install -y openjdk-17-jdk'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''sudo apt install -y openjdk-17-jdk'''</p>
 +
|}
 +
</li>
 
<li><p>After installation, you can check the version of Java</p>
 
<li><p>After installation, you can check the version of Java</p>
<p>orangepi@orangepi:~$ '''java --version'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''java --version'''</p>
 +
|}
 +
</li>
 
<li><p>Edit the '''hello_world.java''' of Java version</p>
 
<li><p>Edit the '''hello_world.java''' of Java version</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''vim hello_world.java'''</p>
 
<p>orangepi@orangepi:~$ '''vim hello_world.java'''</p>
 
<p>public class hello_world</p>
 
<p>public class hello_world</p>
 
<p>{</p>
 
<p>{</p>
<p>public static void main(String[] args)</p>
+
::<p>public static void main(String[] args)</p>
<p>{</p>
+
::<p>{</p>
<p>System.out.println(&quot;Hello World!&quot;);</p>
+
::::<p>System.out.println(&quot;Hello World!&quot;);</p>
 +
::<p>}</p>
 
<p>}</p>
 
<p>}</p>
<p>}</p></li>
+
|}
 +
</li>
 
<li><p>Then compile and run '''hello_world.java'''</p>
 
<li><p>Then compile and run '''hello_world.java'''</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''javac hello_world.java'''</p>
 
<p>orangepi@orangepi:~$ '''javac hello_world.java'''</p>
 
<p>orangepi@orangepi:~$ '''java hello_world'''</p>
 
<p>orangepi@orangepi:~$ '''java hello_world'''</p>
<p>Hello World!</p></li></ol>
+
<p>Hello World!</p>
 +
|}
 +
</li></ol>
 
</li></ol>
 
</li></ol>
  
 
<span id="ubuntu-focal-system"></span>
 
<span id="ubuntu-focal-system"></span>
 +
 
=== Ubuntu Focal system ===
 
=== Ubuntu Focal system ===
  
Line 5,899: Line 7,457:
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
 
<li><p>The version of gcc is shown below</p>
 
<li><p>The version of gcc is shown below</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''gcc --version'''</p>
 
<p>orangepi@orangepi:~$ '''gcc --version'''</p>
 
<p>gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0</p>
 
<p>gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0</p>
 
<p>Copyright (C) 2019 Free Software Foundation, Inc.</p>
 
<p>Copyright (C) 2019 Free Software Foundation, Inc.</p>
 
<p>This is free software; see the source for copying conditions. There is NO</p>
 
<p>This is free software; see the source for copying conditions. There is NO</p>
<p>warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.</p></li>
+
<p>warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.</p>
 +
|}
 +
</li>
 
<li><p>The '''hello_world.c''' program that writes c language</p>
 
<li><p>The '''hello_world.c''' program that writes c language</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''vim hello_world.c'''</p>
 
<p>orangepi@orangepi:~$ '''vim hello_world.c'''</p>
 
<p>#include &lt;stdio.h&gt;</p>
 
<p>#include &lt;stdio.h&gt;</p>
 +
 +
 
<p>int main(void)</p>
 
<p>int main(void)</p>
 
<p>{</p>
 
<p>{</p>
<p>printf(&quot;Hello World!\n&quot;);</p>
+
::<p>printf(&quot;Hello World!\n&quot;);</p>
<p>return 0;</p>
+
 
<p>}</p></li>
+
 
 +
::<p>return 0;</p>
 +
<p>}</p>
 +
|}
 +
</li>
 
<li><p>Then compile and run '''hello_world.c'''</p>
 
<li><p>Then compile and run '''hello_world.c'''</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''gcc -o hello_world hello_world.c'''</p>
 
<p>orangepi@orangepi:~$ '''gcc -o hello_world hello_world.c'''</p>
 
<p>orangepi@orangepi:~$ '''./hello_world'''</p>
 
<p>orangepi@orangepi:~$ '''./hello_world'''</p>
<p>Hello World!</p></li></ol>
+
<p>Hello World!</p>
 +
|}
 +
</li></ol>
 
</li>
 
</li>
 
<li><p>Ubuntu Focal's default installation with Python3</p>
 
<li><p>Ubuntu Focal's default installation with Python3</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
 
<li><p>Python3 specific version is shown below</p>
 
<li><p>Python3 specific version is shown below</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''python3'''</p>
 
<p>orangepi@orangepi:~$ '''python3'''</p>
 
<p>Python 3.8.10 (default, Nov 14 2022, 12:59:47)</p>
 
<p>Python 3.8.10 (default, Nov 14 2022, 12:59:47)</p>
Line 5,925: Line 7,505:
 
<p>Type &quot;help&quot;, &quot;copyright&quot;, &quot;credits&quot; or &quot;license&quot; for more information.</p>
 
<p>Type &quot;help&quot;, &quot;copyright&quot;, &quot;credits&quot; or &quot;license&quot; for more information.</p>
 
<p>&gt;&gt;&gt;</p>
 
<p>&gt;&gt;&gt;</p>
<p>'''Use CTRL+D shortcut key to exit Python's interactive mode。'''</p></li>
+
|}
 +
 
 +
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big><p>'''Use CTRL+D shortcut key to exit Python's interactive mode.'''</p></big>
 +
|}
 +
</li>
 
<li><p>The '''hello_world.py''' program that writes python language</p>
 
<li><p>The '''hello_world.py''' program that writes python language</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''vim hello_world.py'''</p>
 
<p>orangepi@orangepi:~$ '''vim hello_world.py'''</p>
<p>print('Hello World!')</p></li>
+
<p>print('Hello World!')</p>
 +
|}
 +
</li>
 
<li><p>The results of running '''hello_world.py''' are shown below</p>
 
<li><p>The results of running '''hello_world.py''' are shown below</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''python3 hello_world.py'''</p>
 
<p>orangepi@orangepi:~$ '''python3 hello_world.py'''</p>
<p>Hello World!</p></li></ol>
+
<p>Hello World!</p>
 +
|}
 +
</li></ol>
 
</li>
 
</li>
 
<li><p>Ubuntu Focal's compilation tools and operating environment without Java default</p>
 
<li><p>Ubuntu Focal's compilation tools and operating environment without Java default</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
 
<li><p>You can use the following command to install openjdk-17</p>
 
<li><p>You can use the following command to install openjdk-17</p>
<p>orangepi@orangepi:~$ '''sudo apt install -y openjdk-17-jdk'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''sudo apt install -y openjdk-17-jdk'''</p>
 +
|}
 +
</li>
 
<li><p>After installation, you can check the version of the java</p>
 
<li><p>After installation, you can check the version of the java</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''java --version'''</p>
 
<p>orangepi@orangepi:~$ '''java --version'''</p>
 
<p>openjdk 17.0.2 2022-01-18</p>
 
<p>openjdk 17.0.2 2022-01-18</p>
 
<p>OpenJDK Runtime Environment (build 17.0.2+8-Ubuntu-120.04)</p>
 
<p>OpenJDK Runtime Environment (build 17.0.2+8-Ubuntu-120.04)</p>
<p>OpenJDK 64-Bit Server VM (build 17.0.2+8-Ubuntu-120.04, mixed mode, sharing)</p></li>
+
<p>OpenJDK 64-Bit Server VM (build 17.0.2+8-Ubuntu-120.04, mixed mode, sharing)</p>
 +
|}
 +
</li>
 
<li><p>Edit the '''hello_world.java''' of Java version</p>
 
<li><p>Edit the '''hello_world.java''' of Java version</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''vim hello_world.java'''</p>
 
<p>orangepi@orangepi:~$ '''vim hello_world.java'''</p>
 
<p>public class hello_world</p>
 
<p>public class hello_world</p>
 
<p>{</p>
 
<p>{</p>
<p>public static void main(String[] args)</p>
+
::<p>public static void main(String[] args)</p>
<p>{</p>
+
::<p>{</p>
<p>System.out.println(&quot;Hello World!&quot;);</p>
+
::::<p>System.out.println(&quot;Hello World!&quot;);</p>
 +
::<p>}</p>
 
<p>}</p>
 
<p>}</p>
<p>}</p></li>
+
|}
 +
</li>
 
<li><p>Then compile and run '''hello_world.java'''</p>
 
<li><p>Then compile and run '''hello_world.java'''</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''javac hello_world.java'''</p>
 
<p>orangepi@orangepi:~$ '''javac hello_world.java'''</p>
 
<p>orangepi@orangepi:~$ '''java hello_world'''</p>
 
<p>orangepi@orangepi:~$ '''java hello_world'''</p>
<p>Hello World!</p></li></ol>
+
<p>Hello World!</p>
 +
|}
 +
</li></ol>
 
</li></ol>
 
</li></ol>
  
 
<span id="ubuntu-jammy-system"></span>
 
<span id="ubuntu-jammy-system"></span>
 +
 
=== Ubuntu Jammy system ===
 
=== Ubuntu Jammy system ===
  
<ol start="4" style="list-style-type: decimal;">
+
<ol start="1" style="list-style-type: decimal;">
 
<li><p>Ubuntu Jammy 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>
 
<li><p>Ubuntu Jammy 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;">
 
<ol style="list-style-type: lower-alpha;">
 
<li><p>The version of gcc is shown below</p>
 
<li><p>The version of gcc is shown below</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''gcc --version'''</p>
 
<p>orangepi@orangepi:~$ '''gcc --version'''</p>
 
<p>gcc (Ubuntu 11.2.0-19ubuntu1) '''11.2.0'''</p>
 
<p>gcc (Ubuntu 11.2.0-19ubuntu1) '''11.2.0'''</p>
 
<p>Copyright (C) 2021 Free Software Foundation, Inc.</p>
 
<p>Copyright (C) 2021 Free Software Foundation, Inc.</p>
 
<p>This is free software; see the source for copying conditions. There is NO</p>
 
<p>This is free software; see the source for copying conditions. There is NO</p>
<p>warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.</p></li>
+
<p>warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.</p>
 +
|}
 +
</li>
 
<li><p>The '''hello_world.c''' program that writes c language</p>
 
<li><p>The '''hello_world.c''' program that writes c language</p>
<p>orangepi@orangepi:~$ '''vim hello_world.c'''</p>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''vim hello_world.c'''</p>
 
<p>#include &lt;stdio.h&gt;</p>
 
<p>#include &lt;stdio.h&gt;</p>
 +
 +
 
<p>int main(void)</p>
 
<p>int main(void)</p>
 
<p>{</p>
 
<p>{</p>
<p>printf(&quot;Hello World!\n&quot;);</p>
+
::<p>printf(&quot;Hello World!\n&quot;);</p>
<p>return 0;</p>
+
 
<p>}</p></li>
+
 
 +
::<p>return 0;</p>
 +
<p>}</p>
 +
|}
 +
</li>
 
<li><p>Then compile and run '''hello_world.c'''</p>
 
<li><p>Then compile and run '''hello_world.c'''</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''gcc -o hello_world hello_world.c'''</p>
 
<p>orangepi@orangepi:~$ '''gcc -o hello_world hello_world.c'''</p>
 
<p>orangepi@orangepi:~$ '''./hello_world'''</p>
 
<p>orangepi@orangepi:~$ '''./hello_world'''</p>
<p>Hello World!</p></li></ol>
+
<p>Hello World!</p>
 +
|}
 +
</li></ol>
 
</li>
 
</li>
 
<li><p>Ubuntu jammy is installed with Python3 by default</p>
 
<li><p>Ubuntu jammy is installed with Python3 by default</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
 
<li><p>python3 specific version is shown below</p>
 
<li><p>python3 specific version is shown below</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''python3'''</p>
 
<p>orangepi@orangepi:~$ '''python3'''</p>
 
<p>Python '''3.10.4''' (main, Apr 2 2022, 09:04:19) [GCC 11.2.0] on linux</p>
 
<p>Python '''3.10.4''' (main, Apr 2 2022, 09:04:19) [GCC 11.2.0] on linux</p>
 
<p>Type &quot;help&quot;, &quot;copyright&quot;, &quot;credits&quot; or &quot;license&quot; for more information.</p>
 
<p>Type &quot;help&quot;, &quot;copyright&quot;, &quot;credits&quot; or &quot;license&quot; for more information.</p>
 
<p>&gt;&gt;&gt;</p>
 
<p>&gt;&gt;&gt;</p>
<p>'''Use CTRL+D shortcut key to exit Python's interactive mode。'''</p></li>
+
|}
 +
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big><p>'''Use CTRL+D shortcut key to exit Python's interactive mode.'''</p></big>
 +
|}
 +
</li>
 
<li><p>The '''hello_world.py''' program that writes python language</p>
 
<li><p>The '''hello_world.py''' program that writes python language</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''vim hello_world.py'''</p>
 
<p>orangepi@orangepi:~$ '''vim hello_world.py'''</p>
<p>print('Hello World!')</p></li>
+
<p>print('Hello World!')</p>
 +
|}
 +
</li>
 
<li><p>The results of running '''hello_world.py''' are shown below</p>
 
<li><p>The results of running '''hello_world.py''' are shown below</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''python3 hello_world.py'''</p>
 
<p>orangepi@orangepi:~$ '''python3 hello_world.py'''</p>
<p>Hello World!</p></li></ol>
+
<p>Hello World!</p>
 +
|}
 +
</li></ol>
 
</li>
 
</li>
 
<li><p>Ubuntu Jammy defaults to compile tools and operating environments that are not installed in Java</p>
 
<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;">
 
<ol style="list-style-type: lower-alpha;">
 
<li><p>You can use the following command to install openjdk-18</p>
 
<li><p>You can use the following command to install openjdk-18</p>
<p>orangepi@orangepi:~$ '''sudo apt install -y openjdk-18-jdk'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''sudo apt install -y openjdk-18-jdk'''</p>
 +
|}
 +
</li>
 
<li><p>After installation, you can check the version of the java</p>
 
<li><p>After installation, you can check the version of the java</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''java --version'''</p>
 
<p>orangepi@orangepi:~$ '''java --version'''</p>
 
<p>openjdk 18-ea 2022-03-22</p>
 
<p>openjdk 18-ea 2022-03-22</p>
 
<p>OpenJDK Runtime Environment (build 18-ea+36-Ubuntu-1)</p>
 
<p>OpenJDK Runtime Environment (build 18-ea+36-Ubuntu-1)</p>
<p>OpenJDK 64-Bit Server VM (build 18-ea+36-Ubuntu-1, mixed mode, sharing)</p></li>
+
<p>OpenJDK 64-Bit Server VM (build 18-ea+36-Ubuntu-1, mixed mode, sharing)</p>
 +
|}
 +
</li>
 
<li><p>Edit the '''hello_world.java''' of Java version</p>
 
<li><p>Edit the '''hello_world.java''' of Java version</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''vim hello_world.java'''</p>
 
<p>orangepi@orangepi:~$ '''vim hello_world.java'''</p>
 
<p>public class hello_world</p>
 
<p>public class hello_world</p>
 
<p>{</p>
 
<p>{</p>
<p>public static void main(String[] args)</p>
+
::<p>public static void main(String[] args)</p>
<p>{</p>
+
::<p>{</p>
<p>System.out.println(&quot;Hello World!&quot;);</p>
+
::::<p>System.out.println(&quot;Hello World!&quot;);</p>
 +
::<p>}</p>
 
<p>}</p>
 
<p>}</p>
<p>}</p></li>
+
|}
 +
</li>
 
<li><p>Then compile and run '''hello_world.java'''</p>
 
<li><p>Then compile and run '''hello_world.java'''</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''javac hello_world.java'''</p>
 
<p>orangepi@orangepi:~$ '''javac hello_world.java'''</p>
 
<p>orangepi@orangepi:~$ '''java hello_world'''</p>
 
<p>orangepi@orangepi:~$ '''java hello_world'''</p>
<p>Hello World!</p></li></ol>
+
<p>Hello World!</p>
 +
|}
 +
</li></ol>
 
</li></ol>
 
</li></ol>
  
 
<span id="qt-installation-method"></span>
 
<span id="qt-installation-method"></span>
 +
 
== QT installation method ==
 
== QT installation method ==
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>You can install QT5 and QT Creator with the following scripts</p>
 
<li><p>You can install QT5 and QT Creator with the following scripts</p>
<p>orangepi@orangepi:~$ '''install_qt.sh'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''install_qt.sh'''</p>
 +
|}
 +
</li>
 
<li><p>After installation, it will automatically print the QT version number</p>
 
<li><p>After installation, it will automatically print the QT version number</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
 
<li><p>Ubuntu20.04's own QT version is '''5.12.8'''</p>
 
<li><p>Ubuntu20.04's own QT version is '''5.12.8'''</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''install_qt.sh'''</p>
 
<p>orangepi@orangepi:~$ '''install_qt.sh'''</p>
 
<p>......</p>
 
<p>......</p>
 
<p>QMake version 3.1</p>
 
<p>QMake version 3.1</p>
<p>Using Qt version '''5.12.8''' in /usr/lib/aarch64-linux-gnu</p></li>
+
<p>Using Qt version '''<span style="color:#FF0000">5.12.8</span>''' in /usr/lib/aarch64-linux-gnu</p>
 +
|}
 +
</li>
 
<li><p>Ubuntu22.04's own QT version is '''5.15.3'''</p>
 
<li><p>Ubuntu22.04's own QT version is '''5.15.3'''</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''install_qt.sh'''</p>
 
<p>orangepi@orangepi:~$ '''install_qt.sh'''</p>
 
<p>......</p>
 
<p>......</p>
 
<p>QMake version 3.1</p>
 
<p>QMake version 3.1</p>
<p>Using Qt version '''5.15.3''' in /usr/lib/aarch64-linux-gnu</p></li>
+
<p>Using Qt version '''<span style="color:#FF0000">5.15.3</span>''' in /usr/lib/aarch64-linux-gnu</p>
 +
|}
 +
</li>
 
<li><p>The QT version comes with Debian11 is '''5.15.2'''</p>
 
<li><p>The QT version comes with Debian11 is '''5.15.2'''</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''install_qt.sh'''</p>
 
<p>orangepi@orangepi:~$ '''install_qt.sh'''</p>
 
<p>......</p>
 
<p>......</p>
 
<p>QMake version 3.1</p>
 
<p>QMake version 3.1</p>
<p>Using Qt version '''5.15.2''' in /usr/lib/aarch64-linux-gnu</p></li></ol>
+
<p>Using Qt version '''<span style="color:#FF0000">5.15.2</span>''' in /usr/lib/aarch64-linux-gnu</p>
 +
|}
 +
</li>
 +
<li><p>The QT version that comes with Debian12 is '''5.15.8'''</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''install_qt.sh'''</p>
 +
<p>......</p>
 +
<p>QMake version 3.1</p>
 +
<p>Using Qt version '''<span style="color:#FF0000">5.15.8</span>''' in /usr/lib/aarch64-linux-gnu</p>
 +
|}
 +
</li></ol>
 
</li>
 
</li>
 
<li><p>Then you can see the lax icon of QT Creator in '''Applications'''</p>
 
<li><p>Then you can see the lax icon of QT Creator in '''Applications'''</p>
<p>[[File:media/image392.png|576x270px]]</p>
+
<p>[[File:plus5-img392.png]]</p>
 
<p>You can also use the following command to open QT Creator</p>
 
<p>You can also use the following command to open QT Creator</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''qtcreator'''</p>
 
<p>orangepi@orangepi:~$ '''qtcreator'''</p>
<p>'''During the startup process of QT and QT applications, if the error below is prompted, please ignore it directly. This error will not affect the operation of the application.'''</p>
+
|}
 +
 
 +
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big><p>'''During the startup process of QT and QT applications, if the error below is prompted, please ignore it directly. This error will not affect the operation of the application.'''</p>
 +
 
 +
 
 
<p>'''libGL error: failed to create dri screen'''</p>
 
<p>'''libGL error: failed to create dri screen'''</p>
 
<p>'''libGL error: failed to load driver: rockchip'''</p>
 
<p>'''libGL error: failed to load driver: rockchip'''</p>
 
<p>'''libGL error: failed to create dri screen'''</p>
 
<p>'''libGL error: failed to create dri screen'''</p>
<p>'''libGL error: failed to load driver: rockchip'''</p></li>
+
<p>'''libGL error: failed to load driver: rockchip'''</p></big>
 +
|}
 +
</li>
 
<li><p>The interface after the QT Creator is opened is shown below</p>
 
<li><p>The interface after the QT Creator is opened is shown below</p>
<p>[[File:media/image393.png|576x306px]]</p></li>
+
<p>[[File:plus5-img393.png]]</p></li>
 
<li><p>The version of QT Creator is shown below</p>
 
<li><p>The version of QT Creator is shown below</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li><p>The default version of QT Creator in '''Ubuntu20.04''' is shown &gt; below</p>
+
<li><p>The default version of QT Creator in '''Ubuntu20.04''' is shown below</p>
<p>[[File:media/image394.png|576x308px]]</p></li>
+
<p>[[File:plus5-img394.png]]</p></li>
<li><p>The default version of QT Creator in '''Ubuntu22.04''' is shown &gt; below</p>
+
<li><p>The default version of QT Creator in '''Ubuntu22.04''' is shown below</p>
<p>[[File:media/image395.png|575x307px]]</p></li>
+
<p>[[File:plus5-img395.png]]</p></li>
 
<li><p>The default version of QT Creator in '''Debian11''' is shown below</p>
 
<li><p>The default version of QT Creator in '''Debian11''' is shown below</p>
<p>[[File:media/image396.png|575x309px]]</p></li></ol>
+
<p>[[File:plus5-img396.png]]</p></li>
 +
<li><p>The default version of QT Creator in '''Debian12''' is as follows</p>
 +
<p>[[File:plus5-img396-1.png]]</p></li></ol>
 
</li>
 
</li>
 
<li><p>Then set the QT</p>
 
<li><p>Then set the QT</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
 
<li><p>First open '''Help'''-&gt;'''About Plugins...'''</p>
 
<li><p>First open '''Help'''-&gt;'''About Plugins...'''</p>
<p>[[File:media/image397.png|573x164px]]</p></li>
+
<p>[[File:plus5-img397.png]]</p></li>
 
<li><p>Then remove the hook of '''ClangCodeModel'''</p>
 
<li><p>Then remove the hook of '''ClangCodeModel'''</p>
<p>[[File:media/image398.png|575x359px]]</p></li>
+
<p>[[File:plus5-img398.png]]</p></li>
<li><p>'''After setting, you need to restart Qt Creator'''</p></li>
+
<li><p>'''<span style="color:#FF0000">After setting, you need to restart Qt Creator</span>'''</p></li>
<li><p>Then make sure that the GCC compiler used by QT Creator, if the &gt; default is CLANG, please modify it to GCC</p>
+
<li><p>Then make sure the GCC compiler used by QT Creator, if the default is Clang, please modify it to GCC</p>
<p>[[File:media/image399.png|576x315px]]</p>
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
<p>[[File:media/image400.png|575x307px]]</p></li></ol>
+
|-
 +
|
 +
<big>'''Debian12 please skip this step.'''</big>
 +
|}
 +
<p>[[File:plus5-img399.png]]</p>
 +
<p>[[File:plus5-img400.png]]</p></li></ol>
 
</li>
 
</li>
 
<li><p>Then you can open an example code</p>
 
<li><p>Then you can open an example code</p>
<p>[[File:media/image401.png|575x312px]]</p></li>
+
<p>[[File:plus5-img401.png]]</p></li>
 
<li><p>After clicking the example code, you will automatically open the corresponding description document. You can carefully look at the instructions for the use</p>
 
<li><p>After clicking the example code, you will automatically open the corresponding description document. You can carefully look at the instructions for the use</p>
<p>[[File:media/image402.png|576x218px]]</p></li>
+
<p>[[File:plus5-img402.png]]</p></li>
 
<li><p>Then click '''Configure Project'''</p>
 
<li><p>Then click '''Configure Project'''</p>
<p>[[File:media/image403.png|575x304px]]</p></li>
+
<p>[[File:plus5-img403.png]]</p></li>
 
<li><p>Then click the sample code under the green triangle compilation and run in the lower left corner</p>
 
<li><p>Then click the sample code under the green triangle compilation and run in the lower left corner</p>
<p>[[File:media/image404.png|575x312px]]</p></li>
+
<p>[[File:plus5-img404.png]]</p></li>
 
<li><p>After waiting for a while, the interface shown in the figure below will pop up. At this time, it means that QT can compile and run normally</p>
 
<li><p>After waiting for a while, the interface shown in the figure below will pop up. At this time, it means that QT can compile and run normally</p>
<p>[[File:media/image405.png|576x308px]]</p></li>
+
<p>[[File:plus5-img405.png]]</p></li>
 
<li><p>Reference information</p>
 
<li><p>Reference information</p>
<p>[https://wiki.qt.io/Install_Qt_5_on_Ubuntu '''https://wiki.qt.io/Install_Qt_5_on_Ubuntu''']</p>
+
{| class="wikitable" style="width:800px;"
<p>[https://download.qt.io/archive/qtcreator '''https://download.qt.io/archive/qtcreator''']</p>
+
|-
<p>[https://download.qt.io/archive/qt '''https://download.qt.io/archive/qt''']</p></li></ol>
+
|
 +
'''https://wiki.qt.io/Install_Qt_5_on_Ubuntu'''
 +
 
 +
'''https://download.qt.io/archive/qtcreator'''
 +
 
 +
'''https://download.qt.io/archive/qt'''
 +
|}
 +
</li></ol>
  
 
<span id="ros-installation-method"></span>
 
<span id="ros-installation-method"></span>
 +
 
== ROS installation method ==
 
== ROS installation method ==
  
Line 6,099: Line 7,833:
 
# The current active version of ROS 1 is shown below. The recommended version is '''Noetic Ninjemys'''
 
# The current active version of ROS 1 is shown below. The recommended version is '''Noetic Ninjemys'''
  
[[File:media/image406.png|345x235px]]
+
::[[File:plus5-img406.png]]
  
[[File:media/image407.png|576x210px]]
+
::[[File:plus5-img407.png]]
  
[http://docs.ros.org/ '''http://docs.ros.org''']
+
::{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
'''http://docs.ros.org'''
  
 
'''https://wiki.ros.org/Distributions'''
 
'''https://wiki.ros.org/Distributions'''
 +
|}
  
 
<ol start="2" style="list-style-type: decimal;">
 
<ol start="2" style="list-style-type: decimal;">
 
<li><p>ROS 1 '''Noetic Ninjemys'''' official installation document links are shown below:</p>
 
<li><p>ROS 1 '''Noetic Ninjemys'''' official installation document links are shown below:</p>
<p>[http://wiki.ros.org/noetic/Installation/Ubuntu '''http://wiki.ros.org/noetic/Installation/Ubuntu''']</p></li>
+
{| class="wikitable" style="width:800px;"
<li><p>Ubuntu 20.04 is recommended in the official installation document of ROS '''Noetic Ninjemys''', so please make sure that the system used in the development board is '''Ubuntu20.04 desktop version system'''</p>
+
|-
<p>[http://wiki.ros.org/noetic/Installation '''http://wiki.ros.org/noetic/Installation''']</p>
+
|
<p>[[File:media/image408.png|312x176px]]</p></li>
+
'''http://wiki.ros.org/noetic/Installation/Ubuntu'''
 +
|}
 +
</li>
 +
<li><p>Ubuntu 20.04 is recommended in the official installation document of ROS '''Noetic Ninjemys''', so please make sure that the system used in the development board is '''<span style="color:#FF0000">Ubuntu20.04 desktop version system</span>'''</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
'''http://wiki.ros.org/noetic/Installation'''
 +
|}
 +
<p>[[File:plus5-img408.png]]</p></li>
 
<li><p>Then install Ros1 with the following script</p>
 
<li><p>Then install Ros1 with the following script</p>
<p>orangepi@orangepi5plus:~$ '''install_ros.sh ros1'''</p></li>
+
{| class="wikitable" style="width:800px;"
<li><p>Before using the ROS tool, you need to initialize ROSDEP first, and then install some system dependencies and core components in some ROS when compiling the source code</p></li></ol>
+
|-
 
+
|
'''Note that the following commands need to ensure that the development board can access GitHub normally, otherwise it will report an error due to network problems。'''
+
<p>orangepi@orangepi5plus:~$ '''install_ros.sh ros1'''</p>
 +
|}
 +
</li>
 +
<li><p>Before using the ROS tool, you need to initialize ROSDEP first, and then install some system dependencies and core components in some ROS when compiling the source code</p></li>
 +
 
 +
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''<span style="color:#FF0000">Note that the following commands need to ensure that the development board can access GitHub normally, otherwise it will report an error due to network problems.</span>'''
 +
 
 +
 
 +
'''install_ros.sh script will try to modify/etc/hosts and run the following commands automatically. However, this method cannot guarantee that you can access github normally. If install_ros.sh has prompting the following errors after the ros1 is installed, please think other methods to allow the linux system of the development board to access github normally, and then manually run the following manually command.'''
  
'''install_ros.sh script will try to modify/etc/hosts and run the following commands automatically. However, this method cannot guarantee that you can access github normally. If install_ros.sh has prompting the following errors after the ros1 is installed, please think other methods to allow the linux system of the development board to access github normally, and then manually run the following manually command。'''
 
  
 
'''https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml'''
 
'''https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml'''
Line 6,125: Line 7,882:
 
'''Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml'''
 
'''Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml'''
  
'''ERROR: error loading sources list:'''
+
'''<span style="color:#FF0000">ERROR: error loading sources list:</span>'''
 +
 
 +
::'''<span style="color:#FF0000">The read operation timed out</span>'''</big>
 +
|}
  
'''The read operation timed out'''
 
  
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
orangepi@orangepi:~$ '''source /opt/ros/noetic/setup.bash'''
 
orangepi@orangepi:~$ '''source /opt/ros/noetic/setup.bash'''
  
Line 6,137: Line 7,899:
 
Recommended: please run
 
Recommended: please run
  
rosdep update
+
 
 +
::rosdep update
  
 
orangepi@orangepi:~$ '''rosdep update'''
 
orangepi@orangepi:~$ '''rosdep update'''
Line 6,190: Line 7,953:
  
 
updated cache in /home/orangepi/.ros/rosdep/sources.cache
 
updated cache in /home/orangepi/.ros/rosdep/sources.cache
 
+
|}
 +
</ol>
 
<ol start="6" style="list-style-type: decimal;">
 
<ol start="6" style="list-style-type: decimal;">
 
<li><p>Then open a command line window on the '''desktop''', and then use the '''test_ros.sh''' script to start a small turtle routine to test whether the ROS can be used normally</p>
 
<li><p>Then open a command line window on the '''desktop''', and then use the '''test_ros.sh''' script to start a small turtle routine to test whether the ROS can be used normally</p>
<p>orangepi@orangepi:~$ '''test_ros.sh'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''test_ros.sh'''</p>
 +
|}
 +
</li>
 
<li><p>After running the '''test_ros.sh''' script, a small turtle shown in the figure below will pop up</p>
 
<li><p>After running the '''test_ros.sh''' script, a small turtle shown in the figure below will pop up</p>
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image409.png|575x275px|图片4]]
+
[[File:plus5-img409.png]]
  
 
</div></li>
 
</div></li>
<li><p>Then please keep the terminal window just open at the top</p></li></ol>
+
<li><p>Then please keep the terminal window just open at the top</p></li>
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image410.png|576x275px|图片5]]
+
[[File:plus5-img410.png]]
  
</div>
+
</div></ol>
 
<ol start="9" style="list-style-type: decimal;">
 
<ol start="9" style="list-style-type: decimal;">
 
<li><p>At this time, press the direction button on the keyboard to control the small turtles up, down, left and right</p>
 
<li><p>At this time, press the direction button on the keyboard to control the small turtles up, down, left and right</p>
<p>[[File:media/image411.png|575x296px]]</p></li></ol>
+
<p>[[File:plus5-img411.png]]</p></li></ol>
  
 
<span id="ubuntu20.04-the-method-of-installing-ros-2-galactic"></span>
 
<span id="ubuntu20.04-the-method-of-installing-ros-2-galactic"></span>
 +
 
=== Ubuntu20.04 The method of installing ROS 2 Galactic ===
 
=== Ubuntu20.04 The method of installing ROS 2 Galactic ===
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>The current active version of ROS 2 is shown below. The recommended version is '''Galactic Geochelone'''</p>
 
<li><p>The current active version of ROS 2 is shown below. The recommended version is '''Galactic Geochelone'''</p>
<p>[[File:media/image412.png|576x271px]]</p>
+
<p>[[File:plus5-img412.png]]</p>
<p>[[File:media/image413.png|575x265px]]</p>
+
<p>[[File:plus5-img413.png]]</p>
 +
 
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>[http://docs.ros.org/ '''http://docs.ros.org''']</p>
 
<p>[http://docs.ros.org/ '''http://docs.ros.org''']</p>
<p>'''http://docs.ros.org/en/galactic/Releases.html'''</p></li>
+
<p>'''http://docs.ros.org/en/galactic/Releases.html'''</p>
 +
|}
 +
</li>
 
<li><p>ROS 2 '''Galactic Geochelone''''s official installation document link is shown below:</p>
 
<li><p>ROS 2 '''Galactic Geochelone''''s official installation document link is shown below:</p>
 +
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>'''docs.ros.org/en/galactic/Installation.html'''</p>
 
<p>'''docs.ros.org/en/galactic/Installation.html'''</p>
<p>'''http://docs.ros.org/en/galactic/Installation/Ubuntu-Install-Debians.html'''</p></li>
+
<p>'''http://docs.ros.org/en/galactic/Installation/Ubuntu-Install-Debians.html'''</p>
<li><p>ROS 2 '''Galactic Geochelone''''s official installation document is recommended to use Ubuntu 20.04, so please make sure that the system used in the development board is '''Ubuntu20.04 desktop version system'''. There are several ways to install ROS 2. The following demonstrates install the Ros 2 '''Galactic Geochelone''' by '''Debian packages'''</p></li>
+
|}
 +
</li>
 +
<li><p>ROS 2 '''Galactic Geochelone''''s official installation document is recommended to use Ubuntu 20.04, so please make sure that the system used in the development board is '''<span style="color:#FF0000">Ubuntu20.04 desktop version system</span>'''. There are several ways to install ROS 2. The following demonstrates install the Ros 2 '''Galactic Geochelone''' by '''Debian packages'''</p></li>
 
<li><p>You can install ROS2 with '''install_ros.sh''' script</p>
 
<li><p>You can install ROS2 with '''install_ros.sh''' script</p>
<p>orangepi@orangepi:~$ '''install_ros.sh ros2'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''install_ros.sh ros2'''</p>
 +
|}
 +
</li>
 
<li><p>'''install_ros.sh''' script will automatically run the '''ros2 -h''' command after ros2 is installed. If you can see the printing below, it means that ros2 installation is complete</p>
 
<li><p>'''install_ros.sh''' script will automatically run the '''ros2 -h''' command after ros2 is installed. If you can see the printing below, it means that ros2 installation is complete</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>usage: ros2 [-h] Call `ros2 &lt;command&gt; -h` for more detailed usage. ...</p>
 
<p>usage: ros2 [-h] Call `ros2 &lt;command&gt; -h` for more detailed usage. ...</p>
 +
 +
 
<p>ros2 is an extensible command-line tool for ROS 2.</p>
 
<p>ros2 is an extensible command-line tool for ROS 2.</p>
 +
 +
 
<p>optional arguments:</p>
 
<p>optional arguments:</p>
<p>-h, --help show this help message and exit</p>
+
:<p>-h, --help show this help message and exit</p>
 +
 
 +
 
 
<p>Commands:</p>
 
<p>Commands:</p>
<p>action Various action related sub-commands</p>
+
:<p>action Various action related sub-commands</p>
<p>bag Various rosbag related sub-commands</p>
+
:<p>bag Various rosbag related sub-commands</p>
<p>component Various component related sub-commands</p>
+
:<p>component Various component related sub-commands</p>
<p>daemon Various daemon related sub-commands</p>
+
:<p>daemon Various daemon related sub-commands</p>
<p>doctor Check ROS setup and other potential issues</p>
+
:<p>doctor Check ROS setup and other potential issues</p>
<p>interface Show information about ROS interfaces</p>
+
:<p>interface Show information about ROS interfaces</p>
<p>launch Run a launch file</p>
+
:<p>launch Run a launch file</p>
<p>lifecycle Various lifecycle related sub-commands</p>
+
:<p>lifecycle Various lifecycle related sub-commands</p>
<p>multicast Various multicast related sub-commands</p>
+
:<p>multicast Various multicast related sub-commands</p>
<p>node Various node related sub-commands</p>
+
:<p>node Various node related sub-commands</p>
<p>param Various param related sub-commands</p>
+
:<p>param Various param related sub-commands</p>
<p>pkg Various package related sub-commands</p>
+
:<p>pkg Various package related sub-commands</p>
<p>run Run a package specific executable</p>
+
:<p>run Run a package specific executable</p>
<p>security Various security related sub-commands</p>
+
:<p>security Various security related sub-commands</p>
<p>service Various service related sub-commands</p>
+
:<p>service Various service related sub-commands</p>
<p>topic Various topic related sub-commands</p>
+
:<p>topic Various topic related sub-commands</p>
<p>wtf Use `wtf` as alias to `doctor`</p>
+
:<p>wtf Use `wtf` as alias to `doctor`</p>
<p>Call `ros2 &lt;command&gt; -h` for more detailed usage.</p></li>
+
 
 +
 
 +
:<p>Call `ros2 &lt;command&gt; -h` for more detailed usage.</p>
 +
|}
 +
</li>
 
<li><p>Then you can use the '''test_ros.sh''' script to test whether the ROS 2 is successfully installed. If you can see the printing below, it means that the ROS 2 can run normally</p>
 
<li><p>Then you can use the '''test_ros.sh''' script to test whether the ROS 2 is successfully installed. If you can see the printing below, it means that the ROS 2 can run normally</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi5plus:~$ '''test_ros.sh'''</p>
 
<p>orangepi@orangepi5plus:~$ '''test_ros.sh'''</p>
 
<p>[INFO] [1671174101.200091527] [talker]: Publishing: 'Hello World: 1'</p>
 
<p>[INFO] [1671174101.200091527] [talker]: Publishing: 'Hello World: 1'</p>
Line 6,257: Line 8,060:
 
<p>[INFO] [1671174102.204196299] [listener]: I heard: [Hello World: 2]</p>
 
<p>[INFO] [1671174102.204196299] [listener]: I heard: [Hello World: 2]</p>
 
<p>[INFO] [1671174103.199580322] [talker]: Publishing: 'Hello World: 3'</p>
 
<p>[INFO] [1671174103.199580322] [talker]: Publishing: 'Hello World: 3'</p>
<p>[INFO] [1671174103.204019965] [listener]: I heard: [Hello World: 3]</p></li>
+
<p>[INFO] [1671174103.204019965] [listener]: I heard: [Hello World: 3]</p>
 +
|}
 +
</li>
 
<li><p>Run the following command to open rviz2</p>
 
<li><p>Run the following command to open rviz2</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''source /opt/ros/galactic/setup.bash'''</p>
 
<p>orangepi@orangepi:~$ '''source /opt/ros/galactic/setup.bash'''</p>
 
<p>orangepi@orangepi:~$ '''ros2 run rviz2 rviz2'''</p>
 
<p>orangepi@orangepi:~$ '''ros2 run rviz2 rviz2'''</p>
 +
|}
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image414.png|576x324px|1]]
+
[[File:plus5-img414.png]]
  
 
</div></li>
 
</div></li>
 
<li><p>How to use ROS, please refer to the document of ROS 2</p>
 
<li><p>How to use ROS, please refer to the document of ROS 2</p>
<p>[http://docs.ros.org/en/galactic/Tutorials.html '''http://docs.ros.org/en/galactic/Tutorials.html''']</p></li></ol>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
'''http://docs.ros.org/en/galactic/Tutorials.html'''
 +
|}
 +
</li></ol>
  
 
<span id="ubuntu22.04-to-install-ros-2-humble"></span>
 
<span id="ubuntu22.04-to-install-ros-2-humble"></span>
 +
 
=== Ubuntu22.04 to install ROS 2 Humble ===
 
=== Ubuntu22.04 to install ROS 2 Humble ===
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>install ROS2 with '''install_ros.sh''' script</p>
 
<li><p>install ROS2 with '''install_ros.sh''' script</p>
<p>orangepi@orangepi:~$ '''install_ros.sh ros2'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''install_ros.sh ros2'''</p>
 +
|}
 +
</li>
 
<li><p>'''install_ros.sh''' script will automatically run the '''ros2 -h''' command after ROS2 is installed. If you can see the following printing, it means that ROS2 installation is complete.</p>
 
<li><p>'''install_ros.sh''' script will automatically run the '''ros2 -h''' command after ROS2 is installed. If you can see the following printing, it means that ROS2 installation is complete.</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>usage: ros2 [-h] Call `ros2 &lt;command&gt; -h` for more detailed usage. ...</p>
 
<p>usage: ros2 [-h] Call `ros2 &lt;command&gt; -h` for more detailed usage. ...</p>
 +
 +
 
<p>ros2 is an extensible command-line tool for ROS 2.</p>
 
<p>ros2 is an extensible command-line tool for ROS 2.</p>
 +
 +
 
<p>optional arguments:</p>
 
<p>optional arguments:</p>
<p>-h, --help show this help message and exit</p>
+
:<p>-h, --help show this help message and exit</p>
 +
 
 +
 
 
<p>Commands:</p>
 
<p>Commands:</p>
<p>action Various action related sub-commands</p>
+
:<p>action Various action related sub-commands</p>
<p>bag Various rosbag related sub-commands</p>
+
:<p>bag Various rosbag related sub-commands</p>
<p>component Various component related sub-commands</p>
+
:<p>component Various component related sub-commands</p>
<p>daemon Various daemon related sub-commands</p>
+
:<p>daemon Various daemon related sub-commands</p>
<p>doctor Check ROS setup and other potential issues</p>
+
:<p>doctor Check ROS setup and other potential issues</p>
<p>interface Show information about ROS interfaces</p>
+
:<p>interface Show information about ROS interfaces</p>
<p>launch Run a launch file</p>
+
:<p>launch Run a launch file</p>
<p>lifecycle Various lifecycle related sub-commands</p>
+
:<p>lifecycle Various lifecycle related sub-commands</p>
<p>multicast Various multicast related sub-commands</p>
+
:<p>multicast Various multicast related sub-commands</p>
<p>node Various node related sub-commands</p>
+
:<p>node Various node related sub-commands</p>
<p>param Various param related sub-commands</p>
+
:<p>param Various param related sub-commands</p>
<p>pkg Various package related sub-commands</p>
+
:<p>pkg Various package related sub-commands</p>
<p>run Run a package specific executable</p>
+
:<p>run Run a package specific executable</p>
<p>security Various security related sub-commands</p>
+
:<p>security Various security related sub-commands</p>
<p>service Various service related sub-commands</p>
+
:<p>service Various service related sub-commands</p>
<p>topic Various topic related sub-commands</p>
+
:<p>topic Various topic related sub-commands</p>
<p>wtf Use `wtf` as alias to `doctor`</p>
+
:<p>wtf Use `wtf` as alias to `doctor`</p>
<p>Call `ros2 &lt;command&gt; -h` for more detailed usage.</p></li>
+
 
 +
 
 +
:<p>Call `ros2 &lt;command&gt; -h` for more detailed usage.</p>
 +
|}
 +
</li>
 
<li><p>Then you can use the '''test_ros.sh''' script to test whether the ROS 2 is successfully installed. If you can see the printing below, it means that ROS 2 can run normally</p>
 
<li><p>Then you can use the '''test_ros.sh''' script to test whether the ROS 2 is successfully installed. If you can see the printing below, it means that ROS 2 can run normally</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi5plus:~$ '''test_ros.sh'''</p>
 
<p>orangepi@orangepi5plus:~$ '''test_ros.sh'''</p>
 
<p>[INFO] [1671174101.200091527] [talker]: Publishing: 'Hello World: 1'</p>
 
<p>[INFO] [1671174101.200091527] [talker]: Publishing: 'Hello World: 1'</p>
Line 6,306: Line 8,142:
 
<p>[INFO] [1671174102.204196299] [listener]: I heard: [Hello World: 2]</p>
 
<p>[INFO] [1671174102.204196299] [listener]: I heard: [Hello World: 2]</p>
 
<p>[INFO] [1671174103.199580322] [talker]: Publishing: 'Hello World: 3'</p>
 
<p>[INFO] [1671174103.199580322] [talker]: Publishing: 'Hello World: 3'</p>
<p>[INFO] [1671174103.204019965] [listener]: I heard: [Hello World: 3]</p></li>
+
<p>[INFO] [1671174103.204019965] [listener]: I heard: [Hello World: 3]</p>
 +
|}
 +
</li>
 
<li><p>Run the following command to open rviz2</p>
 
<li><p>Run the following command to open rviz2</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''source /opt/ros/humble/setup.bash'''</p>
 
<p>orangepi@orangepi:~$ '''source /opt/ros/humble/setup.bash'''</p>
 
<p>orangepi@orangepi:~$ '''ros2 run rviz2 rviz2'''</p>
 
<p>orangepi@orangepi:~$ '''ros2 run rviz2 rviz2'''</p>
 +
|}
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image415.png|576x324px|Screenshot from 2023-05-20 17-42-58]]
+
[[File:plus5-img415.png]]
  
 
</div></li>
 
</div></li>
 
<li><p>Reference document</p>
 
<li><p>Reference document</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>'''http://docs.ros.org/en/humble/index.html'''</p>
 
<p>'''http://docs.ros.org/en/humble/index.html'''</p>
<p>[http://docs.ros.org/en/galactic/Tutorials.html '''http://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html''']</p></li></ol>
+
<p>'''http://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html'''</p>
 +
|}
 +
</li></ol>
  
 
<span id="the-method-of-installing-the-kernel-header-file"></span>
 
<span id="the-method-of-installing-the-kernel-header-file"></span>
 +
 
== The method of installing the kernel header file ==
 
== The method of installing the kernel header file ==
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
<li><p>The linux image released by OPI defaults to the DEB package of the kernel header file. The location is'''/opt/'''</p>
+
<li><p>The linux image released by OPI defaults to the DEB package of the kernel header file. The location is '''/opt/'''</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi5plus:~$ '''ls /opt/linux-headers*'''</p>
 
<p>orangepi@orangepi5plus:~$ '''ls /opt/linux-headers*'''</p>
<p>/opt/linux-headers-legacy-rockchip-rk3588_x.x.x_arm64.deb</p></li>
+
<p>/opt/linux-headers-legacy-rockchip-rk3588_x.x.x_arm64.deb</p>
 +
|}
 +
</li>
 
<li><p>Use the following command to install the deb package of the kernel header file</p>
 
<li><p>Use the following command to install the deb package of the kernel header file</p>
<p>'''The name of the kernel file deb package needs to be replaced with the actual name, please don’t copy it。'''</p>
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
<p>orangepi@orangepi:~$ '''sudo dpkg -i /opt/linux-headers-legacy-rockchip-rk3588_1.x.x_arm64.deb'''</p></li>
+
|-
 +
|
 +
<big><p>'''The name of the kernel file deb package needs to be replaced with the actual name, please don't copy it.'''</p></big>
 +
|}
 +
 
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''sudo dpkg -i /opt/linux-headers-legacy-rockchip-rk3588_1.x.x_arm64.deb'''</p>
 +
|}
 +
</li>
 
<li><p>After installation, you can see the folder where the kernel header file is located under the'''/usr/src'''</p>
 
<li><p>After installation, you can see the folder where the kernel header file is located under the'''/usr/src'''</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''ls /usr/src'''</p>
 
<p>orangepi@orangepi:~$ '''ls /usr/src'''</p>
<p>linux-headers-5.10.110-rockchip-rk3588</p></li>
+
<p>linux-headers-5.10.110-rockchip-rk3588</p>
 +
|}
 +
</li>
 
<li><p>Then you can write a Hello kernel module to test the kernel header file</p>
 
<li><p>Then you can write a Hello kernel module to test the kernel header file</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li><p>First write the code of the Hello kernel module, as shown &gt; below:</p>
+
<li><p>First write the code of the Hello kernel module, as shown below:</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''vim hello.c'''</p>
 
<p>orangepi@orangepi:~$ '''vim hello.c'''</p>
 
<p>#include &lt;linux/init.h&gt;</p>
 
<p>#include &lt;linux/init.h&gt;</p>
 
<p>#include &lt;linux/module.h&gt;</p>
 
<p>#include &lt;linux/module.h&gt;</p>
 +
 +
 
<p>static int hello_init(void)</p>
 
<p>static int hello_init(void)</p>
 
<p>{</p>
 
<p>{</p>
<p>printk(&quot;Hello Orange Pi -- init\n&quot;);</p>
+
::<p>printk(&quot;Hello Orange Pi -- init\n&quot;);</p>
<p>return 0;</p>
+
 
 +
 
 +
::<p>return 0;</p>
 
<p>}</p>
 
<p>}</p>
 
<p>static void hello_exit(void)</p>
 
<p>static void hello_exit(void)</p>
 
<p>{</p>
 
<p>{</p>
<p>printk(&quot;Hello Orange Pi -- exit\n&quot;);</p>
+
::<p>printk(&quot;Hello Orange Pi -- exit\n&quot;);</p>
<p>return;</p>
+
 
 +
 
 +
::<p>return;</p>
 
<p>}</p>
 
<p>}</p>
 +
 +
 
<p>module_init(hello_init);</p>
 
<p>module_init(hello_init);</p>
 
<p>module_exit(hello_exit);</p>
 
<p>module_exit(hello_exit);</p>
<p>MODULE_LICENSE(&quot;GPL&quot;);</p></li>
+
 
<li><p>Then write a makefile file that compiles the Hello kernel &gt; module, as shown below:</p>
+
 
 +
<p>MODULE_LICENSE(&quot;GPL&quot;);</p>
 +
|}
 +
</li>
 +
<li><p>Then write a makefile file that compiles the Hello kernel module, as shown below:</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''vim Makefile'''</p>
 
<p>orangepi@orangepi:~$ '''vim Makefile'''</p>
 
<p>ifneq ($(KERNELRELEASE),)</p>
 
<p>ifneq ($(KERNELRELEASE),)</p>
Line 6,359: Line 8,245:
 
<p>PWD :=$(shell pwd)</p>
 
<p>PWD :=$(shell pwd)</p>
 
<p>all:</p>
 
<p>all:</p>
<p>make -C $(KDIR) M=$(PWD) modules</p>
+
:<p>make -C $(KDIR) M=$(PWD) modules</p>
 
<p>clean:</p>
 
<p>clean:</p>
<p>rm -f *.ko *.o *.mod.o *.mod *.symvers *.cmd *.mod.c *.order</p>
+
:<p>rm -f *.ko *.o *.mod.o *.mod *.symvers *.cmd *.mod.c *.order</p>
<p>endif</p></li>
+
<p>endif</p>
<li><p>Then use the make command to compile the Hello kernel module, &gt; and the output of the compilation process is shown below:</p>
+
|}
<p>'''If you compile the code you copy here, if you have any problems, go to the official tool to download the source code and upload it to the Linux system of the development board for testing'''</p>
+
</li>
<p>[[File:media/image416.png|253x41px]]</p>
+
<li><p>Then use the make command to compile the Hello kernel module, and the output of the compilation process is shown below:</p>
 +
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big><p>'''If you compile the code you copy here, if you have any problems, go to the [http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html '''official tool'''] to download the source code and upload it to the Linux system of the development board for testing'''</p></big>
 +
 
 +
<p>[[File:plus5-img416.png|center]]</p>
 +
|}
 +
 
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''make'''</p>
 
<p>orangepi@orangepi:~$ '''make'''</p>
 
<p>make -C /lib/modules/5.10.110-rockchip-rk3588/build M=/home/orangepi modules</p>
 
<p>make -C /lib/modules/5.10.110-rockchip-rk3588/build M=/home/orangepi modules</p>
 
<p>make[1]: Entering directory '/usr/src/linux-headers-5.10.110-rockchip-rk3588'</p>
 
<p>make[1]: Entering directory '/usr/src/linux-headers-5.10.110-rockchip-rk3588'</p>
<p>CC [M] /home/orangepi/hello.o</p>
+
:<p>CC [M] /home/orangepi/hello.o</p>
<p>MODPOST /home/orangepi/Module.symvers</p>
+
:<p>MODPOST /home/orangepi/Module.symvers</p>
<p>CC [M] /home/orangepi/hello.mod.o</p>
+
:<p>CC [M] /home/orangepi/hello.mod.o</p>
<p>LD [M] /home/orangepi/hello.ko</p>
+
:<p>LD [M] /home/orangepi/hello.ko</p>
<p>make[1]: Leaving directory '/usr/src/linux-headers-5.10.110-rockchip-rk3588'</p></li>
+
<p>make[1]: Leaving directory '/usr/src/linux-headers-5.10.110-rockchip-rk3588'</p>
<li><p>After compiling, the '''hello.ko''' kernel module will be &gt; generated</p>
+
|}
 +
</li>
 +
<li><p>After compiling, the '''hello.ko''' kernel module will be generated</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''ls *.ko'''</p>
 
<p>orangepi@orangepi:~$ '''ls *.ko'''</p>
<p>hello.ko</p></li>
+
<p>hello.ko</p>
<li><p>Use the '''insmod''' command to insert the '''hello.ko''' kernel &gt; module into the kernel</p>
+
|}
<p>orangepi@orangepi:~$ '''sudo insmod hello.ko'''</p></li>
+
</li>
<li><p>Then use the '''demsg''' command to view the output of the &gt; '''hello.ko''' kernel module. If you can see the output &gt; instructions below, the hello.ko kernel module is loaded &gt; correctly</p>
+
<li><p>Use the '''insmod''' command to insert the '''hello.ko''' kernel module into the kernel</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''sudo insmod hello.ko'''</p>
 +
|}
 +
</li>
 +
<li><p>Then use the '''demsg''' command to view the output of the '''hello.ko''' kernel module. If you can see the output instructions below, the hello.ko kernel module is loaded correctly</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''dmesg | grep &quot;Hello&quot;'''</p>
 
<p>orangepi@orangepi:~$ '''dmesg | grep &quot;Hello&quot;'''</p>
<p>[ 2871.893988] '''Hello Orange Pi -- init'''</p></li>
+
<p>[ 2871.893988] '''Hello Orange Pi -- init'''</p>
<li><p>Use the '''rmmod''' command to uninstall the '''hello.ko''' kernel &gt; module</p>
+
|}
 +
</li>
 +
<li><p>Use the '''rmmod''' command to uninstall the '''hello.ko''' kernel module</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''sudo rmmod hello'''</p>
 
<p>orangepi@orangepi:~$ '''sudo rmmod hello'''</p>
 
<p>orangepi@orangepi:~$ '''dmesg | grep &quot;Hello&quot;'''</p>
 
<p>orangepi@orangepi:~$ '''dmesg | grep &quot;Hello&quot;'''</p>
 
<p>[ 2871.893988] Hello Orange Pi -- init</p>
 
<p>[ 2871.893988] Hello Orange Pi -- init</p>
<p>[ 3173.800892] '''Hello Orange Pi -- exit'''</p></li></ol>
+
<p>[ 3173.800892] '''Hello Orange Pi -- exit'''</p>
 +
|}
 +
</li></ol>
 
</li></ol>
 
</li></ol>
  
 
<span id="how-to-use-10.1-inch-mipi-lcd-screen"></span>
 
<span id="how-to-use-10.1-inch-mipi-lcd-screen"></span>
 +
 
== How to use 10.1 inch MIPI LCD screen ==
 
== How to use 10.1 inch MIPI LCD screen ==
  
Line 6,398: Line 8,318:
 
<li><p>First prepare the required accessories</p>
 
<li><p>First prepare the required accessories</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li><p>10.1 -inch MIPI LCD display+touch screen (this screen and &gt; OPI5/OPI5B universal)</p>
+
<li><p>10.1 -inch MIPI LCD display+touch screen (this screen and OPI5/OPI5B universal)</p>
<p>[[File:media/image417.png|338x252px]]</p></li>
+
<p>[[File:plus5-img417.png]]</p></li>
 
<li><p>Screen divert plate+31pin to 40pin line</p>
 
<li><p>Screen divert plate+31pin to 40pin line</p>
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image418.png|230x199px|DD9A8F44-0D8F-4f06-9473-B539DEED850C]]
+
[[File:plus5-img418.png]]
  
 
</div></li>
 
</div></li>
Line 6,409: Line 8,329:
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image419.png|443x41px|C2164119-6EC3-49ae-9A95-BE323F51FAE1]]
+
[[File:plus5-img419.png]]
  
 
</div></li>
 
</div></li>
 
<li><p>12pin touch screen row line</p>
 
<li><p>12pin touch screen row line</p>
<p>[[File:media/image420.png|344x50px]]</p></li></ol>
+
<p>[[File:plus5-img420.png]]</p></li></ol>
 
</li>
 
</li>
<li><p>According to the figure below, the 12PIN touch screen row, 31PIN to 40PIN ducts, and 30pin MIPI cables get on the screen dial board. Pay attention to line of the touch screen the blue insulation face under . If you get an error, it will cause no display or unable to touch</p>
+
<li><p>According to the figure below, the 12PIN touch screen row, 31PIN to 40PIN ducts, and 30pin MIPI cables get on the screen dial board. Pay attention to <span style="color:#FF0000">line of the touch screen the blue insulation face under</span>. If you get an error, it will cause no display or unable to touch</p>
<p>[[File:media/image421.png|574x142px]]</p></li>
+
<p>[[File:plus5-img421.png]]</p></li>
<li><p>Place the connected rotor connected to the puzzle on the MIPI LCD screen according to the figure below, and connect the MIPI LCD screen and the rotary board through 31PIN to 40Pin row</p></li></ol>
+
<li><p>Place the connected rotor connected to the puzzle on the MIPI LCD screen according to the figure below, and connect the MIPI LCD screen and the rotary board through 31PIN to 40Pin row</p></li>
 
 
[[File:media/image422.png|382x563px]]
 
  
 +
[[File:plus5-img422.png]]
 +
</ol>
 
<ol start="4" style="list-style-type: decimal;">
 
<ol start="4" style="list-style-type: decimal;">
 
<li><p>Then connect the touch screen and the rotor board through the 12PIN touch screen line, pay attention to the orientation of the insulating surface.</p>
 
<li><p>Then connect the touch screen and the rotor board through the 12PIN touch screen line, pay attention to the orientation of the insulating surface.</p>
<p>[[File:media/image423.png|253x161px]]</p></li>
+
<p>[[File:plus5-img423.png]]</p></li>
 
<li><p>Finally connect to the LCD interface of the development board through the 30PIN MIPI duct</p>
 
<li><p>Finally connect to the LCD interface of the development board through the 30PIN MIPI duct</p>
<p>[[File:media/image424.png|405x225px]]</p>
+
<p>[[File:plus5-img424.png]]</p>
<p>'''Note that the touch interface below is not used for the LCD MIPI screen. It is currently a spare interface and cannot be used'''</p>
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
<p>[[File:media/image425.png|334x70px]]</p></li></ol>
+
|-
 +
|
 +
<big><p>'''Note that the touch interface below is not used for the LCD MIPI screen. It is currently a spare interface and cannot be used'''</p></big>
 +
 
 +
<p>[[File:plus5-img425.png|center]]</p>
 +
|}
 +
</li></ol>
  
 
<span id="open-the-10.1--inch-mipi-lcd-screen-configuration"></span>
 
<span id="open-the-10.1--inch-mipi-lcd-screen-configuration"></span>
 +
 
=== Open the 10.1 -inch MIPI LCD screen configuration ===
 
=== Open the 10.1 -inch MIPI LCD screen configuration ===
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
<li><p>The Linux image defaults to the configuration of the mipi lcd screen by default. If you need to use the mipi lcd screen, you need to open it manually。</p></li>
+
<li><p>The Linux image defaults to the configuration of the mipi lcd screen by default. If you need to use the mipi lcd screen, you need to open it manually.</p></li>
 
<li><p>The position of the development board MIPI LCD screen interface is shown below:</p>
 
<li><p>The position of the development board MIPI LCD screen interface is shown below:</p>
<p>[[File:media/image426.png|428x77px]]</p></li>
+
<p>[[File:plus5-img426.png]]</p></li>
 
<li><p>The steps of opening the MIPI LCD configuration are shown below:</p>
 
<li><p>The steps of opening the MIPI LCD configuration are shown below:</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li><p>First run the orangePi-config. Ordinary users remember to add &gt; Sudo permissions</p>
+
<li><p>First run the orangePi-config. Ordinary users remember to add Sudo permissions</p>
<p>orangepi@orangepi:~$ '''sudo orangepi-config'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''sudo orangepi-config'''</p>
 +
|}
 +
</li>
 
<li><p>Then choose '''System'''</p>
 
<li><p>Then choose '''System'''</p>
<p>[[File:media/image234.png|379x175px]]</p></li>
+
<p>[[File:plus5-img234.png]]</p></li>
 
<li><p>Then choos '''Hardware'''</p>
 
<li><p>Then choos '''Hardware'''</p>
<p>[[File:media/image235.png|379x164px]]</p></li>
+
<p>[[File:plus5-img235.png]]</p></li>
<li><p>Then use the keyboard orientation to position the &gt; '''opi5plus-lcd''', and then use the '''space''' to select</p>
+
<li><p>Then use the keyboard orientation to position the '''opi5plus-lcd''', and then use the '''space''' to select</p>
<p>[[File:media/image427.png|349x57px]]</p></li>
+
<p>[[File:plus5-img427.png]]</p></li>
 
<li><p>Then select &lt;Save&gt;</p>
 
<li><p>Then select &lt;Save&gt;</p>
<p>[[File:media/image428.png|263x123px]]</p></li>
+
<p>[[File:plus5-img428.png]]</p></li>
 
<li><p>Then sele '''&lt;Back&gt;'''</p>
 
<li><p>Then sele '''&lt;Back&gt;'''</p>
<p>[[File:media/image429.png|264x116px]]</p></li>
+
<p>[[File:plus5-img429.png]]</p></li>
<li><p>Then select the '''&lt;Reboot&gt;'''restart system to make the &gt; configuration effective</p>
+
<li><p>Then select the '''&lt;Reboot&gt;''' restart system to make the configuration effective</p>
<p>[[File:media/image430.png|226x105px]]</p></li></ol>
+
<p>[[File:plus5-img430.png]]</p></li></ol>
 
</li>
 
</li>
<li><p>After starting, you can see the display of the LCD screen as shown below (the default is vertical screen):</p></li></ol>
+
<li><p>After starting, you can see the display of the LCD screen as shown below (the default is vertical screen):</p></li>
  
[[File:media/image431.png|169x244px]]
+
[[File:plus5-img431.png]]
 +
</ol>
 +
<span id="the-server-version-of-the-image-rotation-display-direction-method"></span>
  
<span id="the-server-version-of-the-image-rotation-display-direction-method"></span>
 
 
=== The server version of the image rotation display direction method ===
 
=== The server version of the image rotation display direction method ===
  
Line 6,467: Line 8,400:
 
<li><p>2: Flip 180 degrees</p></li>
 
<li><p>2: Flip 180 degrees</p></li>
 
<li><p>3: Turn to 270 degrees clock</p>
 
<li><p>3: Turn to 270 degrees clock</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''sudo vim /boot/orangepiEnv.txt'''</p>
 
<p>orangepi@orangepi:~$ '''sudo vim /boot/orangepiEnv.txt'''</p>
 
<p>overlays=opi5plus-lcd</p>
 
<p>overlays=opi5plus-lcd</p>
<p>'''extraargs=cma=128M fbcon=rotate:3'''</p>
+
<p>'''<span style="color:#FF0000">extraargs=cma=128M fbcon=rotate:3</span>'''</p>
<p>'''Note that if/boot/orangepienv.txt is configured in the default default exiArgs = CMA = 128M, fbcon = rotate: 3 The configuration can be added to the extensraargs = cma = 128m (need to be separated by spaces)'''</p></li></ol>
+
|}
 +
 
 +
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big><p>'''Note that if/boot/orangepienv.txt is configured in the default default exiArgs = CMA = 128M, fbcon = rotate: 3 The configuration can be added to the extensraargs = cma = 128m (need to be separated by spaces).'''</p></big>
 +
|}
 +
</li></ol>
 
</li>
 
</li>
<li><p>Then '''<span class="mark">restart</span>''' the Linux system to see that the direction of the LCD screen display has been rotated</p></li></ol>
+
<li><p>Then '''<span style="color:#FF0000">restart</span>''' the Linux system to see that the direction of the LCD screen display has been rotated</p></li></ol>
  
 
<span id="the-desktop-image-rotation-display-and-touch-direction-method"></span>
 
<span id="the-desktop-image-rotation-display-and-touch-direction-method"></span>
 +
 
=== The desktop image rotation display and touch direction method ===
 
=== The desktop image rotation display and touch direction method ===
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>First open '''Display''' settings in the Linux system</p>
 
<li><p>First open '''Display''' settings in the Linux system</p>
<p>[[File:media/image432.png|339x234px]]</p></li>
+
<p>[[File:plus5-img432.png]]</p></li>
 
<li><p>Then select the direction you want to rotate in the '''Rotation'''</p>
 
<li><p>Then select the direction you want to rotate in the '''Rotation'''</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
Line 6,486: Line 8,430:
 
<li><p>'''Inverted''': Flipting up and down is equivalent to rotating 180 &gt; degrees</p></li>
 
<li><p>'''Inverted''': Flipting up and down is equivalent to rotating 180 &gt; degrees</p></li>
 
<li><p>'''Right''': Rotate 90 degrees to the right</p>
 
<li><p>'''Right''': Rotate 90 degrees to the right</p>
<p>[[File:media/image433.png|330x208px]]</p></li></ol>
+
<p>[[File:plus5-img433.png]]</p></li></ol>
 
</li>
 
</li>
 
<li><p>Then click '''Apply'''</p>
 
<li><p>Then click '''Apply'''</p>
<p>[[File:media/image434.png|330x207px]]</p></li>
+
<p>[[File:plus5-img434.png]]</p></li>
 
<li><p>Then click '''Keep this configuration'''</p>
 
<li><p>Then click '''Keep this configuration'''</p>
<p>[[File:media/image435.png|458x258px]]</p></li>
+
<p>[[File:plus5-img435.png]]</p></li>
 
<li><p>At this time, the screen display has been rotated, and then the '''Display''' program is turned off</p></li>
 
<li><p>At this time, the screen display has been rotated, and then the '''Display''' program is turned off</p></li>
 
<li><p>The above steps will only select the display direction, and it will not rotate the direction of touch. Use set_lcd_rotate.sh script to rotate the direction of touch. After this script is set, it will be automatically restarted, and then you can test whether the touch can be used normally</p>
 
<li><p>The above steps will only select the display direction, and it will not rotate the direction of touch. Use set_lcd_rotate.sh script to rotate the direction of touch. After this script is set, it will be automatically restarted, and then you can test whether the touch can be used normally</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
 
<li><p>'''None''': Not rotate</p>
 
<li><p>'''None''': Not rotate</p>
<p>orangepi@orangepi:~$ '''set_lcd_rotate.sh none'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''set_lcd_rotate.sh none'''</p>
 +
|}
 +
</li>
 
<li><p>'''Left''': Rotate 90 degrees to the left</p>
 
<li><p>'''Left''': Rotate 90 degrees to the left</p>
<p>orangepi@orangepi:~$ '''set_lcd_rotate.sh left'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''set_lcd_rotate.sh left'''</p>
 +
|}
 +
</li>
 
<li><p>'''Inverted''': Flipting up and down, equivalent to rotating 180 &gt; degrees</p>
 
<li><p>'''Inverted''': Flipting up and down, equivalent to rotating 180 &gt; degrees</p>
<p>orangepi@orangepi:~$ '''set_lcd_rotate.sh inverted'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''set_lcd_rotate.sh inverted'''</p>
 +
|}
 +
</li>
 
<li><p>'''Right''': Rotate 90 degrees to the right</p>
 
<li><p>'''Right''': Rotate 90 degrees to the right</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''set_lcd_rotate.sh right'''</p>
 
<p>orangepi@orangepi:~$ '''set_lcd_rotate.sh right'''</p>
<p>'''set_lcd_rotate.sh The script mainly does four things:'''</p></li></ol>
+
|}
</li></ol>
+
 
 +
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big><p>'''set_lcd_rotate.sh The script mainly does four things:'''</p>
 +
 
  
<!-- -->
 
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>'''Rotate the direction of Framebuffer displayed'''</p></li>
 
<li><p>'''Rotate the direction of Framebuffer displayed'''</p></li>
 
<li><p>'''The direction of rotating touch'''</p></li>
 
<li><p>'''The direction of rotating touch'''</p></li>
 
<li><p>'''Close the boot LOGO'''</p></li>
 
<li><p>'''Close the boot LOGO'''</p></li>
<li><p>'''Restart the system'''</p>
+
<li><p>'''Restart the system'''</p></li></ol>
<p>'''The direction of the rotation touch is achieved by adding <span class="mark">Option Tr</span>ansformationMatrix&quot;&quot;x x x x x x x x x&quot;in /usr/share/X11/xorg.conf.d/40-libinput.conf. Among them, &quot;x x x x x x x x x&quot; is different in different directions。'''</p></li></ol>
+
 
  
 +
<p>'''The direction of the rotation touch is achieved by adding <span class="mark">Option Tr</span>ansformationMatrix&quot;&quot;x x x x x x x x x&quot;in /usr/share/X11/xorg.conf.d/40-libinput.conf. Among them, &quot;x x x x x x x x x&quot; is different in different directions.'''</p>
 +
</big>
 +
|}
 +
</li></ol>
 +
</li></ol>
 
<!-- -->
 
<!-- -->
 
<ol start="7" style="list-style-type: decimal;">
 
<ol start="7" style="list-style-type: decimal;">
 
<li><p>Touch rotation reference materials</p>
 
<li><p>Touch rotation reference materials</p>
<p>[https://wiki.ubuntu.com/X/InputCoordinateTransformation '''https://wiki.ubuntu.com/X/InputCoordinateTransformation''']</p></li></ol>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
'''https://wiki.ubuntu.com/X/InputCoordinateTransformation'''
 +
|}
 +
</li></ol>
  
 
<span id="instructions-for-opening-the-logo-use-instructions"></span>
 
<span id="instructions-for-opening-the-logo-use-instructions"></span>
 +
 
== Instructions for opening the logo use instructions ==
 
== Instructions for opening the logo use instructions ==
  
Line 6,525: Line 8,502:
 
<li><p>The default LOGO default is displayed in the desktop version of the system</p></li>
 
<li><p>The default LOGO default is displayed in the desktop version of the system</p></li>
 
<li><p>Set the '''bootlogo''' variable to '''false''' in '''/boot/orangepiEnv.txt''' to turn off the switch to the LOGO</p>
 
<li><p>Set the '''bootlogo''' variable to '''false''' in '''/boot/orangepiEnv.txt''' to turn off the switch to the LOGO</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''sudo vim /boot/orangepiEnv.txt'''</p>
 
<p>orangepi@orangepi:~$ '''sudo vim /boot/orangepiEnv.txt'''</p>
 
<p>verbosity=1</p>
 
<p>verbosity=1</p>
<p>'''bootlogo=false'''</p></li>
+
<p>'''<span style="color:#FF0000">bootlogo=false</span>'''</p>
<li><p>Set the '''bootlogo''' variable to '''true''' in'''/boot/orangepiEnv.txt''' to turn the opening and the logo</p>
+
|}
<p>orangepi@orangepi:~$ '''sudo vim /boot/orangepiEnv.txt'''</p>
+
</li>
<p>verbosity=1</p>
+
<li><p>Set the '''bootlogo''' variable to '''true''' in '''/boot/orangepiEnv.txt''' to turn the opening and the logo</p>
<p>'''bootlogo=true'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''sudo vim /boot/orangepiEnv.txt'''</p>
 +
<p>verbosity=1</p>
 +
<p>'''<span style="color:#FF0000">bootlogo=true</span>'''</p>
 +
|}
 +
</li>
 
<li><p>The position of the LOGO picture in the Linux system is</p>
 
<li><p>The position of the LOGO picture in the Linux system is</p>
<p>'''/usr/share/plymouth/themes/orangepi/watermark.png'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>'''/usr/share/plymouth/themes/orangepi/watermark.png'''</p>
 +
|}
 +
</li>
 
<li><p>After replacing the start -up logo picture, you need to run the command to take effect</p>
 
<li><p>After replacing the start -up logo picture, you need to run the command to take effect</p>
<p>orangepi@orangepi:~$ '''sudo update-initramfs -u'''</p></li></ol>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''sudo update-initramfs -u'''</p>
 +
|}
 +
</li></ol>
  
 
<span id="test-methods-for-ov13850-and-ov13855-mipi-camera"></span>
 
<span id="test-methods-for-ov13850-and-ov13855-mipi-camera"></span>
 +
 
== Test methods for OV13850 and OV13855 MIPI camera ==
 
== Test methods for OV13850 and OV13855 MIPI camera ==
  
Line 6,544: Line 8,542:
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
 
<li><p>OV13850 camera at 13 million MIPI interface</p>
 
<li><p>OV13850 camera at 13 million MIPI interface</p>
<p>[[File:media/image23.png|268x151px]]</p></li>
+
<p>[[File:plus5-img23.png]]</p></li>
 
<li><p>13 million MIPI interface OV13855 camera</p>
 
<li><p>13 million MIPI interface OV13855 camera</p>
<p>[[File:media/image24.png|253x150px]]</p>
+
<p>[[File:plus5-img24.png]]</p>
<p>The rotary board used by OV13850 and OV13855 cameras is the same as the FPC cable, but the two cameras are different from the position on the rotary board. The FPC lines are shown in the figure below. Please note that the FPC line is directed. It is marked that the '''TO MB''' must be inserted into the camera interface of the development board. It is marked that the end of '''TO CAMERA''' needs to be inserted on the camera transfer board。</p></li></ol>
+
<p>The rotary board used by OV13850 and OV13855 cameras is the same as the FPC cable, but the two cameras are different from the position on the rotary board. The FPC lines are shown in the figure below. Please note that the FPC line is directed. It is marked that the '''TO MB''' must be inserted into the camera interface of the development board. It is marked that the end of '''TO CAMERA''' needs to be inserted on the camera transfer board.</p></li>
 
 
[[File:media/image436.png|373x78px]]
 
  
 +
[[File:plus5-img436.png]]
 +
</ol>
 
There are a total of 3 cameras on the camera to connect to the board, which can only be used one at the same time, as shown in the figure below, among which:
 
There are a total of 3 cameras on the camera to connect to the board, which can only be used one at the same time, as shown in the figure below, among which:
  
Line 6,556: Line 8,554:
 
<li><p>'''No. 1 connect with OV13850 camera'''</p></li>
 
<li><p>'''No. 1 connect with OV13850 camera'''</p></li>
 
<li><p>'''No. 2 interface OV13855 camera'''</p></li>
 
<li><p>'''No. 2 interface OV13855 camera'''</p></li>
<li><p>The No. 3 interface is not used, just ignore it.</p></li></ol>
+
<li><p>The No. 3 interface is not used, just ignore it.</p></li>
 
 
[[File:media/image437.png|288x172px]]
 
  
 +
[[File:plus5-img437-1.png]]
 +
</ol>
 
Orange Pi 5 Plus development board has a total of 1 camera interface, which is shown below:
 
Orange Pi 5 Plus development board has a total of 1 camera interface, which is shown below:
  
[[File:media/image438.png|408x95px]]
+
[[File:plus5-img438.png]]
  
 
The method of the camera inserted in the development board interface is shown below:
 
The method of the camera inserted in the development board interface is shown below:
  
[[File:media/image439.png|332x154px]]
+
[[File:plus5-img439.png]]
  
 
After connecting the camera to the development board, we can use the following method to test the camera:
 
After connecting the camera to the development board, we can use the following method to test the camera:
Line 6,572: Line 8,570:
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
 
<li><p>First run the '''orangepi-config'''. Ordinary users remember to add '''sudo''' permissions</p>
 
<li><p>First run the '''orangepi-config'''. Ordinary users remember to add '''sudo''' permissions</p>
<p>orangepi@orangepi:~$ '''sudo orangepi-config'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''sudo orangepi-config'''</p>
 +
|}
 +
</li>
 
<li><p>Then select '''System'''</p>
 
<li><p>Then select '''System'''</p>
<p>[[File:media/image234.png|399x184px]]</p></li>
+
<p>[[File:plus5-img234.png]]</p></li>
 
<li><p>Then choose '''Hardware'''</p>
 
<li><p>Then choose '''Hardware'''</p>
<p>[[File:media/image235.png|403x175px]]</p></li>
+
<p>[[File:plus5-img235.png]]</p></li>
<li><p>Then use the keyboard to locate the position shown in the figure below, and then use the camera you want to open in the space. Among them, '''opi5plus-ov13850''' means using an OV13850 camera, '''opi5plus-ov13855''' indicates the use of OV13855 camera。</p>
+
<li><p>Then use the keyboard to locate the position shown in the figure below, and then use the camera you want to open in the space. Among them, '''opi5plus-ov13850''' means using an OV13850 camera, '''opi5plus-ov13855''' indicates the use of OV13855 camera.</p>
<p>[[File:media/image440.png|400x37px]]</p></li>
+
<p>[[File:plus5-img440.png]]</p></li>
 
<li><p>Then choose '''&lt;Save&gt;'''</p>
 
<li><p>Then choose '''&lt;Save&gt;'''</p>
<p>[[File:media/image441.png|338x109px]]</p></li>
+
<p>[[File:plus5-img441.png]]</p></li>
 
<li><p>Then choose '''&lt;Back&gt;'''</p>
 
<li><p>Then choose '''&lt;Back&gt;'''</p>
<p>[[File:media/image442.png|338x86px]]</p></li>
+
<p>[[File:plus5-img442.png]]</p></li>
 
<li><p>Then select the'''&lt;Reboot&gt;''' restart system to make the configuration effective</p>
 
<li><p>Then select the'''&lt;Reboot&gt;''' restart system to make the configuration effective</p>
<p>[[File:media/image239.png|316x139px]]</p></li>
+
<p>[[File:plus5-img239.png]]</p></li>
 
<li><p>Then open a terminal in the desktop system and run the script below</p>
 
<li><p>Then open a terminal in the desktop system and run the script below</p>
<p>orangepi@orangepi:~$ '''test_camera.sh'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''test_camera.sh'''</p>
 +
|}
 +
</li>
 
<li><p>Then you can see the preview of the camera</p>
 
<li><p>Then you can see the preview of the camera</p>
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image443.png|576x324px|1]]
+
[[File:plus5-img443.png]]
  
 
</div></li></ol>
 
</div></li></ol>
  
 
<span id="test-method-for-infrared-receiving"></span>
 
<span id="test-method-for-infrared-receiving"></span>
 +
 
== Test method for infrared receiving ==
 
== Test method for infrared receiving ==
  
Line 6,601: Line 8,610:
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>First run the '''evtest''' command in the command line, and then select the device serial number corresponding to the '''febf0030.pwm'''</p>
 
<li><p>First run the '''evtest''' command in the command line, and then select the device serial number corresponding to the '''febf0030.pwm'''</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''evtest'''</p>
 
<p>orangepi@orangepi:~$ '''evtest'''</p>
 
<p>No device specified, trying to scan all of /dev/input/event*</p>
 
<p>No device specified, trying to scan all of /dev/input/event*</p>
 
<p>Not running as root, no devices may be available.</p>
 
<p>Not running as root, no devices may be available.</p>
 
<p>Available devices:</p>
 
<p>Available devices:</p>
<p>'''/dev/input/event0: febf0030.pwm'''</p>
+
<p>'''<span style="color:#FF0000">/dev/input/event0: febf0030.pwm</span>'''</p>
 
<p>/dev/input/event1: rk805 pwrkey</p>
 
<p>/dev/input/event1: rk805 pwrkey</p>
 
<p>/dev/input/event2: rockchip,dp0 rockchip,dp0</p>
 
<p>/dev/input/event2: rockchip,dp0 rockchip,dp0</p>
Line 6,617: Line 8,629:
 
<p>/dev/input/event10: SONiX USB Keyboard System Control</p>
 
<p>/dev/input/event10: SONiX USB Keyboard System Control</p>
 
<p>/dev/input/event11: PixArt USB Optical Mouse</p>
 
<p>/dev/input/event11: PixArt USB Optical Mouse</p>
<p>Select the device event number [0-11]: '''0 #Select the serial number corresponding to <span class="mark">Febf0030.pwm</span> here'''</p>
+
<p>Select the device event number [0-11]: '''<span style="color:#FF0000">0 #Select the serial number corresponding to Febf0030.pwm here</span>'''</p>
 +
 
 +
 
 
<p>Input driver version is 1.0.1</p>
 
<p>Input driver version is 1.0.1</p>
 
<p>Input device ID: bus 0x19 vendor 0x524b product 0x6 version 0x100</p>
 
<p>Input device ID: bus 0x19 vendor 0x524b product 0x6 version 0x100</p>
 
<p>Input device name: &quot;febf0030.pwm&quot;</p>
 
<p>Input device name: &quot;febf0030.pwm&quot;</p>
 
<p>Supported events:</p>
 
<p>Supported events:</p>
<p>Event type 0 (EV_SYN)</p>
+
:<p>Event type 0 (EV_SYN)</p>
<p>Event type 1 (EV_KEY)</p>
+
:<p>Event type 1 (EV_KEY)</p>
<p>Event code 2 (KEY_1)</p>
+
::<p>Event code 2 (KEY_1)</p>
<p>Event code 3 (KEY_2)</p>
+
::<p>Event code 3 (KEY_2)</p>
<p>Event code 4 (KEY_3)</p>
+
::<p>Event code 4 (KEY_3)</p>
<p>Event code 5 (KEY_4)</p>
+
::<p>Event code 5 (KEY_4)</p>
<p>Event code 6 (KEY_5)</p>
+
::<p>Event code 6 (KEY_5)</p>
<p>Event code 7 (KEY_6)</p>
+
::<p>Event code 7 (KEY_6)</p>
<p>Event code 8 (KEY_7)</p>
+
::<p>Event code 8 (KEY_7)</p>
<p>Event code 9 (KEY_8)</p>
+
::<p>Event code 9 (KEY_8)</p>
<p>Event code 10 (KEY_9)</p>
+
::<p>Event code 10 (KEY_9)</p>
<p>Event code 11 (KEY_0)</p>
+
::<p>Event code 11 (KEY_0)</p>
<p>Event code 28 (KEY_ENTER)</p>
+
::<p>Event code 28 (KEY_ENTER)</p>
<p>Event code 102 (KEY_HOME)</p>
+
::<p>Event code 102 (KEY_HOME)</p>
<p>Event code 103 (KEY_UP)</p>
+
::<p>Event code 103 (KEY_UP)</p>
<p>Event code 105 (KEY_LEFT)</p>
+
::<p>Event code 105 (KEY_LEFT)</p>
<p>Event code 106 (KEY_RIGHT)</p>
+
::<p>Event code 106 (KEY_RIGHT)</p>
<p>Event code 108 (KEY_DOWN)</p>
+
::<p>Event code 108 (KEY_DOWN)</p>
<p>Event code 113 (KEY_MUTE)</p>
+
::<p>Event code 113 (KEY_MUTE)</p>
<p>Event code 114 (KEY_VOLUMEDOWN)</p>
+
::<p>Event code 114 (KEY_VOLUMEDOWN)</p>
<p>Event code 115 (KEY_VOLUMEUP)</p>
+
::<p>Event code 115 (KEY_VOLUMEUP)</p>
<p>Event code 116 (KEY_POWER)</p>
+
::<p>Event code 116 (KEY_POWER)</p>
<p>Event code 139 (KEY_MENU)</p>
+
::<p>Event code 139 (KEY_MENU)</p>
<p>Event code 143 (KEY_WAKEUP)</p>
+
::<p>Event code 143 (KEY_WAKEUP)</p>
<p>Event code 158 (KEY_BACK)</p>
+
::<p>Event code 158 (KEY_BACK)</p>
<p>Event code 217 (KEY_SEARCH)</p>
+
::<p>Event code 217 (KEY_SEARCH)</p>
<p>Event code 388 (KEY_TEXT)</p>
+
::<p>Event code 388 (KEY_TEXT)</p>
 
<p>Properties:</p>
 
<p>Properties:</p>
<p>Testing ... (interrupt to exit)</p></li>
+
<p>Testing ... (interrupt to exit)</p>
 +
|}
 +
</li>
 
<li><p>Then need to prepare an infrared remote control shown in the figure below</p>
 
<li><p>Then need to prepare an infrared remote control shown in the figure below</p>
<p>'''Note: The Linux system provided by the Orange School only supports the remote control provided by the Orange School. The remote control of the TV or air conditioner cannot be used。'''</p>
+
 
 +
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big><p>'''<span style="color:#FF0000">Note: The Linux system provided by the Orange School only supports the remote control provided by the Orange School. The remote control of the TV or air conditioner cannot be used.</span>'''</p></big>
 +
|}
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image444.jpeg|199x183px|IMG_256]]
+
[[File:plus5-img444.png]]
  
 
</div></li>
 
</div></li>
 
<li><p>Then press the button on the infrared receiver on the development board to press the button on the remote control. The position of the infrared receiver on the development board is as shown in the figure below:</p>
 
<li><p>Then press the button on the infrared receiver on the development board to press the button on the remote control. The position of the infrared receiver on the development board is as shown in the figure below:</p>
<p>[[File:media/image445.png|346x92px]]</p></li>
+
<p>[[File:plus5-img445.png]]</p></li>
 
<li><p>Then you can see that '''evtest''' will print the received key value</p>
 
<li><p>Then you can see that '''evtest''' will print the received key value</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>......</p>
 
<p>......</p>
<p>Event code 217 (KEY_SEARCH)</p>
+
:<p>Event code 217 (KEY_SEARCH)</p>
<p>Event code 388 (KEY_TEXT)</p>
+
:<p>Event code 388 (KEY_TEXT)</p>
 
<p>Properties:</p>
 
<p>Properties:</p>
 
<p>Testing ... (interrupt to exit)</p>
 
<p>Testing ... (interrupt to exit)</p>
Line 6,677: Line 8,701:
 
<p>Event: time 1684152330.761986, -------------- SYN_REPORT ------------</p>
 
<p>Event: time 1684152330.761986, -------------- SYN_REPORT ------------</p>
 
<p>Event: time 1684152330.944243, type 1 (EV_KEY), code 116 (KEY_POWER), value 0</p>
 
<p>Event: time 1684152330.944243, type 1 (EV_KEY), code 116 (KEY_POWER), value 0</p>
<p>Event: time 1684152330.944243, -------------- SYN_REPORT ------------</p></li></ol>
+
<p>Event: time 1684152330.944243, -------------- SYN_REPORT ------------</p>
 +
|}
 +
</li></ol>
  
 
<span id="the-method-to-use-rtc"></span>
 
<span id="the-method-to-use-rtc"></span>
 +
 
== The method to use RTC ==
 
== The method to use RTC ==
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>A RTC battery interface is reserved on the development board, which is shown below:</p>
 
<li><p>A RTC battery interface is reserved on the development board, which is shown below:</p>
<p>[[File:media/image28.png|344x126px]]</p></li>
+
<p>[[File:plus5-img28.png]]</p></li>
 
<li><p>The RTC battery that needs to be purchased is shown below. The interface is 2pin, 1.25mm spacing</p>
 
<li><p>The RTC battery that needs to be purchased is shown below. The interface is 2pin, 1.25mm spacing</p>
<p>[[File:media/image27.png|152x81px]]</p></li>
+
<p>[[File:plus5-img27.png]]</p></li>
 
<li><p>The RTC chip used on the development board is Hym8563TS. This chip has the following characteristics:</p>
 
<li><p>The RTC chip used on the development board is Hym8563TS. This chip has the following characteristics:</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
Line 6,700: Line 8,727:
 
</li>
 
</li>
 
<li><p>See the command of the RTC information through the ProcFS interface of the Linux system</p>
 
<li><p>See the command of the RTC information through the ProcFS interface of the Linux system</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''cat /proc/driver/rtc'''</p>
 
<p>orangepi@orangepi:~$ '''cat /proc/driver/rtc'''</p>
 
<p>rtc_time : 06:07:40</p>
 
<p>rtc_time : 06:07:40</p>
Line 6,711: Line 8,741:
 
<p>periodic IRQ frequency : 1</p>
 
<p>periodic IRQ frequency : 1</p>
 
<p>max user IRQ frequency : 64</p>
 
<p>max user IRQ frequency : 64</p>
<p>24hr : yes</p></li></ol>
+
<p>24hr : yes</p>
 +
|}
 +
</li></ol>
  
 
<span id="how-to-use-the-cooling-pwm-fan"></span>
 
<span id="how-to-use-the-cooling-pwm-fan"></span>
 +
 
== How to use the cooling PWM fan ==
 
== How to use the cooling PWM fan ==
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>The development board is used for interfaces that connect the heat sink fan. The interface specifications are '''2pin 1.25mm''' spacing, '''<span class="mark">5V voltage driver</span>''', and the position of the fan interface is shown in the figure below:</p>
 
<li><p>The development board is used for interfaces that connect the heat sink fan. The interface specifications are '''2pin 1.25mm''' spacing, '''<span class="mark">5V voltage driver</span>''', and the position of the fan interface is shown in the figure below:</p>
<p>[[File:media/image19.png|410x171px]]</p></li>
+
<p>[[File:plus5-img19.png]]</p></li>
 
<li><p>The fan on the development board can adjust the speed and switch through PWM, and the PWM pins used are '''PWM3_IR_M1'''</p></li>
 
<li><p>The fan on the development board can adjust the speed and switch through PWM, and the PWM pins used are '''PWM3_IR_M1'''</p></li>
 
<li><p>The Linux system uses the [https://github.com/orangepi-xunlong/linux-orangepi/blob/orange-pi-5.10-rk3588/drivers/hwmon/pwm-fan.c '''pwm-fan'''] driver to control the fan by default. The DTS configuration used is shown below:</p>
 
<li><p>The Linux system uses the [https://github.com/orangepi-xunlong/linux-orangepi/blob/orange-pi-5.10-rk3588/drivers/hwmon/pwm-fan.c '''pwm-fan'''] driver to control the fan by default. The DTS configuration used is shown below:</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>'''orange-pi-5.10-rk3588/arch/arm64/boot/dts/rockchip/rk3588-orangepi-5-plus.dts'''</p>
 
<p>'''orange-pi-5.10-rk3588/arch/arm64/boot/dts/rockchip/rk3588-orangepi-5-plus.dts'''</p>
<p>fan: pwm-fan {</p>
+
 
<p>compatible = &quot;pwm-fan&quot;;</p>
+
 
<p>#cooling-cells = &lt;2&gt;;</p>
+
::<p>fan: pwm-fan {</p>
<p>pwms = &lt;&amp;pwm3 0 50000 0&gt;;</p>
+
::::<p>compatible = &quot;pwm-fan&quot;;</p>
<p>cooling-levels = &lt;0 50 100 150 200 255&gt;;</p>
+
::::<p>#cooling-cells = &lt;2&gt;;</p>
<p>rockchip,temp-trips = &lt;</p>
+
::::<p>pwms = &lt;&amp;pwm3 0 50000 0&gt;;</p>
<p>50000 1</p>
+
::::<p>cooling-levels = &lt;0 50 100 150 200 255&gt;;</p>
<p>55000 2</p>
+
::::<p>rockchip,temp-trips = &lt;</p>
<p>60000 3</p>
+
::::::<p>50000 1</p>
<p>65000 4</p>
+
::::::<p>55000 2</p>
<p>70000 5</p>
+
::::::<p>60000 3</p>
<p>&gt;;</p>
+
::::::<p>65000 4</p>
<p>status = &quot;okay&quot;;</p>
+
::::::<p>70000 5</p>
<p>};</p>
+
::::<p>&gt;;</p>
 +
 
 +
 
 +
::::<p>status = &quot;okay&quot;;</p>
 +
::<p>};</p>
 +
|}
 
<p>Among it:</p>
 
<p>Among it:</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li><p>'''pwms = &lt;&amp;pwm3 0 50000 0&gt;''':The PWM of the control fan is &gt; PWM3。</p></li>
+
<li><p>'''pwms = &lt;&amp;pwm3 0 50000 0&gt;''':The PWM of the control fan is PWM3.</p></li>
<li><p>'''cooling-levels = &lt;0 50 100 150 200 255&gt;''':It is used to &gt; configure the gear of the speed (PWM duty cycle). The number &gt; and size of the gear can be defined by itself. Here are 6 &gt; gears. The range of the speed is 0-255。</p></li>
+
<li><p>'''cooling-levels = &lt;0 50 100 150 200 255&gt;''':It is used to configure the gear of the speed (PWM duty cycle). The number and size of the gear can be defined by itself. Here are 6 gears. The range of the speed is 0-255.</p></li>
<li><p>'''rockchip,temp-trips''':It is used to configure the &gt; corresponding relationship between the CPU temperature and the &gt; fan speed gear. It can be adjusted according to actual needs. &gt; The above configuration 50 degrees corresponding gear 1, 70 &gt; degrees to the corresponding gear 5。</p>
+
<li><p>'''rockchip,temp-trips''':It is used to configure the corresponding relationship between the CPU temperature and the fan speed gear. It can be adjusted according to actual needs. The above configuration 50 degrees corresponding gear 1, 70 degrees to the corresponding gear 5.</p>
<p>'''It is normal to find that the fan does not turn after turning, because the temperature of the CPU after booting is generally lower than 50 degrees. Only when the temperature of the CPU reaches 50 degrees, the fan will start to turn。'''</p>
+
 
<p>'''Use the following commands to make all CPUs run, and then you can see that the fan will start working:'''</p>
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
<p>orangepi@orangepi:~$ '''for i in $(seq 0 $(( $(nproc --all) - 1)) ); do (taskset -c $i yes &gt; /dev/null &amp;); done'''</p></li></ol>
+
|-
 +
|
 +
<big><p>'''It is normal to find that the fan does not turn after turning, because the temperature of the CPU after booting is generally lower than 50 degrees. Only when the temperature of the CPU reaches 50 degrees, the fan will start to turn.'''</p>
 +
 
 +
 
 +
<p>'''Use the following commands to make all CPUs run, and then you can see that the fan will start working:'''</p></big>
 +
<p>orangepi@orangepi:~$ '''for i in $(seq 0 $(( $(nproc --all) - 1)) ); do (taskset -c $i yes &gt; /dev/null &amp;); done'''</p>
 +
|}
 +
</li></ol>
 
</li></ol>
 
</li></ol>
  
 
<span id="the-method-of-shutting-down-and-restarting-the-development-board"></span>
 
<span id="the-method-of-shutting-down-and-restarting-the-development-board"></span>
== The method of shutting down and restarting the development board ==
 
  
<ol style="list-style-type: decimal;">
+
== How to use the ZFS file system ==
<li><p>In the process of running the Linux system, if the Type-C power supply is directly out of power, it may cause the file system to lose certain data or damage. Therefore, please use the '''poweroff''' command to turn off the linux system of the development board before power off. Then Unplug the power supply。</p>
+
 
<p>orangepi@orangepi:~$ '''sudo poweroff'''</p></li>
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"  
<li><p>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 turn off。</p>
+
|-
<p>[[File:media/image446.png|444x98px]]</p></li></ol>
+
|
 +
<big>'''The latest version of Ubuntu20.04, Ubuntu22.04, Debian11 and Debian12 desktop version systems have pre-installed zfs, you can use it directly.'''
 +
 
 +
'''The pre-installed zfs version in Ubuntu20.04 and Ubuntu22.04 desktop systems is 2.1.6.'''
 +
 
 +
'''The pre-installed zfs version in Debian11 and Debian12 desktop systems is 2.1.11.'''
 +
 
 +
'''After the system starts, please first confirm whether the zfs kernel module has been loaded. If you can see zfs-related content using the lsmod command, it means that the system has pre-installed zfs.'''
 +
 
 +
orangepi@orangepi:~$ '''lsmod | grep "zfs"'''</big>
 +
 
 +
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
  
'''Note that the Linux desktop system will pop up the confirmation box shown in the figure below after pressing the buttons. You need to click the Shut Down option to shut down.'''
+
zunicode      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        327680 &nbsp;&nbsp;&nbsp;  1 &nbsp; zfs
  
[[File:media/image447.png|256x240px]]
+
zzstd      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;        471040 &nbsp;&nbsp;&nbsp;  1 &nbsp; zfs
  
<ol start="3" style="list-style-type: decimal;">
+
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
<li><p>After shutting down, press the switch button on the development board to turn on。</p>
 
<p>[[File:media/image446.png|444x98px]]</p></li>
 
<li><p>Restart the command of the Linux system.</p>
 
<p>orangepi@orangepi:~$ '''sudo''' '''reboot'''</p></li></ol>
 
  
<span id="ubuntu22.04-gnome-wayland-desktop-system-instructions"></span>
+
zcommon      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        69632 &nbsp;&nbsp;&nbsp;  1 &nbsp; zfs
  
= '''Ubuntu22.04 Gnome Wayland Desktop system instructions''' =
+
znvpair        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;      61440 &nbsp;&nbsp;&nbsp;  2 &nbsp; zfs,zcommon
  
'''ubuntu22.04 gnome image default pre -installed PanFork Mesa user space library, pre -installed Kodi player and Chromium browser support hard solution video.'''
+
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
  
'''It should be noted that this image needs to be used under Wayland. If you need to use X11, select the XFCE type image.'''
+
icp        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;          221184  &nbsp;&nbsp;&nbsp; 1 &nbsp; zfs
  
<span id="ubuntu22.04-gnome-desktop-system-adaptation-situation"></span>
+
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
== Ubuntu22.04 GNOME desktop system adaptation situation ==
+
|}
  
{| class="wikitable"
+
=== How to install ZFS ===
 +
{| class="wikitable" style="background-color:#ffffdc;width:800px;"  
 
|-
 
|-
| style="text-align: left;"| '''Function'''
+
|  
| style="text-align: left;"| '''Ubuntu22.04 Gnome Wayland'''
+
<big>'''Before installing zfs, please ensure that the Linux image used is the latest version. In addition, if zfs is already installed in the system, there is no need to install it 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 section on the method of installing the kernel header file.
 +
 
 +
In Ubuntu20.04, Ubuntu22.04 and Debian11 systems, zfs cannot be installed directly through apt, because the default apt source zfs version is lower than 2.1.6, and there is a problem of incompatibility with rk linux5.10 kernel. This problem is fixed in zfs version 2.1.6 and later.
 +
 
 +
To solve this problem, we provide a zfs deb package that can be installed normally, which can be downloaded from the '''official tool''' of the development board. Open the '''official tool''', and then enter the '''zfs-related deb package folders used by Ubuntu and Debian systems'''. You can see three types of deb packages: Ubuntu20.04, Ubuntu22.04 and Debian11. Please download the required version.
 +
 
 +
<p>[[File:5plus-3.png]]</p>
 +
 
 +
After downloading the zfs deb packages of the corresponding version, please upload them to the Linux system of the development board. For the upload method, please refer to the description in [[Orange Pi 5 Plus#The method of uploading files to the Linux system of the development board|'''the section of the method of uploading files to the Linux system of the development board''']].
 +
 
 +
After the upload is complete, use the '''cd''' command in the command line of the development board linux system to enter the deb package directory, and then use the following command to install the zfs deb package.
 +
{| class="wikitable" style="width:800px;"
 
|-
 
|-
| style="text-align: left;"| '''HDMI TX1video'''
+
|
| style="text-align: left;"| '''OK'''
+
orangepi@orangepi:~$ '''sudo apt install ./*.deb'''
 +
|}
 +
 
 +
After the installation is complete, use the following command to see the zfs-related kernel modules:
 +
 
 +
{| class="wikitable" style="width:800px;"  
 
|-
 
|-
| style="text-align: left;"| '''HDMI TX1 Audio'''
+
|
| style="text-align: left;"| '''OK'''
+
orangepi@orangepi:~$ '''ls /lib/modules/5.10.110-rockchip-rk3588/updates/dkms/icp.ko  spl.ko  zavl.ko  zcommon.ko  zfs.ko  zlua.ko  znvpair.ko  zunicode.ko  zzstd.ko'''
 +
|}
 +
 
 +
Then restart the Linux system to see that the zfs kernel module will be automatically loaded:
 +
 
 +
{| class="wikitable" style="background-color:#ffffdc;width:800px;"  
 
|-
 
|-
| style="text-align: left;"| '''HDMI TX2 video'''
+
|  
| style="text-align: left;"| '''OK'''
+
orangepi@orangepi:~$ '''lsmod | grep "zfs"'''
|-
+
 
| style="text-align: left;"| '''HDMI TX2 Audio'''
+
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
| style="text-align: left;"| '''OK'''
+
 
 +
zunicode      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        327680 &nbsp;&nbsp;&nbsp;  1 &nbsp; zfs
 +
 
 +
zzstd      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;        471040 &nbsp;&nbsp;&nbsp;  1 &nbsp; zfs
 +
 
 +
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
 +
 
 +
zcommon      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        69632 &nbsp;&nbsp;&nbsp;  1 &nbsp; zfs
 +
 
 +
znvpair        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;      61440 &nbsp;&nbsp;&nbsp;  2 &nbsp; zfs,zcommon
 +
 
 +
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
 +
 
 +
icp        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;          221184  &nbsp;&nbsp;&nbsp; 1 &nbsp; zfs
 +
 
 +
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
 +
|}
 +
 
 +
In Debian12, the default version of zfs is 2.1.11, so we can install zfs directly through the following command. Again, please make sure that the system has installed the deb package of the kernel header file before installation.
 +
 
 +
{| class="wikitable" style="width:800px;"  
 
|-
 
|-
| style="text-align: left;"| '''HDMI RX video'''
+
|
| style="text-align: left;"| '''OK'''
+
orangepi@orangepi:~$ '''sudo apt install -y zfsutils-linux zfs-dkms'''
 +
|}
 +
 
 +
=== Methods of creating ZFS pools ===
 +
{| class="wikitable" style="background-color:#ffffdc;width:800px;"  
 
|-
 
|-
| style="text-align: left;"| '''HDMI RX Audio'''
+
|  
| style="text-align: left;"| '''OK'''
+
<big>'''ZFS is based on storage pools, we can add multiple physical storage devices to the pool, and then allocate storage space from this pool.'''
 +
 
 +
'''The following content is demonstrated based on the development board connected to an NVMe SSD and a USB flash drive.'''</big>
 +
|}
 +
 
 +
1) First, we can use the '''lsblk''' command to view all storage devices on the development board. The current development board is connected to an NVMe SSD and a U disk. The output is as follows:
 +
 
 +
<p>[[File:5plus-4.png]]</p>
 +
 
 +
2) Then enter the following command to create a ZFS pool, including two storage devices, NVMe SSD and U disk
 +
 
 +
{| class="wikitable" style="width:800px;"  
 
|-
 
|-
| style="text-align: left;"| '''USB2.0X2'''
+
|
| style="text-align: left;"| '''OK'''
+
orangepi@orangepi:~$ '''sudo zpool create -f pool1 /dev/nvme0n1 /dev/sda'''
 +
|}
 +
 
 +
3) 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
 +
 
 +
<p>[[File:5plus-5.png]]</p>
 +
 
 +
4) Then execute '''df -h''' to see that '''pool1''' is mounted to the '''/pool1''' directory
 +
 
 +
{| class="wikitable" style="width:800px;"  
 
|-
 
|-
| style="text-align: left;"| '''USB3.0X2'''
+
|
| style="text-align: left;"| '''OK'''
+
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 <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; 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>
 +
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.0K  5.0M  1% /run/lock <br>
 +
tmpfs    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;      7.7G &nbsp;&nbsp;&nbsp; 944K  7.7G  1% /tmp <br>
 +
/dev/mmcblk0p1  &nbsp;&nbsp;&nbsp;  1022M &nbsp;&nbsp;&nbsp; 115M  908M  12% /boot <br>
 +
/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 <br>
 +
'''pool1    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;      489G &nbsp;&nbsp;&nbsp; 9.3M  489G  1% /pool1''' <br>
 +
|}
 +
5) Use the following command to see that the file system type of pool1 is zfs
 +
 
 +
{| class="wikitable" style="width:800px;"  
 
|-
 
|-
| style="text-align: left;"| '''2.5G PCIe network port X2'''
+
|
| style="text-align: left;"| '''OK'''
+
orangepi@orangepi:~$ '''mount | grep pool1'''
 +
 
 +
pool1 on /pool1 type '''zfs''' (rw,xattr,noacl)
 +
|}
 +
6) Then we can test copying a file to the ZFS pool
 +
 
 +
{| class="wikitable" style="width:800px;"  
 
|-
 
|-
| style="text-align: left;"| '''2.5G PCIe network port light'''
+
|
| style="text-align: left;"| '''OK'''
+
orangepi@orangepi:~$ '''sudo cp -v /usr/local/test.mp4 /pool1/'''
 +
 
 +
'/usr/local/test.mp4' -> '/pool1/test.mp4'
 +
|}
 +
 
 +
=== Test the data deduplication function of ZFS ===
 +
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;"  
 
|-
 
|-
| style="text-align: left;"| '''Debug serial port'''
+
|
| style="text-align: left;"| '''OK'''
+
orangepi@orangepi:~$ '''sudo zfs set dedup=on pool1'''
 +
|}
 +
2) Then do a simple test, first enter pool1, and then execute the following command to generate a random file with a size of 1G
 +
 
 +
{| class="wikitable" style="width:800px;"  
 
|-
 
|-
| style="text-align: left;"| '''RTC chip'''
+
|
| style="text-align: left;"| '''OK'''
+
orangepi@orangepi:~$ '''cd /pool1/ '''<br>
 +
root@orangepi:/pool1$ '''sudo dd if=/dev/urandom of=test.1g bs=1M count=1024''' <br>
 +
1024+0 records in <br>
 +
1024+0 records out <br>
 +
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 5.04367 s, 213 MB/s <br>
 +
|}
 +
3) Then use the following command to copy 1000 random files of size 1G
 +
 
 +
{| class="wikitable" style="width:800px;"  
 
|-
 
|-
| style="text-align: left;"| '''FAN Fan interface'''
+
|
| style="text-align: left;"| '''OK'''
+
root@orangepi:/pool1$ '''for ((i=0; i<1000; i++)); do sudo cp test.1g $i.test.1g; done'''
 +
|}
 +
4) 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
 +
 
 +
{| class="wikitable" style="width:800px;"  
 
|-
 
|-
| style="text-align: left;"| '''eMMC Extension ports'''
+
|
| style="text-align: left;"| '''OK'''
+
root@orangepi:/pool1$ '''du -lh'''
 +
 
 +
1002G
 +
|}
 +
5) Then use the '''zpool list''' command to see that only 1.01G is actually occupied, because these 1001 files are all duplicates, indicating that the data deduplication function is effective.
 +
 
 +
<p>[[File:5plus-6.png]]</p>
 +
 
 +
=== Test the data compression function of ZFS ===
 +
 
 +
1) Because the stored data is different, the disk space saved by compression will also be different, so we choose to compress relatively large plain text files for compression testing, and execute the following commands to pack the '''/var/log/''' and '''/etc/''' directories into a tarball
 +
 
 +
{| class="wikitable" style="width:800px;"
 
|-
 
|-
| style="text-align: left;"| '''AP6275P-WIFI'''
+
|
| style="text-align: left;"| '''OK'''
+
orangepi@orangepi:~$ '''cd /pool1/'''
 +
 
 +
root@orangepi:/pool1$ '''sudo tar -cf text.tar /var/log/ /etc/'''
 +
|}
 +
2) Then the file size that can be seen through the '''ls -lh''' command and the space occupied in the ZFS pool are both '''27M'''
 +
 
 +
<p>[[File:5plus-7.png]]</p>
 +
 
 +
3) Then we enable compression in the ZFS pool pool1
 +
 
 +
{| class="wikitable" style="width:800px;"  
 
|-
 
|-
| style="text-align: left;"| '''AP6275P-BT'''
+
|
| style="text-align: left;"| '''OK'''
+
root@orangepi:/pool1$ '''sudo zfs set compression=lz4 pool1'''
 +
|}
 +
4) Then execute the following command again to package the '''/var/log/''' and '''/etc/''' directories into a tar package
 +
 
 +
{| class="wikitable" style="width:800px;"  
 
|-
 
|-
| style="text-align: left;"| '''AX200-WIFI'''
+
|
| style="text-align: left;"| '''OK'''
+
root@orangepi:/pool1$ '''sudo tar -cf text.tar /var/log/ /etc/'''
 +
|}
 +
5) 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
 +
 
 +
<p>[[File:5plus-8.png]]</p>
 +
 
 +
== The method of shutting down and restarting the development board ==
 +
 
 +
<ol style="list-style-type: decimal;">
 +
<li><p>In the process of running the Linux system, if the Type-C power supply is directly out of power, it may cause the file system to lose certain data or damage. Therefore, please use the '''poweroff''' command to turn off the linux system of the development board before power off. Then Unplug the power supply.</p>
 +
{| class="wikitable" style="width:800px;"
 
|-
 
|-
| style="text-align: left;"| '''AX200-BT'''
+
|
| style="text-align: left;"| '''OK'''
+
<p>orangepi@orangepi:~$ '''sudo poweroff'''</p>
 +
|}
 +
</li>
 +
<li><p>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 turn off.</p>
 +
<p>[[File:plus5-img446.png]]</p></li>
 +
 
 +
{| class="wikitable" style="background-color:#ffffdc;width:800px;"  
 
|-
 
|-
| style="text-align: left;"| '''AX210-WIFI'''
+
|  
| style="text-align: left;"| '''OK'''
+
<big>'''Note that the Linux desktop system will pop up the confirmation box shown in the figure below after pressing the buttons. You need to click the Shut Down option to shut down.'''</big>
 +
 
 +
[[File:plus5-img447.png|center]]
 +
|}
 +
</ol>
 +
<ol start="3" style="list-style-type: decimal;">
 +
<li><p>After shutting down, press the switch button on the development board to turn on.</p>
 +
<p>[[File:plus5-img446.png]]</p></li>
 +
<li><p>Restart the command of the Linux system.</p>
 +
{| class="wikitable" style="width:800px;"  
 +
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''sudo''' '''reboot'''</p>
 +
|}
 +
</li></ol>
 +
 
 +
<span id="ubuntu22.04-gnome-wayland-desktop-system-instructions"></span>
 +
 
 +
= '''Ubuntu22.04 Gnome Wayland Desktop system instructions''' =
 +
 
 +
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 
|-
 
|-
| style="text-align: left;"| '''AX210-BT'''
+
|
| style="text-align: left;"| '''OK'''
+
<big>'''ubuntu22.04 gnome image default pre -installed PanFork Mesa user space library, pre -installed Kodi player and Chromium browser support hard solution video.'''
 +
 
 +
'''It should be noted that this image needs to be used under Wayland. If you need to use X11, select the XFCE type image.'''</big>
 +
|}
 +
 
 +
<span id="ubuntu22.04-gnome-desktop-system-adaptation-situation"></span>
 +
== Ubuntu22.04 GNOME desktop system adaptation situation ==
 +
 
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
| style="text-align: left;"| '''Function'''
 +
| style="text-align: left;"| '''Ubuntu22.04 Gnome Wayland'''
 
|-
 
|-
| style="text-align: left;"| '''RTL8852BE-WIFI'''
+
| style="text-align: left;"| '''HDMI TX1video'''
 
| style="text-align: left;"| '''OK'''
 
| style="text-align: left;"| '''OK'''
 
|-
 
|-
| style="text-align: left;"| '''RTL8852BE-BT'''
+
| style="text-align: left;"| '''HDMI TX1 Audio'''
 
| style="text-align: left;"| '''OK'''
 
| style="text-align: left;"| '''OK'''
 
|-
 
|-
| style="text-align: left;"| '''MaskROM button'''
+
| style="text-align: left;"| '''HDMI TX2 video'''
 
| style="text-align: left;"| '''OK'''
 
| style="text-align: left;"| '''OK'''
 
|-
 
|-
| style="text-align: left;"| '''Type-C to USB3.0'''
+
| style="text-align: left;"| '''HDMI TX2 Audio'''
 
| style="text-align: left;"| '''OK'''
 
| style="text-align: left;"| '''OK'''
 
|-
 
|-
| style="text-align: left;"| '''Type-C ADB Function'''
+
| style="text-align: left;"| '''HDMI RX video'''
 
| style="text-align: left;"| '''OK'''
 
| style="text-align: left;"| '''OK'''
 
|-
 
|-
| style="text-align: left;"| '''Type-C DP video'''
+
| style="text-align: left;"| '''HDMI RX Audio'''
 
| style="text-align: left;"| '''OK'''
 
| style="text-align: left;"| '''OK'''
 
|-
 
|-
| style="text-align: left;"| '''Type-C DP Audio'''
+
| style="text-align: left;"| '''USB2.0X2'''
 
| style="text-align: left;"| '''OK'''
 
| style="text-align: left;"| '''OK'''
 
|-
 
|-
| style="text-align: left;"| '''Switch button'''
+
| style="text-align: left;"| '''USB3.0X2'''
 
| style="text-align: left;"| '''OK'''
 
| style="text-align: left;"| '''OK'''
 
|-
 
|-
| style="text-align: left;"| '''Infrared function'''
+
| style="text-align: left;"| '''2.5G PCIe network port X2'''
 
| style="text-align: left;"| '''OK'''
 
| style="text-align: left;"| '''OK'''
 
|-
 
|-
| style="text-align: left;"| '''Three -color LED light'''
+
| style="text-align: left;"| '''2.5G PCIe network port light'''
 
| style="text-align: left;"| '''OK'''
 
| style="text-align: left;"| '''OK'''
 
|-
 
|-
| style="text-align: left;"| '''MIC on board'''
+
| style="text-align: left;"| '''Debug serial port'''
 
| style="text-align: left;"| '''OK'''
 
| style="text-align: left;"| '''OK'''
 
|-
 
|-
| style="text-align: left;"| '''Headphones play'''
+
| style="text-align: left;"| '''RTC chip'''
 
| style="text-align: left;"| '''OK'''
 
| style="text-align: left;"| '''OK'''
 
|-
 
|-
| style="text-align: left;"| '''Headset recording'''
+
| style="text-align: left;"| '''FAN Fan interface'''
 
| style="text-align: left;"| '''OK'''
 
| style="text-align: left;"| '''OK'''
 
|-
 
|-
| style="text-align: left;"| '''SPK trumpet'''
+
| style="text-align: left;"| '''eMMC Extension ports'''
 
| style="text-align: left;"| '''OK'''
 
| style="text-align: left;"| '''OK'''
 
|-
 
|-
| style="text-align: left;"| '''40PIN GPIO'''
+
| style="text-align: left;"| '''AP6275P-WIFI'''
 
| style="text-align: left;"| '''OK'''
 
| style="text-align: left;"| '''OK'''
 
|-
 
|-
| style="text-align: left;"| '''40PIN I2C'''
+
| style="text-align: left;"| '''AP6275P-BT'''
 
| style="text-align: left;"| '''OK'''
 
| style="text-align: left;"| '''OK'''
 
|-
 
|-
| style="text-align: left;"| '''40PIN SPI'''
+
| style="text-align: left;"| '''AX200-WIFI'''
 
| style="text-align: left;"| '''OK'''
 
| style="text-align: left;"| '''OK'''
 
|-
 
|-
| style="text-align: left;"| '''40PIN UART'''
+
| style="text-align: left;"| '''AX200-BT'''
 +
| style="text-align: left;"| '''OK'''
 +
|-
 +
| style="text-align: left;"| '''AX210-WIFI'''
 +
| style="text-align: left;"| '''OK'''
 +
|-
 +
| style="text-align: left;"| '''AX210-BT'''
 +
| style="text-align: left;"| '''OK'''
 +
|-
 +
| style="text-align: left;"| '''RTL8852BE-WIFI'''
 +
| style="text-align: left;"| '''OK'''
 +
|-
 +
| style="text-align: left;"| '''RTL8852BE-BT'''
 +
| style="text-align: left;"| '''OK'''
 +
|-
 +
| style="text-align: left;"| '''MaskROM button'''
 +
| style="text-align: left;"| '''OK'''
 +
|-
 +
| style="text-align: left;"| '''Type-C to USB3.0'''
 +
| style="text-align: left;"| '''OK'''
 +
|-
 +
| style="text-align: left;"| '''Type-C ADB Function'''
 +
| style="text-align: left;"| '''OK'''
 +
|-
 +
| style="text-align: left;"| '''Type-C DP video'''
 +
| style="text-align: left;"| '''OK'''
 +
|-
 +
| style="text-align: left;"| '''Type-C DP Audio'''
 +
| style="text-align: left;"| '''OK'''
 +
|-
 +
| style="text-align: left;"| '''Switch button'''
 +
| style="text-align: left;"| '''OK'''
 +
|-
 +
| style="text-align: left;"| '''Infrared function'''
 +
| style="text-align: left;"| '''OK'''
 +
|-
 +
| style="text-align: left;"| '''Three -color LED light'''
 +
| style="text-align: left;"| '''OK'''
 +
|-
 +
| style="text-align: left;"| '''MIC on board'''
 +
| style="text-align: left;"| '''OK'''
 +
|-
 +
| style="text-align: left;"| '''Headphones play'''
 +
| style="text-align: left;"| '''OK'''
 +
|-
 +
| style="text-align: left;"| '''Headset recording'''
 +
| style="text-align: left;"| '''OK'''
 +
|-
 +
| style="text-align: left;"| '''SPK trumpet'''
 +
| style="text-align: left;"| '''OK'''
 +
|-
 +
| style="text-align: left;"| '''40PIN GPIO'''
 +
| style="text-align: left;"| '''OK'''
 +
|-
 +
| style="text-align: left;"| '''40PIN I2C'''
 +
| style="text-align: left;"| '''OK'''
 +
|-
 +
| style="text-align: left;"| '''40PIN SPI'''
 +
| style="text-align: left;"| '''OK'''
 +
|-
 +
| style="text-align: left;"| '''40PIN UART'''
 
| style="text-align: left;"| '''OK'''
 
| style="text-align: left;"| '''OK'''
 
|-
 
|-
Line 6,954: Line 9,254:
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
 
<li><p>First open the settings</p>
 
<li><p>First open the settings</p>
<p>[[File:media/image448.png|243x181px]]</p></li>
+
<p>[[File:plus5-img448.png]]</p></li>
<li><p>Then select about, if the '''Wayland''' description settings &gt; displayed by '''Windowing System''' in a column are correct</p>
+
<li><p>Then select about, if the '''Wayland''' description settings displayed by '''Windowing System''' in a column are correct</p>
<p>[[File:media/image449.png|362x303px]]</p></li></ol>
+
<p>[[File:plus5-img449.png]]</p></li></ol>
 
</li>
 
</li>
 
<li><p>When the '''Log Out''' is out of the system, it will enter the login interface below</p>
 
<li><p>When the '''Log Out''' is out of the system, it will enter the login interface below</p>
<p>[[File:media/image450.png|258x108px]]</p></li>
+
<p>[[File:plus5-img450.png|258x108px]]</p></li>
 
<li><p>Please click the location shown below before logging in to the system again</p>
 
<li><p>Please click the location shown below before logging in to the system again</p>
<p>[[File:media/image451.png|259x108px]]</p></li>
+
<p>[[File:plus5-img451.png]]</p></li>
 
<li><p>Then select '''Ubuntu on Wayland''' and enter the password login system</p>
 
<li><p>Then select '''Ubuntu on Wayland''' and enter the password login system</p>
<p>[[File:media/image452.png|218x312px]]</p></li></ol>
+
<p>[[File:plus5-img452.png]]</p></li></ol>
  
 
<span id="switch-the-method-of-default-audio-equipment"></span>
 
<span id="switch-the-method-of-default-audio-equipment"></span>
 +
 
== Switch the method of default audio equipment ==
 
== Switch the method of default audio equipment ==
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>Open the settings first</p>
 
<li><p>Open the settings first</p>
<p>[[File:media/image448.png|221x164px]]</p></li>
+
<p>[[File:plus5-img448.png]]</p></li>
 
<li><p>Then select '''Sound''', and then select the audio device you want to use in '''Output Device'''</p>
 
<li><p>Then select '''Sound''', and then select the audio device you want to use in '''Output Device'''</p>
<p>[[File:media/image453.png|375x314px]]</p></li></ol>
+
<p>[[File:plus5-img453.png]]</p></li></ol>
  
 
<span id="gpu-test-method"></span>
 
<span id="gpu-test-method"></span>
Line 6,979: Line 9,280:
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>Open a terminal on the desktop, and then enter the '''glmark2''' command. If you can see the '''Panfros''' after '''GL_VERDOR''', This shows that it is used in GPU.</p>
 
<li><p>Open a terminal on the desktop, and then enter the '''glmark2''' command. If you can see the '''Panfros''' after '''GL_VERDOR''', This shows that it is used in GPU.</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''glmark2'''</p>
 
<p>orangepi@orangepi:~$ '''glmark2'''</p>
<p>[[File:media/image454.png|381x258px]]</p></li>
+
|}
 +
<p>[[File:plus5-img454.png]]</p></li>
 
<li><p>glmark2 running score test is generally more than 1,000 points</p>
 
<li><p>glmark2 running score test is generally more than 1,000 points</p>
<p>[[File:media/image455.png|331x222px]]</p></li>
+
<p>[[File:plus5-img455.png]]</p></li>
 
<li><p>Run '''gpu_load.sh''' script to view the current load of the GPU</p>
 
<li><p>Run '''gpu_load.sh''' script to view the current load of the GPU</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''gpu_load.sh'''</p>
 
<p>orangepi@orangepi:~$ '''gpu_load.sh'''</p>
<p>[[File:media/image456.png|529x281px]]</p></li></ol>
+
|}
 +
<p>[[File:plus5-img456.png]]</p></li></ol>
  
 
<span id="chromium-browser-hard-solution-to-play-video-test-method"></span>
 
<span id="chromium-browser-hard-solution-to-play-video-test-method"></span>
 +
 
== Chromium browser hard solution to play video test method ==
 
== Chromium browser hard solution to play video test method ==
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>First open the chromium browser</p>
 
<li><p>First open the chromium browser</p>
<p>[[File:media/image457.png|576x324px]]</p></li>
+
<p>[[File:plus5-img457.png]]</p></li>
 
<li><p>Then enter '''chrome://gpu''' in the Chromium browser to view the support of GPU and video decoding</p>
 
<li><p>Then enter '''chrome://gpu''' in the Chromium browser to view the support of GPU and video decoding</p>
<p>[[File:media/image458.png|337x197px]]</p></li>
+
<p>[[File:plus5-img458.png]]</p></li>
 
<li><p>Then you can open a video website to play a video file, or enter the following path name player to play a test video file in the browser.</p>
 
<li><p>Then you can open a video website to play a video file, or enter the following path name player to play a test video file in the browser.</p>
<p>'''/usr/local/test.mp4'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>'''/usr/local/test.mp4'''</p>
 +
|}
 +
</li>
 
<li><p>When playing the video, you can run the '''vpu_debug.sh''' script in the terminal. If there is a print output in the lower right corner of the figure below, it means that there is a hardware to decode the video.</p>
 
<li><p>When playing the video, you can run the '''vpu_debug.sh''' script in the terminal. If there is a print output in the lower right corner of the figure below, it means that there is a hardware to decode the video.</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''vpu_debug.sh'''</p>
 
<p>orangepi@orangepi:~$ '''vpu_debug.sh'''</p>
 +
|}
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image459.png|576x324px|Screenshot from 2023-05-22 15-01-46]]
+
[[File:plus5-img459.png]]
  
 
</div></li></ol>
 
</div></li></ol>
  
 
<span id="kodi-hard-solution-to-play-video-test-method"></span>
 
<span id="kodi-hard-solution-to-play-video-test-method"></span>
 +
 
== Kodi hard solution to play video test method ==
 
== Kodi hard solution to play video test method ==
  
'''Note that there will be problems with the Kodi display directly on the Wayland desktop. Please open Kodi strictly according to the following method。'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''Note that there will be problems with the Kodi display directly on the Wayland desktop. Please open Kodi strictly according to the following method.'''</big>
 +
|}
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>First log in the system</p>
 
<li><p>First log in the system</p>
<p>[[File:media/image460.png|231x153px]] [[File:media/image461.png|266x118px]]</p></li>
+
<p>[[File:plus5-img460.png]] [[File:plus5-img461.png]]</p></li>
 
<li><p>When the login system will enter the login interface below</p>
 
<li><p>When the login system will enter the login interface below</p>
<p>[[File:media/image450.png|258x108px]]</p></li>
+
<p>[[File:plus5-img450.png]]</p></li>
 
<li><p>Then click the location shown in the figure below</p>
 
<li><p>Then click the location shown in the figure below</p>
<p>[[File:media/image451.png|259x108px]]</p></li>
+
<p>[[File:plus5-img451.png]]</p></li>
 
<li><p>Then select '''Kodi Wayland''', then enter the password login system</p>
 
<li><p>Then select '''Kodi Wayland''', then enter the password login system</p>
<p>[[File:media/image462.png|262x273px]]</p></li>
+
<p>[[File:plus5-img462.png]]</p></li>
 
<li><p>The interface after Kodi is opened is displayed as shown below</p>
 
<li><p>The interface after Kodi is opened is displayed as shown below</p>
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image463.png|461x259px|Screenshot from 2023-03-03 14-31-20]]
+
[[File:plus5-img463.png]]
  
 
</div></li>
 
</div></li>
 
<li><p>Then click Settings</p>
 
<li><p>Then click Settings</p>
<p>[[File:media/image464.png|343x149px]]</p></li>
+
<p>[[File:plus5-img464.png]]</p></li>
 
<li><p>Then select '''Player'''</p>
 
<li><p>Then select '''Player'''</p>
<p>[[File:media/image465.png|474x268px]]</p></li>
+
<p>[[File:plus5-img465.png]]</p></li>
 
<li><p>Then select '''Videos''', and then click '''Standard''' in the lower left corner</p>
 
<li><p>Then select '''Videos''', and then click '''Standard''' in the lower left corner</p>
<p>[[File:media/image466.png|477x268px]]</p></li>
+
<p>[[File:plus5-img466.png]]</p></li>
 
<li><p>After clicking twice, it will be switched to the '''Expert''' mode. The specific display is shown in the figure below</p>
 
<li><p>After clicking twice, it will be switched to the '''Expert''' mode. The specific display is shown in the figure below</p>
<p>[[File:media/image467.png|441x249px]]</p></li>
+
<p>[[File:plus5-img467.png]]</p></li>
 
<li><p>Then open the '''Allow using DRM PRIME decoder''' in the P'''rocessing''' settings</p>
 
<li><p>Then open the '''Allow using DRM PRIME decoder''' in the P'''rocessing''' settings</p>
<p>[[File:media/image468.png|442x250px]]</p></li>
+
<p>[[File:plus5-img468.png]]</p></li>
 
<li><p>Then let's introduce a system's own test video test. You can also upload the video you want to play to the system, and then import and play</p>
 
<li><p>Then let's introduce a system's own test video test. You can also upload the video you want to play to the system, and then import and play</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
 
<li><p>First enter the main interface, then select '''Movies'''</p>
 
<li><p>First enter the main interface, then select '''Movies'''</p>
<p>[[File:media/image469.png|424x239px]]</p></li>
+
<p>[[File:plus5-img469.png]]</p></li>
 
<li><p>Then choose '''Add videos...'''</p>
 
<li><p>Then choose '''Add videos...'''</p>
<p>[[File:media/image470.png|429x242px]]</p></li>
+
<p>[[File:plus5-img470.png]]</p></li>
 
<li><p>Then choose '''Browse'''</p>
 
<li><p>Then choose '''Browse'''</p>
<p>[[File:media/image471.png|428x270px]]</p></li>
+
<p>[[File:plus5-img471.png]]</p></li>
 
<li><p>Then choose '''Root filesystem'''</p>
 
<li><p>Then choose '''Root filesystem'''</p>
<p>[[File:media/image472.png|414x169px]]</p></li>
+
<p>[[File:plus5-img472.png]]</p></li>
 
<li><p>Then choose '''usr'''</p>
 
<li><p>Then choose '''usr'''</p>
<p>[[File:media/image473.png|416x273px]]</p></li>
+
<p>[[File:plus5-img473.png]]</p></li>
 
<li><p>Then choose '''local'''</p>
 
<li><p>Then choose '''local'''</p>
<p>[[File:media/image474.png|417x274px]]</p></li>
+
<p>[[File:plus5-img474.png]]</p></li>
 
<li><p>Then choose '''OK'''</p>
 
<li><p>Then choose '''OK'''</p>
<p>[[File:media/image475.png|425x278px]]</p></li>
+
<p>[[File:plus5-img475.png]]</p></li>
 
<li><p>Then choose '''OK'''</p>
 
<li><p>Then choose '''OK'''</p>
<p>[[File:media/image476.png|431x273px]]</p></li>
+
<p>[[File:plus5-img476.png]]</p></li>
 
<li><p>Then choose OK</p>
 
<li><p>Then choose OK</p>
<p>[[File:media/image477.png|454x260px]]</p></li>
+
<p>[[File:plus5-img477.png]]</p></li>
 
<li><p>Then enter the Local folder</p>
 
<li><p>Then enter the Local folder</p>
<p>[[File:media/image478.png|456x258px]]</p></li>
+
<p>[[File:plus5-img478.png]]</p></li>
 
<li><p>Then you can play '''test.mp4''' test video</p>
 
<li><p>Then you can play '''test.mp4''' test video</p>
<p>[[File:media/image479.png|462x262px]]</p></li></ol>
+
<p>[[File:plus5-img479.png]]</p></li></ol>
 
</li>
 
</li>
 
<li><p>When playing the video, you can run the '''vpu_debug.sh''' script under the command line (via SSH or serial port). If there is a print output below, it means that there is a hardware to decode the video</p>
 
<li><p>When playing the video, you can run the '''vpu_debug.sh''' script under the command line (via SSH or serial port). If there is a print output below, it means that there is a hardware to decode the video</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''vpu_debug.sh'''</p>
 
<p>orangepi@orangepi:~$ '''vpu_debug.sh'''</p>
 
<p>[ 1830.938378] rk_vcodec: fdc48100.rkvdec-core:1 session 3573:2 time: 2728 us</p>
 
<p>[ 1830.938378] rk_vcodec: fdc48100.rkvdec-core:1 session 3573:2 time: 2728 us</p>
Line 7,069: Line 9,396:
 
<p>[ 1830.945211] rk_vcodec: fdc38100.rkvdec-core:0 session 3573:2 time: 3331 us</p>
 
<p>[ 1830.945211] rk_vcodec: fdc38100.rkvdec-core:0 session 3573:2 time: 3331 us</p>
 
<p>[ 1830.970563] rk_vcodec: fdc48100.rkvdec-core:1 session 3573:2 time: 2547 us</p>
 
<p>[ 1830.970563] rk_vcodec: fdc48100.rkvdec-core:1 session 3573:2 time: 2547 us</p>
<p>[ 1831.199650] rk_vcodec: fdc38100.rkvdec-core:0 session 3573:2 time: 2703 us</p></li>
+
<p>[ 1831.199650] rk_vcodec: fdc38100.rkvdec-core:0 session 3573:2 time: 2703 us</p>
<li><p>Play '''test.mp4''' video file CPU occupation rates of about '''20%~ 30%'''</p>
+
|}
<p>[[File:media/image480.png|577x126px]]</p></li></ol>
+
</li>
 +
<li><p>Play '''test.mp4''' video file CPU occupation rates of about '''20%~ 30%'''.</p>
 +
<p>[[File:plus5-img480.png]]</p></li></ol>
  
 
<span id="ubuntu22.04-gnome-to-install-ros-2-humble"></span>
 
<span id="ubuntu22.04-gnome-to-install-ros-2-humble"></span>
 +
 
== Ubuntu22.04 Gnome to install ROS 2 Humble ==
 
== Ubuntu22.04 Gnome to install ROS 2 Humble ==
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>You can install ROS2 with '''install_ros.sh''' script</p>
 
<li><p>You can install ROS2 with '''install_ros.sh''' script</p>
<p>orangepi@orangepi:~$ '''install_ros.sh ros2'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''install_ros.sh ros2'''</p>
 +
|}
 +
</li>
 
<li><p>install'''_ros.sh''' script will automatically run the '''ros2 -h''' command after ros2 is installed. If you can see the printing below</p>
 
<li><p>install'''_ros.sh''' script will automatically run the '''ros2 -h''' command after ros2 is installed. If you can see the printing below</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>usage: ros2 [-h] Call `ros2 &lt;command&gt; -h` for more detailed usage. ...</p>
 
<p>usage: ros2 [-h] Call `ros2 &lt;command&gt; -h` for more detailed usage. ...</p>
 +
 +
 
<p>ros2 is an extensible command-line tool for ROS 2.</p>
 
<p>ros2 is an extensible command-line tool for ROS 2.</p>
 +
 +
 
<p>optional arguments:</p>
 
<p>optional arguments:</p>
<p>-h, --help show this help message and exit</p>
+
:<p>-h, --help show this help message and exit</p>
 +
 
 +
 
 
<p>Commands:</p>
 
<p>Commands:</p>
<p>action Various action related sub-commands</p>
+
:<p>action Various action related sub-commands</p>
<p>bag Various rosbag related sub-commands</p>
+
:<p>bag Various rosbag related sub-commands</p>
<p>component Various component related sub-commands</p>
+
:<p>component Various component related sub-commands</p>
<p>daemon Various daemon related sub-commands</p>
+
:<p>daemon Various daemon related sub-commands</p>
<p>doctor Check ROS setup and other potential issues</p>
+
:<p>doctor Check ROS setup and other potential issues</p>
<p>interface Show information about ROS interfaces</p>
+
:<p>interface Show information about ROS interfaces</p>
<p>launch Run a launch file</p>
+
:<p>launch Run a launch file</p>
<p>lifecycle Various lifecycle related sub-commands</p>
+
:<p>lifecycle Various lifecycle related sub-commands</p>
<p>multicast Various multicast related sub-commands</p>
+
:<p>multicast Various multicast related sub-commands</p>
<p>node Various node related sub-commands</p>
+
:<p>node Various node related sub-commands</p>
<p>param Various param related sub-commands</p>
+
:<p>param Various param related sub-commands</p>
<p>pkg Various package related sub-commands</p>
+
:<p>pkg Various package related sub-commands</p>
<p>run Run a package specific executable</p>
+
:<p>run Run a package specific executable</p>
<p>security Various security related sub-commands</p>
+
:<p>security Various security related sub-commands</p>
<p>service Various service related sub-commands</p>
+
:<p>service Various service related sub-commands</p>
<p>topic Various topic related sub-commands</p>
+
:<p>topic Various topic related sub-commands</p>
<p>wtf Use `wtf` as alias to `doctor`</p>
+
:<p>wtf Use `wtf` as alias to `doctor`</p>
<p>Call `ros2 &lt;command&gt; -h` for more detailed usage.</p></li>
+
 
 +
 
 +
:<p>Call `ros2 &lt;command&gt; -h` for more detailed usage.</p>
 +
|}
 +
</li>
 
<li><p>Then you can use the '''test_ros.sh''' script to test whether the ROS 2 is successfully installed. If you can see the printing below, it means that the ROS 2 can run normally</p>
 
<li><p>Then you can use the '''test_ros.sh''' script to test whether the ROS 2 is successfully installed. If you can see the printing below, it means that the ROS 2 can run normally</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi5plus:~$ '''test_ros.sh'''</p>
 
<p>orangepi@orangepi5plus:~$ '''test_ros.sh'''</p>
 
<p>[INFO] [1671174101.200091527] [talker]: Publishing: 'Hello World: 1'</p>
 
<p>[INFO] [1671174101.200091527] [talker]: Publishing: 'Hello World: 1'</p>
Line 7,110: Line 9,461:
 
<p>[INFO] [1671174102.204196299] [listener]: I heard: [Hello World: 2]</p>
 
<p>[INFO] [1671174102.204196299] [listener]: I heard: [Hello World: 2]</p>
 
<p>[INFO] [1671174103.199580322] [talker]: Publishing: 'Hello World: 3'</p>
 
<p>[INFO] [1671174103.199580322] [talker]: Publishing: 'Hello World: 3'</p>
<p>[INFO] [1671174103.204019965] [listener]: I heard: [Hello World: 3]</p></li>
+
<p>[INFO] [1671174103.204019965] [listener]: I heard: [Hello World: 3]</p>
 +
|}
 +
</li>
 
<li><p>Run the following command to open rviz2</p>
 
<li><p>Run the following command to open rviz2</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''source /opt/ros/humble/setup.bash'''</p>
 
<p>orangepi@orangepi:~$ '''source /opt/ros/humble/setup.bash'''</p>
 
<p>orangepi@orangepi:~$ '''ros2 run rviz2 rviz2'''</p>
 
<p>orangepi@orangepi:~$ '''ros2 run rviz2 rviz2'''</p>
 +
|}
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image481.png|576x324px|Screenshot from 2023-05-22 15-17-44]]
+
[[File:plus5-img481.png]]
  
 
</div></li>
 
</div></li>
 
<li><p>Reference document</p>
 
<li><p>Reference document</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>'''http://docs.ros.org/en/humble/index.html'''</p>
 
<p>'''http://docs.ros.org/en/humble/index.html'''</p>
<p>[http://docs.ros.org/en/galactic/Tutorials.html '''http://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html''']</p></li></ol>
+
<p>'''http://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html'''</p>
 +
|}
 +
</li></ol>
  
 
<span id="set-the-chinese-environment-and-the-method-of-installing-the-chinese-input-method"></span>
 
<span id="set-the-chinese-environment-and-the-method-of-installing-the-chinese-input-method"></span>
 +
 
== Set the Chinese environment and the method of installing the Chinese input method ==
 
== Set the Chinese environment and the method of installing the Chinese input method ==
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>Open the settings first</p>
 
<li><p>Open the settings first</p>
<p>[[File:media/image448.png|243x181px]]</p></li>
+
<p>[[File:plus5-img448.png]]</p></li>
 
<li><p>Then find the '''Region &amp; Language''' option, and then click '''Manage Installed Languages''' options</p>
 
<li><p>Then find the '''Region &amp; Language''' option, and then click '''Manage Installed Languages''' options</p>
<p>[[File:media/image482.png|576x352px]]</p></li>
+
<p>[[File:plus5-img482.png]]</p></li>
 
<li><p>Then use the left mouse button to select '''<span class="mark">Chinese (China)</span>''' and hold it down, and then drag it up to the beginning. The display after the dragging is shown in the figure below:</p>
 
<li><p>Then use the left mouse button to select '''<span class="mark">Chinese (China)</span>''' and hold it down, and then drag it up to the beginning. The display after the dragging is shown in the figure below:</p>
<p>[[File:media/image483.png|575x428px]]</p></li>
+
<p>[[File:plus5-img483.png]]</p></li>
 
<li><p>Then select the '''Apply System-Wide''' to apply the Chinese settings to the entire system</p>
 
<li><p>Then select the '''Apply System-Wide''' to apply the Chinese settings to the entire system</p>
<p>[[File:media/image484.png|576x427px]]</p></li>
+
<p>[[File:plus5-img484.png]]</p></li>
<li><p>'''Then restart the linux system to make the configuration effective'''</p></li>
+
<li><p>'''<span style="color:#FF0000">Then restart the linux system to make the configuration effective</span>'''</p></li>
 
<li><p>After re -entering the system, please choose not to '''<span class="mark">ask me again</span>''' at the interface below, and then determine whether the standard folder should be updated to Chinese according to your preference</p>
 
<li><p>After re -entering the system, please choose not to '''<span class="mark">ask me again</span>''' at the interface below, and then determine whether the standard folder should be updated to Chinese according to your preference</p>
<p>[[File:media/image485.png|340x276px]]</p></li>
+
<p>[[File:plus5-img485.png]]</p></li>
 
<li><p>Then you can see that the desktop is displayed as Chinese</p>
 
<li><p>Then you can see that the desktop is displayed as Chinese</p>
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image486.png|576x324px|截图 2023-03-08 09-34-07]]
+
[[File:plus5-img486.png]]
  
 
</div></li>
 
</div></li>
 
<li><p>Then open the Fcitx5 configuration program</p>
 
<li><p>Then open the Fcitx5 configuration program</p>
<p>[[File:media/image487.png|576x326px]]</p></li>
+
<p>[[File:plus5-img487.png|576x326px]]</p></li>
 
<li><p>Then choose to use Pinyin input method</p>
 
<li><p>Then choose to use Pinyin input method</p>
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image488.jpeg|576x429px|C:\Users\orangepi\Desktop\用户手册插图\Pi5 Plus\未标题-6.jpg未标题-6]]
+
[[File:plus5-img488.png]]
  
 
</div></li>
 
</div></li>
 
<li><p>The interface after selecting is shown below, then click OK</p>
 
<li><p>The interface after selecting is shown below, then click OK</p>
<p>[[File:media/image489.png|504x373px]]</p></li>
+
<p>[[File:plus5-img489.png]]</p></li>
 
<li><p>Then we can open the Chinese input method of '''Geany''' test, and the way to open is shown in the figure below</p>
 
<li><p>Then we can open the Chinese input method of '''Geany''' test, and the way to open is shown in the figure below</p>
<p>[[File:media/image490.png|575x325px]]</p></li>
+
<p>[[File:plus5-img490.png]]</p></li>
 
<li><p>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</p>
 
<li><p>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</p>
<p>[[File:media/image491.png|576x364px]]</p></li></ol>
+
<p>[[File:plus5-img491.png]]</p></li></ol>
  
 
<span id="orange-pi-os-arch-system-use-instructions"></span>
 
<span id="orange-pi-os-arch-system-use-instructions"></span>
Line 7,166: Line 9,529:
 
== Orange Pi OS Arch system adaptation situation ==
 
== Orange Pi OS Arch system adaptation situation ==
  
{| class="wikitable"
+
{| class="wikitable" style="width:800px;"
 
|-
 
|-
 
| style="text-align: left;"| '''Function'''
 
| style="text-align: left;"| '''Function'''
 
| '''OPi OS Arch Gnome'''
 
| '''OPi OS Arch Gnome'''
| style="text-align: left;"| '''OPi OS Arch Xfce(To be released)'''
+
| style="text-align: left;"| '''OPi OS Arch Xfce(<span style="color:#FF0000">To be released</span>)'''
 
|-
 
|-
 
| style="text-align: left;"| '''HDMI TX1 video'''
 
| style="text-align: left;"| '''HDMI TX1 video'''
Line 7,353: Line 9,716:
 
|-
 
|-
 
| style="text-align: left;"| '''NPU'''
 
| style="text-align: left;"| '''NPU'''
| '''NO'''
+
| '''<span style="color:#FF0000">NO</span>'''
| style="text-align: left;"| '''NO'''
+
| style="text-align: left;"| '''<span style="color:#FF0000">NO</span>'''
 
|-
 
|-
 
| style="text-align: left;"| '''REBOOT Command restart'''
 
| style="text-align: left;"| '''REBOOT Command restart'''
Line 7,377: Line 9,740:
 
|-
 
|-
 
| style="text-align: left;"| '''Chromium Hard solution video'''
 
| style="text-align: left;"| '''Chromium Hard solution video'''
| '''NO'''
+
| '''<span style="color:#FF0000">NO</span>'''
| style="text-align: left;"| '''NO'''
+
| style="text-align: left;"| '''<span style="color:#FF0000">NO</span>'''
 
|-
 
|-
 
| style="text-align: left;"| '''MPV Hard solution video'''
 
| style="text-align: left;"| '''MPV Hard solution video'''
Line 7,386: Line 9,749:
  
 
<span id="how-to-use-the-m.2-e-key-pcie-wifi6bluetooth-module"></span>
 
<span id="how-to-use-the-m.2-e-key-pcie-wifi6bluetooth-module"></span>
 +
 
== How to use the M.2 E-Key PCIE WIFI6+Bluetooth module ==
 
== How to use the M.2 E-Key PCIE WIFI6+Bluetooth module ==
  
 
# First of all, you need to buy a PCIE WIFI6+Bluetooth module
 
# First of all, you need to buy a PCIE WIFI6+Bluetooth module
  
{| class="wikitable"
+
::{| class="wikitable" style="width:800px;"
 
|-
 
|-
| '''S erial num ber'''
+
| '''Serial number'''
 
| '''model'''
 
| '''model'''
 
| '''Physical picture'''
 
| '''Physical picture'''
Line 7,402: Line 9,766:
 
'''(PCIE+USB Port)'''
 
'''(PCIE+USB Port)'''
  
| [[File:media/image230.p%20ng]]
+
| [[File:plus5-img230.png]]
 
| '''Debian'''
 
| '''Debian'''
  
Line 7,409: Line 9,773:
 
'''OpenWRT'''
 
'''OpenWRT'''
  
'''OPi OS Arch'''
+
'''<span style="color:#FF0000">OPi OS Arch</span>'''
  
 
|-
 
|-
Line 7,417: Line 9,781:
 
'''(PCIE+USB Port)'''
 
'''(PCIE+USB Port)'''
  
| [[File:media%20/image231.png]]{w idth=“1.06875in” height=“1.45in”}
+
| [[File:plus5-img231.png]]
 
| '''Debian'''
 
| '''Debian'''
  
Line 7,424: Line 9,788:
 
'''OpenWRT'''
 
'''OpenWRT'''
  
'''OPi OS Arch'''
+
'''<span style="color:#FF0000">OPi OS Arch</span>'''
  
 
|-
 
|-
Line 7,432: Line 9,796:
 
'''(PCIE+USB Port)'''
 
'''(PCIE+USB Port)'''
  
| [[File:media/image232.p%20ng]]
+
| [[File:plus5-img232.png]]
 
| '''Debian'''
 
| '''Debian'''
  
Line 7,439: Line 9,803:
 
'''Android12'''
 
'''Android12'''
  
'''OPi OS Arch'''
+
'''<span style="color:#FF0000">OPi OS Arch</span>'''
  
 
'''OPi OS Droid'''
 
'''OPi OS Droid'''
  
 +
|}
 +
 +
::{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''Pay attention to RTL8852BE, please do not buy the module shown in the figure below, there will be problems after testing.'''</big>
 +
 +
[[File:plus5-img232-10.png|center]]
 
|}
 
|}
  
 
<ol start="2" style="list-style-type: decimal;">
 
<ol start="2" style="list-style-type: decimal;">
 
<li><p>Then insert the WiFi module into the M.2 E-Key interface of the development board and fix it</p>
 
<li><p>Then insert the WiFi module into the M.2 E-Key interface of the development board and fix it</p>
<p>[[File:media/image233.png|403x181px]]</p></li>
+
<p>[[File:plus5-img233.png]]</p></li>
<li><p>Then open the configuration of the WIFI module in the OPi OS Arch system, and the steps are shown below:</p>
+
<li><p>If everything is normal after the system starts, use the following command to see the WIFI device nodea</p>
<ol style="list-style-type: lower-alpha;">
+
{| class="wikitable" style="width:800px;"  
<li><p>First add a line configuration to the &gt; '''/boot/extlinux/extlinux.conf'''.</p>
+
|-
<p>[orangepi@orangepi ~]$ '''sudo vim /boot/extlinux/extlinux.conf'''</p>
+
|
<p>LABEL Orange Pi</p>
+
[orangepi@orangepi ~]$ '''ip a'''
<p>LINUX /Image</p>
+
 
<p>FDT /dtbs/rockchip/rk3588-orangepi-5-plus.dtb</p>
+
......
<p>'''FDTOVERLAYS /dtbs/rockchip/overlay/rk3588-wifi-pcie.dtbo #What needs to be added'''</p></li>
+
 
<li><p>'''Then restart the OPi OS Arch system'''</p></li></ol>
+
4: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
 +
 
 +
:link/ether 38:7a:0e:e3:80:05 brd ff:ff:ff:ff:ff:ff
 +
 
 +
:inet 192.168.1.237/24 brd 192.168.1.255 scope global dynamic noprefixroute wlan0
 +
 
 +
::valid_lft 42938sec preferred_lft 42938sec
 +
 
 +
:inet6 fe80::a098:5942:16e:e817/64 scope link noprefixroute
 +
 
 +
::valid_lft forever preferred_lft forever
 +
|}
 
</li>
 
</li>
<li><p>If everything is normal after restarting the system, you can see the WiFi device node with the following command. If you can't see it, please check if there is a problem with the previous configuration.</p>
 
<p>[orangepi@orangepi ~]$ '''ip addr show wlan0'''</p>
 
<p>......</p>
 
<p>4: '''wlan0''': &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc noqueue state UP group default qlen 1000</p>
 
<p>link/ether 38:7a:0e:e3:80:05 brd ff:ff:ff:ff:ff:ff</p>
 
<p>inet 192.168.1.237/24 brd 192.168.1.255 scope global dynamic noprefixroute wlan0</p>
 
<p>valid_lft 42938sec preferred_lft 42938sec</p>
 
<p>inet6 fe80::a098:5942:16e:e817/64 scope link noprefixroute</p>
 
<p>valid_lft forever preferred_lft forever</p></li>
 
 
<li><p>The steps connected to the wifi are shown below:</p>
 
<li><p>The steps connected to the wifi are shown below:</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
 
<li><p>First click the area in the upper right corner of the desktop</p>
 
<li><p>First click the area in the upper right corner of the desktop</p>
<p>[[File:media/image492.png|252x160px]]</p></li>
+
<p>[[File:plus5-img492.png]]</p></li>
 
<li><p>Then choose Wi-Fi</p>
 
<li><p>Then choose Wi-Fi</p>
<p>[[File:media/image493.png|337x215px]]</p></li>
+
<p>[[File:plus5-img493.png]]</p></li>
 
<li><p>Then select the WIFI you want to connect</p>
 
<li><p>Then select the WIFI you want to connect</p>
<p>[[File:media/image494.png|466x249px]]</p></li>
+
<p>[[File:plus5-img494.png]]</p></li>
 
<li><p>Then enter the password of the wifi, and click '''Connect'''</p>
 
<li><p>Then enter the password of the wifi, and click '''Connect'''</p>
<p>[[File:media/image495.png|284x188px]]</p></li>
+
<p>[[File:plus5-img495.png]]</p></li>
 
<li><p>Then enter the following interface to see the wifi connection</p>
 
<li><p>Then enter the following interface to see the wifi connection</p>
<p>[[File:media/image496.png|544x383px]]</p></li></ol>
+
<p>[[File:plus5-img496.png]]</p></li></ol>
 
</li>
 
</li>
 
<li><p>Example of Bluetooth use:</p>
 
<li><p>Example of Bluetooth use:</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
 
<li><p>First click the area in the upper right corner of the desktop</p>
 
<li><p>First click the area in the upper right corner of the desktop</p>
<p>[[File:media/image492.png|272x173px]]</p></li>
+
<p>[[File:plus5-img492.png]]</p></li>
 
<li><p>Then open the settings</p>
 
<li><p>Then open the settings</p>
<p>[[File:media/image497.png|288x238px]]</p></li>
+
<p>[[File:plus5-img497.png]]</p></li>
<li><p>Then select Bluetooth in the settings, and make sure that the &gt; switch button in the upper right corner of the Bluetooth is &gt; opened</p>
+
<li><p>Then select Bluetooth in the settings, and make sure that the switch button in the upper right corner of the Bluetooth is opened</p>
<p>[[File:media/image498.png|457x301px]]</p></li>
+
<p>[[File:plus5-img498.png]]</p></li>
<li><p>Then choose the Bluetooth device you want to configure the &gt; right, such as pairing with Android phones</p>
+
<li><p>Then choose the Bluetooth device you want to configure the right, such as pairing with Android phones</p>
<p>[[File:media/image499.png|451x296px]]</p></li>
+
<p>[[File:plus5-img499.png]]</p></li>
<li><p>Then click '''Confirm''', the mobile phone also needs to confirm &gt; the pairing</p>
+
<li><p>Then click '''Confirm''', the mobile phone also needs to confirm the pairing</p>
<p>[[File:media/image500.png|221x142px]]</p></li>
+
<p>[[File:plus5-img500.png]]</p></li>
 
<li><p>The display of the Bluetooth and Android phone is shown below:</p>
 
<li><p>The display of the Bluetooth and Android phone is shown below:</p>
<p>[[File:media/image501.png|451x296px]]</p></li>
+
<p>[[File:plus5-img501.png]]</p></li>
<li><p>Then click the paired Bluetooth device to pop up the operating &gt; interface shown in the figure below</p>
+
<li><p>Then click the paired Bluetooth device to pop up the operating interface shown in the figure below</p>
<p>[[File:media/image502.png|480x315px]]</p></li>
+
<p>[[File:plus5-img502.png]]</p></li>
<li><p>Click '''Send Files...'''you can send a file to the phone</p></li></ol>
+
<li><p>Click '''Send Files...''' you can send a file to the phone</p></li>
</li></ol>
 
 
 
[[File:media/image503.png|525x297px]]
 
  
 +
[[File:plus5-img503.png]]
 +
</ol>
 
<ol style="list-style-type: lower-roman;">
 
<ol style="list-style-type: lower-roman;">
<li><p>The schematic diagram of the Bluetooth sent pictures to the phone is &gt; shown below:</p>
+
<li><p>The schematic diagram of the Bluetooth sent pictures to the phone is shown below:</p>
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image504.png|576x324px|Screenshot from 2023-04-21 04-17-07]]
+
[[File:plus5-img504.png]]
  
 
</div></li></ol>
 
</div></li></ol>
 +
</li></ol>
 +
<span id="how-to-use-10.1-inch-mipi-lcd-screen-1"></span>
  
<span id="how-to-use-10.1-inch-mipi-lcd-screen-1"></span>
 
 
== How to use 10.1 inch MIPI LCD screen ==
 
== How to use 10.1 inch MIPI LCD screen ==
  
Line 7,519: Line 9,893:
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
 
<li><p>10.1 -inch MIPI LCD display+touch screen (common to OPI5/OPI5B)</p>
 
<li><p>10.1 -inch MIPI LCD display+touch screen (common to OPI5/OPI5B)</p>
<p>[[File:media/image417.png|308x237px]]</p></li>
+
<p>[[File:plus5-img417.png]]</p></li>
 
<li><p>Screen divert+31pin to 40pin exhaust</p>
 
<li><p>Screen divert+31pin to 40pin exhaust</p>
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image418.png|160x139px|DD9A8F44-0D8F-4f06-9473-B539DEED850C]]
+
[[File:plus5-img418.png]]
  
 
</div></li>
 
</div></li>
Line 7,529: Line 9,903:
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image419.png|421x39px|C2164119-6EC3-49ae-9A95-BE323F51FAE1]]
+
[[File:plus5-img419.png]]
  
 
</div></li>
 
</div></li>
 
<li><p>12pin touch screen line</p>
 
<li><p>12pin touch screen line</p>
<p>[[File:media/image420.png|300x44px]]</p></li></ol>
+
<p>[[File:plus5-img420.png]]</p></li></ol>
 
</li>
 
</li>
<li><p>According to the figure below, the 12PIN touch screen row, 31PIN to 40Pin line, and 30Pin MIPI cables get on the screen dial board. Pay attention to '''the blue insulation of the touch screen row line face to down'''. If an error is connected, it will cause no display or unable to touch..</p>
+
<li><p>According to the figure below, the 12PIN touch screen row, 31PIN to 40Pin line, and 30Pin MIPI cables get on the screen dial board. Pay attention to '''<span style="color:#FF0000">the blue insulation of the touch screen row line face to down</span>'''. If an error is connected, it will cause no display or unable to touch..</p>
<p>[[File:media/image421.png|574x142px]]</p></li>
+
<p>[[File:plus5-img421.png]]</p></li>
<li><p>Place the connected rotor connected to the puzzle on the MIPI LCD screen according to the figure below, and connect the MIPI LCD screen and the rotary board through 31PIN to 40Pin row</p></li></ol>
+
<li><p>Place the connected rotor connected to the puzzle on the MIPI LCD screen according to the figure below, and connect the MIPI LCD screen and the rotary board through 31PIN to 40Pin row</p></li>
 
 
[[File:media/image422.png|382x563px]]
 
  
 +
[[File:plus5-img422.png]]
 +
</ol>
 
<ol start="4" style="list-style-type: decimal;">
 
<ol start="4" style="list-style-type: decimal;">
 
<li><p>Then connect the touch screen and the rotor board through the 12PIN touch screen line, pay attention to the orientation of the insulating surface</p>
 
<li><p>Then connect the touch screen and the rotor board through the 12PIN touch screen line, pay attention to the orientation of the insulating surface</p>
<p>[[File:media/image423.png|246x156px]]</p></li>
+
<p>[[File:plus5-img423.png]]</p></li>
 
<li><p>Finally connect to the LCD interface of the development board through the 30PIN MIPI duct.</p>
 
<li><p>Finally connect to the LCD interface of the development board through the 30PIN MIPI duct.</p>
<p>[[File:media/image424.png|363x202px]]</p>
+
<p>[[File:plus5-img424.png]]</p>
<p>'''Note that the touch interface below is not used for the LCD MIPI screen. It is currently a spare interface and cannot be used.'''</p>
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
<p>[[File:media/image425.png|334x70px]]</p></li></ol>
+
|-
 +
|
 +
<big><p>'''Note that the touch interface below is not used for the LCD MIPI screen. It is currently a spare interface and cannot be used.'''</p></big>
 +
 
 +
<p>[[File:plus5-img425.png|center]]</p>
 +
|}
 +
</li></ol>
  
 
<span id="how-to-open-10.1--inch-mipi-lcd-screen-configuration"></span>
 
<span id="how-to-open-10.1--inch-mipi-lcd-screen-configuration"></span>
 +
 
=== How to open 10.1 -inch MIPI LCD screen configuration ===
 
=== How to open 10.1 -inch MIPI LCD screen configuration ===
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>The position of the interface of the MIPI LCD screen on the development board is shown in the figure below</p>
 
<li><p>The position of the interface of the MIPI LCD screen on the development board is shown in the figure below</p>
<p>[[File:media/image426.png|575x103px]]</p></li>
+
<p>[[File:plus5-img426.png]]</p></li>
 
<li><p>OPi OS Arch image default is not to open the mipi lcd screen configuration. If you need to use the mipi lcd screen, you need to open it manually. The method of opening the mipi lcd configuration is shown below:</p>
 
<li><p>OPi OS Arch image default is not to open the mipi lcd screen configuration. If you need to use the mipi lcd screen, you need to open it manually. The method of opening the mipi lcd configuration is shown below:</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li><p>First add the following configuration &gt; in'''/boot/extlinux/extlinux.conf'''</p>
+
<li><p>First add the following configuration in'''/boot/extlinux/extlinux.conf'''</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>[orangepi@orangepi ~]$ '''sudo vim /boot/extlinux/extlinux.conf'''</p>
 
<p>[orangepi@orangepi ~]$ '''sudo vim /boot/extlinux/extlinux.conf'''</p>
 
<p>LABEL Orange Pi</p>
 
<p>LABEL Orange Pi</p>
 
<p>LINUX /Image</p>
 
<p>LINUX /Image</p>
 
<p>FDT /dtbs/rockchip/rk3588-orangepi-5-plus.dtb</p>
 
<p>FDT /dtbs/rockchip/rk3588-orangepi-5-plus.dtb</p>
<p>'''FDTOVERLAYS /dtbs/rockchip/overlay/rk3588-opi5plus-lcd.dtbo #The configuration that needs to be added'''</p></li>
+
<p>'''<span style="color:#FF0000">FDTOVERLAYS /dtbs/rockchip/overlay/rk3588-opi5plus-lcd.dtbo #The configuration that needs to be added</span>'''</p>
<li><p>'''Then restart the OPi OS Arch system'''</p></li></ol>
+
|}
 
</li>
 
</li>
<li><p>After restarting, you can see the display of the LCD screen as shown below (default vertical screen):</p></li></ol>
+
<li><p>'''<span style="color:#FF0000">Then restart the OPi OS Arch system</span>'''</p></li></ol>
 +
</li>
 +
<li><p>After restarting, you can see the display of the LCD screen as shown below (default vertical screen):</p></li>
  
[[File:media/image505.png|162x242px]]
+
[[File:plus5-img505.png]]
 +
</ol>
 +
<span id="method-of-rotating-display-and-touch-direction"></span>
  
<span id="method-of-rotating-display-and-touch-direction"></span>
 
 
=== Method of rotating display and touch direction ===
 
=== Method of rotating display and touch direction ===
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>First click the area in the upper right corner of the desktop</p>
 
<li><p>First click the area in the upper right corner of the desktop</p>
<p>[[File:media/image492.png|193x123px]]</p></li>
+
<p>[[File:plus5-img492.png]]</p></li>
 
<li><p>Then open the settings</p>
 
<li><p>Then open the settings</p>
<p>[[File:media/image497.png|193x159px]]</p></li>
+
<p>[[File:plus5-img497.png]]</p></li>
 
<li><p>Then choose '''Displays'''</p>
 
<li><p>Then choose '''Displays'''</p>
<p>[[File:media/image506.png|424x279px]]</p></li>
+
<p>[[File:plus5-img506.png]]</p></li>
 
<li><p>Then select the direction you want to rotate in the '''Orientation''' of '''Displays'''</p>
 
<li><p>Then select the direction you want to rotate in the '''Orientation''' of '''Displays'''</p>
<p>[[File:media/image507.png|426x282px]]</p></li>
+
<p>[[File:plus5-img507.png]]</p></li>
 
<li><p>Then choose '''Apply'''</p>
 
<li><p>Then choose '''Apply'''</p>
<p>[[File:media/image508.png|425x282px]]</p></li>
+
<p>[[File:plus5-img508.png]]</p></li>
 
<li><p>Then you can see that the screen has been rotated. At this time, you need to choose '''Keep Changes''' to determine the rotation</p>
 
<li><p>Then you can see that the screen has been rotated. At this time, you need to choose '''Keep Changes''' to determine the rotation</p>
<p>[[File:media/image509.png|259x130px]]</p></li>
+
<p>[[File:plus5-img509.png]]</p></li>
 
<li><p>The display of the LCD screen after 90 degrees is shown below:</p>
 
<li><p>The display of the LCD screen after 90 degrees is shown below:</p>
<p>[[File:media/image510.png|359x229px]]</p></li>
+
<p>[[File:plus5-img510.png]]</p></li>
 
<li><p>'''The touch function of the OPi OS Arch system LCD screen will rotate with the rotation of the display direction without other settings.'''</p></li></ol>
 
<li><p>'''The touch function of the OPi OS Arch system LCD screen will rotate with the rotation of the display direction without other settings.'''</p></li></ol>
  
Line 7,596: Line 9,983:
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
 
<li><p>OV13850 camera of 13 million MIPI interface</p>
 
<li><p>OV13850 camera of 13 million MIPI interface</p>
<p>[[File:media/image23.png|215x121px]]</p></li>
+
<p>[[File:plus5-img23.png]]</p></li>
 
<li><p>13 million MIPI interface OV13855 camera</p>
 
<li><p>13 million MIPI interface OV13855 camera</p>
<p>[[File:media/image24.png|189x112px]]</p>
+
<p>[[File:plus5-img24.png]]</p></li></ol>
<p>The rotary board used by OV13850 and OV13855 cameras is the same as the FPC cable, but the two cameras are different from the position on the rotary board. The FPC lines are shown in the figure below. Please note that the FPC line is directed. It is marked that the '''TO MB''' must be inserted into the camera interface of the development board. It is marked that the end of '''TO CAMERA''' needs to be inserted on the camera transfer board。</p></li></ol>
+
<p>The rotary board used by OV13850 and OV13855 cameras is the same as the FPC cable, but the two cameras are different from the position on the rotary board. The FPC lines are shown in the figure below. Please note that the FPC line is directed. It is marked that the '''TO MB''' must be inserted into the camera interface of the development board. It is marked that the end of '''TO CAMERA''' needs to be inserted on the camera transfer board</p>
  
[[File:media/image436.png|370x77px]]
+
[[File:plus5-img436.png]]
  
 
There are a total of 3 cameras on the camera to connect to the board, which can only be used at the same time, as shown in the figure below, of which:
 
There are a total of 3 cameras on the camera to connect to the board, which can only be used at the same time, as shown in the figure below, of which:
Line 7,608: Line 9,995:
 
<li><p>'''No. 1 interface is connected to the OV13850 camera'''</p></li>
 
<li><p>'''No. 1 interface is connected to the OV13850 camera'''</p></li>
 
<li><p>'''No. 2 interface connected OV13855 camera'''</p></li>
 
<li><p>'''No. 2 interface connected OV13855 camera'''</p></li>
<li><p>No. 3 interface is not used, just ignore it.</p></li></ol>
+
<li><p>No. 3 interface is not used, just ignore it.</p></li>
 
 
[[File:media/image437.png|288x172px]]
 
  
 +
[[File:plus5-img437.png]]
 +
</ol>
 
Orange Pi 5 Plus development board has a total of 1 camera interface, which is shown below:
 
Orange Pi 5 Plus development board has a total of 1 camera interface, which is shown below:
  
[[File:media/image438.png|367x85px]]
+
[[File:plus5-img438.png]]
  
 
The method of the camera inserted on the development board interface is shown below:
 
The method of the camera inserted on the development board interface is shown below:
  
[[File:media/image439.png|332x154px]]
+
[[File:plus5-img439.png]]
  
 
After connecting the camera to the development board, we can use the following method to test the next camera:
 
After connecting the camera to the development board, we can use the following method to test the next camera:
  
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li><p>First add the following configuration in &gt; '''/boot/extlinux/extlinux.conf'''</p>
+
<li><p>First add the following configuration in '''/boot/extlinux/extlinux.conf'''</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>[orangepi@orangepi ~]$ '''sudo vim /boot/extlinux/extlinux.conf'''</p>
 
<p>[orangepi@orangepi ~]$ '''sudo vim /boot/extlinux/extlinux.conf'''</p>
 
<p>LABEL Orange Pi</p>
 
<p>LABEL Orange Pi</p>
 
<p>LINUX /Image</p>
 
<p>LINUX /Image</p>
 
<p>FDT /dtbs/rockchip/rk3588-orangepi-5-plus.dtb</p>
 
<p>FDT /dtbs/rockchip/rk3588-orangepi-5-plus.dtb</p>
<p>'''FDTOVERLAYS /dtbs/rockchip/overlay/rk3588-opi5plus-ov13850.dtbo'''</p>
+
<p>'''<span style="color:#FF0000">FDTOVERLAYS /dtbs/rockchip/overlay/rk3588-opi5plus-ov13850.dtbo</span>'''</p>
<p>The red font demonstrates the configuration of the camera interface '''ov13850'''. The other configurations are shown in the table below, and the corresponding DTBO configuration can be added behind '''FDTOVERLAYS'''</p></li></ol>
+
|}
 +
<p>The red font demonstrates the configuration of the camera interface '''ov13850'''. The other configurations are shown in the table below, and the corresponding DTBO configuration can be added behind '''<span style="color:#FF0000">FDTOVERLAYS</span>'''.</p></li>
  
{| class="wikitable"
+
{| class="wikitable" style="width:800px;"
 
|-
 
|-
 
| style="text-align: left;"| '''Camera'''
 
| style="text-align: left;"| '''Camera'''
Line 7,642: Line 10,033:
 
| style="text-align: left;"| '''/dtbs/rockchip/overlay/rk3588-opi5plus-ov13855.dtbo'''
 
| style="text-align: left;"| '''/dtbs/rockchip/overlay/rk3588-opi5plus-ov13855.dtbo'''
 
|}
 
|}
 
+
</ol>
 
<ol start="2" style="list-style-type: lower-alpha;">
 
<ol start="2" style="list-style-type: lower-alpha;">
<li><p>'''Then restart the OPi OS Arch system'''</p></li>
+
<li><p>'''<span style="color:#FF0000">Then restart the OPi OS Arch system</span>'''</p></li>
 
<li><p>Then open a terminal in the desktop system and run the script below</p>
 
<li><p>Then open a terminal in the desktop system and run the script below</p>
<p>orangepi@orangepi:~$ '''test_camera.sh'''</p></li>
+
{| class="wikitable" style="width:800px;"
<li><p>Then you can see the preview of the camera</p>
+
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''test_camera.sh'''</p>
 +
|}
 +
</li>
 +
<li><p>Then you can see the preview of the camera</p>
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image511.png|576x324px|Screenshot from 2023-04-20 17-16-08]]
+
[[File:plus5-img511.png]]
  
 
</div></li></ol>
 
</div></li></ol>
  
 
<span id="set-the-chinese-environment-and-the-method-of-installing-the-chinese-input-method-1"></span>
 
<span id="set-the-chinese-environment-and-the-method-of-installing-the-chinese-input-method-1"></span>
 +
 
== Set the Chinese environment and the method of installing the Chinese input method ==
 
== Set the Chinese environment and the method of installing the Chinese input method ==
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>First click the area in the upper right corner of the desktop</p>
 
<li><p>First click the area in the upper right corner of the desktop</p>
<p>[[File:media/image492.png|217x138px]]</p></li>
+
<p>[[File:plus5-img492.png]]</p></li>
 
<li><p>Then open the settings</p>
 
<li><p>Then open the settings</p>
<p>[[File:media/image512.png|259x196px]]</p></li>
+
<p>[[File:plus5-img512.png]]</p></li>
 
<li><p>Then find the '''Region &amp; Language''' option</p>
 
<li><p>Then find the '''Region &amp; Language''' option</p>
<p>[[File:media/image513.png|394x260px]]</p></li>
+
<p>[[File:plus5-img513.png]]</p></li>
 
<li><p>Then choose '''Language'''</p>
 
<li><p>Then choose '''Language'''</p>
<p>[[File:media/image514.png|401x264px]]</p></li>
+
<p>[[File:plus5-img514.png]]</p></li>
 
<li><p>Then select Chinese</p>
 
<li><p>Then select Chinese</p>
<p>[[File:media/image515.png|443x290px]]</p></li>
+
<p>[[File:plus5-img515.png]]</p></li>
 
<li><p>then click '''Select'''</p>
 
<li><p>then click '''Select'''</p>
<p>[[File:media/image516.png|443x292px]]</p></li>
+
<p>[[File:plus5-img516.png]]</p></li>
 
<li><p>Then click '''Logout...''' log in to the system, and then log in to the system</p>
 
<li><p>Then click '''Logout...''' log in to the system, and then log in to the system</p>
<p>[[File:media/image517.png|395x260px]]</p></li>
+
<p>[[File:plus5-img517.png]]</p></li>
 
<li><p>Then you can see that the desktop is displayed as Chinese</p>
 
<li><p>Then you can see that the desktop is displayed as Chinese</p>
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image518.png|498x280px|截图 2023-04-20 20-20-06]]
+
[[File:plus5-img518.png]]
  
 
</div></li>
 
</div></li>
 
<li><p>Then install '''fcitx-im''' and '''fcitx-configtool'''</p>
 
<li><p>Then install '''fcitx-im''' and '''fcitx-configtool'''</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>[orangepi@orangepi ~]$ '''sudo pacman -S fcitx-im fcitx-configtool'''</p>
 
<p>[orangepi@orangepi ~]$ '''sudo pacman -S fcitx-im fcitx-configtool'''</p>
 
<p>:: There are 3 members in the group fcitx-im:</p>
 
<p>:: There are 3 members in the group fcitx-im:</p>
 
<p>:: Software warehouse Community</p>
 
<p>:: Software warehouse Community</p>
<p>1) fcitx 2) fcitx-qt5 3) fcitx-qt6</p>
+
:<p>1) fcitx 2) fcitx-qt5 3) fcitx-qt6</p>
<p>Enter a selection (default = all selected): '''1'''</p></li>
+
 
 +
 
 +
<p>Enter a selection (default = all selected): '''1'''</p>
 +
|}
 +
</li>
 
<li><p>Then open the Fcitx configuration program</p>
 
<li><p>Then open the Fcitx configuration program</p>
<p>[[File:media/image519.png|395x223px]]</p>
+
<p>[[File:plus5-img519.png]]</p>
<p>[[File:media/image520.png|396x223px]]</p></li>
+
<p>[[File:plus5-img520.png]]</p></li>
 
<li><p>Then add '''<span class="mark">Google Pinyin</span>''' input method</p>
 
<li><p>Then add '''<span class="mark">Google Pinyin</span>''' input method</p>
<p>[[File:media/image521.png|248x228px]]</p>
+
<p>[[File:plus5-img521.png]]</p>
<p>[[File:media/image522.png|372x252px]]</p></li>
+
<p>[[File:plus5-img522.png]]</p></li>
 
<li><p>Then we can open a terminal test in the Chinese input method. After opening the terminal, if the English input method is still in English, we can switch to the Chinese input method through the '''Ctrl+Space''' shortcut keys, and then you can enter Chinese</p>
 
<li><p>Then we can open a terminal test in the Chinese input method. After opening the terminal, if the English input method is still in English, we can switch to the Chinese input method through the '''Ctrl+Space''' shortcut keys, and then you can enter Chinese</p>
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image523.png|459x258px|截图 2023-04-20 20-38-24]]
+
[[File:plus5-img523.png]]
  
 
</div></li></ol>
 
</div></li></ol>
  
 
<span id="hdmi-in-test-method-1"></span>
 
<span id="hdmi-in-test-method-1"></span>
 +
 
== HDMI IN test method ==
 
== HDMI IN test method ==
  
<ol start="6" style="list-style-type: decimal;">
+
<ol start="1" style="list-style-type: decimal;">
 
<li><p>The position of the development board HDMI In interface is shown below:</p>
 
<li><p>The position of the development board HDMI In interface is shown below:</p>
<p>[[File:media/image265.png|351x112px]]</p></li>
+
<p>[[File:plus5-img265.png]]</p></li>
 
<li><p>First use the HDMI to HDMI line shown below to output the HDMI output of other devices to the HDMI In interface of the development board</p>
 
<li><p>First use the HDMI to HDMI line shown below to output the HDMI output of other devices to the HDMI In interface of the development board</p>
<p>[[File:media/image11.png|199x129px]]</p></li>
+
<p>[[File:plus5-img11.png]]</p></li>
 
<li><p>The OPi OS Arch system HDMI in function is closed by default, and the opening method is shown below:</p>
 
<li><p>The OPi OS Arch system HDMI in function is closed by default, and the opening method is shown below:</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li><p>First add the following configuration in &gt; '''/boot/extlinux/extlinux.conf'''</p>
+
<li><p>First add the following configuration in '''/boot/extlinux/extlinux.conf'''</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>[orangepi@orangepi ~]$ '''sudo vim /boot/extlinux/extlinux.conf'''</p>
 
<p>[orangepi@orangepi ~]$ '''sudo vim /boot/extlinux/extlinux.conf'''</p>
 
<p>LABEL Orange Pi</p>
 
<p>LABEL Orange Pi</p>
 
<p>LINUX /Image</p>
 
<p>LINUX /Image</p>
 
<p>FDT /dtbs/rockchip/rk3588-orangepi-5-plus.dtb</p>
 
<p>FDT /dtbs/rockchip/rk3588-orangepi-5-plus.dtb</p>
<p>'''FDTOVERLAYS /dtbs/rockchip/overlay/rk3588-hdmirx.dtbo #The configuration that needs to be added'''</p></li>
+
<p>'''<span style="color:#FF0000">FDTOVERLAYS /dtbs/rockchip/overlay/rk3588-hdmirx.dtbo #The configuration that needs to be added</span>'''</p>
<li><p>'''Then restart the OPi OS Arch system'''</p></li></ol>
+
|}
 +
</li>
 +
<li><p>'''<span style="color:#FF0000">Then restart the OPi OS Arch system</span>'''</p></li></ol>
 
</li>
 
</li>
 
<li><p>After restarting into the system, open a terminal on the desktop, and then run the '''test_hdmiin.sh''' script</p>
 
<li><p>After restarting into the system, open a terminal on the desktop, and then run the '''test_hdmiin.sh''' script</p>
<p>[orangepi@orangepi ~]$ '''test_hdmiin.sh'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>[orangepi@orangepi ~]$ '''test_hdmiin.sh'''</p>
 +
|}
 +
</li>
 
<li><p>Then you can see the input screen of the HDMI in (the HDMI in in the figure below shows the screen of the OPI5 development board HDMI output, and it is playing a video at this time). '''test_hdmiin.sh''' script defaults to the audio entered by HDMI in to the HDMI_TX1, HDMI_TX2 and ES8388 (representing speakers or headphones) of the development board.</p>
 
<li><p>Then you can see the input screen of the HDMI in (the HDMI in in the figure below shows the screen of the OPI5 development board HDMI output, and it is playing a video at this time). '''test_hdmiin.sh''' script defaults to the audio entered by HDMI in to the HDMI_TX1, HDMI_TX2 and ES8388 (representing speakers or headphones) of the development board.</p>
<p>[[File:media/image524.png|576x326px]]</p></li>
+
<p>[[File:plus5-img524.png]]</p></li>
<li><p>In addition to testing HDMI IN using '''test_hdmiin.sh''', we can also use '''Qt V4L2 test Utility''' to test HDMI in video ('''this method cannot test audio at present'''). The detailed steps are shown below:</p>
+
<li><p>In addition to testing HDMI IN using '''test_hdmiin.sh''', we can also use '''Qt V4L2 test Utility''' to test HDMI in video ('''<span style="color:#FF0000">this method cannot test audio at present</span>'''). The detailed steps are shown below:</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
 
<li><p>Enter the application list first</p>
 
<li><p>Enter the application list first</p>
<p>[[File:media/image525.png|356x200px]]</p></li>
+
<p>[[File:plus5-img525.png]]</p></li>
 
<li><p>Then find '''Qt V4L2 test Utility''' and open it</p>
 
<li><p>Then find '''Qt V4L2 test Utility''' and open it</p>
<p>[[File:media/image526.png|367x205px]]</p></li>
+
<p>[[File:plus5-img526.png]]</p></li>
<li><p>Then make sure '''Qt V4L2 test Utility''' recognizes the HDMI In &gt; device</p>
+
<li><p>Then make sure '''Qt V4L2 test Utility''' recognizes the HDMI In device</p>
<p>[[File:media/image527.png|508x185px]]</p></li>
+
<p>[[File:plus5-img527.png]]</p></li>
<li><p>Then click the location shown in the figure below to see the &gt; video entered by HDMI In</p>
+
<li><p>Then click the location shown in the figure below to see the video entered by HDMI In</p>
<p>[[File:media/image528.png|508x359px]]</p></li>
+
<p>[[File:plus5-img528.png]]</p></li>
 
<li><p>The video window entered by HDMI In is shown below:</p>
 
<li><p>The video window entered by HDMI In is shown below:</p>
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image529.png|572x322px|Screenshot from 2023-05-22 18-12-56]]
+
[[File:plus5-img529.png]]
  
 
</div></li></ol>
 
</div></li></ol>
Line 7,738: Line 10,153:
  
 
<span id="how-to-install-wiringop-1"></span>
 
<span id="how-to-install-wiringop-1"></span>
 +
 
== How to install wiringOP ==
 
== How to install wiringOP ==
  
'''Note that Wiringop has been pre -installed in the OPI OS Arch image released by Orange PI. Unless Wiringop's code is updated, it is not necessary to re -download and compile and install it,just use it directly.'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''Note that Wiringop has been pre -installed in the OPI OS Arch image released by Orange PI. Unless Wiringop's code is updated, it is not necessary to re -download and compile and install it,just use it directly.'''
  
'''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'''
+
'''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'''</big>
  
[[File:media/image530.png|434x308px]]
+
[[File:plus5-img530.png]]
  
'''wiringOP is currently adapted to set the GPIO port input output, set the GPIO port output high and low level, and set the function of pulling and down resistance. It is impossible to use functions like hardware PWM.'''
+
<big>'''wiringOP is currently adapted to set the GPIO port input output, set the GPIO port output high and low level, and set the function of pulling and down resistance. It is impossible to use functions like hardware PWM.'''</big>
 +
|}
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>Download the code of wiringOP</p>
 
<li><p>Download the code of wiringOP</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>[orangepi@orangepi ~]$ '''sudo pacman -Syy git'''</p>
 
<p>[orangepi@orangepi ~]$ '''sudo pacman -Syy git'''</p>
 
<p>[orangepi@orangepi ~]$ '''git clone https://github.com/orangepi-xunlong/wiringOP.git -b next'''</p>
 
<p>[orangepi@orangepi ~]$ '''git clone https://github.com/orangepi-xunlong/wiringOP.git -b next'''</p>
<p>'''Note that Orange Pi 5 Plus needs to download the code of the wiringOP next branch, please don't miss the parameter of -b next。'''</p>
+
|}
<p>'''If you have a problem with the download code from github, you can download the source code compression package of wiringOp.tar.gz in the official tools of the Orange Pi 5 Plus data download page'''</p>
+
 
<p>[[File:media/image531.png|356x88px]]</p></li>
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big><p>'''Note that Orange Pi 5 Plus needs to download the code of the wiringOP next branch, please don't miss the parameter of -b next.'''</p>
 +
<p>'''If you have a problem with the download code from github, you can download the source code compression package of wiringOp.tar.gz in the [http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html '''official tools of the Orange Pi 5 Plus data download page''']'''</p></big>
 +
 
 +
<p>[[File:plus5-img531.png|center]]</p>
 +
|}
 +
</li>
 
<li><p>Compile and install wiringOP</p>
 
<li><p>Compile and install wiringOP</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>[orangepi@orangepi ~]$ '''sudo pacman -Syy make gcc'''</p>
 
<p>[orangepi@orangepi ~]$ '''sudo pacman -Syy make gcc'''</p>
 
<p>[orangepi@orangepi ~]$ '''cd wiringOP'''</p>
 
<p>[orangepi@orangepi ~]$ '''cd wiringOP'''</p>
 
<p>[orangepi@orangepi wiringOP]$ '''sudo ./build clean'''</p>
 
<p>[orangepi@orangepi wiringOP]$ '''sudo ./build clean'''</p>
<p>[orangepi@orangepi wiringOP]$ '''sudo ./build'''</p></li>
+
<p>[orangepi@orangepi wiringOP]$ '''sudo ./build'''</p>
 +
|}
 +
</li>
 
<li><p>Test the output of the GPIO Readall command as follows</p>
 
<li><p>Test the output of the GPIO Readall command as follows</p>
<p>[[File:media/image530.png|568x403px]]</p></li></ol>
+
<p>[[File:plus5-img530.png]]</p></li></ol>
  
 
<span id="pin-interface-gpio-i2c-uart-spi-can-and-pwm-test-1"></span>
 
<span id="pin-interface-gpio-i2c-uart-spi-can-and-pwm-test-1"></span>
 +
 
== 40 PIN interface GPIO, I2C, UART, SPI, CAN and PWM test ==
 
== 40 PIN interface GPIO, I2C, UART, SPI, CAN and PWM test ==
  
'''Note that if you need to set FDT Overlays to open multiple configurations at the same time, please use a space to write in a line like the red font configuration below.'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''Note that if you need to set FDT Overlays to open multiple configurations at the same time, please use a space to write in a line like the red font configuration below.'''</big>
  
 
[orangepi@orangepi ~]$ '''sudo vim /boot/extlinux/extlinux.conf'''
 
[orangepi@orangepi ~]$ '''sudo vim /boot/extlinux/extlinux.conf'''
Line 7,776: Line 10,216:
 
FDT /dtbs/rockchip/rk3588s-orangepi-5.dtb
 
FDT /dtbs/rockchip/rk3588s-orangepi-5.dtb
  
'''FDTOVERLAYS /dtbs/rockchip/overlay/rk3588-i2c1-m2.dtbo /dtbs/rockchip/overlay/rk3588-uart0-m2.dtbo'''
+
'''<span style="color:#FF0000">FDTOVERLAYS /dtbs/rockchip/overlay/rk3588-i2c1-m2.dtbo /dtbs/rockchip/overlay/rk3588-uart0-m2.dtbo</span>'''
 +
|}
  
 
<span id="pin-gpio-port-test-2"></span>
 
<span id="pin-gpio-port-test-2"></span>
Line 7,783: Line 10,224:
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>A total of 28 GPIO ports can be used in the development board 40 PIN. Below is No. 7 pins -corresponding to GPIO1_D6 -corresponding WPI serial number 2 -as an example to demonstrate how to set the high and low level of the GPIO port</p>
 
<li><p>A total of 28 GPIO ports can be used in the development board 40 PIN. Below is No. 7 pins -corresponding to GPIO1_D6 -corresponding WPI serial number 2 -as an example to demonstrate how to set the high and low level of the GPIO port</p>
<p>[[File:media/image532.png|576x147px]]</p></li>
+
<p>[[File:plus5-img532.png]]</p></li>
 
<li><p>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</p>
 
<li><p>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</p>
<p>[orangepi@orangepi ~]$ '''gpio mode 2 out'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>[orangepi@orangepi ~]$ '''gpio mode <span style="color:#FF0000">2</span> out'''</p>
 +
|}
 +
</li>
 
<li><p>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</p>
 
<li><p>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</p>
<p>[orangepi@orangepi ~]$ '''gpio write 2 0'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>[orangepi@orangepi ~]$ '''gpio write 2 <span style="color:#FF0000">0</span>'''</p>
 +
|}
 +
</li>
 
<li><p>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 set to be successful</p>
 
<li><p>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 set to be successful</p>
<p>[orangepi@orangepi ~]$ '''gpio write 2 1'''</p></li></ol>
+
{| class="wikitable" style="width:800px;"
 
+
|-
<!-- -->
+
|
# The setting method of other pins is similar. Just modify the serial number of the wpi serial number as the corresponding serial number.
+
<p>[orangepi@orangepi ~]$ '''gpio write 2 <span style="color:#FF0000">1</span>'''</p>
 +
|}
 +
</li>
 +
 
 +
<li><p>The setting method of other pins is similar. Just modify the serial number of the wpi serial number as the corresponding serial number.</p></li></ol>
  
 
<span id="pin-gpio-port--to--plattering-resistance-setting-method"></span>
 
<span id="pin-gpio-port--to--plattering-resistance-setting-method"></span>
 +
 
=== 40 PIN GPIO Port -to -Plattering resistance setting method ===
 
=== 40 PIN GPIO Port -to -Plattering resistance setting method ===
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>Below the No. 7 pin — corresponding to GPIO1_D6 -corresponding WPI serial number 2 -to demonstrate how to set up and down pull -down resistance of the GPIO port</p>
 
<li><p>Below the No. 7 pin — corresponding to GPIO1_D6 -corresponding WPI serial number 2 -to demonstrate how to set up and down pull -down resistance of the GPIO port</p>
<p>[[File:media/image532.png|576x147px]]</p></li>
+
<p>[[File:plus5-img532.png]]</p></li>
 
<li><p>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</p>
 
<li><p>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</p>
<p>[orangepi@orangepi ~]$ '''gpio mode 2 in'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>[orangepi@orangepi ~]$ '''gpio mode <span style="color:#FF0000">2</span> in'''</p>
 +
|}
 +
</li>
 
<li><p>After the setting is set to input mode, execute the following command to set the GPIO port as the pull -down mode</p>
 
<li><p>After the setting is set to input mode, execute the following command to set the GPIO port as the pull -down mode</p>
<p>[orangepi@orangepi ~]$ '''gpio mode 2 up'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>[orangepi@orangepi ~]$ '''gpio mode <span style="color:#FF0000">2</span> up'''</p>
 +
|}
 +
</li>
 
<li><p>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</p>
 
<li><p>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</p>
<p>[orangepi@orangepi ~]$ '''gpio read 2'''</p>
+
{| class="wikitable" style="width:800px;"
<p>'''1'''</p></li>
+
|-
 +
|
 +
<p>[orangepi@orangepi ~]$ '''gpio read <span style="color:#FF0000">2</span>'''</p>
 +
<p>'''1'''</p>
 +
|}
 +
</li>
 
<li><p>Then execute the following command to set the GPIO port as the drop-down mode</p>
 
<li><p>Then execute the following command to set the GPIO port as the drop-down mode</p>
<p>[orangepi@orangepi ~]$ '''gpio mode 2 down'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>[orangepi@orangepi ~]$ '''gpio mode <span style="color:#FF0000">2</span> down'''</p>
 +
|}
 +
</li>
 
<li><p>Then enter the command below to read the level of the GPIO port. If the level is 0, it means that the drop -down mode is set successfully</p>
 
<li><p>Then enter the command below to read the level of the GPIO port. If the level is 0, it means that the drop -down mode is set successfully</p>
<p>[orangepi@orangepi ~]$ '''gpio read 2'''</p>
+
{| class="wikitable" style="width:800px;"
<p>'''0'''</p></li></ol>
+
|-
 +
|
 +
<p>[orangepi@orangepi ~]$ '''gpio read <span style="color:#FF0000">2</span>'''</p>
 +
<p>'''0'''</p>
 +
|}
 +
</li></ol>
  
 
<span id="pin-spi-test-2"></span>
 
<span id="pin-spi-test-2"></span>
 +
 
=== 40 PIN SPI test ===
 
=== 40 PIN SPI test ===
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>As can be seen from the figure below, the SPI available for Orange Pi 5 Plus is SPI0 and SPI4</p>
 
<li><p>As can be seen from the figure below, the SPI available for Orange Pi 5 Plus is SPI0 and SPI4</p>
<p>[[File:media/image304.png|575x137px]]</p></li>
+
<p>[[File:plus5-img304.png]]</p></li>
<li><p>The corresponding pins corresponding to SPI0 and SPI4 are shown in the table below. SPI4_M1 and SPI4_M2 can only be used at the same time, and they cannot be used at the same time. They are the same SPI4, but they are just getting different pins. Please don't think that they are two different SPI bus。</p></li></ol>
+
<li><p>The corresponding pins corresponding to SPI0 and SPI4 are shown in the table below. SPI4_M1 and SPI4_M2 can only be used at the same time, and they cannot be used at the same time. They are the same SPI4, but they are just getting different pins. Please don't think that they are two different SPI bus.</p></li>
  
{| class="wikitable"
+
{| class="wikitable" style="width:800px;"
 
|-
 
|-
 
|
 
|
Line 7,851: Line 10,333:
 
| '''No. 26 pins'''
 
| '''No. 26 pins'''
 
| '''No. 38 pins'''
 
| '''No. 38 pins'''
| style="text-align: left;"| '''None'''
+
| style="text-align: left;"| '''<span style="color:#FF0000">None</span>'''
 
|}
 
|}
 
+
</ol>
 
<ol start="3" style="list-style-type: decimal;">
 
<ol start="3" style="list-style-type: decimal;">
 
<li><p>In the Linux system, the SPI in 40 PIN is closed by default, and it needs to be opened manually to use. The detailed steps are shown below:</p>
 
<li><p>In the Linux system, the SPI in 40 PIN is closed by default, and it needs to be opened manually to use. The detailed steps are shown below:</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li><p>First add the following configuration to the &gt; '''/boot/extlinux/extlinux.conf'''</p>
+
<li><p>First add the following configuration to the '''/boot/extlinux/extlinux.conf'''</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>[orangepi@orangepi ~]$ '''sudo vim /boot/extlinux/extlinux.conf'''</p>
 
<p>[orangepi@orangepi ~]$ '''sudo vim /boot/extlinux/extlinux.conf'''</p>
 
<p>LABEL Orange Pi</p>
 
<p>LABEL Orange Pi</p>
 
<p>LINUX /Image</p>
 
<p>LINUX /Image</p>
 
<p>FDT /dtbs/rockchip/rk3588-orangepi-5-plus.dtb</p>
 
<p>FDT /dtbs/rockchip/rk3588-orangepi-5-plus.dtb</p>
<p>'''FDTOVERLAYS /dtbs/rockchip/overlay/rk3588-spi0-m2-cs0-cs1-spidev.dtbo'''</p>
+
<p>'''<span style="color:#FF0000">FDTOVERLAYS /dtbs/rockchip/overlay/rk3588-spi0-m2-cs0-cs1-spidev.dtbo</span>'''</p>
<p>The red font demonstrated the configuration of opening the '''<span class="mark">SPI0-M2 and using the CS0 and CS1 pin</span>'''. The other configurations are shown in the table below, and the corresponding dtbo configuration can be added to '''FDTOVERLAYS'''</p></li></ol>
+
|}
</li></ol>
+
<p>The red font demonstrated the configuration of opening the '''<span class="mark">SPI0-M2 and using the CS0 and CS1 pin</span>'''. The other configurations are shown in the table below, and the corresponding dtbo configuration can be added to '''<span style="color:#FF0000">FDTOVERLAYS</span>'''</p></li>
  
{| class="wikitable"
+
{| class="wikitable" style="width:800px;"
 
|-
 
|-
 
| style="text-align: left;"| '''SPI bus'''
 
| style="text-align: left;"| '''SPI bus'''
Line 7,892: Line 10,377:
 
| style="text-align: left;"| '''/dtbs/rockchip/overlay/rk3588-spi4-m2-cs0-spidev.dtbo'''
 
| style="text-align: left;"| '''/dtbs/rockchip/overlay/rk3588-spi4-m2-cs0-spidev.dtbo'''
 
|}
 
|}
 
+
</ol>
 
<ol start="2" style="list-style-type: lower-alpha;">
 
<ol start="2" style="list-style-type: lower-alpha;">
<li>Then '''restart the OPi OS Arch system'''</li></ol>
+
<li>'''<span style="color:#FF0000">Then restart the OPi OS Arch system</span>'''</li></ol>
 +
</li></ol>
  
<!-- -->
 
 
<ol start="4" style="list-style-type: decimal;">
 
<ol start="4" style="list-style-type: decimal;">
 
<li><p>After the restart, enter the system first to check whether there is a '''spidevx.x''' device node in the Linux system. If it exists, it means that the SPI has been set and can be used directly</p>
 
<li><p>After the restart, enter the system first to check whether there is a '''spidevx.x''' device node in the Linux system. If it exists, it means that the SPI has been set and can be used directly</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>[orangepi@orangepi ~]$ '''ls /dev/spidev*'''</p>
 
<p>[orangepi@orangepi ~]$ '''ls /dev/spidev*'''</p>
 
<p>/dev/spidev0.0 /dev/spidev0.1 /dev/spidev4.0 /dev/spidev4.1</p>
 
<p>/dev/spidev0.0 /dev/spidev0.1 /dev/spidev4.0 /dev/spidev4.1</p>
<p>'''The above is the result displayed after opening the spi0-m2-cs0-cs1-spidev and spi4-m1-cs0-cs1-spidev'''</p></li>
+
|}
 +
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big><p>'''The above is the result displayed after opening the spi0-m2-cs0-cs1-spidev and spi4-m1-cs0-cs1-spidev'''</p></big>
 +
|}
 +
</li>
 
<li><p>Then do not connect the SPI0 or SPI4 MOSI and MISO pins, and run the output result of the spidev_teest as shown below. You can see that the data of TX and RX are inconsistent</p>
 
<li><p>Then do not connect the SPI0 or SPI4 MOSI and MISO pins, and run the output result of the spidev_teest as shown below. You can see that the data of TX and RX are inconsistent</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>[orangepi@orangepi ~]$ '''sudo spidev_test -v -D /dev/spidev4.0'''</p>
 
<p>[orangepi@orangepi ~]$ '''sudo spidev_test -v -D /dev/spidev4.0'''</p>
 
<p>'''Or'''</p>
 
<p>'''Or'''</p>
Line 7,909: Line 10,406:
 
<p>bits per word: 8</p>
 
<p>bits per word: 8</p>
 
<p>max speed: 500000 Hz (500 KHz)</p>
 
<p>max speed: 500000 Hz (500 KHz)</p>
<p>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 | ......@.…▒..................▒.</p>
+
<p>TX | 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 | ......@.…▒..................▒.</p>
<p>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 | ............................….</p></li>
+
<p>RX | 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 | ............................….</p>
 +
|}
 +
</li>
 
<li><p>Then the output of spidev_test, which is then connected to SPI0 or SPI4 MOSI and MISO, is as follows. You can see that the sending and receiving data can be seen, indicating that the SPI loop test is normal</p>
 
<li><p>Then the output of spidev_test, which is then connected to SPI0 or SPI4 MOSI and MISO, is as follows. You can see that the sending and receiving data can be seen, indicating that the SPI loop test is normal</p>
<p>[orangepi@orangepi ~]$ '''sudo spidev_test -v -D /dev/spidev4.0'''</p>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>[orangepi@orangepi ~]$ '''sudo spidev_test -v -D /dev/spidev4.0'''</p>
 
<p>'''Or'''</p>
 
<p>'''Or'''</p>
 
<p>[orangepi@orangepi ~]$ '''sudo spidev_test -v -D /dev/spidev0.0'''</p>
 
<p>[orangepi@orangepi ~]$ '''sudo spidev_test -v -D /dev/spidev0.0'''</p>
Line 7,918: Line 10,420:
 
<p>bits per word: 8</p>
 
<p>bits per word: 8</p>
 
<p>max speed: 500000 Hz (500 KHz)</p>
 
<p>max speed: 500000 Hz (500 KHz)</p>
<p>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 | ......@.…▒..................▒.</p>
+
<p>TX | 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 | ......@.…▒..................▒.</p>
<p>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 | ......@.…▒..................▒.</p></li></ol>
+
<p>RX | 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 | ......@.…▒..................▒.</p>
 +
|}
 +
</li></ol>
  
 
<span id="pin-i2c-test-2"></span>
 
<span id="pin-i2c-test-2"></span>
 +
 
=== 40 pin I2C test ===
 
=== 40 pin I2C test ===
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>From the table below, the I2C available for Orange Pi 5 Plus is I2C2, I2C4, I2C5, and I2C8. There are four groups of I2C bus</p>
 
<li><p>From the table below, the I2C available for Orange Pi 5 Plus is I2C2, I2C4, I2C5, and I2C8. There are four groups of I2C bus</p>
<p>[[File:media/image304.png|575x137px]]</p></li>
+
<p>[[File:plus5-img304.png]]</p></li>
<li><p>The corresponding pins corresponding to the 4 group I2C bus are shown below. I2C2_M0 and I2C2_M4 can only be used at the same time, and they cannot be used at the same time. They are the same I2C2, but they only receive different pins. Please don't think that they are two different I2C2 bus</p></li></ol>
+
<li><p>The corresponding pins corresponding to the 4 group I2C bus are shown below. I2C2_M0 and I2C2_M4 can only be used at the same time, and they cannot be used at the same time. They are the same I2C2, but they only receive different pins. Please don't think that they are two different I2C2 bus</p></li>
  
{| class="wikitable"
+
{| class="wikitable" style="width:800px;"
 
|-
 
|-
 
| style="text-align: left;"| '''I2C bus'''
 
| style="text-align: left;"| '''I2C bus'''
Line 7,955: Line 10,460:
 
| style="text-align: left;"| '''No. 7 pin'''
 
| style="text-align: left;"| '''No. 7 pin'''
 
|}
 
|}
 
+
</ol>
 
<ol start="3" style="list-style-type: decimal;">
 
<ol start="3" style="list-style-type: decimal;">
 
<li><p>In the Linux system, the I2C bus in 40 PIN is closed by default, and it needs to be opened manually to use. The detailed steps are shown below:</p>
 
<li><p>In the Linux system, the I2C bus in 40 PIN is closed by default, and it needs to be opened manually to use. The detailed steps are shown below:</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li><p>First add the following configuration in &gt; '''/boot/extlinux/extlinux.conf'''.</p>
+
<li><p>First add the following configuration in '''/boot/extlinux/extlinux.conf'''.</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>[orangepi@orangepi ~]$ '''sudo vim /boot/extlinux/extlinux.conf'''</p>
 
<p>[orangepi@orangepi ~]$ '''sudo vim /boot/extlinux/extlinux.conf'''</p>
 
<p>LABEL Orange Pi</p>
 
<p>LABEL Orange Pi</p>
 
<p>LINUX /Image</p>
 
<p>LINUX /Image</p>
 
<p>FDT /dtbs/rockchip/rk3588-orangepi-5-plus.dtb</p>
 
<p>FDT /dtbs/rockchip/rk3588-orangepi-5-plus.dtb</p>
<p>'''FDTOVERLAYS /dtbs/rockchip/overlay/rk3588-i2c2-m0.dtbo'''</p>
+
<p>'''<span style="color:#FF0000">FDTOVERLAYS /dtbs/rockchip/overlay/rk3588-i2c2-m0.dtbo</span>'''</p>
<p>The red font on the above demonstrates the configuration of the '''i2c2-m0'''. The other configurations are shown in the table below, and the corresponding dtbo configuration can be added behind '''FDTOVERLAYS'''</p></li></ol>
+
|}
</li></ol>
+
<p>The red font on the above demonstrates the configuration of the '''i2c2-m0'''. The other configurations are shown in the table below, and the corresponding dtbo configuration can be added behind '''<span style="color:#FF0000">FDTOVERLAYS</span>'''</p></li>
  
{| class="wikitable"
+
{| class="wikitable" style="width:800px;"
 
|-
 
|-
 
| style="text-align: left;"| '''I2C bus'''
 
| style="text-align: left;"| '''I2C bus'''
Line 7,988: Line 10,496:
 
| style="text-align: left;"| '''/dtbs/rockchip/overlay/rk3588-i2c8-m2.dtbo'''
 
| style="text-align: left;"| '''/dtbs/rockchip/overlay/rk3588-i2c8-m2.dtbo'''
 
|}
 
|}
 
+
</ol>
 
<ol start="2" style="list-style-type: lower-alpha;">
 
<ol start="2" style="list-style-type: lower-alpha;">
<li>Then restart the '''OPi OS Arch''' system</li></ol>
+
<li>Then restart the '''<span style="color:#FF0000">OPi OS Arch</span>''' system</li></ol>
 
+
</li></ol>
 
<!-- -->
 
<!-- -->
 
<ol start="4" style="list-style-type: decimal;">
 
<ol start="4" style="list-style-type: decimal;">
<li><p>After starting the linux system, first confirm that there is a device node that needs to be used under the'''/dev'''</p>
+
<li><p>After starting the linux system, first confirm that there is a device node that needs to be used under the '''/dev'''</p>
<p>orangepi@orangepi:~$ '''ls /dev/i2c-*'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>orangepi@orangepi:~$ '''ls /dev/i2c-*'''</p>
 +
|}
 +
</li>
 
<li><p>Then connect a I2C device on the I2C pin corresponding to the 40 PIN interface</p></li>
 
<li><p>Then connect a I2C device on the I2C pin corresponding to the 40 PIN interface</p></li>
 
<li><p>Then use the '''i2cdetect -y''' command to detect the address of the connected i2c device, which means that the i2c can be used normally</p>
 
<li><p>Then use the '''i2cdetect -y''' command to detect the address of the connected i2c device, which means that the i2c can be used normally</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>[orangepi@orangepi ~]$ '''sudo pacman -S i2c-tools''' #First of all, I2C tools</p>
 
<p>[orangepi@orangepi ~]$ '''sudo pacman -S i2c-tools''' #First of all, I2C tools</p>
 
<p>[orangepi@orangepi ~]$ '''sudo i2cdetect -y 2''' #i2c2 test command</p>
 
<p>[orangepi@orangepi ~]$ '''sudo i2cdetect -y 2''' #i2c2 test command</p>
 
<p>[orangepi@orangepi ~]$ '''sudo i2cdetect -y 4''' #i2c4 test command</p>
 
<p>[orangepi@orangepi ~]$ '''sudo i2cdetect -y 4''' #i2c4 test command</p>
 
<p>[orangepi@orangepi ~]$ '''sudo i2cdetect -y 5''' #i2c5 test command</p>
 
<p>[orangepi@orangepi ~]$ '''sudo i2cdetect -y 5''' #i2c5 test command</p>
<p>[orangepi@orangepi ~]$ '''sudo i2cdetect -y 8''' #i2c8 test command</p></li></ol>
+
<p>[orangepi@orangepi ~]$ '''sudo i2cdetect -y 8''' #i2c8 test command</p>
 +
|}
 +
</li></ol>
  
 
<span id="pins-uart-test"></span>
 
<span id="pins-uart-test"></span>
 +
 
=== 40 Pin's UART test ===
 
=== 40 Pin's UART test ===
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>As can be seen from the table below, the UART available for Orange Pi 5 Plus is UART1, UART3, UART4, UART6, UART7, and UART8. There are 6 sets of UART bus</p>
 
<li><p>As can be seen from the table below, the UART available for Orange Pi 5 Plus is UART1, UART3, UART4, UART6, UART7, and UART8. There are 6 sets of UART bus</p>
<p>[[File:media/image304.png|575x137px]]</p></li>
+
<p>[[File:plus5-img304.png]]</p></li>
 
<li><p>In the Linux system, the UART in 40 pin is closed by default, and it needs to be opened manually to use. The detailed steps are shown below:</p>
 
<li><p>In the Linux system, the UART in 40 pin is closed by default, and it needs to be opened manually to use. The detailed steps are shown below:</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li><p>First add the following configuration to &gt; the'''/boot/extlinux/extlinux.conf'''</p>
+
<li><p>First add the following configuration to the '''/boot/extlinux/extlinux.conf'''</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>[orangepi@orangepi ~]$ '''sudo vim /boot/extlinux/extlinux.conf'''</p>
 
<p>[orangepi@orangepi ~]$ '''sudo vim /boot/extlinux/extlinux.conf'''</p>
 
<p>LABEL Orange Pi</p>
 
<p>LABEL Orange Pi</p>
 
<p>LINUX /Image</p>
 
<p>LINUX /Image</p>
 
<p>FDT /dtbs/rockchip/rk3588-orangepi-5-plus.dtb</p>
 
<p>FDT /dtbs/rockchip/rk3588-orangepi-5-plus.dtb</p>
<p>'''FDTOVERLAYS /dtbs/rockchip/overlay/rk3588-uart1-m1.dtbo'''</p>
+
<p>'''<span style="color:#FF0000">FDTOVERLAYS /dtbs/rockchip/overlay/rk3588-uart1-m1.dtbo</span>'''</p>
<p>The red font demonstrates the configuration of the '''uart1-m1'''. The other configurations are shown in the table below, and the corresponding dtbo configuration can be added behind '''FDTOVERLAYS'''</p></li></ol>
+
|}
</li></ol>
+
<p>The red font demonstrates the configuration of the '''uart1-m1'''. The other configurations are shown in the table below, and the corresponding dtbo configuration can be added behind '''<span style="color:#FF0000">FDTOVERLAYS</span>'''</p></li>
  
{| class="wikitable"
+
{| class="wikitable" style="width:800px;"
 
|-
 
|-
 
| style="text-align: left;"| '''UART bus'''
 
| style="text-align: left;"| '''UART bus'''
Line 8,044: Line 10,566:
 
| style="text-align: left;"| '''/dtbs/rockchip/overlay/rk3588-uart8-m1.dtbo'''
 
| style="text-align: left;"| '''/dtbs/rockchip/overlay/rk3588-uart8-m1.dtbo'''
 
|}
 
|}
 
+
</ol>
 
<ol start="2" style="list-style-type: lower-alpha;">
 
<ol start="2" style="list-style-type: lower-alpha;">
<li>Then '''restart the OPI OS Arch system'''</li></ol>
+
<li>'''<span style="color:#FF0000">Then restart the OPI OS Arch system</span>'''</li></ol>
 
+
</li></ol>
 
<!-- -->
 
<!-- -->
 
<ol start="3" style="list-style-type: decimal;">
 
<ol start="3" style="list-style-type: decimal;">
<li><p>After entering the Linux system, first confirm whether there is a device node corresponding to UART under the'''/dev'''</p>
+
<li><p>After entering the Linux system, first confirm whether there is a device node corresponding to UART under the '''/dev'''</p>
<p>[orangepi@orangepi ~]$ '''ls /dev/ttyS*'''</p></li>
+
{| class="wikitable" style="width:800px;"
<li><p>Then start testing the UART interface, and first use the RX and TX pins of the UART interface to be tested by DuPont</p></li></ol>
+
|-
 +
|
 +
<p>[orangepi@orangepi ~]$ '''ls /dev/ttyS*'''</p>
 +
|}
 +
</li>
 +
<li><p>Then start testing the UART interface, and first use the RX and TX pins of the UART interface to be tested by DuPont</p></li>
  
{| class="wikitable"
+
{| class="wikitable" style="width:800px;"
 
|-
 
|-
 
| style="text-align: left;"| '''UART bus'''
 
| style="text-align: left;"| '''UART bus'''
Line 8,084: Line 10,611:
 
| style="text-align: left;"| '''No. 35 pin'''
 
| style="text-align: left;"| '''No. 35 pin'''
 
|}
 
|}
 
+
</ol>
 
<ol start="5" style="list-style-type: decimal;">
 
<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 printed below, it means that the serial port communication is normal (TTYSX needs to be replaced with a node name corresponding to UART, please do not copy it)</p>
 
<li><p>Use the '''gpio serial''' command to test the loop function of the serial port as shown below. If you can see the printed below, it means that the serial port communication is normal (TTYSX needs to be replaced with a node name corresponding to UART, please do not copy it)</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>[orangepi@orangepi ~]$ '''sudo gpio serial /dev/ttySX'''</p>
 
<p>[orangepi@orangepi ~]$ '''sudo gpio serial /dev/ttySX'''</p>
 
<p>[sudo] password for orangepi: #Enter the password here</p>
 
<p>[sudo] password for orangepi: #Enter the password here</p>
 +
 +
 
<p>Out: 0: -&gt; 0</p>
 
<p>Out: 0: -&gt; 0</p>
 
<p>Out: 1: -&gt; 1</p>
 
<p>Out: 1: -&gt; 1</p>
Line 8,094: Line 10,626:
 
<p>Out: 3: -&gt; 3</p>
 
<p>Out: 3: -&gt; 3</p>
 
<p>Out: 4: -&gt; 4</p>
 
<p>Out: 4: -&gt; 4</p>
<p>Out: 5: -&gt; 5^C</p></li></ol>
+
<p>Out: 5: -&gt; 5^C</p>
 +
|}
 +
</li></ol>
  
 
<span id="pwm-test-method-1"></span>
 
<span id="pwm-test-method-1"></span>
 +
 
=== PWM test method ===
 
=== PWM test method ===
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>From the table below, the PWMs available for Orange Pi 5 Plus include PWM0, PWM1, PWM11, PWM12, PWM13, and PWM14 a total of six PWM</p>
 
<li><p>From the table below, the PWMs available for Orange Pi 5 Plus include PWM0, PWM1, PWM11, PWM12, PWM13, and PWM14 a total of six PWM</p>
<p>[[File:media/image304.png|575x137px]]</p></li>
+
<p>[[File:plus5-img304.png]]</p></li>
<li><p>The corresponding pins of PWM in 40pin are shown below. PWM0_M0 and PWM0_M2, PWM1_M0 and PWM1_M2, PWM14_M0 and PWM14_M2 can only be used at the same time. They cannot be used at the same time. They are the same PWM, but they only get different pins. Please think that they are two different PWM bus</p></li></ol>
+
<li><p>The corresponding pins of PWM in 40pin are shown below. PWM0_M0 and PWM0_M2, PWM1_M0 and PWM1_M2, PWM14_M0 and PWM14_M2 can only be used at the same time. They cannot be used at the same time. They are the same PWM, but they only get different pins. Please think that they are two different PWM bus</p></li>
  
{| class="wikitable"
+
{| class="wikitable" style="width:800px;"  
 
|-
 
|-
 
| style="text-align: left;"| '''PWM bus'''
 
| style="text-align: left;"| '''PWM bus'''
Line 8,136: Line 10,671:
 
| style="text-align: left;"| '''No. 7 pin'''
 
| style="text-align: left;"| '''No. 7 pin'''
 
|}
 
|}
 
+
</ol>
 
<ol start="3" style="list-style-type: decimal;">
 
<ol start="3" style="list-style-type: decimal;">
 
<li><p>In the Linux system, the PWM in 40 PIN is closed by default, and it needs to be opened manually to use. The detailed steps are shown below:</p>
 
<li><p>In the Linux system, the PWM in 40 PIN is closed by default, and it needs to be opened manually to use. The detailed steps are shown below:</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li><p>First add the following configuration to &gt; the'''/boot/extlinux/extlinux.conf'''</p>
+
<li><p>First add the following configuration to the '''/boot/extlinux/extlinux.conf'''</p>
<p>[orangepi@orangepi ~]$ '''sudo vim /boot/extlinux/extlinux.conf'''</p>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>[orangepi@orangepi ~]$ '''sudo vim /boot/extlinux/extlinux.conf'''</p>
 
<p>LABEL Orange Pi</p>
 
<p>LABEL Orange Pi</p>
 
<p>LINUX /Image</p>
 
<p>LINUX /Image</p>
 
<p>FDT /dtbs/rockchip/rk3588-orangepi-5-plus.dtb</p>
 
<p>FDT /dtbs/rockchip/rk3588-orangepi-5-plus.dtb</p>
<p>'''FDTOVERLAYS /dtbs/rockchip/overlay/rk3588-pwm0-m0.dtbo'''</p>
+
<p>'''<span style="color:#FF0000">FDTOVERLAYS /dtbs/rockchip/overlay/rk3588-pwm0-m0.dtbo</span>'''</p>
<p>The red font demonstrates the configuration of the '''pwm0-m0'''. The other configurations are shown in the table below, and the corresponding dtbo configuration can be added behind '''FDTOVERLAYS'''</p></li></ol>
+
|}
</li></ol>
+
<p>The red font demonstrates the configuration of the '''pwm0-m0'''. The other configurations are shown in the table below, and the corresponding dtbo configuration can be added behind '''<span style="color:#FF0000">FDTOVERLAYS</span>'''</p></li>
  
{| class="wikitable"
+
{| class="wikitable" style="width:800px;"
 
|-
 
|-
 
| style="text-align: left;"| '''PWM bus'''
 
| style="text-align: left;"| '''PWM bus'''
Line 8,181: Line 10,719:
 
| style="text-align: left;"| '''/dtbs/rockchip/overlay/rk3588-pwm14-m2.dtbo'''
 
| style="text-align: left;"| '''/dtbs/rockchip/overlay/rk3588-pwm14-m2.dtbo'''
 
|}
 
|}
 
+
</ol>
<ol style="list-style-type: lower-alpha;">
+
<ol start="2" style="list-style-type: lower-alpha;">
<li>Then '''restart the OPi OS Arch system'''</li></ol>
+
<li>Then '''<span style="color:#FF0000">restart the OPi OS Arch system</span>'''</li></ol>
 
+
</li></ol>
 
<!-- -->
 
<!-- -->
 
<ol start="4" style="list-style-type: decimal;">
 
<ol start="4" style="list-style-type: decimal;">
<li><p>After opening a pwm,In the'''/sys/class/pwm'''/, there will be an additional pwmchipX (x is a specific number). For example, after opening PWM14,viewing'''/sys/class/pwm/'''down Pwmchipx will change from two to three.</p>
+
<li><p>After opening a pwm,In the '''/sys/class/pwm'''/, there will be an additional pwmchipX (x is a specific number). For example, after opening PWM14,viewing '''/sys/class/pwm/''' down Pwmchipx will change from two to three.</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>[orangepi@orangepi ~]$ '''ls /sys/class/pwm/'''</p>
 
<p>[orangepi@orangepi ~]$ '''ls /sys/class/pwm/'''</p>
<p>pwmchip0 pwmchip1 pwmchip2</p></li>
+
<p>pwmchip0 pwmchip1 pwmchip2</p>
 +
|}
 +
</li>
 
<li><p>Which pwmchip corresponds to pwm14 above? Let's first check out the output of '''ls /sys/class/pwm/ -l''' command, as shown below:</p>
 
<li><p>Which pwmchip corresponds to pwm14 above? Let's first check out the output of '''ls /sys/class/pwm/ -l''' command, as shown below:</p>
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image533.png|575x78px|1010iring_001]]
+
[[File:plus5-img533.png]]
  
 
</div></li>
 
</div></li>
 
<li><p>Then from the table below, the base address of the PWM14 register is FEBF0020, and then look at the output of the '''ls /sys/class/pwm/ -l''' command. You can see that the link in PWMCHIP2 is connected to Febf0020.PWM, so the PWM14 corresponds to PWMCHIP2</p>
 
<li><p>Then from the table below, the base address of the PWM14 register is FEBF0020, and then look at the output of the '''ls /sys/class/pwm/ -l''' command. You can see that the link in PWMCHIP2 is connected to Febf0020.PWM, so the PWM14 corresponds to PWMCHIP2</p>
<p>[[File:media/image318.png|575x287px]]</p></li>
+
<p>[[File:plus5-img318.png]]</p></li>
<li><p>Then use the following command to allow the PWM14 to output a 50Hz square wave (please switch to the root user first, and then execute the following command)</p></li></ol>
+
<li><p>Then use the following command to allow the PWM14 to output a 50Hz square wave (please switch to the root user first, and then execute the following command)</p></li>
  
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
[root@orangepi ~]# '''echo 0 &gt; /sys/class/pwm/pwmchip2/export'''
 
[root@orangepi ~]# '''echo 0 &gt; /sys/class/pwm/pwmchip2/export'''
  
Line 8,207: Line 10,753:
  
 
[root@orangepi ~]# '''echo 1 &gt; /sys/class/pwm/pwmchip2/pwm0/enable'''
 
[root@orangepi ~]# '''echo 1 &gt; /sys/class/pwm/pwmchip2/pwm0/enable'''
 +
|}
  
[[File:media/image319.png|575x346px]]
+
[[File:plus5-img319.png]]
 
+
</ol>
 
<ol start="8" style="list-style-type: decimal;">
 
<ol start="8" style="list-style-type: decimal;">
<li>The other pwm testing methods in the pwm14 demonstration above are similar。</li></ol>
+
<li>The other pwm testing methods in the pwm14 demonstration above are similar.</li></ol>
  
 
<span id="cans-test-method"></span>
 
<span id="cans-test-method"></span>
 +
 
=== CAN's test method ===
 
=== CAN's test method ===
  
Line 8,221: Line 10,769:
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>As can be seen from the table below, the Canal bus available for Orange Pi 5 Plus is CAN0 and CAN1</p>
 
<li><p>As can be seen from the table below, the Canal bus available for Orange Pi 5 Plus is CAN0 and CAN1</p>
<p>[[File:media/image320.png|574x137px]]</p></li>
+
<p>[[File:plus5-img320.png]]</p></li>
 
<li><p>In the Linux system, the Can in 40 PIN is closed by default and needs to be opened manually to use. The detailed steps are shown below:</p>
 
<li><p>In the Linux system, the Can in 40 PIN is closed by default and needs to be opened manually to use. The detailed steps are shown below:</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li><p>First add the following configuration to &gt; the'''/boot/extlinux/extlinux.conf'''</p>
+
<li><p>First add the following configuration to the '''/boot/extlinux/extlinux.conf'''</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>[orangepi@orangepi ~]$ '''sudo vim /boot/extlinux/extlinux.conf'''</p>
 
<p>[orangepi@orangepi ~]$ '''sudo vim /boot/extlinux/extlinux.conf'''</p>
 
<p>LABEL Orange Pi</p>
 
<p>LABEL Orange Pi</p>
 
<p>LINUX /Image</p>
 
<p>LINUX /Image</p>
 
<p>FDT /dtbs/rockchip/rk3588-orangepi-5-plus.dtb</p>
 
<p>FDT /dtbs/rockchip/rk3588-orangepi-5-plus.dtb</p>
<p>'''FDTOVERLAYS /dtbs/rockchip/overlay/rk3588-can0-m0.dtbo'''</p>
+
<p>'''<span style="color:#FF0000">FDTOVERLAYS /dtbs/rockchip/overlay/rk3588-can0-m0.dtbo</span>'''</p>
<p>The red font demonstrates the configuration of the '''can0-m0'''. The other configurations are shown in the table below, and the corresponding dtbo configuration can be added to '''FDTOVERLAYS'''</p></li></ol>
+
|}
</li></ol>
+
<p>The red font demonstrates the configuration of the '''can0-m0'''. The other configurations are shown in the table below, and the corresponding dtbo configuration can be added to '''<span style="color:#FF0000">FDTOVERLAYS</span>'''</p></li>
  
{| class="wikitable"
+
{| class="wikitable" style="width:800px;"
 
|-
 
|-
 
| style="text-align: left;"| '''CAN bus'''
 
| style="text-align: left;"| '''CAN bus'''
Line 8,244: Line 10,795:
 
| style="text-align: left;"| '''/dtbs/rockchip/overlay/rk3588-can1-m0.dtbo'''
 
| style="text-align: left;"| '''/dtbs/rockchip/overlay/rk3588-can1-m0.dtbo'''
 
|}
 
|}
 
+
</ol>
 
<ol start="2" style="list-style-type: lower-alpha;">
 
<ol start="2" style="list-style-type: lower-alpha;">
<li>Then '''restart the OPI OS Arch system'''</li></ol>
+
<li>Then '''<span style="color:#FF0000">restart the OPI OS Arch system</span>'''</li></ol>
 
+
</li></ol>
 
<!-- -->
 
<!-- -->
 
<ol start="3" style="list-style-type: decimal;">
 
<ol start="3" style="list-style-type: decimal;">
 
<li><p>After entering the Linux system, using the '''sudo ifconfig -a''' command If you can see the CAN device node, it means that the CAN has been opened correctly</p>
 
<li><p>After entering the Linux system, using the '''sudo ifconfig -a''' command If you can see the CAN device node, it means that the CAN has been opened correctly</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>[orangepi@orangepi ~]$ '''sudo pacman -Syy net-tools'''</p>
 
<p>[orangepi@orangepi ~]$ '''sudo pacman -Syy net-tools'''</p>
 
<p>[orangepi@orangepi ~]$ '''sudo ifconfig -a'''</p>
 
<p>[orangepi@orangepi ~]$ '''sudo ifconfig -a'''</p>
 
<p>can0: flags=128&lt;NOARP&gt; mtu 16</p>
 
<p>can0: flags=128&lt;NOARP&gt; mtu 16</p>
<p>unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 10 (UNSPEC)</p>
+
::<p>unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 10 (UNSPEC)</p>
<p>RX packets 0 bytes 0 (0.0 B)</p>
+
::<p>RX packets 0 bytes 0 (0.0 B)</p>
<p>RX errors 0 dropped 0 overruns 0 frame 0</p>
+
::<p>RX errors 0 dropped 0 overruns 0 frame 0</p>
<p>TX packets 0 bytes 0 (0.0 B)</p>
+
::<p>TX packets 0 bytes 0 (0.0 B)</p>
<p>TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0</p>
+
::<p>TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0</p>
<p>device interrupt 94</p>
+
::<p>device interrupt 94</p>
 +
 
 +
 
 
<p>can1: flags=128&lt;NOARP&gt; mtu 16</p>
 
<p>can1: flags=128&lt;NOARP&gt; mtu 16</p>
<p>unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 10 (UNSPEC)</p>
+
::<p>unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 10 (UNSPEC)</p>
<p>RX packets 0 bytes 0 (0.0 B)</p>
+
::<p>RX packets 0 bytes 0 (0.0 B)</p>
<p>RX errors 0 dropped 0 overruns 0 frame 0</p>
+
::<p>RX errors 0 dropped 0 overruns 0 frame 0</p>
<p>TX packets 0 bytes 0 (0.0 B)</p>
+
::<p>TX packets 0 bytes 0 (0.0 B)</p>
<p>TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0</p>
+
::<p>TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0</p>
<p>device interrupt 95</p></li>
+
::<p>device interrupt 95</p>
<li><p>The pins corresponding to the Can0 and Can1 are</p></li></ol>
+
|}
 +
</li>
 +
<li><p>The pins corresponding to the Can0 and Can1 are</p></li>
  
{| class="wikitable"
+
{| class="wikitable" style="width:800px;"
 
|-
 
|-
 
|
 
|
Line 8,283: Line 10,841:
 
| style="text-align: left;"| '''Corresponding to No. 16 pin in 40pin'''
 
| style="text-align: left;"| '''Corresponding to No. 16 pin in 40pin'''
 
|}
 
|}
 
+
</ol>
 
<ol start="5" style="list-style-type: decimal;">
 
<ol start="5" style="list-style-type: decimal;">
<li>Use Canalyst-II analyzer to test CAN receiving messages, please refer to the content of the one-section of '''the Canalyst-II analyzer to test receive and send message'''</li></ol>
+
<li>Use Canalyst-II analyzer to test CAN receiving messages, please refer to the content of the one-section of [[Orange Pi 5 Plus#Use the CANalyst-II analyzer to test sending and receiving messages|'''the Canalyst-II analyzer to test receive and send message''']]</li></ol>
  
 
<span id="linux-sdkorangepi-build-instructions"></span>
 
<span id="linux-sdkorangepi-build-instructions"></span>
Line 8,294: Line 10,852:
 
== Compilation system requirements ==
 
== 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.'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''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.'''
+
'''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.'''</big>
 +
|}
  
 
<span id="compile-with-the-ubuntu22.04-system-of-the-development-board"></span>
 
<span id="compile-with-the-ubuntu22.04-system-of-the-development-board"></span>
Line 8,302: Line 10,864:
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
<li><p>The Linux SDK, namely '''orangepi-build''', supports running on the '''Ubuntu 22.04''' of the development board (other systems have not been tested), so before downloading orangepi-build, please first ensure that the Ubuntu version installed on the development board is Ubuntu 22.04. The command to check the Ubuntu version installed on the development board is as follows. If the Release field does not display '''22.04''', it means that the current Ubuntu version does not meet the requirements. Please replace the system before performing the following operations.</p>
+
<li><p>The Linux SDK, namely '''orangepi-build''', supports running on the '''<span style="color:#FF0000">Ubuntu 22.04</span>''' of the development board (other systems have not been tested), so before downloading orangepi-build, please first ensure that the Ubuntu version installed on the development board is Ubuntu 22.04. The command to check the Ubuntu version installed on the development board is as follows. If the Release field does not display '''<span style="color:#FF0000">22.04</span>''', it means that the current Ubuntu version does not meet the requirements. Please replace the system before performing the following operations.</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''lsb_release -a'''</p>
 
<p>orangepi@orangepi:~$ '''lsb_release -a'''</p>
 
<p>No LSB modules are available.</p>
 
<p>No LSB modules are available.</p>
 
<p>Distributor ID: Ubuntu</p>
 
<p>Distributor ID: Ubuntu</p>
 
<p>Description: Ubuntu 22.04.1 LTS</p>
 
<p>Description: Ubuntu 22.04.1 LTS</p>
<p>Release: '''22.04'''</p>
+
<p>Release: '''<span style="color:#FF0000">22.04</span>'''</p>
<p>Codename: jammy</p></li>
+
<p>Codename: jammy</p>
<li><p>'''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.'''</p></li></ol>
+
|}
 +
</li>
 +
<li><p>'''<span style="color:#FF0000">Since the source codes such as the kernel and U-boot are stored on GitHub, it is very important to ensure that the development board can download codes from GitHub normally when compiling the image.</span>'''</p></li></ol>
  
 
<span id="compile-with-x64-ubuntu22.04-computer"></span>
 
<span id="compile-with-x64-ubuntu22.04-computer"></span>
 +
 
=== Compile with x64 Ubuntu22.04 computer ===
 
=== Compile with x64 Ubuntu22.04 computer ===
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
<li><p>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.</p>
+
<li><p>The Linux SDK, '''orangepi-build''', supports running on computers with '''<span style="color:#FF0000">Ubuntu 22.04</span>''' 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 '''<span style="color:#FF0000">22.04</span>''', it means that the current Ubuntu version does not meet the requirements. Please replace the system before performing the following operations.</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>test@test:~$ '''lsb_release -a'''</p>
 
<p>test@test:~$ '''lsb_release -a'''</p>
 
<p>No LSB modules are available.</p>
 
<p>No LSB modules are available.</p>
 
<p>Distributor ID: Ubuntu</p>
 
<p>Distributor ID: Ubuntu</p>
 
<p>Description: Ubuntu 22.04 LTS</p>
 
<p>Description: Ubuntu 22.04 LTS</p>
<p>Release: '''22.04'''</p>
+
<p>Release: '''<span style="color:#FF0000">22.04</span>'''</p>
<p>Codename: jammy</p></li>
+
<p>Codename: jammy</p>
 +
|}
 +
</li>
 
<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>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><p>The download address of the installation image of Ubuntu 22.04 '''<span style="color:#FF0000">amd64</span>''' version is:</p>
<p>[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''']</p>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>'''https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/22.04/ubuntu-22.04-desktop-amd64.iso'''</p>
 
<p>or</p>
 
<p>or</p>
<p>'''https://repo.huaweicloud.com/ubuntu-releases/22.04/ubuntu-22.04.1-desktop-amd64.iso'''</p></li>
+
<p>'''https://repo.huaweicloud.com/ubuntu-releases/22.04/ubuntu-22.04.1-desktop-amd64.iso'''</p>
 +
|}
 +
</li>
 
<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>
 
<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;">
 
<ol style="list-style-type: lower-alpha;">
<li>For the method of replacing Tsinghua source, please refer to the &gt; instructions on this web page</li></ol>
+
<li>For the method of replacing Tsinghua source, please refer to the instructions on this web page</li>
</li></ol>
 
 
 
[https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/ '''https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/''']
 
  
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
'''https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/'''
 +
|}
 +
</ol>
 
<ol start="2" style="list-style-type: lower-alpha;">
 
<ol start="2" style="list-style-type: lower-alpha;">
 
<li><p>Note that the Ubuntu version needs to be switched to 22.04</p>
 
<li><p>Note that the Ubuntu version needs to be switched to 22.04</p>
<p>[[File:media/image534.png|576x241px]]</p></li>
+
<p>[[File:plus5-img534.png]]</p></li>
<li><p>The content of the '''<span class="mark">/etc/apt/sources.lis</span>'''t file that &gt; needs to be replaced is</p>
+
<li><p>The content of the '''<span class="mark">/etc/apt/sources.list</span>''' file that needs to be replaced is</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>test@test:~$ '''sudo mv /etc/apt/sources.list /etc/apt/sources.list.bak'''</p>
 
<p>test@test:~$ '''sudo mv /etc/apt/sources.list /etc/apt/sources.list.bak'''</p>
 
<p>test@test:~$ '''sudo vim /etc/apt/sources.list'''</p>
 
<p>test@test:~$ '''sudo vim /etc/apt/sources.list'''</p>
Line 8,349: Line 10,933:
 
<p>deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse</p>
 
<p>deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse</p>
 
<p># deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse</p>
 
<p># deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse</p>
 +
 +
 
<p># Pre-release software source, not recommended to enable</p>
 
<p># Pre-release software source, not recommended to enable</p>
 
<p># deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse</p>
 
<p># deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse</p>
<p># deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse</p></li>
+
<p># deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse</p>
<li><p>After the replacement, you need to update the package information &gt; and make sure there is no error</p>
+
|}
<p>test@test:~$ '''sudo apt update'''</p></li>
+
</li>
<li><p>'''In addition, since the source codes such as the kernel and U-boot &gt; are stored on GitHub, it is very important to ensure that the &gt; computer can download codes from GitHub normally when compiling &gt; the image.'''</p></li></ol>
+
<li><p>After the replacement, you need to update the package information and make sure there is no error</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>test@test:~$ '''sudo apt update'''</p>
 +
|}
 +
</li>
 +
<li><p>'''<span style="color:#FF0000">In addition, since the source codes such as the kernel and U-boot are stored on GitHub, it is very important to ensure that the computer can download codes from GitHub normally when compiling the image.</span>'''</p></li></ol>
 +
</li></ol>
 +
<span id="get-the-source-code-of-linux-sdk"></span>
  
<span id="get-the-source-code-of-linux-sdk"></span>
 
 
== Get the source code of linux sdk ==
 
== Get the source code of linux sdk ==
  
Line 8,363: Line 10,957:
  
 
# 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:
 
# 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:
 
+
::{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
test@test:~$ '''sudo apt-get update'''
 
test@test:~$ '''sudo apt-get update'''
  
Line 8,369: Line 10,965:
  
 
test@test:~$ '''git clone https://github.com/orangepi-xunlong/orangepi-build.git -b next'''
 
test@test:~$ '''git clone https://github.com/orangepi-xunlong/orangepi-build.git -b next'''
 
+
|}
'''Note that the Orange Pi 5 Plus 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.'''
+
::{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 
+
|-
 +
|
 +
<big>'''Note that the Orange Pi 5 Plus 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.'''</big>
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image535.png|576x298px|图片6]]
+
[[File:plus5-img535.png|700px|center]]
  
 
</div>
 
</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.'''
+
|}
 +
::{| 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 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.'''</big>
 +
|}
  
 
<ol start="2" style="list-style-type: decimal;">
 
<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>
+
<li>The u-boot and linux kernel versions currently used by the development board are as follows</li>
  
{| class="wikitable"
+
{| class="wikitable" style="width:800px;"  
 
|-
 
|-
 
| style="text-align: left;"| '''branch'''
 
| style="text-align: left;"| '''branch'''
Line 8,392: Line 10,995:
 
| style="text-align: left;"| '''linux5.10'''
 
| style="text-align: left;"| '''linux5.10'''
 
|}
 
|}
 +
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''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.'''
  
'''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.'''</big>
 
+
|}
'''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>
 
 
 
<ol start="3" style="list-style-type: decimal;">
 
<ol start="3" style="list-style-type: decimal;">
 
<li><p>orangepi-build will contain the following files and folders after downloading</p>
 
<li><p>orangepi-build will contain the following files and folders after downloading</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
 
<li><p>'''build.sh''': Compile the startup script</p></li>
 
<li><p>'''build.sh''': Compile the startup script</p></li>
<li><p>'''external''': Contains the configuration files needed to compile &gt; the image, specific scripts, and the source code of some &gt; programs, etc.</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>'''LICENSE''': GPL 2 license file</p></li>
 
<li><p>'''README.md''': orangepi-build documentation</p></li>
 
<li><p>'''README.md''': orangepi-build documentation</p></li>
 
<li><p>'''scripts''': General script for compiling linux images</p>
 
<li><p>'''scripts''': General script for compiling linux images</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>test@test:~/orangepi-build$ '''ls'''</p>
 
<p>test@test:~/orangepi-build$ '''ls'''</p>
 
<p>'''build.sh external LICENSE README.md scripts'''</p>
 
<p>'''build.sh external LICENSE README.md scripts'''</p>
<p>'''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.'''</p></li></ol>
+
|}
 +
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big><p>'''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.'''</p></big>
 +
|}
 +
</li></ol>
 
</li></ol>
 
</li></ol>
  
 
<span id="download-the-cross-compilation-toolchain"></span>
 
<span id="download-the-cross-compilation-toolchain"></span>
 +
 
=== Download the cross-compilation toolchain ===
 
=== 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.'''
+
{| 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 the Ubuntu22.04 of the development board will not download the cross-compilation toolchain. At this time, orangepi-build/toolchains will be an empty folder.'''</big>
 +
|}
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
Line 8,419: Line 11,039:
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image536.png|575x278px|选区_396]]
+
[[File:plus5-img536.png|1500px]]
  
 
</div></li>
 
</div></li>
 
<li><p>The image URL of the cross-compilation toolchain in China is the open source software image site of Tsinghua University</p>
 
<li><p>The image URL of the cross-compilation toolchain in China is the open source software image site of Tsinghua University</p>
<p>[https://mirrors.tuna.tsinghua.edu.cn/armbian-releases/_toolchain/ '''https://mirrors.tuna.tsinghua.edu.cn/armbian-releases/_toolchain/''']</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
'''https://mirrors.tuna.tsinghua.edu.cn/armbian-releases/_toolchain/'''
 +
|}
 +
</li>
 
<li><p>After '''toolchains''' is downloaded, it will contain multiple versions of cross-compilation toolchains, and the development board will only use two of them</p>
 
<li><p>After '''toolchains''' is downloaded, it will contain multiple versions of cross-compilation toolchains, and the development board will only use two of them</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>test@test:~/orangepi-build$ '''ls toolchains/'''</p>
 
<p>test@test:~/orangepi-build$ '''ls toolchains/'''</p>
 
<p>gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu</p>
 
<p>gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu</p>
Line 8,436: Line 11,064:
 
<p>gcc-linaro-aarch64-none-elf-4.8-2013.11_linux</p>
 
<p>gcc-linaro-aarch64-none-elf-4.8-2013.11_linux</p>
 
<p>gcc-linaro-arm-linux-gnueabihf-4.8-2014.04_linux</p>
 
<p>gcc-linaro-arm-linux-gnueabihf-4.8-2014.04_linux</p>
<p>gcc-linaro-arm-none-eabi-4.8-2014.04_linux</p></li>
+
<p>gcc-linaro-arm-none-eabi-4.8-2014.04_linux</p>
 +
|}
 +
</li>
 
<li><p>The cross-compilation toolchain used to compile the linux kernel source code is</p>
 
<li><p>The cross-compilation toolchain used to compile the linux kernel source code is</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
 
<li><p>linux5.10</p>
 
<li><p>linux5.10</p>
<p>'''gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu'''</p></li></ol>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>'''gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu'''</p>
 +
|}
 +
</li></ol>
 
</li>
 
</li>
 
<li><p>The cross-compilation tool chain used to compile the u-boot source code is</p>
 
<li><p>The cross-compilation tool chain used to compile the u-boot source code is</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
 
<li><p>v2017.09</p>
 
<li><p>v2017.09</p>
<p>'''gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu'''</p></li></ol>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>'''gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu'''</p>
 +
|}
 +
</li></ol>
 
</li></ol>
 
</li></ol>
  
 
<span id="orangepi-build-complete-directory-structure-description"></span>
 
<span id="orangepi-build-complete-directory-structure-description"></span>
 +
 
=== orangepi-build complete directory structure description ===
 
=== orangepi-build complete directory structure description ===
  
Line 8,454: Line 11,095:
 
<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>
 
<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;">
 
<ol style="list-style-type: lower-alpha;">
<li><p>The git warehouse where the linux kernel source code is stored &gt; is as follows:</p>
+
<li><p>The git warehouse where the linux kernel source code is stored is as follows:</p>
<p>'''https://github.com/orangepi-xunlong/linux-orangepi/tree/orange-pi-5.10-rk3588'''</p></li>
+
{| class="wikitable" style="width:800px;"
<li><p>The git warehouse where the u-boot source code is stored is as &gt; follows:</p>
+
|-
<p>'''https://github.com/orangepi-xunlong/u-boot-orangepi/tree/v2017.09-rk3588'''</p></li></ol>
+
|
 +
<p>'''https://github.com/orangepi-xunlong/linux-orangepi/tree/orange-pi-5.10-rk3588'''</p>
 +
|}
 +
</li>
 +
<li><p>The git warehouse where the u-boot source code is stored is as follows:</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>'''https://github.com/orangepi-xunlong/u-boot-orangepi/tree/v2017.09-rk3588'''</p>
 +
|}
 +
</li></ol>
 
</li>
 
</li>
 
<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>
 
<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>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>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.'''kerne'''l: stores the source code of the linux kernel. The folder named '''orange-pi-5.10-rk3588''' stores the kernel source code of the legacy branch of the RK3588/RK3588S series development boards. Please do not manually modify the name of the folder of the kernel source code. If it is modified, the kernel source code will be re-downloaded when the compilation system is running</p>
+
<p>c. '''kerne'''l: stores the source code of the linux kernel. The folder named '''orange-pi-5.10-rk3588''' stores the kernel source code of the legacy branch of the RK3588/RK3588S series development boards. Please do not manually modify the name of the folder of the kernel source code. If it is 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>d. '''LICENSE''': GPL 2 license file</p>
<p>e.'''README.md''': orangepi-build documentation</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>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>g. '''scripts''': general scripts for compiling linux images</p>
<p>h'''.toolchains''': store cross-compilation toolchain</p>
+
<p>h. '''toolchains''': store cross-compilation toolchain</p>
<p>i.'''u-boot''': Store 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 series development boards. Please do not name the folder name of the u-boot source code Manual modification, if modified, the u-boot source code will be re-downloaded when the compilation system is running</p>
+
<p>i. '''u-boot''': Store 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 series development boards. Please do not name the folder name of the u-boot source code Manual modification, if modified, the u-boot source code will be re-downloaded when the compilation system is running</p>
<p>j.'''userpatches''': Store configuration files needed to compile scripts</p>
+
<p>j. '''userpatches''': Store configuration files needed to compile scripts</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>test@test:~/orangepi-build$ '''ls'''</p>
 
<p>test@test:~/orangepi-build$ '''ls'''</p>
<p>'''build.sh external kernel LICENSE output README.md scripts toolchains u-boot userpatches'''</p></li></ol>
+
<p>'''build.sh &nbsp;&nbsp;&nbsp;&nbsp; external &nbsp;&nbsp;&nbsp;&nbsp; kernel &nbsp;&nbsp;&nbsp;&nbsp; LICENSE &nbsp;&nbsp;&nbsp;&nbsp; output &nbsp;&nbsp;&nbsp;&nbsp; README.md &nbsp;&nbsp;&nbsp;&nbsp; scripts &nbsp;&nbsp;&nbsp;&nbsp; toolchains &nbsp;&nbsp;&nbsp;&nbsp; u-boot &nbsp;&nbsp;&nbsp;&nbsp; userpatches'''</p>
 +
|}
 +
</li></ol>
  
 
<span id="compile-u-boot"></span>
 
<span id="compile-u-boot"></span>
 +
 
== Compile u-boot ==
 
== Compile u-boot ==
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>Run the build.sh script, remember to add sudo permission</p>
 
<li><p>Run the build.sh script, remember to add sudo permission</p>
<p>test@test:~/orangepi-build$ '''sudo ./build.sh'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>test@test:~/orangepi-build$ '''sudo ./build.sh'''</p>
 +
|}
 +
</li>
 
<li><p>Select '''<span class="mark">U-boot package</span>''', then press Enter</p>
 
<li><p>Select '''<span class="mark">U-boot package</span>''', then press Enter</p>
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image537.png|576x132px|选区_238]]
+
[[File:plus5-img537.png]]
  
 
</div></li>
 
</div></li>
Line 8,488: Line 11,150:
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image538.png|576x289px|6]]
+
[[File:plus5-img538.png]]
  
 
</div></li>
 
</div></li>
Line 8,494: Line 11,156:
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
 
<li><p>u-boot source code version</p>
 
<li><p>u-boot source code version</p>
<p>[ o.k. ] Compiling u-boot [ '''v2017.09''' ]</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>[ o.k. ] Compiling u-boot [ '''v2017.09''' ]</p>
 +
|}
 +
</li>
 
<li><p>The version of the cross-compilation toolchain</p>
 
<li><p>The version of the cross-compilation toolchain</p>
<p>[ o.k. ] Compiler version [ '''aarch64-linux-gnu-gcc 7.4.1''' ]</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>[ o.k. ] Compiler version [ '''aarch64-linux-gnu-gcc 7.4.1''' ]</p>
 +
|}
 +
</li>
 
<li><p>Path to the generated u-boot deb package</p>
 
<li><p>Path to the generated u-boot deb package</p>
<p>[ o.k. ] Target directory [ '''orangepi-build/output/debs/u-boot''' ]</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>[ o.k. ] Target directory [ '''orangepi-build/output/debs/u-boot''' ]</p>
 +
|}
 +
</li>
 
<li><p>The package name of the generated u-boot deb package</p>
 
<li><p>The package name of the generated u-boot deb package</p>
<p>[ o.k. ] File name [ '''linux-u-boot-legacy-orangepi5plus_1.0.0_arm64.deb''' ]</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>[ o.k. ] File name [ '''linux-u-boot-legacy-orangepi5plus_1.0.0_arm64.deb''' ]</p>
 +
|}
 +
</li>
 
<li><p>Compilation time</p>
 
<li><p>Compilation time</p>
<p>[ o.k. ] Runtime [ '''1 min''' ]</p></li>
+
{| class="wikitable" style="width:800px;"
<li><p>Repeat the command to compile u-boot, use the following command &gt; to start compiling u-boot directly without selecting through &gt; the graphical interface</p>
+
|-
<p>[ o.k. ] Repeat Build Options [ '''sudo ./build.sh BOARD=orangepi5plus BRANCH=legacy BUILD_OPT=u-boot KERNEL_CONFIGURE=no''' ]</p></li></ol>
+
|
</li>
+
<p>[ o.k. ] Runtime [ '''1 min''' ]</p>
 +
|}
 +
</li>
 +
<li><p>Repeat the command to compile u-boot, use the following command to start compiling u-boot directly without selecting through the graphical interface</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>[ o.k. ] Repeat Build Options [ '''sudo ./build.sh BOARD=orangepi5plus BRANCH=legacy BUILD_OPT=u-boot KERNEL_CONFIGURE=no''' ]</p>
 +
|}
 +
</li></ol>
 +
</li>
 
<li><p>View the u-boot deb package generated by compilation</p>
 
<li><p>View the u-boot deb package generated by compilation</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>test@test:~/orangepi-build$ '''ls output/debs/u-boot/'''</p>
 
<p>test@test:~/orangepi-build$ '''ls output/debs/u-boot/'''</p>
<p>linux-u-boot-legacy-orangepi5plus_1.0.0_arm64.deb</p></li>
+
<p>linux-u-boot-legacy-orangepi5plus_1.0.0_arm64.deb</p>
 +
|}
 +
</li>
 
<li><p>The files contained in the generated u-boot deb package are as follows</p>
 
<li><p>The files contained in the generated u-boot deb package are as follows</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
 
<li><p>Use the following command to decompress the deb package</p>
 
<li><p>Use the following command to decompress the deb package</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>test@test:~/orangepi-build$ '''cd output/debs/u-boot'''</p>
 
<p>test@test:~/orangepi-build$ '''cd output/debs/u-boot'''</p>
 
<p>test@test:~/orangepi_build/output/debs/u-boot$ $ '''sudo dpkg -x''' \</p>
 
<p>test@test:~/orangepi_build/output/debs/u-boot$ $ '''sudo dpkg -x''' \</p>
 
<p>'''linux-u-boot-legacy-orangepi5plus_1.0.0_arm64.deb . (Note that there is a &quot;.&quot; at the end of the command)'''</p>
 
<p>'''linux-u-boot-legacy-orangepi5plus_1.0.0_arm64.deb . (Note that there is a &quot;.&quot; at the end of the command)'''</p>
 
<p>test@test:~/orangepi_build/output/debs/u-boot$ '''ls'''</p>
 
<p>test@test:~/orangepi_build/output/debs/u-boot$ '''ls'''</p>
<p>linux-u-boot-legacy-orangepi5plus_1.0.0_arm64.deb '''usr'''</p></li>
+
<p>linux-u-boot-legacy-orangepi5plus_1.0.0_arm64.deb '''usr'''</p>
 +
|}
 +
</li>
 
<li><p>The decompressed file is as follows</p>
 
<li><p>The decompressed file is as follows</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>test@test:~/orangepi-build/output/debs/u-boot$ '''tree usr'''</p>
 
<p>test@test:~/orangepi-build/output/debs/u-boot$ '''tree usr'''</p>
 
<p>usr</p>
 
<p>usr</p>
 
<p>└── lib</p>
 
<p>└── lib</p>
<p>├── linux-u-boot-legacy-orangepi5plus_1.0.0_arm64</p>
+
:<p>├── linux-u-boot-legacy-orangepi5plus_1.0.0_arm64</p>
<p>│   ├── idbloader.img</p>
+
:<p>│   ├── idbloader.img</p>
<p>│   ├── rkspi_loader.img</p>
+
:<p>│   ├── rkspi_loader.img</p>
<p>│   └── u-boot.itb</p>
+
:<p>│   └── u-boot.itb</p>
<p>└── u-boot</p>
+
:<p>└── u-boot</p>
<p>├── LICENSE</p>
+
::<p>├── LICENSE</p>
<p>├── orangepi_5_plus_defconfig</p>
+
::<p>├── orangepi_5_plus_defconfig</p>
<p>└── platform_install.sh</p>
+
::<p>└── platform_install.sh</p>
<p>3 directories, 6 files</p></li></ol>
+
 
 +
 
 +
<p>3 directories, 6 files</p>
 +
|}
 +
</li></ol>
 
</li>
 
</li>
 
<li><p>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 '''(need This function can only be turned off after u-boot has been fully compiled, otherwise it will prompt that the source code of u-boot cannot be found. If the source code compressed package is downloaded from Google Drive, there is no such problem because the source code of u-boot cached)''', otherwise the changes made will be restored, the method is as follows:</p>
 
<li><p>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 '''(need This function can only be turned off after u-boot has been fully compiled, otherwise it will prompt that the source code of u-boot cannot be found. If the source code compressed package is downloaded from Google Drive, there is no such problem because the source code of u-boot cached)''', otherwise the changes made will be restored, the method is as follows:</p>
 
<p>Set the IGNORE_UPDATES variable in <span class="mark">userpatches/config-default.conf</span> to &quot;yes&quot;</p>
 
<p>Set the IGNORE_UPDATES variable in <span class="mark">userpatches/config-default.conf</span> to &quot;yes&quot;</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>test@test:~/orangepi-build$ '''vim userpatches/config-default.conf'''</p>
 
<p>test@test:~/orangepi-build$ '''vim userpatches/config-default.conf'''</p>
<p>IGNORE_UPDATES=&quot;'''yes'''&quot;</p></li>
+
<p>IGNORE_UPDATES=&quot;'''<span style="color:#FF0000">yes</span>'''&quot;</p>
 +
|}
 +
</li>
 
<li><p>When debugging u-boot code, you can use the following method to update u-boot in the linux image for testing</p>
 
<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;">
 
<ol style="list-style-type: lower-alpha;">
<li><p>Upload the compiled u-boot deb package to the linux system of &gt; the development board</p>
+
<li><p>Upload the compiled u-boot deb package to the linux system of the development board</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>test@test:~/orangepi-build$ '''cd output/debs/u-boot'''</p>
 
<p>test@test:~/orangepi-build$ '''cd output/debs/u-boot'''</p>
 
<p>test@test:~/orangepi_build/output/debs/u-boot$ '''scp \'''</p>
 
<p>test@test:~/orangepi_build/output/debs/u-boot$ '''scp \'''</p>
<p>'''linux-u-boot-legacy-orangepi5plus_1.0.0_arm64.deb [mailto:root@192.168.1.xxx:/root root@192.168.1.xxx:/root]'''</p></li>
+
<p>'''linux-u-boot-legacy-orangepi5plus_1.0.0_arm64.deb [mailto:root@192.168.1.xxx:/root root@192.168.1.xxx:/root]'''</p>
<li><p>Then log in to the development board and uninstall the deb &gt; package of u-boot installed</p>
+
|}
<p>root@orangepi:~# '''apt purge -y linux-u-boot-orangepi5plus-legacy'''</p></li>
+
</li>
 +
<li><p>Then log in to the development board and uninstall the deb package of u-boot installed</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>root@orangepi:~# '''apt purge -y linux-u-boot-orangepi5plus-legacy'''</p>
 +
|}
 +
</li>
 
<li><p>Install the new u-boot deb package just uploaded</p>
 
<li><p>Install the new u-boot deb package just uploaded</p>
<p>root@orangepi:~# '''dpkg -i''' '''linux-u-boot-legacy-orangepi5plus_1.0.0_arm64.deb'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>root@orangepi:~# '''dpkg -i''' '''linux-u-boot-legacy-orangepi5plus_1.0.0_arm64.deb'''</p>
 +
|}
 +
</li>
 
<li><p>Then run the nand-sata-install script</p>
 
<li><p>Then run the nand-sata-install script</p>
<p>root@orangepi:~# '''nand-sata-install'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>root@orangepi:~# '''nand-sata-install'''</p>
 +
|}
 +
</li>
 
<li><p>Then select '''<span class="mark">5 Install/Update the bootloader on SD/eMM</span>''' to update the u-boot in the TF card or '''<span class="mark">7 Install/Update the bootloader on SPI Flash</span>''' to update the u-boot in the SPI Flash</p>
 
<li><p>Then select '''<span class="mark">5 Install/Update the bootloader on SD/eMM</span>''' to update the u-boot in the TF card or '''<span class="mark">7 Install/Update the bootloader on SPI Flash</span>''' to update the u-boot in the SPI Flash</p>
<p>[[File:media/image539.png|317x154px]]</p></li>
+
<p>[[File:plus5-img539.png]]</p></li>
 
<li><p>After pressing the Enter key, a Warning will pop up first</p>
 
<li><p>After pressing the Enter key, a Warning will pop up first</p>
<p>[[File:media/image540.png|314x170px]]</p></li>
+
<p>[[File:plus5-img540.png]]</p></li>
<li><p>Press the Enter key again to start updating u-boot, and the &gt; following information will be displayed after the update is &gt; completed</p>
+
<li><p>Press the Enter key again to start updating u-boot, and the following information will be displayed after the update is completed</p>
<p>[[File:media/image541.png|223x125px]]</p></li>
+
<p>[[File:plus5-img541.png]]</p></li>
<li><p>Then you can restart the development board to test whether the &gt; modification of u-boot takes effect</p></li></ol>
+
<li><p>Then you can restart the development board to test whether the modification of u-boot takes effect</p></li></ol>
 
</li>
 
</li>
 
<li><p>Other useful information</p>
 
<li><p>Other useful information</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li><p>u-boot 2017.09 source code, the defconfig configuration file &gt; used by the development board is</p></li>
+
<li><p>u-boot 2017.09 source code, the defconfig configuration file used by the development board is</p></li>
<li><p>[https://github.com/orangepi-xunlong/u-boot-orangepi/blob/v2017.09-rk3588/configs/orangepi_5_plus_defconfig '''orangepi-build/u-boot/v2017.09-rk3588/configs/orangepi_5_plus_defconfig''']u-boot &gt; 2017.09 source code, the dts file used by the development &gt; board is</p></li></ol>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
[https://github.com/orangepi-xunlong/u-boot-orangepi/blob/v2017.09-rk3588/configs/orangepi_5_plus_defconfig '''orangepi-build/u-boot/v2017.09-rk3588/configs/orangepi_5_plus_defconfig''']
 +
|}
 +
<li><p>u-boot 2017.09 source code, the dts file used by the development board is</p></li>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
[https://github.com/orangepi-xunlong/u-boot-orangepi/blob/v2017.09-rk3588/arch/arm/dts/rk3588-orangepi-5-plus.dts '''orangepi-build/u-boot/v2017.09-rk3588/arch/arm/dts/rk3588-orangepi-5-plus.dts''']
 +
|}
 +
</ol>
 
</li></ol>
 
</li></ol>
  
<span id="orangepi-buildu-bootv2017.09-rk3588archarmdtsrk3588-orangepi-5-plus.dtscompile-the-linux-kernel"></span>
+
<span id="_Toc31297" class="anchor"></span>
== [https://github.com/orangepi-xunlong/u-boot-orangepi/blob/v2017.09-rk3588/arch/arm/dts/rk3588-orangepi-5-plus.dts '''orangepi-build/u-boot/v2017.09-rk3588/arch/arm/dts/rk3588-orangepi-5-plus.dts'''<span id="_Toc31297" class="anchor"></span>]Compile the linux kernel ==
+
 
 +
== Compile the linux kernel ==
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>Run the build.sh script, remember to add sudo permission</p>
 
<li><p>Run the build.sh script, remember to add sudo permission</p>
<p>test@test:~/orangepi-build$ '''sudo ./build.sh'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>test@test:~/orangepi-build$ '''sudo ./build.sh'''</p>
 +
|}
 +
</li>
 
<li><p>Select '''<span class="mark">Kernel package</span>''', then press Enter</p>
 
<li><p>Select '''<span class="mark">Kernel package</span>''', then press Enter</p>
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image542.png|575x116px|选区_240]]
+
[[File:plus5-img542.png]]
  
 
</div></li>
 
</div></li>
Line 8,576: Line 11,327:
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image538.png|576x289px|6]]
+
[[File:plus5-img538.png]]
  
 
</div></li>
 
</div></li>
 
<li><p>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.</p>
 
<li><p>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.</p>
<p>[[File:media/image543.png|576x87px]]</p></li>
+
<p>[[File:plus5-img543.png]]</p></li>
 
<li><p>If you choose to display the kernel configuration menu (the second option) in step 4), the kernel configuration interface opened by '''<span class="mark">make menuconfig</span>''' 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</p>
 
<li><p>If you choose to display the kernel configuration menu (the second option) in step 4), the kernel configuration interface opened by '''<span class="mark">make menuconfig</span>''' 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</p>
<p>[[File:media/image544.png|575x400px]]</p></li></ol>
+
<p>[[File:plus5-img544.png]]</p></li></ol>
  
 
<!-- -->
 
<!-- -->
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li><p>If you do not need to modify the configuration options of the &gt; kernel, when running the build.sh script, pass in &gt; '''<span class="mark">KERNEL_CONFIGURE=no</span>''' to temporarily block the pop-up &gt; kernel configuration interface</p>
+
<li><p>If you do not need to modify the configuration options of the kernel, when running the build.sh script, pass in '''<span class="mark">KERNEL_CONFIGURE=no</span>''' to temporarily block the pop-up kernel configuration interface</p>
<p>test@test:~/orangepi-build$ '''sudo ./build.sh KERNEL_CONFIGURE=no'''</p></li>
+
{| class="wikitable" style="width:800px;"
<li><p>You can also set '''<span class="mark">KERNEL_CONFIGURE=no</span>''' in the &gt; '''<span class="mark">orangepi-build/userpatches/config-default.conf</span>''' &gt; configuration file, which can permanently disable this function</p></li>
+
|-
<li><p>If the following error is displayed when compiling the kernel, it is &gt; because the terminal interface of the Ubuntu PC is too small to &gt; display the '''<span class="mark">make menuconfig</span>''' interface. Please &gt; maximize the terminal of the Ubuntu PC and run the build.sh script &gt; again</p>
+
|
<p>[[File:media/image545.png|574x234px]]</p></li></ol>
+
<p>test@test:~/orangepi-build$ '''sudo ./build.sh KERNEL_CONFIGURE=no'''</p>
 +
|}
 +
</li>
 +
<li><p>You can also set '''<span class="mark">KERNEL_CONFIGURE=no</span>''' in the '''<span class="mark">orangepi-build/userpatches/config-default.conf</span>''' 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 '''<span class="mark">make menuconfig</span>''' interface. Please maximize the terminal of the Ubuntu PC and run the build.sh script again</p>
 +
<p>[[File:plus5-img545.png]]</p></li></ol>
  
 
<!-- -->
 
<!-- -->
Line 8,597: Line 11,353:
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
 
<li><p>The version of the linux kernel source code</p>
 
<li><p>The version of the linux kernel source code</p>
<p>[ o.k. ] Compiling current kernel [ '''5.10.110''' ]</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>[ o.k. ] Compiling current kernel [ '''5.10.110''' ]</p>
 +
|}
 +
</li>
 
<li><p>The version of the cross-compilation toolchain used</p>
 
<li><p>The version of the cross-compilation toolchain used</p>
<p>[ o.k. ] Compiler version [ '''aarch64-none-linux-gnu-gcc 11.2.1''' ]</p></li>
+
{| class="wikitable" style="width:800px;"
<li><p>The configuration file used by the kernel by default and the &gt; path where it is stored</p>
+
|-
<p>[ o.k. ] Using kernel config file [ '''config/kernel/linux-rockchip-rk3588-legacy.config''' ]</p></li>
+
|
<li><p>The path of the deb package related to the kernel generated by &gt; compiling</p>
+
<p>[ o.k. ] Compiler version [ '''aarch64-none-linux-gnu-gcc 11.2.1''' ]</p>
<p>[ o.k. ] Target directory [ '''orangepi-build/output/debs/''' ]</p></li>
+
|}
 +
</li>
 +
<li><p>The configuration file used by the kernel by default and the path where it is stored</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>[ o.k. ] Using kernel config file [ '''config/kernel/linux-rockchip-rk3588-legacy.config''' ]</p>
 +
|}
 +
</li>
 +
<li><p>The path of the deb package related to the kernel generated by compiling</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>[ o.k. ] Target directory [ '''orangepi-build/output/debs/''' ]</p>
 +
|}
 +
</li>
 
<li><p>The package name of the compiled kernel image deb package</p>
 
<li><p>The package name of the compiled kernel image deb package</p>
<p>[ o.k. ] File name [ '''linux-image-legacy-rockchip-rk3588_1.0.0_arm64.deb''' ]</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>[ o.k. ] File name [ '''linux-image-legacy-rockchip-rk3588_1.0.0_arm64.deb''' ]</p>
 +
|}
 +
</li>
 
<li><p>The time used for compilation</p>
 
<li><p>The time used for compilation</p>
<p>[ o.k. ] Runtime [ '''5 min''' ]</p></li>
+
{| class="wikitable" style="width:800px;"
<li><p>Finally, the compilation command to repeatedly compile the &gt; kernel selected last time will be displayed. Use the following &gt; command to start compiling the kernel source code directly &gt; without selecting through the graphical interface</p>
+
|-
<p>[ o.k. ] Repeat Build Options [ '''sudo ./build.sh BOARD=orangepi5plus BRANCH=legacy BUILD_OPT=kernel KERNEL_CONFIGURE=no''' ]</p></li></ol>
+
|
 +
<p>[ o.k. ] Runtime [ '''5 min''' ]</p>
 +
|}
 +
</li>
 +
<li><p>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</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>[ o.k. ] Repeat Build Options [ '''sudo ./build.sh BOARD=orangepi5plus BRANCH=legacy BUILD_OPT=kernel KERNEL_CONFIGURE=no''' ]</p>
 +
|}
 +
</li></ol>
 
</li>
 
</li>
 
<li><p>View the deb package related to the kernel generated by compilation</p>
 
<li><p>View the deb package related to the kernel generated by compilation</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li><p>'''linux-dtb-legacy-rockchip-rk3588_1.0.0_arm64.deb''' Contains &gt; dtb files used by the kernel</p></li>
+
<li><p>'''linux-dtb-legacy-rockchip-rk3588_1.0.0_arm64.deb''' Contains dtb files used by the kernel</p></li>
<li><p>'''linux-headers-legacy-rockchip-rk3588_1.0.0_arm64.deb''' Include &gt; kernel headers</p></li>
+
<li><p>'''linux-headers-legacy-rockchip-rk3588_1.0.0_arm64.deb''' Include kernel headers</p></li>
<li><p>'''linux-image-legacy-rockchip-rk3588_1.0.0_arm64.deb''' Contains &gt; kernel images and kernel modules</p>
+
<li><p>'''linux-image-legacy-rockchip-rk3588_1.0.0_arm64.deb''' Contains kernel images and kernel modules</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>test@test:~/orangepi-build$ '''ls output/debs/linux-*'''</p>
 
<p>test@test:~/orangepi-build$ '''ls output/debs/linux-*'''</p>
<p>output/debs/linux-dtb-legacy-rockchip-rk3588_1.0.0_arm64.deb output/debs/linux-image-legacy-rockchip-rk3588_1.0.0_arm64.deb</p>
+
<p>output/debs/linux-dtb-legacy-rockchip-rk3588_1.0.0_arm64.deb</p>
<p>output/debs/linux-headers-legacy-rockchip-rk3588_1.0.0_arm64.deb</p></li></ol>
+
<p>output/debs/linux-image-legacy-rockchip-rk3588_1.0.0_arm64.deb</p>
 +
<p>output/debs/linux-headers-legacy-rockchip-rk3588_1.0.0_arm64.deb</p>
 +
|}
 +
</li></ol>
 
</li>
 
</li>
 
<li><p>The files contained in the generated linux-image deb package are as follows</p>
 
<li><p>The files contained in the generated linux-image deb package are as follows</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li><p>Use the following command to decompress the deb package</p>
+
<li><p>Use the following command to decompress the deb package</p></li>
<p>test@test:~/orangepi-build$ '''cd output/debs'''</p></li></ol>
+
{| class="wikitable" style="width:800px;"
</li></ol>
+
|-
 +
|
 +
<p>test@test:~/orangepi-build$ '''cd output/debs'''</p>
  
 
test@test:~/orangepi_build/output/debs$ '''mkdir test'''
 
test@test:~/orangepi_build/output/debs$ '''mkdir test'''
Line 8,641: Line 11,440:
  
 
'''boot etc lib''' linux-image-legacy-rockchip-rk3588_1.0.0_arm64.deb '''usr'''
 
'''boot etc lib''' linux-image-legacy-rockchip-rk3588_1.0.0_arm64.deb '''usr'''
 
+
|}
 +
</ol>
 
<ol start="2" style="list-style-type: lower-alpha;">
 
<ol start="2" style="list-style-type: lower-alpha;">
 
<li><p>The decompressed file is as follows</p>
 
<li><p>The decompressed file is as follows</p>
<p>test@test:~/orangepi-build/output/debs/test$ '''tree -L 2'''</p>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>test@test:~/orangepi-build/output/debs/test$ '''tree -L 2'''</p>
 
<p>.</p>
 
<p>.</p>
 
<p>├── boot</p>
 
<p>├── boot</p>
Line 8,656: Line 11,459:
 
<p>├── linux-image-legacy-rockchip-rk3588_1.0.0_arm64.deb</p>
 
<p>├── linux-image-legacy-rockchip-rk3588_1.0.0_arm64.deb</p>
 
<p>└── usr</p>
 
<p>└── usr</p>
<p>├── lib</p>
+
:<p>├── lib</p>
<p>└── share</p></li></ol>
+
:<p>└── share</p>
 
+
|}
 +
</li></ol>
 +
</li></ol>
 
<!-- -->
 
<!-- -->
 
<ol start="9" style="list-style-type: decimal;">
 
<ol start="9" style="list-style-type: decimal;">
 
<li><p>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 Drive, there is no such problem, because the source code of linux has been cached)''', otherwise the The changes made will be reverted as follows:</p>
 
<li><p>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 Drive, there is no such problem, because the source code of linux has been cached)''', otherwise the The changes made will be reverted as follows:</p>
 
<p>Set the IGNORE_UPDATES variable in '''<span class="mark">userpatches/config-default.conf</span>''' to &quot;yes&quot;</p>
 
<p>Set the IGNORE_UPDATES variable in '''<span class="mark">userpatches/config-default.conf</span>''' to &quot;yes&quot;</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>test@test:~/orangepi-build$ '''vim userpatches/config-default.conf'''</p>
 
<p>test@test:~/orangepi-build$ '''vim userpatches/config-default.conf'''</p>
<p>IGNORE_UPDATES=&quot;'''yes'''&quot;</p></li>
+
<p>IGNORE_UPDATES=&quot;'''<span style="color:#FF0000">yes</span>'''&quot;</p>
 +
|}
 +
</li>
 
<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>
 
<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;">
 
<ol style="list-style-type: lower-alpha;">
<li><p>Upload the deb package of the compiled linux kernel to the linux &gt; system of the development board</p>
+
<li><p>Upload the deb package of the compiled linux kernel to the linux system of the development board</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>test@test:~/orangepi-build$ '''cd output/debs'''</p>
 
<p>test@test:~/orangepi-build$ '''cd output/debs'''</p>
 
<p>test@test:~/orangepi-build/output/debs$ '''scp \'''</p>
 
<p>test@test:~/orangepi-build/output/debs$ '''scp \'''</p>
<p>'''linux-image-legacy-rockchip-rk3588_1.0.0_arm64.deb root@192.168.1.xxx:/root'''</p></li>
+
<p>'''linux-image-legacy-rockchip-rk3588_1.0.0_arm64.deb root@192.168.1.xxx:/root'''</p>
<li><p>Then log in to the development board and uninstall the deb &gt; package of the installed linux kernel</p>
+
|}
<p>root@orangepi:~# '''apt purge -y linux-image-legacy-rockchip-rk3588'''</p></li>
+
</li>
 +
<li><p>Then log in to the development board and uninstall the deb package of the installed linux kernel</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>root@orangepi:~# '''apt purge -y linux-image-legacy-rockchip-rk3588'''</p>
 +
|}
 +
</li>
 
<li><p>Install the deb package of the new linux kernel just uploaded</p>
 
<li><p>Install the deb package of the new linux kernel just uploaded</p>
<p>root@orangepi:~# '''dpkg -i linux-image-legacy-rockchip-rk3588_1.0.0_arm64.deb'''</p></li>
+
{| class="wikitable" style="width:800px;"
<li><p>Then restart the development board, and then check whether the &gt; kernel-related modifications have taken effect</p>
+
|-
<p>root@orangepi:~# '''reboot'''</p></li></ol>
+
|
 +
<p>root@orangepi:~# '''dpkg -i linux-image-legacy-rockchip-rk3588_1.0.0_arm64.deb'''</p>
 +
|}
 +
</li>
 +
<li><p>Then restart the development board, and then check whether the kernel-related modifications have taken effect</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>root@orangepi:~# '''reboot'''</p>
 +
|}
 +
</li></ol>
 
</li></ol>
 
</li></ol>
  
Line 8,683: Line 11,513:
 
<li><p>Other useful information</p>
 
<li><p>Other useful information</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li><p>The storage location of the kernel configuration file is as &gt; follows, please do not go to the kernel source code to find &gt; the kernel configuration file used by the development board</p></li>
+
<li><p>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</p></li>
<li><p>[https://github.com/orangepi-xunlong/orangepi-build/blob/next/external/config/kernel/linux-rockchip-rk3588-legacy.config '''orangepi-build/external/config/kernel/linux-rockchip-rk3588-legacy.config''']The &gt; location of the dts file used by the development board is</p></li></ol>
+
{| 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-rk3588-legacy.config''']
 +
|}
 +
<li><p>The location of the dts file used by the development board is</p></li>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
[https://github.com/orangepi-xunlong/linux-orangepi/blob/orange-pi-5.10-rk3588/arch/arm64/boot/dts/rockchip/rk3588-orangepi-5-plus.dts '''orangepi-build/kernel/orange-pi-5.10-rk3588/arch/arm64/boot/dts/rockchip/rk3588-orangepi-5-plus.dts''']
 +
|}
 +
</ol>
 
</li></ol>
 
</li></ol>
  
<span id="orangepi-buildkernelorange-pi-5.10-rk3588archarm64bootdtsrockchiprk3588-orangepi-5-plus.dtscompile-rootfs"></span>
+
<span id="_Toc25559" class="anchor"></span>
== [https://github.com/orangepi-xunlong/linux-orangepi/blob/orange-pi-5.10-rk3588/arch/arm64/boot/dts/rockchip/rk3588-orangepi-5-plus.dts '''orangepi-build/kernel/orange-pi-5.10-rk3588/arch/arm64/boot/dts/rockchip/rk3588-orangepi-5-plus.dts'''<span id="_Toc25559" class="anchor"></span>]Compile rootfs ==
+
 
 +
== Compile rootfs ==
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>Run the build.sh script, remember to add sudo permission</p>
 
<li><p>Run the build.sh script, remember to add sudo permission</p>
<p>test@test:~/orangepi-build$ '''sudo ./build.sh'''</p></li>
+
{| class="wikitable" style="width:800px;"
<li><p>Select '''<span class="mark">Rootfs and all deb packages</span>''', then press Enter</p></li></ol>
+
|-
 +
|
 +
<p>test@test:~/orangepi-build$ '''sudo ./build.sh'''</p>
 +
|}
 +
</li>
 +
<li><p>Select '''<span class="mark">Rootfs and all deb packages</span>''', then press Enter</p></li>
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image546.png|576x119px|选区_241]]
+
[[File:plus5-img546.png]]
  
</div>
+
</div></ol>
 
<ol start="3" style="list-style-type: decimal;">
 
<ol start="3" style="list-style-type: decimal;">
 
<li><p>Then select the model of the development board</p>
 
<li><p>Then select the model of the development board</p>
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image538.png|576x289px|6]]
+
[[File:plus5-img538.png]]
  
 
</div></li>
 
</div></li>
Line 8,710: Line 11,557:
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image547.png|575x180px|7]]
+
[[File:plus5-img547.png]]
  
 
</div></li>
 
</div></li>
 
<li><p>Then select the type of image</p>
 
<li><p>Then select the type of image</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li><p>'''Image with console interface (server)''' Indicates the image of &gt; the server version, which is relatively small</p></li>
+
<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 mirror image with &gt; a desktop, which is relatively large</p>
+
<li><p>'''Image with desktop environment''' Indicates a mirror image with a desktop, which is relatively large</p>
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image548.png|576x75px|选区_245]]
+
[[File:plus5-img548.png]]
  
 
</div></li></ol>
 
</div></li></ol>
Line 8,726: Line 11,573:
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image549.png|576x78px|选区_397]]
+
[[File:plus5-img549.png]]
  
 
</div></li>
 
</div></li>
Line 8,732: Line 11,579:
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image550.png|575x99px|Selection_001]]
+
[[File:plus5-img550.png]]
  
 
</div>
 
</div>
<p>[[File:media/image551.png|576x74px]]</p>
+
<p>[[File:plus5-img551.png]]</p>
 
<p>You can then select additional packages that need to be installed. Please press the Enter key to skip directly here.</p>
 
<p>You can then select additional packages that need to be installed. Please press the Enter key to skip directly here.</p>
<p>[[File:media/image552.png|575x264px]]</p></li>
+
<p>[[File:plus5-img552.png]]</p></li>
 
<li><p>Then it will start to compile rootfs, and some of the information prompted during compilation are as follows</p>
 
<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;">
 
<ol style="list-style-type: lower-alpha;">
 
<li><p>The type of rootfs</p>
 
<li><p>The type of rootfs</p>
<p>[ o.k. ] local not found [ Creating new rootfs cache for '''jammy''']</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>[ o.k. ] local not found [ Creating new rootfs cache for '''jammy''']</p>
 +
|}
 +
</li>
 
<li><p>The storage path of the compiled rootfs compressed package</p>
 
<li><p>The storage path of the compiled rootfs compressed package</p>
<p>[ o.k. ] Target directory [ '''external/cache/rootfs''' ]</p></li>
+
{| class="wikitable" style="width:800px;"
<li><p>The name of the rootfs compressed package generated by &gt; compilation</p>
+
|-
<p>[ o.k. ] File name [ '''jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4''' ]</p></li>
+
|
<li><p>The time used for compilation</p>
+
<p>[ o.k. ] Target directory [ '''external/cache/rootfs''' ]</p>
<p>[ o.k. ] Runtime [ '''13 min''' ]</p></li></ol>
+
|}
 
</li>
 
</li>
<li><p>View the rootfs compressed package generated by compilation</p>
+
<li><p>The name of the rootfs compressed package generated by compilation</p>
<ol style="list-style-type: lower-alpha;">
+
{| class="wikitable" style="width:800px;"  
<li><p>'''jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4''' is &gt; the rootfs compressed package, the meaning of each field of &gt; the name is</p>
+
|-
 +
|
 +
<p>[ o.k. ] File name [ '''jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4''' ]</p>
 +
|}
 +
</li>
 +
<li><p>The time used for compilation</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>[ o.k. ] Runtime [ '''13 min''' ]</p>
 +
|}
 +
</li></ol>
 +
</li>
 +
<li><p>View the rootfs compressed package generated by compilation</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li><p>'''jammy''' indicates the type of linux distribution of rootfs</p></li>
+
<li><p>'''jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4''' is the rootfs compressed package, the meaning of each field of the name is</p>
<li><p>'''xfce''' means rootfs is the type of desktop version, if it &gt; is '''cli''', it means the type of server version</p></li>
+
<ol style="list-style-type: none;">
<li><p>'''arm64''' represents the architecture type of rootfs</p></li>
+
<li><p>a) '''jammy''' indicates the type of linux distribution 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><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''' 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>
<li><p>'''jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4.list''' &gt; lists the package names of all packages installed by rootfs</p>
+
<li><p>'''jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4.list''' lists the package names of all packages installed by rootfs</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>test@test:~/orangepi-build$ '''ls external/cache/rootfs/'''</p>
 
<p>test@test:~/orangepi-build$ '''ls external/cache/rootfs/'''</p>
 
<p>'''jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4'''</p>
 
<p>'''jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4'''</p>
 
<p>jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4.current</p>
 
<p>jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4.current</p>
<p>jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4.list</p></li></ol>
+
<p>jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4.list</p>
 +
|}
 +
</li></ol>
 
</li>
 
</li>
 
<li><p>If the required rootfs already exists under '''<span class="mark">external/cache/rootfs</span>''', 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 '''<span class="mark">external/cache/rootfs</span>''' 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.</p></li></ol>
 
<li><p>If the required rootfs already exists under '''<span class="mark">external/cache/rootfs</span>''', 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 '''<span class="mark">external/cache/rootfs</span>''' 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.</p></li></ol>
  
 
<span id="compile-linux-image"></span>
 
<span id="compile-linux-image"></span>
 +
 
== Compile linux image ==
 
== Compile linux image ==
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>Run the build.sh script, remember to add sudo permission</p>
 
<li><p>Run the build.sh script, remember to add sudo permission</p>
<p>test@test:~/orangepi-build$ '''sudo ./build.sh'''</p></li>
+
{| class="wikitable" style="width:800px;"
<li><p>Select '''<span class="mark">Full OS image for flashing</span>''', then press Enter</p></li></ol>
+
|-
 +
|
 +
<p>test@test:~/orangepi-build$ '''sudo ./build.sh'''</p>
 +
|}
 +
</li>
 +
<li><p>Select '''<span class="mark">Full OS image for flashing</span>''', then press Enter</p></li>
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image553.png|576x128px|选区_242]]
+
[[File:plus5-img553.png]]
  
</div>
+
</div></ol>
 
<ol start="3" style="list-style-type: decimal;">
 
<ol start="3" style="list-style-type: decimal;">
 
<li><p>Then select the model of the development board</p>
 
<li><p>Then select the model of the development board</p>
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image538.png|576x289px|6]]
+
[[File:plus5-img538.png]]
  
 
</div></li>
 
</div></li>
Line 8,789: Line 11,667:
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image547.png|575x180px|7]]
+
[[File:plus5-img547.png]]
  
 
</div></li>
 
</div></li>
 
<li><p>Then select the type of image</p>
 
<li><p>Then select the type of image</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li><p>'''Image with console interface (server)''' Indicates the image of &gt; the server version, which is relatively small</p></li>
+
<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 &gt; desktop, which is relatively large</p>
+
<li><p>'''Image with desktop environment''' Indicates a image with a desktop, which is relatively large</p>
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image548.png|576x75px|选区_245]]
+
[[File:plus5-img548.png]]
  
 
</div></li></ol>
 
</div></li></ol>
Line 8,805: Line 11,683:
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image549.png|569x77px|选区_397]]
+
[[File:plus5-img549.png]]
  
 
</div></li>
 
</div></li>
Line 8,811: Line 11,689:
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image550.png|575x99px|Selection_001]]
+
[[File:plus5-img550.png]]
  
 
</div>
 
</div>
<p>[[File:media/image551.png|576x74px]]</p>
+
<p>[[File:plus5-img551.png]]</p>
 
<p>You can then select additional packages that need to be installed. Please press the Enter key to skip directly here.</p>
 
<p>You can then select additional packages that need to be installed. Please press the Enter key to skip directly here.</p>
<p>[[File:media/image552.png|575x264px]]</p></li>
+
<p>[[File:plus5-img552.png]]</p></li>
 
<li><p>Then it will start to compile the linux image. The general process of compilation is as follows</p>
 
<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>a. Initialize the compilation environment of Ubuntu PC and install the software packages required for the compilation process</p>
Line 8,836: Line 11,714:
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
 
<li><p>The storage path of the compiled image</p>
 
<li><p>The storage path of the compiled image</p>
<p>[ o.k. ] Done building [ '''output/images/orangepi5plus_1.0.0_debian_bullseye_linux5.10.110_xfce_desktop/orangepi5plus_1.0.0_debian_bullseye_linux5.10.110_xfce_desktop.img''' ]</p></li>
+
{| class="wikitable" style="width:800px;"
<li><p>Compilation time</p></li></ol>
+
|-
</li></ol>
+
|
 
+
<p>[ o.k. ] Done building '''[ output/images/orangepi5plus_1.0.0_debian_bullseye_linux5.10.110_xfce_desktop/orangepi5plus_1.0.0_debian_bullseye_linux5.10.110_xfce_desktop.img ]'''</p>
 +
|}
 +
</li>
 +
<li><p>Compilation time</p></li>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
'''[ o.k. ] Runtime [ 19 min ]'''
 
'''[ o.k. ] Runtime [ 19 min ]'''
 +
|}
 +
</ol>
  
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li><p>Repeat the command to compile the image, and use the following &gt; command to start compiling the image directly without selecting &gt; through the graphical interface</p>
+
<li><p>Repeat the command to compile the image, and use the following command to start compiling the image directly without selecting through the graphical interface</p>
<p>[ o.k. ] Repeat Build Options [ '''sudo ./build.sh BOARD=orangepi5plus BRANCH=legacy BUILD_OPT=image RELEASE=bullseye BUILD_MINIMAL=no BUILD_DESKTOP=no KERNEL_CONFIGURE=yes''' ]</p></li></ol>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>[ o.k. ] Repeat Build Options '''[ sudo ./build.sh BOARD=orangepi5plus BRANCH=legacy BUILD_OPT=image RELEASE=bullseye BUILD_MINIMAL=no BUILD_DESKTOP=no KERNEL_CONFIGURE=yes ]'''</p>
 +
|}
 +
</li></ol>
 +
</li></ol>
  
 
<span id="linux-development-manual"></span>
 
<span id="linux-development-manual"></span>
Line 8,855: Line 11,747:
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>First download the Linux kernel source code of the development board</p>
 
<li><p>First download the Linux kernel source code of the development board</p>
<p>'''orangepi@orangepi:~$ git clone --depth=1 -b orange-pi-5.10-rk3588 https://github.com/orangepi-xunlong/linux-orangepi'''</p></li></ol>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>'''orangepi@orangepi:~$ git clone --depth=1 -b orange-pi-5.10-rk3588 https://github.com/orangepi-xunlong/linux-orangepi'''</p>
 +
|}
  
'''If you have problems downloading the code from github, you can go to the official tool of the development board to download the compressed kernel source code package, then upload it to the linux system of the development board, and then decompress it.'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''If you have problems downloading the code from github, you can go to the official tool of the development board to download the compressed kernel source code package, then upload it to the linux system of the development board, and then decompress it.'''</big>
  
[[File:media/image554.png|223x86px]] [[File:media/image555.png|305x87px]]
+
[[File:plus5-img554.png]] [[File:plus5-img555.png]]
  
'''The command to decompress the compressed kernel source code package is:'''
+
<big>'''The command to decompress the compressed kernel source code package is:'''</big>
  
 
orangepi@orangepi:~$ '''tar zxf orange-pi-5.10-rk3588.tar.gz'''
 
orangepi@orangepi:~$ '''tar zxf orange-pi-5.10-rk3588.tar.gz'''
Line 8,867: Line 11,766:
 
orangepi@orangepi:~$ '''mv orange-pi-5.10-rk3588 linux-orangepi'''
 
orangepi@orangepi:~$ '''mv orange-pi-5.10-rk3588 linux-orangepi'''
  
'''After decompression, please execute the following command to synchronize the source code with github to ensure that the source code is in the latest state:'''
+
<big>'''After decompression, please execute the following command to synchronize the source code with github to ensure that the source code is in the latest state:'''</big>
  
 
orangepi@orangepi:~$ '''cd linux-orangepi'''
 
orangepi@orangepi:~$ '''cd linux-orangepi'''
  
 
orangepi@orangepi:~/linux-orangepi$ '''git pull'''
 
orangepi@orangepi:~/linux-orangepi$ '''git pull'''
 
+
|}
 +
</li></ol>
 
<ol start="2" style="list-style-type: decimal;">
 
<ol start="2" style="list-style-type: decimal;">
 
<li><p>Then configure the default kernel configuration</p>
 
<li><p>Then configure the default kernel configuration</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''cd linux-orangepi'''</p>
 
<p>orangepi@orangepi:~$ '''cd linux-orangepi'''</p>
<p>orangepi@orangepi:~/linux-orangepi$ '''make rockchip_linux_defconfig'''</p></li></ol>
+
<p>orangepi@orangepi:~/linux-orangepi$ '''make rockchip_linux_defconfig'''</p>
 
+
|}
'''The path of <span class="mark">rockchip_linux_defconfig</span> in the kernel source code is arch/arm64/configs/'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 
+
|-
 +
|
 +
<big>'''The path of <span class="mark">rockchip_linux_defconfig</span> in the kernel source code is arch/arm64/configs/'''</big>
 +
|}
 +
</li></ol>
 +
 
 
<ol start="3" style="list-style-type: decimal;">
 
<ol start="3" style="list-style-type: decimal;">
 
<li><p>Then compile the kernel source code</p>
 
<li><p>Then compile the kernel source code</p>
<p>orangepi@orangepi:~/linux-orangepi$ '''make -j10'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>orangepi@orangepi:~/linux-orangepi$ '''make -j10'''</p>
 +
|}
 +
</li>
 
<li><p>Then install the kernel module</p>
 
<li><p>Then install the kernel module</p>
<p>orangepi@orangepi:~/linux-orangepi$ '''sudo make modules_install'''</p></li></ol>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>orangepi@orangepi:~/linux-orangepi$ '''sudo make modules_install'''</p>
 +
|}
 +
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''The installation path of the kernel module is:/lib/modules'''
  
'''The installation path of the kernel module is:/lib/modules'''
+
'''After executing the sudo make modules_install command, you can see that there will be an additional kernel module folder under /lib/modules/:'''</big>
 
 
'''After executing the sudo make modules_install command, you can see that there will be an additional kernel module folder under /lib/modules/:'''
 
  
 
orangepi@orangepi5plus:~$ '''ls /lib/modules'''
 
orangepi@orangepi5plus:~$ '''ls /lib/modules'''
  
'''5.10.110+''' 5.10.110-rockchip-rk3588
+
'''<span style="color:#FF0000">5.10.110+</span>''' 5.10.110-rockchip-rk3588
 +
|}
 +
</li></ol>
  
 
<ol start="5" style="list-style-type: decimal;">
 
<ol start="5" style="list-style-type: decimal;">
 
<li><p>Then install the kernel image and uInitrd</p>
 
<li><p>Then install the kernel image and uInitrd</p>
<p>orangepi@orangepi:~/linux-orangepi$ '''sudo make install'''</p></li></ol>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>orangepi@orangepi:~/linux-orangepi$ '''sudo make install'''</p>
 +
|}
  
'''The installation path of the kernel image and uInitrd is:/boot/'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''The installation path of the kernel image and uInitrd is:/boot/'''
  
'''After executing the sudo make install command, you can see that there will be one more kernel file under /boot/:'''
+
'''After executing the sudo make install command, you can see that there will be one more kernel file under /boot/:'''</big>
  
 
orangepi@orangepi5plus:~/orange-pi-5.10-rk3588$ '''ls /boot/vmlinuz*'''
 
orangepi@orangepi5plus:~/orange-pi-5.10-rk3588$ '''ls /boot/vmlinuz*'''
  
'''/boot/vmlinuz-5.10.110+''' /boot/vmlinuz-5.10.110-rockchip-rk3588<br />
+
'''<span style="color:#FF0000">/boot/vmlinuz-5.10.110+</span>''' /boot/vmlinuz-5.10.110-rockchip-rk3588<br />
 
<br />
 
<br />
'''The file /boot/Image is actually loaded when the system starts, and Image is a copy of the vmlinuz file'''
+
<big>'''The file /boot/Image is actually loaded when the system starts, and Image is a copy of the vmlinuz file'''</big>
 +
|}
 +
</li></ol>
  
 
<ol start="6" style="list-style-type: decimal;">
 
<ol start="6" style="list-style-type: decimal;">
 
<li><p>Then install the dtb file into '''/boot/dtb'''</p>
 
<li><p>Then install the dtb file into '''/boot/dtb'''</p>
<p>orangepi@orangepi:~/linux-orangepi$ '''sudo make dtbs_install INSTALL_DTBS_PATH=/boot/dtb/'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>orangepi@orangepi:~/linux-orangepi$ '''sudo make dtbs_install INSTALL_DTBS_PATH=/boot/dtb/'''</p>
 +
|}
 +
</li>
 
<li><p>Then restart the Linux system and the newly compiled kernel will be loaded</p>
 
<li><p>Then restart the Linux system and the newly compiled kernel will be loaded</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>orangepi@orangepi:~$ '''uname -r'''</p>
 
<p>orangepi@orangepi:~$ '''uname -r'''</p>
<p>'''5.10.110+'''</p></li></ol>
+
<p>'''5.10.110+'''</p>
 +
|}
 +
</li></ol>
  
 
<span id="openwrt-system-instructions"></span>
 
<span id="openwrt-system-instructions"></span>
Line 8,922: Line 11,862:
 
== OpenWRT version ==
 
== OpenWRT version ==
  
{| class="wikitable"
+
{| class="wikitable" style="width:800px;"
 
|-
 
|-
 
| style="text-align: left;"| '''OpenWRT version'''
 
| style="text-align: left;"| '''OpenWRT version'''
Line 8,932: Line 11,872:
  
 
<span id="openwrt-adaptation"></span>
 
<span id="openwrt-adaptation"></span>
 +
 
== OpenWRT Adaptation ==
 
== OpenWRT Adaptation ==
  
{| class="wikitable"
+
{| class="wikitable" style="width:800px;"
 
|-
 
|-
 
| style="text-align: left;"| '''Function'''
 
| style="text-align: left;"| '''Function'''
Line 8,983: Line 11,924:
  
 
<span id="the-first-start-to-expand-rootfs"></span>
 
<span id="the-first-start-to-expand-rootfs"></span>
 +
 
== The first start to expand rootfs ==
 
== The first start to expand rootfs ==
  
Line 8,988: Line 11,930:
 
<li><p>When the OpenWRT system is started for the first time, the '''resize-rootfs.sh''' script will be executed to expand the rootfs, and it will automatically restart after the expansion is completed</p></li>
 
<li><p>When the OpenWRT system is started for the first time, the '''resize-rootfs.sh''' script will be executed to expand the rootfs, and it will automatically restart after the expansion is completed</p></li>
 
<li><p>After logging in to the system, you can use the '''df -h''' command to view the size of rootfs. If it is consistent with the actual capacity of the storage device (TF card, eMMC or NVME SSD), it means that the automatic expansion is running correctly</p>
 
<li><p>After logging in to the system, you can use the '''df -h''' command to view the size of rootfs. If it is consistent with the actual capacity of the storage device (TF card, eMMC or NVME SSD), it means that the automatic expansion is running correctly</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>root@OpenWrt:~# df -h</p>
 
<p>root@OpenWrt:~# df -h</p>
<p>Filesystem Size Used Available Use% Mounted on</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;">Available </span><span style="margin-right: 50px;">Use% Mounted on</span><br>
<p>'''/dev/root 14.8G 14.7G 91.6M 99% /'''</p>
+
<span style="margin-right: 80px;color:#FF0000">'''/dev/root'''</span><span style="margin-right: 50px;color:#FF0000">'''14.8G'''</span><span style="margin-right: 30px;color:#FF0000">'''14.7G'''</span><span style="margin-right: 70px;color:#FF0000">'''91.6M'''</span><span style="margin-right: 90px;color:#FF0000">'''99% /'''</span><br>
<p>tmpfs 495.5M 6.1M 489.4M 1% /tmp</p>
+
<span style="margin-right: 100px;">tmpfs </span><span style="margin-right: 50px;">495.5M</span><span style="margin-right: 30px;">6.1M</span><span style="margin-right: 70px;">489.4M</span><span style="margin-right: 90px;">1% /tmp</span><br>
<p>tmpfs 512.0K 0 512.0K 0% /dev</p>
+
<span style="margin-right: 100px;">tmpfs </span><span style="margin-right: 60px;">512.0K</span><span style="margin-right: 50px;">0</span><span style="margin-right: 70px;">512.0K</span><span style="margin-right: 90px;">0% /dev</span><br>
<p>/dev/root 14.8G 14.7G 91.6M 99% /opt/docker</p></li></ol>
+
<span style="margin-right: 80px;">/dev/root</span><span style="margin-right: 50px;">14.8G</span><span style="margin-right: 30px;">14.7G </span><span style="margin-right: 70px;">91.6M</span><span style="margin-right: 90px;">99% /opt/docker</span><br>
 +
|}</li></ol>
  
 
<span id="how-to-log-in-to-the-system"></span>
 
<span id="how-to-log-in-to-the-system"></span>
 +
 
== How to log in to the system ==
 
== How to log in to the system ==
  
Line 9,006: Line 11,953:
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image556.png|576x290px|9D229F96-887B-4c6b-8E6E-681C9994DFA0]]
+
[[File:plus5-img556.png]]
  
 
</div></li></ol>
 
</div></li></ol>
Line 9,013: Line 11,960:
 
=== Log in to the system via SSH ===
 
=== Log in to the system via SSH ===
  
'''Please note that in the OpenWrt system of Orange Pi 5 Plus, the network port near the typeC power interface is configured as a WAN port by default, and the network port near the HDMI port is configured as a LAN port by default.'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''Please note that in the OpenWrt system of Orange Pi 5 Plus, the network port near the typeC power interface is configured as a WAN port by default, and the network port near the HDMI port is configured as a LAN port by default.'''</big>
 +
|}
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
Line 9,019: Line 11,970:
 
<li><p>The LAN port IP of the default board is set to '''<span class="mark">192.168.2.1</span>''', so the computer can obtain the IP address starting with '''<span class="mark">192.168.2</span>''' at this time</p></li>
 
<li><p>The LAN port IP of the default board is set to '''<span class="mark">192.168.2.1</span>''', so the computer can obtain the IP address starting with '''<span class="mark">192.168.2</span>''' at this time</p></li>
 
<li><p>If the computer is installed with an Ubuntu system, you can execute the following command to log in to the system through SSH. By default, you can log in directly without a password</p>
 
<li><p>If the computer is installed with an Ubuntu system, you can execute the following command to log in to the system through SSH. By default, you can log in directly without a password</p>
<p>test@ubuntu:~$ '''ssh root@192.168.2.1'''</p></li>
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 +
<p>test@ubuntu:~$ '''ssh root@192.168.2.1'''</p>
 +
|}
 +
</li>
 
<li><p>After successfully logging in to the system, the display is as shown in the figure below</p>
 
<li><p>After successfully logging in to the system, the display is as shown in the figure below</p>
<p>[[File:media/image557.png|553x330px]]</p></li>
+
<p>[[File:plus5-img557.png]]</p></li>
 
<li><p>If the computer is installed with Windows system, you can log in by referring to the method introduced in the section of SSH remote login to the development board under Windows.</p></li></ol>
 
<li><p>If the computer is installed with Windows system, you can log in by referring to the method introduced in the section of SSH remote login to the development board under Windows.</p></li></ol>
  
 
<span id="log-in-to-the-luci-management-interface"></span>
 
<span id="log-in-to-the-luci-management-interface"></span>
 +
 
=== Log in to the LuCI management interface ===
 
=== Log in to the LuCI management interface ===
  
'''Please note that the OpenWRT system configures the network port near the Type-C power port as a WAN port by default, and the network port near the HDMI port as a LAN port by default.'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''Please note that the OpenWRT system configures the network port near the Type-C power port as a WAN port by default, and the network port near the HDMI port as a LAN port by default.'''</big>
  
[[File:media/image558.png|357x139px]]
+
[[File:plus5-img558-1.png|center]]
 +
|}
  
 
# First connect the LAN port of the board to the network port of the computer with a network cable, so that the network port of the computer can obtain an IP address through DHCP
 
# First connect the LAN port of the board to the network port of the computer with a network cable, so that the network port of the computer can obtain an IP address through DHCP
Line 9,037: Line 11,998:
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image559.png|552x135px|2023-04-21 14-41-42 的屏幕截图]]
+
::[[File:plus5-img559.png|1500px]]
  
 
</div>
 
</div>
 
<ol start="4" style="list-style-type: decimal;">
 
<ol start="4" style="list-style-type: decimal;">
<li><p>'''The OpenWrt system does not set a password by default''', so just click the '''<span class="mark">login</span>''' button. After successful login, the interface is displayed as shown in the figure below</p>
+
<li><p>'''<span style="color:#FF0000">The OpenWrt system does not set a password by default</span>''', so just click the '''<span class="mark">login</span>''' button. After successful login, the interface is displayed as shown in the figure below</p>
<p>[[File:media/image560.png|552x295px]]</p></li></ol>
+
<p>[[File:plus5-img560.png]]</p></li></ol>
  
 
<span id="log-in-to-the-terminal-through-the-luci-management-interface"></span>
 
<span id="log-in-to-the-terminal-through-the-luci-management-interface"></span>
 +
 
=== Log in to the terminal through the LuCI management interface ===
 
=== Log in to the terminal through the LuCI management interface ===
  
'''Please note that the OpenWRT system configures the network port near the Type-C power port as a WAN port by default, and the network port near the HDMI port as a LAN port by default.'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 
+
|-
[[File:media/image558.png|357x139px]]
+
|
 +
<big>'''Please note that the OpenWRT system configures the network port near the Type-C power port as a WAN port by default, and the network port near the HDMI port as a LAN port by default.'''</big>
 +
 
 +
[[File:plus5-img558-1.png|center]]
 +
|}
  
 
# First connect the LAN port of the board to the network port of the computer with a network cable, so that the network port of the computer can obtain an IP address through DHCP
 
# First connect the LAN port of the board to the network port of the computer with a network cable, so that the network port of the computer can obtain an IP address through DHCP
Line 9,057: Line 12,023:
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image559.png|552x135px|2023-04-21 14-41-42 的屏幕截图]]
+
::[[File:plus5-img559.png|1500px]]
  
 
</div>
 
</div>
 
<ol start="4" style="list-style-type: decimal;">
 
<ol start="4" style="list-style-type: decimal;">
<li>Select &quot;'''Terminal'''&quot; in the &quot;'''Service'''&quot; column of the navigation bar and click to enter</li></ol>
+
<li>Select &quot;'''Terminal'''&quot; in the &quot;'''Service'''&quot; column of the navigation bar and click to enter</li>
 
 
[[File:media/image561.png|576x227px]]
 
  
 +
[[File:plus5-img561.png]]
 +
</ol>
 
<ol start="5" style="list-style-type: decimal;">
 
<ol start="5" style="list-style-type: decimal;">
 
<li><p>At this time, the terminal interface is as shown in the figure below</p>
 
<li><p>At this time, the terminal interface is as shown in the figure below</p>
<p>[[File:media/image562.png|576x407px]]</p></li>
+
<p>[[File:plus5-img562.png]]</p></li>
 
<li><p>Enter the user name root to log in</p>
 
<li><p>Enter the user name root to log in</p>
<p>[[File:media/image563.png|575x334px]]</p></li></ol>
+
<p>[[File:plus5-img563.png]]</p></li></ol>
  
 
<span id="use-ip-address-port-number-to-log-in-to-the-terminal"></span>
 
<span id="use-ip-address-port-number-to-log-in-to-the-terminal"></span>
 +
 
=== Use IP address + port number to log in to the terminal ===
 
=== Use IP address + port number to log in to the terminal ===
  
'''Please note that the OpenWRT system configures the network port near the Type-C power port as a WAN port by default, and the network port near the HDMI port as a LAN port by default.'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''Please note that the OpenWRT system configures the network port near the Type-C power port as a WAN port by default, and the network port near the HDMI port as a LAN port by default.'''</big>
  
[[File:media/image558.png|357x139px]]
+
[[File:plus5-img558-1.png|center]]
 +
|}
  
 
# First connect the LAN port of the board to the network port of the computer with a network cable, so that the network port of the computer can obtain an IP address through DHCP
 
# First connect the LAN port of the board to the network port of the computer with a network cable, so that the network port of the computer can obtain an IP address through DHCP
 
# The LAN port IP of the default board is set to '''192.168.2.1''', so the computer can obtain the IP address starting with '''192.168.2''' at this time
 
# The LAN port IP of the default board is set to '''192.168.2.1''', so the computer can obtain the IP address starting with '''192.168.2''' at this time
# Then enter [http://192.168.2.1:7681/ '''192.168.2.1:7681'''] in the browser to log in to the OpenWRT terminal
+
# Then enter '''192.168.2.1:7681''' in the browser to log in to the OpenWRT terminal
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image564.png|553x296px|2023-04-21 14-54-26 的屏幕截图]]
+
::[[File:plus5-img564.png]]
  
 
</div>
 
</div>
 
<span id="how-to-modify-the-ip-address-of-the-lan-port-through-the-command-line"></span>
 
<span id="how-to-modify-the-ip-address-of-the-lan-port-through-the-command-line"></span>
 +
 
== How to modify the IP address of the LAN port through the command line ==
 
== How to modify the IP address of the LAN port through the command line ==
  
Line 9,093: Line 12,065:
 
# First use the following command to obtain the network configuration, the corresponding configuration file is '''/etc/config/network''', you can see that the value of '''network.lan.ipaddr''' is '''192.168.2.1'''
 
# First use the following command to obtain the network configuration, the corresponding configuration file is '''/etc/config/network''', you can see that the value of '''network.lan.ipaddr''' is '''192.168.2.1'''
  
 +
::{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
root@OpenWrt:~# '''uci show network'''
 
root@OpenWrt:~# '''uci show network'''
  
Line 9,103: Line 12,078:
 
network.lan.proto='static'
 
network.lan.proto='static'
  
'''network.lan.ipaddr='192.168.2.1''''
+
'''<span style="color:#FF0000">network.lan.ipaddr='192.168.2.1'</span>'''
  
 
network.lan.netmask='255.255.255.0'
 
network.lan.netmask='255.255.255.0'
Line 9,110: Line 12,085:
  
 
.…
 
.…
 +
|}
  
 
<ol start="3" style="list-style-type: decimal;">
 
<ol start="3" style="list-style-type: decimal;">
<li>Then enter the following command to modify the item '''network.lan.ipaddr'''</li></ol>
+
<li>Then enter the following command to modify the item '''network.lan.ipaddr'''</li>
 
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
root@OpenWrt:~# '''uci set network.lan.ipaddr='192.168.100.1''''
 
root@OpenWrt:~# '''uci set network.lan.ipaddr='192.168.100.1''''
 
+
|}
 +
</ol>
 
<ol start="4" style="list-style-type: decimal;">
 
<ol start="4" style="list-style-type: decimal;">
<li>Then enter the following command to complete the submission, that is, write to the configuration file</li></ol>
+
<li>Then enter the following command to complete the submission, that is, write to the configuration file</li>
 
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
root@OpenWrt:~# '''uci commit'''
 
root@OpenWrt:~# '''uci commit'''
 +
|}
  
 
If the IP address in red font is consistent with the one to be set, it means that the modification is successful
 
If the IP address in red font is consistent with the one to be set, it means that the modification is successful
 
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
root@OpenWrt:~# '''cat /etc/config/network'''
 
root@OpenWrt:~# '''cat /etc/config/network'''
  
Line 9,129: Line 12,113:
 
config interface 'lan'
 
config interface 'lan'
  
option device 'br-lan'
+
::option device 'br-lan'
  
option proto 'static'
+
::option proto 'static'
  
option netmask '255.255.255.0'
+
::option netmask '255.255.255.0'
  
option ip6assign '60'
+
::option ip6assign '60'
  
'''option ipaddr '192.168.100.1''''
+
::'''<span style="color:#FF0000">option ipaddr '192.168.100.1'</span>'''
  
 
...
 
...
 
+
|}
 +
</ol>
 
<ol start="5" style="list-style-type: decimal;">
 
<ol start="5" style="list-style-type: decimal;">
<li>Restart the network through ubus, please refer to the official document for the usage instructions of ubus</li></ol>
+
<li>Restart the network through ubus, please refer to the official document for the usage instructions of ubus</li>
 
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
root@OpenWrt:~# '''ubus call network restart'''
 
root@OpenWrt:~# '''ubus call network restart'''
 
+
|}
 +
</ol>
 
<ol start="6" style="list-style-type: decimal;">
 
<ol start="6" style="list-style-type: decimal;">
 
<li><p>At this point, enter the command and you can see that the IP of the LAN port is '''192.168.100.1'''</p>
 
<li><p>At this point, enter the command and you can see that the IP of the LAN port is '''192.168.100.1'''</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>root@OpenWrt:~# '''ifconfig br-lan'''</p>
 
<p>root@OpenWrt:~# '''ifconfig br-lan'''</p>
 
<p>br-lan Link encap:Ethernet HWaddr FE:55:13:A3:EF:E7</p>
 
<p>br-lan Link encap:Ethernet HWaddr FE:55:13:A3:EF:E7</p>
<p>inet addr:'''192.168.100.1''' Bcast:192.168.100.255 Mask:255.255.255.0</p>
+
::<p>inet addr:'''<span style="color:#FF0000">192.168.100.1</span>''' Bcast:192.168.100.255 Mask:255.255.255.0</p>
<p>inet6 addr: fd60:c4cd:1033::1/60 Scope:Global</p>
+
::<p>inet6 addr: fd60:c4cd:1033::1/60 Scope:Global</p>
<p>UP BROADCAST MULTICAST MTU:1500 Metric:1</p>
+
::<p>UP BROADCAST MULTICAST MTU:1500 Metric:1</p>
<p>RX packets:0 errors:0 dropped:0 overruns:0 frame:0</p>
+
::<p>RX packets:0 errors:0 dropped:0 overruns:0 frame:0</p>
<p>TX packets:3 errors:0 dropped:0 overruns:0 carrier:0</p>
+
::<p>TX packets:3 errors:0 dropped:0 overruns:0 carrier:0</p>
<p>collisions:0 txqueuelen:1000</p>
+
::<p>collisions:0 txqueuelen:1000</p>
<p>RX bytes:0 (0.0 B) TX bytes:370 (370.0 B)</p></li></ol>
+
::<p>RX bytes:0 (0.0 B) TX bytes:370 (370.0 B)</p>
 +
|}
 +
</li></ol>
  
 
<span id="how-to-modify-the-root-password"></span>
 
<span id="how-to-modify-the-root-password"></span>
 +
 
== How to modify the root password ==
 
== How to modify the root password ==
  
Line 9,166: Line 12,160:
 
# First enter passwd root on the command line of the system, and the following prompt message will appear. At this time, you can enter the password you want to set, and press the Enter key to confirm
 
# First enter passwd root on the command line of the system, and the following prompt message will appear. At this time, you can enter the password you want to set, and press the Enter key to confirm
  
 +
::{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
root@OpenWrt:/# '''passwd root'''
 
root@OpenWrt:/# '''passwd root'''
  
 
'''Enter new UNIX password:'''
 
'''Enter new UNIX password:'''
 +
|}
  
 
<ol start="2" style="list-style-type: decimal;">
 
<ol start="2" style="list-style-type: decimal;">
<li>Then you will be prompted to re-enter the password. At this time, enter the password again to confirm and press Enter</li></ol>
+
<li>Then you will be prompted to re-enter the password. At this time, enter the password again to confirm and press Enter</li>
  
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
'''Retype password:'''
 
'''Retype password:'''
 
+
|}
 +
</ol>
 
<ol start="3" style="list-style-type: decimal;">
 
<ol start="3" style="list-style-type: decimal;">
<li>The display of successful modification is as follows</li></ol>
+
<li>The display of successful modification is as follows</li>
  
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
'''passwd: password for root changed by root'''
 
'''passwd: password for root changed by root'''
 
+
|}
 +
</ol>
 
<span id="modify-through-the-luci-management-interface"></span>
 
<span id="modify-through-the-luci-management-interface"></span>
 
=== Modify through the LuCI management interface ===
 
=== Modify through the LuCI management interface ===
Line 9,188: Line 12,194:
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
 
<li><p>Find the &quot;'''System'''&quot; option in the navigation bar and click</p></li>
 
<li><p>Find the &quot;'''System'''&quot; option in the navigation bar and click</p></li>
<li><p>In the column options below the system, select &quot;'''Management &gt; Rights'''&quot; and click</p>
+
<li><p>In the column options below the system, select &quot;'''Management Rights'''&quot; and click</p>
<p>[[File:media/image565.png|552x256px]]</p></li>
+
<p>[[File:plus5-img565.png]]</p></li>
 
<li><p>Select the &quot;'''Router Password'''&quot; option on the Tab page</p>
 
<li><p>Select the &quot;'''Router Password'''&quot; option on the Tab page</p>
<p>[[File:media/image566.png|552x211px]]</p></li></ol>
+
<p>[[File:plus5-img566.png]]</p></li></ol>
 
</li>
 
</li>
 
<li><p>Modify and save the router password</p>
 
<li><p>Modify and save the router password</p>
 
<p>a. Enter the password you set in the &quot;'''Password'''&quot; and &quot;'''Confirm Password'''&quot; dialog boxes (if you are not sure whether the password is entered correctly, you can click the &quot;*&quot; icon behind the dialog box to display the input characters)</p>
 
<p>a. Enter the password you set in the &quot;'''Password'''&quot; and &quot;'''Confirm Password'''&quot; dialog boxes (if you are not sure whether the password is entered correctly, you can click the &quot;*&quot; icon behind the dialog box to display the input characters)</p>
 
<p>b. Click &quot;'''Save'''&quot; to save the newly modified password</p>
 
<p>b. Click &quot;'''Save'''&quot; to save the newly modified password</p>
<p>[[File:media/image567.png|553x230px]]</p></li></ol>
+
<p>[[File:plus5-img567.png]]</p></li>
 
 
'''Note: In the &quot;Password&quot; and &quot;Confirm Password&quot; dialog boxes, the passwords entered twice must be consistent.'''
 
  
 +
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''Note: In the &quot;Password&quot; and &quot;Confirm Password&quot; dialog boxes, the passwords entered twice must be consistent.'''</big>
 +
|}
 +
</ol>
 
<ol start="4" style="list-style-type: decimal;">
 
<ol start="4" style="list-style-type: decimal;">
 
<li><p>After the password is changed successfully, a pop-up box will pop up saying &quot;'''The system password has been changed successfully'''&quot;. At this time, a password is required to log in to OpenWRT</p>
 
<li><p>After the password is changed successfully, a pop-up box will pop up saying &quot;'''The system password has been changed successfully'''&quot;. At this time, a password is required to log in to OpenWRT</p>
<p>[[File:media/image568.png|563x222px]]</p></li></ol>
+
<p>[[File:plus5-img568.png]]</p></li></ol>
  
 
<span id="usb-interface-test-1"></span>
 
<span id="usb-interface-test-1"></span>
 +
 
== USB interface test ==
 
== USB interface test ==
  
Line 9,213: Line 12,224:
 
# Execute the following command, if you can see the output of sdX, it means that the U disk is recognized successfully
 
# Execute the following command, if you can see the output of sdX, it means that the U disk is recognized successfully
  
root@OpenWrt:~# '''cat /proc/partitions | grep &quot;sd*&quot;'''
+
::{| class="wikitable" style="width:800px;"
 
+
|-
major minor #blocks name
+
|
 
+
root@OpenWrt:~# '''cat /proc/partitions | grep &quot;sd*&quot;'''<br>
8 0 15126528 '''sda'''
+
<span style="margin-right: 50px;">major</span><span style="margin-right: 50px;">minor </span><span style="margin-right: 55px;">#blocks</span><span style="margin-right: 50px;">name</span><br>
 +
<span style="margin-right: 70px;margin-left: 20px;">8</span><span style="margin-right: 70px;">0</span><span style="margin-right: 40px;">15126528 </span><span style="margin-right: 50px;color:#FF0000">'''sda'''</span><br>
 +
|}
  
 
<ol start="3" style="list-style-type: decimal;">
 
<ol start="3" style="list-style-type: decimal;">
<li>Use the mount command to mount the U disk to <span class="mark">/mnt</span>, and then you can view the files in the U disk</li></ol>
+
<li>Use the mount command to mount the U disk to <span class="mark">'''/mnt'''</span>, and then you can view the files in the U disk</li>
  
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
root@OpenWrt:~# '''mount /dev/sda /mnt/'''
 
root@OpenWrt:~# '''mount /dev/sda /mnt/'''
  
Line 9,227: Line 12,243:
  
 
test.txt
 
test.txt
 
+
|}
 +
</ol>
 
<ol start="4" style="list-style-type: decimal;">
 
<ol start="4" style="list-style-type: decimal;">
<li>After mounting, you can view the capacity usage and mount point of the U disk through the <span class="mark">df -h</span> command</li></ol>
+
<li>After mounting, you can view the capacity usage and mount point of the U disk through the <span class="mark">df -h</span> command</li>
  
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
root@OpenWrt:~# '''df -h | grep &quot;sd&quot;'''
 
root@OpenWrt:~# '''df -h | grep &quot;sd&quot;'''
  
/dev/sda 14.4G 187.2M 14.2G 1% /mnt
+
<span style="margin-right: 20px;">/dev/sda</span><span style="margin-right: 20px;">14.4G</span><span style="margin-right: 20px;">187.2M</span><span style="margin-right: 20px;">14.2G</span><span style="margin-right: 50px;">1% /mnt</span><br>
 +
|}
 +
</ol>
 +
<span id="mount-the-usb-storage-device-on-the-luci-management-interface"></span>
  
<span id="mount-the-usb-storage-device-on-the-luci-management-interface"></span>
 
 
=== Mount the USB storage device on the LuCI management interface ===
 
=== Mount the USB storage device on the LuCI management interface ===
  
Line 9,242: Line 12,264:
 
<li><p>Then follow the login LuCI management interface to enter the LuCI management interface</p></li>
 
<li><p>Then follow the login LuCI management interface to enter the LuCI management interface</p></li>
 
<li><p>Then in the LuCI management interface, click &quot;System -&gt; Mount Point&quot; to enter the configuration interface of the mount point</p>
 
<li><p>Then in the LuCI management interface, click &quot;System -&gt; Mount Point&quot; to enter the configuration interface of the mount point</p>
<p>[[File:media/image569.png|553x256px]]</p></li>
+
<p>[[File:plus5-img569.png]]</p></li>
 
<li><p>Then follow the steps below to add a mount point</p>
 
<li><p>Then follow the steps below to add a mount point</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li><p>Find &quot;'''Mount Point'''&quot; at the bottom of the mount point &gt; '''global setting interface'''</p></li>
+
<li><p>Find &quot;'''Mount Point'''&quot; at the bottom of the mount point '''global setting interface'''</p></li>
<li><p>Under the mount point, select the &quot;Add&quot; button and click Enter</p></li></ol>
+
<li><p>Under the mount point, select the &quot;Add&quot; button and click Enter</p></li>
</li></ol>
 
 
 
[[File:media/image570.png|553x163px]]
 
  
 +
[[File:plus5-img570.png]]
 +
</ol>
 
<ol start="3" style="list-style-type: lower-alpha;">
 
<ol start="3" style="list-style-type: lower-alpha;">
 
<li><p>Then the following pop-up interface will pop up</p>
 
<li><p>Then the following pop-up interface will pop up</p>
<p>[[File:media/image571.png|553x288px]]</p></li>
+
<p>[[File:plus5-img571.png]]</p></li>
 
<li><p>Then you can start to mount the storage device</p>
 
<li><p>Then you can start to mount the storage device</p>
 
<p>a) Check &quot;'''Enabled'''&quot;</p>
 
<p>a) Check &quot;'''Enabled'''&quot;</p>
 
<p>b) Select the actual connected device /dev/sda in the UUID column of general settings (choose according to your own device)</p>
 
<p>b) Select the actual connected device /dev/sda in the UUID column of general settings (choose according to your own device)</p>
 
<p>c) Select &quot;'''Custom'''&quot; in the mount point column, and fill in the target directory to be mounted. Here, take the '''<span class="mark">/mnt</span>''' directory as an example, and press '''Enter''' to confirm</p>
 
<p>c) Select &quot;'''Custom'''&quot; in the mount point column, and fill in the target directory to be mounted. Here, take the '''<span class="mark">/mnt</span>''' directory as an example, and press '''Enter''' to confirm</p>
<p>d) Then click the &quot;'''Save'''&quot; button in the lower right corner</p></li></ol>
+
<p>d) Then click the &quot;'''Save'''&quot; button in the lower right corner</p></li>
 
 
[[File:media/image572.png|553x214px]]
 
  
 +
[[File:plus5-img572.png]]
 +
</ol></ol>
 
<ol start="5" style="list-style-type: decimal;">
 
<ol start="5" style="list-style-type: decimal;">
<li>Then you will return to the mount point global settings page, click &quot;'''Save and Apply'''&quot; in the lower left corner of the page to make the mount point take effect</li></ol>
+
<li>Then you will return to the mount point global settings page, click &quot;'''Save and Apply'''&quot; in the lower left corner of the page to make the mount point take effect</li>
 
 
[[File:media/image573.png|535x325px]]
 
  
 +
[[File:plus5-img573.png]]
 +
</ol>
 
<ol start="6" style="list-style-type: decimal;">
 
<ol start="6" style="list-style-type: decimal;">
<li>After saving, you can see the &quot;'''mounted file system'''&quot;, the storage device has been mounted successfully</li></ol>
+
<li>After saving, you can see the &quot;'''mounted file system'''&quot;, the storage device has been mounted successfully</li>
  
[[File:media/image574.png|553x201px]]
+
[[File:plus5-img574.png]]
 +
</ol>
 +
<span id="how-to-use-e-key-pcie-wireless-network-card"></span>
  
<span id="how-to-use-e-key-pcie-wireless-network-card"></span>
 
 
== How to use E-Key PCIe wireless network card ==
 
== How to use E-Key PCIe wireless network card ==
  
 
# The PCIe wireless network card models currently compatible with the OpenWRT image are as follows:
 
# The PCIe wireless network card models currently compatible with the OpenWRT image are as follows:
  
{| class="wikitable"
+
::{| class="wikitable" style="width:800px;"
 
|-
 
|-
 
| '''serial number'''
 
| '''serial number'''
Line 9,287: Line 12,309:
 
| '''AX200'''
 
| '''AX200'''
  
'''(PCIE+ USB接口)'''
+
'''(PCIE+USB接口)'''
  
| [[File:med%20ia/image230.png]]
+
| [[File:plus5-img230.png]]
 
| '''Debian'''
 
| '''Debian'''
  
 
'''Ubuntu'''
 
'''Ubuntu'''
  
'''OpenWRT'''
+
'''<span style="color:#FF0000">OpenWRT</span>'''
  
 
'''OPi OS Arch'''
 
'''OPi OS Arch'''
Line 9,302: Line 12,324:
 
| '''AX210'''
 
| '''AX210'''
  
'''(PCIE+ USB接口)'''
+
'''(PCIE+USB接口)'''
  
| [[File:media/i%20mage231.png]]{wi dth=“1.06875in” h eight=“1.45in”}
+
| [[File:plus5-img231.png]]
 
| '''Debian'''
 
| '''Debian'''
  
 
'''Ubuntu'''
 
'''Ubuntu'''
  
'''OpenWRT'''
+
'''<span style="color:#FF0000">OpenWRT</span>'''
  
 
'''OPi OS Arch'''
 
'''OPi OS Arch'''
Line 9,315: Line 12,337:
 
|-
 
|-
 
| '''3'''
 
| '''3'''
| '''R TL8852BE'''
+
| '''RTL8852BE'''
  
'''(PCIE+ USB接口)'''
+
'''(PCIE+USB接口)'''
  
| [[File:med%20ia/image232.png]]
+
| [[File:plus5-img232.png]]
 
| '''Debian'''
 
| '''Debian'''
  
 
'''Ubuntu'''
 
'''Ubuntu'''
  
'''Not Supported OpenWRT'''
+
'''<span style="color:#FF0000">Not Supported OpenWRT</span>'''
  
 
'''Android12'''
 
'''Android12'''
Line 9,337: Line 12,359:
 
=== How to create WIFI hotspot ===
 
=== How to create WIFI hotspot ===
  
'''Note that AX200 and AX210 currently only support hotspots in the 2.4G frequency band. In the 5G frequency band mode, there will be an error that the modified configuration of the wireless network card cannot be applied.'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''Note that AX200 and AX210 currently only support hotspots in the 2.4G frequency band. In the 5G frequency band mode, there will be an error that the modified configuration of the wireless network card cannot be applied.'''</big>
 +
|}
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>First insert the PCIe wireless network card into the M.2 E-KEY port of the development board, and then connect the Type-C power supply to power up the development board.</p>
 
<li><p>First insert the PCIe wireless network card into the M.2 E-KEY port of the development board, and then connect the Type-C power supply to power up the development board.</p>
<p>[[File:media/image575.png|347x149px]]</p></li>
+
<p>[[File:plus5-img575.png]]</p></li>
 
<li><p>After the system startup is complete, click '''<span class="mark">Network -&gt; Wireless</span>''' to enter the wireless WiFi configuration interface.</p>
 
<li><p>After the system startup is complete, click '''<span class="mark">Network -&gt; Wireless</span>''' to enter the wireless WiFi configuration interface.</p>
<p>[[File:media/image576.png|553x155px]]</p></li>
+
<p>[[File:plus5-img576.png]]</p></li>
 
<li><p>The default wireless configuration of the OpenWRT system is '''Master''' mode. Here, for the convenience of the next operation, we will remove the default wireless connection.</p>
 
<li><p>The default wireless configuration of the OpenWRT system is '''Master''' mode. Here, for the convenience of the next operation, we will remove the default wireless connection.</p>
<p>[[File:media/image577.png|517x162px]]</p></li>
+
<p>[[File:plus5-img577.png]]</p></li>
 
<li><p>Then click '''<span class="mark">Save</span>''' in the lower right corner of the page to make the configuration take effect.</p>
 
<li><p>Then click '''<span class="mark">Save</span>''' in the lower right corner of the page to make the configuration take effect.</p>
<p>[[File:media/image578.png|553x179px]]</p></li>
+
<p>[[File:plus5-img578.png]]</p></li>
 
<li><p>Then click the '''<span class="mark">Add</span>''' button on the right.</p>
 
<li><p>Then click the '''<span class="mark">Add</span>''' button on the right.</p>
<p>[[File:media/image579.png|553x138px]]</p></li>
+
<p>[[File:plus5-img579.png]]</p></li>
 
<li><p>In the pop-up tab page '''<span class="mark">Device Configuration</span>''', we set the parameters as shown in the figure below.</p>
 
<li><p>In the pop-up tab page '''<span class="mark">Device Configuration</span>''', we set the parameters as shown in the figure below.</p>
<p>[[File:media/image580.png|552x268px]]</p></li>
+
<p>[[File:plus5-img580.png]]</p></li>
 
<li><p>Then in '''<span class="mark">Interface Configuration -&gt; General Settings</span>''', set the mode to '''<span class="mark">Access Point AP</span>''', set the '''<span class="mark">ESSID</span>''' (wireless network name) to '''<span class="mark">OpenWrt</span>''', and specify the network as '''<span class="mark">lan</span>'''</p>
 
<li><p>Then in '''<span class="mark">Interface Configuration -&gt; General Settings</span>''', set the mode to '''<span class="mark">Access Point AP</span>''', set the '''<span class="mark">ESSID</span>''' (wireless network name) to '''<span class="mark">OpenWrt</span>''', and specify the network as '''<span class="mark">lan</span>'''</p>
<p>[[File:media/image581.png|553x234px]]</p></li>
+
<p>[[File:plus5-img581.png]]</p></li>
 
<li><p>Then in '''<span class="mark">Interface Configuration -&gt; Wireless Security</span>''', select ''' WPA2-PSK''' as the encryption algorithm; set the key (wireless password) to '''password'''</p>
 
<li><p>Then in '''<span class="mark">Interface Configuration -&gt; Wireless Security</span>''', select ''' WPA2-PSK''' as the encryption algorithm; set the key (wireless password) to '''password'''</p>
<p>[[File:media/image582.png|534x224px]]</p></li>
+
<p>[[File:plus5-img582.png]]</p></li>
 
<li><p>After the above settings are completed, click '''<span class="mark">Save</span>''' in the lower right corner of the page, and then exit the tab page</p>
 
<li><p>After the above settings are completed, click '''<span class="mark">Save</span>''' in the lower right corner of the page, and then exit the tab page</p>
<p>[[File:media/image583.png|553x303px]]</p></li>
+
<p>[[File:plus5-img583.png]]</p></li>
 
<li><p>Then click '''<span class="mark">Save and Apply</span>''' in the lower right corner of the page and wait for the configuration to be applied.</p>
 
<li><p>Then click '''<span class="mark">Save and Apply</span>''' in the lower right corner of the page and wait for the configuration to be applied.</p>
<p>[[File:media/image584.png|553x216px]]</p></li>
+
<p>[[File:plus5-img584.png]]</p></li>
 
<li><p>The display interface of successfully creating a hotspot is shown in the figure below</p>
 
<li><p>The display interface of successfully creating a hotspot is shown in the figure below</p>
<p>[[File:media/image585.png|515x266px]]</p></li>
+
<p>[[File:plus5-img585.png]]</p></li>
 
<li><p>Then use the mobile phone or computer to search for the WiFi corresponding to the SSID to connect. After the connection is successful, as shown in the figure below</p>
 
<li><p>Then use the mobile phone or computer to search for the WiFi corresponding to the SSID to connect. After the connection is successful, as shown in the figure below</p>
<p>[[File:media/image586.png|247x156px]]</p></li></ol>
+
<p>[[File:plus5-img586.png]]</p></li></ol>
  
 
<span id="how-to-connect-to-wifi-hotspot"></span>
 
<span id="how-to-connect-to-wifi-hotspot"></span>
 +
 
=== How to connect to WIFI hotspot ===
 
=== How to connect to WIFI hotspot ===
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>Insert the PCIe wireless network card into the M.2 E-KEY port of the development board, and then connect the Type-C power supply to power the development board.</p>
 
<li><p>Insert the PCIe wireless network card into the M.2 E-KEY port of the development board, and then connect the Type-C power supply to power the development board.</p>
<p>[[File:media/image575.png|347x149px]]</p></li>
+
<p>[[File:plus5-img575.png]]</p></li>
 
<li><p>After the system startup is complete, click '''<span class="mark">Network -&gt; Wireless</span>''' to enter the configuration wireless WiFi interface.</p>
 
<li><p>After the system startup is complete, click '''<span class="mark">Network -&gt; Wireless</span>''' to enter the configuration wireless WiFi interface.</p>
<p>[[File:media/image576.png|553x155px]]</p></li>
+
<p>[[File:plus5-img576.png]]</p></li>
 
<li><p>The default wireless configuration of the OpenWRT system is '''Master''' mode. Here, for the convenience of the next operation, we will remove the default wireless connection.</p>
 
<li><p>The default wireless configuration of the OpenWRT system is '''Master''' mode. Here, for the convenience of the next operation, we will remove the default wireless connection.</p>
<p>[[File:media/image577.png|520x162px]]</p></li>
+
<p>[[File:plus5-img577.png]]</p></li>
 
<li><p>Then click '''<span class="mark">Save</span>''' in the lower right corner of the page to make the configuration take effect.</p>
 
<li><p>Then click '''<span class="mark">Save</span>''' in the lower right corner of the page to make the configuration take effect.</p>
<p>[[File:media/image578.png|520x179px]]</p></li>
+
<p>[[File:plus5-img578.png]]</p></li>
 
<li><p>Then click the '''<span class="mark">Scan</span>''' button to scan the surrounding WiFi hotspots.</p>
 
<li><p>Then click the '''<span class="mark">Scan</span>''' button to scan the surrounding WiFi hotspots.</p>
<p>[[File:media/image587.png|541x225px]]</p></li>
+
<p>[[File:plus5-img587.png]]</p></li>
 
<li><p>Then the following window will pop up to display the available WiFi hotspots. At this time, click the '''<span class="mark">Join Network</span>''' button on the right side of the WiFi hotspot you want to connect to connect to the WiFi hotspot.</p>
 
<li><p>Then the following window will pop up to display the available WiFi hotspots. At this time, click the '''<span class="mark">Join Network</span>''' button on the right side of the WiFi hotspot you want to connect to connect to the WiFi hotspot.</p>
<p>[[File:media/image588.png|553x89px]]</p></li>
+
<p>[[File:plus5-img588.png]]</p></li>
 
<li><p>Then an interface for connecting to a WiFi hotspot will pop up. We enter the password of the hotspot as shown in the figure below, and then click the '''<span class="mark">Submit</span>''' button.</p>
 
<li><p>Then an interface for connecting to a WiFi hotspot will pop up. We enter the password of the hotspot as shown in the figure below, and then click the '''<span class="mark">Submit</span>''' button.</p>
<p>[[File:media/image589.png|552x135px]]</p></li>
+
<p>[[File:plus5-img589.png]]</p></li>
 
<li><p>Then the following interface will pop up, click the '''<span class="mark">Save</span>''' button in the lower right corner.</p>
 
<li><p>Then the following interface will pop up, click the '''<span class="mark">Save</span>''' button in the lower right corner.</p>
<p>[[File:media/image590.png|553x237px]]</p></li>
+
<p>[[File:plus5-img590.png]]</p></li>
 
<li><p>Finally, you will return to the main interface of wireless configuration, click '''<span class="mark">Save and Apply</span>''' and wait for the configuration to be applied.</p>
 
<li><p>Finally, you will return to the main interface of wireless configuration, click '''<span class="mark">Save and Apply</span>''' and wait for the configuration to be applied.</p>
<p>[[File:media/image591.png|544x252px]]</p></li>
+
<p>[[File:plus5-img591.png]]</p></li>
 
<li><p>After successfully connecting to the WiFi hotspot, the interface is displayed as shown in the figure below.</p>
 
<li><p>After successfully connecting to the WiFi hotspot, the interface is displayed as shown in the figure below.</p>
<p>[[File:media/image592.png|547x232px]]</p></li></ol>
+
<p>[[File:plus5-img592.png]]</p></li></ol>
  
 
<span id="installing-packages-via-the-command-line"></span>
 
<span id="installing-packages-via-the-command-line"></span>
 +
 
== Installing packages via the command line ==
 
== Installing packages via the command line ==
  
Line 9,397: Line 12,425:
  
 
# Update the list of available packages
 
# Update the list of available packages
 
+
::{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
root@OpenWrt:/# '''opkg update'''
 
root@OpenWrt:/# '''opkg update'''
 +
|}
  
 
<ol start="2" style="list-style-type: decimal;">
 
<ol start="2" style="list-style-type: decimal;">
<li>Get the software list</li></ol>
+
<li>Get the software list</li>
 
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
root@OpenWrt:/# '''opkg list'''
 
root@OpenWrt:/# '''opkg list'''
 
+
|}
 +
</ol>
 
<ol start="3" style="list-style-type: decimal;">
 
<ol start="3" style="list-style-type: decimal;">
<li>Install the specified package</li></ol>
+
<li>Install the specified package</li>
 
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
root@OpenWrt:/# '''opkg install &lt;package name&gt;'''
 
root@OpenWrt:/# '''opkg install &lt;package name&gt;'''
 
+
|}
 +
</ol>
 
<ol start="4" style="list-style-type: decimal;">
 
<ol start="4" style="list-style-type: decimal;">
<li>Check the installed software</li></ol>
+
<li>Check the installed software</li>
 
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
root@OpenWrt:/# '''opkg list-installed'''
 
root@OpenWrt:/# '''opkg list-installed'''
 
+
|}
 +
</ol>
 
<ol start="5" style="list-style-type: decimal;">
 
<ol start="5" style="list-style-type: decimal;">
<li>Uninstall the software</li></ol>
+
<li>Uninstall the software</li>
 
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
root@OpenWrt:/# '''opkg remove &lt;package name&gt;'''
 
root@OpenWrt:/# '''opkg remove &lt;package name&gt;'''
 +
|}
 +
</ol>
 +
<span id="openwrt-management-interface-installation-software-package"></span>
  
<span id="openwrt-management-interface-installation-software-package"></span>
 
 
== OpenWRT management interface installation software package ==
 
== OpenWRT management interface installation software package ==
  
'''If you need to add new software packages, you can install them through the OpenWRT management interface.'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''If you need to add new software packages, you can install them through the OpenWRT management interface.'''</big>
 +
|}
  
 
<span id="view-the-list-of-available-software-packages-in-the-system"></span>
 
<span id="view-the-list-of-available-software-packages-in-the-system"></span>
Line 9,431: Line 12,479:
 
<li><p>First enter the package management page</p>
 
<li><p>First enter the package management page</p>
 
<p>a. Find the &quot;'''System'''&quot; option in the navigation bar and click to enter</p>
 
<p>a. Find the &quot;'''System'''&quot; option in the navigation bar and click to enter</p>
<p>b. In the vertical column options below the system, select &quot;'''software package'''&quot; and click to enter</p></li></ol>
+
<p>b. In the vertical column options below the system, select &quot;'''software package'''&quot; and click to enter</p></li>
 
 
[[File:media/image593.png|552x227px]]
 
  
 +
[[File:plus5-img593.png]]
 +
</ol>
 
<ol start="2" style="list-style-type: decimal;">
 
<ol start="2" style="list-style-type: decimal;">
 
<li><p>Then the main page of the software package will appear, as shown in the figure below, to obtain the list of available software</p>
 
<li><p>Then the main page of the software package will appear, as shown in the figure below, to obtain the list of available software</p>
Line 9,440: Line 12,488:
 
<p>b. On the Tab page, click &quot;'''Available'''&quot; to view the currently available software packages</p>
 
<p>b. On the Tab page, click &quot;'''Available'''&quot; to view the currently available software packages</p>
 
<p>c. View the number of currently available packages</p>
 
<p>c. View the number of currently available packages</p>
<p>[[File:media/image594.png|553x232px]]</p></li></ol>
+
<p>[[File:plus5-img594.png]]</p></li></ol>
  
 
<span id="example-of-installing-software-packages"></span>
 
<span id="example-of-installing-software-packages"></span>
 +
 
=== Example of installing software packages ===
 
=== Example of installing software packages ===
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
<li><p>Take the installation package '''luci-app-acl'''as an example</p>
+
<li><p>Take the installation package "'''luci-app-acl'''" as an example</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li><p>In the OpenWRT software package management interface, click the &gt; filter dialog box and enter”'''luci-app-acl'''</p></li>
+
<li><p>In the OpenWRT software package management interface, click the filter dialog box and enter "'''luci-app-acl'''"</p></li>
<li><p>In the list of software packages, you can see the version, &gt; package size and description information of the &gt; “'''luci-app-acl'''”software package, and then click the &gt; '''&quot;Install&quot;''' button</p>
+
<li><p>In the list of software packages, you can see the version, package size and description information of the "'''luci-app-acl'''" software package, and then click the '''&quot;Install&quot;''' button</p>
<p>[[File:media/image595.png|552x259px]]</p></li>
+
<p>[[File:plus5-img595.png]]</p></li>
<li><p>Then the following pop-up window will appear, click &gt; '''&quot;Install&quot;'''</p>
+
<li><p>Then the following pop-up window will appear, click '''&quot;Install&quot;'''</p>
<p>[[File:media/image596.png|348x430px]]</p></li>
+
<p>[[File:plus5-img596.png]]</p></li>
 
<li><p>Then wait for the installation to complete</p>
 
<li><p>Then wait for the installation to complete</p>
<p>[[File:media/image597.png|576x96px]]</p></li>
+
<p>[[File:plus5-img597.png]]</p></li>
 
<li><p>The display after the installation is complete is as follows</p>
 
<li><p>The display after the installation is complete is as follows</p>
<p>[[File:media/image598.png|506x289px]]</p></li></ol>
+
<p>[[File:plus5-img598.png]]</p></li></ol>
 
</li>
 
</li>
 
<li><p>Check whether the software package is installed successfully</p>
 
<li><p>Check whether the software package is installed successfully</p>
<p>a. In the OpenWRT software package management interface, click the filter dialog box and enter”'''luci-app-acl'''</p>
+
<p>a. In the OpenWRT software package management interface, click the filter dialog box and enter "'''luci-app-acl'''"</p>
 
<p>b. Select and click '''&quot;Available&quot;''' on the Tab page</p>
 
<p>b. Select and click '''&quot;Available&quot;''' on the Tab page</p>
<p>c. The '''luci-app-acl'''package will be displayed in the package list, and the update status will be '''&quot;installed&quot;'''</p>
+
<p>c. The "'''luci-app-acl'''" package will be displayed in the package list, and the update status will be '''&quot;installed&quot;'''</p>
<p>[[File:media/image599.png|576x196px]]</p></li></ol>
+
<p>[[File:plus5-img599.png]]</p></li></ol>
  
 
<span id="remove-package-example"></span>
 
<span id="remove-package-example"></span>
 +
 
=== Remove package example ===
 
=== Remove package example ===
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
<li><p>Take the removal of the package”'''luci-app-acl'''as an example</p>
+
<li><p>Take the removal of the package "'''luci-app-acl'''" as an example</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li><p>In the OpenWRT software package management interface, click the &gt; filter dialog box and enter”'''luci-app-acl'''</p></li>
+
<li><p>In the OpenWRT software package management interface, click the filter dialog box and enter "'''luci-app-acl'''"</p></li>
<li><p>Select '''&quot;Installed&quot;''' on the Tab page to display the list of &gt; installed software packages</p></li>
+
<li><p>Select '''&quot;Installed&quot;''' on the Tab page to display the list of installed software packages</p></li>
<li><p>Click '''&quot;Remove&quot;''' on the right to remove the corresponding &gt; software package</p>
+
<li><p>Click '''&quot;Remove&quot;''' on the right to remove the corresponding software package</p>
<p>[[File:media/image600.png|461x164px]]</p></li>
+
<p>[[File:plus5-img600.png]]</p></li>
<li><p>Then the following pop-up window will be displayed, click &gt; '''&quot;Remove&quot;'''</p>
+
<li><p>Then the following pop-up window will be displayed, click '''&quot;Remove&quot;'''</p>
<p>[[File:media/image601.png|415x129px]]</p></li>
+
<p>[[File:plus5-img601.png]]</p></li>
<li><p>After the removal is successful, the display interface is as &gt; follows</p>
+
<li><p>After the removal is successful, the display interface is as follows</p>
<p>[[File:media/image602.png|414x88px]]</p></li></ol>
+
<p>[[File:plus5-img602.png]]</p></li></ol>
 
</li>
 
</li>
 
<li><p>Check whether the software package is removed successfully</p>
 
<li><p>Check whether the software package is removed successfully</p>
<p>a. In the OpenWRT software package management interface, click the filter dialog box and enter '''luci-app-acl'''</p>
+
<p>a. In the OpenWRT software package management interface, click the filter dialog box and enter "'''luci-app-acl'''"</p>
 
<p>b. Select and click '''&quot;Installed&quot;''' on the Tab page</p>
 
<p>b. Select and click '''&quot;Installed&quot;''' on the Tab page</p>
<p>c. The '''luci-app-acl'''”package will not be displayed in the package list, and the '''luci-app-acl'''package has been removed successfully</p>
+
<p>c. The "'''luci-app-acl'''" package will not be displayed in the package list, and the "'''luci-app-acl'''" package has been removed successfully</p>
<p>[[File:media/image603.png|493x187px]]</p></li></ol>
+
<p>[[File:plus5-img603.png]]</p></li></ol>
  
 
<span id="using-samba-network-shares"></span>
 
<span id="using-samba-network-shares"></span>
 +
 
== Using Samba Network Shares ==
 
== Using Samba Network Shares ==
  
'''There are mainly two software options for OpenWRT LAN file sharing, Samba and NFS. The compatibility of the Samba system is better, while the performance of NFS is superior. For users who need to use Windows devices, it is recommended to choose Samba.'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''There are mainly two software options for OpenWRT LAN file sharing, Samba and NFS. The compatibility of the Samba system is better, while the performance of NFS is superior. For users who need to use Windows devices, it is recommended to choose Samba.'''</big>
 +
|}
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>Enter the management page of the Samba network share</p>
 
<li><p>Enter the management page of the Samba network share</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li><p>Find the '''&quot;Service&quot;''' option in the navigation bar and click &gt; to enter</p></li>
+
<li><p>Find the '''&quot;Service&quot;''' option in the navigation bar and click to enter</p></li>
<li><p>In the vertical column options below the service, select &gt; '''&quot;network sharing&quot;''' and click to enter</p>
+
<li><p>In the vertical column options below the service, select '''&quot;network sharing&quot;''' and click to enter</p>
<p>[[File:media/image604.png|553x205px]]</p></li></ol>
+
<p>[[File:plus5-img604.png]]</p></li></ol>
 
</li>
 
</li>
 
<li><p>Select the interface that the Samba service needs to monitor</p>
 
<li><p>Select the interface that the Samba service needs to monitor</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li><p>Select '''&quot;General Settings&quot;''' in the navigation bar of network &gt; sharing and click to enter</p></li>
+
<li><p>Select '''&quot;General Settings&quot;''' in the navigation bar of network sharing and click to enter</p></li>
<li><p>The interface is specified according to actual needs. If you &gt; want to access through the &quot;wan port&quot;, set it to '''&quot;wan&quot;'''</p>
+
<li><p>The interface is specified according to actual needs. If you want to access through the &quot;wan port&quot;, set it to '''&quot;wan&quot;'''</p>
<p>[[File:media/image605.png|500x222px]]</p></li></ol>
+
<p>[[File:plus5-img605.png]]</p></li></ol>
 
</li>
 
</li>
 
<li><p>Set the shared directory of the network share</p>
 
<li><p>Set the shared directory of the network share</p>
Line 9,511: Line 12,566:
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image606.png|575x217px|4]]
+
[[File:plus5-img606.png]]
  
 
</div></li>
 
</div></li>
 
<li><p>window10 starts network discovery and sharing</p>
 
<li><p>window10 starts network discovery and sharing</p>
<p>'''Note: To access Samba under the Windows 10 system, you need to confirm whether Windows 10 has enabled network discovery and sharing for sharing. If it is not enabled, perform the following settings first.'''</p></li></ol>
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big><p>'''Note: To access Samba under the Windows 10 system, you need to confirm whether Windows 10 has enabled network discovery and sharing for sharing. If it is not enabled, perform the following settings first.'''</p></big>
 +
|}
 +
</li>
  
 
<!-- -->
 
<!-- -->
Line 9,524: Line 12,584:
 
<p>c) Select &quot;Turn Windows features on or off&quot; in Programs and Features</p>
 
<p>c) Select &quot;Turn Windows features on or off&quot; in Programs and Features</p>
 
<p>d) Check &quot;SMB 1.0/CIFS file sharing support&quot; in the pop-up box of enabling or disabling Windows functions</p>
 
<p>d) Check &quot;SMB 1.0/CIFS file sharing support&quot; in the pop-up box of enabling or disabling Windows functions</p>
<p>e) Click &quot;OK&quot; to configure the application</p></li></ol>
+
<p>e) Click &quot;OK&quot; to configure the application</p></li>
 
 
[[File:media/image607.png|575x316px]]
 
  
 +
[[File:plus5-img607.png]]
 +
</ol>
 
<ol start="2" style="list-style-type: lower-alpha;">
 
<ol start="2" style="list-style-type: lower-alpha;">
 
<li><p>Turn on the network discovery of Windows 10</p>
 
<li><p>Turn on the network discovery of Windows 10</p>
Line 9,535: Line 12,595:
 
<p>d) Click | &quot;Advanced Sharing Settings&quot;</p>
 
<p>d) Click | &quot;Advanced Sharing Settings&quot;</p>
 
<p>e) Turn on '''&quot;Enable Network Discovery&quot;''' and '''&quot;Enable File and Printer Sharing&quot;'''</p>
 
<p>e) Turn on '''&quot;Enable Network Discovery&quot;''' and '''&quot;Enable File and Printer Sharing&quot;'''</p>
<p>f) Click &quot;Save Changes&quot; to save the Windows 10 network discovery configuration</p></li></ol>
+
<p>f) Click &quot;Save Changes&quot; to save the Windows 10 network discovery configuration</p></li>
 
 
[[File:media/image608.png|575x323px]]
 
  
 +
[[File:plus5-img608.png]]
 +
</ol></ol>
 
<ol start="5" style="list-style-type: decimal;">
 
<ol start="5" style="list-style-type: decimal;">
<li>After the setting is completed, enter \\OpenWrt in the address bar of the resource manager to access the shared directory, the user name is root, and the password is the password set by the development board host</li></ol>
+
<li>After the setting is completed, enter \\OpenWrt in the address bar of the resource manager to access the shared directory, the user name is root, and the password is the password set by the development board host</li>
  
[[File:media/image609.png|575x323px]]
+
[[File:plus5-img609.png]]
 +
</ol>
 +
<span id="zerotier-instructions"></span>
  
<span id="zerotier-instructions"></span>
 
 
== Zerotier Instructions ==
 
== Zerotier Instructions ==
  
'''The OpenWRT system has pre-installed the zerotier client. After creating a virtual LAN on the zerotier official website, the client can directly join it through the Network ID. The specific operation is as shown below.'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''The OpenWRT system has pre-installed the zerotier client. After creating a virtual LAN on the zerotier official website, the client can directly join it through the Network ID. The specific operation is as shown below.'''</big>
 +
|}
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>Log in to zerotier official website [https://my.zerotier.com/network '''https://my.zerotier.com/network'''], register and log in and click Network-&gt;Create A Network to create a virtual local area network</p>
 
<li><p>Log in to zerotier official website [https://my.zerotier.com/network '''https://my.zerotier.com/network'''], register and log in and click Network-&gt;Create A Network to create a virtual local area network</p>
<p>[[File:media/image610.png|575x118px]]</p>
+
<p>[[File:plus5-img610.png|1500px]]</p>
<p>[[File:media/image611.png|574x166px]]</p></li>
+
<p>[[File:plus5-img611.png|1500px]]</p></li>
 
<li><p>Click to enter the network console page, you can set the privacy option to public, so that the added network nodes do not need to be verified</p>
 
<li><p>Click to enter the network console page, you can set the privacy option to public, so that the added network nodes do not need to be verified</p>
<p>[[File:media/image612.png|353x257px]]</p></li>
+
<p>[[File:plus5-img612.png]]</p></li>
 
<li><p>The following automatically assigns the address Here you can choose the network segment yourself, here is 172.27.*.*</p>
 
<li><p>The following automatically assigns the address Here you can choose the network segment yourself, here is 172.27.*.*</p>
<p>[[File:media/image613.png|374x233px]]</p></li>
+
<p>[[File:plus5-img613.png]]</p></li>
<li><p>Enter the following command in the OpenWRT terminal to join the virtual LAN created above, '''where 8286ac0e47d53bb5 is the Network ID of the virtual LAN created above'''</p></li></ol>
+
<li><p>Enter the following command in the OpenWRT terminal to join the virtual LAN created above, '''<span style="color:#FF0000">where 8286ac0e47d53bb5 is the Network ID of the virtual LAN created above</span>'''</p></li>
  
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
root@OpenWrt:/# '''zerotier-one -d''' #Start the zerotier client
 
root@OpenWrt:/# '''zerotier-one -d''' #Start the zerotier client
  
 
root@OpenWrt:/# '''zerotier-cli join 8286ac0e47d53bb5''' #join the network
 
root@OpenWrt:/# '''zerotier-cli join 8286ac0e47d53bb5''' #join the network
 
+
|}
 +
</ol>
 
<ol start="5" style="list-style-type: decimal;">
 
<ol start="5" style="list-style-type: decimal;">
<li>Enter ifconfig in the terminal and you can see that there is already a new '''ztks54inm2''' device with an IP address of '''172.27.214.213'''</li></ol>
+
<li>Enter ifconfig in the terminal and you can see that there is already a new '''ztks54inm2''' device with an IP address of '''172.27.214.213'''</li>
  
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
root@OpenWrt:/# '''ifconfig'''
 
root@OpenWrt:/# '''ifconfig'''
  
 
'''ztks54inm2''' Link encap:Ethernet HWaddr F6:4E:DE:BF:D8:52
 
'''ztks54inm2''' Link encap:Ethernet HWaddr F6:4E:DE:BF:D8:52
  
inet addr:'''172.27.214.213''' Bcast:172.27.255.255 Mask:255.255.0.0
+
::inet addr:'''172.27.214.213''' Bcast:172.27.255.255 Mask:255.255.0.0
  
inet6 addr: fe80::e82f:d0ff:fe5a:867e/64 Scope:Link
+
::inet6 addr: fe80::e82f:d0ff:fe5a:867e/64 Scope:Link
  
UP BROADCAST RUNNING MULTICAST MTU:2800 Metric:1
+
::UP BROADCAST RUNNING MULTICAST MTU:2800 Metric:1
  
RX packets:18 errors:0 dropped:0 overruns:0 frame:0
+
::RX packets:18 errors:0 dropped:0 overruns:0 frame:0
  
TX packets:48 errors:0 dropped:0 overruns:0 carrier:0
+
::TX packets:48 errors:0 dropped:0 overruns:0 carrier:0
  
collisions:0 txqueuelen:1000
+
::collisions:0 txqueuelen:1000
  
 
RX bytes:1720 (1.6 KiB) TX byte81 (8.2 KiB)
 
RX bytes:1720 (1.6 KiB) TX byte81 (8.2 KiB)
 
+
|}
 +
</ol>
 
<ol start="6" style="list-style-type: decimal;">
 
<ol start="6" style="list-style-type: decimal;">
<li>Install the zerotier client on another device (Ubuntu18.04 is used as an example here), execute the following command to install, and restart the computer after the installation is complete</li></ol>
+
<li>Install the zerotier client on another device (Ubuntu18.04 is used as an example here), execute the following command to install, and restart the computer after the installation is complete</li>
 
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
test@ubuntu:~$ '''curl -s https://install.zerotier.com | sudo bash'''
 
test@ubuntu:~$ '''curl -s https://install.zerotier.com | sudo bash'''
 
+
|}
 +
</ol>
 
<ol start="7" style="list-style-type: decimal;">
 
<ol start="7" style="list-style-type: decimal;">
<li>After restarting, join the virtual LAN according to the Network ID, and you can also see that the ip address assigned by zerotier has been obtained. At this time, the Ubuntu PC and OrangePi R1 Plus LTS are in the same LAN, and the two can communicate freely</li></ol>
+
<li>After restarting, join the virtual LAN according to the Network ID, and you can also see that the ip address assigned by zerotier has been obtained. At this time, the Ubuntu PC and OrangePi R1 Plus LTS are in the same LAN, and the two can communicate freely</li>
  
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
test@ubuntu:~$ '''sudo zerotier-cli join 8286ac0e47d53bb5'''
 
test@ubuntu:~$ '''sudo zerotier-cli join 8286ac0e47d53bb5'''
  
Line 9,598: Line 12,677:
 
'''ztks54inm2''': flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt; mtu 2800
 
'''ztks54inm2''': flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt; mtu 2800
  
inet '''172.27.47.214''' netmask 255.255.0.0 broadcast 172.27.255.255
+
::inet '''172.27.47.214''' netmask 255.255.0.0 broadcast 172.27.255.255
  
inet6 fe80::5ce1:85ff:fe2b:6918 prefixlen 64 scopeid 0x20&lt;link&gt;
+
::inet6 fe80::5ce1:85ff:fe2b:6918 prefixlen 64 scopeid 0x20&lt;link&gt;
  
ether f6:fd:87:68:12:cf txqueuelen 1000 (ethernet)
+
::ether f6:fd:87:68:12:cf txqueuelen 1000 (ethernet)
  
RX packets 0 bytes 0 (0.0 B)
+
::RX packets 0 bytes 0 (0.0 B)
  
RX errors 0 dropped 0 overruns 0 frame 0
+
::RX errors 0 dropped 0 overruns 0 frame 0
  
TX packets 46 bytes 10006 (10.0 KB)
+
::TX packets 46 bytes 10006 (10.0 KB)
 
 
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
 
  
 +
::TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
 +
|}
 +
</ol>
 
<ol start="8" style="list-style-type: decimal;">
 
<ol start="8" style="list-style-type: decimal;">
<li>Test whether the two terminals can communicate</li></ol>
+
<li>Test whether the two terminals can communicate</li>
  
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
root@OpenWrt:/# '''ping 172.27.47.214 -I ztks54inm2'''
 
root@OpenWrt:/# '''ping 172.27.47.214 -I ztks54inm2'''
  
Line 9,634: Line 12,717:
  
 
round-trip min/avg/max = 1.136/1.195/1.235 ms
 
round-trip min/avg/max = 1.136/1.195/1.235 ms
 
+
|}
 +
</ol>
 
<ol start="9" style="list-style-type: decimal;">
 
<ol start="9" style="list-style-type: decimal;">
<li>other common commands of zerotier</li></ol>
+
<li>other common commands of zerotier</li>
  
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
root@OpenWrt:/# '''zerotier-one -d''' #Start the zerotier client
 
root@OpenWrt:/# '''zerotier-one -d''' #Start the zerotier client
  
Line 9,651: Line 12,738:
  
 
OPENWRT_RELEASE=&quot;OpenWrt 22.03.4 r20123-38ccc47687&quot;
 
OPENWRT_RELEASE=&quot;OpenWrt 22.03.4 r20123-38ccc47687&quot;
 
+
|}
 +
</ol>
 
<span id="compilation-method-of-openwrt-source-code"></span>
 
<span id="compilation-method-of-openwrt-source-code"></span>
  
Line 9,661: Line 12,749:
 
# First execute the following command to download the openwrt-22.03 branch code
 
# First execute the following command to download the openwrt-22.03 branch code
  
 +
::{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
test@test:~$ '''sudo apt update'''
 
test@test:~$ '''sudo apt update'''
  
Line 9,666: Line 12,757:
  
 
test@test:~$ '''git clone https://github.com/orangepi-xunlong/openwrt.git -b openwrt-22.03'''
 
test@test:~$ '''git clone https://github.com/orangepi-xunlong/openwrt.git -b openwrt-22.03'''
 +
|}
  
 
<ol start="2" style="list-style-type: decimal;">
 
<ol start="2" style="list-style-type: decimal;">
<li>After the OpenWRT code is downloaded, the following files and folders will be included</li></ol>
+
<li>After the OpenWRT code is downloaded, the following files and folders will be included</li>
  
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
test@test:~/openwrt$ '''ls'''
 
test@test:~/openwrt$ '''ls'''
  
BSDmakefile Config.in include Makefile README.md scripts toolchain
+
BSDmakefile &nbsp;&nbsp;&nbsp; Config.in &nbsp;&nbsp;&nbsp; include &nbsp;&nbsp;&nbsp; Makefile &nbsp;&nbsp;&nbsp; README.md &nbsp;&nbsp;&nbsp; scripts &nbsp;&nbsp;&nbsp; toolchain
  
Config feeds.conf.default LICENSE package rules.mk target tools
+
Config &nbsp;&nbsp;&nbsp; feeds.conf.default &nbsp;&nbsp;&nbsp; LICENSE &nbsp;&nbsp;&nbsp; package &nbsp;&nbsp;&nbsp; rules.mk &nbsp;&nbsp;&nbsp; target &nbsp;&nbsp;&nbsp; tools
 +
|}
 +
</ol>
 +
<span id="compile-openwrt-source-code"></span>
  
<span id="compile-openwrt-source-code"></span>
 
 
== Compile OpenWRT source code ==
 
== Compile OpenWRT source code ==
  
Line 9,682: Line 12,779:
 
<li><p>First install the following dependent packages (currently only tested on Ubuntu 20.04 to compile the following dependent packages, if you compile on other versions of the system, please install the dependent packages by yourself according to the error message)</p>
 
<li><p>First install the following dependent packages (currently only tested on Ubuntu 20.04 to compile the following dependent packages, if you compile on other versions of the system, please install the dependent packages by yourself according to the error message)</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li>Method 1: The command to install dependent packages using a &gt; script is as follows:</li></ol>
+
<li>Method 1: The command to install dependent packages using a &gt; script is as follows:</li>
</li></ol>
 
  
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
test@test:~/openwrt$ '''sudo ./install_dep.sh'''
 
test@test:~/openwrt$ '''sudo ./install_dep.sh'''
 +
|}
 +
</ol>
  
 
<ol start="2" style="list-style-type: lower-alpha;">
 
<ol start="2" style="list-style-type: lower-alpha;">
<li>Method 2: Install the dependency package directly using the following command</li></ol>
+
<li>Method 2: Install the dependency package directly using the following command</li>
  
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
test@test:~/openwrt$ '''sudo apt update'''
 
test@test:~/openwrt$ '''sudo apt update'''
  
Line 9,715: Line 12,819:
  
 
'''vim wget xmlto xxd zlib1g-dev'''
 
'''vim wget xmlto xxd zlib1g-dev'''
 
+
|}
 +
</ol>
 +
</li></ol>
 
<ol start="2" style="list-style-type: decimal;">
 
<ol start="2" style="list-style-type: decimal;">
<li>Then execute '''./scripts/feeds update -a''' and '''./scripts/feeds install -a''' to download dependent packages</li></ol>
+
<li>Then execute '''./scripts/feeds update -a''' and '''./scripts/feeds install -a''' to download dependent packages</li>
  
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
test@test:~/openwrt$ '''./scripts/feeds update -a'''
 
test@test:~/openwrt$ '''./scripts/feeds update -a'''
  
 
test@test:~/openwrt$ '''./scripts/feeds install -a'''
 
test@test:~/openwrt$ '''./scripts/feeds install -a'''
 
+
|}
 +
</ol>
 
<ol start="3" style="list-style-type: decimal;">
 
<ol start="3" style="list-style-type: decimal;">
 
<li><p>Then choose to use the configuration file of OrangePi 5 Plus</p>
 
<li><p>Then choose to use the configuration file of OrangePi 5 Plus</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li>Compile the image that supports TF card, eMMC, and NVMe startup, &gt; and select the following configuration</li></ol>
+
<li>Compile the image that supports TF card, eMMC, and NVMe startup, &gt; and select the following configuration</li>
</li></ol>
+
{| class="wikitable" style="width:800px;"
 
+
|-
 +
|
 
test@test:~/openwrt$ '''cp configs/orangepi-5-plus-rk3588_defconfig .config'''
 
test@test:~/openwrt$ '''cp configs/orangepi-5-plus-rk3588_defconfig .config'''
 
+
|}
 +
</ol>
 
<ol start="2" style="list-style-type: lower-alpha;">
 
<ol start="2" style="list-style-type: lower-alpha;">
<li>Compile the image that supports SPIFlash startup, and select the &gt; following configuration</li></ol>
+
<li>Compile the image that supports SPIFlash startup, and select the &gt; following configuration</li>
 
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
test@test:~/openwrt$ '''cp configs/orangepi-5-plus-rk3588-spi_defconfig .config'''
 
test@test:~/openwrt$ '''cp configs/orangepi-5-plus-rk3588-spi_defconfig .config'''
 
+
|}
 +
</ol>
 +
</li></ol>
 
<ol start="4" style="list-style-type: decimal;">
 
<ol start="4" style="list-style-type: decimal;">
<li>Then execute the following command to make the configuration take effect</li></ol>
+
<li>Then execute the following command to make the configuration take effect</li>
 
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
test@test:~/openwrt$ '''make defconfig'''
 
test@test:~/openwrt$ '''make defconfig'''
 
+
|}
 +
</ol>
 
<ol start="5" style="list-style-type: decimal;">
 
<ol start="5" style="list-style-type: decimal;">
<li>Execute the following command to start compiling the openwrt source code</li></ol>
+
<li>Execute the following command to start compiling the openwrt source code</li>
 
+
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
test@test:~/openwrt$ '''make V=s'''
 
test@test:~/openwrt$ '''make V=s'''
 
+
|}
 +
</ol>
 
<ol start="6" style="list-style-type: decimal;">
 
<ol start="6" style="list-style-type: decimal;">
<li>After the compilation is complete, the path where the image is generated is:</li></ol>
+
<li>After the compilation is complete, the path where the image is generated is:</li>
  
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
test@test:~/openwrt$ '''tree -L 1 bin/targets/rockchip/armv8/'''
 
test@test:~/openwrt$ '''tree -L 1 bin/targets/rockchip/armv8/'''
  
Line 9,770: Line 12,895:
  
 
└── version.buildinfo
 
└── version.buildinfo
 +
  
 
1 directory, 9 files
 
1 directory, 9 files
 
+
|}
 +
</ol>
 
<span id="instructions-for-using-the-android-12-system"></span>
 
<span id="instructions-for-using-the-android-12-system"></span>
  
Line 9,780: Line 12,907:
 
== Supported Android versions ==
 
== Supported Android versions ==
  
{| class="wikitable"
+
{| class="wikitable" style="width:800px;"
 
|-
 
|-
 
| style="text-align: left;"| '''Android version'''
 
| style="text-align: left;"| '''Android version'''
Line 9,795: Line 12,922:
 
== Android function adaptation ==
 
== Android function adaptation ==
  
{| class="wikitable"
+
{| class="wikitable" style="width:800px;"
 
|-
 
|-
 
| style="text-align: left;"| '''Function'''
 
| style="text-align: left;"| '''Function'''
Line 9,878: Line 13,005:
 
|-
 
|-
 
| style="text-align: left;"| '''AX200-WIFI'''
 
| style="text-align: left;"| '''AX200-WIFI'''
| style="text-align: left;"| '''NO'''
+
| style="text-align: left;"| '''<span style="color:#FF0000">NO</span>'''
| style="text-align: left;"| '''NO'''
+
| style="text-align: left;"| '''<span style="color:#FF0000">NO</span>'''
 
|-
 
|-
 
| style="text-align: left;"| '''AX200-BT'''
 
| style="text-align: left;"| '''AX200-BT'''
| style="text-align: left;"| '''NO'''
+
| style="text-align: left;"| '''<span style="color:#FF0000">NO</span>'''
| style="text-align: left;"| '''NO'''
+
| style="text-align: left;"| '''<span style="color:#FF0000">NO</span>'''
 
|-
 
|-
 
| style="text-align: left;"| '''AX210-WIFI'''
 
| style="text-align: left;"| '''AX210-WIFI'''
| style="text-align: left;"| '''NO'''
+
| style="text-align: left;"| '''<span style="color:#FF0000">NO</span>'''
| style="text-align: left;"| '''NO'''
+
| style="text-align: left;"| '''<span style="color:#FF0000">NO</span>'''
 
|-
 
|-
 
| style="text-align: left;"| '''AX210-BT'''
 
| style="text-align: left;"| '''AX210-BT'''
| style="text-align: left;"| '''NO'''
+
| style="text-align: left;"| '''<span style="color:#FF0000">NO</span>'''
| style="text-align: left;"| '''NO'''
+
| style="text-align: left;"| '''<span style="color:#FF0000">NO</span>'''
 
|-
 
|-
 
| style="text-align: left;"| '''RTL8852BE-WIFI'''
 
| style="text-align: left;"| '''RTL8852BE-WIFI'''
Line 10,014: Line 13,141:
 
|-
 
|-
 
| style="text-align: left;"| '''HDMI CEC function'''
 
| style="text-align: left;"| '''HDMI CEC function'''
| style="text-align: left;"| '''NO'''
+
| style="text-align: left;"| '''<span style="color:#FF0000">NO</span>'''
 
| style="text-align: left;"| '''OK'''
 
| style="text-align: left;"| '''OK'''
 
|}
 
|}
  
 
<span id="how-to-use-the-usb-wireless-network-card"></span>
 
<span id="how-to-use-the-usb-wireless-network-card"></span>
 +
 
== How to use the USB wireless network card ==
 
== How to use the USB wireless network card ==
  
 
# Currently, the USB wireless network card models compatible with the Android image are as follows:
 
# Currently, the USB wireless network card models compatible with the Android image are as follows:
  
{| class="wikitable"
+
::{| class="wikitable" style="width:800px;"
 
|-
 
|-
 
| style="text-align: left;"| '''Chip model'''
 
| style="text-align: left;"| '''Chip model'''
Line 10,044: Line 13,172:
 
<li><p>The pictures of the above two USB wireless network cards are as follows:</p>
 
<li><p>The pictures of the above two USB wireless network cards are as follows:</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
<li><p>The picture of the RTL8723BU USB wireless network card module is &gt; as follows:</p>
+
<li><p>The picture of the RTL8723BU USB wireless network card module is as follows:</p>
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image614.png|175x103px|C89CEA9A-B322-42d2-B476-2392A50E6FC4]]
+
[[File:plus5-img614.png]]
  
 
</div></li>
 
</div></li>
<li><p>The picture of the RTL8811CU USB wireless network card module is &gt; as follows:</p>
+
<li><p>The picture of the RTL8811CU USB wireless network card module is as follows:</p>
<p>[[File:media/image615.png|124x107px]]</p></li></ol>
+
<p>[[File:plus5-img615.png]]</p></li></ol>
 
</li>
 
</li>
 
<li><p>The test methods of the above two types of USB wireless network cards are the same. First, the USB network card needs to be inserted into the USB interface of the development board.</p></li>
 
<li><p>The test methods of the above two types of USB wireless network cards are the same. First, the USB network card needs to be inserted into the USB interface of the development board.</p></li>
Line 10,058: Line 13,186:
  
 
<span id="m.2-how-to-use-e-key-pcie-wifi6bluetooth-module"></span>
 
<span id="m.2-how-to-use-e-key-pcie-wifi6bluetooth-module"></span>
 +
 
== M.2 How to use E-Key PCIe WIFI6+Bluetooth module ==
 
== M.2 How to use E-Key PCIe WIFI6+Bluetooth module ==
  
 
# The PCIe wireless network card models currently compatible with Android 12 are as follows:
 
# The PCIe wireless network card models currently compatible with Android 12 are as follows:
  
{| class="wikitable"
+
::{| class="wikitable" style="width:800px;"
 
|-
 
|-
 
| '''serial number'''
 
| '''serial number'''
Line 10,073: Line 13,202:
 
'''(PCIE+USB interface)'''
 
'''(PCIE+USB interface)'''
  
| [[File:media/image6%2016.png]]
+
| [[File:plus5-img616.png]]
 +
|}
 +
 
 +
::{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''Pay attention to RTL8852BE, please do not buy the module shown in the figure below, there will be problems after testing.'''</big>
 +
 
 +
[[File:plus5-img616-2.png|center]]
 
|}
 
|}
  
 
<ol start="2" style="list-style-type: decimal;">
 
<ol start="2" style="list-style-type: decimal;">
 
<li><p>First insert the PCIe wireless network card into the M.2 E-KEY interface of the development board and fix it</p>
 
<li><p>First insert the PCIe wireless network card into the M.2 E-KEY interface of the development board and fix it</p>
<p>[[File:media/image617.png|263x178px]]</p></li>
+
<p>[[File:plus5-img617.png]]</p></li>
 
<li><p>Then connect the power supply of the Type-C interface to the development board, and power on</p></li>
 
<li><p>Then connect the power supply of the Type-C interface to the development board, and power on</p></li>
 
<li><p>After the system starts, please refer to the section of WIFI connection test method for WIFI connection and test method</p></li>
 
<li><p>After the system starts, please refer to the section of WIFI connection test method for WIFI connection and test method</p></li>
Line 10,084: Line 13,221:
  
 
<span id="wifi-connection-test-method"></span>
 
<span id="wifi-connection-test-method"></span>
 +
 
== WIFI connection test method ==
 
== WIFI connection test method ==
  
'''First of all, please note that there is no WIFI module on the Orange Pi 5 Plus development board, and an external PCIe network card or USB network card is required to use the WIFI function.'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''<span style="color:#FF0000">First of all, please note that there is no WIFI module on the Orange Pi 5 Plus development board, and an external PCIe network card or USB network card is required to use the WIFI function.</span>'''
  
 
'''For instructions on using the external PCIe network card, please refer to the section on how to use the M.2 E-Key PCIe WIFI6+Bluetooth module.'''
 
'''For instructions on using the external PCIe network card, please refer to the section on how to use the M.2 E-Key PCIe WIFI6+Bluetooth module.'''
  
'''For instructions on using the external USB network card, please refer to the section on how to use the USB wireless network card.'''
+
'''For instructions on using the external USB network card, please refer to the section on how to use the USB wireless network card.'''</big>
 +
|}
  
 
# First click to enter the '''Setting'''
 
# First click to enter the '''Setting'''
  
[[File:media/image618.png|553x182px]]
+
::[[File:plus5-img618.png]]
  
 
<ol start="2" style="list-style-type: decimal;">
 
<ol start="2" style="list-style-type: decimal;">
<li>Then select '''Network &amp; internet'''</li></ol>
+
<li>Then select '''Network &amp; internet'''</li>
 
 
[[File:media/image619.png|553x154px]]
 
  
 +
[[File:plus5-img619.png]]
 +
</ol>
 
<ol start="3" style="list-style-type: decimal;">
 
<ol start="3" style="list-style-type: decimal;">
<li>Then select '''Internet'''</li></ol>
+
<li>Then select '''Internet'''</li>
 
 
[[File:media/image620.png|553x103px]]
 
  
 +
[[File:plus5-img620.png]]
 +
</ol>
 
<ol start="4" style="list-style-type: decimal;">
 
<ol start="4" style="list-style-type: decimal;">
<li>Then turn on the '''Wi-Fi''' switch</li></ol>
+
<li>Then turn on the '''Wi-Fi''' switch</li>
 
 
[[File:media/image621.png|553x65px]]
 
  
 +
[[File:plus5-img621.png]]
 +
</ol>
 
<ol start="5" style="list-style-type: decimal;">
 
<ol start="5" style="list-style-type: decimal;">
 
<li><p>After turning on '''Wi-Fi''', if everything is normal, you can scan to nearby Wi-Fi hotspots</p>
 
<li><p>After turning on '''Wi-Fi''', if everything is normal, you can scan to nearby Wi-Fi hotspots</p>
<p>[[File:media/image622.png|549x172px]]</p></li>
+
<p>[[File:plus5-img622.png]]</p></li>
 
<li><p>Then select the Wi-Fi you want to connect to, and the password input interface shown in the figure below will pop up</p>
 
<li><p>Then select the Wi-Fi you want to connect to, and the password input interface shown in the figure below will pop up</p>
<p>[[File:media/image623.png|553x237px]]</p></li>
+
<p>[[File:plus5-img623.png]]</p></li>
 
<li><p>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</p>
 
<li><p>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</p>
<p>[[File:media/image624.png|553x232px]]</p></li>
+
<p>[[File:plus5-img624.png]]</p></li>
 
<li><p>The display after successful Wi-Fi connection is shown in the figure below:</p>
 
<li><p>The display after successful Wi-Fi connection is shown in the figure below:</p>
<p>[[File:media/image625.png|553x93px]]</p></li></ol>
+
<p>[[File:plus5-img625.png]]</p></li></ol>
  
 
<span id="how-to-use-wi-fi-hotspot"></span>
 
<span id="how-to-use-wi-fi-hotspot"></span>
 +
 
== How to use Wi-Fi hotspot ==
 
== How to use Wi-Fi hotspot ==
  
Line 10,127: Line 13,270:
 
<li><p>First, please make sure that the Ethernet port is connected to the network cable and can access the Internet normally</p></li>
 
<li><p>First, please make sure that the Ethernet port is connected to the network cable and can access the Internet normally</p></li>
 
<li><p>Then select '''Settings'''</p>
 
<li><p>Then select '''Settings'''</p>
<p>[[File:media/image618.png|553x182px]]</p></li>
+
<p>[[File:plus5-img618.png]]</p></li>
 
<li><p>Then select '''Network &amp; internet'''</p>
 
<li><p>Then select '''Network &amp; internet'''</p>
<p>[[File:media/image619.png|553x154px]]</p></li>
+
<p>[[File:plus5-img619.png]]</p></li>
 
<li><p>Then select '''Hotspot &amp; tethering'''</p>
 
<li><p>Then select '''Hotspot &amp; tethering'''</p>
<p>[[File:media/image626.png|575x195px]]</p></li>
+
<p>[[File:plus5-img626.png]]</p></li>
 
<li><p>Then select '''Wi-Fi hotspot'''</p>
 
<li><p>Then select '''Wi-Fi hotspot'''</p>
<p>[[File:media/image627.png|575x96px]]</p></li>
+
<p>[[File:plus5-img627.png]]</p></li>
 
<li><p>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)'''</p>
 
<li><p>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)'''</p>
<p>[[File:media/image628.png|575x187px]]</p></li>
+
<p>[[File:plus5-img628.png]]</p></li>
<li><p>At this point, 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</p></li></ol>
+
<li><p>At this point, 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</p></li>
 
 
[[File:media/image629.png|342x260px]]
 
  
 +
[[File:plus5-img629.png]]
 +
</ol>
 
<ol start="8" style="list-style-type: decimal;">
 
<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>
+
<li>After the connection is successful, it will be displayed as shown in the figure below (the interface of different mobile phones will be different, the specific interface is subject to the display of your mobile phone). At this point, you can open a webpage on your mobile phone to see if you can access the Internet. If you can open the webpage normally, it means that the '''WI-FI Hotspot''' of the development board can be used normally.</li>
  
[[File:media/image630.png|347x175px]]
+
[[File:plus5-img630.png]]
 +
</ol>
 +
<span id="bluetooth-test-method"></span>
  
<span id="bluetooth-test-method"></span>
 
 
== Bluetooth test method ==
 
== Bluetooth test method ==
  
'''Please note that there is no Bluetooth module on the Orange Pi 5 Plus development board, and an external PCIe network card with Bluetooth or a USB network card with Bluetooth is required to use the Bluetooth function.'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''<span style="color:#FF0000">Please note that there is no Bluetooth module on the Orange Pi 5 Plus development board, and an external PCIe network card with Bluetooth or a USB network card with Bluetooth is required to use the Bluetooth function.</span>'''
  
 
'''For instructions on using the external PCIe network card, please refer to the section on how to use the M.2 E-Key PCIe WIFI6+Bluetooth module.'''
 
'''For instructions on using the external PCIe network card, please refer to the section on how to use the M.2 E-Key PCIe WIFI6+Bluetooth module.'''
  
'''For instructions on using the external USB network card, please refer to the section on how to use the USB wireless network card.'''
+
'''For instructions on using the external USB network card, please refer to the section on how to use the USB wireless network card.'''</big>
 +
|}
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>First click to enter the '''Setting'''</p>
 
<li><p>First click to enter the '''Setting'''</p>
<p>[[File:media/image618.png|553x182px]]</p></li>
+
<p>[[File:plus5-img618.png]]</p></li>
 
<li><p>Then select '''Connected devices'''</p>
 
<li><p>Then select '''Connected devices'''</p>
<p>[[File:media/image631.png|575x146px]]</p></li>
+
<p>[[File:plus5-img631.png]]</p></li>
 
<li><p>Then click '''<span class="mark">Pair new device</span>''' to turn on Bluetooth and start scanning the surrounding Bluetooth devices</p>
 
<li><p>Then click '''<span class="mark">Pair new device</span>''' to turn on Bluetooth and start scanning the surrounding Bluetooth devices</p>
<p>[[File:media/image632.png|575x144px]]</p></li>
+
<p>[[File:plus5-img632.png]]</p></li>
 
<li><p>The searched Bluetooth devices will be displayed under '''Available devices'''</p>
 
<li><p>The searched Bluetooth devices will be displayed under '''Available devices'''</p>
<p>[[File:media/image633.png|575x200px]]</p></li>
+
<p>[[File:plus5-img633.png]]</p></li>
 
<li><p>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</p>
 
<li><p>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</p>
<p>[[File:media/image634.png|575x155px]]</p></li>
+
<p>[[File:plus5-img634.png]]</p></li>
 
<li><p>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</p>
 
<li><p>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</p>
<p>[[File:media/image635.png|308x232px]]</p></li>
+
<p>[[File:plus5-img635.png]]</p></li>
 
<li><p>After the pairing is completed, you can see the paired Bluetooth device as shown in the figure below</p>
 
<li><p>After the pairing is completed, you can see the paired Bluetooth device as shown in the figure below</p>
<p>[[File:media/image636.png|575x170px]]</p></li>
+
<p>[[File:plus5-img636.png]]</p></li>
 
<li><p>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.</p>
 
<li><p>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.</p>
<p>[[File:media/image637.png|575x250px]]</p></li>
+
<p>[[File:plus5-img637.png]]</p></li>
 
<li><p>You can open the '''Download''' directory in the file manager to view the pictures received by the Android system Bluetooth of the development board</p>
 
<li><p>You can open the '''Download''' directory in the file manager to view the pictures received by the Android system Bluetooth of the development board</p>
<p>[[File:media/image638.png|575x86px]]</p></li></ol>
+
<p>[[File:plus5-img638.png]]</p></li></ol>
  
 
<span id="test-method-of-hdmi-in"></span>
 
<span id="test-method-of-hdmi-in"></span>
 +
 
== Test method of HDMI In ==
 
== Test method of HDMI In ==
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>The location of the HDMI In interface on the development board is as follows:</p>
 
<li><p>The location of the HDMI In interface on the development board is as follows:</p>
<p>[[File:media/image265.png|351x112px]]</p></li>
+
<p>[[File:plus5-img265.png]]</p></li>
 
<li><p>Then use the HDMI to HDMI cable shown in the figure below to connect the HDMI output of other devices to the HDMI In interface of the development board</p>
 
<li><p>Then use the HDMI to HDMI cable shown in the figure below to connect the HDMI output of other devices to the HDMI In interface of the development board</p>
<p>[[File:media/image11.png|199x129px]]</p></li>
+
<p>[[File:plus5-img11.png]]</p></li>
 
<li><p>Make sure that the HDMI output of the device connected to the HDMI In interface is normal, and then open the HDMI In test APP</p>
 
<li><p>Make sure that the HDMI output of the device connected to the HDMI In interface is normal, and then open the HDMI In test APP</p>
<p>[[File:media/image639.png|532x167px]]</p></li>
+
<p>[[File:plus5-img639.png]]</p></li>
 
<li><p>Then you can see the video input of HDMI In, and the audio input of HDMI In will also be output from the HDMI TX interface or headphone interface of the development board. The figure below shows the desktop of the Linux system of the OPi5 development board input through HDMI In.</p>
 
<li><p>Then you can see the video input of HDMI In, and the audio input of HDMI In will also be output from the HDMI TX interface or headphone interface of the development board. The figure below shows the desktop of the Linux system of the OPi5 development board input through HDMI In.</p>
<p>[[File:media/image640.png|533x301px]]</p></li></ol>
+
<p>[[File:plus5-img640.png]]</p></li></ol>
  
 
<span id="how-to-use-10.9.10.1-inch-mipi-screen"></span>
 
<span id="how-to-use-10.9.10.1-inch-mipi-screen"></span>
 
== How to use 10.9.10.1 inch MIPI screen ==
 
== How to use 10.9.10.1 inch MIPI screen ==
  
'''Please make sure that the Android image used is the image of the following two versions:'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''Please make sure that the Android image used is the image of the following two versions:'''
  
 
'''OrangePi5Plus_RK3588_Android12_lcd_v1.x.x.img'''
 
'''OrangePi5Plus_RK3588_Android12_lcd_v1.x.x.img'''
  
'''OrangePi5Plus_RK3588_Android12_spi-nvme_lcd_v1.x.x.img'''
+
'''OrangePi5Plus_RK3588_Android12_spi-nvme_lcd_v1.x.x.img'''</big>
 +
|}
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>The screen needs to be assembled first, please refer to the assembly method of the 10.1-inch MIPI screen</p></li>
 
<li><p>The screen needs to be assembled first, please refer to the assembly method of the 10.1-inch MIPI screen</p></li>
 
<li><p>The interface position of the LCD on the development board is shown in the figure below:</p>
 
<li><p>The interface position of the LCD on the development board is shown in the figure below:</p>
<p>[[File:media/image641.png|317x80px]]</p>
+
<p>[[File:plus5-img641.png]]</p>
<p>'''Note that the touch interface below is not for the LCD MIPI screen. It is currently a spare interface and cannot be used.'''</p>
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
<p>[[File:media/image425.png|334x70px]]</p></li>
+
|-
 +
|
 +
<big><p>'''Note that the touch interface below is not for the LCD MIPI screen. It is currently a spare interface and cannot be used.'''</p></big>
 +
 
 +
<p>[[File:plus5-img425.png|center]]</p>
 +
|}
 +
</li>
 
<li><p>Connect the assembled screen to the LCD interface, connect the Type-C power supply to the board, and power on. After the system starts, you can see the screen display as shown in the figure below</p>
 
<li><p>Connect the assembled screen to the LCD interface, connect the Type-C power supply to the board, and power on. After the system starts, you can see the screen display as shown in the figure below</p>
<p>[[File:media/image642.png|517x345px]]</p></li></ol>
+
<p>[[File:plus5-img642.png]]</p></li></ol>
  
 
<span id="ov13850-and-ov13855-mipi-camera-test-method"></span>
 
<span id="ov13850-and-ov13855-mipi-camera-test-method"></span>
 +
 
== OV13850 and OV13855 MIPI camera test method ==
 
== OV13850 and OV13855 MIPI camera test method ==
  
Line 10,212: Line 13,372:
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
 
<li><p>OV13850 camera with 13 million MIPI interface</p>
 
<li><p>OV13850 camera with 13 million MIPI interface</p>
<p>[[File:media/image23.png|268x151px]]</p></li>
+
<p>[[File:plus5-img23.png]]</p></li>
 
<li><p>OV13855 camera with 13 million MIPI interface</p>
 
<li><p>OV13855 camera with 13 million MIPI interface</p>
<p>[[File:media/image24.png|253x150px]]</p>
+
<p>[[File:plus5-img24.png]]</p></li></ol>
<p>The adapter boards and FPC cables used by the OV13850 and OV13855 cameras are the same, but the positions of the two cameras connected to the adapter boards are different. The FPC cable is shown in the figure below. Please note that the FPC cable has a direction. The end marked '''TO MB''' needs to be inserted into the camera interface of the development board, and the end marked '''TO CAMERA''' needs to be inserted into the camera adapter board.</p></li></ol>
+
<p>The adapter boards and FPC cables used by the OV13850 and OV13855 cameras are the same, but the positions of the two cameras connected to the adapter boards are different. The FPC cable is shown in the figure below. Please note that the FPC cable has a direction. The end marked '''TO MB''' needs to be inserted into the camera interface of the development board, and the end marked '''TO CAMERA''' needs to be inserted into the camera adapter board.</p>
  
[[File:media/image436.png|475x99px]]
+
[[File:plus5-img436.png]]
  
 
There are a total of 3 camera interfaces on the camera adapter board, and only one can be used at a time, as shown in the figure below, of which:
 
There are a total of 3 camera interfaces on the camera adapter board, and only one can be used at a time, as shown in the figure below, of which:
Line 10,224: Line 13,384:
 
<li><p>'''No.1 port is connected to OV13850 camera'''</p></li>
 
<li><p>'''No.1 port is connected to OV13850 camera'''</p></li>
 
<li><p>'''No.2 interface is connected to OV13855 camera'''</p></li>
 
<li><p>'''No.2 interface is connected to OV13855 camera'''</p></li>
<li><p>No. 3 interface is not used, just ignore it</p></li></ol>
+
<li><p>No.3 interface is not used, just ignore it</p></li>
  
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image643.png|333x199px|图片3]]
+
[[File:plus5-img643.png]]
  
</div>
+
</div></ol>
 
The location of the camera interface on the Orange Pi 5 Plus development board is shown in the figure below:
 
The location of the camera interface on the Orange Pi 5 Plus development board is shown in the figure below:
  
[[File:media/image644.png|388x65px]]
+
[[File:plus5-img644.png]]
  
 
The method of inserting the camera into the CAM interface of the development board is as follows:
 
The method of inserting the camera into the CAM interface of the development board is as follows:
  
[[File:media/image439.png|285x132px]]
+
[[File:plus5-img439.png]]
  
 
After connecting the camera to the development board, we can use the following method to test the camera:
 
After connecting the camera to the development board, we can use the following method to test the camera:
Line 10,243: Line 13,403:
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
 
<li><p>Open the camera APP on the desktop</p>
 
<li><p>Open the camera APP on the desktop</p>
<p>[[File:media/image645.png|491x279px]]</p></li>
+
<p>[[File:plus5-img645.png]]</p></li>
 
<li><p>Then you can see the preview screen of the camera</p>
 
<li><p>Then you can see the preview screen of the camera</p>
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image646.png|379x213px|Screenshot_20230317-073757]]
+
[[File:plus5-img646.png]]
  
 
</div>
 
</div>
 
<p>Press and hold the mouse in the area shown in the red box in the picture below of the camera APP and then drag to the right to call up the switching interface for taking pictures and recording</p>
 
<p>Press and hold the mouse in the area shown in the red box in the picture below of the camera APP and then drag to the right to call up the switching interface for taking pictures and recording</p>
<p>[[File:media/image647.png|391x222px]]</p>
+
<p>[[File:plus5-img647.png]]</p>
 
<p>The switching interface of taking pictures and recording is as follows, click Video to switch to '''video''' recording mode</p>
 
<p>The switching interface of taking pictures and recording is as follows, click Video to switch to '''video''' recording mode</p>
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image648.png|386x217px|Screenshot_20230317-074419]]
+
[[File:plus5-img648.png]]
  
 
</div>
 
</div>
 
<p>Click the position shown in the figure below to enter the camera setting interface</p>
 
<p>Click the position shown in the figure below to enter the camera setting interface</p>
<p>[[File:media/image649.png|390x221px]]</p>
+
<p>[[File:plus5-img649.png]]</p>
 
<p>The setting interface of the camera is as follows:</p>
 
<p>The setting interface of the camera is as follows:</p>
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image650.png|429x241px|Screenshot_20230317-075325]]
+
[[File:plus5-img650.png]]
  
 
</div></li></ol>
 
</div></li></ol>
  
 
<span id="pin-interface-gpio-uart-spi-and-pwm-test"></span>
 
<span id="pin-interface-gpio-uart-spi-and-pwm-test"></span>
== 26pin interface GPIO, UART, SPI and PWM test ==
+
 
 +
== 40pin interface GPIO, UART, SPI and PWM test ==
  
 
<span id="pin-gpio-port-test-3"></span>
 
<span id="pin-gpio-port-test-3"></span>
Line 10,275: Line 13,436:
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>First click on the wiringOP icon to open the wiringOP APP</p>
 
<li><p>First click on the wiringOP icon to open the wiringOP APP</p>
<p>[[File:media/image651.png|552x183px]]</p></li>
+
<p>[[File:plus5-img651.png]]</p></li>
 
<li><p>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</p>
 
<li><p>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</p>
<p>[[File:media/image652.png|553x131px]]</p></li>
+
<p>[[File:plus5-img652.png]]</p></li>
 
<li><p>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 26pin 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 the wPi number, GPIO mode, and pin level can be obtained.</p>
 
<li><p>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 26pin 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 the wPi number, GPIO mode, and pin level can be obtained.</p>
<p>[[File:media/image653.png|553x288px]]</p></li>
+
<p>[[File:plus5-img653.png]]</p></li>
 
<li><p>Then click the '''GPIO READALL''' button, the output information is as shown in the figure below:</p>
 
<li><p>Then click the '''GPIO READALL''' button, the output information is as shown in the figure below:</p>
<p>[[File:media/image654.png|553x310px]]</p></li>
+
<p>[[File:plus5-img654.png]]</p></li>
 
<li><p>There are a total of 28 GPIO ports in the 40pins of the development board that can be used. The following uses pin 11—the corresponding GPIO is GPIO1_A4—the corresponding wPi serial number is 5—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 11. When the button is selected, pin 11 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</p>
 
<li><p>There are a total of 28 GPIO ports in the 40pins of the development board that can be used. The following uses pin 11—the corresponding GPIO is GPIO1_A4—the corresponding wPi serial number is 5—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 11. When the button is selected, pin 11 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</p>
<p>[[File:media/image655.png|204x392px]]</p></li>
+
<p>[[File:plus5-img655.png]]</p></li>
 
<li><p>Then click the '''GPIO READALL''' button, you can see that the current pin 7 mode is '''OUT''', and the pin level is high</p>
 
<li><p>Then click the '''GPIO READALL''' button, you can see that the current pin 7 mode is '''OUT''', and the pin level is high</p>
<p>[[File:media/image656.png|552x259px]]</p></li>
+
<p>[[File:plus5-img656.png]]</p></li>
 
<li><p>Click the '''CheckBox''' button in the figure below again to cancel the check status. Pin 11 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.</p>
 
<li><p>Click the '''CheckBox''' button in the figure below again to cancel the check status. Pin 11 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.</p>
<p>[[File:media/image657.png|205x394px]]</p></li>
+
<p>[[File:plus5-img657.png]]</p></li>
 
<li><p>Then click the '''GPIO READALL''' button, you can see that the current mode of pin 11 is OUT, and the pin level is low</p>
 
<li><p>Then click the '''GPIO READALL''' button, you can see that the current mode of pin 11 is OUT, and the pin level is low</p>
<p>[[File:media/image658.png|552x258px]]</p></li></ol>
+
<p>[[File:plus5-img658.png]]</p></li></ol>
  
 
<span id="pin-uart-test-2"></span>
 
<span id="pin-uart-test-2"></span>
Line 10,296: Line 13,457:
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>'''UART3''' and '''UART8''' are enabled by default in Android. The position of the 40pin is shown in the figure below, and the corresponding device nodes are /dev/ttyS3 and /dev/ttyS8 respectively</p>
 
<li><p>'''UART3''' and '''UART8''' are enabled by default in Android. The position of the 40pin is shown in the figure below, and the corresponding device nodes are /dev/ttyS3 and /dev/ttyS8 respectively</p>
<p>[[File:media/image659.png|508x139px]]</p></li>
+
<p>[[File:plus5-img659.png]]</p></li>
 
<li><p>First click on the wiringOP icon to open the wiringOP APP</p>
 
<li><p>First click on the wiringOP icon to open the wiringOP APP</p>
<p>[[File:media/image651.png|552x183px]]</p></li>
+
<p>[[File:plus5-img651.png]]</p></li>
 
<li><p>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</p>
 
<li><p>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</p>
<p>[[File:media/image660.png|552x123px]]</p></li>
+
<p>[[File:plus5-img660.png]]</p></li>
<li><p>The serial port test interface of the APP is shown in the figure below</p></li></ol>
+
<li><p>The serial port test interface of the APP is shown in the figure below</p></li>
 
 
[[File:media/image661.png|552x310px]]
 
  
 +
[[File:plus5-img661.png]]
 +
</ol>
 
<ol start="5" style="list-style-type: decimal;">
 
<ol start="5" style="list-style-type: decimal;">
<li>Take the test of '''UART3''' as an example below, select the '''/dev/ttyS3''' 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/ttyS3''' node. After opening successfully, click the OPEN button becomes unselectable, and the '''CLOSE''' button and '''SEND''' button become selectable</li></ol>
+
<li>Take the test of '''UART3''' as an example below, select the '''/dev/ttyS3''' 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/ttyS3''' node. After opening successfully, click the '''OPEN''' button becomes unselectable, and the '''CLOSE''' button and '''SEND''' button become selectable</li>
 
 
[[File:media/image662.png|552x154px]]
 
  
 +
[[File:plus5-img662.png]]
 +
</ol>
 
<ol start="6" style="list-style-type: decimal;">
 
<ol start="6" style="list-style-type: decimal;">
 
<li><p>Then use Dupont wire to short the RXD and TXD pins of uart3</p>
 
<li><p>Then use Dupont wire to short the RXD and TXD pins of uart3</p>
<p>[[File:media/image663.png|455x121px]]</p></li>
+
<p>[[File:plus5-img663.png]]</p></li>
<li><p>Then you can enter a character in the send edit box below, and click the '''SEND''' button to start sending</p></li></ol>
+
<li><p>Then you can enter a character in the send edit box below, and click the '''SEND''' button to start sending</p></li>
 
 
[[File:media/image664.png|553x155px]]
 
  
 +
[[File:plus5-img664.png]]
 +
</ol>
 
<ol start="8" style="list-style-type: decimal;">
 
<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>
+
<li>If everything is normal, the received string will be displayed in the receiving box</li>
  
[[File:media/image665.png|553x290px]]
+
[[File:plus5-img665.png]]
 +
</ol>
 +
<span id="pin-spi-test-3"></span>
  
<span id="pin-spi-test-3"></span>
+
=== 40pin SPI test ===
=== 26pin SPI test ===
 
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>From the table below, the available SPIs for Orange Pi 5 Plus are SPI0 and SPI4</p>
 
<li><p>From the table below, the available SPIs for Orange Pi 5 Plus are SPI0 and SPI4</p>
<p>[[File:media/image304.png|575x137px]]</p></li>
+
<p>[[File:plus5-img304.png]]</p></li>
 
<li><p>The Android system opens the SPI0 configuration by default. Here is a demonstration to test the SPI0 interface through the w25q64 module. First, connect the w25q64 device to the SPI0 interface.</p>
 
<li><p>The Android system opens the SPI0 configuration by default. Here is a demonstration to test the SPI0 interface through the w25q64 module. First, connect the w25q64 device to the SPI0 interface.</p>
<p>[[File:media/image666.png|195x164px]]</p></li>
+
<p>[[File:plus5-img666.png]]</p></li>
 
<li><p>Then click the wiringOP icon to open the wiringOP APP</p>
 
<li><p>Then click the wiringOP icon to open the wiringOP APP</p>
<p>[[File:media/image651.png|552x183px]]</p></li>
+
<p>[[File:plus5-img651.png]]</p></li>
 
<li><p>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</p>
 
<li><p>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</p>
<p>[[File:media/image667.png|552x123px]]</p></li>
+
<p>[[File:plus5-img667.png]]</p></li>
<li><p>Then click the '''OPEN''' button to initialize the SPI</p></li></ol>
+
<li><p>Then click the '''OPEN''' button to initialize the SPI</p></li>
 
 
[[File:media/image668.png|552x155px]]
 
  
 +
[[File:plus5-img668.png]]
 +
</ol>
 
<ol start="6" style="list-style-type: decimal;">
 
<ol start="6" style="list-style-type: decimal;">
 
<li><p>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</p>
 
<li><p>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</p>
<p>[[File:media/image669.png|575x252px]]</p></li>
+
<p>[[File:plus5-img669.png|575x252px]]</p></li>
<li><p>Finally, the APP will display the read ID information</p></li></ol>
+
<li><p>Finally, the APP will display the read ID information</p></li>
 
 
[[File:media/image670.png|552x206px]]
 
  
 +
[[File:plus5-img670.png]]
 +
</ol>
 
<ol start="8" style="list-style-type: decimal;">
 
<ol start="8" style="list-style-type: decimal;">
 
<li><p>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)</p>
 
<li><p>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)</p>
<p>[[File:media/image671.png|374x126px]]</p></li></ol>
+
<p>[[File:plus5-img671.png]]</p></li></ol>
  
 
<span id="pin-pwm-test"></span>
 
<span id="pin-pwm-test"></span>
=== 26pin PWM test ===
+
 
 +
=== 40pin PWM test ===
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>Android enables '''PWM10''' and '''PWM14''' by default, and the corresponding pins are located at 40pin as shown in the figure below:</p>
 
<li><p>Android enables '''PWM10''' and '''PWM14''' by default, and the corresponding pins are located at 40pin as shown in the figure below:</p>
<p>[[File:media/image672.png|431x130px]]</p></li>
+
<p>[[File:plus5-img672.png]]</p></li>
 
<li><p>First click on the wiringOP icon to open the wiringOP APP</p>
 
<li><p>First click on the wiringOP icon to open the wiringOP APP</p>
<p>[[File:media/image651.png|552x183px]]</p></li>
+
<p>[[File:plus5-img651.png]]</p></li>
 
<li><p>Then click the '''PWM_TEST''' button on the main interface of wiringOP to enter the PWM test interface</p>
 
<li><p>Then click the '''PWM_TEST''' button on the main interface of wiringOP to enter the PWM test interface</p>
<p>[[File:media/image673.png|553x125px]]</p></li>
+
<p>[[File:plus5-img673.png]]</p></li>
 
<li><p>The base address corresponding to PWM10 is '''febe0020''', and the base address corresponding to PWM14 is '''febf0020'''. Here, '''fd8b0020.pwm''' is displayed on the right of pwmchip0. At this time, you need to click the drop-down option to select other pwmchips until '''febe0020''' or '''febf0020''' is displayed on the right.</p>
 
<li><p>The base address corresponding to PWM10 is '''febe0020''', and the base address corresponding to PWM14 is '''febf0020'''. Here, '''fd8b0020.pwm''' is displayed on the right of pwmchip0. At this time, you need to click the drop-down option to select other pwmchips until '''febe0020''' or '''febf0020''' is displayed on the right.</p>
<p>[[File:media/image674.png|553x111px]]</p></li>
+
<p>[[File:plus5-img674.png]]</p></li>
 
<li><p>When the drop-down option menu selects '''pwmchip2''', the corresponding base address of '''PWM10''' is '''febe0020''' on the right</p>
 
<li><p>When the drop-down option menu selects '''pwmchip2''', the corresponding base address of '''PWM10''' is '''febe0020''' on the right</p>
<p>[[File:media/image675.png|553x102px]]</p></li>
+
<p>[[File:plus5-img675.png]]</p></li>
 
<li><p>When the drop-down option menu selects '''pwmchip4''', the corresponding base address of '''PWM14''' is '''febe0020''' on the right</p>
 
<li><p>When the drop-down option menu selects '''pwmchip4''', the corresponding base address of '''PWM14''' is '''febe0020''' on the right</p>
<p>[[File:media/image676.png|553x102px]]</p></li>
+
<p>[[File:plus5-img676.png]]</p></li>
 
<li><p>Take the test of PWM10 as an example, we need to select '''pwmchip2'''</p>
 
<li><p>Take the test of PWM10 as an example, we need to select '''pwmchip2'''</p>
<p>[[File:media/image675.png|553x102px]]</p></li>
+
<p>[[File:plus5-img675.png]]</p></li>
 
<li><p>Then confirm the PWM period, the default configuration is '''50000ns''', converted to PWM frequency is '''20KHz''', you can modify it yourself, click the open button to export '''PWM10'''</p>
 
<li><p>Then confirm the PWM period, the default configuration is '''50000ns''', converted to PWM frequency is '''20KHz''', you can modify it yourself, click the open button to export '''PWM10'''</p>
<p>[[File:media/image677.png|552x101px]]</p></li>
+
<p>[[File:plus5-img677.png]]</p></li>
<li><p>Then drag the drag bar below to change the PWM duty cycle, and then check Enable to output the PWM waveform</p></li></ol>
+
<li><p>Then drag the drag bar below to change the PWM duty cycle, and then check Enable to output the PWM waveform</p></li>
 
 
[[File:media/image678.png|575x116px]]
 
  
 +
[[File:plus5-img678.png]]
 +
</ol>
 
<ol start="10" style="list-style-type: decimal;">
 
<ol start="10" style="list-style-type: decimal;">
<li>Then use an oscilloscope to measure the 31st pin in the 40pin of the development board, and you can see the following waveform</li></ol>
+
<li>Then use an oscilloscope to measure the 31st pin in the 40pin of the development board, and you can see the following waveform</li>
  
[[File:media/image679.png|460x276px]]
+
[[File:plus5-img679.png]]
 +
</ol>
 +
<span id="how-to-use-adb-1"></span>
  
<span id="how-to-use-adb-1"></span>
 
 
== How to use ADB ==
 
== How to use ADB ==
  
Line 10,386: Line 13,550:
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>First prepare a good quality Type-C data cable</p>
 
<li><p>First prepare a good quality Type-C data cable</p>
<p>[[File:media/image21.png|122x97px]]</p></li>
+
<p>[[File:plus5-img21.png]]</p></li>
 
<li><p>Then connect the development board and Ubuntu PC through the Type-C data cable. The position of the Type-C interface of the development board is shown in the figure below:</p>
 
<li><p>Then connect the development board and Ubuntu PC through the Type-C data cable. The position of the Type-C interface of the development board is shown in the figure below:</p>
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image52.jpeg|319x90px|C:\Users\orangepi\Desktop\用户手册插图\Pi5 Plus\未标题-2.jpg未标题-2]]
+
[[File:plus5-img52.png]]
  
 
</div></li>
 
</div></li>
 
<li><p>Then install the adb tool on the Ubuntu PC</p>
 
<li><p>Then install the adb tool on the Ubuntu PC</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>test@test:~$ '''sudo apt update'''</p>
 
<p>test@test:~$ '''sudo apt update'''</p>
<p>test@test:~$ '''sudo apt -y install adb'''</p></li>
+
<p>test@test:~$ '''sudo apt -y install adb'''</p>
 +
|}
 +
</li>
 
<li><p>You can view the identified ADB devices through the following command</p>
 
<li><p>You can view the identified ADB devices through the following command</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>test@test:~$ '''adb devices'''</p>
 
<p>test@test:~$ '''adb devices'''</p>
 
<p>List of devices attached</p>
 
<p>List of devices attached</p>
 
<p>S63QCF54CJ device</p>
 
<p>S63QCF54CJ device</p>
 
<p>test@test:~$ '''lsusb'''</p>
 
<p>test@test:~$ '''lsusb'''</p>
<p>Bus 003 Device 006: ID 2207:0006</p></li>
+
<p>Bus 003 Device 006: ID 2207:0006</p>
<li><p>Then you can log in to the android system through the adb shell on the Ubuntu PC</p></li></ol>
+
|}
 +
</li>
 +
<li><p>Then you can log in to the android system through the adb shell on the Ubuntu PC</p></li>
  
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
test@test:~$ '''adb shell'''
 
test@test:~$ '''adb shell'''
  
 
console:/ $
 
console:/ $
 
+
|}
 +
</ol>
 
<ol start="6" style="list-style-type: decimal;">
 
<ol start="6" style="list-style-type: decimal;">
<li>Execute the following command to remount the Android system</li></ol>
+
<li>Execute the following command to remount the Android system</li>
  
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
test@test:~$ '''adb root'''
 
test@test:~$ '''adb root'''
  
 
test@test:~$ '''adb remount'''
 
test@test:~$ '''adb remount'''
 
+
|}
 +
</ol>
 
<ol start="7" style="list-style-type: decimal;">
 
<ol start="7" style="list-style-type: decimal;">
<li>Then you can transfer files to the Android system</li></ol>
+
<li>Then you can transfer files to the Android system</li>
  
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
test@test:~$ '''adb push example.txt /system/'''
 
test@test:~$ '''adb push example.txt /system/'''
 +
|}
 +
</ol>
 +
<span id="use-network-connection-adb-debugging"></span>
  
<span id="use-network-connection-adb-debugging"></span>
 
 
=== Use network connection adb debugging ===
 
=== Use network connection adb debugging ===
  
'''Using the network adb does not require a data cable of the Typc-C interface to connect the computer and the development board, but to communicate through the network, so first of all, please ensure that the wired or wireless network of the development board has been connected, and then obtain the IP address of the development board, and then to use.'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 
+
|-
 +
|
 +
<big>'''Using the network adb does not require a data cable of the Typc-C interface to connect the computer and the development board, but to communicate through the network, so first of all, please ensure that the wired or wireless network of the development board has been connected, and then obtain the IP address of the development board, and then to use.'''</big>
 +
|}
 +
 
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>Make sure that the '''service.adb.tcp.port''' of the Android system is set to port number 5555</p>
 
<li><p>Make sure that the '''service.adb.tcp.port''' of the Android system is set to port number 5555</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>console:/ # '''getprop | grep &quot;adb.tcp&quot;'''</p>
 
<p>console:/ # '''getprop | grep &quot;adb.tcp&quot;'''</p>
<p>[service.adb.tcp.port]: ['''5555''']</p></li>
+
<p>[service.adb.tcp.port]: ['''5555''']</p>
<li><p>If '''service.adb.tcp.port''' is not set, you can use the following command to set the port number of network adb</p></li></ol>
+
|}
 +
</li>
 +
<li><p>If '''service.adb.tcp.port''' is not set, you can use the following command to set the port number of network adb</p></li>
  
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
console:/ # '''setprop service.adb.tcp.port 5555'''
 
console:/ # '''setprop service.adb.tcp.port 5555'''
  
Line 10,436: Line 13,635:
  
 
console:/ # '''start adbd'''
 
console:/ # '''start adbd'''
 
+
|}
 +
</ol>
 
<ol start="3" style="list-style-type: decimal;">
 
<ol start="3" style="list-style-type: decimal;">
 
<li><p>Install adb tool on Ubuntu PC</p>
 
<li><p>Install adb tool on Ubuntu PC</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>test@test:~$ '''sudo apt update'''</p>
 
<p>test@test:~$ '''sudo apt update'''</p>
<p>test@test:~$ '''sudo apt install -y adb'''</p></li>
+
<p>test@test:~$ '''sudo apt install -y adb'''</p>
 +
|}
 +
</li>
 
<li><p>Then connect network adb on Ubuntu PC</p>
 
<li><p>Then connect network adb on Ubuntu PC</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>test@test:~$ '''adb connect 192.168.1.xxx''' '''(The IP address needs to be changed to the IP address of the development board)'''</p>
 
<p>test@test:~$ '''adb connect 192.168.1.xxx''' '''(The IP address needs to be changed to the IP address of the development board)'''</p>
 
<p>* daemon not running; starting now at tcp:5037</p>
 
<p>* daemon not running; starting now at tcp:5037</p>
 
<p>* daemon started successfully</p>
 
<p>* daemon started successfully</p>
 
<p>connected to 192.168.1.xxx:5555</p>
 
<p>connected to 192.168.1.xxx:5555</p>
 +
 +
 
<p>test@test:~$ '''adb devices'''</p>
 
<p>test@test:~$ '''adb devices'''</p>
 
<p>List of devices attached</p>
 
<p>List of devices attached</p>
<p>192.168.1.xxx:5555 device</p></li>
+
<p>192.168.1.xxx:5555 device</p>
<li><p>Then you can log in to the android system through the adb shell on the Ubuntu PC</p></li></ol>
+
|}
 +
</li>
 +
<li><p>Then you can log in to the android system through the adb shell on the Ubuntu PC</p></li>
  
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
test@test:~$ '''adb shell'''
 
test@test:~$ '''adb shell'''
  
 
console:/ #
 
console:/ #
 +
|}
 +
</ol>
 +
<span id="g-usb-remote-control-tested-by-android-box"></span>
  
<span id="g-usb-remote-control-tested-by-android-box"></span>
 
 
== 2.4G USB remote control tested by Android Box ==
 
== 2.4G USB remote control tested by Android Box ==
  
Line 10,462: Line 13,679:
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
 
<li><p>Contains a remote control</p>
 
<li><p>Contains a remote control</p>
<p>[[File:media/image680.png|199x149px]]</p></li>
+
<p>[[File:plus5-img680.png]]</p></li>
 
<li><p>A USB wireless receiver</p>
 
<li><p>A USB wireless receiver</p>
<p>[[File:media/image681.png|110x119px]]</p></li></ol>
+
<p>[[File:plus5-img681.png]]</p></li></ol>
 
</li>
 
</li>
 
<li><p>The Android Box system does not require any configuration, it can be used after plugging it in</p></li></ol>
 
<li><p>The Android Box system does not require any configuration, it can be used after plugging it in</p></li></ol>
Line 10,473: Line 13,690:
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>The development board comes with an infrared receiver, and its location is shown in the figure below:</p>
 
<li><p>The development board comes with an infrared receiver, and its location is shown in the figure below:</p>
<p>[[File:media/image682.png|435x124px]]</p></li>
+
<p>[[File:plus5-img682.png]]</p></li>
 
<li><p>Before testing infrared reception, we need to prepare an infrared remote control</p>
 
<li><p>Before testing infrared reception, we need to prepare an infrared remote control</p>
 
<div class="figure">
 
<div class="figure">
  
[[File:media/image683.png|141x127px|6FBFE2FA-31A4-4a26-AC63-9A3E4E359FFF]]
+
[[File:plus5-img683.png]]
  
 
</div>
 
</div>
<p>'''Note: The Android system provided by Orange Pi only supports the remote control provided by Orange Pi by default, and the remote control of TV or air conditioner cannot be used.'''</p></li>
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big><p>'''<span style="color:#FF0000">Note: The Android system provided by Orange Pi only supports the remote control provided by Orange Pi by default, and the remote control of TV or air conditioner cannot be used.</span>'''</p></big>
 +
|}
 +
</li>
 
<li><p>The Android Box system has been adapted to this remote control, and it can be used directly without other settings.</p></li></ol>
 
<li><p>The Android Box system has been adapted to this remote control, and it can be used directly without other settings.</p></li></ol>
  
 
<span id="how-to-use-hdmi-cec-function-in-android-box-system"></span>
 
<span id="how-to-use-hdmi-cec-function-in-android-box-system"></span>
 +
 
== How to use HDMI CEC function in Android Box system ==
 
== How to use HDMI CEC function in Android Box system ==
  
'''HDMI CEC allows users to control all connected devices through HDMI with only one remote control. Based on this function, we can control the development board with the remote control of the TV.'''
+
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
 +
|-
 +
|
 +
<big>'''HDMI CEC allows users to control all connected devices through HDMI with only one remote control. Based on this function, we can control the development board with the remote control of the TV.'''
  
'''Before testing this function, please make sure your TV supports HDMI CEC.'''
+
'''<span style="color:#FF0000">Before testing this function, please make sure your TV supports HDMI CEC.</span>'''</big>
 +
|}
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>First connect the development board to the TV through the HDMI cable, then power on and start</p></li>
 
<li><p>First connect the development board to the TV through the HDMI cable, then power on and start</p></li>
 
<li><p>Then turn on the HDMI CEC function in the TV settings. Different TVs may have different ways to turn it on. Here we take Xiaomi TV as an example. Press the menu button on the remote control, then select CEC remote control and press the confirmation button</p>
 
<li><p>Then turn on the HDMI CEC function in the TV settings. Different TVs may have different ways to turn it on. Here we take Xiaomi TV as an example. Press the menu button on the remote control, then select CEC remote control and press the confirmation button</p>
<p>[[File:media/image684.png|575x323px]]</p></li>
+
<p>[[File:plus5-img684.png]]</p></li>
 
<li><p>Then select '''&quot;On&quot;''' to open the HDMI CEC remote control</p>
 
<li><p>Then select '''&quot;On&quot;''' to open the HDMI CEC remote control</p>
<p>[[File:media/image685.png|576x257px]]</p></li>
+
<p>[[File:plus5-img685.png]]</p></li>
 
<li><p>At this point, you can control the Android Box system of the development board through the remote control of the TV</p></li></ol>
 
<li><p>At this point, you can control the Android Box system of the development board through the remote control of the TV</p></li></ol>
  
Line 10,507: Line 13,734:
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>First download the Android 12 source code sub-volume compressed package from Google network disk</p>
 
<li><p>First download the Android 12 source code sub-volume compressed package from Google network disk</p>
<p>[[File:media/image686.png|575x138px]]</p></li>
+
<p>[[File:plus5-img686.png]]</p></li>
 
<li><p>After downloading the sub-volume compression package of the Android 12 source code, please check whether the MD5 checksum is correct, if not, please download the source code again</p>
 
<li><p>After downloading the sub-volume compression package of the Android 12 source code, please check whether the MD5 checksum is correct, if not, please download the source code again</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>test@test:~$ '''md5sum -c Android_12.tar.gz.md5sum'''</p>
 
<p>test@test:~$ '''md5sum -c Android_12.tar.gz.md5sum'''</p>
<p>'''Android_12.tar.gz00: confirm'''</p>
+
<p style="color:#FF0000">'''Android_12.tar.gz00: confirm'''</p>
<p>'''Android_12.tar.gz01: confirm'''</p>
+
<p style="color:#FF0000">'''Android_12.tar.gz01: confirm'''</p>
<p>'''Android_12.tar.gz02: confirm'''</p>
+
<p style="color:#FF0000">'''Android_12.tar.gz02: confirm'''</p>
<p>'''Android_12.tar.gz03: confirm'''</p>
+
<p style="color:#FF0000">'''Android_12.tar.gz03: confirm'''</p>
<p>'''Android_12.tar.gz04: confirm'''</p>
+
<p style="color:#FF0000">'''Android_12.tar.gz04: confirm'''</p>
<p>'''Android_12.tar.gz05: confirm'''</p>
+
<p style="color:#FF0000">'''Android_12.tar.gz05: confirm'''</p>
<p>'''Android_12.tar.gz06: confirm'''</p>
+
<p style="color:#FF0000">'''Android_12.tar.gz06: confirm'''</p>
<p>'''Android_12.tar.gz07: confirm'''</p></li>
+
<p style="color:#FF0000">'''Android_12.tar.gz07: confirm'''</p>
<li><p>Then you need to merge multiple compressed files into one, and then decompress</p></li></ol>
+
|}
 +
</li>
 +
<li><p>Then you need to merge multiple compressed files into one, and then decompress</p></li>
  
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
test@test:~$ '''cat Android_12.tar.gz0* &gt; Android_12.tar.gz'''
 
test@test:~$ '''cat Android_12.tar.gz0* &gt; Android_12.tar.gz'''
  
 
test@test:~$ '''tar -xvf Android_12.tar.gz'''
 
test@test:~$ '''tar -xvf Android_12.tar.gz'''
 +
|}
 +
</ol>
 +
<span id="compile-the-source-code-of-android-12"></span>
  
<span id="compile-the-source-code-of-android-12"></span>
 
 
== Compile the source code of Android 12 ==
 
== Compile the source code of Android 12 ==
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
 
<li><p>First install the software packages required to compile the Android12 source code</p>
 
<li><p>First install the software packages required to compile the Android12 source code</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>test@test:~$ '''sudo apt-get update'''</p>
 
<p>test@test:~$ '''sudo apt-get update'''</p>
 
<p>test@test:~$ '''sudo apt-get install -y git gnupg flex bison gperf build-essential \'''</p>
 
<p>test@test:~$ '''sudo apt-get install -y git gnupg flex bison gperf build-essential \'''</p>
Line 10,534: Line 13,774:
 
<p>'''lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev ccache \'''</p>
 
<p>'''lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev ccache \'''</p>
 
<p>'''libgl1-mesa-dev libxml2-utils xsltproc unzip'''</p>
 
<p>'''libgl1-mesa-dev libxml2-utils xsltproc unzip'''</p>
<p>test@test:~$ '''sudo apt-get install -y u-boot-tools'''</p></li>
+
<p>test@test:~$ '''sudo apt-get install -y u-boot-tools'''</p>
 +
|}
 +
</li>
 
<li><p>There is a build.sh compilation script in the source code, and the compilation parameters are as follows</p>
 
<li><p>There is a build.sh compilation script in the source code, and the compilation parameters are as follows</p>
<p>a.-'''U''': compile uboot</p>
+
<ol style="list-style-type: lower-alpha;">
<p>b.-'''K''': compile kernel</p>
+
<li><p>-'''U''': compile uboot</p></li>
<p>c.-'''A''': compile android</p>
+
<li><p>-'''K''': compile kernel</p></li>
<p>d.-'''u''': package and generate update.img and update_spi_nvme.img</p>
+
<li><p>-'''A''': compile android</p></li>
<p>e.-'''o''': Compile the OTA package</p>
+
<li><p>-'''u''': package and generate update.img and update_spi_nvme.img</p></li>
<p>f.-'''d''': specify kernel dts</p></li>
+
<li><p>-'''o''': Compile the OTA package</p></li>
<li><p>Compile uboot, kernel, android and package them into update.img</p>
+
<li><p>-'''d''': specify kernel dts</p></li>
 +
</ol>
 +
</li>
 +
<li><p>Compile uboot, kernel, android and package them into update.img</p>
 
<ol style="list-style-type: lower-alpha;">
 
<ol style="list-style-type: lower-alpha;">
 
<li><p>The command to compile and support HDMI 8K display image (LCD &gt; off by default) is as follows:</p>
 
<li><p>The command to compile and support HDMI 8K display image (LCD &gt; off by default) is as follows:</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>test@test:~$ '''cd Android_12'''</p>
 
<p>test@test:~$ '''cd Android_12'''</p>
 
<p>test@test:~/ Android_12$ '''source build/envsetup.sh'''</p>
 
<p>test@test:~/ Android_12$ '''source build/envsetup.sh'''</p>
 
<p>test@test:~/ Android_12$ '''lunch rk3588_s-userdebug'''</p>
 
<p>test@test:~/ Android_12$ '''lunch rk3588_s-userdebug'''</p>
<p>test@test:~/ Android_12$ '''./build.sh -AUKu'''</p></li>
+
<p>test@test:~/ Android_12$ '''./build.sh -AUKu'''</p>
 +
|}
 +
</li>
 
<li><p>The command to compile and support LCD display image is as &gt; follows:</p>
 
<li><p>The command to compile and support LCD display image is as &gt; follows:</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>test@test:~$ '''cd Android_12'''</p>
 
<p>test@test:~$ '''cd Android_12'''</p>
 
<p>test@test:~/ Android_12$ '''export DUAL_LCD=true'''</p>
 
<p>test@test:~/ Android_12$ '''export DUAL_LCD=true'''</p>
 
<p>test@test:~/ Android_12$ '''source build/envsetup.sh'''</p>
 
<p>test@test:~/ Android_12$ '''source build/envsetup.sh'''</p>
 
<p>test@test:~/ Android_12$ '''lunch rk3588_s-userdebug'''</p>
 
<p>test@test:~/ Android_12$ '''lunch rk3588_s-userdebug'''</p>
<p>test@test:~/ Android_12$ '''./build.sh -AUKu'''</p></li>
+
<p>test@test:~/ Android_12$ '''./build.sh -AUKu'''</p>
 +
|}
 +
</li>
 
<li><p>The command to compile the image of the Box version is as &gt; follows:</p>
 
<li><p>The command to compile the image of the Box version is as &gt; follows:</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>test@test:~$ '''cd Android_12'''</p>
 
<p>test@test:~$ '''cd Android_12'''</p>
 
<p>test@test:~/ Android_12$ '''export BOARD=orangepi5plus'''</p>
 
<p>test@test:~/ Android_12$ '''export BOARD=orangepi5plus'''</p>
 
<p>test@test:~/ Android_12$ '''source build/envsetup.sh'''</p>
 
<p>test@test:~/ Android_12$ '''source build/envsetup.sh'''</p>
 
<p>test@test:~/ Android_12$ '''lunch rk3588_box-userdebug'''</p>
 
<p>test@test:~/ Android_12$ '''lunch rk3588_box-userdebug'''</p>
<p>test@test:~/ Android_12$ '''./build.sh -AUKu'''</p></li></ol>
+
<p>test@test:~/ Android_12$ '''./build.sh -AUKu'''</p>
 +
|}
 +
</li></ol>
 
</li>
 
</li>
 
<li><p>After the compilation is complete, the following information will be printed</p>
 
<li><p>After the compilation is complete, the following information will be printed</p>
 +
{| class="wikitable" style="width:800px;"
 +
|-
 +
|
 
<p>********rkImageMaker ver 2.1********</p>
 
<p>********rkImageMaker ver 2.1********</p>
 
<p>Generating new image, please wait...</p>
 
<p>Generating new image, please wait...</p>
Line 10,572: Line 13,835:
 
<p>New image generated successfully!</p>
 
<p>New image generated successfully!</p>
 
<p>Making update.img OK.</p>
 
<p>Making update.img OK.</p>
<p>Make update image ok!</p></li>
+
<p>Make update image ok!</p>
 +
|}
 +
</li>
 
<li><p>The final image file will be placed in the '''rockdev/Image-rk3588_s''' directory. Among them, '''update.img''' is the boot image that supports TF card and eMMC, and '''update_spi_nvme.img''' is the boot image of NVME SSD</p>
 
<li><p>The final image file will be placed in the '''rockdev/Image-rk3588_s''' directory. Among them, '''update.img''' is the boot image that supports TF card and eMMC, and '''update_spi_nvme.img''' is the boot image of NVME SSD</p>
<p>[mailto:test@test:~OrangePi_4/rk3399-android-8.1$ test@test:~/Android_12$] '''cd rockdev/Image-rk3588s_s'''</p>
+
{| class="wikitable" style="width:800px;"
<p>[mailto:test@test:~OrangePi_4/rk3399-android-8.1$ test@test:~/Android_12/rockdev/Image-rk3588s_s $] '''ls update*'''</p>
+
|-
<p>update.img update_spi_nvme.img</p></li>
+
|
 +
<p>test@test:~/Android_12$ '''cd rockdev/Image-rk3588s_s'''</p>
 +
<p>test@test:~/Android_12/rockdev/Image-rk3588s_s $ '''ls update*'''</p>
 +
<p>update.img update_spi_nvme.img</p>
 +
|}
 +
</li>
 
<li><p>If you compile the image of the Box version, the final generated image file will be placed in the '''rockdev/Image-rk3588_box''' directory</p>
 
<li><p>If you compile the image of the Box version, the final generated image file will be placed in the '''rockdev/Image-rk3588_box''' directory</p>
<p>[mailto:test@test:~OrangePi_4/rk3399-android-8.1$ test@test:~/Android_12$] '''cd rockdev/Image-rk3588_box'''</p>
+
{| class="wikitable" style="width:800px;"
<p>[mailto:test@test:~OrangePi_4/rk3399-android-8.1$ test@test:~/Android_12/rockdev/Image-rk3588_box$] '''ls update*'''</p>
+
|-
<p>update.img update_spi_nvme.img</p></li></ol>
+
|
 +
<p>test@test:~/Android_12$ '''cd rockdev/Image-rk3588_box'''</p>
 +
<p>test@test:~/Android_12/rockdev/Image-rk3588_box$ '''ls update*'''</p>
 +
<p>update.img update_spi_nvme.img</p>
 +
|}
 +
</li></ol>
  
 
<span id="instructions-for-using-the-orange-pi-os-droid-system"></span>
 
<span id="instructions-for-using-the-orange-pi-os-droid-system"></span>
Line 10,589: Line 13,864:
 
== Function adaptation of OPi OS Droid system ==
 
== Function adaptation of OPi OS Droid system ==
  
{| class="wikitable"
+
{| class="wikitable" style="width:800px;"
 
|-
 
|-
 
| style="text-align: left;"| '''Function'''
 
| style="text-align: left;"| '''Function'''
Line 10,640: Line 13,915:
 
|-
 
|-
 
| style="text-align: left;"| '''AX200-WIFI'''
 
| style="text-align: left;"| '''AX200-WIFI'''
| style="text-align: left;"| '''NO'''
+
| style="text-align: left;"| '''<span style="color:#FF0000">NO</span>'''
 
|-
 
|-
 
| style="text-align: left;"| '''AX200-BT'''
 
| style="text-align: left;"| '''AX200-BT'''
| style="text-align: left;"| '''NO'''
+
| style="text-align: left;"| '''<span style="color:#FF0000">NO</span>'''
 
|-
 
|-
 
| style="text-align: left;"| '''AX210-WIFI'''
 
| style="text-align: left;"| '''AX210-WIFI'''
| style="text-align: left;"| '''NO'''
+
| style="text-align: left;"| '''<span style="color:#FF0000">NO</span>'''
 
|-
 
|-
 
| style="text-align: left;"| '''AX210-BT'''
 
| style="text-align: left;"| '''AX210-BT'''
| style="text-align: left;"| '''NO'''
+
| style="text-align: left;"| '''<span style="color:#FF0000">NO</span>'''
 
|-
 
|-
 
| style="text-align: left;"| '''RTL8852BE-WIFI'''
 
| style="text-align: left;"| '''RTL8852BE-WIFI'''
Line 10,733: Line 14,008:
 
|-
 
|-
 
| style="text-align: left;"| '''MIPI LCD'''
 
| style="text-align: left;"| '''MIPI LCD'''
| style="text-align: left;"| '''NO'''
+
| style="text-align: left;"| '''<span style="color:#FF0000">NO</span>'''
 
|-
 
|-
 
| style="text-align: left;"| '''HDMI CEC'''
 
| style="text-align: left;"| '''HDMI CEC'''
| style="text-align: left;"| '''NO'''
+
| style="text-align: left;"| '''<span style="color:#FF0000">NO</span>'''
|}
+
|}
 
+
 
<span id="test-method-of-hdmi-in-1"></span>
+
<span id="test-method-of-hdmi-in-1"></span>
== Test method of HDMI In ==
+
 
 
+
== Test method of HDMI In ==
<ol style="list-style-type: decimal;">
+
 
<li><p>The location of the HDMI In interface on the development board is as follows:</p>
+
<ol style="list-style-type: decimal;">
<p>[[File:media/image265.png|282x90px]]</p></li>
+
<li><p>The location of the HDMI In interface on the development board is as follows:</p>
<li><p>Then use the HDMI to HDMI cable shown in the figure below to connect the HDMI output of other devices to the HDMI In interface of the development board</p>
+
<p>[[File:plus5-img265.png]]</p></li>
<p>[[File:media/image11.png|136x88px]]</p></li>
+
<li><p>Then use the HDMI to HDMI cable shown in the figure below to connect the HDMI output of other devices to the HDMI In interface of the development board</p>
<li><p>Make sure that the HDMI output of the device connected to the HDMI In interface is normal, and then open the HDMI In test APP</p>
+
<p>[[File:plus5-img11.png]]</p></li>
<p>[[File:media/image687.png|395x222px]]</p></li>
+
<li><p>Make sure that the HDMI output of the device connected to the HDMI In interface is normal, and then open the HDMI In test APP</p>
<li><p>Then the window shown in the figure below will appear. At this time, the video input of HDMI In cannot be seen. You need to click the position marked in the red box in the figure below to enlarge it to full screen</p>
+
<p>[[File:plus5-img687.png]]</p></li>
<p>[[File:media/image688.png|384x229px]]</p></li>
+
<li><p>Then the window shown in the figure below will appear. At this time, the video input of HDMI In cannot be seen. You need to click the position marked in the red box in the figure below to enlarge it to full screen</p>
<li><p>Then you can see the video input of HDMI In, and the audio input of HDMI In will also be output from the HDMI TX interface or headphone interface of the development board. The figure below shows the desktop of the Linux system of the OPi5 development board input through HDMI In.</p>
+
<p>[[File:plus5-img688.png]]</p></li>
<p>[[File:media/image689.png|400x238px]]</p></li></ol>
+
<li><p>Then you can see the video input of HDMI In, and the audio input of HDMI In will also be output from the HDMI TX interface or headphone interface of the development board. The figure below shows the desktop of the Linux system of the OPi5 development board input through HDMI In.</p>
 
+
<p>[[File:plus5-img689.png]]</p></li></ol>
<span id="appendix"></span>
+
 
 
+
<span id="appendix"></span>
= '''Appendix''' =
+
 
 
+
= '''Appendix''' =
<span id="user-manual-update-history"></span>
+
 
== User Manual Update History ==
+
<span id="user-manual-update-history"></span>
 
+
== User Manual Update History ==
{| class="wikitable"
+
 
|-
+
{| class="wikitable"
| * *vers ion**
+
|-
 
+
| '''version'''
| * *Date**
+
 
 
+
| '''Date'''
| '''Updated Notes'''
+
 
|-
+
| '''Updated Notes'''
| v1.0
+
|-
| 202 3-05-22
+
| v1.0
| initial version
+
| 2023-05-22
|-
+
| initial version
| v1.1
+
|-
| 202 3-05-24
+
| v1.1
| 1. How to use the infrared remote control of the Android Box system
+
| 2023-05-24
 
+
|  
2. Instructions for using the Orange Pi OS Droid system
+
1. How to use the infrared remote control of the Android Box system
 
+
 
|-
+
2. Instructions for using the Orange Pi OS Droid system
| v1.2
+
 
| 202 3-05-26
+
|-
| 1. Ubuntu/Debian: HDMI IN test method
+
| v1.2
 
+
| 2023-05-26
2. Delete the instructions for using the RTL8821CU USB WIFI module, this module is not recommended
+
|  
 
+
1. Ubuntu/Debian: HDMI IN test method
|-
+
 
| v1.3
+
2. Delete the instructions for using the RTL8821CU USB WIFI module, this module is not recommended
| 202 3-05-29
+
 
| 1. Update the method of using RKDevTool to burn the image to spiflash+ssd
+
|-
 +
| v1.3
 +
| 2023-05-29
 +
|  
 +
1. Update the method of using RKDevTool to burn the image to spiflash+ssd
 +
 
 +
2. Use RKDevTool to clear SPIFlash
 +
 
 +
|-
 +
| v1.4
 +
| 2023-05-31
 +
|
 +
1. Update the usage method of M.2 E-Key PCIe WIFI6+Bluetooth module
 +
 
 +
2. Ubuntu/Debian: How to use the ZFS file system
 +
 
 +
3. Ubuntu/Debian: Turn off the green light and blue light by default when booting
 +
 
 +
4. Add the instructions for using the Debian12 system (scattered in multiple sections)
 +
 
 +
5. Instructions for using the 5v pin in the 40pin interface of the development board to supply power
 +
 
 +
|-
 +
| v1.5
 +
| 2023-06-07
 +
|
 +
1. Add the picture of eMMC module
 +
 
 +
2. Correct the picture of the cooling fan interface
 +
 
 +
3. Add a method to check the temperature of nvme ssd
 +
 
 +
|}
 +
 
 +
<span id="image-update-history"></span>
 +
 
 +
== Image update history ==
 +
 
 +
{| class="wikitable"
 +
|-
 +
| '''Date'''
 +
 
 +
| '''Updated Notes'''
 +
|-
 +
| 2023-05-19
 +
|
 +
Orangepi5plus_1.0.0_debian_bullseye_server_linux5.10.110.7z
 +
 
 +
Orangepi5plus_1.0.0_debian_bullseye_desktop_xfce_linux5.10.110.7z
 +
 
 +
Orangepi5plus_1.0.0_debian_bullseye_desktop_kde-plasma_linux5.10.110.7z
 +
 
 +
Orangepi5plus_1.0.0_ubuntu_focal_server_linux5.10.110.7z
 +
 
 +
Orangepi5plus_1.0.0_ubuntu_focal_desktop_xfce_linux5.10.110.7z
 +
 
 +
Orangepi5plus_1.0.0_ubuntu_jammy_server_linux5.10.110.7z
 +
 
 +
Orangepi5plus_1.0.0_ubuntu_jammy_desktop_xfce_linux5.10.110.7z
 +
 
 +
Orangepi5plus_1.0.0_ubuntu_jammy_desktop_gnome_linux5.10.110.7z
 +
 
 +
Opios-droid-aarch64-opi5plus-23.05-linux5.10.110.tar.gz
 +
 
 +
Opios-droid-aarch64-opi5plus-23.05-linux5.10.110-spi-nvme.tar.gz
 +
 
 +
OrangePi5Plus_RK3588_Android12_v1.0.0.tar.gz
 +
 
 +
OrangePi5Plus_RK3588_Android12_lcd_v1.0.0.tar.gz
 +
 
 +
OrangePi5Plus-RK3588_Android12-box_v1.0.0.tar.gz
 +
 
 +
OrangePi5Plus_RK3588_Android12_spi-nvme_v1.0.0.tar.gz
 +
 
 +
OrangePi5Plus_RK3588_Android12_spi-nvme_lcd_v1.0.0.tar.gz
 +
 
 +
OrangePi5Plus-RK3588_Android12-box_spi-nvme_v1.0.0.tar.gz
 +
 
 +
openwrt-aarch64-opi5plus-23.05-linux5.10.110-ext4.img.gz
 +
 
 +
* initial version
 +
 
 +
|-
 +
| 2023-05-22
 +
|
 +
Opios-arch-aarch64-gnome-opi5plus-23.05-linux5.10.110.img.xz
 +
 
 +
openwrt-rockchip -armv8-xunlong_orangepi-5-plus-spi-squashfs-sysupgrade.bin
 +
 
 +
* initial version
 +
 
 +
|-
 +
| 2023-05-24
 +
|
 +
Orangepi5plus_1.0.2_debian_bullseye_desktop_kde-plasma_linux5.10.110
 +
 
 +
* Fix the problem that desktop audio cannot be used
 +
 
 +
* Update the chromium browser to chromium-browser_110.0, which supports video playback in h264, h265, vp8, vp9 and av1 formats
 +
 
 +
|-
 +
| 2023-05-26
 +
|
 +
Opios-arch-aarch64-gnome-opi5plus-23.05.1-linux5.10.110.img.xz
 +
 
 +
* Taskbar: remove calendar and music, add shortcuts for command line terminal and browser
 +
 
 +
* Support to open the command line terminal through the shortcut key of CTRL+ALT+T
 +
 
 +
OrangePi5Plus_RK3588_Android12_v1.0.1.tar.gz
 +
 
 +
OrangePi5Plus_RK3588_Android12_v1.0.1_lcd.tar.gz
 +
 
 +
OrangePi5Plus_RK3588_Android12_v1.0.1_spi-nvme.tar.gz
 +
 
 +
OrangePi5Plus_RK3588_Android12_v1.0.1_lcd_spi-nvme.tar.gz
 +
 
 +
* pre-install google play store
 +
 
 +
Orangepi5plus_1.0.4_debian_bullseye_desktop_kde-plasma_linux5.10.110.7z
 +
 
 +
* Support CTRL+ALT+T shortcut to open the command line terminal
 +
 
 +
* Added shortcuts for konsole terminal and chromium browser in the taskbar
 +
 
 +
* Optimize the display name of the audio device
 +
 
 +
* Optimize test_hdmiin.sh test script
 +
 
 +
* Fix the problem that spiflash+nvme ssd cannot start
 +
 
 +
Orangepi5plus_1.0.4_debian_bullseye_desktop_xfce_linux5.10.110.7z
 +
 
 +
* Support CTRL+ALT+T shortcut to open the command line terminal
 +
 
 +
* Optimize the display name of the audio device
 +
 
 +
* Optimize test_hdmiin.sh test script
 +
 
 +
* Update the chromium browser to chromium-browser_110.0, which supports video playback in h264, h265, vp8, vp9 and av1 formats
 +
 
 +
* Fix the problem that spiflash+nvme ssd cannot start
 +
 
 +
Orangepi5plus_1.0.4_ubuntu_focal_desktop_xfce_linux5.10.110.7z<br />
 +
Orangepi5plus_1.0.4_ubuntu_jammy_desktop_xfce_linux5.10.110.7z<br />
 +
Orangepi5plus_1.0.4_ubuntu_jammy_desktop_gnome_linux5.10.110.7z
 +
 
 +
* Support CTRL+ALT+T shortcut to open the command line terminal
 +
 
 +
* Optimize the display name of the audio device
 +
 
 +
* Optimize test_hdmiin.sh test script
 +
 
 +
* Fix the problem that spiflash+nvme ssd cannot start
 +
 
 +
Orangepi5plus_1.0.4_debian_bullseye_server_linux5.10.110.7z<br />
 +
Orangepi5plus_1.0.4_ubuntu_focal_server_linux5.10.110.7z<br />
 +
Orangepi5plus_1.0.4_ubuntu_jammy_server_linux5.10.110.7z
 +
 
 +
* Fix the problem that spiflash+nvme ssd cannot start
 +
 
 +
|-
 +
| 2023-05-29
 +
|
 +
Opios-droid-aarch64-opi5plus-23.05.1-linux5.10.110-en.tar.gz
 +
 
 +
Opios-droid-aarch64-opi5plus-23.05.1-linux5.10.110-en-spi-nvme.tar.gz
 +
 
 +
* Pre-installed google play store (en in the above image name means English version, you need to go to Google network disk to download)
 +
 
 +
|-
 +
| 2023-06-01
 +
|
 +
Orangepi5plus_1.0.6_ubuntu_jammy_desktop_xfce_linux5.10.110.7z
 +
 
 +
* Fix the problem that the zfs file system cannot be installed
 +
 
 +
* Add rk3588-opi5plus-disable-leds.dtbo, used to turn off blue and green lights
 +
 
 +
* Update the chromium browser to chromium-browser_110.0, which supports video playback in h264, h265, vp8, vp9 and av1 formats
  
2. Use RKDevTool to clear SPIFlash
+
Orangepi5plus_1.0.6_debian_bullseye_desktop_xfce_linux5.10.110.7z
  
|}
+
Orangepi5plus_1.0.6_debian_bullseye_desktop_kde-plasma_linux5.10.110.7z
  
<span id="image-update-history"></span>
+
* Update mpp package
== Image update history ==
 
  
{| class="wikitable"
+
* Fix the problem that the zfs file system cannot be installed
|-
 
| * *Date**
 
  
| '''Updated Notes'''
+
* Add rk3588-opi5plus-disable-leds.dtbo, used to turn off blue and green lights
|-
 
| 202 3-05-19
 
| Orangepi5plus_1.0.0_debian_bullseye_server_linux5.10.110
 
  
Oran gepi5plus_1.0.0_debian_bullseye_desktop_xfce_linux5.10.110
+
Orangepi5plus_1.0.6_ubuntu_focal_desktop_xfce_linux5.10.110.7z
  
Orangepi5p lus_1.0.0_debian_bullseye_desktop_kde-plasma_linux5.10.110
+
Orangepi5plus_1.0.6_ubuntu_jammy_desktop_gnome_linux5.10.110.7z
  
Orangepi5plus_1.0.0_ubuntu_focal_server_linux5.10.110
+
Orangepi5plus_1.0.6_ubuntu_focal_server_linux5.10.110.7z
 
 
O rangepi5plus_1.0.0_ubuntu_focal_desktop_xfce_linux5.10.110
 
 
 
Orangepi5plus_1.0.0_ubuntu_jammy_server_linux5.10.110
 
 
 
O rangepi5plus_1.0.0_ubuntu_jammy_desktop_xfce_linux5.10.110
 
 
 
Or angepi5plus_1.0.0_ubuntu_jammy_desktop_gnome_linux5.10.110
 
 
 
Opios-droid-aarch64-opi5plus-23.05-linux5.10.110.tar.gz
 
 
 
Opios- droid-aarch64-opi5plus-23.05-linux5.10.110-spi-nvme.tar.gz
 
 
 
OrangePi5Plus_RK3588_Android12_v1.0.0.tar.gz
 
 
 
OrangePi5Plus_RK3588_Android12_lcd_v1.0.0.tar.gz
 
 
 
OrangePi5Plus-RK3588_Android12-box_v1.0.0.tar.gz
 
 
 
OrangePi5Plus_RK3588_Android12_spi-nvme_v1.0.0.tar.gz
 
  
OrangePi5Plus_RK3588_Android12_spi-nvme_lcd_v1.0.0.tar.gz
+
Orangepi5plus_1.0.6_debian_bullseye_server_linux5.10.110.7z
  
OrangePi5Plus-RK3588_Android12-box_spi-nvme_v1.0.0.tar.gz
+
Orangepi5plus_1.0.6_ubuntu_jammy_server_linux5.10.110.7z
  
openwrt-aarch64-opi5plus-23.05-linux5.10.110-ext4.img.gz
+
* Add rk3588-opi5plus-disable-leds.dtbo, used to turn off blue and green lights
  
* initial version
+
* Fix the problem that the zfs file system cannot be installed
  
|-
+
Orangepi5plus_1.0.6_debian_bookworm_server_linux5.10.110
| 202 3-05-22
 
| Op ios-arch-aarch64-gnome-opi5plus-23.05-linux5.10.110.img.xz
 
  
openwrt-rockchip -armv8-xunlong_orangepi-5-plus-spi-squashfs-sysupgrade.bin
+
Orangepi5plus_1.0.6_debian_bookworm_desktop_xfce_linux5.10.110
  
 
* initial version
 
* initial version
 
|-
 
| 202 3-05-24
 
| Orangepi5p lus_1.0.2_debian_bullseye_desktop_kde-plasma_linux5.10.110
 
 
* Fix the problem that desktop audio cannot be used
 
 
* Update the chromium browser to chromium-browser_110.0, which supports video playback in h264, h265, vp8, vp9 and av1 formats
 
 
|-
 
| 202 3-05-26
 
| Opio s-arch-aarch64-gnome-opi5plus-23.05.1-linux5.10.110.img.xz
 
 
* Taskbar: remove calendar and music, add shortcuts for command line terminal and browser
 
 
* Support to open the command line terminal through the shortcut key of CTRL+ALT+T
 
 
OrangePi5Plus_RK3588_Android12_v1.0.1.tar.gz
 
 
OrangePi5Plus_RK3588_Android12_v1.0.1_lcd.tar.gz
 
 
OrangePi5Plus_RK3588_Android12_v1.0.1_spi-nvme.tar.gz
 
 
OrangePi5Plus_RK3588_Android12_v1.0.1_lcd_spi-nvme.tar.gz
 
 
* pre-install google play store
 
 
Orangepi5p lus_1.0.4_debian_bullseye_desktop_kde-plasma_linux5.10.110
 
 
* Support CTRL+ALT+T shortcut to open the command line terminal
 
 
* Added shortcuts for konsole terminal and chromium browser in the taskbar
 
 
* Optimize the display name of the audio device
 
 
* Optimize test_hdmiin.sh test script
 
 
* Fix the problem that spiflash+nvme ssd cannot start
 
 
Oran gepi5plus_1.0.4_debian_bullseye_desktop_xfce_linux5.10.110
 
 
* Support CTRL+ALT+T shortcut to open the command line terminal
 
 
* Optimize the display name of the audio device
 
 
* Optimize test_hdmiin.sh test script
 
 
* Update the chromium browser to chromium-browser_110.0, which supports video playback in h264, h265, vp8, vp9 and av1 formats
 
 
* Fix the problem that spiflash+nvme ssd cannot start
 
 
Or angepi5plus_1.0.4_ubuntu_focal_desktop_xfce_linux5.10.110<br />
 
Or angepi5plus_1.0.4_ubuntu_jammy_desktop_xfce_linux5.10.110<br />
 
Or angepi5plus_1.0.4_ubuntu_jammy_desktop_gnome_linux5.10.110
 
 
* Support CTRL+ALT+T shortcut to open the command line terminal
 
 
* Optimize the display name of the audio device
 
 
* Optimize test_hdmiin.sh test script
 
 
* Fix the problem that spiflash+nvme ssd cannot start
 
 
Orangepi5plus_1.0.4_debian_bullseye_server_linux5.10.110<br />
 
Orangepi5plus_1.0.4_ubuntu_focal_server_linux5.10.110<br />
 
Orangepi5plus_1.0.4_ubuntu_jammy_server_linux5.10.110
 
 
* Fix the problem that spiflash+nvme ssd cannot start
 
  
 
|}
 
|}

Latest revision as of 10:25, 15 June 2023

Contents

Basic Features of Orange Pi 5 Plus

What is Orange Pi 5 Plus

Orange Pi 5 Plus adopts Rockchip RK3588 new-generation octa-core 64-bit ARM processor, specifically quad-core A76 and quad-core A55, using Samsung 8nm LP process technology, large-core main frequency up to 2.4GHz, integrated ARM Mali-G610 MP4 GPU, embedded with high-performance 3D and 2D image acceleration modules, built-in AI accelerator NPU with a computing power of up to 6 Tops, optional 4GB, 8GB, 16GB or 32GB memory, with up to 8K display processing capabilities.

Orange Pi 5 Plus introduces quite a lot of interfaces, including 2 HDMI outputs, 1 HDMI input, USB-C/DP interface, M.2 M-key PCIe3.0x4, M.2 E-key PCIe2.0x1, 2 2.5G network port, eMMC expansion interface, USB2.0, USB3.0 interface, infrared, earphone, onboard MIC, speaker, RTC 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 5 Plus supports Orange Pi OS, the official operating system developed by Orange Pi. At the same time, it supports Android 12.1, OpenWRT, Debian11, Debian12, Ubuntu20.04 and Ubuntu22.04 and other operating systems.

Purpose of Orange Pi 5 Plus

We can use it to achieve:

  • A Linux desktop computer
  • A Linux web server
  • Android tablet
  • Android game console, etc.

Of course, there are more functions. Relying on a strong ecosystem and a variety of expansion accessories, OPi 5 Plus can help users easily realize the delivery from idea to prototype to mass production. It is a maker, dreamer, amateur The ideal creative platform for enthusiasts.

Hardware Specifications of Orange Pi 5 Plus

Hardware Specifications of Orange Pi 5 Plus
Master chip Rockchip RK3588(8nm LP process)
CPU • 8-core 64-bit processor

• 4 Cortex-A76 and 4 Cortex-A55 with independent NEON coprocessor

• Cortex-A76 up to 2.4GHz, Cortex-A55 up to 1.8GHz

GPU • Integrated ARM Mali-G610

• Built-in 3D GPU

• Compatible with OpenGL ES1.1/2.0/3.2, OpenCL 2.2 and Vulkan 1.2

NPU Embedded GPU supports INT4/INT8/INT16/FP16, with computing power up to 6 Tops
PMU RK806-1
RAM 4GB/8GB/16GB/32GB optional
Storage • QSPI Nor FLASH: 16MB/32MB

• MicroSD card slot

• eMMC socket, external eMMC module can be connected

• M.2 2280 slot for NVMe SSD (PCIe 3.0 x4)

USB • 2 x USB3.0

• 2 x USB2.0

• 1 x Type-C

Video • 2 x HDMI 2.1 output, up to 8K@60FPS

• 1 x Type-C (DP 1.4A) output, up to 4K@60FPS

• 1 x HDMI input, up to 4K@60FPS

• 1 x MIPI DSI 4 Lane output, up to 4K@60FPS

TP interface 1 x 6Pin FPC socket
Camera 1 x MIPI CSI 4 Lane
Audio • 1 x 3.5mm headphone jack audio input/output

• 1 x onboard MIC input

• 2 x HDMI output

• 1 x HDMI input

• 1 x DP output

• 1 x speaker output (2pin, 1.25mm specification)

Ethernet 2 x PCIe 2.5G Ethernet ports (RTL8125BG )
40pin expansion port Used to expand UART, I2C, SPI, CAN, PWM, GPIO interfaces
PCIe M.2 M-KEY PCIe 3.0 x 4 lanes, used to connect 2280 NVMe SSD solid state drive
PCIe M.2 E-KEY Contains PCIe 2.0 x 1/PCM/UART/USB2.0 interface, supports 2230 Wi-Fi6 /BT module
Button 1 MaskROM key, 1 RECOVERY key, 1 power on/off key
Powered supply Support Type-C power supply, 5V@4A
Infrared receiver 1 x infrared receiver
LED RGB LED three-color indicator light
Fan interface 2pin, 1.25mm specification, used to connect 5V fan, support PWM control switch and speed
RTC battery interface 2pin, 1.25mm specification, used to power the RTC module
Debugging 3pin debug serial port (UART)
Supported OS Orangepi OS(Droid)、Orangepi OS(Arch)、Orangepi OS(OH)、Ub untu20.04、Ubuntu22.04、Debian11、Debian12、OpenWRT and Android12
Introduction of Appearance Specifications
Product Size 100mm*75mm
Weight 86.5g

Top view and bottom view of Orange Pi 5 Plus

Top view:

Plus5-img4.png

Bottom view:

Plus5-img5.png

Interface details of Orange Pi 5 Plus

Plus5-img6.png

Plus5-img7.png

Introduction to the use of the development board

Prepare the required accessories

  1. TF card, a class 10 or above high-speed SanDisk card with a minimum capacity of 16GB (32GB or above is recommended)
Plus5-img8.png
  1. TF card reader, used to burn the image into the TF card
  2. Plus5-img9.png

  1. Display with HDMI interface
  2. Plus5-img10-1.png

  1. HDMI to HDMI cable, used to connect the development board to an HDMI monitor or TV for display
  2. Plus5-img11.png

    Note, if you want to connect a 4K or 8K display, please make sure that the HDMI cable supports 4K or 8K video display.

  1. Type-C to HDMI cable, connect the development board to an HDMI monitor or TV for display through the Type-C interface
  2. Plus5-img12.png

  1. Type-C to USB adapter, used to connect USB devices such as USB storage devices or mouse keyboards through the Type-C interface (there are 2 USB3.0 HOST interfaces and 2 USB2.0 HOST interfaces on the development board, this accessory generally not used)
  2. Plus5-img13.png

  1. 10.1-inch MIPI screen, used to display the system interface of the development board (this screen is common to OPi5/OPi5B)
  2. Plus5-img14.png

  1. Power adapter, Orange Pi 5 Plus is recommended to use 5V/4A Type-C power supply for power supply
  2. Plus5-img15.png

    There are two Type-C ports that look the same on the development board. The one next to the network port is the power port, and the other Type-C port has no power supply function. Please don't connect it wrong.

    Plus5-img16.png

    The Type-C power interface of the development board does not support the PD negotiation function, and only supports a fixed 5V voltage input.

  1. The mouse and keyboard of the USB interface, as long as the mouse and keyboard of the standard USB interface are acceptable, the mouse and keyboard can be used to control the Orange Pi development board
  2. Plus5-img17.png

  1. USB camera
  2. Plus5-img18.png

  1. 5V cooling fan. As shown in the figure below, the development board has an interface for connecting the cooling fan, and the interface specification is 2pin 1.25mm pitch
  2. The fan on the development board can adjust the speed and switch through PWM.

    Plus5-img19.png

  1. Network cable, used to connect the development board to the Internet
  2. Plus5-img20.png

  1. The data cable of the Type-C interface, used for burning images, using ADB and other functions
  2. Plus5-img21.png

  1. Infrared remote control
  2. Plus5-img22.png

    Note that the remote control of the air conditioner or the TV cannot control the Orange Pi development board. The operating system provided by Orange Pi can only ensure that the remote control provided by Orange Pi can be used by default.

  1. OV13850 camera with 13 million MIPI interface (common with OPi5/OPi5B)

    Plus5-img23.png

  2. OV13855 camera with 13 million MIPI interface (common with OPi5/OPi5B)

    Plus5-img24.png

  3. M.2 M-KEY 2280 specification NVMe SSD solid state drive, PCIe interface specification is PCIe3.0x4

  4. Plus5-img25.png

  1. eMMC expansion module (to be added physical pictures)
  2. The position where the eMMC module is inserted on the development board is shown in the figure below:

    Plus5-img26.png
  1. RTC battery, the interface is 2pin, 1.25mm pitch

    Plus5-img27.png

  2. The location of the RTC battery interface on the development board is shown in the figure below:

    Plus5-img28.png
  1. Horn, the interface is 2pin, 1.25mm pitch
  2. Plus5-img29.png

    The interface position of the speaker on the development board is shown in the figure below:

    Plus5-img30.png
  1. Matching shell (pictures and assembly methods to be added)

  2. 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

  3. Plus5-img31.png Plus5-img32.png

  1. Personal computer with Ubuntu and Windows operating systems installed
  2. 1 Ubuntu22.04 PC Optional, used to compile Linux source code
    2 Windows PC For burning Android and Linux images

Download the image of the development board and related materials

  1. The website for downloading the English version of materials is:

http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html

Plus5-img33.png
  1. The information mainly includes

    1. User Manual and Schematic: Saved on Google Cloud Disk

    2. Official tools: mainly include the software that needs to be used during the use of the development board

    3. Android source code: saved on Google Cloud Disk

    4. Linux source code: saved on Github

    5. OpenWRT source code: saved on Github

    6. Android image: saved on Google Cloud Disk

    7. Ubuntu image:saved on Google Cloud Disk

    8. Debian image:saved on Google Cloud Disk

    9. Orange Pi OS image:saved on Google Cloud Disk

    10. OpenWRT image:saved on Google Cloud Disk

Method of burning Linux image to TF card based on Windows PC

Note that the Linux image mentioned here specifically refers to the image of Linux distributions such as Debian, Ubuntu, OpenWRT or OPi OS Arch downloaded from the Orange Pi's download page.

How to use balenaEtcher to burn Linux image

  1. First prepare a TF card with a capacity of 16GB or more. The transmission speed of the TF card must be class 10 or above. It is recommended to use a TF card of SanDisk and other brands
  2. Then use the card reader to insert the TF card into the computer
  3. Download the Linux operating system image file compression package that you want to burn from the Orange Pi's download page, and then use the decompression software to decompress it. Among the decompressed files, the file ending with ".img" is the image file of the operating system. The size is generally above 2GB.

Note, if you download the OpenWRT image, you will see the following two types of images in the download link of the OpenWRT image, please download the image file in the "TF card, eMMC and NVME SSD boot image" folder.

Plus5-img34.png
  1. Then download the burning software of Linux image——balenaEtcher, the download address is:
  2. https://www.balena.io/etcher/

  1. After entering the balenaEtcher download page, click the green download button to jump to the place where the software is downloaded

    Plus5-img35.png

  2. Then you can choose to download the Portable version of balenaEtcher software. The Portable version does not need to be installed, and you can use it by double-clicking to open it

  3. Plus5-img36.png

  1. If the downloaded version of balenaEtcher needs to be installed, please install it before using it. If you downloaded the Portable version of balenaEtcher, just double-click to open it. The balenaEtcher interface after opening is shown in the figure below:
  2. Plus5-img37.png

    When opening balenaEtcher, if the following error is prompted:

    Plus5-img38.png

    Please select balenaEtcher, right-click, and select Run as administrator.

    Plus5-img39.png
  1. The specific steps to use balenaEtcher to burn the Linux image are as follows
  2. a. First select the path of the Linux image file to be burned

    b. Then select the drive letter of the TF card

    c. Finally click Flash to start burning the Linux image to the TF card

    Plus5-img40.png

  1. 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.
  2. Plus5-img41.png

  1. After burning the Linux image, balenaEtcher will also verify the image burned to 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.
  2. Plus5-img42.png

  1. After successful burning, the display interface of balenaEtcher is as shown in the figure below. If the 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.
  2. Plus5-img43-1.png

How to use RKDevTool to burn Linux image to TF card

  1. First, you need to prepare a data cable with a good quality Type-C interface
Plus5-img21.png
  1. You also need to prepare a 16GB or larger TF card. The transmission speed of the TF card must be class 10 or above. It is recommended to use a TF card of SanDisk and other brands

  2. Then insert the TF card into the card slot of the development board

  3. Plus5-img44.png

  1. Then download Rockchip DriverAssitant_v5.12.zip and MiniLoader and the burning tool RKDevTool_Release_v2.96.zip RKDevTool_Release_v3.15.zip from the Orange Pi's download page, please ensure that the version of the downloaded RKDevTool tool is v2.96

    1. On the Orange Pi's download page, first select the official tool, and then enter the following folder.
    2. Plus5-img45.png

    1. Then download all the files below
    2. Plus5-img46.png

      Note that the "MiniLoader-things needed to burn the Linux image" folder is hereinafter referred to as the MiniLoader folder.

  1. Then download the Linux operating system image file compression package that you want to burn from the Orange Pi's download page, and then use the decompression software to decompress it. Among the decompressed files, the file ending with ".img" is the image file of the operating system , the size is generally more than 2GB
  2. Note, if you download the OpenWRT image, you will see the following two types of images in the download link of the OpenWRT image, please download the image file in the "TF card, eMMC and NVME SSD boot image" folder.

    Plus5-img34.png
  1. 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
  2. Plus5-img47.png

  1. After opening DriverInstall.exe, the steps to install the Rockchip driver are as follows

    1. Click the "Driver Installation" button
    2. Plus5-img48.png

    1. After waiting for a period of time, a pop-up window will prompt "driver installed successfully", and then click the "OK" button.
    2. Plus5-img49.png

  1. Then decompress RKDevTool_Release_v2.96.zipRKDevTool_Release_v3.15.zip, this software does not need to be installed, just find RKDevTool in the decompressed folder and open it
  2. Plus5-img50.png

  1. After opening the RKDevTool burning tool, because the computer has not been connected to the development board through the Type-C cable at this time, the lower left corner will prompt "No device found"
  2. Plus5-img51.png

  1. Then start burning the Linux image to the TF card

    1. First, connect the development board to the Windows computer through the Type-C data cable. The position of the Type-C interface on the development board is shown in the figure below
    2. Plus5-img52.png

    1. Make sure the development board is not connected to the Type-C power supply

    2. 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:

    3. Plus5-img53.png

    1. Finally, connect the power supply of the Type-C interface to the development board, and power on, and then release the MaskROM button. The location of the Type-C power interface is as follows:
    2. Plus5-img54.png

    1. If the previous steps are successful, the development board will enter the MASKROM mode at this time, and the interface of the burning tool will prompt "found a MASKROM device"
    2. Plus5-img55.png

    1. Then place the mouse cursor in the area below
    2. Plus5-img56.png

    1. Then click the right mouse button and the selection interface shown in the figure below will pop up
    2. Plus5-img57.png

    1. Then select the import configuration option
    2. Plus5-img58.png

    1. Then select the rk3588_linux_tfcard.cfg configuration file in the MiniLoader folder downloaded earlier, and click Open
    2. Plus5-img59.png

    1. Then click OK
    2. Plus5-img60.png

    1. Then click the position shown in the figure below
    2. Plus5-img61.png

    1. Then select MiniLoaderAll.bin in the MiniLoader folder downloaded earlier, and then click to open
    2. Plus5-img62.png

    1. Then click the position shown in the figure below
    2. Plus5-img63.png

    1. Then select the path of the linux image you want to burn, and click Open
    2. 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.

      Plus5-img64.png

    1. Then please check the option to force writing by address
    2. Plus5-img65.png

    1. Then click the execute button to start burning the linux image to the tf card of the development board
    2. Plus5-img66.png

    1. The log displayed after burning the linux image is shown in the figure below
    2. Plus5-img67.png

    1. After burning the linux image to the TF card, the linux system will start automatically.

How to use Win32Diskimager to burn Linux image

  1. First prepare a TF card with a capacity of 16GB or more. The transmission speed of the TF card must be class 10 or above. It is recommended to use a TF card of SanDisk and other brands

  2. Then use the card reader to insert the TF card into the computer

  3. Then format the TF card

    1. SD Card Formatter can be used to format the TF card. The download link is
    2. https://www.sdcard.org/downloads/formatter/eula_windows/SDCardFormatterv5_WinEN.zip

    1. After downloading, unzip and install directly, and then open the software

    2. If only a TF card is inserted into the computer, the drive letter of the TF card will be displayed in the "Select card" column. If multiple USB storage devices are inserted into the computer, you can select the corresponding drive letter of the TF card through the drop-down box

    3. Plus5-img68.png

    1. Then click "Format", a warning box will pop up before formatting, and formatting will start after selecting "Yes (Y)"
    2. Plus5-img69.png

    1. After formatting the TF card, the message shown in the figure below will pop up, click OK
    2. Plus5-img70.png
  1. Download the image file compression package of the Linux operating system that you want to burn from the Orange Pi's download page, and then use the decompression software to decompress it. Among the decompressed files, the file ending with ".img" is the image file of the operating system. The size is generally more than 2GB
  2. Note, if you download the OpenWRT image, you will see the following two types of images in the download link of the OpenWRT image, please download the image file in the "TF card, eMMC and NVME SSD boot image" folder.

    Plus5-img34.png
  1. Use Win32Diskimager to burn the Linux image to the TF card
    1. The download page of Win32Diskimager is
    2. http://sourceforge.net/projects/win32diskimager/files/Archive/

    1. After downloading, install it directly. The interface of Win32Diskimager is as follows
    2. a) First select the path of the image file

      b) Then confirm that the drive letter of the TF card is consistent with that

      displayed in the "Device" column

      c) Finally click "Write" to start burning

      Plus5-img71.png

    1. After the image writing is completed, click the " Exit " button to exit, and then you can pull out the TF card and insert it into the development board to start

Method of burning Linux image to TF card based on Ubuntu PC

Note that the Linux image mentioned here specifically refers to the image of Linux distributions such as Debian, Ubuntu, OpenWRT or OPi OS Arch downloaded from the Orange Pi's download page, and the Ubuntu PC refers to the personal computer with the Ubuntu system installed.

  1. First prepare a TF card with a capacity of 16GB or more. The transmission speed of the TF card must be class 10 or above. It is recommended to use a TF card of SanDisk and other brands
  2. Then use the card reader to insert the TF card into the computer
  3. Download the balenaEtcher software, the download address is

https://www.balena.io/etcher/

  1. After entering the balenaEtcher download page, click the green download button to jump to the place where the software is downloaded
  2. Plus5-img35.png

  1. Then choose to download the Linux version of the software
  2. Plus5-img72.png

  1. Download the Linux operating system image file compression package that you want to burn from the Orange Pi's download page, and then use the decompression software to decompress it. Among the decompressed files, the file ending with ".img" is the image file of the operating system. The size is generally more than 2GB
  2. Note, if you download the OpenWRT image, you will see the following two types of images in the download link of the OpenWRT image, please download the image file in the "TF card, eMMC and NVME SSD boot image" folder.

    Plus5-img73.png

    The decompression command for the compressed package ending in 7z is as follows:

    test@test:~$ 7z x orangepi5plus_1.0.0_debian_bullseye_desktop_xfce_linux5.10.110.7z

    test@test:~$ ls orangepi5plus_1.0.0_debian_bullseye_desktop_xfce_linux5.10.110.*

    orangepi5plus_1.0.0_debian_bullseye_desktop_xfce_linux5.10.110.7z orangepi5plus_1.0.0_debian_bullseye_desktop_xfce_linux5.10.110.sha # checksum file

    orangepi5plus_1.0.0_debian_bullseye_desktop_xfce_linux5.10.110.img # mirror file

    If you download the OpenWRT image, the compressed package ends with gz, and the decompression command is as follows:

    test@test:~$ gunzip openwrt-aarch64-opi5plus-23.05-linux-5.10.110-ext4.img.gz

    test@test:~$ ls openwrt-aarch64-opi5plus-23.05-linux-5.10.110-ext4.img

    openwrt-aarch64-opi5plus-23.05-linux-5.10.110-ext4.img # mirror file

  1. After decompressing the image, you can first use the sha256sum -c *.sha.sha command to calculate whether the checksum is correct. If the prompt is successful, it means that the downloaded image is correct, and you can safely burn it to the TF card. If it prompts that the checksum does not match, it means There is a problem with the downloaded image, please try to download again
  2. test@test:~$ sha256sum -c *.sha

    orangepi5plus_1.0.0_debian_bullseye_desktop_xfce_linux5.10.110.img: OK

    If you download the OpenWRT image, you need to verify the compressed package, do not decompress it and then verify it

    test@test:~$ sha256sum -c openwrt-aarch64-opi5plus-23.04-linux-5.10.110-ext4.img.gz.sha

    openwrt-aarch64-opi5plus-23.04-linux-5.10.110-ext4.img.gz: OK

  1. Then double-click balenaEtcher-1.14.3-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
  2. Plus5-img74.png

  1. The specific steps to use balenaEtcher to burn the Linux image are as follows
  2. a. First select the path of the Linux image file to be burned

    b. Then select the drive letter of the TF card

    c. Finally click Flash to start burning the Linux image to the TF card

    Plus5-img40.png

  1. 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
  2. Plus5-img75.png

  1. 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
  2. Plus5-img76.png

  1. 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.

    Plus5-img77.png

How to burn Linux image to eMMC

Note, after burning the image into eMMC, if the test finds that it cannot be started, please clear the SPIFlash and try again. For the method of clearing SPIFlash, please refer to the method of using RKDevTool to clear SPIFlash.

How to use RKDevTool to burn Linux image into eMMC

Note that all the following operations are performed on a Windows computer.

Note that the Linux image mentioned here specifically refers to the image of Linux distributions such as Debian, Ubuntu, OpenWRT or OPi OS Arch downloaded from the Orange Pi's download page

  1. The development board reserves the expansion interface of the eMMC module. Before programming 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 location of the eMMC interface is as follows:
Plus5-img78-1.pngPlus5-img78-2.png
Plus5-img78-3.png
  1. It is also necessary to prepare a data cable with a good quality Type-C interface
  2. Plus5-img21.png

  1. Then download Rockchip DriverAssitant_v5.12.zip and MiniLoader and the burning tool RKDevTool_Release_v2.96.zipRKDevTool_Release_v3.15.zip from the Orange Pi's download page, please make sure that the version of the downloaded RKDevTool tool is v2.96.

    1. On the download page of Orange Pi, first select the official tool, and then enter the following folder
    2. Plus5-img79.png

    1. Then download all the files below
    2. Plus5-img80.png

    Note that the "MiniLoader-things needed to burn the Linux image" folder is hereinafter referred to as the MiniLoader folder.

  1. Then download the Linux operating system image file compression package that you want to burn from the Orange Pi's download page, and then use the decompression software to decompress it. Among the decompressed files, the file ending with ".img" is the image file of the operating system , the size is generally more than 2GB
  2. Note, if you download the OpenWRT image, you will see the following two types of images in the download link of the OpenWRT image, please download the image file in the "TF card, eMMC and NVME SSD boot image" folder.

    Plus5-img73.png
  1. 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
  2. Plus5-img47.png

  1. After opening DriverInstall.exe, the steps to install the Rockchip driver are as follows

    1. Click the "Driver Installation" button
    2. Plus5-img48.png

    1. After waiting for a period of time, a pop-up window will prompt "driver installed successfully", and then click the "OK" button.
    2. Plus5-img49.png

  1. 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
  2. Plus5-img50.png

  1. After opening the RKDevTool burning tool, because the computer has not been connected to the development board through the Type-C cable at this time, the lower left corner will prompt "No device found"
  2. Plus5-img51.png

  1. Then start burning the Linux image into eMMC

    1. First, connect the development board to the Windows computer through the Type-C data cable. The position of the Type-C interface on the development board is shown in the figure below
    2. Plus5-img52.png

    1. Make sure that the development board is not inserted into the TF card and not connected to the power supply

    2. 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:

    3. Plus5-img53.png

    1. Then connect the power supply of the Type-C interface to the development board, and power on, and then release the MaskROM button
    2. Plus5-img54.png

    1. If the previous steps are successful, the development board will enter the MASKROM mode at this time, and the interface of the burning tool will prompt "found a MASKROM device"
    2. Plus5-img55.png

    1. Then place the mouse cursor in the area below
    2. Plus5-img81-1.png

    1. Then click the right mouse button and the selection interface shown in the figure below will pop up
    2. Plus5-img57.png

    1. Then select the import configuration option
    2. Plus5-img58.png

    1. Then select the rk3588_linux_emmc.cfg configuration file in the MiniLoader folder downloaded earlier, and click Open
    2. Plus5-img82.png

    1. Then click OK
    2. Plus5-img83.png

    1. Then click the position shown in the figure below
    2. Plus5-img84.png

    1. Then select MiniLoaderAll.bin in the MiniLoader folder downloaded earlier, and then click to open
    2. Plus5-img85.png

    1. Then click the position shown in the figure below
    2. Plus5-img86.png

    1. Then select the path of the linux image you want to burn, and click Open
    2. 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.

      Plus5-img64.png

    1. Then please check the option to force writing by address
    2. Plus5-img87.png

    1. Then click the execute button to start burning the linux image to the eMMC of the development board
    2. Plus5-img88.png

    1. The log displayed after burning the linux image is shown in the figure below
    2. Plus5-img89.png

    1. After burning the linux image into the eMMC, the linux system will start automatically.
    2. Note, after burning the image into eMMC, if the test finds that it cannot be started, please clear the SPIFlash and try again. For the method of clearing SPIFlash, please refer to the method of using RKDevTool to clear SPIFlash.

Using the dd command to burn the Linux image into eMMC

Note that the Linux image mentioned here specifically refers to the image of Linux distributions such as Debian, Ubuntu, OpenWRT or OPi OS Arch downloaded from the Orange Pi's download page.

  1. The development board reserves the expansion interface of the eMMC module. Before programming 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 location of the eMMC interface is as follows:
Plus5-img78-1.pngPlus5-img78-2.png
Plus5-img78-3.png
  1. Using the dd command to burn the linux image to eMMC needs to be done with a TF card, so first you need to burn the linux image to the TF card, and then use the TF card to start the development board to enter the linux system. For the method of burning the Linux image to the TF card, please refer to the instructions in the two sections of the method of burning the Linux image to the TF card based on the Windows PC and the method of burning the Linux image to the TF card based on the Ubuntu PC.

  2. After using the TF card to start the linux system, we first upload the decompressed linux image file (Debian, Ubuntu image or OPi Arch image downloaded from the official website) to the TF card. For the method of uploading the linux image file to the development board, please refer to the description in the section of the method of uploading files to the development board Linux system.

  3. 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.

  4. orangepi@orangepi:~$ cd /home/orangepi/Desktop

    orangepi@orangepi:~/Desktop$ ls

    Orangepi5plus_x.x.x_debian_bullseye_desktop_xfce_linux5.10.110.img

    How to enter the command line of the development board linux system?

    1. For the method of using the serial port to log in to the terminal, please refer to the instructions in the section on how to use the debugging serial port.

    2. Use ssh to remotely log in to the Linux system, please refer to the instructions in the section of SSH remote login to the development board.

    3. If a display screen such as HDMI or LCD is connected, you can open a command line terminal on the desktop.

  1. Next, we first use the following command to confirm the device node of eMMC
  2. orangepi@orangepi:~/Desktop$ ls /dev/mmcblk*boot0 | cut -c1-12

    /dev/mmcblk1

  1. 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
  2. orangepi@orangepi:~/Desktop$ sudo dd bs=1M if=/dev/zero of=/dev/mmcblk1 count=1000 status=progress

    orangepi@orangepi:~/Desktop$ sudo sync

  1. Then you can use the dd command to burn the linux image of the development board into the eMMC

    1. 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.

    2. 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).

    3. sudo dd bs=1M if=Orangepi5plus_x.x.x_debian_bullseye_desktop_xfce_linux5.10.110.img of=/dev/mmcblk1 status=progress

      sudo sync

      Note, if you upload a .7z or .xz linux image compressed file, please remember to decompress it before using the dd command to burn.

      The detailed description of all parameters of the dd command and more usage can be viewed by executing the man dd command in the linux system.

  1. 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.

How to burn Linux image to SPIFlash+NVMe SSD

Note that the Linux image mentioned here specifically refers to the image of Linux distributions such as Debian, Ubuntu, OpenWRT or OPi OS Arch downloaded from the Orange Pi's download page.

Note that all the following operations are performed on a Windows computer.

The method of using the dd command to burn

  1. First, you need to prepare an M-Key 2280 specification NVMe SSD solid state drive, and the specification of the PCIe interface in the M.2 slot of the development board is PCIe3.0x4.
Plus5-img25.png
  1. Then insert the NVMe SSD into the M.2 PCIe interface of the development board shown in the figure below, and fix it
  2. Plus5-img90.png

  1. 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
  2. Plus5-img91.png

  1. Burning the linux image to SPIFlash+NVMe SSD needs to be done with a TF card, so first you need to burn the linux image to the TF card, and then use the TF card to start the development board to enter the linux system. For the method of burning the Linux image to the TF card, please refer to the instructions in the two sections of the method of burning the Linux image to the TF card based on the Windows PC and the method of burning the Linux image to the TF card based on the Ubuntu PC

  2. After using the TF card to start the Linux system, we first burn the u-boot image into the SPI Flash

    1. Run nand-sata-install first, ordinary users remember to add sudo permission.
    2. orangepi@orangepi:~$ sudo nand-sata-install

    1. Then select 7 Install/Update ther bootloader on SPI Flash
    2. Plus5-img92.png

    1. Then select <Yes>
    2. Plus5-img93.png

    1. 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):
    2. Plus5-img94.png

      There is no nand-sata-install script in OPi OS Arch system, please use the following command to mirror u-boot to SPI Flash:

      [orangepi@orangepi ~]$ sudo dd if=/boot/rkspi_loader.img of=/dev/mtdblock0

  1. Then upload the linux image file (Debian, Ubuntu or OpenWRT image downloaded from the official website) to the TF card. For the method of uploading the linux image file to the development board, please refer to the description in the section of the method of uploading files to the development board Linux system.
  2. Note, if you download the OpenWRT image, you will see the following two types of images in the download link of the OpenWRT image, please download the image file in the "TF card, eMMC and NVME SSD boot image" folder.

    Plus5-img73.png
  1. 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.
  2. orangepi@orangepi:~$ cd /home/orangepi/Desktop

    orangepi@orangepi:~/Desktop$ ls

    orangepi5plus_x.x.x_debian_bullseye_desktop_xfce_linux5.10.110.img

    How to enter the command line of the development board linux system?

    1. For the method of using the serial port to log in to the terminal, please refer to the instructions in the section on how to use the debugging serial port.

    2. Use ssh to remotely log in to the Linux system, please refer to the instructions in the section of SSH remote login to the development board.

    3. If HDMI, LCD and other display screens are connected, you can open a command line terminal on the desktop.

  1. 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
  2. orangepi@orangepi:~/Desktop$ sudo fdisk -l | grep "nvme0n1"

    Disk /dev/nvme0n1: 1.86 TiB, 2048408248320 bytes, 4000797360 sectors

    Use the lspci command to see an NVMe-related PCI device

    orangepi@orangepi:~$ lspci

    0000:00:00.0 PCI bridge: Rockchip Electronics Co., Ltd Device 3588 (rev 01)

    0000:01:00.0 Non-Volatile memory controller: SK hynix BC501 NVMe Solid State Drive

    .…

  1. Then we can use the dd command to clear the NVMe SSD (optional)
  2. orangepi@orangepi5plus:~/Desktop$ sudo dd bs=1M if=/dev/zero of=/dev/nvme0n1 count=2000 status=progress

    orangepi@orangepi5plus:~/Desktop$ sudo sync

  1. Then you can use the dd command to burn the linux image of the development board to the NVMe SSD

    1. 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.

    2. 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).

    3. sudo dd bs=1M if=orangepi5plus_x.x.x_debian_bullseye_desktop_xfce_linux5.10.110.img of=/dev/nvme0n1 status=progress

      sudo sync

      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.

  1. 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.

How to use balenaEtcher software to program

Please do not use this method for OPi OS Arch system and OpenWRT system.

  1. First, you need to prepare an M-Key 2280 specification NVMe SSD solid state drive, and the specification of the PCIe interface in the M.2 slot of the development board is PCIe3.0x4.
Plus5-img25.png
  1. Then insert the NVMe SSD into the M.2 PCIe interface of the development board shown in the figure below, and fix it
  2. Plus5-img90.png

  1. 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
  2. Plus5-img91.png

  1. Burning the linux image to SPIFlash+NVMe SSD needs to be done with a TF card, so first you need to burn the linux image to the TF card, and then use the TF card to start the development board to enter the linux system. For the method of burning the Linux image to the TF card, please refer to the instructions in the two sections of the method of burning the Linux image to the TF card based on the Windows PC and the method of burning the Linux image to the TF card based on the Ubuntu PC.

  2. After booting into the linux system in the TF card, please confirm that the NVMe SSD has been recognized by the linux system of the development board. If the NVMe SSD is recognized normally, use the sudo fdisk -l command to see nvme-related information

  3. orangepi@orangepi:~/Desktop$ sudo fdisk -l | grep "nvme0n1"

    Disk /dev/nvme0n1: 1.86 TiB, 2048408248320 bytes, 4000797360 sectors

    Use the lspci command to see an NVMe-related PCI device

    orangepi@orangepi:~$ lspci

    0000:00:00.0 PCI bridge: Rockchip Electronics Co., Ltd Device 3588 (rev 01)

    0000:01:00.0 Non-Volatile memory controller: SK hynix BC501 NVMe Solid State Drive

    .…

  1. The balenaEtcher has been pre-installed in the linux image, and the opening method is as follows:
  2. Plus5-img95.png

    If it is not pre-installed, for how to download and install the arm64 version of balenaEtcher, please refer to the instructions in the section on how to download and install the arm64 version of balenaEtcher.

  1. The interface after opening balenaEtcher is as follows:
  2. Plus5-img96.png

  1. The method of using balenaEtcher to burn u-boot to the SPI Flash of the development board is as follows:

    1. First click Flash from file
    2. Plus5-img97.png

    1. Then enter the /usr/lib/linux-u-boot-legacy-orangepi5plus_1.x.x_arm64 directory, select rkspi_loader.img, and click Open to open
    2. Plus5-img98.png

    1. The interface after opening rkspi_loader.img is as follows:
    2. Plus5-img99.png

    1. Then click Select target
    2. Plus5-img100.png

    1. Then click Show 2 hidden to open more options for storage devices
    2. Plus5-img101.png

    1. Then select the device name of SPI Flash /dev/mtdblock0, and click Select
    2. Plus5-img102.png

    1. Then click Flash
    2. Plus5-img103.png

    1. Then click Yes, I’m sure
    2. Plus5-img104.png

    1. Then enter the password orangepi of the development board linux system, and it will start burning the u-boot image into the SPI Flash
    2. Plus5-img105.png

    1. The display of the burning process is as follows:
    2. Plus5-img106.png

    1. After the burning is completed, the display is as follows:
    2. Plus5-img107.png

  1. The method of burning the linux system in the TF card to the NVMe SSD (this method is equivalent to cloning the system in the TF card to the NVMe SSD)

    1. First click Clone drive
    2. Plus5-img108.png

    1. Then select the device name of the TF card /dev/mmcblk1
    2. Plus5-img109.png

    1. The interface after opening the TF card is as follows:
    2. Plus5-img110.png

    1. Then click Select target
    2. Plus5-img100.png

    1. Then click Show 2 hidden Option to open more storage devices
    2. Plus5-img101.png

    1. Then select the device name of the NVMe SSD /dev/nvme0n1, and click Select
    2. Plus5-img111.png

    1. Then click Flash
    2. Plus5-img112.png

    1. Then click Yes, I’m sure
    2. Plus5-img113.png

    1. Then enter the password orangepi of the linux system on the development board, and it will start burning the linux image to the SSD
    2. Plus5-img114.png

    1. The display of the burning process is as follows:
    2. Plus5-img115.png

      Plus5-img116.png

    1. After the burning is completed, the display is as follows:
    2. Plus5-img117.png

    1. Then you need to expand the capacity of the rootfs partition in the NVMe SSD. The steps are as follows:

      1. a) open first GParted, if the system does not have Gparted pre-installed, please use the apt command to install it
      2. orangepi@orangepi:~$ sudo apt-get install -y gparted

        Plus5-img118.png

      1. b) Then enter the password orangepi of the linux system, and then click Authenticate
      2. Plus5-img119.png

      1. c) Then click Fix
      2. Plus5-img120.png

      1. d) Then select NVMe SSD
      2. Plus5-img121.png

      1. e) The display interface after selecting NVMe SSD is as follows:
      2. Plus5-img122.png

      1. f) Then select the /dev/nvme0n1p2 partition, then right-click, and then select Resize/Move
      2. Plus5-img123.png

      1. g) Then drag the capacity to the maximum at the position shown in the figure below
      2. Plus5-img124.png

      1. h) and click Resize/Move
      2. Plus5-img125.png

      1. i) Then click the green one in the picture below
      2. Plus5-img126.png

      1. j) Click again Apply
      2. Plus5-img127.png

      1. k) Then click Close to close
      2. Plus5-img128.png

    1. At this point, you can use the sudo poweroff command to shut down. Then please pull out the TF card, and then short press the power button to turn on, then the linux system in SPIFlash+NVMe SSD will be started.
  1. Step 9 is to clone the system in the TF card to the NMVe SSD. We can also directly burn the linux image file to the NVMe SSD. Here are the steps:

    1. Upload the linux image file to the linux system of the development board

    2. Then use balenaEtcher to burn

    3. Plus5-img129.png

    c. After using this method to burn the image, there is no need to manually expand the capacity, and it will automatically expand the capacity at the first startup.

Using RKDevTool to burn

  1. First, you need to prepare an M-Key 2280 specification NVMe SSD solid state drive, and the specification of the PCIe interface in the M.2 slot of the development board is PCIe3.0x4.
Plus5-img25.png
  1. Then insert the NVMe SSD into the M.2 PCIe interface of the development board shown in the figure below, and fix it
  2. Plus5-img90.png

  1. 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
  2. Plus5-img91.png

  1. Then you need to prepare a data cable with good quality Type-C interface
  2. Plus5-img21.png

  1. Then download the Rockchip driver DriverAssitant_v5.12.zip and MiniLoader and the burning tool RKDevTool_Release_v3.15.zip from the Orange Pi's download page

    1. On the download page of Orange Pi, first select the official tool, and then enter the following folder
    2. Plus5-img79.png

    1. Then download all the files below
    2. Plus5-img80.png

    Note that the "MiniLoader-things needed to burn the Linux image" folder is hereinafter referred to as the MiniLoader folder.

  1. Then download the Linux operating system image file compression package that you want to burn from the Orange Pi's download page, and then use the decompression software to decompress it. Among the decompressed files, the file ending with ".img" is the image file of the operating system , the size is generally more than 2GB
  2. Note, if you download the OpenWRT image, you will see the following two types of images in the download link of the OpenWRT image, please download the image file in the "TF card, eMMC and NVME SSD boot image" folder.

    Plus5-img73.png
  1. Then use decompression software to decompress DriverAssitant_v5.12.zip, then find DriverInstall.exe executable file in the decompressed folder and open it
  2. Plus5-img47.png

  1. After opening DriverInstall.exe, the steps to install the Rockchip driver are as follows

    1. Click the "Driver Installation" button
    2. Plus5-img48.png

    1. After waiting for a period of time, a pop-up window will prompt "driver installed successfully", and then click the "OK" button.
    2. Plus5-img49.png

  1. 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
  2. Plus5-img50.png

  1. After opening the RKDevTool burning tool, because the computer is not connected to the development board through the Type-C cable at this time, the lower left corner will prompt "No device found"
  2. Plus5-img51.png

  1. Then start burning the Linux image to the SSD

    1. First, connect the development board to the Windows computer through the Type-C data cable. The position of the Type-C interface on the development board is shown in the figure below
    2. Plus5-img52.png

    1. Make sure the development board is not connected to the power supply, and no TF card or eMMC module is inserted

    2. 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:

    3. Plus5-img53.png

    1. Then connect the power supply of the Type-C interface to the development board, and power on, and then release the MaskROM button. The location of the Type-C power interface is as follows:
    2. Plus5-img54.png

    1. If the previous steps are successful, the development board will enter the MASKROM mode at this time, and the interface of the burning tool will prompt "Found a MASKROM device"
    2. Plus5-img55.png

    1. Then place the mouse cursor in the area below
    2. Plus5-img130.png

    1. Then click the right mouse button and the selection interface shown in the figure below will pop up
    2. Plus5-img57.png

    1. Then select the Import configuration option
    2. Plus5-img58.png

    1. Then enter the MiniLoader folder downloaded earlier, then select the rk3588_linux_pcie.cfg configuration file, and click Open
    2. Plus5-img131.png

    1. Then click OK
    2. Plus5-img132.png

    1. Then click the location shown in the figure below
    2. Plus5-img133.png

    1. Then select MiniLoaderAll.bin in the MiniLoader folder downloaded earlier, and then click to open
    2. Plus5-img62.png

    1. Then click the position shown in the figure below
    2. Plus5-img134.png

    1. Then enter the MiniLoader folder downloaded earlier, select rkspi_loader.img, and click Open
    2. Plus5-img135.png

    1. Then click the location shown in the figure below
    2. Plus5-img136.png

    1. Then select the path of the linux image you want to burn, and click Open
    2. 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.

      Plus5-img64.png

    1. Then please check the option to force write by address
    2. Plus5-img137.png

    1. Click the Execute button again to start burning the u-boot+linux image to SPIFlash+SSD
    2. Plus5-img138.png

    1. The display log after burning the image is shown in the figure below
    2. Plus5-img139.png

      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 instructions in the section of using RKDevTool to clear SPIFlash.

    1. 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.

How to burn OpenWRT image to SPI FLASH

The method introduced in this section is to burn the entire OpenWRT image to spi flash, no nvme ssd is required. In other words, u-boot, kernel and rootfs are all stored in spi flash.

Since the spi flash on the development board is only 16MB, this system basically cannot install much software, and currently only some basic functions can be realized.

The method of using the dd command to burn

  1. Burning the OpenWRT image to SPIFlash needs to be completed with the help of a TF card, so first you need to burn the OpenWRT image that supports TF card startup to the TF card, and then use the TF card to start the development board to enter the OpenWRT system. For the method of burning the OpenWRT image to the TF card, please refer to the instructions in the two sections of the method of burning the Linux image to the TF card based on the Windows PC and the method of burning the Linux image to the TF card based on the Ubuntu PC.
  2. Then download the OpenWRT image that can boot from SPIFlash from Orange Pi's download page. After opening the download link, you can see the following two types of OpenWRT images, please select the image in the SPIFlash boot image folder to download
Plus5-img140.png
  1. Then upload the image downloaded from the official website to the TF card.

  2. Then execute the following command to burn the OpenWRT image into SPIFlash. Note that after if=, you need to specify the actual path where the image is stored

  3. root@OpenWrt:~# dd if=openwrt-rockchip-armv8-xunlong_orangepi-5-plus-spi-squashfs-sysupgrade.bin of=/dev/mtdblock0

  1. Then 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 OpenWRT system in SPIFlash will be started.

Using RKDevTool to burn

  1. 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
Plus5-img91.png
  1. Then you need to prepare a data cable with good quality Type-C interface
  2. Plus5-img21.png

  1. Then download the Rockchip driver DriverAssitant_v5.12.zip and MiniLoader and the burning tool RKDevTool_Release_v3.15.zip from the Orange Pi's download page

    1. On the download page of Orange Pi, first select the official tool, and then enter the following folder
    2. Plus5-img73.png

    1. Then download all the files below
    2. Plus5-img80.png

    Note that the "MiniLoader-things needed to burn the Linux image" folder is hereinafter referred to as the MiniLoader folder.

  1. Then download the OpenWRT image that can be booted from SPIFlash from the download page of Orange Pi. Limited by the capacity of SPIFlash, the image size is less than 16MB. After opening the download link, you can see the following two types of OpenWRT images, please select the image in the SPIFlash boot image folder
  2. Plus5-img140.png

  1. 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
  2. Plus5-img47.png

  1. After opening DriverInstall.exe, the steps to install the Rockchip driver are as follows

    1. Click the "Driver Installation" button
    2. Plus5-img48.png

    1. After waiting for a period of time, a pop-up window will prompt "driver installed successfully", and then click the "OK" button.
    2. Plus5-img49.png

  1. 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
  2. Plus5-img50.png

  1. After opening the RKDevTool burning tool, because the computer has not been connected to the development board through the Type-C cable at this time, the lower left corner will prompt "No device found"
  2. Plus5-img51.png

  1. Then start burning the OpenWRT image into SPI FLASH

    1. First, connect the development board to the Windows computer through the Type-C data cable. The position of the Type-C interface on the development board is shown in the figure below
    2. Plus5-img52.png

    1. Make sure the development board is not connected to the power supply, and the TF card and eMMC module are not inserted

    2. 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:

    3. Plus5-img53.png

    1. Then connect the power supply of the Type-C interface to the development board, and power on, and then release the MaskROM button
    2. Plus5-img54.png

    1. If the previous steps are successful, the development board will enter the MASKROM mode at this time, and the interface of the burning tool will prompt "Found a MASKROM device"
    2. Plus5-img55.png

    1. Then place the mouse cursor in the area below
    2. Plus5-img130.png

    1. Then click the right mouse button and the selection interface shown in the figure below will pop up
    2. Plus5-img57.png

    1. Then select the Import configuration option
    2. Plus5-img58.png

    1. Then select the rk3588_linux_spiflash.cfg configuration file in the MiniLoader folder downloaded earlier, and click Open
    2. Plus5-img141.png

    1. Then click OK
    2. Plus5-img142.png

    1. Then click the location shown in the figure below
    2. Plus5-img143.png

    1. Then select MiniLoaderAll.bin in the MiniLoader folder downloaded earlier, and click Open
    2. Plus5-img144.png

    1. Then click the location shown in the figure below
    2. Plus5-img145.png

    1. Then select the path of the OpenWRT image you want to burn, and click Open

      Before burning the image, it is recommended to rename the OpenWRT 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.

    2. Plus5-img64.png

    1. Then please make sure that the option to force writing by address is ticked
    2. Plus5-img146.png

    1. Click the Execute button again to start burning the OpenWRT image into SPIFlash
    2. Plus5-img147.png

    1. The display log after burning the OpenWRT image is shown in the figure below
    2. Plus5-img148.png

      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 instructions in the section of using RKDevTool to clear SPIFlash.

    1. The OpenWRT image will start automatically after burning, if it does not start normally, please try again with power on.

How to burn Android image to TF card

  1. First prepare a TF card with a capacity of 16GB or greater. 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

  2. Then use the card reader to insert the TF card into the computer

  3. Then download the SDDiskTool programming tool from the Orange Pi's download page, please make sure that the version of the SDDiskTool tool is the latest v1.72

  4. Then download the Android12 image from the Orange Pi download page

    1. 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 boot image folder to download
    2. Plus5-img149.png

    1. After entering the TF card and eMMC boot image folder, you can see the following three images, the difference between them is:
    2. a) The first image is dedicated to HDMI display and supports 8K display. If you don’t use LCD screen, please download the image without lcd

      b) If you want to use lcd screen, please choose image with lcd

      c) The image with box is a image dedicated to the TV box

      Plus5-img150.png

  1. Then use decompression software to decompress the compressed package of the downloaded Android image. Among the decompressed files, the file ending with ".img" is the Android image file, and the size is more than 1GB

  2. 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

  3. Plus5-img151.png

  1. After opening SDDiskTool, if the TF card is recognized normally, the inserted disk device will be displayed in the "Select Removable Disk Device" column. Please make sure that the displayed disk device is consistent with the drive letter of the TF card you want to burn If there is no display, you can try to unplug the TF card
  2. Plus5-img152.png

  1. 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
  2. Plus5-img153.png

  1. Then start to write the Android image to the TF card
  2. a. First check "SD Boot" in "Select Function Mode"

    b. Then select the path of the Android image in the "Select to upgrade firmware" column

    c. Finally click the "Start Create" button to start burning the Android image to the TF card

    Plus5-img154.png

  1. 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
  2. Plus5-img155.png

How to burn Android image into eMMC

Note, after burning the image into eMMC, if the test finds that it cannot be started, please clear the SPIFlash and try again. For the method of clearing SPIFlash, please refer to the method of using RKDevTool to clear SPIFlash.

How to burn Android image into eMMC via Type-C cable

Note that all the following operations are performed on a Windows computer.

  1. The development board reserves an eMMC expansion interface. Before programming the system to eMMC, you first need to purchase an eMMC module that matches the eMMC interface of the development board. Then install the eMMC module to the development board. The location of the eMMC interface is as follows:
Plus5-img78-1.pngPlus5-img78-2.png
Plus5-img78-3.png
  1. It is also necessary to prepare a data cable with a good quality Type-C interface

    Plus5-img21.png

  2. Then download Rockchip driver DriverAssitant_v5.12.zip and burning tool RKDevTool_Release_v3.15.zip from Orange Pi's download page

  3. Then download the Android image from Orange Pi's download page.

    1. 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
    2. Plus5-img156.png

    1. After entering the TF card and eMMC boot image folder, you can see the following three images, the difference between them is:
      1. The first image is dedicated to HDMI display and supports 8K display. If you don’t use LCD screen, please download the image without lcd

      2. If you want to use lcd screen, please choose image with lcd

      3. The image with box is a image dedicated to the TV box

      4. Plus5-img150.png

  1. Then use the decompression software to decompress the compressed package of the downloaded Android image. Among the decompressed files, the file ending with ".img" is the Android image file, and the size is more than 1GB

  2. 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

  3. Plus5-img47.png

  1. After opening DriverInstall.exe, the steps to install the Rockchip driver are as follows

    1. Click the "Driver Installation" button
    2. Plus5-img48.png

    1. After waiting for a period of time, a pop-up window will prompt "driver installed successfully", then click "OK"
    2. Plus5-img49.png

  1. 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
  2. Plus5-img50.png

  1. After opening the RKDevTool burning tool, because the computer has not been connected to the development board through the Type-C cable at this time, the lower left corner will prompt "No device found"
  2. Plus5-img51.png

  1. Then start burning the Android image into eMMC

    1. First, connect the development board to the Windows computer through the Type-C data cable. The position of the Type-C interface on the development board is shown in the figure below
    2. Plus5-img52.png

    1. Then make sure that the development board is not inserted into the TF card and not connected to the power supply

    2. 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:

    3. Plus5-img53.png

    1. Then connect the power supply of the Type-C interface to the development board, and power on
    2. Plus5-img54.png

    1. If the previous steps are successful, the development board will enter the MASKROM mode at this time, and the interface of the burning tool will prompt "found a MASKROM device"
    2. Plus5-img55.png

    1. Then click the "Upgrade Firmware" column of the burning tool
    2. Plus5-img157.png

    1. Then click the "Firmware" button to select the path of the Android image that needs to be burned
    2. Plus5-img158.png

    1. Finally, click the "Upgrade" button to start burning, and the log during the burning process is shown in the figure below. After burning is completed, the Android system will start automatically.

      Plus5-img159.png

How to burn Android 12 image into eMMC via TF card

Note that all the following operations are performed on a Windows computer.

  1. The development board reserves an eMMC expansion interface. Before programming the system to eMMC, you first need to purchase an eMMC module that matches the eMMC interface of the development board. Then install the eMMC module to the development board. The location of the eMMC interface is as follows:
Plus5-img78-1.pngPlus5-img78-2.png
Plus5-img78-3.png
  1. 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

  2. Then use the card reader to insert the TF card into the computer

  3. Then download the SDDiskTool programming tool from the Orange Pi's download page, please ensure that the version of the SDDiskTool tool is the latest v1.72

  4. Then download the Android image from the Orange Pi's download page

    1. 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
    2. Plus5-img156.png

    1. After entering the TF card and eMMC boot image folder, you can see the following three images, the difference between them is:

      1. The first image is dedicated to HDMI display and supports 8K display. If you don’t use LCD screen, please download the image without lcd

      2. If you want to use lcd screen, please choose mirror with lcd

      3. The mirror with box is a mirror dedicated to the TV box

      4. Plus5-img150.png
  1. Then use decompression software to decompress the compressed package of the downloaded Android image. Among the decompressed files, the file ending with ".img" is the Android image file, and the size is more than 1GB

  2. Then use decompression software to decompress SDDiskTool_v1.72.zip, this software does not need to be installed, just find SD_Firmware_Tool.ex in the decompressed folder and open it

  3. Plus5-img151.png

  1. After opening SDDiskTool, if the TF card is recognized normally, the inserted disk device will be displayed in the "Select Removable Disk Device" column. Please make sure that the displayed disk device is consistent with the drive letter of the TF card you want to burn, if there is no display, you can try to unplug the TF card
  2. Plus5-img152.png

  1. 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
  2. Plus5-img153.png

  1. Then start to write the Android image into the TF card

    1. First confirm that the displayed drive letter is the drive letter corresponding to the TF card under "Select Removable Disk Device"

    2. Then select "Firmware Upgrade" in "Select Function Mode"

    3. Then select the path of the Android firmware in the "Select Upgrade Firmware" column

    4. Finally click the "Start Create" button to start burning

    5. Plus5-img160.png

  1. After the burning is completed, the display is as shown in the figure below, and then you can exit SDDiskTool

  2. Plus5-img161.png

  1. 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.

  2. 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

  3. Plus5-img162.png

  1. 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.

    Plus5-img163.png

How to burn Android image to SPIFlash+NVMe SSD

Note that all the following operations are performed on a Windows computer.

  1. First, you need to prepare an M-Key 2280 specification NVMe SSD solid state drive, and the specification of the PCIe interface in the M.2 slot of the development board is PCIe3.0x4.
Plus5-img25.png
  1. Then insert the NVMe SSD into the M.2 PCIe interface of the development board and fix it
  2. Plus5-img90.png

  1. 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
  2. Plus5-img91.png

  1. It is also necessary to prepare a data cable with a good quality Type-C interface
  2. Plus5-img21.png

  1. Then download Rockchip driver DriverAssitant_v5.12.zip and burning tool RKDevTool_Release_v3.15.zip from Orange Pi's download page

  2. Then download the Android12 image from the Orange Pi's download page

    1. After opening the download link of the Android image, you can see the following two types of Android images, please select the image in the SPIFlash-NVME SSD boot image folder to download
    2. Plus5-img164.png

    1. After entering the SPIFlash-NVME SSD boot image folder, you can see the following three images. Their differences are:

      1. The first image is dedicated to HDMI display and supports 8K display. If you don’t use LCD screen, please download the image without lcd

      2. If you want to use lcd screen, please choose image with lcd

      3. The image with box is a image dedicated to the TV box

      4. Plus5-img165.png

  1. 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
  2. Plus5-img47.png

8. After opening DriverInstall.exe, the steps to install the Rockchip driver are as followsa. Click the "Driver Install" button
Plus5-img48.png
a. After waiting for a period of time, a pop-up window will prompt "driver installed successfully", then click the "OK" button
Plus5-img49.png
9. 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
Plus5-img50.png
  1. After opening the RKDevTool burning tool, because the computer is not connected to the development board through the Type-C cable at this time, the lower left corner will prompt "No device found"
  2. Plus5-img51.png

  1. Then start burning the Android image to SPIFlash+NVMe SSD

    1. First, connect the development board to the Windows computer through the Type-C data cable. The position of the Type-C interface on the development board is shown in the figure below
    2. Plus5-img52.png

    1. Make sure that the development board is not plugged into TF and eMMC modules, and is not connected to the power supply

    2. 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:

    3. Plus5-img53.png

    1. Then connect the power supply of the Type-C interface to the development board, and power on, and then release the MaskROM button
    2. Plus5-img54.png

    1. If the previous steps are successful, the development board will enter the MASKROM mode at this time, and the interface of the burning tool will prompt "Found a MASKROM device"
    2. Plus5-img55.png

    1. Then click the "Upgrade Firmware" column of the burning tool
    2. Plus5-img157.png

    1. Then click the "Firmware" button to select the Android image to be burned
    2. Plus5-img158.png

    1. Finally, click the "Upgrade" button to start burning. The burning process is shown in the figure below. After the burning is completed, the Android system will automatically start.
    2. Plus5-img166.png

How to burn Orange Pi OS (Droid) image to TF card

Note that all the following operations are performed on a Windows computer.

  1. 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
  2. Then use the card reader to insert the TF card into the computer
  3. Then download the SDDiskTool programming tool from the Orange Pi's download page, please make sure that the version of the SDDiskTool tool is the latest v1.72.
  4. Then download the Orange Pi OS (Droid) image from the Orange Pi's download page, open the download link of the Orange Pi OS (Droid) image, and you can see the following two types of images, please select the image below
Plus5-img167.png
  1. Then use decompression software to decompress the compressed file of the downloaded Orange Pi OS (Droid) image. Among the decompressed files, the file ending with ".img" is the Orange Pi OS (Droid) image file, and the size is more than 1GB

  2. Then use decompression software to decompress SDDiskTool_v1.72.zip, this software does not need to be installed, just find SD_Firmware_Tool.ex in the decompressed folder and open it

  3. Plus5-img151.png

  1. After opening SDDiskTool, if the TF card is recognized normally, the inserted disk device will be displayed in the "Select Removable Disk Device" column. Please make sure that the displayed disk device is consistent with the drive letter of the TF card you want to burn , if there is no display, you can try to unplug the TF card
  2. Plus5-img152.png

  1. 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
  2. Plus5-img153.png

  1. Then start to write the Orange Pi OS (Droid) image into the TF card

    1. First check "SD Boot" in "Select Function Mode"

    2. Then select the path of the Orange Pi OS (Droid) image in the "Select to upgrade firmware" column

    3. Finally, click the "Start Create" button to start burning the Orange Pi OS (Droid) image to the TF card

    4. Plus5-img154.png

  1. 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
  2. Plus5-img155.png

How to burn Orange Pi OS (Droid) image into eMMC

Note, after burning the image into eMMC, if the test finds that it cannot be started, please clear the SPIFlash and try again. For the method of clearing SPIFlash, please refer to the method of using RKDevTool to clear SPIFlash.

Burn Orange Pi OS (Droid) image to eMMC

Note that all the following operations are performed on a Windows computer.

  1. The development board reserves an eMMC expansion interface. Before programming the system to eMMC, you first need to purchase an eMMC module that matches the eMMC interface of the development board. Then install the eMMC module to the development board. The location of the eMMC interface is as follows:
Plus5-img78-1.pngPlus5-img78-2.png
Plus5-img78-3.png
  1. It is also necessary to prepare a data cable with a good quality Type-C interface
  2. Plus5-img21.png

  1. Then download Rockchip driver DriverAssitant_v5.12.zip and burning tool RKDevTool_Release_v3.15.zip from Orange Pi's download page

  2. Then download the Orange Pi OS (Droid) image from the Orange Pi's download page

  3. Plus5-img167.png

  1. Then use decompression software to decompress the compressed file of the downloaded Orange Pi OS (Droid) image. Among the decompressed files, the file ending with ".img" is the Orange Pi OS (Droid) image file, and the size is more than 1GB

  2. Then use decompression software to decompress DriverAssitant_v5.12.zip, then find the DriverInstall.exe executable file in the decompressed folder and open it

  3. Plus5-img47.png

  1. After opening DriverInstall.exe, the steps to install the Rockchip driver are as follows

    1. Click the "Driver Installation" button
    2. Plus5-img48.png

    1. After waiting for a period of time, a pop-up window will prompt "driver installed successfully", and then click the "OK" button.
    2. Plus5-img49.png

  1. 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
  2. Plus5-img50.png

  1. After opening the RKDevTool burning tool, because the computer is not connected to the development board through the Type-C cable at this time, the lower left corner will prompt "No device found"
  2. Plus5-img51.png

  1. Then start burning Orange Pi OS (Droid) image into eMMC

    1. First, connect the development board to the Windows computer through the Type-C data cable. The position of the Type-C interface on the development board is shown in the figure below
    2. Plus5-img52.png

    1. Make sure that the development board is not inserted into the TF card and not connected to the power supply

    2. 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:

    3. Plus5-img53.png

    1. Then connect the power supply of the Type-C interface to the development board, and power on
    2. Plus5-img54.png

    1. If the previous steps are successful, the development board will enter the MASKROM mode at this time, and the interface of the burning tool will prompt "found a MASKROM device"
    2. Plus5-img55.png

    1. Then click the "Upgrade Firmware" column of the burning tool
    2. Plus5-img157.png

    1. Then click the "Firmware" button to select the path of the Orange Pi OS (Droid) image that needs to be burned
    2. Plus5-img158.png

    1. Finally, click the "Upgrade" button to start burning, and the log during the burning process is shown in the figure below. After burning, the Orange Pi OS (Droid) system will start automatically.
    2. Plus5-img168.png

Burn Orange Pi OS (Droid) image to eMMC via TF card

Note that all the following operations are performed on a Windows computer.

  1. The development board reserves an eMMC expansion interface. Before programming the system to eMMC, you first need to purchase an eMMC module that matches the eMMC interface of the development board. Then install the eMMC module to the development board. The location of the eMMC interface is as follows:
Plus5-img78.png
  1. 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

  2. Then use the card reader to insert the TF card into the computer

  3. Then download the SDDiskTool programming tool from the Orange Pi's download page, please ensure that the version of the SDDiskTool tool is the latest v1.72.

  4. Then download the Orange Pi OS (Droid) image from the Orange Pi's download page

  5. Plus5-img167.png

  1. Then use the decompression software to decompress the compressed package of the downloaded Orange Pi OS (Droid) image. Among the decompressed files, the file ending with ".img" is the Orange Pi OS (Droid) image file, and the size is more than 1GB

  2. 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

  3. Plus5-img151.png

  1. After opening SDDiskTool, if the TF card is recognized normally, the inserted disk device will be displayed in the "Select Removable Disk Device" column. Please make sure that the displayed disk device is consistent with the drive letter of the TF card you want to burn, if there is no display, you can try to unplug the TF card.
  2. Plus5-img152.png

  1. 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
  2. Plus5-img153.png

  1. Then start to write the Orange Pi OS (Droid) image into the TF card
  2. a. First confirm that the displayed drive letter is the drive letter corresponding to the TF card under "Select Removable Disk Device"

    b. Then select "Firmware Upgrade" in "Select Function Mode"

    c. Then select the path of the Orange Pi OS (Droid) firmware in the "Select Upgrade Firmware" column

    d. Finally click the "Start Create" button to start burning

    Plus5-img160.png

  1. After the burning is completed, the display is as shown in the figure below, and then you can exit SDDiskTool
  2. Plus5-img161.png

  1. 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 Orange Pi OS (Droid) image in the TF card to the eMMC of the development board.

  2. If the development board is connected to an HDMI display, you can also see the progress bar of burning the Orange Pi OS (Droid) image to eMMC from the HDMI display

  3. Plus5-img162.png

  1. When the HDMI monitor displays the following information, it means that the burning of the Orange Pi OS (Droid) image to the eMMC has been completed. At this time, the TF card can be pulled out, and then the Orange Pi OS (Droid) system in the eMMC will start to start .
  2. Plus5-img163.png

Burn Orange Pi OS (Droid) image to SPIFlash+NVMe SSD

Note that all the following operations are performed on a Windows computer.

  1. First, you need to prepare a 2280 specification NVMe SSD solid state drive. The specification of the PCIe interface in the M.2 slot of the development board is PCIe3.0x4.
Plus5-img25.png
  1. Then insert the NVMe SSD into the M.2 PCIe interface of the development board and fix it
  2. Plus5-img90.png

  1. 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
  2. Plus5-img91.png

  1. It is also necessary to prepare a data cable with a good quality Type-C interface
  2. Plus5-img21.png

  1. Then download the Rockchip driver DriverAssitant_v5.12.zip and the burning tool RKDevTool_Release_v3.15.zip from the Orange Pi's download page

  2. Then download the Orange Pi OS (Droid) image, open the download link of the Orange Pi OS (Droid) image and you can see the following two types of images, please select the image with spi-nvme to download

  3. Plus5-img169.png

  1. 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
  2. Plus5-img47.png

  1. After opening DriverInstall.exe, the steps to install the Rockchip driver are as follows

    1. Click the "Driver Installation" button
    2. Plus5-img48.png

    1. After waiting for a period of time, a pop-up window will prompt "driver installed successfully", and then click the "OK" button.
    2. Plus5-img49.png

  1. 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
  2. Plus5-img50.png

  1. After opening the RKDevTool burning tool, because the computer is not connected to the development board through the Type-C cable at this time, the lower left corner will prompt "No device found"
  2. Plus5-img51.png

  1. Then start burning the Android image to SPIFlash+NVMe SSD

    1. First, connect the development board to the Windows computer through the Type-C data cable. The position of the Type-C interface on the development board is shown in the figure below
    2. Plus5-img52.png

    1. Make sure that the development board is not plugged into the TF and eMMC modules, and is not connected to the power supply

    2. 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:

    3. Plus5-img53.png

    1. Then connect the power supply of the Type-C interface to the development board, and power on, and then release the MaskROM button
    2. Plus5-img54.png

    1. If the previous steps are successful, the development board will enter the MASKROM mode at this time, and the interface of the burning tool will prompt "found a MASKROM device"
    2. Plus5-img55.png

    1. Then click the "Upgrade Firmware" column of the burning tool
    2. Plus5-img157.png

    1. Then click the "Firmware" button to select the Orange Pi OS (Droid) image to be burned
    2. Plus5-img158.png

    1. Finally, click the "Upgrade" button to start burning. The burning process is shown in the figure below. After the burning is completed, the Orange Pi OS (Droid) system will automatically start.

      Plus5-img170.png

How to use RKDevTool to clear SPIFlash

  1. The position of SPI Flash on the development board is shown in the figure below

    Plus5-img91.png

  2. First, you need to prepare a data cable with a good quality Type-C interface

    Plus5-img21.png

  3. Then download the Rockchip driver DriverAssitant_v5.12.zip and MiniLoader and the burning tool RKDevTool_Release_v3.15.zip from the Orange Pi's download page

    1. On the Orange Pi's download page, first select the official tool, and then enter the following folder

      Plus5-img171.png

    2. Then download all the files below

      Plus5-img172.png

      Note that the "MiniLoader-things needed to burn the Linux image" folder is hereinafter referred to as the MiniLoader folder.

  4. 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

    Plus5-img47.png

  5. After opening DriverInstall.exe, the steps to install the Rockchip driver are as follows

    1. Click the "Driver Installation" button

      Plus5-img48.png

    2. After waiting for a period of time, a pop-up window will prompt "The driver is installed successfully", and then click the "OK" button.

      Plus5-img49.png

  6. 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

    Plus5-img50.png

  7. After opening the RKDevTool burning tool, because the computer has not been connected to the development board through the Type-C cable at this time, the lower left corner will prompt "No device found"

    Plus5-img51.png

  8. Then you can start to clear the contents of the SPI FLASH

    1. First, connect the development board to the Windows computer through the Type-C data cable. The position of the Type-C interface on the development board is shown in the figure below

      Plus5-img173.png

    2. Make sure the development board is not connected to the power supply

    3. 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:

      Plus5-img53.png

    4. Then connect the power supply of the Type-C interface to the development board, and power on, and then release the MaskROM button

      Plus5-img54.png

    5. If the previous steps are smooth, at this time the development board will enter the Maskrom mode, and it will be prompted "Find a Maskrom device" on the interface of the recording tool

      Plus5-img55.png

    6. Then please select advanced features

      Plus5-img174.png

    7. Then click the position shown in the figure below

      Plus5-img175.png

    8. Then select MiniLoaderAll.bin in the MiniLoader folder downloaded earlier, and then click Open

      Plus5-img144.png

    9. Then click download

      Plus5-img176.png

    10. The display after downloading MiniLoaderAll.bin is shown in the figure below

      Plus5-img177.png

    11. Then select the storage device as SPINOR

      Plus5-img178.png

    12. Then click switch storage

      Plus5-img179.png

    13. Then click Erase All to start erasing SPIFlash

      Plus5-img180.png

    14. The display log after erasing SPIFlash is shown in the figure below

      Plus5-img181.png

Start the Orange Pi development board

  1. Insert the burned TF card or eMMC module 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 or eMMC module, just make sure that the NVMe SSD is normally inserted into the development board.
  2. 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 buy 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.
  3. Connect a USB mouse and keyboard to control the Orange Pi development board.
  4. The development board has an Ethernet port, which can be plugged into a network cable for Internet access.
  5. Connect a high-quality power adapter with a 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.

Many unstable phenomena during the power-on and start-up process of the system are basically caused by power supply problems, so a reliable power adapter is very important. If you find that there is a phenomenon of continuous restart during the startup process, please replace the power

supply or the Type-C data cable and try again.

The Type-C power port does not support PD negotiation.

In addition, please do not connect the USB interface of the computer to power the development board.

There are two Type-C ports that look the same on the development board. The one next to the network port is the power port, and the other Type-C port has no power supply function. Please don’t connect it wrong.

Plus5-img182.png
  1. 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.

  2. If you want to view the output information of the system through the debugging serial port, please use the serial cable to connect the development board to the computer. For the connection method of the serial port, please refer to the section on how to use the debugging serial port.

How to use the debugging serial port

Connection instruction of debugging serial port

  1. First, you need to prepare a 3.3V USB to TTL module, and then insert the USB interface end of the USB to TTL module into the USB interface of the computer.

For better compatibility, it is recommended to use CH340 USB to TTL module, please do not use CP2102, PL2303 type USB to TTL module.


Before purchasing a USB to TTL module, please confirm that the module supports a baud rate of 1500000.

Plus5-img183.png
  1. The corresponding relationship between GND, RXD and TXD pins of the debugging serial port of the development board is shown in the figure below:

    Plus5-img184.png

  2. 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

    1. The GND of the USB to TTL module is connected to the GND of the development board

    2. The RX of the USB to TTL module is connected to the TX of the development board

    3. The TX of the USB to TTL module is connected to the RX of the development board

  3. The schematic diagram of connecting the USB to TTL module to the computer and the Orange Pi development board is as follows

    Plus5-img185.png

    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. If there is no output in the test, then exchange the order of TX and RX, so that there is always a This order is correct.

How to use the debugging serial port on the Ubuntu platform

There are many serial port debugging software that can be used under Linux, such as putty, minicom, etc. The following demonstrates how to use putty.

  1. First, insert the USB-to-TTL module into the USB port of the Ubuntu computer. If the connection and recognition of the USB-to-TTL module is normal, you can see the corresponding device node name under /dev on the Ubuntu PC. Remember this node name, and then set the serial port software will be used.

    test@test:~$ ls /dev/ttyUSB*

    /dev/ttyUSB0

  2. Then use the following command to install putty on Ubuntu PC

    test@test:~$ sudo apt-get update

    test@test:~$ sudo apt-get install -y putty

  3. Then run putty, remember to add sudo permission

    test@test:~$ sudo putty

  4. After executing the putty command, the following interface will pop up

    Plus5-img186.png

  5. First select the setting interface of the serial port

    Plus5-img187.png

  6. Then set the parameters of the serial port

    1. Set the Serial line to connect to as /dev/ttyUSB0 (modify to the corresponding node name, generally /dev/ttyUSB0)

    2. Set Speed(baud) to 1500000 (the baud rate of the serial port)

    3. Set Flow control to None

      Plus5-img188.png

  7. After setting the serial port setting interface, return to the Session interface

    1. First select the Connection type as Serial

    2. Then click the Open button to connect to the serial port

      Plus5-img189.png

  8. After starting the development board, you can see the Log information output by the system from the opened serial port terminal

    Plus5-img190.png

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.

  1. Download MobaXterm

    1. Download MobaXterm website as follows

      https://mobaxterm.mobatek.net

    2. After entering the MobaXterm download page, click GET XOBATERM NOW!

      Plus5-img191.png

    3. Then choose to download the Home version

      Plus5-img192.png

    4. Then select Portable portable version, no need to install after downloading, just open it and use it

      Plus5-img193.png

  2. 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

    Plus5-img194.png

  3. After opening the software, the steps to set up the serial port connection are as follows

    1. Open the session settings interface

    2. Select the serial port type

    3. Select the port number of the serial port (select the corresponding port number according to the actual situation), if you cannot see the port number, please use 360 Driver Master to scan and install the driver for the USB to TTL serial port chip

    4. Select the baud rate of the serial port as 1500000

    5. Finally click the "OK" button to complete the settings

    Plus5-img195.png

  1. After clicking the "OK" button, you will enter the following interface. At this time, start the development board and you can see the output information of the serial port

    Plus5-img196.png

Instructions for using the 5v pin in the 40pin interface of the development board to supply power

The power supply method we recommend for the development board is to use the 5V/4A or 5V/5A 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 cable 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.

  1. First, you need to prepare a power cord as shown in the figure below

    5plus-1.png

    The power cord shown in the picture above can be bought on Taobao, please search and buy by yourself.

  2. 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

    1. The USB A port of the power cord shown in the above picture needs to be plugged into the 5V/4A or 5V/5A power adapter connector (please do not plug into the USB port of the computer for power supply, nor can the general mobile phone charging head, because the development board Without the PD function, the general mobile phone charging head can only output the lowest 5V/2A)

    2. The red DuPont line needs to be plugged into the 5V pin of the development board 40pin

    3. The black DuPont line needs to be inserted into the GND pin of the 40pin interface

    4. The positions of the 5V pin and the GND pin of the 40pin interface in the development board are shown in the figure below, remember not to reverse the connection

      5plus-2.png

Ubuntu/Debian Server and Xfce desktop system instructions

The content of this chapter is written based on the Ubuntu/Debian server version image and the xfce desktop version image.

If you are using the Ubuntu22.04 Gnome image, please first check the instructions in the chapter Ubuntu22.04 Gnome Wayland Desktop System Instructions.

You can refer to the instructions in this chapter for the content that does not exist in the chapter of Ubuntu22.04 Gnome Wayland Desktop System User Manual, but some details may be different, please pay special attention to this point.

If you are using the OPi OS Arch image, please refer to the chapter Orange Pi OS Arch System Instructions.

Supported Ubuntu/Debian image types and kernel versions

Linux image type kernel version server version desktop version
Debian 11 - Bullseye Linux5.10 support support
Debian 12 - Bookworm Linux5.10 plan support plan support
Ubuntu 20.04 - Focal Linux5.10 support support
Ubuntu 22.04 - Jammy Linux5.10 support support

Linux system adaptation

Function Linux5.10 driver Debian11 Ubuntu20.04 Ubuntu22.04
HDMI TX1 Video OK OK OK OK
HDMI TX1 Audio OK OK OK OK
HDMI TX2 Video OK OK OK OK
HDMI TX2 Audio OK OK OK OK
HDMI RX Video OK OK OK OK
HDMI RX Audio OK OK OK OK
USB2.0X2 OK OK OK OK
USB3.0X2 OK OK OK OK
2.5G PCIe network port X2 OK OK OK OK
2.5G PCIe network port light OK OK OK OK
Debug serial port OK OK OK OK
RTC Chip OK OK OK OK
FAN interface OK OK OK OK
eMMC Extension ports OK OK OK OK
AP6275P-WIFI OK OK OK OK
AP6275P-BT OK OK OK OK
AX200-WIFI OK OK OK OK
AX200-BT OK OK OK OK
AX210-WIFI OK OK OK OK
AX210-BT OK OK OK OK
RTL8852BE-WIFI OK OK OK OK
RTL8852BE-BT OK OK OK OK
MaskROM button OK OK OK OK
Type-C转USB3.0 OK OK OK OK
Type-C ADB Function OK OK OK OK
Type-C DP Video OK OK OK OK
Type-C DP Audio OK OK OK OK
switch button OK OK OK OK
infrared function OK OK OK OK
Three-color LED light OK OK OK OK
Onboard MIC OK OK OK OK
headphone playback OK OK OK OK
headphone recording OK OK OK OK
SPK Horn OK OK OK OK
40PIN GPIO OK OK OK OK
40PIN I2C OK OK OK OK
40PIN SPI OK OK OK OK
40PIN UART OK OK OK OK
40PIN CAN OK OK OK OK
40PIN PWM OK OK OK OK
TF card start OK OK OK OK
SPI+NVME start OK OK OK OK
OV13850 camera OK OK OK OK
OV13855 camera OK OK OK OK
GPU OK OK OK OK
VPU OK OK OK OK
NPU OK OK OK OK
REBOOT command restarts OK OK OK OK
Poweroff command shutdown OK OK OK OK
MIPI LCD display OK OK OK OK
MIPI LCD Touch OK OK OK OK
Chromium hard solution video OK OK OK OK

The format of linux commands in this manual

  1. In this manual, all commands that need to be entered in the Linux system will be framed in the following box

    As shown below, the content in the yellow box indicates the content that needs special attention, except for the commands in it.

  2. Description of the prompt type in front of the command

    1. The prompt in front of the command refers to the content of the red part in the box below, which is not part of the linux command, so when entering the command in the linux system, please do not enter the content of the red font part.

      orangepi@orangepi:~$ sudo apt update

      root@orangepi:~# vim /boot/boot.cmd

      test@test:~$ ssh root@192.168.1.xxx

      root@test:~# ls

    2. root@orangepi:~$ prompt indicates that this command is entered in the linux system of the development board, and the last $ of the prompt indicates that the current user of the system is an ordinary user. When executing a privileged command, you need to add sudo

    3. 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

    4. test@test:~$ 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, you need to add sudo

    5. root@test:~# prompt indicates that this command is entered in the Ubuntu PC or Ubuntu virtual machine, not in the linux system of the development board. The # at the end of the prompt indicates that the current user of the system is the root user and can execute any command you want

  3. What are the commands that need to be entered?

    1. 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 have output), this part of the content does not need to be input

      root@orangepi:~# cat /boot/orangepiEnv.txt

      verbosity=7

      bootlogo=false

      console=serial

    2. As shown below, some commands cannot be written in one line and will be placed on the next line. As long as the black and bold parts are all commands that need to be input. When these commands are entered into one line, the last "\" of each line needs to be removed, this is not part of the command. In addition, there are spaces in different parts of the command, please don't miss it

      orangepi@orangepi:~$ echo \

      "deb [arch=$(dpkg --print-architecture) \

      signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] \

      https://download.docker.com/linux/debian \

      $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Linux system login instructions

Linux system default login account and password

Account Password
root orangepi
orangepi orangepi

Note that when entering the password, the specific content of the entered password will not be displayed on the screen, please do not think that there is any fault, just press Enter after inputting.

When the wrong password is prompted, or there is a problem with the ssh connection, please note that as long as you are using the Linux image provided by Orange Pi, please do not suspect that the above password is wrong, but look for other reasons.

How to set automatic terminal login in linux system

  1. By default, the Linux system automatically logs in to the terminal, and the default login user name is orangepi

    Plus5-img197.png

  2. Use the following command to set the root user to automatically log in to the terminal

    orangepi@orangepi:~$ sudo auto_login_cli.sh root

  3. Use the following command to disable automatic login terminal

    orangepi@orangepi:~$ sudo auto_login_cli.sh -d

  4. Use the following command to set the orangepi user to automatically log in to the terminal again

    orangepi@orangepi:~$ sudo auto_login_cli.sh orangepi

Instructions for automatic login of Linux desktop version system

  1. After the desktop version system is started, it will automatically log in to the desktop without entering a password

    Plus5-img198.png

  2. Run the following command to prohibit the desktop system from automatically logging into the desktop

    orangepi@orangepi:~$ sudo disable_desktop_autologin.sh

  3. Then restart the system and a login dialog box will appear, at which point a password is required to enter the system

  4. Plus5-img199.png

The setting method of root user automatic login in Linux desktop version system

  1. Execute the following command to set the desktop system to automatically log in as the root user

    orangepi@orangepi:~$ sudo desktop_login.sh root

  2. Then restart the system, it will automatically use the root user to log in to the desktop

    Plus5-img200.png

    Note that if you log in to the desktop system as the root user, you cannot use pulseaudio in the upper right corner to manage audio devices.

    Also note that this is not a bug, since pulseaudio is not allowed to run as root.

  3. Execute the following command to set the desktop system to log in automatically with the orangepi user again

    orangepi@orangepi:~$ sudo desktop_login.sh orangepi

The method of disabling the desktop in the Linux desktop version system

  1. First enter the following command in the command line, please remember to add sudo permission

    orangepi@orangepi:~$ sudo systemctl disable lightdm.service

  2. Then restart the Linux system and you will find that the desktop will not be displayed

    orangepi@orangepi:~$ sudo reboot

  3. The steps to reopen the desktop are as follows:

    1. First enter the following command in the command line, please remember to add sudo permission

      orangepi@orangepi:~$ sudo systemctl start lightdm.service

      orangepi@orangepi:~$ sudo systemctl enable lightdm.service

    2. After selection, the monitor will display the desktop

Onboard LED Light Test Instructions

  1. There is a red, green and blue three-color light on the development board, and its location is shown in the figure below:

    Plus5-img201.png

  2. As long as the development board is powered on, the red LED light will always be on, which is controlled by the hardware and cannot be turned off by the software. The red LED light can be used to determine whether the power supply of the development board is turned on normally.

  3. The green and blue LED lights will keep blinking after the kernel boots, which is controlled by software.

  4. The method of setting the green light on and off and flashing is as follows:

    Note that the following operations should be performed under the root user.

    1. First enter the setting directory of the green light

      root@orangepi:~# cd /sys/class/leds/green_led

    2. The command to set the green light to stop flashing is as follows

      root@orangepi:/sys/class/leds/green_led# echo none > trigger

    3. The command to set the green light to be on is as follows

      root@orangepi:/sys/class/leds/green_led# echo default-on > trigger

    4. The command to set the green light to flash is as follows

      root@orangepi:/sys/class/leds/green_led# echo heartbeat > trigger

  5. The method of setting the blue light on and off and flashing is as follows:

    Note that the following operations should be performed under the root user.

    1. First enter the setting directory of the blue light

      root@orangepi:~# cd /sys/class/leds/blue_led

    2. The command to set the blue light to stop flashing is as follows

      root@orangepi:/sys/class/leds/blue_led# echo none > trigger

    3. The command to set the blue light to be on is as follows

      root@orangepi:/sys/class/leds/blue_led# echo default-on > trigger

    4. The command to set the blue light to flash is as follows

      root@orangepi:/sys/class/leds/blue_led# echo heartbeat > trigger

  6. If you don't want the LED light to flash after booting, you can use the following method to turn off the green light and blue light

    1. First run orangepi-config, normal users remember to add sudo permission

      orangepi@orangepi:~$ sudo orangepi-config

    2. Then select System

      5plus-51.png

    3. Then select Hardware

      5plus-52.png

    4. Then use the arrow keys of the keyboard to navigate to the position shown in the figure below, and then use the space to select the opi5plus-disable-leds configuration

      5plus-53.png

    5. Then select <Save> to save

      5plus-54.png

    6. Then select <Back>

      5plus-55.png

    7. Then select <Reboot> to restart the system to make the configuration take effect

      5plus-56.png

    8. After restarting, you can see that only the red light on the development board is always on, and the green and blue lights will not flash

Network connection test

2.5G Ethernet port test

  1. The development board has two 2.5G Ethernet ports, and the test methods for the two ports are the same. 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 unimpeded.

  2. After the system starts, it will automatically assign an IP address to the Ethernet card through DHCP without any other configuration.

  3. The command to view the IP address in the Linux system of the development board is as follows:

    orangepi@orangepi:~$ ip addr show

    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000

    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

    inet 127.0.0.1/8 scope host lo

    valid_lft forever preferred_lft forever

    inet6 ::1/128 scope host

    valid_lft forever preferred_lft forever

    2: enP3p49s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000

    link/ether 00:e0:4c:68:00:26 brd ff:ff:ff:ff:ff:ff

    inet 192.168.1.245/24 brd 192.168.1.255 scope global dynamic noprefixroute enP3p49s0

    valid_lft 42537sec preferred_lft 42537sec

    inet6 fe80::9005:95ac:b9c0:2beb/64 scope link noprefixroute

    valid_lft forever preferred_lft forever

    3: enP4p65s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000

    link/ether 00:e0:4c:68:00:27 brd ff:ff:ff:ff:ff:ff

    inet 192.168.1.247/24 brd 192.168.1.255 scope global dynamic noprefixroute enP4p65s0

    valid_lft 43179sec preferred_lft 43179sec

    inet6 fe80::62b5:dc5e:728e:39a3/64 scope link noprefixroute

    valid_lft forever preferred_lft forever

    When using ifconfig to view the IP address, if the following information is prompted, it is because sudo is not added. The correct command is: sudo ifconfig

    orangepi@orangepi:~$ ifconfig

    Command 'ifconfig' is available in the following places

    * /sbin/ifconfig

    * /usr/sbin/ifconfig

    The command could not be located because '/sbin:/usr/sbin' is not included in the PATH environment variable.

    This is most likely caused by the lack of administrative privileges associated with your user account.

    ifconfig: command not found

    There are three ways to check the IP address after the development board starts:

    1. Connect the HDMI display, then log in to the system and use the ip addr show command to view the IP address
    2. Enter the ip addr show 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:
    1. First check whether the Linux system has started normally. If the three-color light on the development board is flashing, it is generally started normally. If only the red light is on, it means that the system has not started normally;

    2. Check whether the network cable is plugged in tightly, or try another network cable;

    3. 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);

    4. If there is no router to replace, you can only connect to an HDMI display or use the debugging serial port to check the IP address.

    In addition, it should be noted that the development board DHCP automatically assigns an IP address without any settings.

  1. The command to test the network connectivity is as follows, the ping command can be interrupted through the shortcut key of Ctrl+C

    orangepi@orangepi:~$ ping www.baidu.com -I enP4p65s0        #Test command for one of the network ports

    orangepi@orangepi:~$ ping www.baidu.com -I enP3p49s0        #Test command of another network port

    PING www.a.shifen.com (14.119.104.254) from 192.168.1.182 enP3p49s0: 56(84) bytes of data.

    64 bytes from 14.119.104.254 (14.119.104.254): icmp_seq=1 ttl=56 time=6.26 ms

    64 bytes from 14.119.104.254 (14.119.104.254): icmp_seq=6 ttl=56 time=5.69 ms

    ^C

    --- www.a.shifen.com ping statistics ---

    6 packets transmitted, 6 received, 0% packet loss, time 5008ms

    rtt min/avg/max/mdev = 5.671/5.859/6.264/0.202 ms

WIFI connection test

First of all, please note that there is no WIFI module on the Orange Pi 5 Plus development board, and an external PCIe network card or USB network card is required to use the WIFI function.

For instructions on using the external PCIe network card, please refer to the section on how to use the PCIe WIFI6+Bluetooth module.

For instructions on using the external USB network card, please refer to the USB wireless network card test section.

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.

Please do not connect to WIFI by modifying the /etc/network/interfaces configuration file. There will be problems connecting to the WIFI network in this way.

The server image connects to WIFI through commands

When the development board is not connected to Ethernet, not connected to HDMI display, but only connected to the serial port, it is recommended to use the commands demonstrated in this section to connect to the WIFI network. Because nmtui can only display characters in some serial port software (such as minicom), and cannot display the graphical interface normally. Of course, if the development board is connected to an Ethernet or HDMI display, you can also use the commands demonstrated in this section to connect to the WIFI network.


The commands demonstrated below are the default WIFI network device node name wlan0, but the node names of different WIFI modules will be different, please replace it with the actual node name you see, do not copy it.

  1. First log in to the linux system, there are the following three ways

    1. If the development board is connected with a network cable, you can remotely log in to the Linux system through ssh

    2. 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

    3. If the development board is connected to the HDMI display, you can log in to the linux system through the HDMI display terminal

  2. First use the nmcli dev wifi command to scan the surrounding WIFI hotspots

    orangepi@orangepi:~$ nmcli dev wifi

    Plus5-img202.png

  3. Then use the nmcli command to connect to the scanned WIFI hotspot, where:

    1. wifi_name needs to be replaced with the

    2. wifi_passwd needs to be replaced with the password of the WIFI hotspot you want to connect to

      orangepi@orangepi:~$ nmcli dev wifi connect wifi_name password wifi_passwd

      Device 'wlan0' successfully activated with 'cf937f88-ca1e-4411-bb50-61f402eef293'.

  4. Through the ip addr show wlan0 command, you can view the IP address of wifi

    The device node names of WIFI are not necessarily all wlan0, please refer to what you actually see.

    orangepi@orangepi:~$ ip addr show wlan0

    11: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000

    link/ether 23:8c:d6:ae:76:bb brd ff:ff:ff:ff:ff:ff

    inet 192.168.1.11/24 brd 192.168.1.255 scope global dynamic noprefixroute wlan0

    valid_lft 259192sec preferred_lft 259192sec

    inet6 240e:3b7:3240:c3a0:c401:a445:5002:ccdd/64 scope global dynamic noprefixroute

    valid_lft 259192sec preferred_lft 172792sec

    inet6 fe80::42f1:6019:a80e:4c31/64 scope link noprefixroute

    valid_lft forever preferred_lft forever

  5. Use the ping command to test the connectivity of the wifi network, and the ping command can be interrupted through the shortcut key Ctrl+C

    The device node names of WIFI are not necessarily all wlan0, please refer to what you actually see.

    orangepi@orangepi:~$ ping www.orangepi.org -I wlan0

    PING www.orangepi.org (182.92.236.130) from 192.168.1.49 wlan0: 56(84) bytes of data.

    64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=1 ttl=52 time=43.5 ms

    64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=2 ttl=52 time=41.3 ms

    64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=3 ttl=52 time=44.9 ms

    64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=4 ttl=52 time=45.6 ms

    64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=5 ttl=52 time=48.8 ms

    ^C

    --- www.orangepi.org ping statistics ---

    5 packets transmitted, 5 received, 0% packet loss, time 4006ms

    rtt min/avg/max/mdev = 41.321/44.864/48.834/2.484 ms

The server image connects to WIFI in a graphical way

  1. First log in to the linux system, there are the following three ways

    1. If the development board is connected with a network cable, you can remotely log in to the Linux system through ssh

    2. 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 minicom cannot display the graphical interface)

    3. 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

  2. Then enter the nmtui command in the command line to open the wifi connection interface

    orangepi@orangepi:~$ nmtui

  3. Enter the nmtui command to open the interface as shown below

    Plus5-img203.png

  4. Select Activate a connect and press Enter

    Plus5-img204.png

  5. Then you can see all the searched WIFI hotspots

    Plus5-img205.png

  6. Select the WIFI hotspot you want to connect to, then use the Tab key to position the cursor on Activate and press Enter

    Plus5-img206.png

  7. Then a dialog box for entering a password will pop up, enter the corresponding password in Password and press Enter to start connecting to WIFI

    Plus5-img207.png

  8. After the WIFI connection is successful, a "*" will be displayed in front of the connected WIFI name

    Plus5-img208.png

  9. You can view the IP address of wifi through the ip addr show wlan0 command

    The device node names of WIFI are not necessarily all wlan0, please refer to what you actually see.

    orangepi@orangepi:~$ ip addr show wlan0

    11: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000

    link/ether 24:8c:d3:aa:76:bb brd ff:ff:ff:ff:ff:ff

    inet 192.168.1.11/24 brd 192.168.1.255 scope global dynamic noprefixroute wlan0

    valid_lft 259069sec preferred_lft 259069sec

    inet6 240e:3b7:3240:c4a0:c401:a445:5002:ccdd/64 scope global dynamic noprefixroute

    valid_lft 259071sec preferred_lft 172671sec

    inet6 fe80::42f1:6019:a80e:4c31/64 scope link noprefixroute

    valid_lft forever preferred_lft forever

  10. Use the ping command to test the connectivity of the wifi network, and the ping command can be interrupted through the shortcut key Ctrl+C

    The device node names of WIFI are not necessarily all wlan0, please refer to what you actually see.

    orangepi@orangepi:~$ ping www.orangepi.org -I wlan0

    PING www.orangepi.org (182.92.236.130) from 192.168.1.49 wlan0: 56(84) bytes of data.

    64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=1 ttl=52 time=43.5 ms

    64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=2 ttl=52 time=41.3 ms

    64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=3 ttl=52 time=44.9 ms

    64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=4 ttl=52 time=45.6 ms

    64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=5 ttl=52 time=48.8 ms

    ^C

    --- www.orangepi.org ping statistics ---

    5 packets transmitted, 5 received, 0% packet loss, time 4006ms

    rtt min/avg/max/mdev = 41.321/44.864/48.834/2.484 ms

Test method of desktop image

  1. Click the network configuration icon in the upper right corner of the desktop (please do not connect the network cable when testing WIFI)

    Plus5-img209.png

  2. 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

    Plus5-img210.png

  3. Then enter the password of the WIFI hotspot, and then click Connect to start connecting to WIFI

    Plus5-img211.png

  4. After connecting to WIFI, you can open the browser to check whether you can access the Internet. The entrance of the browser is shown in the figure below

    Plus5-img212.png

  5. If you can open other web pages after opening the browser, it means that the WIFI connection is normal

    Plus5-img213.png

How to set a static IP address

Please do not set a static IP address by modifying the /etc/network/interfaces configuration file.

Use the nmtui command to set a static IP address

  1. First run the nmtui command

    orangepi@orangepi:~$ nmtui

  2. Then select Edit a connection and press Enter

    Plus5-img214.png

  3. Then select the network interface that needs to set a static IP address, such as setting the static IP address of the Ethernet interface to select Wired connection 1 or Wired connection 2

    Plus5-img215.png

  4. Then select Edit via the Tab key and press the Enter key

    Plus5-img216.png

  5. Then use the Tab key to move the cursor to the <Automatic> position shown in the figure below to configure IPv4

    Plus5-img217.png

  6. Then press Enter, select Manual through the up and down arrow keys, and press Enter to confirm

    Plus5-img218.png

  7. The display after selection is shown in the figure below

    Plus5-img219.png

  8. Then move the cursor to <Show> via the Tab key

    Plus5-img220.png

  9. Then press Enter, and the following setting interface will pop up after entering

    Plus5-img221.png

  10. Then you can set the IP address (Addresses), gateway (Gateway) and DNS server address in the position shown in the figure below (there are many other setting options in it, please explore by yourself), please set according to your specific needs, The values set in the image below are just an example

    Plus5-img222.png

  11. After setting, move the cursor to <OK> in the lower right corner, and press Enter to confirm

    Plus5-img223.png

  12. Then click <Back> to return to the previous selection interface

    Plus5-img224.png

  13. Then select Activate a connection, then move the cursor to <OK>, and finally click Enter

    Plus5-img225.png

  14. Then select the network interface that needs to be set, such as Wired connection 2, then move the cursor to <Deactivate>, and press the Enter key to disable Wired connection 2

    Plus5-img226.png

  15. Then re-select and enable Wired connection 2, so that the static IP set earlier will take effect

    Plus5-img227.png

  16. Then you can exit nmtui through the <Back> and Quit buttons

    Plus5-img228.png Plus5-img229.png

  17. Then through ip addr show, you can see that the IP address of the network port has changed to the static IP address set earlier

    orangepi@orangepi:~$ ip addr show enP4p65s0

    3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> 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 192.168.1.100/24 brd 192.168.1.255 scope global noprefixroute enP4p65s0

    valid_lft forever preferred_lft forever

    inet6 241e:3b8:3240:c3a0:e269:8305:dc08:135e/64 scope global dynamic noprefixroute

    valid_lft 259149sec preferred_lft 172749sec

    inet6 fe80::957d:bbbe:4928:3604/64 scope link noprefixroute

    valid_lft forever preferred_lft forever

  18. Then you can test the connectivity of the network to check whether the IP address is configured OK, and the ping command can be interrupted through the shortcut key Ctrl+C

    orangepi@orangepi:~$ ping 192.168.1.47 -I enP4p65s0

    PING 192.168.1.47 (192.168.1.47) from 192.168.1.188 enP4p65s0: 56(84) bytes of data.

    64 bytes from 192.168.1.47: icmp_seq=1 ttl=64 time=0.233 ms

    64 bytes from 192.168.1.47: icmp_seq=2 ttl=64 time=0.263 ms

    ^C

    --- 192.168.1.47 ping statistics ---

    5 packets transmitted, 5 received, 0% packet loss, time 4042ms

    rtt min/avg/max/mdev = 0.233/0.262/0.275/0.015 ms

Use the nmcli command to set a static IP address

  1. 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

  2. Then use the nmcli con show command to view the name of the network device, as shown below, Wired connection 1 and Wired connection 2 are the names of the Ethernet interfaces

    orangepi@orangepi:~$ nmcli con show

    NAME                                                  UUID                                              TYPE               DEVICE

    Wired connection 1      c043c817-1156-3b72-a559-9a8cd642bf70      ethernet      enP3p49s0

    Wired connection 2      6f74598a-ccc6-358b-be05-87eaf34df930      ethernet      enP4p65s0

  3. Then enter the following command, where

    1. "Wired connection 1" means to set the static IP address of the Ethernet port. If you need to set the static IP address of other network ports, please modify it to the name corresponding to the corresponding network interface (you can get it through the nmcli con show command)

    2. ipv4.addresses is followed by the static IP address to be set, which can be modified to the value you want to set

    3. ipv4.gateway represents the address of the gateway

      orangepi@orangepi:~$ nmcli con mod "Wired connection 1" \

      ipv4.addresses "192.168.1.110" \

      ipv4.gateway "192.168.1.1" \

      ipv4.dns "8.8.8.8" \

      ipv4.method "manual"

  4. Then restart the linux system

    orangepi@orangepi:~$ sudo reboot

  5. Then re-enter the linux system and use the ip addr show command to see that the IP address has been set to the desired value

    orangepi@orangepi:~$ ip addr show

    2: enP3p49s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000

    link/ether 00:e0:4c:68:00:26 brd ff:ff:ff:ff:ff:ff

    inet 192.168.1.110/32 scope global noprefixroute enP3p49s0

    valid_lft forever preferred_lft forever

    inet6 fe80::9005:95ac:b9c0:2beb/64 scope link noprefixroute

    valid_lft forever preferred_lft forever

How to use E-Key PCIe WIFI6+Bluetooth module

  1. First you need to buy a PCIe WIFI6+Bluetooth module
S/N Model Physical picture Supported OS
1 AX200

(PCIE+USB port)

Plus5-img230.png Debian

Ubuntu

OpenWRT

OPi OS Arch

2 AX210

(PCIE+USB port)

Plus5-img231.png Debian

Ubuntu

OpenWRT

OPi OS Arch

3 RTL8852BE

(PCIE+USB port)

Plus5-img232.png Debian

Ubuntu

Android12

OPi OS Arch

OPi OS Droid

  1. Then insert the module into the M.2 E-Key interface of the development board and fix it. The position is shown in the figure below:

    Plus5-img233.png

  2. Then use the lspci command, if you can see the information of the WIFI module, it means that the module is in good contact

    1. AX200 displays as follows

      orangepi@orangepi:~$ lspci | grep "Network"

      0002:21:00.0 Network controller: Intel Corporation Wi-Fi 6 AX200 (rev 1a)

    2. AX210 displays as follows

      orangepi@orangepi:~$ lspci | grep "Network"

      0002:21:00.0 Network controller: Intel Corporation Wi-Fi 6 AX210/AX211/AX411 160MHz (rev 1a)

    3. RTL8852 display as shown below

      orangepi@orangepi:~$ lspci | grep "Network"

      0002:21:00.0 Network controller: Intel Corporation Wi-Fi 6 AX200 (rev 1a)

  3. Then use the following command to see that there will be an additional WIFI device node

    [orangepi@orangepi ~]$ ip a

  4. For the WIFI connection and test method, please refer to the WIFI connection test section, and will not repeat them here.

  5. For the test method of Bluetooth, please refer to the section on Bluetooth usage, so I won’t go into details here.

SSH remote login development board

Linux systems enable ssh remote login by default and allow the root user to log in to the system. Before logging in with ssh, you first need to ensure that the Ethernet or wifi network is connected, and then use the ip addr command or check the router to obtain the IP address of the development board.


SSH remote login development board under Ubuntu

  1. Obtain the IP address of the development board
  2. Then you can remotely log in to the linux system through the ssh command

test@test:~$ ssh root@192.168.1.xxx (Need to be replaced with the IP address of the development board)

root@192.168.1.xx's password: (Enter the password here, the default password is orangepi)

Note that when entering the password, the specific content of the entered password will not be displayed on the screen, please do not think that there is any fault, just press Enter after inputting.

If you are prompted to refuse the connection, as long as you are using the image provided by Orange Pi, please do not suspect that the password orangepi is wrong, but look for other reasons.

  1. After successfully logging in to the system, the display is as shown in the figure below

    Plus5-img240.png

    If ssh fails to log in to the linux system normally, 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:


    root@orangepi:~# reset_ssh.sh


    If it still doesn't work, try to reset the system.

SSH remote login development board under Windows

  1. First obtain the IP address of the development board

  2. Under Windows, you can use MobaXterm to remotely log in to the development board, first create a new ssh session

    1. Open Session

    2. Then select SSH in Session Setting

    3. Then enter the IP address of the development board in the Remote host

    4. Then enter the user name root or orangepi of the linux system in Specify username

    5. Finally click OK

      Plus5-img241.png

  3. Then you will be prompted to enter a password. The default passwords for root and orangepi users are orangepi

    Note that when entering the password, the specific content of the entered password will not be displayed on the screen, please do not think that there is any fault, just press Enter after inputting.

    Plus5-img242.png
  1. After successfully logging in to the system, the display is as shown in the figure below
  2. Plus5-img243.png

How to use ADB

How to use network adb

  1. After the system starts, please confirm that adbd has been started

    orangepi@orangepi:~$ ps -ax | grep "adbd"

    808 ?                 Sl       0:00 /usr/bin/adbd

    3707 ttyFIQ0    S+        0:00 grep --color=auto adbd

  2. Then check the IP address of the development board and write it down

  3. Then install the adb tool on the Ubuntu PC

    test@test:~$ sudo apt-get update

    test@test:~$ sudo apt-get install -y adb

  4. Then use the following command to connect to the network adb

  5. test@test:~$ adb connect 192.168.1.xx:5555             #Please replace the IP address with the IP address of the development board

    • daemon not running; starting now at tcp:5037
    • daemon started successfully

    connected to 192.168.1.xx:5555

    test@test:~$ adb devices

    List of devices attached

    192.168.1.xx:5555        device

  1. Then use the following command to log in to the linux system of the development board
  2. test@test:~$ adb shell

    root@orangepi5plus:/# <--- After seeing this prompt, it means that you have successfully logged in to the development board

  1. The command to upload files to the development board using adb is as follows

    test@test:~$ adb push filename /root

    filename: 1 file pushed. 3.7 MB/s (1075091 bytes in 0.277s)

  2. The command to restart the development board using adb is as follows

    test@test:~$ adb reboot

    If there is no adb tool in your Windows system, you can use the adb program in the RKDevTool software (this software is useful in the section on how to use RKDevTool to burn the Linux image to the TF card).

    Plus5-img244.png

    An example using adb in Windows looks like this:

    Plus5-img245.png

adb3.9.2. Use type-c data cable to connect to adb

  1. First prepare a good quality Type-C data cable

    Plus5-img21.png

  2. Then connect the development board and Ubuntu PC through the Type-C data cable. The position of the Type-C interface of the development board is shown in the figure below:

    Plus5-img173.png

  3. Then run the following command to set the Type-C interface to device mode

    orangepi@orangepi:~$ sudo set_device.sh

    If the set_device.sh script does not exist in the Linux system, please use the following command directly:

    orangepi@orangepi:~$ sudo bash -c "echo device > /sys/kernel/debug/usb/fc000000.usb/mode"

    orangepi@orangepi:~$ sudo systemctl restart usbdevice

  4. Then please confirm that adbd has been started

    orangepi@orangepi:~$ ps -ax | grep "adbd"

    808 ?                 Sl       0:00 /usr/bin/adbd

    3707 ttyFIQ0    S+        0:00 grep --color=auto adbd

  5. Then install the adb tool on the Ubuntu PC

    test@test:~$ sudo apt-get update

    test@test:~$ sudo apt-get install -y adb

  6. Then use the following command to check whether the adb device is recognized

  7. test@test:~$ adb devices

    List of devices attached

    e0f9f71bc343c305 device

  1. Then use the following command to log in to the linux system of the development board
  2. test@test:~$ adb shell

    root@orangepi5plus:/# <--- After seeing this prompt, it means that you have successfully logged in to the development board

  1. The command to upload files to the development board using adb is as follows

    test@test:~$ adb push filename /root

    filename: 1 file pushed. 3.7 MB/s (1075091 bytes in 0.277s)

  2. If there is no adb tool in your Windows system, you can use the adb program in the RKDevTool software (this software is useful in the section on how to use RKDevTool to burn the Linux image to the TF card).

    Plus5-img244.png

    An example using adb in Windows looks like this:

    Plus5-img246.png

The method of uploading files to the Linux system of the development board

How to upload files to the development board Linux system in Ubuntu PC

How to upload files using the scp command

  1. Use the scp command to upload files from the Ubuntu PC to the Linux system on the development board. The specific commands are as follows

    1. file_path: need to be replaced with the path of the file to be uploaded

    2. 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

    3. 192.168.xx.xx: It is the IP address of the development board, please modify it according to the actual situation

    4. /home/orangepi: The path in the Linux system of the development board, which can also be modified to other paths

      test@test:~$ scp file_path orangepi@192.168.xx.xx:/home/orangepi/

  2. If you want to upload a folder, you need to add the -r parameter

    test@test:~$ scp -r dir_path orangepi@192.168.xx.xx:/home/orangepi/

  3. There are more usages of scp, please use the following command to view the man manual

  4. test@test:~$ man scp

How to upload files using filezilla

  1. First install filezilla in Ubuntu PC

    test@test:~$ sudo apt install -y filezilla

  2. Then use the following command to open filezilla

    test@test:~$ filezilla

  3. The interface after filezilla is opened is as follows, at this time, the display under the remote site on the right is empty

    Plus5-img247.png

  4. The method of connecting the development board is shown in the figure below

  5. Plus5-img248.png

  1. Then choose to save the password, and then click OK

    Plus5-img249.png

  2. Then choose to always trust this host, and then click OK

  3. Plus5-img250.png

  1. 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
  2. Plus5-img251.png

  1. 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.
  2. Plus5-img252.png

  1. 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

  2. The method of uploading a folder is the same as that of uploading a file, so I won't go into details here

The method of uploading files to the development board Linux system in Windows PC

How to upload files using filezilla

  1. First download the installation file of the Windows version of the filezilla software, the download link is as follows

    https://filezilla-project.org/download.php?type=client

    Plus5-img253.png

    Plus5-img254.png

  1. The downloaded installation package is as follows, and then double-click to install directly

    FileZilla_Server_1.5.1_win64-setup.exe

    During the installation process, please select Decline on the following installation interface, and then select Next>

    Plus5-img255.png

  1. The interface after filezilla is opened is as follows, at this time, the display under the remote site on the right is empty
  2. Plus5-img256.png

  1. The method of connecting the development board is shown in the figure below:
  2. Plus5-img248.png

  1. Then choose to save the password, and then click OK
  2. Plus5-img257.png

  1. Then choose to always trust this host, and then click OK
  2. Plus5-img258.png

  1. 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
  2. Plus5-img259.png

  1. 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
  2. Plus5-img260.png

  1. 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

  2. The method of uploading folders is the same as that of uploading files, so I won’t go into details here.

HDMI test

HDMI test

  1. There are two HDMI output interfaces on the development board, and their locations are shown in the figure below:

    Plus5-img261.png

  2. By default, the Linux system configures HDMI_TX1 to support 8K display, and HDMI_TX2 supports only 4K display by default (only one HDMI_TX interface can support 8K display at a time). If you want to set HDMI_TX2 to support 8K display, please follow the steps below:

    1. First run orangepi-config, normal users remember to add > sudo permission

      orangepi@orangepi:~$ sudo orangepi-config

    2. Then select System

      Plus5-img234.png

    3. Then select Hardware

      Plus5-img235.png

    4. Then use the arrow keys of the keyboard to navigate to the > position shown in the figure below, and then use the space > to select hdmi2-8k configuration

      Plus5-img262.png

    5. Then select <Save> to save

      Plus5-img263.png

    6. Then select <Back>

      Plus5-img264.png

    7. Then select <Reboot> to restart the system to make the > configuration take effect

      Plus5-img239.png

  3. Then use HDMI to HDMI cable to connect Orange Pi development board and HDMI display

    Plus5-img11.png

    Note, if you want to connect a 4K or 8K display, please make sure that the HDMI cable supports 4K or 8K video display.

  4. After starting the linux system, if the HDMI display has image output, it means that the HDMI interface is in normal use

  5. Note that although many laptops 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 the development board cannot be displayed on the screen of the notebook.

    When you want to connect the HDMI of the development board to the HDMI port of the laptop, please make sure that your laptop supports the HDMI in function.

    When the HDMI is not displayed, please check whether the HDMI cable is plugged in tightly. After confirming that there is no problem with the connection, you can change a different screen and try to see if it is displayed.

HDMI IN test method

  1. The location of the HDMI In interface on the development board is as follows:

    Plus5-img265.png

  2. First use the HDMI to HDMI cable shown in the figure below to connect the HDMI output of other devices to the HDMI In interface of the development board

    Plus5-img11.png

  3. The HDMI In function of the Linux system is disabled by default, and the opening method is as follows:

    1. First run orangepi-config, normal users remember to add sudo permission

      orangepi@orangepi:~$ sudo orangepi-config

    2. Then select System

      Plus5-img234.png

    3. Then select Hardware

      Plus5-img235.png

    4. Then use the arrow keys of the keyboard to navigate to the position shown in the figure below, and then use the space to select the hdmirx configuration

      Plus5-img266.png

    5. Then select <Save> to save

      Plus5-img263.png

    6. Then select <Back>

      Plus5-img264.png

    7. Then select <Reboot> to restart the system to make the configuration take effect

      Plus5-img239.png

  4. Restart the system and open a terminal on the desktop, then run the test_hdmiin.sh script

    [orangepi@orangepi ~]$ test_hdmiin.sh

  5. Then you can see the input screen of HDMI In (the HDMI In in the figure below shows the HDMI output screen of the opi5 development board, and a video is being played at this time). The test_hdmiin.sh script will play the audio input from HDMI In to HDMI_TX1, HDMI_TX2 and ES8388 (representing speakers or headphones) of the development board by default.

    Plus5-img267.png

HDMI to VGA display test

  1. First, you need to prepare the following accessories

    1. HDMI to VGA Converter

      Plus5-img268.png

    2. A VGA cable

      Plus5-img269.png

    3. A monitor or TV that supports VGA interface

  2. The HDMI to VGA display test is as follows:

    Plus5-img270.png

    When using HDMI to VGA display, the development board and the Linux system of the development board do not need to make any settings, only the HDMI interface of the development board can display normally. So if there is a problem with the test, please check whether there is a problem with the HDMI to VGA converter, VGA cable and monitor.

HDMI resolution setting method

  1. First open Display in Settings

    Plus5-img271.png

  2. Then you can see the current resolution of the system

    Plus5-img272.png

  3. Click the drop-down box of Resolution to see all resolutions currently supported by the monitor

    Plus5-img273.png

  4. Then select the resolution you want to set, and click Apply

    Plus5-img274.png

  5. After the new resolution is set, select Keep the configuration

    Plus5-img275.png

How to use Bluetooth

Please note that there is no Bluetooth module on the Orange Pi 5 Plus development board, and an external PCIe network card with Bluetooth or a USB network card with Bluetooth is required to use the Bluetooth function.

For instructions on using the external PCIe network card, please refer to the section on how to use the PCIe WIFI6+Bluetooth module.

For instructions on using the external USB network card, please refer to the USB wireless network card test section.

Test method of desktop image

  1. Click on the Bluetooth icon in the upper right corner of the desktop

    Plus5-img276.png

  2. Then select the adapter

    Plus5-img277.png

  3. If there is a prompt on the following interface, please select Yes

    Plus5-img278.png

  4. Then set the Visibility Setting to Always visible in the Bluetooth adapter setting interface, and then close it

    Plus5-img279.png

  5. Then open the configuration interface of the Bluetooth device

    Plus5-img280.png

  6. Click Search to start scanning the surrounding Bluetooth devices

    Plus5-img281.png

  1. Then select the Bluetooth device you want to connect to, and then click the right mouse button to pop up the operation interface for this Bluetooth device, select Pair to start pairing, and the demonstration here is to pair with an Android phone

    Plus5-img282.png

  2. When pairing, a pairing confirmation box will pop up in the upper right corner of the desktop, just select Confirm to confirm, and the phone also needs to confirm at this time

    Plus5-img283.png

  3. After pairing with the mobile phone, you can select the paired Bluetooth device, then right-click and select Send a File to start sending a picture to the mobile phone

    Plus5-img284.png

  4. The interface for sending pictures is as follows

    Plus5-img285.png

USB interface test

The USB interface can be connected to a USB hub to expand the number of USB interfaces.

Connect USB mouse or keyboard to test

  1. Insert the keyboard with USB interface into the USB interface of Orange Pi development board
  2. Connect the Orange Pi development board to the HDMI display
  3. If the mouse or keyboard can operate normally, it means that the USB interface is working normally (the mouse can only be used in the desktop version of the system)

Connect USB storage device test

  1. First insert the U disk or USB mobile hard disk into the USB interface of the Orange Pi development board
  2. Execute the following command, if you can see the output of sdX, it means that the U disk is recognized successfully

orangepi@orangepi:~$ cat /proc/partitions | grep "sd*"
major minor #blocksname
8030044160 sda
8130043119 sda1

  1. Use the mount command to mount the U disk to /mnt, and then you can view the files in the U disk
  2. orangepi@orangepi:~$ sudo mount /dev/sda1 /mnt/

    orangepi@orangepi:~$ ls /mnt/

    test.txt

  1. After mounting, you can view the capacity usage and mount point of the U disk through the df -h command
  2. orangepi@orangepi:~$ df -h | grep "sd"

    /dev/sda1      29G      208K      29G      1% /mnt

USB wireless network card test

The usable USB wireless network cards that have been tested so far are as follows. For other types of USB wireless network cards, please test them yourself. If they cannot be used, you need to transplant the corresponding USB wireless network card driver.

S/N model Physical picture
1 RTL8723BU

Support 2.4G WIFI+BT4.0

Plus5-img286.png
2 RTL8811

Support 2.4G +5G WIFI

Plus5-img287.png
3 RTL8821CU

Support 2.4G +5G WIFI

Support BitTorrent 4.2

Plus5-img288.png

RTL8723BU test

  1. First insert the RTL8723BU wireless network card module into the USB interface of the development board

  2. Then the linux system will automatically load the RTL8723BU bluetooth and WIFI-related kernel modules, through the lsmod command, you can see that the following kernel modules have been automatically loaded

    orangepi@orangepi:~$ lsmod

    Module Size Used by
    rfcomm 5734416
    rtl8xxxu 1064960
    rtk_btusb 614400

  3. Through the dmesg command, you can see the loading information of the RTL8723BU module

    orangepi@orangepi:~$ dmesg

    ......

    [ 83.438901] usb 2-1: new high-speed USB device number 2 using ehci-platform

    [ 83.588375] usb 2-1: New USB device found, idVendor=0bda, idProduct=b720, bcdDevice= 2.00

    [ 83.588403] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3

    [ 83.588422] usb 2-1: Product: 802.11n WLAN Adapter

    [ 83.588443] usb 2-1: Manufacturer: Realtek

    [ 83.588460] usb 2-1: SerialNumber: 00e04c000001

    [ 83.601974] Bluetooth: hci0: RTL: examining hci_ver=06 hci_rev=000b lmp_ver=06 lmp_subver=8723

    [ 83.603894] Bluetooth: hci0: RTL: rom_version status=0 version=1

    [ 83.603920] Bluetooth: hci0: RTL: loading rtl_bt/rtl8723b_fw.bin

    [ 83.610108] Bluetooth: hci0: RTL: loading rtl_bt/rtl8723b_config.bin

    [ 83.611274] Bluetooth: hci0: RTL: cfg_sz 68, total sz 22564

    [ 83.658494] rtk_btusb: Realtek Bluetooth USB driver ver 3.1.6d45ddf.20220519-142432

    [ 83.658651] usbcore: registered new interface driver rtk_btusb

    [ 83.667124] usb 2-1: This Realtek USB WiFi dongle (0x0bda:0xb720) is untested!

    [ 83.667137] usb 2-1: Please report results to Jes.Sorensen@gmail.com

    [ 83.890140] usb 2-1: Vendor: Realtek

    [ 83.890153] usb 2-1: Product: 802.11n WLAN Adapter

    [ 83.890159] usb 2-1: rtl8723bu_parse_efuse: dumping efuse (0x200 bytes):

    ......

    [ 83.890412] usb 2-1: RTL8723BU rev E (SMIC) 1T1R, TX queues 3, WiFi=1, BT=1, GPS=0, HI PA=0

    [ 83.890417] usb 2-1: RTL8723BU MAC: 00:13:ef:f4:58:ae

    [ 83.890421] usb 2-1: rtl8xxxu: Loading firmware rtlwifi/rtl8723bu_nic.bin

    [ 83.895289] usb 2-1: Firmware revision 35.0 (signature 0x5301)

    [ 84.050893] Bluetooth: hci0: RTL: fw version 0x0e2f9f73

    [ 84.266905] Bluetooth: RFCOMM TTY layer initialized

    [ 84.266949] Bluetooth: RFCOMM socket layer initialized

    [ 84.266999] Bluetooth: RFCOMM ver 1.11

    [ 84.884270] usbcore: registered new interface driver rtl8xxxu

    [ 84.912046] rtl8xxxu 2-1:1.2 wlx0013eff458ae: renamed from wlan0

  4. Then through the sudo ifconfig command, you can see the device node of RTL8723BU WIFI. For the connection and test method of WIFI, please refer to the section of WIFI connection test, which will not be repeated here

    orangepi@orangepi:~$ sudo ifconfig wlx0013eff458ae

    wlx0013eff458ae: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500

    ether 00:13:ef:f4:58:ae txqueuelen 1000 (Ethernet)

    RX packets 0 bytes 0 (0.0 B)

    RX errors 0 dropped 0 overruns 0 frame 0

    TX packets 0 bytes 0 (0.0 B)

    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

  5. Then you can see the USB Bluetooth device through the hciconfig command

    orangepi@orangepi:~$ sudo apt update && sudo apt install bluez

    orangepi@orangepi:~$ hciconfig

    hci0: Type: Primary Bus: USB

    BD Address: 00:13:EF:F4:58:AE ACL MTU: 820:8 SCO MTU: 255:16

    DOWN

    RX bytes:1252 acl:0 sco:0 events:125 errors:0

    TX bytes:23307 acl:0 sco:0 commands:125 errors:0

  6. You can also see the bluetooth icon on the desktop. At this time, the bluetooth is not turned on, so a red x will be displayed

    Plus5-img289.png

  7. Click Turn Bluetooth On to turn on Bluetooth

    Plus5-img290.png

  8. The display after turning on Bluetooth is as follows

    Plus5-img291.png

  9. For the test method of Bluetooth, please refer to the section on Bluetooth usage, so I won't go into details here

RTL8811 test

  1. First insert the RTL8811 wireless network card module into the USB interface of the development board

  2. Then the linux system will automatically load the kernel module related to RTL8811 WIFI, through the lsmod command, you can see that the following kernel module has been automatically loaded

    orangepi@orangepi:~$ lsmod

    Module Size Used by
    8821cu 1839104 0

  3. Through the dmesg command, you can see the loading information of the RTL8811 module

    orangepi@orangepi:~$ dmesg

    [ 118.618194] usb 2-1: new high-speed USB device number 2 using ehci-platform

    [ 118.767152] usb 2-1: New USB device found, idVendor=0bda, idProduct=c811, bcdDevice= 2.00

    [ 118.767181] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3

    [ 118.767199] usb 2-1: Product: 802.11ac NIC

    [ 118.767219] usb 2-1: Manufacturer: Realtek

    [ 118.767235] usb 2-1: SerialNumber: 123456

    [ 119.500530] usbcore: registered new interface driver rtl8821cu

    [ 119.525498] rtl8821cu 2-1:1.0 wlx1cbfced9d260: renamed from wlan0

  4. Then, you can see the WIFI device node through the sudo ifconfig command. For the WIFI connection and test method, please refer to the section of WIFI connection test, which will not be repeated here

    orangepi@orangepi:~$ sudo ifconfig wlx1cbfced9d260

    wlx1cbfced9d260: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500

    ether 1c:bf:ce:d9:d2:60 txqueuelen 1000 (Ethernet)

    RX packets 0 bytes 0 (0.0 B)

    RX errors 0 dropped 0 overruns 0 frame 0

    TX packets 0 bytes 0 (0.0 B)

    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

USB camera test

  1. First, you need to prepare a USB camera that supports the 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

    Plus5-img18.png

  2. Through the v4l2-ctl command, you can see that the device node information of the USB camera is /dev/video0

    orangepi@orangepi:~$ v4l2-ctl --list-devices

    Q8 HD Webcam: Q8 HD Webcam (usb-fc880000.usb-1):

    /dev/video0

    /dev/video1

    /dev/media0

    Note that the l in v4l2 is a lowercase letter l, not the number 1.

    In addition, the serial number of the video is not necessarily video0, please refer to what you actually see.

  3. 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:

    Plus5-img292.png

    The interface after Cheese turns on the USB camera is shown in the figure below:

    Plus5-img293.png

  4. Method of using fswebcam to test USB camera

    1. Install fswebcam

      orangepi@orangepi:~$ sudo apt update

      orangepi@orangepi:~$ sudo apt-get install -y fswebcam

    2. After installing fswebcam, you can use the following command to take pictures

      1. a) -d option is used to specify the device node of the USB camera

      2. b) --no-banner is used to remove the watermark of the photo

      3. c) -r option is used to specify the resolution of the photo

      4. d) -S option is used to set the number of previous frames to skip

      5. e) ./image.jpg is used to set the name and path of the generated photo

        orangepi@orangepi:~$ sudo fswebcam -d /dev/video0 \

        --no-banner -r 1280x720 -S 5 ./image.jpg

    3. In the server version of the linux system, you can use the scp command to transfer the taken pictures to the Ubuntu PC for image viewing after taking pictures

      orangepi@orangepi:~$ scp image.jpg test@192.168.1.55:/home/test (Modify the IP address and path according to the actual situation)

    4. In the desktop version of the linux system, you can directly view the captured pictures through the HDMI display d. In the desktop version of the linux system, you can directly view the captured pictures through the HDMI display

Audio Test

Testing audio methods on desktop systems

  1. First open the file manager

    Plus5-img294.png

  2. Then find the following file (if there is no audio file in the system, you can upload an audio file to the system yourself)

    Plus5-img295.png

  3. Then select the audio.wav file, right click and select open with vlc to start playing

    Plus5-img296.png

  4. How to switch between different audio devices such as HDMI playback and headphone playback

    1. First open the volume control interface

      Plus5-img297.png

    2. When playing audio, the audio device options that the playback software can use will be displayed in Playback, as shown in the figure below, where you can set which audio device to play to

      Plus5-img298.png

The method of using commands to play audio

Headphone interface playback audio test

  1. First insert the earphone into the earphone jack of the development board

    Plus5-img299.png

  2. Then you can use the aplay -l command to view the sound card devices supported by the linux system. From the output below, you can see that card 3 is the sound card device of es8388, that is, the sound card device of the headset

    orangepi@orangepi:~$ aplay -l

    **** List of PLAYBACK Hardware Devices ****

    card 0: rockchipdp0 [rockchip,dp0], device 0: rockchip,dp0 spdif-hifi-0 [rockchip,dp0 spdif-hifi-0]

    Subdevices: 0/1

    Subdevice #0: subdevice #0

    card 1: rockchiphdmi0 [rockchip-hdmi0], device 0: rockchip-hdmi0 i2s-hifi-0 [rockchip-hdmi0 i2s-hifi-0]

    Subdevices: 0/1

    Subdevice #0: subdevice #0

    card 2: rockchiphdmi1 [rockchip-hdmi1], device 0: rockchip-hdmi1 i2s-hifi-0 [rockchip-hdmi1 i2s-hifi-0]

    Subdevices: 1/1

    Subdevice #0: subdevice #0

    card 3: rockchipes8388 [rockchip,es8388], device 0: dailink-multicodecs ES8323.7-0011-0 [dailink-multicodecs ES8323.7-0011-0]

    Subdevices: 0/1

    Subdevice #0: subdevice #0

  3. Then use the aplay command to play the audio file that comes with the system. If the earphone can hear the sound, it means that the hardware can be used normally.

    orangepi@orangepi:~$ aplay -D hw:3,0 /usr/share/sounds/alsa/audio.wav

    Playing WAVE 'audio.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo

Speaker interface playback audio test

  1. First, you need to prepare a speaker as shown in the figure below. The specification of the speaker seat on the development board is 2pin 1.25mm pitch

    Plus5-img29.png

  2. The position of the speaker interface on the development board is as follows. After preparing the speaker, please insert it into the speaker interface of the development board

    Plus5-img300.png

  3. The speaker and earphone use the same sound card. Before using the speaker, please make sure that the earphone jack is not plugged into the earphone (if the earphone is plugged in, the audio will be played to the earphone). Then use the aplay command to play the audio file that comes with the system. If the speaker can hear the sound, it means that the hardware can be used normally.

    orangepi@orangepi:~$ aplay -D hw:3,0 /usr/share/sounds/alsa/audio.wav

    Playing WAVE 'audio.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo

HDMI audio playback test

  1. First use the HDMI to HDMI cable to connect the Orange Pi development board to the TV (other HDMI monitors need to ensure that they can play audio)

  2. Then check the serial number of the HDMI sound card. From the output below, you can know that the sound card of HDMI_TX1 is card 1, and the sound card of HDMI_TX2 is card 2

    orangepi@orangepi:~$ aplay -l

    **** List of PLAYBACK Hardware Devices ****

    card 0: rockchipdp0 [rockchip,dp0], device 0: rockchip,dp0 spdif-hifi-0 [rockchip,dp0 spdif-hifi-0]

    Subdevices: 1/1

    Subdevice #0: subdevice #0

    card 1: rockchiphdmi0 [rockchip-hdmi0], device 0: rockchip-hdmi0 i2s-hifi-0 [rockchip-hdmi0 i2s-hifi-0]

    Subdevices: 1/1

    Subdevice #0: subdevice #0

    card 2: rockchiphdmi1 [rockchip-hdmi1], device 0: rockchip-hdmi1 i2s-hifi-0 [rockchip-hdmi1 i2s-hifi-0]

    Subdevices: 1/1

    Subdevice #0: subdevice #0

  3. Then use the aplay command to play the audio file that comes with the system. If the HDMI monitor or TV can hear the sound, it means that the hardware can be used normally.

    1. The command to play audio to HDMI_TX1 is as follows:

      orangepi@orangepi:~$ aplay -D hw:1,0 /usr/share/sounds/alsa/audio.wav

    2. The command to play audio to HDMI_TX2 is as follows:

      orangepi@orangepi:~$ aplay -D hw:2,0 /usr/share/sounds/alsa/audio.wav

Method of using commands to test recording

  1. There is an onboard MIC on the development board, the location is as follows:

    Plus5-img301.png

  2. Running the test_record.sh main command will record a piece of audio through the onboard MIC, and then play it to HDMI_TX1 and the headset.

    orangepi@orangepi:~$ test_record.sh main

    Start recording: /tmp/test.wav

    Recording WAVE '/tmp/test.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo

    Start playing

    Playing WAVE '/tmp/test.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo

    Playing WAVE '/tmp/test.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo

  3. In addition to the onboard MIC, we can also record audio through headphones with MIC function. After inserting the headset with MIC function into the development board, run the test_record.sh headset command to record a piece of audio through the headset, and then play it to HDMI_TX1 and the headset.

    orangepi@orangepi:~$ test_record.sh headset

    Start recording: /tmp/test.wav

    Recording WAVE '/tmp/test.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo

    Start playing

    Playing WAVE '/tmp/test.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo

    Playing WAVE '/tmp/test.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo

Temperature sensor

The command to view the system temperature sensor is:

orangepi@orangepi:~$ sensors

gpu_thermal-virtual-0

Adapter: Virtual device

temp1: +47.2°C


littlecore_thermal-virtual-0

Adapter: Virtual device

temp1: +47.2°C


bigcore0_thermal-virtual-0

Adapter: Virtual device

temp1: +47.2°C


tcpm_source_psy_6_0022-i2c-6-22

Adapter: rk3x-i2c

in0: 0.00 V (min = +0.00 V, max = +0.00 V)

curr1: 0.00 A (max = +0.00 A)


npu_thermal-virtual-0

Adapter: Virtual device

temp1: +47.2°C


center_thermal-virtual-0

Adapter: Virtual device

temp1: +47.2°C


bigcore1_thermal-virtual-0

Adapter: Virtual device

temp1: +47.2°C


soc_thermal-virtual-0

Adapter: Virtual device

temp1: +47.2°C (crit = +115.0°C)

40 Pin Expansion Interface Pin Instructions

Plus5-img302.png
  1. Please refer to the figure below for the order of the 40 pin expansion interface pins on the Orange Pi 5 Plus development board:

    Plus5-img303.png

  2. The functions of the 40 pin interface pins on the Orange Pi 5 Plus development board are shown in the table below

    1. The following is the complete pin diagram of 40 pin

      Plus5-img304.png

      The following is a color map containing some of the content in the above table:

      Plus5-img305.png

    2. The table below is the picture of the left half of the complete > table above, so you can see it clearly

      Plus5-img306.png

    3. The table below is the picture of the right half of the complete > table above, so you can see it clearly

      Plus5-img307.png

      The pwm in the above table has marked the base address of the corresponding register, which is useful when checking which pwmchip in /sys/class/pwm/ corresponds to which pwm pin in the 40 pin header.

  3. There are a total of 28 GPIO ports in the 40 pin interface, and the voltage of all GPIO ports is 3.3v.

How to install wiringOP

Note that wiringOP has been pre-installed in the linux image released by Orange Pi. Unless the code of wiringOP is updated, there is no need to re-download, compile and install, just use it directly.

The storage path of the compiled wiringOP deb package in orangepi-build is:

orangepi-build/external/cache/debs/arm64/wiringpi_x.xx.deb

After entering the system, you can run the gpio readall command. If you can see the following output, it means that wiringOP has been pre-installed and can be used normally.

Plus5-img308.png

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.

  1. Download the code of wiringOP

    orangepi@orangepi:~$ sudo apt update

    orangepi@orangepi:~$ sudo apt install -y git

    orangepi@orangepi:~$ git clone https://github.com/orangepi-xunlong/wiringOP.git -b next

    Note that Orange Pi 5 Plus needs to download the code of the wiringOP next branch, please don't miss the -b next parameter.

    If you have problems downloading the code from GitHub, you can directly use the wiringOP source code that comes with the Linux image, and the storage location is: /usr/src/wiringOP

  2. Compile and install wiringOP

    orangepi@orangepi:~$ cd wiringOP

    orangepi@orangepi:~/wiringOP$ sudo ./build clean

    orangepi@orangepi:~/wiringOP$ sudo ./build

  3. Test the output of the gpio readall command as follows

    Plus5-img308.png

40 pin interface GPIO, I2C, UART, SPI, CAN and PWM test

40 pin GPIO port test

The linux system released by Orange Pi has a pre-installed blink_all_gpio program, which will set all 28 GPIO ports in the 40 pins to switch between high and low levels continuously.

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 switch between 0 and 3.3v continuously. Using this program we can test whether the GPIO port is working properly.

The way to run the blink_all_gpio program is as follows:

orangepi@orangepi5plus:~$ sudo blink_all_gpio       #Remember to add sudo permission

[sudo] password for orangepi:                               #A password is required here

  1. There are a total of 28 GPIO ports in the 40 pins of the development board that can be used. The following uses pin 7—the corresponding GPIO is GPIO1_D6——the corresponding wPi number is 2—as an example to demonstrate how to set the high and low levels of the GPIO port

    Plus5-img309.png

  2. First set the GPIO port to output mode, where the third parameter needs to input the serial number of wPi corresponding to the pin

    root@orangepi:~/wiringOP# gpio mode 2 out

  3. Then set the GPIO port to output a 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.

    root@orangepi:~/wiringOP# gpio write 2 0

    Use gpio readall to see that the value (V) of pin 7 has changed to 0

    Plus5-img310.png

  4. Then set the GPIO port to output a high level. After setting, you can use a multimeter to measure the voltage value of the pin. If it is 3.3v, it means that the high level is set successfully.

    root@orangepi:~/wiringOP# gpio write 2 1

    Use gpio readall to see that the value (V) of pin 7 has changed to 1

    Plus5-img311.png

  5. The setting method of other pins is similar, just modify the serial number of wPi to the corresponding serial number of the pin

How to set the pull-down resistance of pin GPIO port

  1. The following takes pin No. 7—the corresponding GPIO is GPIO1_D6—the corresponding wPi number is 2—as an example to demonstrate how to set the pull-up and pull-down resistance of the GPIO port

    Plus5-img311.png

  2. First, you need to set the GPIO port to the input mode, and the third parameter needs to be the serial number of the wPi corresponding to the input pin

    root@orangepi:~/wiringOP# gpio mode 2 in

  3. After setting to input mode, execute the following command to set the GPIO port to pull-up mode

    root@orangepi:~/wiringOP# gpio mode 2 up

  4. Then enter the following command to read the level of the GPIO port, if the level is 1, it means that the pull-up mode is set successfully

    root@orangepi:~/wiringOP# gpio read 2

    1

  5. Then execute the following command to set the GPIO port to pull-down mode

    root@orangepi:~/wiringOP# gpio mode 2 down

  6. Then enter the following command to read the level of the GPIO port, if the level is 0, the pull-down mode is set successfully

    root@orangepi:~/wiringOP# gpio read 2

    0

40 pin SPI test

  1. As can be seen from the figure below, the SPIs available for Orange Pi 5 Plus are SPI0 and SPI4

    Plus5-img304.png

  2. The corresponding pins of SPI0 and SPI4 in 40pin are shown in the table below. SPI4_M1 and SPI4_M2 can only use one of them at the same time, and they cannot be used at the same time. They are all the same SPI4, but they are connected to different pins. Please don't think that they are two different sets of SPI buses.

  3. SPI0_M2 corresponds to 40pin SPI4_M1 corresponds to 40pin SPI4_M2 corresponds to 40pin
    MOSI Pin 19 Pin 12 Pin 8
    MISO Pin 21 Pin 31 Pin 10
    CLK Pin 23 Pin 35 Pin 22
    CS0 Pin 24 Pin 40 Pin 31
    CS1 Pin 26 Pin 38 none
    dtbo configuration spi0-m2-cs0-spidev

    spi0-m2-cs1-spidev

    spi0-m2 -cs0-cs1-spidev

    spi4-m1-cs0-spidev

    spi4-m1-cs1-spidev

    spi4-m1 -cs0-cs1-spidev

    spi4-m2-cs0-spidev
  1. 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:

    1. First run orangepi-config, normal users remember to add sudo permission

      orangepi@orangepi:~$ sudo orangepi-config

    2. Then select System

      Plus5-img234.png

    3. Then select Hardware

      Plus5-img235.png

    4. 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

      Plus5-img312.png

    5. Then select <Save> to save

      Plus5-img263.png

    6. Then select <Back>

      Plus5-img264.png

    7. Then select <Reboot> to restart the system to make the configuration take effect

      Plus5-img239.png

  2. After restarting, enter the system and first check whether there is a spidevx.x device node in the linux system. If it exists, it means that the SPI has been set up and can be used directly.

    orangepi@orangepi:~$ ls /dev/spidev*

    /dev/spidev0.0 /dev/spidev0.1 /dev/spidev4.0 /dev/spidev4.1

    The above is the result displayed after turning on spi0-m2-cs0-cs1-spidev and spi4-m1-cs0-cs1-spidev.

  3. Then do not short-circuit the MOSI and MISO pins of SPI0 or SPI4, the output result of running spidev_test is as follows, you can see that the data of TX and RX are inconsistent

    orangepi@orangepi:~$ sudo spidev_test -v -D /dev/spidev4.0

    or

    orangepi@orangepi:~$ sudo spidev_test -v -D /dev/spidev0.0

    spi mode: 0x0

    bits per word: 8

    max speed: 500000 Hz (500 KHz)

    TX | FF FF FF FF FF FF 40 00 00 00 00 95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D | ......@.…▒..................▒.

    RX | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ............................….

  4. Then short-circuit the MOSI and MISO pins of SPI0 or SPI4, and then run the output of spidev_test as follows. You can see that the sent and received data are the same, indicating that the SPI loopback test is normal.

    orangepi@orangepi:~$ sudo spidev_test -v -D /dev/spidev4.0

    or

    orangepi@orangepi:~$ sudo spidev_test -v -D /dev/spidev0.0

    spi mode: 0x0

    bits per word: 8

    max speed: 500000 Hz (500 KHz)

    TX | FF FF FF FF FF FF 40 00 00 00 00 95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D | ......@.…▒..................▒.

    RX | FF FF FF FF FF FF 40 00 00 00 00 95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D | ......@.…▒..................▒.

40 pin I2C test

  1. As can be seen from the table below, the available i2c for Orange Pi 5 Plus is i2c2, i2c4, i2c5 and i2c8, a total of four sets of i2c buses.

    Plus5-img304.png

  2. The corresponding pins of the 4 groups of I2C buses in 40pin are shown in the table below. I2C2_M0 and I2C2_M4 can only use one of them at the same time, and they cannot be used at the same time. They are all the same I2C2, but they are connected to different pins. Please don’t think that they are two different sets of I2C2 buses.

  3. I2C bus SDA corresponds to 40pin SCL corresponds to 40pin dtbo corresponding configuration
    I2C2_M0 Pin 3 Pin 5 i2c2-m0
    I2C2_M4 Pin 10 Pin 8 i2c2-m4
    I2C4_M3 Pin 22 Pin 32 i2c4-m3
    I2C5_M3 Pin 27 Pin 28 i2c5-m3
    I2C8_M2 Pin 29 Pin 7 i2c8-m2
  1. 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:

    1. First run orangepi-config, normal users remember to add sudo permission

      orangepi@orangepi:~$ sudo orangepi-config

    2. Then select System

      Plus5-img234.png

    3. Then select Hardware

      Plus5-img235.png

    4. 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

      Plus5-img313.png

    5. Then select <Save> to save

      Plus5-img263.png

    6. Then select <Back>

      Plus5-img264.png

    7. Then select <Reboot> to restart the system to make the configuration take effect

      Plus5-img239.png

  2. After starting the linux system, first confirm that there are device nodes that need to use I2C under /dev

    orangepi@orangepi:~$ ls /dev/i2c-*

  3. Then connect an I2C device to the I2C pin corresponding to the 40 pin interface

  4. Then use the i2cdetect -y command, if the address of the connected i2c device can be detected, it means that i2c can be used normally

    orangepi@orangepi:~$ sudo i2cdetect -y 2 #i2c2 command

    orangepi@orangepi:~$ sudo i2cdetect -y 4 #i2c4 command

    orangepi@orangepi:~$ sudo i2cdetect -y 5 #i2c8 command

    orangepi@orangepi:~$ sudo i2cdetect -y 8 #i2c8 command

    Plus5-img314.png

40 pin UART test

  1. As can be seen from the table below, the uarts available for Orange Pi 5 Plus are uart1, uart3, uart4, uart6, uart7 and uart8, a total of 6 sets of uart buses

    Plus5-img304.png

  2. The corresponding pins of the 6 groups of UART buses in 40pin are shown in the following table:

  3. UART bus RX corresponds to 40pin TX corresponds to 40pin dtbo corresponding configuration
    UART1_M1 Pin 27 Pin 28 uart1-m1
    UART3_M1 Pin 18 Pin 16 uart3-m1
    UART4_M2 Pin 19 Pin 23 uart4-m2
    UART6_M1 Pin 10 Pin 8 uart6-m1
    UART7_M2 Pin 24 Pin 26 uart7-m2
    UART8_M1 Pin 40 Pin 35 uart8-m1
  1. In the linux system, the UART in the 40 pin is closed by default, and it needs to be opened manually to use it. The detailed steps are as follows:

    1. First run orangepi-config, normal users remember to add sudo permission

      orangepi@orangepi:~$ sudo orangepi-config

    2. Then select System

      Plus5-img234.png

    3. Then select Hardware

      Plus5-img235.png

    4. 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

      Plus5-img315.png

    5. Then select <Save> to save

      Plus5-img263.png

    6. Then select <Back>

      Plus5-img264.png

    7. Then select <Reboot> to restart the system to make the configuration take effect

      Plus5-img239.png

  2. After entering the linux system, first confirm whether there is a device node corresponding to uart under /dev

    orangepi@orangepi:~$ ls /dev/ttyS*

  3. Then start to test the uart interface, first use the DuPont line to short the rx and tx pins of the uart interface to be tested

  4. Use the gpio serial command to test the loopback function of the serial port as shown below. If you can see the following print, it means that the serial port communication is normal (ttySX needs to be replaced with the node name corresponding to uart, please do not copy it)

    orangepi@orangepi:~$ sudo gpio serial /dev/ttySX

    [sudo] password for orangepi: #enter password here

    Out: 0: -> 0

    Out: 1: -> 1

    Out: 2: -> 2

    Out: 3: -> 3

    Out: 4: -> 4

    Out: 5: -> 5^C

PWM test method

  1. As can be seen from the table below, the available PWM for Orange Pi 5 Plus includes six channels of PWM: pwm0, pwm1, pwm11, pwm12, pwm13 and pwm14

    Plus5-img304.png

  2. The corresponding pins of PWM in 40pin are shown in the table below. Only one of PWM0_M0 and PWM0_M2, PWM1_M0 and PWM1_M2, PWM14_M0 and PWM14_M2 can be used at the same time, and they cannot be used at the same time. They are all the same PWM, but they are connected to different pins. Please don’t think that they are two different PWM bus.

  3. PWM总线 Corresponding to 40pin dtbo corresponding configuration
    PWM0_M0 Pin 5 pwm0-m0
    PWM0_M2 Pin 22 pwm0-m2
    PWM1_M0 Pin 3 pwm1-m0
    PWM1_M2 Pin 32 pwm1-m2
    PWM11_M0 Pin 12 pwm11-m0
    PWM12_M0 Pin 14 pwm12-m0
    PWM13_M0 Pin 16 pwm13-m0
    PWM14_M0 Pin 33 pwm14-m0
    PWM14_M2 Pin 7 pwm14-m0
  1. 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:

    1. First run orangepi-config, normal users remember to add sudo permission

      orangepi@orangepi:~$ sudo orangepi-config

    2. Then select System

      Plus5-img234.png

    3. Then select Hardware

      Plus5-img235.png

    4. 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

      Plus5-img316.png

    5. Then select <Save> to save

      Plus5-img263.png

    6. Then select <Back>

      Plus5-img264.png

    7. Then select <Reboot> to restart the system to make the configuration take effect

      Plus5-img239.png

  2. After opening a pwm, there will be an extra pwmchipX in /sys/class/pwm/ (X is a specific number), for example, after opening pwm14, check the pwmchipX under /sys/class/pwm/ two became three

    orangepi@orangepi:~$ ls /sys/class/pwm/

    pwmchip0 pwmchip1 pwmchip2

  3. Which pwmchip above corresponds to pwm14? Let’s check the output of the ls /sys/class/pwm/ -l command first, as shown below:

    Plus5-img317.png

  4. Then it can be known from the table below that the base address of the pwm14 register is febf0020, and then look at the output of the ls /sys/class/pwm/ -l command, you can see that pwmchip2 is linked to febf0020.pwm, so pwm14 corresponds to pwmchip as pwmchip2

    Plus5-img318.png

  5. Then use the following command to make pwm14 output a 50Hz square wave (please switch to the root user first, and then execute the following command)

  6. root@orangepi:~# echo 0 > /sys/class/pwm/pwmchip2/export

    root@orangepi:~# echo 20000000 > /sys/class/pwm/pwmchip2/pwm0/period

    root@orangepi:~# echo 1000000 > /sys/class/pwm/pwmchip2/pwm0/duty_cycle

    root@orangepi:~# echo 1 > /sys/class/pwm/pwmchip2/pwm0/enable

    Plus5-img319.png

  1. The test method of pwm14 demonstrated above is similar to other pwm test methods.

CAN test method

How to open CAN

  1. As can be seen from the table below, the available CAN bus for Orange Pi 5 Plus is CAN0 and CAN1, a total of two CAN buses

    Plus5-img320.png

  2. In the linux system, the CAN 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:

    1. First run orangepi-config, normal users remember to add > sudo permission

      orangepi@orangepi:~$ sudo orangepi-config

    2. Then select System

      Plus5-img234.png

    3. Then select Hardware

      Plus5-img235.png

    4. 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 CAN configuration you want to open (can0-m0 and > cam1-m0 are optional for OPi 5 Plus)

      Plus5-img321.png

    5. Then select <Save> to save

      Plus5-img63.png

    6. Then select <Back>

      Plus5-img264.png

    7. Then select <Reboot> to restart the system to make the > configuration take effect

      Plus5-img239.png

  3. After entering the Linux system, use the sudo ifconfig -a command, if you can see the CAN device node, it means that the CAN has been opened correctly

    orangepi@orangepi:~$ sudo ifconfig -a

    can0: flags=128<NOARP> mtu 16

    unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 10 (UNSPEC)

    RX packets 0 bytes 0 (0.0 B)

    RX errors 0 dropped 0 overruns 0 frame 0

    TX packets 0 bytes 0 (0.0 B)

    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

    device interrupt 94

    can1: flags=128<NOARP> mtu 16

    unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 10 (UNSPEC)

    RX packets 0 bytes 0 (0.0 B)

    RX errors 0 dropped 0 overruns 0 frame 0

    TX packets 0 bytes 0 (0.0 B)

    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

    device interrupt 95

  4. The corresponding pins of CAN0 and CAN1 are

  5. CAN0 CAN1
    TX pin Corresponding to pin 5 of 40pin Corresponding to pin 18 of 40pin
    RX pin Corresponding to pin 3 of 40pin Corresponding to pin 16 of 40pin

Use the CANalyst-II analyzer to test sending and receiving messages

  1. The CANalyst-II analyzer used in the test is shown in the figure below

    Plus5-img322.png

  2. CANalyst-II analyzer data download link

    https://www.zhcxgd.com/3.html

  3. First install the software USBCANToolSetup

    Plus5-img323.png

  4. The shortcut after installation of USBCANToolSetup is

    Plus5-img324.png

  5. In addition, you need to install the USB driver

    Plus5-img325.png

  6. The end of the USB interface of the CANalyst-II analyzer needs to be connected to the USB interface of the computer

    Plus5-img326.png

  7. To test the CAN function, you need to prepare a CAN transceiver as shown in the figure below. The main function of the CAN transceiver is to convert the TTL signal of the CAN controller into the differential signal of the CAN bus

    1. The 3.3V pin of the CAN transceiver needs to be connected to the 3.3V pin in the 40 pins of the development board

    2. The GND pin of the CAN transceiver needs to be connected to the GND pin in the 40 pin of the development board

    3. The CAN TX pin of the CAN transceiver needs to be connected to the TX pin of the CAN bus in the 40 pin of the development board

    4. The CAN RX pin of the CAN transceiver needs to be connected to the RX pin of the CAN bus in the 40 pin of the development board

    5. The CANL pin of the CAN transceiver needs to be connected to the H interface of the analyzer

    6. The CANL pin of the CAN transceiver needs to be connected to the L interface of the analyzer

      Plus5-img327.png

  8. Then you can open the USB-CAN software

    Plus5-img328.png

  9. Then click to start the device

    Plus5-img329.png

  10. Then click OK

    Plus5-img330.png

  11. Set the baud rate to 1000k bps

    Plus5-img331.png

  12. After successful opening, the USB-CAN software will display the serial number and other information

    Plus5-img332.png

  13. Development board receives CAN message test

    1. a. First set the baud rate of the CAN bus to 1000kbps in the Linux system of the development board

      orangepi@orangepi:~$ sudo ip link set can0 down

      orangepi@orangepi:~$ sudo ip link set can0 type can bitrate 1000000

      orangepi@orangepi:~$ sudo ip link set can0 up

    2. Then run the candump can0 command to prepare to receive messages

      orangepi@orangepi:~$ sudo candump can0

    3. Then send a message to the development board in the USB-CAN software

      Plus5-img333.png

    4. If the message sent by the analyzer can be received in the development board, it means that the CAN bus can be used normally

      orangepi@orangepi5plus:~$ sudo candump can0

           can0      001      [8]      01 02 03 04 05 06 07 08

  14. Development board sends CAN message test

    1. First set the CAN baud rate to 1000kbps in the Linux system

      orangepi@orangepi:~$ sudo ip link set can0 down

      orangepi@orangepi:~$ sudo ip link set can0 type can bitrate 1000000

      orangepi@orangepi:~$ sudo ip link set can0 up

    2. Execute the cansend command on the development board and send a message

      orangepi@orangepi:~$ sudo cansend can0 123#1122334455667788

    3. If the USB-CAN software can receive the message from the development board, the communication is successful

      Plus5-img334.png

How to install and use wiringOP-Python

wiringOP-Python is the Python language version of wiringOP, which is used to operate the hardware resources of the development board, such as GPIO, I2C, SPI and UART, in the Python program.

In addition, please note that all the following commands are operated under the root user.

How to install wiringOP-Python

  1. First install the dependency package

    root@orangepi:~# sudo apt-get update

    root@orangepi:~# sudo apt-get -y install git swig python3-dev python3-setuptools

  2. Then use the following command to download the source code of wiringOP-Python

    Note that the following git clone --recursive 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 errors due to network problems.

    If you have problems downloading the code from GitHub, you can directly use the wiringOP-Python source code that comes with the Linux image, and the storage location is: /usr/src/wiringOP-Python.

    root@orangepi:~# git clone --recursive https://github.com/orangepi-xunlong/wiringOP-Python -b next

    root@orangepi:~# cd wiringOP-Python

    root@orangepi:~/wiringOP-Python# git submodule update --init --remote

  3. Then use the following command to compile wiringOP-Python and install it into the Linux system of the development board

    root@orangepi:~# cd wiringOP-Python

    root@orangepi:~/wiringOP-Python# python3 generate-bindings.py > bindings.i

    root@orangepi:~/wiringOP-Python# sudo python3 setup.py install

  4. Then enter the following command, if there is help information output, it means that wiringOP-Python is installed successfully, press the q key to exit the help information interface

  5. root@orangepi:~/wiringOP-Python# python3 -c "import wiringpi; help(wiringpi)"

    Help on module wiringpi:


    NAME

    wiringpi


    DESCRIPTION


    # This file was automatically generated by SWIG (http://www.swig.org).
    # Version 4.0.2
    #
    # Do not make changes to this file unless you know what you are doing--modify
    # the SWIG interface file instead.
  1. The steps to test whether wiringOP-Python is successfully installed under the python command line are as follows:

    1. First use the python3 command to enter the command line mode of python3
    2. root@orangepi:~# python3

    1. Then import the python module of wiringpi
    2. >>> import wiringpi;

    1. Finally, enter the following command to view the help information of wiringOP-Python, and press the q key to exit the help information interface
    2. >>> help(wiringpi)

      Help on module wiringpi:


      NAME

      wiringpi


      DESCRIPTION

      # This file was automatically generated by SWIG (http://www.swig.org).
      # Version 4.0.2
      #
      # Do not make changes to this file unless you know what you are doing--modify
      # the SWIG interface file instead.


      CLASSES

      builtins.object
      GPIO
      I2C
      Serial
      nes


      class GPIO(builtins.object)
      | GPIO(pinmode=0)
      |


      >>>

40 pin GPIO port test

wiringOP-Python is the same as wiringOP, you can also determine which GPIO pin to operate by specifying the wPi number, because there is no command to check the wPi number in wiringOP-Python, so you can only check the board wPi number and physical Correspondence between pins.

Plus5-img308.png

  1. The following takes pin No. 7—the corresponding GPIO is GPIO1_D6—the corresponding wPi number is 2—as an example to demonstrate how to set the high and low levels of the GPIO port

    Plus5-img309.png

  2. The steps to test directly with the command are as follows:

    1. First set the GPIO port to output mode, where the first > parameter of the pinMode function is the serial number of > the wPi corresponding to the pin, and the second parameter is > the GPIO mode

      root@orangepi:~/wiringOP-Python# python3 -c "import wiringpi; \

      from wiringpi import GPIO; wiringpi.wiringPiSetup() ; \

      wiringpi.pinMode(2, GPIO.OUTPUT) ; "

    2. Then set the GPIO port to output a 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.

      root@orangepi:~/wiringOP-Python# python3 -c "import wiringpi; \

      from wiringpi import GPIO; wiringpi.wiringPiSetup() ;\

      wiringpi.digitalWrite(2, GPIO.LOW)"

    3. Then set the GPIO port to output a high level. After setting, > you can use a multimeter to measure the voltage value of the > pin. If it is 3.3v, it means that the high level is set > successfully.

      root@orangepi:~/wiringOP-Python# python3 -c "import wiringpi; \

      from wiringpi import GPIO; wiringpi.wiringPiSetup() ;\

      wiringpi.digitalWrite(2, GPIO.HIGH)"

  3. The steps to test in the command line of python3 are as follows:

    1. First use the python3 command to enter the command line mode of > python3

      root@orangepi:~# python3

    2. Then import the python module of wiringpi

      >>> import wiringpi

      >>> from wiringpi import GPIO

    3. Then set the GPIO port to output mode, where the first parameter > of the pinMode function is the serial number of the wPi > corresponding to the pin, and the second parameter is the GPIO > mode

      >>> wiringpi.wiringPiSetup()

      0

      >>> wiringpi.pinMode(2, GPIO.OUTPUT)

    4. Then set the GPIO port to output 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.

      >>> wiringpi.digitalWrite(2, GPIO.LOW)

    5. Then set the GPIO port to output a high level. After setting, > you can use a multimeter to measure the voltage value of the > pin. If it is 3.3v, it means that the high level is set > successfully.

      >>> wiringpi.digitalWrite(2, GPIO.HIGH)

  4. The method of wiringOP-Python setting GPIO high and low levels in python code can refer to the blink.py test program in the examples below. The blink.py test program will set the voltage of all GPIO ports in the 40 pins of the development board to change continuously.

    root@orangepi:~/wiringOP-Python# cd examples

    root@orangepi:~/wiringOP-Python/examples# ls blink.py

    blink.py

    root@orangepi:~/wiringOP-Python/examples# python3 blink.py

40 pin SPI test

  1. As can be seen from the figure below, the SPIs available for Orange Pi 5 Plus are SPI0 and SPI4

    Plus5-img304.png

  2. The corresponding pins of SPI0 and SPI4 in 40pin are shown in the table below. SPI4_M1 and SPI4_M2 can only use one of them at the same time, and they cannot be used at the same time. They are all the same SPI4, but they are connected to different pins. Please don't think that they are two different sets of SPI buses.

  3. SPI0_M2 corresponds to 40pin SPI4_M1 corresponds to 40pin SPI4_M2 corresponds to 40pin
    MOSI Pin 19 Pin 12 Pin 8
    MISO Pin 21 Pin 31 Pin 10
    CLK Pin 23 Pin 35 Pin 22
    CS0 Pin 24 Pin 40 Pin 31
    CS1 Pin 26 Pin 38 none
    dtbo configuration spi0-m2-cs0-spidev

    spi0-m2-cs1-spidev

    spi0-m2-cs0-cs1-spidev

    spi4-m1-cs0-spidev

    spi4-m1-cs1-spidev

    spi4-m1-cs0-cs1-spidev

    spi4-m2-cs0-spidev
  1. 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:

    1. First run orangepi-config, normal users remember to add > sudo permission

      orangepi@orangepi:~$ sudo orangepi-config

    2. Then select System

      Plus5-img234.png

    3. Then select Hardware

      Plus5-img235.png

    4. 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

      Plus5-img312.png

    5. Then select <Save> to save

      Plus5-img263.png

    6. Then select <Back>

      Plus5-img264.png

    7. Then select <Reboot> to restart the system to make the > configuration take effect

      Plus5-img239.png

  2. After restarting, enter the system and first check whether there is a spidevx.x device node in the linux system. If it exists, it means that the SPI has been set up and can be used directly.

    orangepi@orangepi:~$ ls /dev/spidev*

    /dev/spidev0.0 /dev/spidev0.1 /dev/spidev4.0 /dev/spidev4.1

    The above is the result displayed after turning on spi0-m2-cs0-cs1-spidev and spi4-m1-cs0-cs1-spidev.

  3. Then you can use the spidev_test.py program in the examples to test the loopback function of the SPI. The spidev_test.py program needs to specify the following two parameters:

    1. --channel: Specify the channel number of SPI

    2. --port: specify the port number of SPI

  4. Do not short-circuit the MOSI and MISO pins of the SPI, the output of running spidev_test.py is as follows, you can see that the data of TX and RX are inconsistent

    The x after the --channel and --port parameters needs to be replaced with the channel number of the specific SPI and the port number of the SPI.

    root@orangepi:~/wiringOP-Python# cd examples

    root@orangepi:~/wiringOP-Python/examples# python3 spidev_test.py --channel x --port x

    spi mode: 0x0

    max speed: 500000 Hz (500 KHz)

    Opening device /dev/spidev4.1

    TX | FF FF FF FF FF FF 40 00 00 00 00 95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D |......@.......…|

    RX | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF |.............….|

  1. Then use the Dupont wire to short-circuit the MOSI and MISO pins of the SPI, and then run the output of spidev_test.py as follows, you can see that the data sent and received are the same, indicating that the SPI loopback test is normal

    The x after the --channel and --port parameters needs to be replaced with the channel number of the specific SPI and the port number of the SPI.

    root@orangepi:~/wiringOP-Python# cd examples

    root@orangepi:~/wiringOP-Python/examples# python3 spidev_test.py --channel x --port x

    spi mode: 0x0

    max speed: 500000 Hz (500 KHz)

    Opening device /dev/spidev4.1

    TX | FF FF FF FF FF FF 40 00 00 00 00 95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D |......@.......…|

    RX | FF FF FF FF FF FF 40 00 00 00 00 95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D |......@.......…|

40 pin I2C test

  1. As can be seen from the table below, the available i2c for Orange Pi 5 Plus is i2c2, i2c4, i2c5 and i2c8, a total of four sets of i2c buses.

    Plus5-img304.png

  2. The corresponding pins of the 4 groups of I2C buses in 40pin are shown in the table below. I2C2_M0 and I2C2_M4 can only use one of them at the same time, and they cannot be used at the same time. They are all the same I2C2, but they are connected to different pins. Please don’t think that they are two different sets of I2C2 buses.

  3. I2C bus SDA corresponds to 40pin SCL corresponds to 40pin dtbo corresponding configuration
    I2C2_M0 Pin 3 Pin 5 i2c2-m0
    I2C2_M4 Pin 10 Pin 8 i2c2-m4
    I2C4_M3 Pin 22 Pin 32 i2c4-m3
    I2C5_M3 Pin 27 Pin 28 i2c5-m3
    I2C8_M2 Pin 29 Pin 7 i2c8-m2
  1. In the linux system, the I2C bus 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:

    1. First run orangepi-config, normal users remember to add > sudo permission

      orangepi@orangepi:~$ sudo orangepi-config

    2. Then select System

      Plus5-img234.png

    3. Then select Hardware

      Plus5-img235.png

    4. 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

      Plus5-img313.png

    5. Then select <Save> to save

      Plus5-img263.png

    6. Then select <Back>

      Plus5-img264.png

    7. Then select <Reboot> to restart the system to make the > configuration take effect

      Plus5-img239.png

  2. After starting the linux system, first confirm that there is a device node corresponding to i2c under /dev

    orangepi@orangepi:~$ ls /dev/i2c-*

  3. Then connect an i2c device to the i2c pin of the 40 pin connector, here we take the ds1307 RTC module as an example

    Plus5-img335.png

  4. Then use the i2cdetect -y command, if the address of the connected i2c device can be detected, it means that i2c can be recognized normally.

    orangepi@orangepi:~$ sudo i2cdetect -y 2 #i2c2 command

    orangepi@orangepi:~$ sudo i2cdetect -y 4 #i2c4 command

    orangepi@orangepi:~$ sudo i2cdetect -y 5 #i2c5 command

    orangepi@orangepi:~$ sudo i2cdetect -y 8 #i2c8 command

  5. Then you can run the ds1307.py test program in the wiringOP-Python/examples file to read the time of RTC

    /dev/i2c-x needs to be replaced with the serial number of the specific i2c device node.

    root@orangepi:~/wiringOP-Python# cd examples

    root@orangepi:~/wiringOP-Python/examples# python3 ds1307.py --device "/dev/i2c-x"

    Thu 2023-01-05 14:57:55

    Thu 2023-01-05 14:57:56

    Thu 2023-01-05 14:57:57

    ^C

    exit

40 pin UART test

  1. As can be seen from the table below, the uarts available for Orange Pi 5 Plus are uart1, uart3, uart4, uart6, uart7 and uart8, a total of 6 sets of uart buses

    Plus5-img304.png

  2. The corresponding pins of the 6 groups of UART buses in 40pin are shown in the following table:

  3. UART bus RX` corresponds to 40pin TX corresponds to 40pin dtbo corresponding configuration
    UART1_M1 Pin 27 Pin 28 uart1-m1
    UART3_M1 Pin 18 Pin 16 uart3-m1
    UART4_M2 Pin 19 Pin 23 uart4-m2
    UART6_M1 Pin 10 Pin 8 uart6-m1
    UART7_M2 Pin 24 Pin 26 uart7-m2
    UART8_M1 Pin 40 Pin 35 uart8-m1
  1. In the linux system, the UART in the 40 pins is closed by default, and it needs to be opened manually before it can be used. The detailed steps are as follows:

    1. First run orangepi-config, normal users remember to add sudo permission

      orangepi@orangepi:~$ sudo orangepi-config

    2. Then select System

      Plus5-img234.png

    3. Then select Hardware

      Plus5-img235.png

    4. 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

      Plus5-img315.png

    5. Then select <Save> to save

      Plus5-img263.png

    6. Then select <Back>

      Plus5-img264.png

    7. Then select <Reboot> to restart the system to make the configuration take effect

      Plus5-img239.png

  2. After entering the linux system, first confirm whether there is a device node corresponding to uart under /dev

    orangepi@orangepi:~$ ls /dev/ttyS*

  3. Then start to test the uart interface, first use the DuPont line to short the rx and tx pins of the uart interface to be tested

  4. Then use the serialTest.py program in wiringOP-Python/examples to test the loopback function of the serial port. As shown below, if you can see the print below, it means the serial port communication is normal.

    /dev/ttySX needs to be replaced with the serial number of the specific uart device node.

    root@orangepi:~/wiringOP-Python/examples# python3 serialTest.py --device "/dev/ttySX"

    Out: 0: -> 0

    Out: 1: -> 1

    Out: 2: -> 2

    Out: 3: -> 3

    Out: 4:^C

    exit

Hardware watchdog test

The watchdog_test program is pre-installed in the linux system released by Orange Pi, which can be tested directly.

The method to run the watchdog_test program is as follows:

  1. The second parameter 10 indicates the counting time of the watchdog. If the dog is not fed within this time, the system will restart

  2. We can feed the dog by pressing any key on the keyboard (except ESC). After feeding the dog, the program will print a line of keep alive to indicate that the dog is fed successfully

    orangepi@orangepi:~$ sudo watchdog_test 10

    open success

    options is 33152,identity is sunxi-wdt

    put_usr return,if 0,success:0

    The old reset time is: 16

    return ENOTTY,if -1,success:0

    return ENOTTY,if -1,success:0

    put_user return,if 0,success:0

    put_usr return,if 0,success:0

    keep alive

    keep alive

    keep alive

Check the serial number of RK3588 chip

The command to view the serial number of the RK3588 chip is as follows. The serial number of each chip is different, so the serial number can be used to distinguish multiple development boards.

orangepi@orangepi:~$ cat_serial.sh

Serial : 1404a7682e86830c

How to install Docker

  1. The linux image provided by Orange Pi has pre-installed Docker, but the Docker service is not enabled by default

  2. Use the enable_docker.sh script to enable the docker service, and then you can start using the docker command, and the docker service will be automatically started when the system is started next time

    orangepi@orangepi:~$ enable_docker.sh

  3. Then you can use the following command to test docker, if you can run hello-world, it means that docker can be used normally

    orangepi@orangepi:~$ docker run hello-world

    Unable to find image 'hello-world:latest' locally

    latest: Pulling from library/hello-world

    256ab8fe8778: Pull complete

    Digest: sha256:7f0a9f93b4aa3022c3a4c147a449ef11e0941a1fd0bf4a8e6c9408b2600777c5

    Status: Downloaded newer image for hello-world:latest


    Hello from Docker!

    This message shows that your installation appears to be working correctly.

    .….

How to download and install arm64 version balenaEtcher

  1. The download address of balenaEtcher arm64 version is:

    1. The download address of the a.deb installation package is as follows, it needs to be installed before it can be used

      https://github.com/Itai-Nelken/BalenaEtcher-arm/releases/download/v1.7.9/balena-etcher-electron_1.7.9+5945ab1f_arm64.deb

    2. The download address of the AppImage version that does not need to be installed is as follows: b. The download address of the AppImage version that does not need to be installed is as follows:

      https://github.com/Itai-Nelken/BalenaEtcher-arm/releases/download/v1.7.9/balenaEtcher-1.7.9+5945ab1f-arm64.AppImage

    3. Plus5-img336.png

  1. How to install and use deb version balenaEtcher:

    1. The deb version of balenaEtcher installation command is as follows:

      orangepi@orangepi:~$ sudo apt install -y \

      --fix-broken ./balena-etcher-electron_1.7.9+5945ab1f_arm64.deb

    2. After the deb version of balenaEtcher is installed, it can be opened in the Application

      Plus5-img95.png

    3. The interface after balenaEtcher is opened is as follows:

    4. Plus5-img337.png

  1. How to use the AppImage version of balenaEtcher:

    1. First add permissions to balenaEtcher

      orangepi@orangepi:~/Desktop$ chmod +x balenaEtcher-1.7.9+5945ab1f-arm64.AppImage

    2. Then select the AppImage version balenaEtcher, click the right mouse button, and then click Execute to open balenaEtcher

      Plus5-img338.png

The installation method of the pagoda linux panel

Pagoda Linux panel is a server management software that improves operation and maintenance efficiency. It supports more than 100 server management functions such as one -click LAMP/LNMP/cluster/monitoring/website/FTP/database/Java (extracted from the official website of the pagoda)

  1. The order of compatibility recommendation of the pagoda Linux system is

    Debian11 > Ubuntu 22.04 > Debian12

  2. Then enter the following command in the Linux system to start the installation of the pagoda

    orangepi@orangepi:~$ sudo install_bt_panel.sh

  3. Then the pagoda installation program reminds whether to install the BT-Panel to the /www folder, and enter Y at this time

    +----------------------------------------------------------------------

    | Bt-WebPanel FOR CentOS/Ubuntu/Debian

    +----------------------------------------------------------------------

    | Copyright © 2015-2099 BT-SOFT(http://www.bt.cn) All rights reserved.

    +----------------------------------------------------------------------

    | The WebPanel URL will be http://SERVER_IP:8888 when installed.

    +----------------------------------------------------------------------


    Do you want to install Bt-Panel to the /www directory now?(y/n): y

  4. Then what to do is 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 9 minutes. There may be some differences according to the difference in network speed

    Plus5-img339.png

  5. 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 above in the corresponding position to log in to the pagoda.

    Plus5-img340.png

  6. After successfully logging in to the pagoda, the following welcome interface will pop up. First, please take the intermediate user notice to read to the bottom, and then you can choose "I have agreed and read" User Agreement ", and then click" Enter the panel " You can enter the pagoda

    Plus5-img341.png

  7. After entering the pagoda, you will first prompt that you need to bind the account of the pagoda official website. If you do n’t have an account, you can go to the official website of the pagoda (https://www.bt.cn) to register one

    Plus5-img342.png

  8. 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 status, CPU usage, memory usage, and storage space usage

    Plus5-img343.png

  9. Test the SSH terminal login of the pagoda

    1. After opening the SSH terminal of the pagoda, you will first prompt that you need to enter the password of the development board system. At this time, enter orangepi in the password box (the default password, if you have modification, please fill in the modified one).

      Plus5-img344.png

    2. The display after successful login is shown in the figure below

      Plus5-img345.png

  10. Software such as Apache, MySQL, and PHP can be installed in the software store of the pagoda. You can also deploy various applications in one click. Please explore it yourself

    Plus5-img346.png

  11. Pagoda command line tool test

    Plus5-img347.png

  12. For more functions of the pagoda, please refer to the following information to explore by yourself

    manual:http://docs.bt.cn

    Forum address:https://www.bt.cn/bbs

    GitHub Link:https://github.com/aaPanel/BaoTa

Set the Chinese environment and install Chinese input method

Note that before installing the Chinese input method, please make sure that the Linux system used in the development board is the desktop version system.

Debian 11 system installation method

  1. First set the default locale as Chinese

    1. Enter the command below to start configured locale

      orangepi@orangepi:~$ sudo dpkg-reconfigure locales

    2. Then select zh_CN.UTF-8 UTF-8 in the pop-up interface (through the upper and lower direction keys on the keyboard to move up and down, select it through the space key, and finally move the cursor to <OK> through the Tab key, and then press Enter key.)

      Plus5-img348.png

    3. Then set the default locale as zh_CN.UTF-8

      Plus5-img349.png

    4. After exiting the interface,locale will be set. The output displayed by the command line is shown below

      orangepi@orangepi:~$ sudo dpkg-reconfigure locales

      Generating locales (this might take a while)...

      en_US.UTF-8... done

      zh_CN.UTF-8... done

      Generation complete.

  2. Then open Input Method

    Plus5-img350.png

  3. Then choose OK

    Plus5-img351.png

  4. Then choose Yes

    Plus5-img352.png

  5. Then choose fcitx

    Plus5-img353.png

  6. Then choose OK

    Plus5-img354.png

  7. Then restart the Linux system to make the configuration effective

  8. Then Open Fcitx configuration

    Plus5-img355.png

  9. Then click the “+” of the position shown in the figure below

    Plus5-img356.png

  10. Then search Google Pinyin and click OK

    Plus5-img357.png

  11. Then put Google Pinyin to the forefront

    Plus5-img358.png

    Plus5-img359.png

  12. Then open the Geany Editor and test the Chinese input method.

    Plus5-img360.png

  13. Chinese input method test is shown below

    Plus5-img361.png

  14. You can switch between Chinese and English input methods through Ctrl+Space shortcut

  15. If the entire system is required as Chinese, the variables in /etc/default/locale can be set to zh_CN.UTF-8

    orangepi@orangepi:~$ sudo vim /etc/default/locale

    # File generated by update-locale

    LC_MESSAGES=zh_CN.UTF-8

    LANG=zh_CN.UTF-8

    LANGUAGE=zh_CN.UTF-8

  16. Then restart the system to see the system display as Chinese

    Plus5-img362.png

ubuntu 20.04 system installation method

  1. First open Language Support

    Plus5-img363.png

  2. Then find the Chinese (China) option

    Plus5-img364.png

  3. 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:

    Plus5-img365.png

  4. Note that this step is not very easy to drag, please try a few more times.

  1. Then select the Apply System-Wide to apply the Chinese settings to the entire system

    Plus5-img366.png

  2. Then set the Keyboard input method system as fcitx

    Plus5-img367.png

  3. Then restart the linux system to make the configuration effective

  4. After re -entering the system, please choose not to ask me again at the interface below, and then determine whether the standard folder should be updated in Chinese according to your preference

    Plus5-img368.png

  5. Then you can see that the desktop is displayed as Chinese

    Plus5-img369.png

  6. Then we can open the Geany test in the Chinese input method. The way to open the way is shown in the figure below

    Plus5-img370.png

  7. 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

    Plus5-img371.png

Ubuntu 22.04 installation method

  1. First open Language Support

    Plus5-img363.png

  2. Then find the Chinese (China) option

    Plus5-img372.png

  3. Then please use the mouse to select Chinese (China) and hold it down, and then drag it up to the beginning. The display after the dragging is shown in the figure below:

    Plus5-img373.png

  4. Note that this step is not very easy to drag, please try a few more times.

  1. Then select the Apply System-Wide to apply the Chinese settings to the entire system

    Plus5-img374.png

  2. Then restart the linux system to make the configuration effective

  3. After re-entering the system, please choose not to ask me again at the interface below, and then determine whether the standard folder should be updated to Chinese according to your preference

    Plus5-img368.png

  4. Then you can see that the desktop is displayed as Chinese

    Plus5-img369.png

  5. Then open the Fcitx5 configuration program

    Plus5-img375.png

  6. Then choose to use Pinyin input method

    Plus5-img376.png

  7. The interface after selecting is shown below, then click OK

    Plus5-img377.png

  8. Then we can open the Geany to test Chinese input method.The way to open is shown in the figure below

    Plus5-img370.png

  9. 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

    Plus5-img378.png

How to remotely log in to the Linux system desktop method

Ubuntu Gnome Wayland image does not support NoMachine and VNC described here to remotely log in to the desktop.

Use NoMachine remote login

Make sure the Ubuntu or Debian system installed on the development board is a desktop version. In addition, NoMachine also provides detailed documents. It is strongly recommended to read this document to be familiar with the use of NoMachine. The document links are shown below:

https://knowledgebase.nomachine.com/DT10R00166

NoMachine supports Windows, Mac, Linux, iOS, and Android platforms, so we can remotely log in to control Orange PI development boards through NoMachine on multiple devices. The following demonstrates the Linux system desktop of the Orange PI development board through NoMachine in Windows. For installation methods for other platforms, please refer to the official documentation of NoMachine.

Before operation, please ensure that the Windows computer and the development board are in the same local area network, and can log in to the Ubuntu or Debian system that can log in to the development board normally

  1. 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.

    1. Since RK3588 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:
    2. Note that this download link may change, please recognize the deb package of the Armv8/Arm64 version.

      https://downloads.nomachine.com/download/?id=118&distro=ARM

      Plus5-img379.png

    1. In addition, you can also download the installation package of NoMachine in the official tools

      Plus5-img380.png

      First Enter the remote login software-Nomachine Folder

      Plus5-img381.png

      Then download the arm64 version of the deb installation package

      Plus5-img382.png

    2. Then upload the downloaded nomachine_x.x.x_x_arm64.deb to the Linux system of the development board

    3. Then use the following command to install NoMachine in the Linux system in the development board

      orangepi@orangepi:~$ sudo dpkg -i nomachine_x.x.x_x_arm64_arm64.deb

  1. Then download the NoMachine software Windows version of the installation package, the download address is shown below
  2. Note that this download link may change

    https://downloads.nomachine.com/download/?id=9

    Plus5-img383.png

  1. Then install nomachine in Windows. Please restart the computer after installation

  2. Then open NoMachine in Window

    Plus5-img384.png

  3. After Nomachine is started, 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. You can start logging in to the Linux system desktop of the development board

    Plus5-img385.png

  4. Then click OK

    Plus5-img386.png

  5. Then enter the username and password of the linux system in the corresponding position in the figure below, and then click OK to start logging in

    Plus5-img387-1.png

  6. Then click OK in the next interface

  7. Finally, you can see the desktop of the development board Linux system

    Plus5-img388.png

Use VNC remote login

Before operation, please ensure that the Windwos computer and the development board are in the same local area network, and you can log in to the Ubuntu or Debian system of the development board normally.

Ubuntu 20.04 tests many problems with VNC, please do not use this method.

  1. First run the set_vnc.sh script settings vnc, and remember to add Sudo permissions

    orangepi@orangepi:~$ sudo set_vnc.sh

    You will require a password to access your desktops.


    Password:             #Set the VNC password here, 8 -bit characters

    Verify:                   #Set the VNC password here, 8 -bit characters

    Would you like to enter a view-only password (y/n)? n

    xauth: file /root/.Xauthority does not exist


    New 'X' desktop is orangepi:1


    Creating default startup script /root/.vnc/xstartup

    Starting applications specified in /root/.vnc/xstartup

    Log file is /root/.vnc/orangepi:1.log


    Killing Xtightvnc process ID 3047


    New 'X' desktop is orangepi:1


    Starting applications specified in /root/.vnc/xstartup

    Log file is /root/.vnc/orangepi:1.log

  2. The steps of using MobaxTerm software to connect the development board Linux system desktop are shown below:

    1. First click the session, then select VNC, then fill in the IP address and port of the development board, and finally click OK to confirm
    2. Plus5-img389.png

    1. Then enter the password of the previously set VNC

      Plus5-img390.png

    2. The interface after the login is successfully displayed as shown in the figure below, and then you can remotely operate the desktop of the linux system remotely

    3. Plus5-img391.png

Some programming language test supported by thelinux system

Debian Bullseye system

  1. Debian Bullseye is installed with the gcc compilation tool chain by default, which can compile the C language program directly in the Linux system of the development board

    1. The version of the gcc is shown below

      orangepi@orangepi:~$ gcc --version

      gcc (Debian 10.2.1-6) 10.2.1 20210110

      Copyright (C) 2020 Free Software Foundation, Inc.

      This is free software; see the source for copying conditions. There is NO

      warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

    2. hello_world.c program to write c language

      orangepi@orangepi:~$ vim hello_world.c

      #include <stdio.h>


      int main(void)

      {

      printf("Hello World!\n");

      return 0;

      }

    3. Then compile and run hello_world.c

      orangepi@orangepi:~$ gcc -o hello_world hello_world.c

      orangepi@orangepi:~$ ./hello_world

      Hello World!

  2. Debian Bullseye Default with Python3

    1. The specific version of Python is shown below

      orangepi@orangepi:~$ python3

      Python 3.9.2 (default, Feb 28 2021, 17:03:44)

      [GCC 10.2.1 20210110] on linux

      Type "help", "copyright", "credits" or "license" for more information.

      >>>

      Use CTRL+D shortcut key to exit Python's interactive mode.

    2. hello_world.py program in Python language

      orangepi@orangepi:~$ vim hello_world.py

      print('Hello World!')

    3. The results of running hello_world.py are shown below

      orangepi@orangepi:~$ python3 hello_world.py

      Hello World!

  3. Debian Bullseye's compilation tool and operating environment without Java default

    1. You can use the following command to install openjdk. The latest version in Debian Bullseye is openjdk-17

      orangepi@orangepi:~$ sudo apt install -y openjdk-17-jdk

    2. After installation, you can check the version of Java

      orangepi@orangepi:~$ java --version

    3. Edit the hello_world.java of Java version

      orangepi@orangepi:~$ vim hello_world.java

      public class hello_world

      {

      public static void main(String[] args)

      {

      System.out.println("Hello World!");

      }

      }

    4. Then compile and run hello_world.java

      orangepi@orangepi:~$ javac hello_world.java

      orangepi@orangepi:~$ java hello_world

      Hello World!

Ubuntu Focal system

  1. Ubuntu Focal has a gcc compilation tool chain by default, which can compile the C language program directly in the Linux system of the development board

    1. The version of gcc is shown below

      orangepi@orangepi:~$ gcc --version

      gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0

      Copyright (C) 2019 Free Software Foundation, Inc.

      This is free software; see the source for copying conditions. There is NO

      warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

    2. The hello_world.c program that writes c language

      orangepi@orangepi:~$ vim hello_world.c

      #include <stdio.h>


      int main(void)

      {

      printf("Hello World!\n");


      return 0;

      }

    3. Then compile and run hello_world.c

      orangepi@orangepi:~$ gcc -o hello_world hello_world.c

      orangepi@orangepi:~$ ./hello_world

      Hello World!

  2. Ubuntu Focal's default installation with Python3

    1. Python3 specific version is shown below

      orangepi@orangepi:~$ python3

      Python 3.8.10 (default, Nov 14 2022, 12:59:47)

      [GCC 9.4.0] on linux

      Type "help", "copyright", "credits" or "license" for more information.

      >>>

      Use CTRL+D shortcut key to exit Python's interactive mode.

    2. The hello_world.py program that writes python language

      orangepi@orangepi:~$ vim hello_world.py

      print('Hello World!')

    3. The results of running hello_world.py are shown below

      orangepi@orangepi:~$ python3 hello_world.py

      Hello World!

  3. Ubuntu Focal's compilation tools and operating environment without Java default

    1. You can use the following command to install openjdk-17

      orangepi@orangepi:~$ sudo apt install -y openjdk-17-jdk

    2. After installation, you can check the version of the java

      orangepi@orangepi:~$ java --version

      openjdk 17.0.2 2022-01-18

      OpenJDK Runtime Environment (build 17.0.2+8-Ubuntu-120.04)

      OpenJDK 64-Bit Server VM (build 17.0.2+8-Ubuntu-120.04, mixed mode, sharing)

    3. Edit the hello_world.java of Java version

      orangepi@orangepi:~$ vim hello_world.java

      public class hello_world

      {

      public static void main(String[] args)

      {

      System.out.println("Hello World!");

      }

      }

    4. Then compile and run hello_world.java

      orangepi@orangepi:~$ javac hello_world.java

      orangepi@orangepi:~$ java hello_world

      Hello World!

Ubuntu Jammy system

  1. Ubuntu Jammy 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

    1. The version of gcc is shown below

      orangepi@orangepi:~$ gcc --version

      gcc (Ubuntu 11.2.0-19ubuntu1) 11.2.0

      Copyright (C) 2021 Free Software Foundation, Inc.

      This is free software; see the source for copying conditions. There is NO

      warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

    2. The hello_world.c program that writes c language

      orangepi@orangepi:~$ vim hello_world.c

      #include <stdio.h>


      int main(void)

      {

      printf("Hello World!\n");


      return 0;

      }

    3. Then compile and run hello_world.c

      orangepi@orangepi:~$ gcc -o hello_world hello_world.c

      orangepi@orangepi:~$ ./hello_world

      Hello World!

  2. Ubuntu jammy is installed with Python3 by default

    1. python3 specific version is shown below

      orangepi@orangepi:~$ python3

      Python 3.10.4 (main, Apr 2 2022, 09:04:19) [GCC 11.2.0] on linux

      Type "help", "copyright", "credits" or "license" for more information.

      >>>

      Use CTRL+D shortcut key to exit Python's interactive mode.

    2. The hello_world.py program that writes python language

      orangepi@orangepi:~$ vim hello_world.py

      print('Hello World!')

    3. The results of running hello_world.py are shown below

      orangepi@orangepi:~$ python3 hello_world.py

      Hello World!

  3. Ubuntu Jammy defaults to compile tools and operating environments that are not installed in Java

    1. You can use the following command to install openjdk-18

      orangepi@orangepi:~$ sudo apt install -y openjdk-18-jdk

    2. After installation, you can check the version of the java

      orangepi@orangepi:~$ java --version

      openjdk 18-ea 2022-03-22

      OpenJDK Runtime Environment (build 18-ea+36-Ubuntu-1)

      OpenJDK 64-Bit Server VM (build 18-ea+36-Ubuntu-1, mixed mode, sharing)

    3. Edit the hello_world.java of Java version

      orangepi@orangepi:~$ vim hello_world.java

      public class hello_world

      {

      public static void main(String[] args)

      {

      System.out.println("Hello World!");

      }

      }

    4. Then compile and run hello_world.java

      orangepi@orangepi:~$ javac hello_world.java

      orangepi@orangepi:~$ java hello_world

      Hello World!

QT installation method

  1. You can install QT5 and QT Creator with the following scripts

    orangepi@orangepi:~$ install_qt.sh

  2. After installation, it will automatically print the QT version number

    1. Ubuntu20.04's own QT version is 5.12.8

      orangepi@orangepi:~$ install_qt.sh

      ......

      QMake version 3.1

      Using Qt version 5.12.8 in /usr/lib/aarch64-linux-gnu

    2. Ubuntu22.04's own QT version is 5.15.3

      orangepi@orangepi:~$ install_qt.sh

      ......

      QMake version 3.1

      Using Qt version 5.15.3 in /usr/lib/aarch64-linux-gnu

    3. The QT version comes with Debian11 is 5.15.2

      orangepi@orangepi:~$ install_qt.sh

      ......

      QMake version 3.1

      Using Qt version 5.15.2 in /usr/lib/aarch64-linux-gnu

    4. The QT version that comes with Debian12 is 5.15.8

      orangepi@orangepi:~$ install_qt.sh

      ......

      QMake version 3.1

      Using Qt version 5.15.8 in /usr/lib/aarch64-linux-gnu

  3. Then you can see the lax icon of QT Creator in Applications

    Plus5-img392.png

    You can also use the following command to open QT Creator

    orangepi@orangepi:~$ qtcreator

    During the startup process of QT and QT applications, if the error below is prompted, please ignore it directly. This error will not affect the operation of the application.


    libGL error: failed to create dri screen

    libGL error: failed to load driver: rockchip

    libGL error: failed to create dri screen

    libGL error: failed to load driver: rockchip

  4. The interface after the QT Creator is opened is shown below

    Plus5-img393.png

  5. The version of QT Creator is shown below

    1. The default version of QT Creator in Ubuntu20.04 is shown below

      Plus5-img394.png

    2. The default version of QT Creator in Ubuntu22.04 is shown below

      Plus5-img395.png

    3. The default version of QT Creator in Debian11 is shown below

      Plus5-img396.png

    4. The default version of QT Creator in Debian12 is as follows

      Plus5-img396-1.png

  6. Then set the QT

    1. First open Help->About Plugins...

      Plus5-img397.png

    2. Then remove the hook of ClangCodeModel

      Plus5-img398.png

    3. After setting, you need to restart Qt Creator

    4. Then make sure the GCC compiler used by QT Creator, if the default is Clang, please modify it to GCC

      Debian12 please skip this step.

      Plus5-img399.png

      Plus5-img400.png

  7. Then you can open an example code

    Plus5-img401.png

  8. After clicking the example code, you will automatically open the corresponding description document. You can carefully look at the instructions for the use

    Plus5-img402.png

  9. Then click Configure Project

    Plus5-img403.png

  10. Then click the sample code under the green triangle compilation and run in the lower left corner

    Plus5-img404.png

  11. After waiting for a while, the interface shown in the figure below will pop up. At this time, it means that QT can compile and run normally

    Plus5-img405.png

  12. Reference information

    https://wiki.qt.io/Install_Qt_5_on_Ubuntu

    https://download.qt.io/archive/qtcreator

    https://download.qt.io/archive/qt

ROS installation method

Ubuntu 20.04 method of installing ROS 1 Noetic

  1. The current active version of ROS 1 is shown below. The recommended version is Noetic Ninjemys
Plus5-img406.png
Plus5-img407.png

http://docs.ros.org

https://wiki.ros.org/Distributions

  1. ROS 1 Noetic Ninjemys' official installation document links are shown below:

    http://wiki.ros.org/noetic/Installation/Ubuntu

  2. Ubuntu 20.04 is recommended in the official installation document of ROS Noetic Ninjemys, so please make sure that the system used in the development board is Ubuntu20.04 desktop version system

    http://wiki.ros.org/noetic/Installation

    Plus5-img408.png

  3. Then install Ros1 with the following script

    orangepi@orangepi5plus:~$ install_ros.sh ros1

  4. Before using the ROS tool, you need to initialize ROSDEP first, and then install some system dependencies and core components in some ROS when compiling the source code

  5. Note that the following commands need to ensure that the development board can access GitHub normally, otherwise it will report an error due to network problems.


    install_ros.sh script will try to modify/etc/hosts and run the following commands automatically. However, this method cannot guarantee that you can access github normally. If install_ros.sh has prompting the following errors after the ros1 is installed, please think other methods to allow the linux system of the development board to access github normally, and then manually run the following manually command.


    https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml

    Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml

    ERROR: error loading sources list:

    The read operation timed out


    orangepi@orangepi:~$ source /opt/ros/noetic/setup.bash

    orangepi@orangepi:~$ sudo rosdep init

    Wrote /etc/ros/rosdep/sources.list.d/20-default.list

    Recommended: please run


    rosdep update

    orangepi@orangepi:~$ rosdep update

    reading in sources list data from /etc/ros/rosdep/sources.list.d

    Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml

    Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml

    Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml

    Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/ruby.yaml

    Hit https://raw.githubusercontent.com/ros/rosdistro/master/releases/fuerte.yaml

    Query rosdistro index https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml

    Skip end-of-life distro "ardent"

    Skip end-of-life distro "bouncy"

    Skip end-of-life distro "crystal"

    Skip end-of-life distro "dashing"

    Skip end-of-life distro "eloquent"

    Add distro "foxy"

    Add distro "galactic"

    Skip end-of-life distro "groovy"

    Add distro "humble"

    Skip end-of-life distro "hydro"

    Skip end-of-life distro "indigo"

    Skip end-of-life distro "jade"

    Skip end-of-life distro "kinetic"

    Skip end-of-life distro "lunar"

    Add distro "melodic"

    Add distro "noetic"

    Add distro "rolling"

    updated cache in /home/orangepi/.ros/rosdep/sources.cache

  1. Then open a command line window on the desktop, and then use the test_ros.sh script to start a small turtle routine to test whether the ROS can be used normally

    orangepi@orangepi:~$ test_ros.sh

  2. After running the test_ros.sh script, a small turtle shown in the figure below will pop up

    Plus5-img409.png

  3. Then please keep the terminal window just open at the top

  4. Plus5-img410.png

  1. At this time, press the direction button on the keyboard to control the small turtles up, down, left and right

    Plus5-img411.png

Ubuntu20.04 The method of installing ROS 2 Galactic

  1. The current active version of ROS 2 is shown below. The recommended version is Galactic Geochelone

    Plus5-img412.png

    Plus5-img413.png

    http://docs.ros.org

    http://docs.ros.org/en/galactic/Releases.html

  2. ROS 2 Galactic Geochelone's official installation document link is shown below:

    docs.ros.org/en/galactic/Installation.html

    http://docs.ros.org/en/galactic/Installation/Ubuntu-Install-Debians.html

  3. ROS 2 Galactic Geochelone's official installation document is recommended to use Ubuntu 20.04, so please make sure that the system used in the development board is Ubuntu20.04 desktop version system. There are several ways to install ROS 2. The following demonstrates install the Ros 2 Galactic Geochelone by Debian packages

  4. You can install ROS2 with install_ros.sh script

    orangepi@orangepi:~$ install_ros.sh ros2

  5. install_ros.sh script will automatically run the ros2 -h command after ros2 is installed. If you can see the printing below, it means that ros2 installation is complete

    usage: ros2 [-h] Call `ros2 <command> -h` for more detailed usage. ...


    ros2 is an extensible command-line tool for ROS 2.


    optional arguments:

    -h, --help show this help message and exit


    Commands:

    action Various action related sub-commands

    bag Various rosbag related sub-commands

    component Various component related sub-commands

    daemon Various daemon related sub-commands

    doctor Check ROS setup and other potential issues

    interface Show information about ROS interfaces

    launch Run a launch file

    lifecycle Various lifecycle related sub-commands

    multicast Various multicast related sub-commands

    node Various node related sub-commands

    param Various param related sub-commands

    pkg Various package related sub-commands

    run Run a package specific executable

    security Various security related sub-commands

    service Various service related sub-commands

    topic Various topic related sub-commands

    wtf Use `wtf` as alias to `doctor`


    Call `ros2 <command> -h` for more detailed usage.

  6. Then you can use the test_ros.sh script to test whether the ROS 2 is successfully installed. If you can see the printing below, it means that the ROS 2 can run normally

    orangepi@orangepi5plus:~$ test_ros.sh

    [INFO] [1671174101.200091527] [talker]: Publishing: 'Hello World: 1'

    [INFO] [1671174101.235661048] [listener]: I heard: [Hello World: 1]

    [INFO] [1671174102.199572327] [talker]: Publishing: 'Hello World: 2'

    [INFO] [1671174102.204196299] [listener]: I heard: [Hello World: 2]

    [INFO] [1671174103.199580322] [talker]: Publishing: 'Hello World: 3'

    [INFO] [1671174103.204019965] [listener]: I heard: [Hello World: 3]

  7. Run the following command to open rviz2

    orangepi@orangepi:~$ source /opt/ros/galactic/setup.bash

    orangepi@orangepi:~$ ros2 run rviz2 rviz2

    Plus5-img414.png

  8. How to use ROS, please refer to the document of ROS 2

    http://docs.ros.org/en/galactic/Tutorials.html

Ubuntu22.04 to install ROS 2 Humble

  1. install ROS2 with install_ros.sh script

    orangepi@orangepi:~$ install_ros.sh ros2

  2. install_ros.sh script will automatically run the ros2 -h command after ROS2 is installed. If you can see the following printing, it means that ROS2 installation is complete.

    usage: ros2 [-h] Call `ros2 <command> -h` for more detailed usage. ...


    ros2 is an extensible command-line tool for ROS 2.


    optional arguments:

    -h, --help show this help message and exit


    Commands:

    action Various action related sub-commands

    bag Various rosbag related sub-commands

    component Various component related sub-commands

    daemon Various daemon related sub-commands

    doctor Check ROS setup and other potential issues

    interface Show information about ROS interfaces

    launch Run a launch file

    lifecycle Various lifecycle related sub-commands

    multicast Various multicast related sub-commands

    node Various node related sub-commands

    param Various param related sub-commands

    pkg Various package related sub-commands

    run Run a package specific executable

    security Various security related sub-commands

    service Various service related sub-commands

    topic Various topic related sub-commands

    wtf Use `wtf` as alias to `doctor`


    Call `ros2 <command> -h` for more detailed usage.

  3. Then you can use the test_ros.sh script to test whether the ROS 2 is successfully installed. If you can see the printing below, it means that ROS 2 can run normally

    orangepi@orangepi5plus:~$ test_ros.sh

    [INFO] [1671174101.200091527] [talker]: Publishing: 'Hello World: 1'

    [INFO] [1671174101.235661048] [listener]: I heard: [Hello World: 1]

    [INFO] [1671174102.199572327] [talker]: Publishing: 'Hello World: 2'

    [INFO] [1671174102.204196299] [listener]: I heard: [Hello World: 2]

    [INFO] [1671174103.199580322] [talker]: Publishing: 'Hello World: 3'

    [INFO] [1671174103.204019965] [listener]: I heard: [Hello World: 3]

  4. Run the following command to open rviz2

    orangepi@orangepi:~$ source /opt/ros/humble/setup.bash

    orangepi@orangepi:~$ ros2 run rviz2 rviz2

    Plus5-img415.png

  5. Reference document

    http://docs.ros.org/en/humble/index.html

    http://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html

The method of installing the kernel header file

  1. The linux image released by OPI defaults to the DEB package of the kernel header file. The location is /opt/

    orangepi@orangepi5plus:~$ ls /opt/linux-headers*

    /opt/linux-headers-legacy-rockchip-rk3588_x.x.x_arm64.deb

  2. Use the following command to install the deb package of the kernel header file

    The name of the kernel file deb package needs to be replaced with the actual name, please don't copy it.

    orangepi@orangepi:~$ sudo dpkg -i /opt/linux-headers-legacy-rockchip-rk3588_1.x.x_arm64.deb

  3. After installation, you can see the folder where the kernel header file is located under the/usr/src

    orangepi@orangepi:~$ ls /usr/src

    linux-headers-5.10.110-rockchip-rk3588

  4. Then you can write a Hello kernel module to test the kernel header file

    1. First write the code of the Hello kernel module, as shown below:

      orangepi@orangepi:~$ vim hello.c

      #include <linux/init.h>

      #include <linux/module.h>


      static int hello_init(void)

      {

      printk("Hello Orange Pi -- init\n");


      return 0;

      }

      static void hello_exit(void)

      {

      printk("Hello Orange Pi -- exit\n");


      return;

      }


      module_init(hello_init);

      module_exit(hello_exit);


      MODULE_LICENSE("GPL");

    2. Then write a makefile file that compiles the Hello kernel module, as shown below:

      orangepi@orangepi:~$ vim Makefile

      ifneq ($(KERNELRELEASE),)

      obj-m:=hello.o

      else

      KDIR :=/lib/modules/$(shell uname -r)/build

      PWD :=$(shell pwd)

      all:

      make -C $(KDIR) M=$(PWD) modules

      clean:

      rm -f *.ko *.o *.mod.o *.mod *.symvers *.cmd *.mod.c *.order

      endif

    3. Then use the make command to compile the Hello kernel module, and the output of the compilation process is shown below:

      If you compile the code you copy here, if you have any problems, go to the official tool to download the source code and upload it to the Linux system of the development board for testing

      Plus5-img416.png

      orangepi@orangepi:~$ make

      make -C /lib/modules/5.10.110-rockchip-rk3588/build M=/home/orangepi modules

      make[1]: Entering directory '/usr/src/linux-headers-5.10.110-rockchip-rk3588'

      CC [M] /home/orangepi/hello.o

      MODPOST /home/orangepi/Module.symvers

      CC [M] /home/orangepi/hello.mod.o

      LD [M] /home/orangepi/hello.ko

      make[1]: Leaving directory '/usr/src/linux-headers-5.10.110-rockchip-rk3588'

    4. After compiling, the hello.ko kernel module will be generated

      orangepi@orangepi:~$ ls *.ko

      hello.ko

    5. Use the insmod command to insert the hello.ko kernel module into the kernel

      orangepi@orangepi:~$ sudo insmod hello.ko

    6. Then use the demsg command to view the output of the hello.ko kernel module. If you can see the output instructions below, the hello.ko kernel module is loaded correctly

      orangepi@orangepi:~$ dmesg | grep "Hello"

      [ 2871.893988] Hello Orange Pi -- init

    7. Use the rmmod command to uninstall the hello.ko kernel module

      orangepi@orangepi:~$ sudo rmmod hello

      orangepi@orangepi:~$ dmesg | grep "Hello"

      [ 2871.893988] Hello Orange Pi -- init

      [ 3173.800892] Hello Orange Pi -- exit

How to use 10.1 inch MIPI LCD screen

10.1 -inch MIPI screen assembly method

  1. First prepare the required accessories

    1. 10.1 -inch MIPI LCD display+touch screen (this screen and OPI5/OPI5B universal)

      Plus5-img417.png

    2. Screen divert plate+31pin to 40pin line

      Plus5-img418.png

    3. 30pin mipi line

      Plus5-img419.png

    4. 12pin touch screen row line

      Plus5-img420.png

  2. According to the figure below, the 12PIN touch screen row, 31PIN to 40PIN ducts, and 30pin MIPI cables get on the screen dial board. Pay attention to line of the touch screen the blue insulation face under. If you get an error, it will cause no display or unable to touch

    Plus5-img421.png

  3. Place the connected rotor connected to the puzzle on the MIPI LCD screen according to the figure below, and connect the MIPI LCD screen and the rotary board through 31PIN to 40Pin row

  4. Plus5-img422.png

  1. Then connect the touch screen and the rotor board through the 12PIN touch screen line, pay attention to the orientation of the insulating surface.

    Plus5-img423.png

  2. Finally connect to the LCD interface of the development board through the 30PIN MIPI duct

    Plus5-img424.png

    Note that the touch interface below is not used for the LCD MIPI screen. It is currently a spare interface and cannot be used

    Plus5-img425.png

Open the 10.1 -inch MIPI LCD screen configuration

  1. The Linux image defaults to the configuration of the mipi lcd screen by default. If you need to use the mipi lcd screen, you need to open it manually.

  2. The position of the development board MIPI LCD screen interface is shown below:

    Plus5-img426.png

  3. The steps of opening the MIPI LCD configuration are shown below:

    1. First run the orangePi-config. Ordinary users remember to add Sudo permissions

      orangepi@orangepi:~$ sudo orangepi-config

    2. Then choose System

      Plus5-img234.png

    3. Then choos Hardware

      Plus5-img235.png

    4. Then use the keyboard orientation to position the opi5plus-lcd, and then use the space to select

      Plus5-img427.png

    5. Then select <Save>

      Plus5-img428.png

    6. Then sele <Back>

      Plus5-img429.png

    7. Then select the <Reboot> restart system to make the configuration effective

      Plus5-img430.png

  4. After starting, you can see the display of the LCD screen as shown below (the default is vertical screen):

  5. Plus5-img431.png

The server version of the image rotation display direction method

  1. Add extrargs = fbcon = rotate: The direction to rotate is in /boot/orangepiEnv.txt. This configuration can set the direction of the LINUX system of the server version,Among them, fbcon=rotate: The following numbers can be set to be set to

    1. 0: Normal screen (default vertical screen)

    2. 1: Turn 90 degrees clock

    3. 2: Flip 180 degrees

    4. 3: Turn to 270 degrees clock

      orangepi@orangepi:~$ sudo vim /boot/orangepiEnv.txt

      overlays=opi5plus-lcd

      extraargs=cma=128M fbcon=rotate:3

      Note that if/boot/orangepienv.txt is configured in the default default exiArgs = CMA = 128M, fbcon = rotate: 3 The configuration can be added to the extensraargs = cma = 128m (need to be separated by spaces).

  2. Then restart the Linux system to see that the direction of the LCD screen display has been rotated

The desktop image rotation display and touch direction method

  1. First open Display settings in the Linux system

    Plus5-img432.png

  2. Then select the direction you want to rotate in the Rotation

    1. None: Not rotate

    2. Left: Rotate 90 degrees to the left

    3. Inverted: Flipting up and down is equivalent to rotating 180 > degrees

    4. Right: Rotate 90 degrees to the right

      Plus5-img433.png

  3. Then click Apply

    Plus5-img434.png

  4. Then click Keep this configuration

    Plus5-img435.png

  5. At this time, the screen display has been rotated, and then the Display program is turned off

  6. The above steps will only select the display direction, and it will not rotate the direction of touch. Use set_lcd_rotate.sh script to rotate the direction of touch. After this script is set, it will be automatically restarted, and then you can test whether the touch can be used normally

    1. None: Not rotate

      orangepi@orangepi:~$ set_lcd_rotate.sh none

    2. Left: Rotate 90 degrees to the left

      orangepi@orangepi:~$ set_lcd_rotate.sh left

    3. Inverted: Flipting up and down, equivalent to rotating 180 > degrees

      orangepi@orangepi:~$ set_lcd_rotate.sh inverted

    4. Right: Rotate 90 degrees to the right

      orangepi@orangepi:~$ set_lcd_rotate.sh right

      set_lcd_rotate.sh The script mainly does four things:


      1. Rotate the direction of Framebuffer displayed

      2. The direction of rotating touch

      3. Close the boot LOGO

      4. Restart the system


      The direction of the rotation touch is achieved by adding Option TransformationMatrix""x x x x x x x x x"in /usr/share/X11/xorg.conf.d/40-libinput.conf. Among them, "x x x x x x x x x" is different in different directions.

  1. Touch rotation reference materials

    https://wiki.ubuntu.com/X/InputCoordinateTransformation

Instructions for opening the logo use instructions

  1. The default LOGO default is displayed in the desktop version of the system

  2. Set the bootlogo variable to false in /boot/orangepiEnv.txt to turn off the switch to the LOGO

    orangepi@orangepi:~$ sudo vim /boot/orangepiEnv.txt

    verbosity=1

    bootlogo=false

  3. Set the bootlogo variable to true in /boot/orangepiEnv.txt to turn the opening and the logo

    orangepi@orangepi:~$ sudo vim /boot/orangepiEnv.txt

    verbosity=1

    bootlogo=true

  4. The position of the LOGO picture in the Linux system is

    /usr/share/plymouth/themes/orangepi/watermark.png

  5. After replacing the start -up logo picture, you need to run the command to take effect

    orangepi@orangepi:~$ sudo update-initramfs -u

Test methods for OV13850 and OV13855 MIPI camera

At present, the development board supports two MIPI cameras, OV13850 and OV13855. The specific pictures are shown below:

  1. OV13850 camera at 13 million MIPI interface

    Plus5-img23.png

  2. 13 million MIPI interface OV13855 camera

    Plus5-img24.png

    The rotary board used by OV13850 and OV13855 cameras is the same as the FPC cable, but the two cameras are different from the position on the rotary board. The FPC lines are shown in the figure below. Please note that the FPC line is directed. It is marked that the TO MB must be inserted into the camera interface of the development board. It is marked that the end of TO CAMERA needs to be inserted on the camera transfer board.

  3. Plus5-img436.png

There are a total of 3 cameras on the camera to connect to the board, which can only be used one at the same time, as shown in the figure below, among which:

  1. No. 1 connect with OV13850 camera

  2. No. 2 interface OV13855 camera

  3. The No. 3 interface is not used, just ignore it.

  4. Plus5-img437-1.png

Orange Pi 5 Plus development board has a total of 1 camera interface, which is shown below:

Plus5-img438.png

The method of the camera inserted in the development board interface is shown below:

Plus5-img439.png

After connecting the camera to the development board, we can use the following method to test the camera:

  1. First run the orangepi-config. Ordinary users remember to add sudo permissions

    orangepi@orangepi:~$ sudo orangepi-config

  2. Then select System

    Plus5-img234.png

  3. Then choose Hardware

    Plus5-img235.png

  4. Then use the keyboard to locate the position shown in the figure below, and then use the camera you want to open in the space. Among them, opi5plus-ov13850 means using an OV13850 camera, opi5plus-ov13855 indicates the use of OV13855 camera.

    Plus5-img440.png

  5. Then choose <Save>

    Plus5-img441.png

  6. Then choose <Back>

    Plus5-img442.png

  7. Then select the<Reboot> restart system to make the configuration effective

    Plus5-img239.png

  8. Then open a terminal in the desktop system and run the script below

    orangepi@orangepi:~$ test_camera.sh

  9. Then you can see the preview of the camera

    Plus5-img443.png

Test method for infrared receiving

There is an infrared receiver on the development board, which is connected to thePWM15_IR_M1 pin. The method of checking the key value received by infrared is shown below:

  1. First run the evtest command in the command line, and then select the device serial number corresponding to the febf0030.pwm

    orangepi@orangepi:~$ evtest

    No device specified, trying to scan all of /dev/input/event*

    Not running as root, no devices may be available.

    Available devices:

    /dev/input/event0: febf0030.pwm

    /dev/input/event1: rk805 pwrkey

    /dev/input/event2: rockchip,dp0 rockchip,dp0

    /dev/input/event3: rockchip-hdmi0 rockchip-hdmi0

    /dev/input/event4: rockchip-hdmi1 rockchip-hdmi1

    /dev/input/event5: headset-keys

    /dev/input/event6: rockchip,es8388 Headset

    /dev/input/event7: adc-keys

    /dev/input/event8: SONiX USB Keyboard

    /dev/input/event9: SONiX USB Keyboard Consumer Control

    /dev/input/event10: SONiX USB Keyboard System Control

    /dev/input/event11: PixArt USB Optical Mouse

    Select the device event number [0-11]: 0 #Select the serial number corresponding to Febf0030.pwm here


    Input driver version is 1.0.1

    Input device ID: bus 0x19 vendor 0x524b product 0x6 version 0x100

    Input device name: "febf0030.pwm"

    Supported events:

    Event type 0 (EV_SYN)

    Event type 1 (EV_KEY)

    Event code 2 (KEY_1)

    Event code 3 (KEY_2)

    Event code 4 (KEY_3)

    Event code 5 (KEY_4)

    Event code 6 (KEY_5)

    Event code 7 (KEY_6)

    Event code 8 (KEY_7)

    Event code 9 (KEY_8)

    Event code 10 (KEY_9)

    Event code 11 (KEY_0)

    Event code 28 (KEY_ENTER)

    Event code 102 (KEY_HOME)

    Event code 103 (KEY_UP)

    Event code 105 (KEY_LEFT)

    Event code 106 (KEY_RIGHT)

    Event code 108 (KEY_DOWN)

    Event code 113 (KEY_MUTE)

    Event code 114 (KEY_VOLUMEDOWN)

    Event code 115 (KEY_VOLUMEUP)

    Event code 116 (KEY_POWER)

    Event code 139 (KEY_MENU)

    Event code 143 (KEY_WAKEUP)

    Event code 158 (KEY_BACK)

    Event code 217 (KEY_SEARCH)

    Event code 388 (KEY_TEXT)

    Properties:

    Testing ... (interrupt to exit)

  2. Then need to prepare an infrared remote control shown in the figure below

    Note: The Linux system provided by the Orange School only supports the remote control provided by the Orange School. The remote control of the TV or air conditioner cannot be used.

    Plus5-img444.png

  3. Then press the button on the infrared receiver on the development board to press the button on the remote control. The position of the infrared receiver on the development board is as shown in the figure below:

    Plus5-img445.png

  4. Then you can see that evtest will print the received key value

    ......

    Event code 217 (KEY_SEARCH)

    Event code 388 (KEY_TEXT)

    Properties:

    Testing ... (interrupt to exit)

    Event: time 1684152321.834907, type 1 (EV_KEY), code 2 (KEY_1), value 1

    Event: time 1684152321.834907, -------------- SYN_REPORT ------------

    Event: time 1684152322.017512, type 1 (EV_KEY), code 2 (KEY_1), value 0

    Event: time 1684152324.630961, -------------- SYN_REPORT ------------

    Event: time 1684152326.482359, type 1 (EV_KEY), code 106 (KEY_RIGHT), value 1

    Event: time 1684152326.482359, -------------- SYN_REPORT ------------

    Event: time 1684152326.667633, type 1 (EV_KEY), code 106 (KEY_RIGHT), value 0

    Event: time 1684152328.427632, -------------- SYN_REPORT ------------

    Event: time 1684152330.761986, type 1 (EV_KEY), code 116 (KEY_POWER), value 1

    Event: time 1684152330.761986, -------------- SYN_REPORT ------------

    Event: time 1684152330.944243, type 1 (EV_KEY), code 116 (KEY_POWER), value 0

    Event: time 1684152330.944243, -------------- SYN_REPORT ------------

The method to use RTC

  1. A RTC battery interface is reserved on the development board, which is shown below:

    Plus5-img28.png

  2. The RTC battery that needs to be purchased is shown below. The interface is 2pin, 1.25mm spacing

    Plus5-img27.png

  3. The RTC chip used on the development board is Hym8563TS. This chip has the following characteristics:

    1. Wide work voltage range:1.0~5.5v

    2. Low dormant current:Typical value 0.25μA(VDD =3.0V, TA =25°C)

  4. After connecting the RTC battery on the development board, use the following method to test whether the RTC has been working normally:

    1. First turn on the system, then record the current time of the > system

    2. Then use the Poweroff command to turn off the system normally

    3. Then unplug the power supply to ensure that the development > board does not access the network cable and wireless WiFi, and > wait a few minutes

    4. Then start the system again. If you see the time walk forward > for a few minutes after entering the system, it means that the > RTC module and the battery work normally

  5. See the command of the RTC information through the ProcFS interface of the Linux system

    orangepi@orangepi:~$ cat /proc/driver/rtc

    rtc_time : 06:07:40

    rtc_date : 2023-05-22

    alrm_time : 03:36:00

    alrm_date : 2023-05-23

    alarm_IRQ : no

    alrm_pending : no

    update IRQ enabled : no

    periodic IRQ enabled : no

    periodic IRQ frequency : 1

    max user IRQ frequency : 64

    24hr : yes

How to use the cooling PWM fan

  1. The development board is used for interfaces that connect the heat sink fan. The interface specifications are 2pin 1.25mm spacing, 5V voltage driver, and the position of the fan interface is shown in the figure below:

    Plus5-img19.png

  2. The fan on the development board can adjust the speed and switch through PWM, and the PWM pins used are PWM3_IR_M1

  3. The Linux system uses the pwm-fan driver to control the fan by default. The DTS configuration used is shown below:

    orange-pi-5.10-rk3588/arch/arm64/boot/dts/rockchip/rk3588-orangepi-5-plus.dts


    fan: pwm-fan {

    compatible = "pwm-fan";

    #cooling-cells = <2>;

    pwms = <&pwm3 0 50000 0>;

    cooling-levels = <0 50 100 150 200 255>;

    rockchip,temp-trips = <

    50000 1

    55000 2

    60000 3

    65000 4

    70000 5

    >;


    status = "okay";

    };

    Among it:

    1. pwms = <&pwm3 0 50000 0>:The PWM of the control fan is PWM3.

    2. cooling-levels = <0 50 100 150 200 255>:It is used to configure the gear of the speed (PWM duty cycle). The number and size of the gear can be defined by itself. Here are 6 gears. The range of the speed is 0-255.

    3. rockchip,temp-trips:It is used to configure the corresponding relationship between the CPU temperature and the fan speed gear. It can be adjusted according to actual needs. The above configuration 50 degrees corresponding gear 1, 70 degrees to the corresponding gear 5.

      It is normal to find that the fan does not turn after turning, because the temperature of the CPU after booting is generally lower than 50 degrees. Only when the temperature of the CPU reaches 50 degrees, the fan will start to turn.


      Use the following commands to make all CPUs run, and then you can see that the fan will start working:

      orangepi@orangepi:~$ for i in $(seq 0 $(( $(nproc --all) - 1)) ); do (taskset -c $i yes > /dev/null &); done

How to use the ZFS file system

The latest version of Ubuntu20.04, Ubuntu22.04, Debian11 and Debian12 desktop version systems have pre-installed zfs, you can use it directly.

The pre-installed zfs version in Ubuntu20.04 and Ubuntu22.04 desktop systems is 2.1.6.

The pre-installed zfs version in Debian11 and Debian12 desktop systems is 2.1.11.

After the system starts, please first confirm whether the zfs kernel module has been loaded. If you can see zfs-related content using the lsmod command, it means that the system has pre-installed zfs.

orangepi@orangepi:~$ lsmod | grep "zfs"

zfs                     2801664     0

zunicode             327680     1   zfs

zzstd                  471040     1   zfs

zlua                    139264     1   zfs

zcommon             69632     1   zfs

znvpair                 61440     2   zfs,zcommon

zavl                      16384     1   zfs

icp                     221184     1   zfs

spl                       77824     6   zfs,icp,zzstd,znvpair,zcommon,zavl

How to install ZFS

Before installing zfs, please ensure that the Linux image used is the latest version. In addition, if zfs is already installed in the system, there is no need to install it again.

Before installing zfs, you need to install the kernel header file first. For the method of installing the kernel header file, please refer to the instructions in the section on the method of installing the kernel header file.

In Ubuntu20.04, Ubuntu22.04 and Debian11 systems, zfs cannot be installed directly through apt, because the default apt source zfs version is lower than 2.1.6, and there is a problem of incompatibility with rk linux5.10 kernel. This problem is fixed in zfs version 2.1.6 and later.

To solve this problem, we provide a zfs deb package that can be installed normally, which can be downloaded from the official tool of the development board. Open the official tool, and then enter the zfs-related deb package folders used by Ubuntu and Debian systems. You can see three types of deb packages: Ubuntu20.04, Ubuntu22.04 and Debian11. Please download the required version.

5plus-3.png

After downloading the zfs deb packages of the corresponding version, please upload them to the Linux system of the development board. For the upload method, please refer to the description in the section of the method of uploading files to the Linux system of the development board.

After the upload is complete, use the cd command in the command line of the development board linux system to enter the deb package directory, and then use the following command to install the zfs deb package.

orangepi@orangepi:~$ sudo apt install ./*.deb

After the installation is complete, use the following command to see the zfs-related kernel modules:

orangepi@orangepi:~$ ls /lib/modules/5.10.110-rockchip-rk3588/updates/dkms/icp.ko spl.ko zavl.ko zcommon.ko zfs.ko zlua.ko znvpair.ko zunicode.ko zzstd.ko

Then restart the Linux system to see that the zfs kernel module will be automatically loaded:

orangepi@orangepi:~$ lsmod | grep "zfs"

zfs                     2801664     0

zunicode             327680     1   zfs

zzstd                  471040     1   zfs

zlua                    139264     1   zfs

zcommon             69632     1   zfs

znvpair                 61440     2   zfs,zcommon

zavl                      16384     1   zfs

icp                     221184     1   zfs

spl                       77824     6   zfs,icp,zzstd,znvpair,zcommon,zavl

In Debian12, the default version of zfs is 2.1.11, so we can install zfs directly through the following command. Again, please make sure that the system has installed the deb package of the kernel header file before installation.

orangepi@orangepi:~$ sudo apt install -y zfsutils-linux zfs-dkms

Methods of creating ZFS pools

ZFS is based on storage pools, we can add multiple physical storage devices to the pool, and then allocate storage space from this pool.

The following content is demonstrated based on the development board connected to an NVMe SSD and a USB flash drive.

1) First, we can use the lsblk command to view all storage devices on the development board. The current development board is connected to an NVMe SSD and a U disk. The output is as follows:

5plus-4.png

2) Then enter the following command to create a ZFS pool, including two storage devices, NVMe SSD and U disk

orangepi@orangepi:~$ sudo zpool create -f pool1 /dev/nvme0n1 /dev/sda

3) 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

5plus-5.png

4) Then execute df -h to see that pool1 is mounted to the /pool1 directory

orangepi@orangepi:~$ df -h
Filesystem                 Size     Used Avail Use% Mounted on
tmpfs                    1.6G     18M 1.6G 2% /run
/dev/mmcblk0p2     29G     6.0G 22G 22% /
tmpfs                    7.7G     46M 7.7G 1% /dev/shm
tmpfs                    5.0M     4.0K 5.0M 1% /run/lock
tmpfs                    7.7G     944K 7.7G 1% /tmp
/dev/mmcblk0p1     1022M     115M 908M 12% /boot
/dev/zram1                 188M     4.5M 169M 3% /var/log
tmpfs                    1.6G     80K 1.6G 1% /run/user/1000
pool1                    489G     9.3M 489G 1% /pool1

5) Use the following command to see that the file system type of pool1 is zfs

orangepi@orangepi:~$ mount | grep pool1

pool1 on /pool1 type zfs (rw,xattr,noacl)

6) Then we can test copying a file to the ZFS pool

orangepi@orangepi:~$ sudo cp -v /usr/local/test.mp4 /pool1/

'/usr/local/test.mp4' -> '/pool1/test.mp4'

Test the data deduplication function of ZFS

1) The data deduplication function of ZFS is disabled by default, we need to execute the following command to enable it

orangepi@orangepi:~$ sudo zfs set dedup=on pool1

2) Then do a simple test, first enter pool1, and then execute the following command to generate a random file with a size of 1G

orangepi@orangepi:~$ cd /pool1/
root@orangepi:/pool1$ sudo dd if=/dev/urandom of=test.1g bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 5.04367 s, 213 MB/s

3) Then use the following command to copy 1000 random files of size 1G

root@orangepi:/pool1$ for ((i=0; i<1000; i++)); do sudo cp test.1g $i.test.1g; done

4) Then use du -lh to see that there are currently 1002G of data in the pool, but in fact the size of the ZFS pool is only 504GB (the total capacity of SSD+U disk), which cannot hold such a large amount of data

root@orangepi:/pool1$ du -lh

1002G

5) Then use the zpool list command to see that only 1.01G is actually occupied, because these 1001 files are all duplicates, indicating that the data deduplication function is effective.

5plus-6.png

Test the data compression function of ZFS

1) Because the stored data is different, the disk space saved by compression will also be different, so we choose to compress relatively large plain text files for compression testing, and execute the following commands to pack the /var/log/ and /etc/ directories into a tarball

orangepi@orangepi:~$ cd /pool1/

root@orangepi:/pool1$ sudo tar -cf text.tar /var/log/ /etc/

2) Then the file size that can be seen through the ls -lh command and the space occupied in the ZFS pool are both 27M

5plus-7.png

3) Then we enable compression in the ZFS pool pool1

root@orangepi:/pool1$ sudo zfs set compression=lz4 pool1

4) Then execute the following command again to package the /var/log/ and /etc/ directories into a tar package

root@orangepi:/pool1$ sudo tar -cf text.tar /var/log/ /etc/

5) 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

5plus-8.png

The method of shutting down and restarting the development board

  1. In the process of running the Linux system, if the Type-C power supply is directly out of power, it may cause the file system to lose certain data or damage. Therefore, please use the poweroff command to turn off the linux system of the development board before power off. Then Unplug the power supply.

    orangepi@orangepi:~$ sudo poweroff

  2. 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 turn off.

    Plus5-img446.png

  3. Note that the Linux desktop system will pop up the confirmation box shown in the figure below after pressing the buttons. You need to click the Shut Down option to shut down.

    Plus5-img447.png
  1. After shutting down, press the switch button on the development board to turn on.

    Plus5-img446.png

  2. Restart the command of the Linux system.

    orangepi@orangepi:~$ sudo reboot

Ubuntu22.04 Gnome Wayland Desktop system instructions

ubuntu22.04 gnome image default pre -installed PanFork Mesa user space library, pre -installed Kodi player and Chromium browser support hard solution video.

It should be noted that this image needs to be used under Wayland. If you need to use X11, select the XFCE type image.

Ubuntu22.04 GNOME desktop system adaptation situation

Function Ubuntu22.04 Gnome Wayland
HDMI TX1video OK
HDMI TX1 Audio OK
HDMI TX2 video OK
HDMI TX2 Audio OK
HDMI RX video OK
HDMI RX Audio OK
USB2.0X2 OK
USB3.0X2 OK
2.5G PCIe network port X2 OK
2.5G PCIe network port light OK
Debug serial port OK
RTC chip OK
FAN Fan interface OK
eMMC Extension ports OK
AP6275P-WIFI OK
AP6275P-BT OK
AX200-WIFI OK
AX200-BT OK
AX210-WIFI OK
AX210-BT OK
RTL8852BE-WIFI OK
RTL8852BE-BT OK
MaskROM button OK
Type-C to USB3.0 OK
Type-C ADB Function OK
Type-C DP video OK
Type-C DP Audio OK
Switch button OK
Infrared function OK
Three -color LED light OK
MIC on board OK
Headphones play OK
Headset recording OK
SPK trumpet OK
40PIN GPIO OK
40PIN I2C OK
40PIN SPI OK
40PIN UART OK
40PIN CAN OK
40PIN PWM OK
TF card startup OK
SPI+NVMe startup OK
OV13850 Camera OK
OV13855 Camera OK
GPU OK
VPU OK
NPU OK
REBOOT Command restart OK
Poweroff Command shutdown OK
MIPI LCD show OK
MIPI LCD touch OK
Watch Dog Test OK
Chromium Hard solution video OK
MPV Hard solution video OK
Kodi Hard solution video OK

Confirm that the current window system used by the system is Wayland

  1. The system used by the system default is Wayland, and the confirmation method is shown below:

    1. First open the settings

      Plus5-img448.png

    2. Then select about, if the Wayland description settings displayed by Windowing System in a column are correct

      Plus5-img449.png

  2. When the Log Out is out of the system, it will enter the login interface below

    Plus5-img450.png

  3. Please click the location shown below before logging in to the system again

    Plus5-img451.png

  4. Then select Ubuntu on Wayland and enter the password login system

    Plus5-img452.png

Switch the method of default audio equipment

  1. Open the settings first

    Plus5-img448.png

  2. Then select Sound, and then select the audio device you want to use in Output Device

    Plus5-img453.png

GPU test method

  1. Open a terminal on the desktop, and then enter the glmark2 command. If you can see the Panfros after GL_VERDOR, This shows that it is used in GPU.

    orangepi@orangepi:~$ glmark2

    Plus5-img454.png

  2. glmark2 running score test is generally more than 1,000 points

    Plus5-img455.png

  3. Run gpu_load.sh script to view the current load of the GPU

    orangepi@orangepi:~$ gpu_load.sh

    Plus5-img456.png

Chromium browser hard solution to play video test method

  1. First open the chromium browser

    Plus5-img457.png

  2. Then enter chrome://gpu in the Chromium browser to view the support of GPU and video decoding

    Plus5-img458.png

  3. Then you can open a video website to play a video file, or enter the following path name player to play a test video file in the browser.

    /usr/local/test.mp4

  4. When playing the video, you can run the vpu_debug.sh script in the terminal. If there is a print output in the lower right corner of the figure below, it means that there is a hardware to decode the video.

    orangepi@orangepi:~$ vpu_debug.sh

    Plus5-img459.png

Kodi hard solution to play video test method

Note that there will be problems with the Kodi display directly on the Wayland desktop. Please open Kodi strictly according to the following method.

  1. First log in the system

    Plus5-img460.png Plus5-img461.png

  2. When the login system will enter the login interface below

    Plus5-img450.png

  3. Then click the location shown in the figure below

    Plus5-img451.png

  4. Then select Kodi Wayland, then enter the password login system

    Plus5-img462.png

  5. The interface after Kodi is opened is displayed as shown below

    Plus5-img463.png

  6. Then click Settings

    Plus5-img464.png

  7. Then select Player

    Plus5-img465.png

  8. Then select Videos, and then click Standard in the lower left corner

    Plus5-img466.png

  9. After clicking twice, it will be switched to the Expert mode. The specific display is shown in the figure below

    Plus5-img467.png

  10. Then open the Allow using DRM PRIME decoder in the Processing settings

    Plus5-img468.png

  11. Then let's introduce a system's own test video test. You can also upload the video you want to play to the system, and then import and play

    1. First enter the main interface, then select Movies

      Plus5-img469.png

    2. Then choose Add videos...

      Plus5-img470.png

    3. Then choose Browse

      Plus5-img471.png

    4. Then choose Root filesystem

      Plus5-img472.png

    5. Then choose usr

      Plus5-img473.png

    6. Then choose local

      Plus5-img474.png

    7. Then choose OK

      Plus5-img475.png

    8. Then choose OK

      Plus5-img476.png

    9. Then choose OK

      Plus5-img477.png

    10. Then enter the Local folder

      Plus5-img478.png

    11. Then you can play test.mp4 test video

      Plus5-img479.png

  12. When playing the video, you can run the vpu_debug.sh script under the command line (via SSH or serial port). If there is a print output below, it means that there is a hardware to decode the video

    orangepi@orangepi:~$ vpu_debug.sh

    [ 1830.938378] rk_vcodec: fdc48100.rkvdec-core:1 session 3573:2 time: 2728 us

    [ 1830.938461] rk_vcodec: fdc38100.rkvdec-core:0 session 3573:2 time: 2617 us

    [ 1830.941179] rk_vcodec: fdc48100.rkvdec-core:1 session 3573:2 time: 2661 us

    [ 1830.941777] rk_vcodec: fdc38100.rkvdec-core:0 session 3573:2 time: 2708 us

    [ 1830.944727] rk_vcodec: fdc48100.rkvdec-core:1 session 3573:2 time: 3444 us

    [ 1830.945211] rk_vcodec: fdc38100.rkvdec-core:0 session 3573:2 time: 3331 us

    [ 1830.970563] rk_vcodec: fdc48100.rkvdec-core:1 session 3573:2 time: 2547 us

    [ 1831.199650] rk_vcodec: fdc38100.rkvdec-core:0 session 3573:2 time: 2703 us

  13. Play test.mp4 video file CPU occupation rates of about 20%~ 30%.

    Plus5-img480.png

Ubuntu22.04 Gnome to install ROS 2 Humble

  1. You can install ROS2 with install_ros.sh script

    orangepi@orangepi:~$ install_ros.sh ros2

  2. install_ros.sh script will automatically run the ros2 -h command after ros2 is installed. If you can see the printing below

    usage: ros2 [-h] Call `ros2 <command> -h` for more detailed usage. ...


    ros2 is an extensible command-line tool for ROS 2.


    optional arguments:

    -h, --help show this help message and exit


    Commands:

    action Various action related sub-commands

    bag Various rosbag related sub-commands

    component Various component related sub-commands

    daemon Various daemon related sub-commands

    doctor Check ROS setup and other potential issues

    interface Show information about ROS interfaces

    launch Run a launch file

    lifecycle Various lifecycle related sub-commands

    multicast Various multicast related sub-commands

    node Various node related sub-commands

    param Various param related sub-commands

    pkg Various package related sub-commands

    run Run a package specific executable

    security Various security related sub-commands

    service Various service related sub-commands

    topic Various topic related sub-commands

    wtf Use `wtf` as alias to `doctor`


    Call `ros2 <command> -h` for more detailed usage.

  3. Then you can use the test_ros.sh script to test whether the ROS 2 is successfully installed. If you can see the printing below, it means that the ROS 2 can run normally

    orangepi@orangepi5plus:~$ test_ros.sh

    [INFO] [1671174101.200091527] [talker]: Publishing: 'Hello World: 1'

    [INFO] [1671174101.235661048] [listener]: I heard: [Hello World: 1]

    [INFO] [1671174102.199572327] [talker]: Publishing: 'Hello World: 2'

    [INFO] [1671174102.204196299] [listener]: I heard: [Hello World: 2]

    [INFO] [1671174103.199580322] [talker]: Publishing: 'Hello World: 3'

    [INFO] [1671174103.204019965] [listener]: I heard: [Hello World: 3]

  4. Run the following command to open rviz2

    orangepi@orangepi:~$ source /opt/ros/humble/setup.bash

    orangepi@orangepi:~$ ros2 run rviz2 rviz2

    Plus5-img481.png

  5. Reference document

    http://docs.ros.org/en/humble/index.html

    http://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html

Set the Chinese environment and the method of installing the Chinese input method

  1. Open the settings first

    Plus5-img448.png

  2. Then find the Region & Language option, and then click Manage Installed Languages options

    Plus5-img482.png

  3. 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 the dragging is shown in the figure below:

    Plus5-img483.png

  4. Then select the Apply System-Wide to apply the Chinese settings to the entire system

    Plus5-img484.png

  5. Then restart the linux system to make the configuration effective

  6. After re -entering the system, please choose not to ask me again at the interface below, and then determine whether the standard folder should be updated to Chinese according to your preference

    Plus5-img485.png

  7. Then you can see that the desktop is displayed as Chinese

    Plus5-img486.png

  8. Then open the Fcitx5 configuration program

    Plus5-img487.png

  9. Then choose to use Pinyin input method

    Plus5-img488.png

  10. The interface after selecting is shown below, then click OK

    Plus5-img489.png

  11. Then we can open the Chinese input method of Geany test, and the way to open is shown in the figure below

    Plus5-img490.png

  12. 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

    Plus5-img491.png

Orange Pi OS Arch system use instructions

Orange Pi OS Arch system adaptation situation

Function OPi OS Arch Gnome OPi OS Arch Xfce(To be released
HDMI TX1 video OK OK
HDMI TX1 Audio OK OK
HDMI TX2 video OK OK
HDMI TX2 Audio OK OK
HDMI RX video OK OK
HDMI RX Audio OK OK
USB2.0X2 OK OK
USB3.0X2 OK OK
2.5G PCIe network port X2 OK OK
2.5G PCIe network portlight OK OK
Debug serial port OK OK
RTC chip OK OK
FAN Fan interface OK OK
eMMC Extension ports OK OK
AP6275P-WIFI OK OK
AP6275P-BT OK OK
AX200-WIFI OK OK
AX200-BT OK OK
AX210-WIFI OK OK
AX210-BT OK OK
RTL8852BE-WIFI OK OK
RTL8852BE-BT OK OK
MaskROM button OK OK
Type-C to USB3.0 OK OK
Type-C DP video OK OK
Type-C DP Audio OK OK
Switch button OK OK
Infrared function OK OK
Three -color LED light OK OK
Board MIC OK OK
Headphones play OK OK
Headset recording OK OK
SPK trumpet OK OK
40PIN GPIO OK OK
40PIN I2C OK OK
40PIN SPI OK OK
40PIN UART OK OK
40PIN CAN OK OK
40PIN PWM OK OK
TF card startup OK OK
SPI+NVME start up OK OK
OV13850 Camera OK OK
OV13855 Camera OK OK
GPU OK OK
VPU OK OK
NPU NO NO
REBOOT Command restart OK OK
Poweroff Command shutdown OK OK
MIPI LCD show OK OK
MIPI LCD touch OK OK
Watch Dog Test OK OK
Chromium Hard solution video NO NO
MPV Hard solution video OK OK

How to use the M.2 E-Key PCIE WIFI6+Bluetooth module

  1. First of all, you need to buy a PCIE WIFI6+Bluetooth module
Serial number model Physical picture Supportive OS
1 AX200

(PCIE+USB Port)

Plus5-img230.png Debian

Ubuntu

OpenWRT

OPi OS Arch

2 AX210

(PCIE+USB Port)

Plus5-img231.png Debian

Ubuntu

OpenWRT

OPi OS Arch

3 RTL8852BE

(PCIE+USB Port)

Plus5-img232.png Debian

Ubuntu

Android12

OPi OS Arch

OPi OS Droid

Pay attention to RTL8852BE, please do not buy the module shown in the figure below, there will be problems after testing.

Plus5-img232-10.png
  1. Then insert the WiFi module into the M.2 E-Key interface of the development board and fix it

    Plus5-img233.png

  2. If everything is normal after the system starts, use the following command to see the WIFI device nodea

    [orangepi@orangepi ~]$ ip a

    ......

    4: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000

    link/ether 38:7a:0e:e3:80:05 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.237/24 brd 192.168.1.255 scope global dynamic noprefixroute wlan0
    valid_lft 42938sec preferred_lft 42938sec
    inet6 fe80::a098:5942:16e:e817/64 scope link noprefixroute
    valid_lft forever preferred_lft forever
  3. The steps connected to the wifi are shown below:

    1. First click the area in the upper right corner of the desktop

      Plus5-img492.png

    2. Then choose Wi-Fi

      Plus5-img493.png

    3. Then select the WIFI you want to connect

      Plus5-img494.png

    4. Then enter the password of the wifi, and click Connect

      Plus5-img495.png

    5. Then enter the following interface to see the wifi connection

      Plus5-img496.png

  4. Example of Bluetooth use:

    1. First click the area in the upper right corner of the desktop

      Plus5-img492.png

    2. Then open the settings

      Plus5-img497.png

    3. Then select Bluetooth in the settings, and make sure that the switch button in the upper right corner of the Bluetooth is opened

      Plus5-img498.png

    4. Then choose the Bluetooth device you want to configure the right, such as pairing with Android phones

      Plus5-img499.png

    5. Then click Confirm, the mobile phone also needs to confirm the pairing

      Plus5-img500.png

    6. The display of the Bluetooth and Android phone is shown below:

      Plus5-img501.png

    7. Then click the paired Bluetooth device to pop up the operating interface shown in the figure below

      Plus5-img502.png

    8. Click Send Files... you can send a file to the phone

    9. Plus5-img503.png

    1. The schematic diagram of the Bluetooth sent pictures to the phone is shown below:

      Plus5-img504.png

How to use 10.1 inch MIPI LCD screen

10.1 -inch MIPI screen assembly method

  1. First prepare the required accessories

    1. 10.1 -inch MIPI LCD display+touch screen (common to OPI5/OPI5B)

      Plus5-img417.png

    2. Screen divert+31pin to 40pin exhaust

      Plus5-img418.png

    3. 30pin mipi line

      Plus5-img419.png

    4. 12pin touch screen line

      Plus5-img420.png

  2. According to the figure below, the 12PIN touch screen row, 31PIN to 40Pin line, and 30Pin MIPI cables get on the screen dial board. Pay attention to the blue insulation of the touch screen row line face to down. If an error is connected, it will cause no display or unable to touch..

    Plus5-img421.png

  3. Place the connected rotor connected to the puzzle on the MIPI LCD screen according to the figure below, and connect the MIPI LCD screen and the rotary board through 31PIN to 40Pin row

  4. Plus5-img422.png

  1. Then connect the touch screen and the rotor board through the 12PIN touch screen line, pay attention to the orientation of the insulating surface

    Plus5-img423.png

  2. Finally connect to the LCD interface of the development board through the 30PIN MIPI duct.

    Plus5-img424.png

    Note that the touch interface below is not used for the LCD MIPI screen. It is currently a spare interface and cannot be used.

    Plus5-img425.png

How to open 10.1 -inch MIPI LCD screen configuration

  1. The position of the interface of the MIPI LCD screen on the development board is shown in the figure below

    Plus5-img426.png

  2. OPi OS Arch image default is not to open the mipi lcd screen configuration. If you need to use the mipi lcd screen, you need to open it manually. The method of opening the mipi lcd configuration is shown below:

    1. First add the following configuration in/boot/extlinux/extlinux.conf

      [orangepi@orangepi ~]$ sudo vim /boot/extlinux/extlinux.conf

      LABEL Orange Pi

      LINUX /Image

      FDT /dtbs/rockchip/rk3588-orangepi-5-plus.dtb

      FDTOVERLAYS /dtbs/rockchip/overlay/rk3588-opi5plus-lcd.dtbo #The configuration that needs to be added

    2. Then restart the OPi OS Arch system

  3. After restarting, you can see the display of the LCD screen as shown below (default vertical screen):

  4. Plus5-img505.png

Method of rotating display and touch direction

  1. First click the area in the upper right corner of the desktop

    Plus5-img492.png

  2. Then open the settings

    Plus5-img497.png

  3. Then choose Displays

    Plus5-img506.png

  4. Then select the direction you want to rotate in the Orientation of Displays

    Plus5-img507.png

  5. Then choose Apply

    Plus5-img508.png

  6. Then you can see that the screen has been rotated. At this time, you need to choose Keep Changes to determine the rotation

    Plus5-img509.png

  7. The display of the LCD screen after 90 degrees is shown below:

    Plus5-img510.png

  8. The touch function of the OPi OS Arch system LCD screen will rotate with the rotation of the display direction without other settings.

OV13850 and OV13855 MIPI test methods for testing

At present, the development board supports two MIPI cameras, OV13850 and OV13855. The specific pictures are shown below:

  1. OV13850 camera of 13 million MIPI interface

    Plus5-img23.png

  2. 13 million MIPI interface OV13855 camera

    Plus5-img24.png

The rotary board used by OV13850 and OV13855 cameras is the same as the FPC cable, but the two cameras are different from the position on the rotary board. The FPC lines are shown in the figure below. Please note that the FPC line is directed. It is marked that the TO MB must be inserted into the camera interface of the development board. It is marked that the end of TO CAMERA needs to be inserted on the camera transfer board

Plus5-img436.png

There are a total of 3 cameras on the camera to connect to the board, which can only be used at the same time, as shown in the figure below, of which:

  1. No. 1 interface is connected to the OV13850 camera

  2. No. 2 interface connected OV13855 camera

  3. No. 3 interface is not used, just ignore it.

  4. Plus5-img437.png

Orange Pi 5 Plus development board has a total of 1 camera interface, which is shown below:

Plus5-img438.png

The method of the camera inserted on the development board interface is shown below:

Plus5-img439.png

After connecting the camera to the development board, we can use the following method to test the next camera:

  1. First add the following configuration in /boot/extlinux/extlinux.conf

    [orangepi@orangepi ~]$ sudo vim /boot/extlinux/extlinux.conf

    LABEL Orange Pi

    LINUX /Image

    FDT /dtbs/rockchip/rk3588-orangepi-5-plus.dtb

    FDTOVERLAYS /dtbs/rockchip/overlay/rk3588-opi5plus-ov13850.dtbo

    The red font demonstrates the configuration of the camera interface ov13850. The other configurations are shown in the table below, and the corresponding DTBO configuration can be added behind FDTOVERLAYS.

  2. Camera Dtbo configuration
    connect ov13850 /dtbs/rockchip/overlay/rk3588-opi5plus-ov13850.dtbo
    connect ov13855 /dtbs/rockchip/overlay/rk3588-opi5plus-ov13855.dtbo
  1. Then restart the OPi OS Arch system

  2. Then open a terminal in the desktop system and run the script below

    orangepi@orangepi:~$ test_camera.sh

  3. Then you can see the preview of the camera

    Plus5-img511.png

Set the Chinese environment and the method of installing the Chinese input method

  1. First click the area in the upper right corner of the desktop

    Plus5-img492.png

  2. Then open the settings

    Plus5-img512.png

  3. Then find the Region & Language option

    Plus5-img513.png

  4. Then choose Language

    Plus5-img514.png

  5. Then select Chinese

    Plus5-img515.png

  6. then click Select

    Plus5-img516.png

  7. Then click Logout... log in to the system, and then log in to the system

    Plus5-img517.png

  8. Then you can see that the desktop is displayed as Chinese

    Plus5-img518.png

  9. Then install fcitx-im and fcitx-configtool

    [orangepi@orangepi ~]$ sudo pacman -S fcitx-im fcitx-configtool

    :: There are 3 members in the group fcitx-im:

    :: Software warehouse Community

    1) fcitx 2) fcitx-qt5 3) fcitx-qt6


    Enter a selection (default = all selected): 1

  10. Then open the Fcitx configuration program

    Plus5-img519.png

    Plus5-img520.png

  11. Then add Google Pinyin input method

    Plus5-img521.png

    Plus5-img522.png

  12. Then we can open a terminal test in the Chinese input method. After opening the terminal, if the English input method is still in English, we can switch to the Chinese input method through the Ctrl+Space shortcut keys, and then you can enter Chinese

    Plus5-img523.png

HDMI IN test method

  1. The position of the development board HDMI In interface is shown below:

    Plus5-img265.png

  2. First use the HDMI to HDMI line shown below to output the HDMI output of other devices to the HDMI In interface of the development board

    Plus5-img11.png

  3. The OPi OS Arch system HDMI in function is closed by default, and the opening method is shown below:

    1. First add the following configuration in /boot/extlinux/extlinux.conf

      [orangepi@orangepi ~]$ sudo vim /boot/extlinux/extlinux.conf

      LABEL Orange Pi

      LINUX /Image

      FDT /dtbs/rockchip/rk3588-orangepi-5-plus.dtb

      FDTOVERLAYS /dtbs/rockchip/overlay/rk3588-hdmirx.dtbo #The configuration that needs to be added

    2. Then restart the OPi OS Arch system

  4. After restarting into the system, open a terminal on the desktop, and then run the test_hdmiin.sh script

    [orangepi@orangepi ~]$ test_hdmiin.sh

  5. Then you can see the input screen of the HDMI in (the HDMI in in the figure below shows the screen of the OPI5 development board HDMI output, and it is playing a video at this time). test_hdmiin.sh script defaults to the audio entered by HDMI in to the HDMI_TX1, HDMI_TX2 and ES8388 (representing speakers or headphones) of the development board.

    Plus5-img524.png

  6. In addition to testing HDMI IN using test_hdmiin.sh, we can also use Qt V4L2 test Utility to test HDMI in video (this method cannot test audio at present). The detailed steps are shown below:

    1. Enter the application list first

      Plus5-img525.png

    2. Then find Qt V4L2 test Utility and open it

      Plus5-img526.png

    3. Then make sure Qt V4L2 test Utility recognizes the HDMI In device

      Plus5-img527.png

    4. Then click the location shown in the figure below to see the video entered by HDMI In

      Plus5-img528.png

    5. The video window entered by HDMI In is shown below:

      Plus5-img529.png

How to install wiringOP

Note that Wiringop has been pre -installed in the OPI OS Arch image released by Orange PI. Unless Wiringop's code is updated, it is not necessary to re -download and compile and install it,just use it directly.

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

Plus5-img530.png

wiringOP is currently adapted to set the GPIO port input output, set the GPIO port output high and low level, and set the function of pulling and down resistance. It is impossible to use functions like hardware PWM.

  1. Download the code of wiringOP

    [orangepi@orangepi ~]$ sudo pacman -Syy git

    [orangepi@orangepi ~]$ git clone https://github.com/orangepi-xunlong/wiringOP.git -b next

    Note that Orange Pi 5 Plus needs to download the code of the wiringOP next branch, please don't miss the parameter of -b next.

    If you have a problem with the download code from github, you can download the source code compression package of wiringOp.tar.gz in the official tools of the Orange Pi 5 Plus data download page

    Plus5-img531.png

  2. Compile and install wiringOP

    [orangepi@orangepi ~]$ sudo pacman -Syy make gcc

    [orangepi@orangepi ~]$ cd wiringOP

    [orangepi@orangepi wiringOP]$ sudo ./build clean

    [orangepi@orangepi wiringOP]$ sudo ./build

  3. Test the output of the GPIO Readall command as follows

    Plus5-img530.png

40 PIN interface GPIO, I2C, UART, SPI, CAN and PWM test

Note that if you need to set FDT Overlays to open multiple configurations at the same time, please use a space to write in a line like the red font configuration below.

[orangepi@orangepi ~]$ sudo vim /boot/extlinux/extlinux.conf

LABEL Orange Pi

LINUX /Image

FDT /dtbs/rockchip/rk3588s-orangepi-5.dtb

FDTOVERLAYS /dtbs/rockchip/overlay/rk3588-i2c1-m2.dtbo /dtbs/rockchip/overlay/rk3588-uart0-m2.dtbo

40 PIN GPIO port test

  1. A total of 28 GPIO ports can be used in the development board 40 PIN. Below is No. 7 pins -corresponding to GPIO1_D6 -corresponding WPI serial number 2 -as an example to demonstrate how to set the high and low level of the GPIO port

    Plus5-img532.png

  2. 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

    [orangepi@orangepi ~]$ gpio mode 2 out

  3. 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

    [orangepi@orangepi ~]$ gpio write 2 0

  4. 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 set to be successful

    [orangepi@orangepi ~]$ gpio write 2 1

  5. The setting method of other pins is similar. Just modify the serial number of the wpi serial number as the corresponding serial number.

40 PIN GPIO Port -to -Plattering resistance setting method

  1. Below the No. 7 pin — corresponding to GPIO1_D6 -corresponding WPI serial number 2 -to demonstrate how to set up and down pull -down resistance of the GPIO port

    Plus5-img532.png

  2. 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

    [orangepi@orangepi ~]$ gpio mode 2 in

  3. After the setting is set to input mode, execute the following command to set the GPIO port as the pull -down mode

    [orangepi@orangepi ~]$ gpio mode 2 up

  4. 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

    [orangepi@orangepi ~]$ gpio read 2

    1

  5. Then execute the following command to set the GPIO port as the drop-down mode

    [orangepi@orangepi ~]$ gpio mode 2 down

  6. Then enter the command below to read the level of the GPIO port. If the level is 0, it means that the drop -down mode is set successfully

    [orangepi@orangepi ~]$ gpio read 2

    0

40 PIN SPI test

  1. As can be seen from the figure below, the SPI available for Orange Pi 5 Plus is SPI0 and SPI4

    Plus5-img304.png

  2. The corresponding pins corresponding to SPI0 and SPI4 are shown in the table below. SPI4_M1 and SPI4_M2 can only be used at the same time, and they cannot be used at the same time. They are the same SPI4, but they are just getting different pins. Please don't think that they are two different SPI bus.

  3. SPI0_M2 to 40pin SPI4_M1 to 40pin SPI4_M2 to 40pin
    MOSI No. 19 pins No. 12 pins No. 8 pins
    MISO No. 21 pins No. 31 pins No. 10 pins
    CLK No. 23 pins No. 35 pins No. 22 pins
    CS0 No. 24 pins No. 40 pins No. 31 pins
    CS1 No. 26 pins No. 38 pins None
  1. In the Linux system, the SPI in 40 PIN is closed by default, and it needs to be opened manually to use. The detailed steps are shown below:

    1. First add the following configuration to the /boot/extlinux/extlinux.conf

      [orangepi@orangepi ~]$ sudo vim /boot/extlinux/extlinux.conf

      LABEL Orange Pi

      LINUX /Image

      FDT /dtbs/rockchip/rk3588-orangepi-5-plus.dtb

      FDTOVERLAYS /dtbs/rockchip/overlay/rk3588-spi0-m2-cs0-cs1-spidev.dtbo

      The red font demonstrated the configuration of opening the SPI0-M2 and using the CS0 and CS1 pin. The other configurations are shown in the table below, and the corresponding dtbo configuration can be added to FDTOVERLAYS

    2. SPI bus dtbo configuration
      SPI0_M2-cs0 /dtbs/rockchip/overlay/rk3588-spi0-m2-cs0-spidev.dtbo
      SPI0_M2-cs1 /dtbs/rockchip/overlay/rk3588-spi0-m2-cs1-spidev.dtbo
      SPI0_M2-cs0-cs1 /dtbs/rockchip/overlay/rk3588-spi0-m2-cs0-cs1-spidev.dtbo
      SPI4_M1-cs0 /dtbs/rockchip/overlay/rk3588-spi4-m1-cs0-spidev.dtbo
      SPI4_M1-cs1 /dtbs/rockchip/overlay/rk3588-spi4-m1-cs1-spidev.dtbo
      SPI4_M1-cs0-cs1 /dtbs/rockchip/overlay/rk3588-spi4-m1-cs0-cs1-spidev.dtbo
      SPI4_M2-cs0 /dtbs/rockchip/overlay/rk3588-spi4-m2-cs0-spidev.dtbo
    1. Then restart the OPi OS Arch system
  1. After the restart, enter the system first to check whether there is a spidevx.x device node in the Linux system. If it exists, it means that the SPI has been set and can be used directly

    [orangepi@orangepi ~]$ ls /dev/spidev*

    /dev/spidev0.0 /dev/spidev0.1 /dev/spidev4.0 /dev/spidev4.1

    The above is the result displayed after opening the spi0-m2-cs0-cs1-spidev and spi4-m1-cs0-cs1-spidev

  2. Then do not connect the SPI0 or SPI4 MOSI and MISO pins, and run the output result of the spidev_teest as shown below. You can see that the data of TX and RX are inconsistent

    [orangepi@orangepi ~]$ sudo spidev_test -v -D /dev/spidev4.0

    Or

    [orangepi@orangepi ~]$ sudo spidev_test -v -D /dev/spidev0.0

    spi mode: 0x0

    bits per word: 8

    max speed: 500000 Hz (500 KHz)

    TX | FF FF FF FF FF FF 40 00 00 00 00 95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D | ......@.…▒..................▒.

    RX | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ............................….

  3. Then the output of spidev_test, which is then connected to SPI0 or SPI4 MOSI and MISO, is as follows. You can see that the sending and receiving data can be seen, indicating that the SPI loop test is normal

    [orangepi@orangepi ~]$ sudo spidev_test -v -D /dev/spidev4.0

    Or

    [orangepi@orangepi ~]$ sudo spidev_test -v -D /dev/spidev0.0

    spi mode: 0x0

    bits per word: 8

    max speed: 500000 Hz (500 KHz)

    TX | FF FF FF FF FF FF 40 00 00 00 00 95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D | ......@.…▒..................▒.

    RX | FF FF FF FF FF FF 40 00 00 00 00 95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D | ......@.…▒..................▒.

40 pin I2C test

  1. From the table below, the I2C available for Orange Pi 5 Plus is I2C2, I2C4, I2C5, and I2C8. There are four groups of I2C bus

    Plus5-img304.png

  2. The corresponding pins corresponding to the 4 group I2C bus are shown below. I2C2_M0 and I2C2_M4 can only be used at the same time, and they cannot be used at the same time. They are the same I2C2, but they only receive different pins. Please don't think that they are two different I2C2 bus

  3. I2C bus SDA to 40pin SCL to 40pin
    I2C2_M0 No. 3 pin No. 5 pin
    I2C2_M4 No. 10 pin No. 8 pin
    I2C4_M3 No. 22 pin No. 32 pin
    I2C5_M3 No. 27 pin No. 28 pin
    I2C8_M2 No. 29 pin No. 7 pin
  1. In the Linux system, the I2C bus in 40 PIN is closed by default, and it needs to be opened manually to use. The detailed steps are shown below:

    1. First add the following configuration in /boot/extlinux/extlinux.conf.

      [orangepi@orangepi ~]$ sudo vim /boot/extlinux/extlinux.conf

      LABEL Orange Pi

      LINUX /Image

      FDT /dtbs/rockchip/rk3588-orangepi-5-plus.dtb

      FDTOVERLAYS /dtbs/rockchip/overlay/rk3588-i2c2-m0.dtbo

      The red font on the above demonstrates the configuration of the i2c2-m0. The other configurations are shown in the table below, and the corresponding dtbo configuration can be added behind FDTOVERLAYS

    2. I2C bus dtbo configuration
      I2C2_M0 /dtbs/rockchip/overlay/rk3588-i2c2-m0.dtbo
      I2C2_M4 /dtbs/rockchip/overlay/rk3588-i2c2-m4.dtbo
      I2C4_M3 /dtbs/rockchip/overlay/rk3588-i2c4-m3.dtbo
      I2C5_M3 /dtbs/rockchip/overlay/rk3588-i2c5-m3.dtbo
      I2C8_M2 /dtbs/rockchip/overlay/rk3588-i2c8-m2.dtbo
    1. Then restart the OPi OS Arch system
  1. After starting the linux system, first confirm that there is a device node that needs to be used under the /dev

    orangepi@orangepi:~$ ls /dev/i2c-*

  2. Then connect a I2C device on the I2C pin corresponding to the 40 PIN interface

  3. Then use the i2cdetect -y command to detect the address of the connected i2c device, which means that the i2c can be used normally

    [orangepi@orangepi ~]$ sudo pacman -S i2c-tools #First of all, I2C tools

    [orangepi@orangepi ~]$ sudo i2cdetect -y 2 #i2c2 test command

    [orangepi@orangepi ~]$ sudo i2cdetect -y 4 #i2c4 test command

    [orangepi@orangepi ~]$ sudo i2cdetect -y 5 #i2c5 test command

    [orangepi@orangepi ~]$ sudo i2cdetect -y 8 #i2c8 test command

40 Pin's UART test

  1. As can be seen from the table below, the UART available for Orange Pi 5 Plus is UART1, UART3, UART4, UART6, UART7, and UART8. There are 6 sets of UART bus

    Plus5-img304.png

  2. In the Linux system, the UART in 40 pin is closed by default, and it needs to be opened manually to use. The detailed steps are shown below:

    1. First add the following configuration to the /boot/extlinux/extlinux.conf

      [orangepi@orangepi ~]$ sudo vim /boot/extlinux/extlinux.conf

      LABEL Orange Pi

      LINUX /Image

      FDT /dtbs/rockchip/rk3588-orangepi-5-plus.dtb

      FDTOVERLAYS /dtbs/rockchip/overlay/rk3588-uart1-m1.dtbo

      The red font demonstrates the configuration of the uart1-m1. The other configurations are shown in the table below, and the corresponding dtbo configuration can be added behind FDTOVERLAYS

    2. UART bus dtbo configuration
      UART1_M1 /dtbs/rockchip/overlay/rk3588-uart1-m1.dtbo
      UART3_M1 /dtbs/rockchip/overlay/rk3588-uart3-m1.dtbo
      UART4_M2 /dtbs/rockchip/overlay/rk3588-uart4-m2.dtbo
      UART6_M1 /dtbs/rockchip/overlay/rk3588-uart6-m1.dtbo
      UART7_M2 /dtbs/rockchip/overlay/rk3588-uart7-m2.dtbo
      UART8_M1 /dtbs/rockchip/overlay/rk3588-uart8-m1.dtbo
    1. Then restart the OPI OS Arch system
  1. After entering the Linux system, first confirm whether there is a device node corresponding to UART under the /dev

    [orangepi@orangepi ~]$ ls /dev/ttyS*

  2. Then start testing the UART interface, and first use the RX and TX pins of the UART interface to be tested by DuPont

  3. UART bus RX to 40pin TX to 40pin
    UART1_M1 No. 27 pin No. 28 pin
    UART3_M1 No. 18 pin No. 16 pin
    UART4_M2 No. 19 pin No. 23 pin
    UART6_M1 No. 10 pin No. 8 pin
    UART7_M2 No. 24 pin No. 26 pin
    UART8_M1 No. 40 pin No. 35 pin
  1. Use the gpio serial command to test the loop function of the serial port as shown below. If you can see the printed below, it means that the serial port communication is normal (TTYSX needs to be replaced with a node name corresponding to UART, please do not copy it)

    [orangepi@orangepi ~]$ sudo gpio serial /dev/ttySX

    [sudo] password for orangepi: #Enter the password here


    Out: 0: -> 0

    Out: 1: -> 1

    Out: 2: -> 2

    Out: 3: -> 3

    Out: 4: -> 4

    Out: 5: -> 5^C

PWM test method

  1. From the table below, the PWMs available for Orange Pi 5 Plus include PWM0, PWM1, PWM11, PWM12, PWM13, and PWM14 a total of six PWM

    Plus5-img304.png

  2. The corresponding pins of PWM in 40pin are shown below. PWM0_M0 and PWM0_M2, PWM1_M0 and PWM1_M2, PWM14_M0 and PWM14_M2 can only be used at the same time. They cannot be used at the same time. They are the same PWM, but they only get different pins. Please think that they are two different PWM bus

  3. PWM bus Corresponding 40pin
    PWM0_M0 No. 5 pin
    PWM0_M2 No. 22 pin
    PWM1_M0 No. 3 pin
    PWM1_M2 No. 32 pin
    PWM11_M0 No. 12 pin
    PWM12_M0 No. 14 pin
    PWM13_M0 No. 16 pin
    PWM14_M0 No. 33 pin
    PWM14_M2 No. 7 pin
  1. In the Linux system, the PWM in 40 PIN is closed by default, and it needs to be opened manually to use. The detailed steps are shown below:

    1. First add the following configuration to the /boot/extlinux/extlinux.conf

      [orangepi@orangepi ~]$ sudo vim /boot/extlinux/extlinux.conf

      LABEL Orange Pi

      LINUX /Image

      FDT /dtbs/rockchip/rk3588-orangepi-5-plus.dtb

      FDTOVERLAYS /dtbs/rockchip/overlay/rk3588-pwm0-m0.dtbo

      The red font demonstrates the configuration of the pwm0-m0. The other configurations are shown in the table below, and the corresponding dtbo configuration can be added behind FDTOVERLAYS

    2. PWM bus Dtbo configuration
      PWM0_M0 /dtbs/rockchip/overlay/rk3588-pwm0-m0.dtbo
      PWM0_M2 /dtbs/rockchip/overlay/rk3588-pwm0-m2.dtbo
      PWM1_M0 /dtbs/rockchip/overlay/rk3588-pwm1-m0.dtbo
      PWM1_M2 /dtbs/rockchip/overlay/rk3588-pwm1-m2.dtbo
      PWM11_M0 /dtbs/rockchip/overlay/rk3588-pwm11-m0.dtbo
      PWM12_M0 /dtbs/rockchip/overlay/rk3588-pwm12-m0.dtbo
      PWM13_M0 /dtbs/rockchip/overlay/rk3588-pwm13-m0.dtbo
      PWM14_M0 /dtbs/rockchip/overlay/rk3588-pwm14-m0.dtbo
      PWM14_M2 /dtbs/rockchip/overlay/rk3588-pwm14-m2.dtbo
    1. Then restart the OPi OS Arch system
  1. After opening a pwm,In the /sys/class/pwm/, there will be an additional pwmchipX (x is a specific number). For example, after opening PWM14,viewing /sys/class/pwm/ down Pwmchipx will change from two to three.

    [orangepi@orangepi ~]$ ls /sys/class/pwm/

    pwmchip0 pwmchip1 pwmchip2

  2. Which pwmchip corresponds to pwm14 above? Let's first check out the output of ls /sys/class/pwm/ -l command, as shown below:

    Plus5-img533.png

  3. Then from the table below, the base address of the PWM14 register is FEBF0020, and then look at the output of the ls /sys/class/pwm/ -l command. You can see that the link in PWMCHIP2 is connected to Febf0020.PWM, so the PWM14 corresponds to PWMCHIP2

    Plus5-img318.png

  4. Then use the following command to allow the PWM14 to output a 50Hz square wave (please switch to the root user first, and then execute the following command)

  5. [root@orangepi ~]# echo 0 > /sys/class/pwm/pwmchip2/export

    [root@orangepi ~]# echo 20000000 > /sys/class/pwm/pwmchip2/pwm0/period

    [root@orangepi ~]# echo 1000000 > /sys/class/pwm/pwmchip2/pwm0/duty_cycle

    [root@orangepi ~]# echo 1 > /sys/class/pwm/pwmchip2/pwm0/enable

    Plus5-img319.png

  1. The other pwm testing methods in the pwm14 demonstration above are similar.

CAN's test method

How to open a can

  1. As can be seen from the table below, the Canal bus available for Orange Pi 5 Plus is CAN0 and CAN1

    Plus5-img320.png

  2. In the Linux system, the Can in 40 PIN is closed by default and needs to be opened manually to use. The detailed steps are shown below:

    1. First add the following configuration to the /boot/extlinux/extlinux.conf

      [orangepi@orangepi ~]$ sudo vim /boot/extlinux/extlinux.conf

      LABEL Orange Pi

      LINUX /Image

      FDT /dtbs/rockchip/rk3588-orangepi-5-plus.dtb

      FDTOVERLAYS /dtbs/rockchip/overlay/rk3588-can0-m0.dtbo

      The red font demonstrates the configuration of the can0-m0. The other configurations are shown in the table below, and the corresponding dtbo configuration can be added to FDTOVERLAYS

    2. CAN bus Dtbo configuration
      can0-m0 /dtbs/rockchip/overlay/rk3588-can0-m0.dtbo
      can1-m0 /dtbs/rockchip/overlay/rk3588-can1-m0.dtbo
    1. Then restart the OPI OS Arch system
  1. After entering the Linux system, using the sudo ifconfig -a command If you can see the CAN device node, it means that the CAN has been opened correctly

    [orangepi@orangepi ~]$ sudo pacman -Syy net-tools

    [orangepi@orangepi ~]$ sudo ifconfig -a

    can0: flags=128<NOARP> mtu 16

    unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 10 (UNSPEC)

    RX packets 0 bytes 0 (0.0 B)

    RX errors 0 dropped 0 overruns 0 frame 0

    TX packets 0 bytes 0 (0.0 B)

    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

    device interrupt 94


    can1: flags=128<NOARP> mtu 16

    unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 10 (UNSPEC)

    RX packets 0 bytes 0 (0.0 B)

    RX errors 0 dropped 0 overruns 0 frame 0

    TX packets 0 bytes 0 (0.0 B)

    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

    device interrupt 95

  2. The pins corresponding to the Can0 and Can1 are

  3. CAN0 CAN1
    TX Pin Corresponding to No. 5 pin in 40pin Corresponding to No. 18 pin in 40pin
    RX Pin Corresponding to No. 3 pin in 40pin Corresponding to No. 16 pin in 40pin
  1. Use Canalyst-II analyzer to test CAN receiving messages, please refer to the content of the one-section of the Canalyst-II analyzer to test receive and send message

Linux SDK——orangepi-build instructions

Compilation system requirements

We can cross-compile the Linux image of the development board on the x64 computer, or compile the Linux image of the development board on the Ubuntu22.04 system of the development board, please choose one according to your preference.

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.

Compile with the Ubuntu22.04 system of the development board

  1. The Linux SDK, namely orangepi-build, supports running on the Ubuntu 22.04 of the development board (other systems have not been tested), so before downloading orangepi-build, please first ensure that the Ubuntu version installed on the development board is Ubuntu 22.04. The command to check the Ubuntu version installed on the development board is as follows. If the Release field does not display 22.04, it means that the current Ubuntu version does not meet the requirements. Please replace the system before performing the following operations.

    orangepi@orangepi:~$ lsb_release -a

    No LSB modules are available.

    Distributor ID: Ubuntu

    Description: Ubuntu 22.04.1 LTS

    Release: 22.04

    Codename: jammy

  2. Since the source codes such as the kernel and U-boot are stored on GitHub, it is very important to ensure that the development board can download codes from GitHub normally when compiling the image.

Compile with x64 Ubuntu22.04 computer

  1. 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

  2. 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.

  3. The download address of the installation image of Ubuntu 22.04 amd64 version is:

    https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/22.04/ubuntu-22.04-desktop-amd64.iso

    or

    https://repo.huaweicloud.com/ubuntu-releases/22.04/ubuntu-22.04.1-desktop-amd64.iso

  4. 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

    1. For the method of replacing Tsinghua source, please refer to the instructions on this web page
    2. https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/

    1. Note that the Ubuntu version needs to be switched to 22.04

      Plus5-img534.png

    2. The content of the /etc/apt/sources.list file that needs to be replaced is

      test@test:~$ sudo mv /etc/apt/sources.list /etc/apt/sources.list.bak

      test@test:~$ sudo vim /etc/apt/sources.list

      # By default, the source image is commented to improve the speed of apt update, you can uncomment it yourself if necessary

      deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse

      # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse

      deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse

      # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse

      deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse

      # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse

      deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse

      # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse


      # Pre-release software source, not recommended to enable

      # deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse

      # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse

    3. After the replacement, you need to update the package information and make sure there is no error

      test@test:~$ sudo apt update

    4. In addition, since the source codes such as the kernel and U-boot are stored on GitHub, it is very important to ensure that the computer can download codes from GitHub normally when compiling the image.

Get the source code of linux sdk

Download orangepi-build from github

  1. 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 5 Plus 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.

Plus5-img535.png

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.

  1. The u-boot and linux kernel versions currently used by the development board are as follows
  2. 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.

  1. orangepi-build will contain the following files and folders after downloading

    1. build.sh: Compile the startup script

    2. external: Contains the configuration files needed to compile the image, specific scripts, and the source code of some programs, etc.

    3. LICENSE: GPL 2 license file

    4. README.md: orangepi-build documentation

    5. scripts: General script for compiling linux images

      test@test:~/orangepi-build$ ls

      build.sh external LICENSE README.md scripts

      If you downloaded the code of orangepi-build from github, after downloading, you may find that orangepi-build does not contain the source code of u-boot and linux kernel, nor does u-boot and linux kernel need to use cross-compilation tools Chain, this is normal, because these things are stored in other separate github warehouses or some servers (the addresses will be detailed below). orangepi-build will specify the address of u-boot, linux kernel and cross-compilation toolchain in the script and configuration file. When running orangepi-build, when it finds that there are no such things locally, it will automatically go to the corresponding place to download them.

Download the cross-compilation toolchain

The cross-compilation toolchain will only be downloaded when the orangepi-build compilation image is used on an x64 computer. Compiling the linux image of the development board in the Ubuntu22.04 of the development board will not download the cross-compilation toolchain. At this time, orangepi-build/toolchains will be an empty folder.

  1. 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.

    Plus5-img536.png

  2. The image URL of the cross-compilation toolchain in China is the open source software image site of Tsinghua University

    https://mirrors.tuna.tsinghua.edu.cn/armbian-releases/_toolchain/

  3. After toolchains is downloaded, it will contain multiple versions of cross-compilation toolchains, and the development board will only use two of them

    test@test:~/orangepi-build$ ls toolchains/

    gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu

    gcc-arm-11.2-2022.02-x86_64-arm-none-linux-gnueabihf

    gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu

    gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabihf

    gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi

    gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabihf

    gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu

    gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabi

    gcc-linaro-aarch64-none-elf-4.8-2013.11_linux

    gcc-linaro-arm-linux-gnueabihf-4.8-2014.04_linux

    gcc-linaro-arm-none-eabi-4.8-2014.04_linux

  4. The cross-compilation toolchain used to compile the linux kernel source code is

    1. linux5.10

      gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu

  5. The cross-compilation tool chain used to compile the u-boot source code is

    1. v2017.09

      gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu

orangepi-build complete directory structure description

  1. 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

    1. The git warehouse where the linux kernel source code is stored is as follows:

      https://github.com/orangepi-xunlong/linux-orangepi/tree/orange-pi-5.10-rk3588

    2. The git warehouse where the u-boot source code is stored is as follows:

      https://github.com/orangepi-xunlong/u-boot-orangepi/tree/v2017.09-rk3588

  2. When orangepi-build runs for the first time, it will download the cross-compilation toolchain, u-boot and linux kernel source code. After successfully compiling a linux image, the files and folders that can be seen in orangepi-build are:

    a. build.sh: compile startup script

    b. external: Contains the configuration files needed to compile the image, scripts with specific functions, and the source code of some programs. The rootfs compressed package cached during the image compilation process is also stored in external

    c. kernel: stores the source code of the linux kernel. The folder named orange-pi-5.10-rk3588 stores the kernel source code of the legacy branch of the RK3588/RK3588S series development boards. Please do not manually modify the name of the folder of the kernel source code. If it is modified, the kernel source code will be re-downloaded when the compilation system is running

    d. LICENSE: GPL 2 license file

    e. README.md: orangepi-build documentation

    f. output: Store compiled deb packages such as u-boot and linux, compilation logs, and compiled images and other files

    g. scripts: general scripts for compiling linux images

    h. toolchains: store cross-compilation toolchain

    i. u-boot: Store 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 series development boards. Please do not name the folder name of the u-boot source code Manual modification, if modified, the u-boot source code will be re-downloaded when the compilation system is running

    j. userpatches: Store configuration files needed to compile scripts

    test@test:~/orangepi-build$ ls

    build.sh      external      kernel      LICENSE      output      README.md      scripts      toolchains      u-boot      userpatches

Compile u-boot

  1. Run the build.sh script, remember to add sudo permission

    test@test:~/orangepi-build$ sudo ./build.sh

  2. Select U-boot package, then press Enter

    Plus5-img537.png

  3. Then select the model of the development board

    Plus5-img538.png

  4. Then it will start to compile u-boot, and some information prompted during compilation is explained as follows

    1. u-boot source code version

      [ o.k. ] Compiling u-boot [ v2017.09 ]

    2. The version of the cross-compilation toolchain

      [ o.k. ] Compiler version [ aarch64-linux-gnu-gcc 7.4.1 ]

    3. Path to the generated u-boot deb package

      [ o.k. ] Target directory [ orangepi-build/output/debs/u-boot ]

    4. The package name of the generated u-boot deb package

      [ o.k. ] File name [ linux-u-boot-legacy-orangepi5plus_1.0.0_arm64.deb ]

    5. Compilation time

      [ o.k. ] Runtime [ 1 min ]

    6. Repeat the command to compile u-boot, use the following command to start compiling u-boot directly without selecting through the graphical interface

      [ o.k. ] Repeat Build Options [ sudo ./build.sh BOARD=orangepi5plus BRANCH=legacy BUILD_OPT=u-boot KERNEL_CONFIGURE=no ]

  5. View the u-boot deb package generated by compilation

    test@test:~/orangepi-build$ ls output/debs/u-boot/

    linux-u-boot-legacy-orangepi5plus_1.0.0_arm64.deb

  6. The files contained in the generated u-boot deb package are as follows

    1. Use the following command to decompress the deb package

      test@test:~/orangepi-build$ cd output/debs/u-boot

      test@test:~/orangepi_build/output/debs/u-boot$ $ sudo dpkg -x \

      linux-u-boot-legacy-orangepi5plus_1.0.0_arm64.deb . (Note that there is a "." at the end of the command)

      test@test:~/orangepi_build/output/debs/u-boot$ ls

      linux-u-boot-legacy-orangepi5plus_1.0.0_arm64.deb usr

    2. The decompressed file is as follows

      test@test:~/orangepi-build/output/debs/u-boot$ tree usr

      usr

      └── lib

      ├── linux-u-boot-legacy-orangepi5plus_1.0.0_arm64

      │   ├── idbloader.img

      │   ├── rkspi_loader.img

      │   └── u-boot.itb

      └── u-boot

      ├── LICENSE

      ├── orangepi_5_plus_defconfig

      └── platform_install.sh


      3 directories, 6 files

  7. 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 (need This function can only be turned off after u-boot has been fully compiled, otherwise it will prompt that the source code of u-boot cannot be found. If the source code compressed package is downloaded from Google Drive, there is no such problem because the source code of u-boot cached), otherwise the changes made will be restored, the method is as follows:

    Set the IGNORE_UPDATES variable in userpatches/config-default.conf to "yes"

    test@test:~/orangepi-build$ vim userpatches/config-default.conf

    IGNORE_UPDATES="yes"

  8. When debugging u-boot code, you can use the following method to update u-boot in the linux image for testing

    1. Upload the compiled u-boot deb package to the linux system of the development board

      test@test:~/orangepi-build$ cd output/debs/u-boot

      test@test:~/orangepi_build/output/debs/u-boot$ scp \

      linux-u-boot-legacy-orangepi5plus_1.0.0_arm64.deb root@192.168.1.xxx:/root

    2. Then log in to the development board and uninstall the deb package of u-boot installed

      root@orangepi:~# apt purge -y linux-u-boot-orangepi5plus-legacy

    3. Install the new u-boot deb package just uploaded

      root@orangepi:~# dpkg -i linux-u-boot-legacy-orangepi5plus_1.0.0_arm64.deb

    4. Then run the nand-sata-install script

      root@orangepi:~# nand-sata-install

    5. 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

      Plus5-img539.png

    6. After pressing the Enter key, a Warning will pop up first

      Plus5-img540.png

    7. Press the Enter key again to start updating u-boot, and the following information will be displayed after the update is completed

      Plus5-img541.png

    8. Then you can restart the development board to test whether the modification of u-boot takes effect

  9. Other useful information

    1. u-boot 2017.09 source code, the defconfig configuration file used by the development board is

    2. orangepi-build/u-boot/v2017.09-rk3588/configs/orangepi_5_plus_defconfig

    3. u-boot 2017.09 source code, the dts file used by the development board is

    4. orangepi-build/u-boot/v2017.09-rk3588/arch/arm/dts/rk3588-orangepi-5-plus.dts

Compile the linux kernel

  1. Run the build.sh script, remember to add sudo permission

    test@test:~/orangepi-build$ sudo ./build.sh

  2. Select Kernel package, then press Enter

    Plus5-img542.png

  3. Then select the model of the development board

    Plus5-img538.png

  4. 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.

    Plus5-img543.png

  5. 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

    Plus5-img544.png

  1. 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

    test@test:~/orangepi-build$ sudo ./build.sh KERNEL_CONFIGURE=no

  2. You can also set KERNEL_CONFIGURE=no in the orangepi-build/userpatches/config-default.conf configuration file, which can permanently disable this function

  3. 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

    Plus5-img545.png

  1. Part of the information prompted when compiling the kernel source code is as follows

    1. The version of the linux kernel source code

      [ o.k. ] Compiling current kernel [ 5.10.110 ]

    2. The version of the cross-compilation toolchain used

      [ o.k. ] Compiler version [ aarch64-none-linux-gnu-gcc 11.2.1 ]

    3. The configuration file used by the kernel by default and the path where it is stored

      [ o.k. ] Using kernel config file [ config/kernel/linux-rockchip-rk3588-legacy.config ]

    4. The path of the deb package related to the kernel generated by compiling

      [ o.k. ] Target directory [ orangepi-build/output/debs/ ]

    5. The package name of the compiled kernel image deb package

      [ o.k. ] File name [ linux-image-legacy-rockchip-rk3588_1.0.0_arm64.deb ]

    6. The time used for compilation

      [ o.k. ] Runtime [ 5 min ]

    7. Finally, the compilation command to repeatedly compile the kernel selected last time will be displayed. Use the following command to start compiling the kernel source code directly without selecting through the graphical interface

      [ o.k. ] Repeat Build Options [ sudo ./build.sh BOARD=orangepi5plus BRANCH=legacy BUILD_OPT=kernel KERNEL_CONFIGURE=no ]

  2. View the deb package related to the kernel generated by compilation

    1. linux-dtb-legacy-rockchip-rk3588_1.0.0_arm64.deb Contains dtb files used by the kernel

    2. linux-headers-legacy-rockchip-rk3588_1.0.0_arm64.deb Include kernel headers

    3. linux-image-legacy-rockchip-rk3588_1.0.0_arm64.deb Contains kernel images and kernel modules

      test@test:~/orangepi-build$ ls output/debs/linux-*

      output/debs/linux-dtb-legacy-rockchip-rk3588_1.0.0_arm64.deb

      output/debs/linux-image-legacy-rockchip-rk3588_1.0.0_arm64.deb

      output/debs/linux-headers-legacy-rockchip-rk3588_1.0.0_arm64.deb

  3. The files contained in the generated linux-image deb package are as follows

    1. Use the following command to decompress the deb package

    2. 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-rk3588_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-rk3588_1.0.0_arm64.deb .

      test@test:~/orangepi_build/output/debs/test$ ls

      boot etc lib linux-image-legacy-rockchip-rk3588_1.0.0_arm64.deb usr

    1. The decompressed file is as follows

      test@test:~/orangepi-build/output/debs/test$ tree -L 2

      .

      ├── boot

      │   ├── config-5.10.110-rockchip-rk3588

      │   ├── System.map-5.10.110-rockchip-rk3588

      │   └── vmlinuz-5.10.110-rockchip-rk3588

      ├── etc

      │   └── kernel

      ├── lib

      │   └── modules

      ├── linux-image-legacy-rockchip-rk3588_1.0.0_arm64.deb

      └── usr

      ├── lib

      └── share

  1. 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 Drive, there is no such problem, because the source code of linux has been cached), otherwise the The changes made will be reverted as follows:

    Set the IGNORE_UPDATES variable in userpatches/config-default.conf to "yes"

    test@test:~/orangepi-build$ vim userpatches/config-default.conf

    IGNORE_UPDATES="yes"

  2. 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

    1. Upload the deb package of the compiled linux kernel to the linux system of the development board

      test@test:~/orangepi-build$ cd output/debs

      test@test:~/orangepi-build/output/debs$ scp \

      linux-image-legacy-rockchip-rk3588_1.0.0_arm64.deb root@192.168.1.xxx:/root

    2. Then log in to the development board and uninstall the deb package of the installed linux kernel

      root@orangepi:~# apt purge -y linux-image-legacy-rockchip-rk3588

    3. Install the deb package of the new linux kernel just uploaded

      root@orangepi:~# dpkg -i linux-image-legacy-rockchip-rk3588_1.0.0_arm64.deb

    4. Then restart the development board, and then check whether the kernel-related modifications have taken effect

      root@orangepi:~# reboot

  1. Other useful information

    1. 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

    2. orangepi-build/external/config/kernel/linux-rockchip-rk3588-legacy.config

    3. The location of the dts file used by the development board is

    4. orangepi-build/kernel/orange-pi-5.10-rk3588/arch/arm64/boot/dts/rockchip/rk3588-orangepi-5-plus.dts

Compile rootfs

  1. Run the build.sh script, remember to add sudo permission

    test@test:~/orangepi-build$ sudo ./build.sh

  2. Select Rootfs and all deb packages, then press Enter

  3. Plus5-img546.png

  1. Then select the model of the development board

    Plus5-img538.png

  2. Then select the type of rootfs (mainly maintain bullseye/focal/jammy at present)

    Plus5-img547.png

  3. Then select the type of image

    1. Image with console interface (server) Indicates the image of the server version, which is relatively small

    2. Image with desktop environment Indicates a mirror image with a desktop, which is relatively large

      Plus5-img548.png

  4. 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)

    Plus5-img549.png

  5. If you are compiling the image of the desktop version, you 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

    Plus5-img550.png

    Plus5-img551.png

    You can then select additional packages that need to be installed. Please press the Enter key to skip directly here.

    Plus5-img552.png

  6. Then it will start to compile rootfs, and some of the information prompted during compilation are as follows

    1. The type of rootfs

      [ o.k. ] local not found [ Creating new rootfs cache for jammy]

    2. The storage path of the compiled rootfs compressed package

      [ o.k. ] Target directory [ external/cache/rootfs ]

    3. The name of the rootfs compressed package generated by compilation

      [ o.k. ] File name [ jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4 ]

    4. The time used for compilation

      [ o.k. ] Runtime [ 13 min ]

  7. View the rootfs compressed package generated by compilation

    1. jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4 is the rootfs compressed package, the meaning of each field of the name is

      1. a) jammy indicates the type of linux distribution of rootfs

      2. b) xfce means rootfs is the type of desktop version, if it is cli, it means the type of server version

      3. c) arm64 represents the architecture type of rootfs

      4. d) f930ff6ebbac1a72108a2e100762b18f is the MD5 hash value generated by the package names of all software packages installed by rootfs. As long as the list of software packages installed by rootfs is not modified, this value will not change. The compilation script will use this MD5 hash value to generate Determine whether rootfs needs to be recompiled

    2. jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4.list lists the package names of all packages installed by rootfs

      test@test:~/orangepi-build$ ls external/cache/rootfs/

      jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4

      jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4.current

      jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4.list

  8. If the required rootfs already exists under external/cache/rootfs, then compiling rootfs again will directly skip the compilation process and will not restart the compilation. When compiling the image, it will also go to external/cache/rootfs to find out whether it has If there is rootfs available in the cache, use it directly, which can save a lot of download and compilation time.

Compile linux image

  1. Run the build.sh script, remember to add sudo permission

    test@test:~/orangepi-build$ sudo ./build.sh

  2. Select Full OS image for flashing, then press Enter

  3. Plus5-img553.png

  1. Then select the model of the development board

    Plus5-img538.png

  2. Then select the type of rootfs (mainly maintain bullseye/focal/jammy at present)

    Plus5-img547.png

  3. Then select the type of image

    1. Image with console interface (server) Indicates the image of the server version, which is relatively small

    2. Image with desktop environment Indicates a image with a desktop, which is relatively large

      Plus5-img548.png

  4. 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)

    Plus5-img549.png

  5. If you are compiling the image of the desktop version, you 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

    Plus5-img550.png

    Plus5-img551.png

    You can then select additional packages that need to be installed. Please press the Enter key to skip directly here.

    Plus5-img552.png

  6. Then it will start to compile the linux image. The general process of compilation is as follows

    a. Initialize the compilation environment of Ubuntu PC and install the software packages required for the compilation process

    b. Download the source code of u-boot and linux kernel (if cached, only update the code)

    c. Compile u-boot source code and generate u-boot deb package

    d. Compile the linux source code and generate linux-related deb packages

    e. Make the deb package of linux firmware

    f. Make the deb package of the orangepi-config tool

    g. Create a deb package supported by the board

    h. If you are compiling the desktop image, you will also create desktop-related deb packages

    i. Check whether the rootfs has been cached, if not, recreate the rootfs, if it has been cached, directly decompress and use

    j. Install the previously generated deb package into rootfs

    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.

    l. Then make an image file and format the partition, the default type is ext4

    m. Then copy the configured rootfs to the mirrored partition

    n. Then update initramfs

    o. Finally, write the bin file of u-boot into the image through the dd command

  7. After compiling the image, the following information will be prompted

    1. The storage path of the compiled image

      [ o.k. ] Done building [ output/images/orangepi5plus_1.0.0_debian_bullseye_linux5.10.110_xfce_desktop/orangepi5plus_1.0.0_debian_bullseye_linux5.10.110_xfce_desktop.img ]

    2. Compilation time

    3. [ o.k. ] Runtime [ 19 min ]

    1. Repeat the command to compile the image, and use the following command to start compiling the image directly without selecting through the graphical interface

      [ o.k. ] Repeat Build Options [ sudo ./build.sh BOARD=orangepi5plus BRANCH=legacy BUILD_OPT=image RELEASE=bullseye BUILD_MINIMAL=no BUILD_DESKTOP=no KERNEL_CONFIGURE=yes ]

Linux Development Manual

The method of compiling the kernel source code separately in the linux system of the development board

  1. First download the Linux kernel source code of the development board

    orangepi@orangepi:~$ git clone --depth=1 -b orange-pi-5.10-rk3588 https://github.com/orangepi-xunlong/linux-orangepi

    If you have problems downloading the code from github, you can go to the official tool of the development board to download the compressed kernel source code package, then upload it to the linux system of the development board, and then decompress it.

    Plus5-img554.png Plus5-img555.png

    The command to decompress the compressed kernel source code package is:

    orangepi@orangepi:~$ tar zxf orange-pi-5.10-rk3588.tar.gz

    orangepi@orangepi:~$ mv orange-pi-5.10-rk3588 linux-orangepi

    After decompression, please execute the following command to synchronize the source code with github to ensure that the source code is in the latest state:

    orangepi@orangepi:~$ cd linux-orangepi

    orangepi@orangepi:~/linux-orangepi$ git pull

  1. Then configure the default kernel configuration

    orangepi@orangepi:~$ cd linux-orangepi

    orangepi@orangepi:~/linux-orangepi$ make rockchip_linux_defconfig

    The path of rockchip_linux_defconfig in the kernel source code is arch/arm64/configs/

  1. Then compile the kernel source code

    orangepi@orangepi:~/linux-orangepi$ make -j10

  2. Then install the kernel module

    orangepi@orangepi:~/linux-orangepi$ sudo make modules_install

    The installation path of the kernel module is:/lib/modules

    After executing the sudo make modules_install command, you can see that there will be an additional kernel module folder under /lib/modules/:

    orangepi@orangepi5plus:~$ ls /lib/modules

    5.10.110+ 5.10.110-rockchip-rk3588

  1. Then install the kernel image and uInitrd

    orangepi@orangepi:~/linux-orangepi$ sudo make install

    The installation path of the kernel image and uInitrd is:/boot/

    After executing the sudo make install command, you can see that there will be one more kernel file under /boot/:

    orangepi@orangepi5plus:~/orange-pi-5.10-rk3588$ ls /boot/vmlinuz*

    /boot/vmlinuz-5.10.110+ /boot/vmlinuz-5.10.110-rockchip-rk3588

    The file /boot/Image is actually loaded when the system starts, and Image is a copy of the vmlinuz file

  1. Then install the dtb file into /boot/dtb

    orangepi@orangepi:~/linux-orangepi$ sudo make dtbs_install INSTALL_DTBS_PATH=/boot/dtb/

  2. Then restart the Linux system and the newly compiled kernel will be loaded

    orangepi@orangepi:~$ uname -r

    5.10.110+

OpenWRT system instructions

OpenWRT version

OpenWRT version kernel version
v22.03.4 Linux5.10.110

OpenWRT Adaptation

Function OpenWRT
USB2.0x2 OK
USB3.0x2 OK
USB Type-C 3.0 OK
3pin debugging serial port OK
TF card start OK
SPIFlash+NVMe SSD Boot OK
SPIFlash boots the complete system OK
2.5G PCIe network port X2 OK
Network port status light OK
led light OK
FAN fan interface OK
AX200-WIFI OK
AX200-WIFI OK
eMMC extension interface OK

The first start to expand rootfs

  1. When the OpenWRT system is started for the first time, the resize-rootfs.sh script will be executed to expand the rootfs, and it will automatically restart after the expansion is completed

  2. After logging in to the system, you can use the df -h command to view the size of rootfs. If it is consistent with the actual capacity of the storage device (TF card, eMMC or NVME SSD), it means that the automatic expansion is running correctly

    root@OpenWrt:~# df -h

    Filesystem Size Used Available Use% Mounted on
    /dev/root14.8G14.7G91.6M99% /
    tmpfs 495.5M6.1M489.4M1% /tmp
    tmpfs 512.0K0512.0K0% /dev
    /dev/root14.8G14.7G 91.6M99% /opt/docker

How to log in to the system

Login via serial port

  1. First, to use the debugging serial port, please refer to the chapter on how to use the debugging serial port

  2. The OpenWrt system will automatically log in as the root user by default, and the display interface is as follows

    Plus5-img556.png

Log in to the system via SSH

Please note that in the OpenWrt system of Orange Pi 5 Plus, the network port near the typeC power interface is configured as a WAN port by default, and the network port near the HDMI port is configured as a LAN port by default.

  1. First connect the LAN port of the board to the network port of the computer with a network cable, so that the network port of the computer can obtain an IP address through DHCP

  2. The LAN port IP of the default board is set to 192.168.2.1, so the computer can obtain the IP address starting with 192.168.2 at this time

  3. If the computer is installed with an Ubuntu system, you can execute the following command to log in to the system through SSH. By default, you can log in directly without a password

    test@ubuntu:~$ ssh root@192.168.2.1

  4. After successfully logging in to the system, the display is as shown in the figure below

    Plus5-img557.png

  5. If the computer is installed with Windows system, you can log in by referring to the method introduced in the section of SSH remote login to the development board under Windows.

Log in to the LuCI management interface

Please note that the OpenWRT system configures the network port near the Type-C power port as a WAN port by default, and the network port near the HDMI port as a LAN port by default.

Plus5-img558-1.png
  1. First connect the LAN port of the board to the network port of the computer with a network cable, so that the network port of the computer can obtain an IP address through DHCP
  2. The LAN port IP of the default board is set to 192.168.2.1, so the computer can obtain the IP address starting with 192.168.2 at this time
  3. Enter the IP address 192.168.2.1 in the browser on the computer to log in to the LuCI interface
Plus5-img559.png
  1. The OpenWrt system does not set a password by default, so just click the login button. After successful login, the interface is displayed as shown in the figure below

    Plus5-img560.png

Log in to the terminal through the LuCI management interface

Please note that the OpenWRT system configures the network port near the Type-C power port as a WAN port by default, and the network port near the HDMI port as a LAN port by default.

Plus5-img558-1.png
  1. First connect the LAN port of the board to the network port of the computer with a network cable, so that the network port of the computer can obtain an IP address through DHCP
  2. The LAN port IP of the default board is set to 192.168.2.1, so the computer can obtain the IP address starting with 192.168.2 at this time
  3. Enter the IP address 192.168.2.1 in the browser on the computer to log in to the LuCI interface
Plus5-img559.png
  1. Select "Terminal" in the "Service" column of the navigation bar and click to enter
  2. Plus5-img561.png

  1. At this time, the terminal interface is as shown in the figure below

    Plus5-img562.png

  2. Enter the user name root to log in

    Plus5-img563.png

Use IP address + port number to log in to the terminal

Please note that the OpenWRT system configures the network port near the Type-C power port as a WAN port by default, and the network port near the HDMI port as a LAN port by default.

Plus5-img558-1.png
  1. First connect the LAN port of the board to the network port of the computer with a network cable, so that the network port of the computer can obtain an IP address through DHCP
  2. The LAN port IP of the default board is set to 192.168.2.1, so the computer can obtain the IP address starting with 192.168.2 at this time
  3. Then enter 192.168.2.1:7681 in the browser to log in to the OpenWRT terminal
Plus5-img564.png

How to modify the IP address of the LAN port through the command line

  1. In the OpenWrt system, a command line tool uci is provided, which can easily modify, add, delete and read the content in the configuration file. For details, please refer to the official document
  2. First use the following command to obtain the network configuration, the corresponding configuration file is /etc/config/network, you can see that the value of network.lan.ipaddr is 192.168.2.1

root@OpenWrt:~# uci show network

...

network.lan=interface

network.lan.device='br-lan'

network.lan.proto='static'

network.lan.ipaddr='192.168.2.1'

network.lan.netmask='255.255.255.0'

network.lan.ip6assign='60'

.…

  1. Then enter the following command to modify the item network.lan.ipaddr
  2. root@OpenWrt:~# uci set network.lan.ipaddr='192.168.100.1'

  1. Then enter the following command to complete the submission, that is, write to the configuration file
  2. root@OpenWrt:~# uci commit

    If the IP address in red font is consistent with the one to be set, it means that the modification is successful

    root@OpenWrt:~# cat /etc/config/network

    ...

    config interface 'lan'

    option device 'br-lan'
    option proto 'static'
    option netmask '255.255.255.0'
    option ip6assign '60'
    option ipaddr '192.168.100.1'

    ...

  1. Restart the network through ubus, please refer to the official document for the usage instructions of ubus
  2. root@OpenWrt:~# ubus call network restart

  1. At this point, enter the command and you can see that the IP of the LAN port is 192.168.100.1

    root@OpenWrt:~# ifconfig br-lan

    br-lan Link encap:Ethernet HWaddr FE:55:13:A3:EF:E7

    inet addr:192.168.100.1 Bcast:192.168.100.255 Mask:255.255.255.0

    inet6 addr: fd60:c4cd:1033::1/60 Scope:Global

    UP BROADCAST MULTICAST MTU:1500 Metric:1

    RX packets:0 errors:0 dropped:0 overruns:0 frame:0

    TX packets:3 errors:0 dropped:0 overruns:0 carrier:0

    collisions:0 txqueuelen:1000

    RX bytes:0 (0.0 B) TX bytes:370 (370.0 B)

How to modify the root password

Modify via command line

  1. First enter passwd root on the command line of the system, and the following prompt message will appear. At this time, you can enter the password you want to set, and press the Enter key to confirm

root@OpenWrt:/# passwd root

Enter new UNIX password:

  1. Then you will be prompted to re-enter the password. At this time, enter the password again to confirm and press Enter
  2. Retype password:

  1. The display of successful modification is as follows
  2. passwd: password for root changed by root

Modify through the LuCI management interface

  1. First refer to the login LuCI management interface to enter the OpenWRT management interface

  2. Then follow the steps below to change the password

    1. Find the "System" option in the navigation bar and click

    2. In the column options below the system, select "Management Rights" and click

      Plus5-img565.png

    3. Select the "Router Password" option on the Tab page

      Plus5-img566.png

  3. Modify and save the router password

    a. Enter the password you set in the "Password" and "Confirm Password" dialog boxes (if you are not sure whether the password is entered correctly, you can click the "*" icon behind the dialog box to display the input characters)

    b. Click "Save" to save the newly modified password

    Plus5-img567.png

  4. Note: In the "Password" and "Confirm Password" dialog boxes, the passwords entered twice must be consistent.

  1. After the password is changed successfully, a pop-up box will pop up saying "The system password has been changed successfully". At this time, a password is required to log in to OpenWRT

    Plus5-img568.png

USB interface test

Mount the USB storage device under the command line

  1. First insert the U disk into the USB interface of the Orange Pi development board
  2. Execute the following command, if you can see the output of sdX, it means that the U disk is recognized successfully

root@OpenWrt:~# cat /proc/partitions | grep "sd*"
majorminor #blocksname
8015126528 sda

  1. Use the mount command to mount the U disk to /mnt, and then you can view the files in the U disk
  2. root@OpenWrt:~# mount /dev/sda /mnt/

    root@OpenWrt:~# ls /mnt/

    test.txt

  1. After mounting, you can view the capacity usage and mount point of the U disk through the df -h command
  2. root@OpenWrt:~# df -h | grep "sd"

    /dev/sda14.4G187.2M14.2G1% /mnt

Mount the USB storage device on the LuCI management interface

  1. First connect the U disk (or other storage device) to the development board via USB2.0

  2. Then follow the login LuCI management interface to enter the LuCI management interface

  3. Then in the LuCI management interface, click "System -> Mount Point" to enter the configuration interface of the mount point

    Plus5-img569.png

  4. Then follow the steps below to add a mount point

    1. Find "Mount Point" at the bottom of the mount point global setting interface

    2. Under the mount point, select the "Add" button and click Enter

    3. Plus5-img570.png

    1. Then the following pop-up interface will pop up

      Plus5-img571.png

    2. Then you can start to mount the storage device

      a) Check "Enabled"

      b) Select the actual connected device /dev/sda in the UUID column of general settings (choose according to your own device)

      c) Select "Custom" in the mount point column, and fill in the target directory to be mounted. Here, take the /mnt directory as an example, and press Enter to confirm

      d) Then click the "Save" button in the lower right corner

    3. Plus5-img572.png

  1. Then you will return to the mount point global settings page, click "Save and Apply" in the lower left corner of the page to make the mount point take effect
  2. Plus5-img573.png

  1. After saving, you can see the "mounted file system", the storage device has been mounted successfully
  2. Plus5-img574.png

How to use E-Key PCIe wireless network card

  1. The PCIe wireless network card models currently compatible with the OpenWRT image are as follows:
serial number model Physical picture Supported OS
1 AX200

(PCIE+USB接口)

Plus5-img230.png Debian

Ubuntu

OpenWRT

OPi OS Arch

2 AX210

(PCIE+USB接口)

Plus5-img231.png Debian

Ubuntu

OpenWRT

OPi OS Arch

3 RTL8852BE

(PCIE+USB接口)

Plus5-img232.png Debian

Ubuntu

Not Supported OpenWRT

Android12

OPi OS Arch

OPi OS Droid

How to create WIFI hotspot

Note that AX200 and AX210 currently only support hotspots in the 2.4G frequency band. In the 5G frequency band mode, there will be an error that the modified configuration of the wireless network card cannot be applied.

  1. First insert the PCIe wireless network card into the M.2 E-KEY port of the development board, and then connect the Type-C power supply to power up the development board.

    Plus5-img575.png

  2. After the system startup is complete, click Network -> Wireless to enter the wireless WiFi configuration interface.

    Plus5-img576.png

  3. The default wireless configuration of the OpenWRT system is Master mode. Here, for the convenience of the next operation, we will remove the default wireless connection.

    Plus5-img577.png

  4. Then click Save in the lower right corner of the page to make the configuration take effect.

    Plus5-img578.png

  5. Then click the Add button on the right.

    Plus5-img579.png

  6. In the pop-up tab page Device Configuration, we set the parameters as shown in the figure below.

    Plus5-img580.png

  7. Then in Interface Configuration -> General Settings, set the mode to Access Point AP, set the ESSID (wireless network name) to OpenWrt, and specify the network as lan

    Plus5-img581.png

  8. Then in Interface Configuration -> Wireless Security, select  WPA2-PSK as the encryption algorithm; set the key (wireless password) to password

    Plus5-img582.png

  9. After the above settings are completed, click Save in the lower right corner of the page, and then exit the tab page

    Plus5-img583.png

  10. Then click Save and Apply in the lower right corner of the page and wait for the configuration to be applied.

    Plus5-img584.png

  11. The display interface of successfully creating a hotspot is shown in the figure below

    Plus5-img585.png

  12. Then use the mobile phone or computer to search for the WiFi corresponding to the SSID to connect. After the connection is successful, as shown in the figure below

    Plus5-img586.png

How to connect to WIFI hotspot

  1. Insert the PCIe wireless network card into the M.2 E-KEY port of the development board, and then connect the Type-C power supply to power the development board.

    Plus5-img575.png

  2. After the system startup is complete, click Network -> Wireless to enter the configuration wireless WiFi interface.

    Plus5-img576.png

  3. The default wireless configuration of the OpenWRT system is Master mode. Here, for the convenience of the next operation, we will remove the default wireless connection.

    Plus5-img577.png

  4. Then click Save in the lower right corner of the page to make the configuration take effect.

    Plus5-img578.png

  5. Then click the Scan button to scan the surrounding WiFi hotspots.

    Plus5-img587.png

  6. Then the following window will pop up to display the available WiFi hotspots. At this time, click the Join Network button on the right side of the WiFi hotspot you want to connect to connect to the WiFi hotspot.

    Plus5-img588.png

  7. Then an interface for connecting to a WiFi hotspot will pop up. We enter the password of the hotspot as shown in the figure below, and then click the Submit button.

    Plus5-img589.png

  8. Then the following interface will pop up, click the Save button in the lower right corner.

    Plus5-img590.png

  9. Finally, you will return to the main interface of wireless configuration, click Save and Apply and wait for the configuration to be applied.

    Plus5-img591.png

  10. After successfully connecting to the WiFi hotspot, the interface is displayed as shown in the figure below.

    Plus5-img592.png

Installing packages via the command line

Install via opkg in the terminal

  1. Update the list of available packages

root@OpenWrt:/# opkg update

  1. Get the software list
  2. root@OpenWrt:/# opkg list

  1. Install the specified package
  2. root@OpenWrt:/# opkg install <package name>

  1. Check the installed software
  2. root@OpenWrt:/# opkg list-installed

  1. Uninstall the software
  2. root@OpenWrt:/# opkg remove <package name>

OpenWRT management interface installation software package

If you need to add new software packages, you can install them through the OpenWRT management interface.

View the list of available software packages in the system

  1. First enter the package management page

    a. Find the "System" option in the navigation bar and click to enter

    b. In the vertical column options below the system, select "software package" and click to enter

  2. Plus5-img593.png

  1. Then the main page of the software package will appear, as shown in the figure below, to obtain the list of available software

    a. In the "Operation" option of the software package, click "Update List" to get the list of available software packages

    b. On the Tab page, click "Available" to view the currently available software packages

    c. View the number of currently available packages

    Plus5-img594.png

Example of installing software packages

  1. Take the installation package "luci-app-acl" as an example

    1. In the OpenWRT software package management interface, click the filter dialog box and enter "luci-app-acl"

    2. In the list of software packages, you can see the version, package size and description information of the "luci-app-acl" software package, and then click the "Install" button

      Plus5-img595.png

    3. Then the following pop-up window will appear, click "Install"

      Plus5-img596.png

    4. Then wait for the installation to complete

      Plus5-img597.png

    5. The display after the installation is complete is as follows

      Plus5-img598.png

  2. Check whether the software package is installed successfully

    a. In the OpenWRT software package management interface, click the filter dialog box and enter "luci-app-acl"

    b. Select and click "Available" on the Tab page

    c. The "luci-app-acl" package will be displayed in the package list, and the update status will be "installed"

    Plus5-img599.png

Remove package example

  1. Take the removal of the package "luci-app-acl" as an example

    1. In the OpenWRT software package management interface, click the filter dialog box and enter "luci-app-acl"

    2. Select "Installed" on the Tab page to display the list of installed software packages

    3. Click "Remove" on the right to remove the corresponding software package

      Plus5-img600.png

    4. Then the following pop-up window will be displayed, click "Remove"

      Plus5-img601.png

    5. After the removal is successful, the display interface is as follows

      Plus5-img602.png

  2. Check whether the software package is removed successfully

    a. In the OpenWRT software package management interface, click the filter dialog box and enter "luci-app-acl"

    b. Select and click "Installed" on the Tab page

    c. The "luci-app-acl" package will not be displayed in the package list, and the "luci-app-acl" package has been removed successfully

    Plus5-img603.png

Using Samba Network Shares

There are mainly two software options for OpenWRT LAN file sharing, Samba and NFS. The compatibility of the Samba system is better, while the performance of NFS is superior. For users who need to use Windows devices, it is recommended to choose Samba.

  1. Enter the management page of the Samba network share

    1. Find the "Service" option in the navigation bar and click to enter

    2. In the vertical column options below the service, select "network sharing" and click to enter

      Plus5-img604.png

  2. Select the interface that the Samba service needs to monitor

    1. Select "General Settings" in the navigation bar of network sharing and click to enter

    2. The interface is specified according to actual needs. If you want to access through the "wan port", set it to "wan"

      Plus5-img605.png

  3. Set the shared directory of the network share

    a. In the "Shared Directory" of the "General Settings" of the network share, click "Add" the shared directory address

    b. Enter the name of the shared folder as "mmt" under the name

    c. Under the path of the shared directory, choose to set the shared directory location "/mnt"

    d. Check "Browseable" and "Run anonymous user"

    e. Click "Save and Apply" to save the configuration

    Plus5-img606.png

  4. window10 starts network discovery and sharing

    Note: To access Samba under the Windows 10 system, you need to confirm whether Windows 10 has enabled network discovery and sharing for sharing. If it is not enabled, perform the following settings first.

    1. Enable Samba v1/v2 access

      a) Enter the "Control Panel" of Windows 10

      b) Click "Programs" on the left navigation bar of the control panel

      c) Select "Turn Windows features on or off" in Programs and Features

      d) Check "SMB 1.0/CIFS file sharing support" in the pop-up box of enabling or disabling Windows functions

      e) Click "OK" to configure the application

    2. Plus5-img607.png

    1. Turn on the network discovery of Windows 10

      a) Enter the "Control Panel" of Windows 10

      b) Select "Network and Internet" in the Control Panel

      c) Then open "Network and Sharing Center"

      d) Click | "Advanced Sharing Settings"

      e) Turn on "Enable Network Discovery" and "Enable File and Printer Sharing"

      f) Click "Save Changes" to save the Windows 10 network discovery configuration

    2. Plus5-img608.png

  1. After the setting is completed, enter \\OpenWrt in the address bar of the resource manager to access the shared directory, the user name is root, and the password is the password set by the development board host
  2. Plus5-img609.png

Zerotier Instructions

The OpenWRT system has pre-installed the zerotier client. After creating a virtual LAN on the zerotier official website, the client can directly join it through the Network ID. The specific operation is as shown below.

  1. Log in to zerotier official website https://my.zerotier.com/network, register and log in and click Network->Create A Network to create a virtual local area network

    Plus5-img610.png

    Plus5-img611.png

  2. Click to enter the network console page, you can set the privacy option to public, so that the added network nodes do not need to be verified

    Plus5-img612.png

  3. The following automatically assigns the address Here you can choose the network segment yourself, here is 172.27.*.*

    Plus5-img613.png

  4. Enter the following command in the OpenWRT terminal to join the virtual LAN created above, where 8286ac0e47d53bb5 is the Network ID of the virtual LAN created above

  5. root@OpenWrt:/# zerotier-one -d #Start the zerotier client

    root@OpenWrt:/# zerotier-cli join 8286ac0e47d53bb5 #join the network

  1. Enter ifconfig in the terminal and you can see that there is already a new ztks54inm2 device with an IP address of 172.27.214.213
  2. root@OpenWrt:/# ifconfig

    ztks54inm2 Link encap:Ethernet HWaddr F6:4E:DE:BF:D8:52

    inet addr:172.27.214.213 Bcast:172.27.255.255 Mask:255.255.0.0
    inet6 addr: fe80::e82f:d0ff:fe5a:867e/64 Scope:Link
    UP BROADCAST RUNNING MULTICAST MTU:2800 Metric:1
    RX packets:18 errors:0 dropped:0 overruns:0 frame:0
    TX packets:48 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000

    RX bytes:1720 (1.6 KiB) TX byte81 (8.2 KiB)

  1. Install the zerotier client on another device (Ubuntu18.04 is used as an example here), execute the following command to install, and restart the computer after the installation is complete
  2. test@ubuntu:~$ curl -s https://install.zerotier.com | sudo bash

  1. After restarting, join the virtual LAN according to the Network ID, and you can also see that the ip address assigned by zerotier has been obtained. At this time, the Ubuntu PC and OrangePi R1 Plus LTS are in the same LAN, and the two can communicate freely
  2. test@ubuntu:~$ sudo zerotier-cli join 8286ac0e47d53bb5

    test@ubuntu:~$ ifconfig

    ztks54inm2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 2800

    inet 172.27.47.214 netmask 255.255.0.0 broadcast 172.27.255.255
    inet6 fe80::5ce1:85ff:fe2b:6918 prefixlen 64 scopeid 0x20<link>
    ether f6:fd:87:68:12:cf txqueuelen 1000 (ethernet)
    RX packets 0 bytes 0 (0.0 B)
    RX errors 0 dropped 0 overruns 0 frame 0
    TX packets 46 bytes 10006 (10.0 KB)
    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  1. Test whether the two terminals can communicate
  2. root@OpenWrt:/# ping 172.27.47.214 -I ztks54inm2

    PING 172.27.47.214 (172.27.47.214): 56 data bytes

    64 bytes from 172.27.47.214: seq=0 ttl=64 time=1.209 ms

    64 bytes from 172.27.47.214: seq=1 ttl=64 time=1.136 ms

    64 bytes from 172.27.47.214: seq=2 ttl=64 time=1.203 ms

    64 bytes from 172.27.47.214: seq=3 ttl=64 time=1.235 ms

    ^C

    --- 172.27.47.214 ping statistics ---

    4 packets transmitted, 4 packets received, 0% packet loss

    round-trip min/avg/max = 1.136/1.195/1.235 ms

  1. other common commands of zerotier
  2. root@OpenWrt:/# zerotier-one -d #Start the zerotier client

    root@OpenWrt:/# zerotier-cli status #Get address and service status

    root@OpenWrt:/# zerotier-cli join # Network ID #join the network

    root@OpenWrt:/# zerotier-cli leave # Network ID #leave the network

    root@OpenWrt:/# zerotier-cli listnetworks #list networks

    OPENWRT_DEVICE_REVISION="v0"

    OPENWRT_RELEASE="OpenWrt 22.03.4 r20123-38ccc47687"

Compilation method of OpenWRT source code

Download OpenWRT source code

  1. First execute the following command to download the openwrt-22.03 branch code

test@test:~$ sudo apt update

test@test:~$ sudo apt install -y git

test@test:~$ git clone https://github.com/orangepi-xunlong/openwrt.git -b openwrt-22.03

  1. After the OpenWRT code is downloaded, the following files and folders will be included
  2. test@test:~/openwrt$ ls

    BSDmakefile     Config.in     include     Makefile     README.md     scripts     toolchain

    Config     feeds.conf.default     LICENSE     package     rules.mk     target     tools

Compile OpenWRT source code

  1. First install the following dependent packages (currently only tested on Ubuntu 20.04 to compile the following dependent packages, if you compile on other versions of the system, please install the dependent packages by yourself according to the error message)

    1. Method 1: The command to install dependent packages using a > script is as follows:
    2. test@test:~/openwrt$ sudo ./install_dep.sh

    1. Method 2: Install the dependency package directly using the following command
    2. test@test:~/openwrt$ sudo apt update

      test@test:~/openwrt$ sudo apt install -y ack antlr3 asciidoc autoconf \

      automake autopoint binutils bison build-essential \

      bzip2 ccache cmake cpio curl device-tree-compiler fastjar \

      flex gawk gettext gcc-multilib g++-multilib git gperf haveged \

      help2man intltool libc6-dev-i386 libelf-dev libglib2.0-dev \

      libgmp3-dev libltdl-dev libmpc-dev libmpfr-dev \

      libncurses5-dev \libncursesw5-dev libreadline-dev libssl-dev \

      libtool lrzsz mkisofs msmtp nano ninja-build p7zip p7zip-full \

      patch pkgconf python2.7 python3 python3-pyelftools \

      libpython3-dev qemu-utils rsync scons squashfs-tools \

      subversion swig texinfo uglifyjs upx-ucl unzip \

      vim wget xmlto xxd zlib1g-dev

  1. Then execute ./scripts/feeds update -a and ./scripts/feeds install -a to download dependent packages
  2. test@test:~/openwrt$ ./scripts/feeds update -a

    test@test:~/openwrt$ ./scripts/feeds install -a

  1. Then choose to use the configuration file of OrangePi 5 Plus

    1. Compile the image that supports TF card, eMMC, and NVMe startup, > and select the following configuration
    2. test@test:~/openwrt$ cp configs/orangepi-5-plus-rk3588_defconfig .config

    1. Compile the image that supports SPIFlash startup, and select the > following configuration
    2. test@test:~/openwrt$ cp configs/orangepi-5-plus-rk3588-spi_defconfig .config

  1. Then execute the following command to make the configuration take effect
  2. test@test:~/openwrt$ make defconfig

  1. Execute the following command to start compiling the openwrt source code
  2. test@test:~/openwrt$ make V=s

  1. After the compilation is complete, the path where the image is generated is:
  2. test@test:~/openwrt$ tree -L 1 bin/targets/rockchip/armv8/

    bin/targets/rockchip/armv8/

    ├── config.buildinfo

    ├── feeds.buildinfo

    ├── openwrt-rockchip-armv8-xunlong_orangepi-5-plus-ext4-sysupgrade.img.gz

    ├── openwrt-rockchip-armv8-xunlong_orangepi-5-plus.manifest

    ├── openwrt-rockchip-armv8-xunlong_orangepi-5-plus-squashfs-sysupgrade.img.gz

    ├── packages

    ├── profiles.json

    ├── sha256sums

    └── version.buildinfo


    1 directory, 9 files

Instructions for using the Android 12 system

Supported Android versions

Android version kernel version
Android 12 Linux5.10
Android 12 Box Linux5.10

Android function adaptation

Function Android 12 Android12 Box
HDMI TX1 Display - 1080p OK OK
HDMI TX1 Display - 4K 120HZ OK OK
HDMI TX1 Display - 8K 60HZ OK OK
HDMI TX1 Audio OK OK
HDMI TX2 Display - 1080p OK OK
HDMI TX2 Display - 4K 120HZ OK OK
HDMI TX2 Display - 8K 60HZ OK OK
HDMI TX2 Audio OK OK
HDMI RX display OK OK
HDMI RX Audio OK OK
USB2.0X2 OK OK
2.5G PCIe network port X2 OK OK
2.5G PCIe network port light OK OK
Debug serial port OK OK
RTC OK OK
FAN interface OK OK
eMMC extension interface OK OK
AP6275P-WIFI OK OK
AP6275P-BT OK OK
AX200-WIFI NO NO
AX200-BT NO NO
AX210-WIFI NO NO
AX210-BT NO NO
RTL8852BE-WIFI OK OK
RTL8852BE-BT OK OK
Recovery button OK OK
Type-C interface USB3.0 function OK OK
Type-C interface ADB function OK OK
Type-C interface DP display function OK OK
Type-C interface DP audio playback OK OK
USB3.0 Hub OK OK
switch button OK OK
infrared function OK OK
led light OK OK
Onboard MIC OK OK
headphone playback OK OK
headphone recording OK OK
SPK Horn OK OK
40PIN GPIO OK OK
40PIN I2C OK OK
40PIN SPI OK OK
40PIN UART OK OK
40PIN PWM OK OK
TF card start OK OK
SPI Flash+NVME solid state boot OK OK
OV13850 camera OK OK
OV13855 camera OK OK
GPU OK OK
VPU OK OK
NPU OK OK
MIPI LCD display OK OK
MIPI LCD Touch OK OK
MIPI LCD backlight OK OK
HDMI CEC function NO OK

How to use the USB wireless network card

  1. Currently, the USB wireless network card models compatible with the Android image are as follows:
Chip model Function VID&PID Adaptation
RTL8723BU 2.4G WIFI+BT4.0 0bda:b720 Support WIFI and Bluetooth function, does not support hotspot
RTL8811CU 2.4G +5G WIFI 0bda:c811 Support WIFI function and open hotspot
  1. The pictures of the above two USB wireless network cards are as follows:

    1. The picture of the RTL8723BU USB wireless network card module is as follows:

      Plus5-img614.png

    2. The picture of the RTL8811CU USB wireless network card module is as follows:

      Plus5-img615.png

  2. The test methods of the above two types of USB wireless network cards are the same. First, the USB network card needs to be inserted into the USB interface of the development board.

  3. Then, for the connection and test method of WIFI, please refer to the section of WIFI connection test method

  4. For the Bluetooth test, please refer to the content of the Bluetooth test method

M.2 How to use E-Key PCIe WIFI6+Bluetooth module

  1. The PCIe wireless network card models currently compatible with Android 12 are as follows:
serial number model Physical picture
1 RTL8852BE

(PCIE+USB interface)

Plus5-img616.png

Pay attention to RTL8852BE, please do not buy the module shown in the figure below, there will be problems after testing.

Plus5-img616-2.png
  1. First insert the PCIe wireless network card into the M.2 E-KEY interface of the development board and fix it

    Plus5-img617.png

  2. Then connect the power supply of the Type-C interface to the development board, and power on

  3. After the system starts, please refer to the section of WIFI connection test method for WIFI connection and test method

  4. For the Bluetooth test, please refer to the content of the Bluetooth test method

WIFI connection test method

First of all, please note that there is no WIFI module on the Orange Pi 5 Plus development board, and an external PCIe network card or USB network card is required to use the WIFI function.

For instructions on using the external PCIe network card, please refer to the section on how to use the M.2 E-Key PCIe WIFI6+Bluetooth module.

For instructions on using the external USB network card, please refer to the section on how to use the USB wireless network card.

  1. First click to enter the Setting
Plus5-img618.png
  1. Then select Network & internet
  2. Plus5-img619.png

  1. Then select Internet
  2. Plus5-img620.png

  1. Then turn on the Wi-Fi switch
  2. Plus5-img621.png

  1. After turning on Wi-Fi, if everything is normal, you can scan to nearby Wi-Fi hotspots

    Plus5-img622.png

  2. Then select the Wi-Fi you want to connect to, and the password input interface shown in the figure below will pop up

    Plus5-img623.png

  3. 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

    Plus5-img624.png

  4. The display after successful Wi-Fi connection is shown in the figure below:

    Plus5-img625.png

How to use Wi-Fi hotspot

  1. First, please make sure that the Ethernet port is connected to the network cable and can access the Internet normally

  2. Then select Settings

    Plus5-img618.png

  3. Then select Network & internet

    Plus5-img619.png

  4. Then select Hotspot & tethering

    Plus5-img626.png

  5. Then select Wi-Fi hotspot

    Plus5-img627.png

  6. 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)

    Plus5-img628.png

  7. At this point, 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

  8. Plus5-img629.png

  1. 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.
  2. Plus5-img630.png

Bluetooth test method

Please note that there is no Bluetooth module on the Orange Pi 5 Plus development board, and an external PCIe network card with Bluetooth or a USB network card with Bluetooth is required to use the Bluetooth function.

For instructions on using the external PCIe network card, please refer to the section on how to use the M.2 E-Key PCIe WIFI6+Bluetooth module.

For instructions on using the external USB network card, please refer to the section on how to use the USB wireless network card.

  1. First click to enter the Setting

    Plus5-img618.png

  2. Then select Connected devices

    Plus5-img631.png

  3. Then click Pair new device to turn on Bluetooth and start scanning the surrounding Bluetooth devices

    Plus5-img632.png

  4. The searched Bluetooth devices will be displayed under Available devices

    Plus5-img633.png

  5. 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

    Plus5-img634.png

  6. 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

    Plus5-img635.png

  7. After the pairing is completed, you can see the paired Bluetooth device as shown in the figure below

    Plus5-img636.png

  8. 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.

    Plus5-img637.png

  9. You can open the Download directory in the file manager to view the pictures received by the Android system Bluetooth of the development board

    Plus5-img638.png

Test method of HDMI In

  1. The location of the HDMI In interface on the development board is as follows:

    Plus5-img265.png

  2. Then use the HDMI to HDMI cable shown in the figure below to connect the HDMI output of other devices to the HDMI In interface of the development board

    Plus5-img11.png

  3. Make sure that the HDMI output of the device connected to the HDMI In interface is normal, and then open the HDMI In test APP

    Plus5-img639.png

  4. Then you can see the video input of HDMI In, and the audio input of HDMI In will also be output from the HDMI TX interface or headphone interface of the development board. The figure below shows the desktop of the Linux system of the OPi5 development board input through HDMI In.

    Plus5-img640.png

How to use 10.9.10.1 inch MIPI screen

Please make sure that the Android image used is the image of the following two versions:

OrangePi5Plus_RK3588_Android12_lcd_v1.x.x.img

OrangePi5Plus_RK3588_Android12_spi-nvme_lcd_v1.x.x.img

  1. The screen needs to be assembled first, please refer to the assembly method of the 10.1-inch MIPI screen

  2. The interface position of the LCD on the development board is shown in the figure below:

    Plus5-img641.png

    Note that the touch interface below is not for the LCD MIPI screen. It is currently a spare interface and cannot be used.

    Plus5-img425.png

  3. Connect the assembled screen to the LCD interface, connect the Type-C power supply to the board, and power on. After the system starts, you can see the screen display as shown in the figure below

    Plus5-img642.png

OV13850 and OV13855 MIPI camera test method

Currently the development board supports two MIPI cameras, OV13850 and OV13855, the specific pictures are as follows:

  1. OV13850 camera with 13 million MIPI interface

    Plus5-img23.png

  2. OV13855 camera with 13 million MIPI interface

    Plus5-img24.png

The adapter boards and FPC cables used by the OV13850 and OV13855 cameras are the same, but the positions of the two cameras connected to the adapter boards are different. The FPC cable is shown in the figure below. Please note that the FPC cable has a direction. The end marked TO MB needs to be inserted into the camera interface of the development board, and the end marked TO CAMERA needs to be inserted into the camera adapter board.

Plus5-img436.png

There are a total of 3 camera interfaces on the camera adapter board, and only one can be used at a time, as shown in the figure below, of which:

  1. No.1 port is connected to OV13850 camera

  2. No.2 interface is connected to OV13855 camera

  3. No.3 interface is not used, just ignore it

  4. Plus5-img643.png

The location of the camera interface on the Orange Pi 5 Plus development board is shown in the figure below:

Plus5-img644.png

The method of inserting the camera into the CAM interface of the development board is as follows:

Plus5-img439.png

After connecting the camera to the development board, we can use the following method to test the camera:

  1. Open the camera APP on the desktop

    Plus5-img645.png

  2. Then you can see the preview screen of the camera

    Plus5-img646.png

    Press and hold the mouse in the area shown in the red box in the picture below of the camera APP and then drag to the right to call up the switching interface for taking pictures and recording

    Plus5-img647.png

    The switching interface of taking pictures and recording is as follows, click Video to switch to video recording mode

    Plus5-img648.png

    Click the position shown in the figure below to enter the camera setting interface

    Plus5-img649.png

    The setting interface of the camera is as follows:

    Plus5-img650.png

40pin interface GPIO, UART, SPI and PWM test

40pin GPIO port test

  1. First click on the wiringOP icon to open the wiringOP APP

    Plus5-img651.png

  2. 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

    Plus5-img652.png

  3. 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 26pin 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 the wPi number, GPIO mode, and pin level can be obtained.

    Plus5-img653.png

  4. Then click the GPIO READALL button, the output information is as shown in the figure below:

    Plus5-img654.png

  5. There are a total of 28 GPIO ports in the 40pins of the development board that can be used. The following uses pin 11—the corresponding GPIO is GPIO1_A4—the corresponding wPi serial number is 5—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 11. When the button is selected, pin 11 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

    Plus5-img655.png

  6. Then click the GPIO READALL button, you can see that the current pin 7 mode is OUT, and the pin level is high

    Plus5-img656.png

  7. Click the CheckBox button in the figure below again to cancel the check status. Pin 11 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.

    Plus5-img657.png

  8. Then click the GPIO READALL button, you can see that the current mode of pin 11 is OUT, and the pin level is low

    Plus5-img658.png

40pin UART test

  1. UART3 and UART8 are enabled by default in Android. The position of the 40pin is shown in the figure below, and the corresponding device nodes are /dev/ttyS3 and /dev/ttyS8 respectively

    Plus5-img659.png

  2. First click on the wiringOP icon to open the wiringOP APP

    Plus5-img651.png

  3. 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

    Plus5-img660.png

  4. The serial port test interface of the APP is shown in the figure below

  5. Plus5-img661.png

  1. Take the test of UART3 as an example below, select the /dev/ttyS3 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/ttyS3 node. After opening successfully, click the OPEN button becomes unselectable, and the CLOSE button and SEND button become selectable
  2. Plus5-img662.png

  1. Then use Dupont wire to short the RXD and TXD pins of uart3

    Plus5-img663.png

  2. Then you can enter a character in the send edit box below, and click the SEND button to start sending

  3. Plus5-img664.png

  1. If everything is normal, the received string will be displayed in the receiving box
  2. Plus5-img665.png

40pin SPI test

  1. From the table below, the available SPIs for Orange Pi 5 Plus are SPI0 and SPI4

    Plus5-img304.png

  2. The Android system opens the SPI0 configuration by default. Here is a demonstration to test the SPI0 interface through the w25q64 module. First, connect the w25q64 device to the SPI0 interface.

    Plus5-img666.png

  3. Then click the wiringOP icon to open the wiringOP APP

    Plus5-img651.png

  4. 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

    Plus5-img667.png

  5. Then click the OPEN button to initialize the SPI

  6. Plus5-img668.png

  1. 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

    Plus5-img669.png

  2. Finally, the APP will display the read ID information

  3. Plus5-img670.png

  1. 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)

    Plus5-img671.png

40pin PWM test

  1. Android enables PWM10 and PWM14 by default, and the corresponding pins are located at 40pin as shown in the figure below:

    Plus5-img672.png

  2. First click on the wiringOP icon to open the wiringOP APP

    Plus5-img651.png

  3. Then click the PWM_TEST button on the main interface of wiringOP to enter the PWM test interface

    Plus5-img673.png

  4. The base address corresponding to PWM10 is febe0020, and the base address corresponding to PWM14 is febf0020. Here, fd8b0020.pwm is displayed on the right of pwmchip0. At this time, you need to click the drop-down option to select other pwmchips until febe0020 or febf0020 is displayed on the right.

    Plus5-img674.png

  5. When the drop-down option menu selects pwmchip2, the corresponding base address of PWM10 is febe0020 on the right

    Plus5-img675.png

  6. When the drop-down option menu selects pwmchip4, the corresponding base address of PWM14 is febe0020 on the right

    Plus5-img676.png

  7. Take the test of PWM10 as an example, we need to select pwmchip2

    Plus5-img675.png

  8. Then confirm the PWM period, the default configuration is 50000ns, converted to PWM frequency is 20KHz, you can modify it yourself, click the open button to export PWM10

    Plus5-img677.png

  9. Then drag the drag bar below to change the PWM duty cycle, and then check Enable to output the PWM waveform

  10. Plus5-img678.png

  1. Then use an oscilloscope to measure the 31st pin in the 40pin of the development board, and you can see the following waveform
  2. Plus5-img679.png

How to use ADB

Use the data cable to connect to adb debugging

  1. First prepare a good quality Type-C data cable

    Plus5-img21.png

  2. Then connect the development board and Ubuntu PC through the Type-C data cable. The position of the Type-C interface of the development board is shown in the figure below:

    Plus5-img52.png

  3. Then install the adb tool on the Ubuntu PC

    test@test:~$ sudo apt update

    test@test:~$ sudo apt -y install adb

  4. You can view the identified ADB devices through the following command

    test@test:~$ adb devices

    List of devices attached

    S63QCF54CJ device

    test@test:~$ lsusb

    Bus 003 Device 006: ID 2207:0006

  5. Then you can log in to the android system through the adb shell on the Ubuntu PC

  6. test@test:~$ adb shell

    console:/ $

  1. Execute the following command to remount the Android system
  2. test@test:~$ adb root

    test@test:~$ adb remount

  1. Then you can transfer files to the Android system
  2. test@test:~$ adb push example.txt /system/

Use network connection adb debugging

Using the network adb does not require a data cable of the Typc-C interface to connect the computer and the development board, but to communicate through the network, so first of all, please ensure that the wired or wireless network of the development board has been connected, and then obtain the IP address of the development board, and then to use.

  1. Make sure that the service.adb.tcp.port of the Android system is set to port number 5555

    console:/ # getprop | grep "adb.tcp"

    [service.adb.tcp.port]: [5555]

  2. If service.adb.tcp.port is not set, you can use the following command to set the port number of network adb

  3. console:/ # setprop service.adb.tcp.port 5555

    console:/ # stop adbd

    console:/ # start adbd

  1. Install adb tool on Ubuntu PC

    test@test:~$ sudo apt update

    test@test:~$ sudo apt install -y adb

  2. Then connect network adb on Ubuntu PC

    test@test:~$ adb connect 192.168.1.xxx (The IP address needs to be changed to the IP address of the development board)

    * daemon not running; starting now at tcp:5037

    * daemon started successfully

    connected to 192.168.1.xxx:5555


    test@test:~$ adb devices

    List of devices attached

    192.168.1.xxx:5555 device

  3. Then you can log in to the android system through the adb shell on the Ubuntu PC

  4. test@test:~$ adb shell

    console:/ #

2.4G USB remote control tested by Android Box

  1. A 2.4G USB remote control that has been tested so far is shown in the figure below

    1. Contains a remote control

      Plus5-img680.png

    2. A USB wireless receiver

      Plus5-img681.png

  2. The Android Box system does not require any configuration, it can be used after plugging it in

How to use the infrared remote control of the Android Box system

  1. The development board comes with an infrared receiver, and its location is shown in the figure below:

    Plus5-img682.png

  2. Before testing infrared reception, we need to prepare an infrared remote control

    Plus5-img683.png

    Note: The Android system provided by Orange Pi only supports the remote control provided by Orange Pi by default, and the remote control of TV or air conditioner cannot be used.

  3. The Android Box system has been adapted to this remote control, and it can be used directly without other settings.

How to use HDMI CEC function in Android Box system

HDMI CEC allows users to control all connected devices through HDMI with only one remote control. Based on this function, we can control the development board with the remote control of the TV.

Before testing this function, please make sure your TV supports HDMI CEC.

  1. First connect the development board to the TV through the HDMI cable, then power on and start

  2. Then turn on the HDMI CEC function in the TV settings. Different TVs may have different ways to turn it on. Here we take Xiaomi TV as an example. Press the menu button on the remote control, then select CEC remote control and press the confirmation button

    Plus5-img684.png

  3. Then select "On" to open the HDMI CEC remote control

    Plus5-img685.png

  4. At this point, you can control the Android Box system of the development board through the remote control of the TV

How to compile Android 12 source code

Download Android 12 source code

  1. First download the Android 12 source code sub-volume compressed package from Google network disk

    Plus5-img686.png

  2. After downloading the sub-volume compression package of the Android 12 source code, please check whether the MD5 checksum is correct, if not, please download the source code again

    test@test:~$ md5sum -c Android_12.tar.gz.md5sum

    Android_12.tar.gz00: confirm

    Android_12.tar.gz01: confirm

    Android_12.tar.gz02: confirm

    Android_12.tar.gz03: confirm

    Android_12.tar.gz04: confirm

    Android_12.tar.gz05: confirm

    Android_12.tar.gz06: confirm

    Android_12.tar.gz07: confirm

  3. Then you need to merge multiple compressed files into one, and then decompress

  4. test@test:~$ cat Android_12.tar.gz0* > Android_12.tar.gz

    test@test:~$ tar -xvf Android_12.tar.gz

Compile the source code of Android 12

  1. First install the software packages required to compile the Android12 source code

    test@test:~$ sudo apt-get update

    test@test:~$ sudo apt-get install -y git gnupg flex bison gperf build-essential \

    zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 \

    lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev ccache \

    libgl1-mesa-dev libxml2-utils xsltproc unzip

    test@test:~$ sudo apt-get install -y u-boot-tools

  2. There is a build.sh compilation script in the source code, and the compilation parameters are as follows

    1. -U: compile uboot

    2. -K: compile kernel

    3. -A: compile android

    4. -u: package and generate update.img and update_spi_nvme.img

    5. -o: Compile the OTA package

    6. -d: specify kernel dts

  3. Compile uboot, kernel, android and package them into update.img

    1. The command to compile and support HDMI 8K display image (LCD > off by default) is as follows:

      test@test:~$ cd Android_12

      test@test:~/ Android_12$ source build/envsetup.sh

      test@test:~/ Android_12$ lunch rk3588_s-userdebug

      test@test:~/ Android_12$ ./build.sh -AUKu

    2. The command to compile and support LCD display image is as > follows:

      test@test:~$ cd Android_12

      test@test:~/ Android_12$ export DUAL_LCD=true

      test@test:~/ Android_12$ source build/envsetup.sh

      test@test:~/ Android_12$ lunch rk3588_s-userdebug

      test@test:~/ Android_12$ ./build.sh -AUKu

    3. The command to compile the image of the Box version is as > follows:

      test@test:~$ cd Android_12

      test@test:~/ Android_12$ export BOARD=orangepi5plus

      test@test:~/ Android_12$ source build/envsetup.sh

      test@test:~/ Android_12$ lunch rk3588_box-userdebug

      test@test:~/ Android_12$ ./build.sh -AUKu

  4. After the compilation is complete, the following information will be printed

    ********rkImageMaker ver 2.1********

    Generating new image, please wait...

    Writing head info...

    Writing boot file...

    Writing firmware...

    Generating MD5 data...

    MD5 data generated successfully!

    New image generated successfully!

    Making update.img OK.

    Make update image ok!

  5. The final image file will be placed in the rockdev/Image-rk3588_s directory. Among them, update.img is the boot image that supports TF card and eMMC, and update_spi_nvme.img is the boot image of NVME SSD

    test@test:~/Android_12$ cd rockdev/Image-rk3588s_s

    test@test:~/Android_12/rockdev/Image-rk3588s_s $ ls update*

    update.img update_spi_nvme.img

  6. If you compile the image of the Box version, the final generated image file will be placed in the rockdev/Image-rk3588_box directory

    test@test:~/Android_12$ cd rockdev/Image-rk3588_box

    test@test:~/Android_12/rockdev/Image-rk3588_box$ ls update*

    update.img update_spi_nvme.img

Instructions for using the Orange Pi OS Droid system

Function adaptation of OPi OS Droid system

Function OPi OS Droid function adaptation
HDMI TX1 display OK
HDMI TX1 Audio OK
HDMI TX2 display OK
HDMI TX2 Audio OK
HDMI RX display OK
HDMI RX Audio OK
USB2.0X2 OK
2.5G PCIe network port X2 OK
2.5G PCIe network port light OK
Debug serial port OK
RTC OK
FAN interface OK
eMMC extension interface OK
AP6275P-WIFI OK
AP6275P-BT OK
AX200-WIFI NO
AX200-BT NO
AX210-WIFI NO
AX210-BT NO
RTL8852BE-WIFI OK
RTL8852BE-BT OK
Recovery button OK
Type-C interface USB3.0 function OK
Type-C interface ADB function OK
Type-C interface DP display function OK
Type-C interface DP audio playback OK
USB3.0 Hub OK
switch button OK
infrared function OK
led light OK
Onboard MIC OK
headphone playback OK
headphone recording OK
SPK Horn OK
40PIN GPIO OK
40PIN I2C OK
40PIN SPI OK
40PIN UART OK
40PIN PWM OK
TF card start OK
SPI Flash+NVME solid state boot OK
OV13850 camera OK
OV13855 camera OK
GPU OK
VPU OK
NPU OK
MIPI LCD NO
HDMI CEC NO

Test method of HDMI In

  1. The location of the HDMI In interface on the development board is as follows:

    Plus5-img265.png

  2. Then use the HDMI to HDMI cable shown in the figure below to connect the HDMI output of other devices to the HDMI In interface of the development board

    Plus5-img11.png

  3. Make sure that the HDMI output of the device connected to the HDMI In interface is normal, and then open the HDMI In test APP

    Plus5-img687.png

  4. Then the window shown in the figure below will appear. At this time, the video input of HDMI In cannot be seen. You need to click the position marked in the red box in the figure below to enlarge it to full screen

    Plus5-img688.png

  5. Then you can see the video input of HDMI In, and the audio input of HDMI In will also be output from the HDMI TX interface or headphone interface of the development board. The figure below shows the desktop of the Linux system of the OPi5 development board input through HDMI In.

    Plus5-img689.png

Appendix

User Manual Update History

version Date Updated Notes
v1.0 2023-05-22 initial version
v1.1 2023-05-24

1. How to use the infrared remote control of the Android Box system

2. Instructions for using the Orange Pi OS Droid system

v1.2 2023-05-26

1. Ubuntu/Debian: HDMI IN test method

2. Delete the instructions for using the RTL8821CU USB WIFI module, this module is not recommended

v1.3 2023-05-29

1. Update the method of using RKDevTool to burn the image to spiflash+ssd

2. Use RKDevTool to clear SPIFlash

v1.4 2023-05-31

1. Update the usage method of M.2 E-Key PCIe WIFI6+Bluetooth module

2. Ubuntu/Debian: How to use the ZFS file system

3. Ubuntu/Debian: Turn off the green light and blue light by default when booting

4. Add the instructions for using the Debian12 system (scattered in multiple sections)

5. Instructions for using the 5v pin in the 40pin interface of the development board to supply power

v1.5 2023-06-07

1. Add the picture of eMMC module

2. Correct the picture of the cooling fan interface

3. Add a method to check the temperature of nvme ssd

Image update history

Date Updated Notes
2023-05-19

Orangepi5plus_1.0.0_debian_bullseye_server_linux5.10.110.7z

Orangepi5plus_1.0.0_debian_bullseye_desktop_xfce_linux5.10.110.7z

Orangepi5plus_1.0.0_debian_bullseye_desktop_kde-plasma_linux5.10.110.7z

Orangepi5plus_1.0.0_ubuntu_focal_server_linux5.10.110.7z

Orangepi5plus_1.0.0_ubuntu_focal_desktop_xfce_linux5.10.110.7z

Orangepi5plus_1.0.0_ubuntu_jammy_server_linux5.10.110.7z

Orangepi5plus_1.0.0_ubuntu_jammy_desktop_xfce_linux5.10.110.7z

Orangepi5plus_1.0.0_ubuntu_jammy_desktop_gnome_linux5.10.110.7z

Opios-droid-aarch64-opi5plus-23.05-linux5.10.110.tar.gz

Opios-droid-aarch64-opi5plus-23.05-linux5.10.110-spi-nvme.tar.gz

OrangePi5Plus_RK3588_Android12_v1.0.0.tar.gz

OrangePi5Plus_RK3588_Android12_lcd_v1.0.0.tar.gz

OrangePi5Plus-RK3588_Android12-box_v1.0.0.tar.gz

OrangePi5Plus_RK3588_Android12_spi-nvme_v1.0.0.tar.gz

OrangePi5Plus_RK3588_Android12_spi-nvme_lcd_v1.0.0.tar.gz

OrangePi5Plus-RK3588_Android12-box_spi-nvme_v1.0.0.tar.gz

openwrt-aarch64-opi5plus-23.05-linux5.10.110-ext4.img.gz

  • initial version
2023-05-22

Opios-arch-aarch64-gnome-opi5plus-23.05-linux5.10.110.img.xz

openwrt-rockchip -armv8-xunlong_orangepi-5-plus-spi-squashfs-sysupgrade.bin

  • initial version
2023-05-24

Orangepi5plus_1.0.2_debian_bullseye_desktop_kde-plasma_linux5.10.110

  • Fix the problem that desktop audio cannot be used
  • Update the chromium browser to chromium-browser_110.0, which supports video playback in h264, h265, vp8, vp9 and av1 formats
2023-05-26

Opios-arch-aarch64-gnome-opi5plus-23.05.1-linux5.10.110.img.xz

  • Taskbar: remove calendar and music, add shortcuts for command line terminal and browser
  • Support to open the command line terminal through the shortcut key of CTRL+ALT+T

OrangePi5Plus_RK3588_Android12_v1.0.1.tar.gz

OrangePi5Plus_RK3588_Android12_v1.0.1_lcd.tar.gz

OrangePi5Plus_RK3588_Android12_v1.0.1_spi-nvme.tar.gz

OrangePi5Plus_RK3588_Android12_v1.0.1_lcd_spi-nvme.tar.gz

  • pre-install google play store

Orangepi5plus_1.0.4_debian_bullseye_desktop_kde-plasma_linux5.10.110.7z

  • Support CTRL+ALT+T shortcut to open the command line terminal
  • Added shortcuts for konsole terminal and chromium browser in the taskbar
  • Optimize the display name of the audio device
  • Optimize test_hdmiin.sh test script
  • Fix the problem that spiflash+nvme ssd cannot start

Orangepi5plus_1.0.4_debian_bullseye_desktop_xfce_linux5.10.110.7z

  • Support CTRL+ALT+T shortcut to open the command line terminal
  • Optimize the display name of the audio device
  • Optimize test_hdmiin.sh test script
  • Update the chromium browser to chromium-browser_110.0, which supports video playback in h264, h265, vp8, vp9 and av1 formats
  • Fix the problem that spiflash+nvme ssd cannot start

Orangepi5plus_1.0.4_ubuntu_focal_desktop_xfce_linux5.10.110.7z
Orangepi5plus_1.0.4_ubuntu_jammy_desktop_xfce_linux5.10.110.7z
Orangepi5plus_1.0.4_ubuntu_jammy_desktop_gnome_linux5.10.110.7z

  • Support CTRL+ALT+T shortcut to open the command line terminal
  • Optimize the display name of the audio device
  • Optimize test_hdmiin.sh test script
  • Fix the problem that spiflash+nvme ssd cannot start

Orangepi5plus_1.0.4_debian_bullseye_server_linux5.10.110.7z
Orangepi5plus_1.0.4_ubuntu_focal_server_linux5.10.110.7z
Orangepi5plus_1.0.4_ubuntu_jammy_server_linux5.10.110.7z

  • Fix the problem that spiflash+nvme ssd cannot start
2023-05-29

Opios-droid-aarch64-opi5plus-23.05.1-linux5.10.110-en.tar.gz

Opios-droid-aarch64-opi5plus-23.05.1-linux5.10.110-en-spi-nvme.tar.gz

  • Pre-installed google play store (en in the above image name means English version, you need to go to Google network disk to download)
2023-06-01

Orangepi5plus_1.0.6_ubuntu_jammy_desktop_xfce_linux5.10.110.7z

  • Fix the problem that the zfs file system cannot be installed
  • Add rk3588-opi5plus-disable-leds.dtbo, used to turn off blue and green lights
  • Update the chromium browser to chromium-browser_110.0, which supports video playback in h264, h265, vp8, vp9 and av1 formats

Orangepi5plus_1.0.6_debian_bullseye_desktop_xfce_linux5.10.110.7z

Orangepi5plus_1.0.6_debian_bullseye_desktop_kde-plasma_linux5.10.110.7z

  • Update mpp package
  • Fix the problem that the zfs file system cannot be installed
  • Add rk3588-opi5plus-disable-leds.dtbo, used to turn off blue and green lights

Orangepi5plus_1.0.6_ubuntu_focal_desktop_xfce_linux5.10.110.7z

Orangepi5plus_1.0.6_ubuntu_jammy_desktop_gnome_linux5.10.110.7z

Orangepi5plus_1.0.6_ubuntu_focal_server_linux5.10.110.7z

Orangepi5plus_1.0.6_debian_bullseye_server_linux5.10.110.7z

Orangepi5plus_1.0.6_ubuntu_jammy_server_linux5.10.110.7z

  • Add rk3588-opi5plus-disable-leds.dtbo, used to turn off blue and green lights
  • Fix the problem that the zfs file system cannot be installed

Orangepi5plus_1.0.6_debian_bookworm_server_linux5.10.110

Orangepi5plus_1.0.6_debian_bookworm_desktop_xfce_linux5.10.110

  • initial version