Orange Pi 3B brings out quite a lot of interfaces, including HDMI output, M.2 PCIe2.0x1, Gigabit Ethernet port, USB2.0, USB3.0 interface and 40pin expansion pin header, etc. It can be widely used in high-end tablet, edge computing, artificial intelligence, cloud computing, AR/VR, smart security, smart home and other fields, covering various AIoT industries.
Orange Pi 3B supports Android11, Ubuntu22.04, Ubuntu20.04, Debian11, Debian12, open source Hongmeng OpenHarmony 4.0 Beta1, Orange Pi OS (Arch), Orange Pi OS (OH) based on open source Hongmeng OpenHarmony and other operating systems.
<span id="purpose-of-orange-pi-3b"></span>
== Purpose of Orange Pi 3B ==
• Integrated RKNN NPU AI accelerator, 0.8Tops@INT8 performance
• Supports one-click conversion of C affeCaffe/TensorFlow/TFLite/ONNX/PyTorch/Keras/Darknet architecture models
|-
| storage
|
• Support eMMC module: 16GB/32GB/64GB/128GB/256GB
• SPI Flash: 16MB/32MB
| Wi-Fi+Bluetooth
|
Wi-Fi 5+BT 5.0,BLE(20U5622)0, BLE(20U5622)
|-
| ethernet transceiver
| Supported OS
|
Android11, Ubuntu22.04, Ubuntu20.04, Debian11, Debian12, open source Hongmeng OpenHarmony 4.0 Beta1, Orange Pi OS (Arch), Orange Pi OS (OH) based on open source Hongmeng OpenHarmony and other operating systems.
|-
|colspan=2|
<div class="figure">
[[File:pi3b-img3.png|800px]]
</div>
<div class="figure">
[[File:pi3b-img4.png|800px]]
</div>
== Interface details of Orange Pi 3B ==
[[File:pi3b-img5-1.png|800px]]
[[File:pi3b-img6.png|800px]]
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
|-
|
<big>'''The diameter of the four positioning holes is 32.0mm7mm, and the diameter of the M.2 PICE device fixing hole is 32.5mm9mm.'''</big>
|}
</ol>
<ol start="5" style="list-style-type: decimal;">
<li>Power adapter, Orange Pi 3B is recommended to use 5V/3A or 5V/4A Type-C power supply for power supply</li>
[[File:pi3b-img11-1.png]]
</ol>
<ol start="6" style="list-style-type: decimal;">
<li>'''3.3V''' USB to TTL module and DuPont line, when using serial port debugging function, need USB to TTL module and DuPont line to connect the development board and computer</li>
[[File:pi3b-img17.png|400px]] [[File:pi3b-img18.png|400px]]
</ol>
<ol start="12" style="list-style-type: decimal;">
<div class="figure">
::[[File:pi3b-img19.png|800px]]
</div>
|-
|
'''https://www.balena.io/etcher/'''
|}
<div class="figure">
[[File:pi3b-img25.png|501x281px|03]]
</div></ol>
<li>The interface displayed in the process of burning the Linux image by balenaEtcher is shown in the figure below, and the progress bar displays purple, indicating that the Linux image is being burned into the TF card</li>
[[File:pi3b-img26.png|428x268px]]
</ol>
<ol start="10" style="list-style-type: decimal;">
<li>After burning the Linux image, balenaEtcher will also verify the image burned into the TF card by default to ensure that there is no problem in the burning process. As shown in the figure below, a green progress bar indicates that the image has been burnt, and balenaEtcher is verifying the burnt image</li>
[[File:pi3b-img27.png|427x267px]]
</ol>
<ol start="11" style="list-style-type: decimal;">
<li>After the successful burning is completed, the display interface of balenaEtcher is as shown in the figure below. If the a green indicator icon is displayed, it means that the image burning is successful. At this time, you can exit balenaEtcher, and then pull out the TF card and insert it into the TF card slot of the development boardfor use. up</li>
<div class="figure">
[[File:pi3b-img28.png|523x324px|04]]
</div></ol>
<div class="figure">
::[[File:pi3b-img16.png|146x143px|D6BB9058-CDC3-42d7-A7FC-FBF630D886B7]]
</div>
<div class="figure">
[[File:pi3b-img29.png|283x90px|6d1c77df7eeb7e491e5f79e8d85cbdc]]
</div></ol>
<div class="figure">
[[File:pi3b-img30.png|290x130px|34acacded202b29eee42fd20f5b4c92]]
</div>
<li><p>Then use the decompression software to decompress '''DriverAssitant_v5.12.zip''', and then find the '''DriverInstall.exe''' executable file in the decompressed folder and open it</p></li>
[[File:pi3b-img31.png|464x136px]]
</ol>
<ol start="6" style="list-style-type: decimal;">
<li>Click the "'''Driver Installation'''" button</li>
[[File:pi3b-img32.png|245x129px]]
</ol>
<ol start="2" style="list-style-type: lower-alpha;">
<li>After waiting for a period of time, a pop-up window will prompt "'''The driver is installed successfully'''", and then click the "'''OK'''" button.</li>
[[File:pi3b-img33.png|254x132px]]
</ol>
</li></ol>
<li>Then decompress '''RKDevTool_Release_v3.15.zip''', this software does not need to be installed, just find '''RKDevTool''' in the decompressed folder and open it</li>
[[File:pi3b-img34.png|448x132px]]
</ol>
<ol start="8" style="list-style-type: decimal;">
<li>After opening the '''RKDevTool''' burning tool, because the computer has not connected to the development board through the USB2.0 male-to-male data cable at this time, the lower left corner will prompt "'''No device found'''"</li>
[[File:pi3b-img35.png|402x189px]]
</ol>
<ol start="9" style="list-style-type: decimal;">
<div class="figure">
[[File:pi3b-img36.png|271x115px|C:\Users\orangepi\Desktop\用户手册插图\pi 3b\1691131157154(1).jpg1691131157154(1)]]
</div></ol>
<li><p>Then press and hold the MaskROM button on the development board, the position of the MaskROM button on the development board is shown in the figure below:</p></li>
[[File:pi3b-img37.png|289x100px]]
</ol>
<ol start="4" style="list-style-type: lower-alpha;">
<li>Then connect the power supply of the Type-C interface to the development board, and power on, and then release the MaskROM button</li>
[[File:pi3b-img38.png|305x94px]]
</ol>
<ol start="5" style="list-style-type: lower-alpha;">
<li>If the previous steps are successful, the development board will enter the '''MASKROM''' mode at this time, and the interface of the burning tool will prompt "'''found a MASKROM device'''"</li>
[[File:pi3b-img39.png|454x213px]]
</ol>
<ol start="6" style="list-style-type: lower-alpha;">
<div class="figure">
[[File:pi3b-img40.png|455x216px|图片1]]
</div></ol>
<li>Then click the right mouse button and the selection interface shown in the figure below will pop up</li>
[[File:pi3b-img41.png|453x213px]]
</ol>
<ol style="list-style-type: lower-roman;">
<li>Then select the '''import configuration''' option</li>
[[File:pi3b-img42.png|458x215px]]
</ol>
<ol start="10" style="list-style-type: lower-alpha;">
<li>Then select the '''rk3588_Linux_tfcard.cfg''' configuration file in the '''MiniLoader''' folder downloaded earlier, and click '''Open'''</li>
[[File:pi3b-img43.png|457x215px]]
</ol>
<ol start="11" style="list-style-type: lower-alpha;">
<li>Then click '''OK'''</li>
[[File:pi3b-img44.png|483x227px]]
</ol>
<ol start="12" style="list-style-type: lower-alpha;">
<li>Then click the position shown in the figure below</li>
[[File:pi3b-img45.png|486x228px]]
</ol>
<ol start="13" style="list-style-type: lower-alpha;">
<div class="figure">
[[File:pi3b-img46.png|494x232px|[78~~Z7UFB@US@8P$QL%OM6]]
</div></ol>
<li>Then click the position shown in the figure below</li>
[[File:pi3b-img47.png|493x232px]]
</ol>
<ol start="15" style="list-style-type: lower-alpha;">
|}
[[File:pi3b-img48.png|499x234px]]
</ol>
<ol start="16" style="list-style-type: lower-alpha;">
<li>Then please check the '''mandatory write by address''' option</li>
[[File:pi3b-img49.png|497x234px]]
</ol>
<ol start="17" style="list-style-type: lower-alpha;">
<li>Click the execute button again to start burning the Linux image to the tf card of the development board</li>
[[File:pi3b-img50.png|497x233px]]
</ol>
<ol start="18" style="list-style-type: lower-alpha;">
<div class="figure">
[[File:pi3b-img51.png|492x231px|%O4~FPPAT$0RH{3S~CGJ@@Q(1)]]
</div></ol>
|-
|
'''https://www.sdcard.org/downloads/formatter/eula_windows/SDCardFormatterv5_WinEN.zip'''
|}
</ol>
<div class="figure">
[[File:pi3b-img52.png|209x228px|选区_199]]
</div></ol>
<li>Then click "'''Format'''", a warning box will pop up before formatting, and formatting will start after selecting "'''Yes (Y)'''"</li>
[[File:pi3b-img53.png|304x147px]]
</ol>
<ol start="5" style="list-style-type: lower-alpha;">
<li>After formatting the TF card, the information shown in the figure below will pop up, click OK</li>
[[File:pi3b-img54.png|186x149px]]
</ol>
</li></ol>
|-
|
'''http://sourceforge.net/projects/win32diskimager/files/Archive/'''
|}
</ol>
<div class="figure">
[[File:pi3b-img55.png|297x206px|C:\Users\orangepi\Desktop\用户手册插图\Pi5 Plus\a8fda8737c5b0b3b38fbb75ef68acfc.pnga8fda8737c5b0b3b38fbb75ef68acfc]]
</div></ol>
<li>After entering the balenaEtcher download page, click the green download button to jump to the place where the software is downloaded</li>
[[File:pi3b-img20.png|434x208px]]
</ol>
<ol start="5" style="list-style-type: decimal;">
<li>Then choose to download the Linux version of the software</li>
[[File:pi3b-img56.png|430x163px]]
</ol>
<ol start="6" style="list-style-type: decimal;">
<li>Then double-click '''balenaEtcher-1.5.109-x64.AppImage''' on the graphical interface of Ubuntu PC to open balenaEtcher (no installation required), and the interface after balenaEtcher is opened is shown in the figure below</li>
[[File:pi3b-img57.png|423x251px]]
</ol>
<ol start="9" style="list-style-type: decimal;">
<div class="figure">
[[File:pi3b-img25.png|501x281px|03]]
</div></ol>
<li>The interface displayed in the process of burning the Linux image by balenaEtcher is shown in the figure below, and the progress bar displays purple, indicating that the Linux image is being burned into the TF card</li>
[[File:pi3b-img58.png|429x184px]]
</ol>
<ol start="11" style="list-style-type: decimal;">
<li>After burning the Linux image, balenaEtcher will also verify the image burned into the TF card by default to ensure that there is no problem in the burning process. As shown in the figure below, a green progress bar indicates that the image has been burnt, and balenaEtcher is verifying the burnt image</li>
[[File:pi3b-img59.png|436x190px]]
</ol>
<ol start="12" style="list-style-type: decimal;">
<li>After successful burning, the display interface of balenaEtcher is as shown in the figure below. If a green indicator icon is displayed, it means that the image burning is successful. At this time, you can exit balenaEtcher, and then pull out the TF card and insert it into the TF card slot of the development board for use. up</li>
[[File:pi3b-img60.png|435x257px]]
</ol>
<span id="how-to-burn-linux-image-to-emmc"></span>
# The development board reserves the expansion interface of the eMMC module. Before burning the system to the eMMC, you first need to purchase an eMMC module that matches the eMMC interface of the development board. Then install the eMMC module to the development board. The eMMC module and the method of plugging into the development board are as follows:
::[[File:pi3b-img61.png|115x84px400px]] [[File:pi3b-img62.png|120x87px400px]]
::[[File:pi3b-img63.png|277x129px800px]]
<ol start="2" style="list-style-type: decimal;">
<div class="figure">
[[File:pi3b-img16.png|141x138px|D6BB9058-CDC3-42d7-A7FC-FBF630D886B7]]
</div></ol>
<div class="figure">
[[File:pi3b-img29.png|360x115px|C:\Users\orangepi\Desktop\用户手册插图\Pi5 Plus\6d1c77df7eeb7e491e5f79e8d85cbdc.png6d1c77df7eeb7e491e5f79e8d85cbdc]]
</div></ol>
<div class="figure">
[[File:pi3b-img30.png|320x144px|C:\Users\orangepi\Desktop\用户手册插图\Pi5 Plus\34acacded202b29eee42fd20f5b4c92.png34acacded202b29eee42fd20f5b4c92]]
</div>
<li><p>Then use the decompression software to decompress '''DriverAssitant_v5.12.zip''', and then find the '''DriverInstall.exe''' executable file in the decompressed folder and open it</p></li>
[[File:pi3b-img31.png|496x146px]]
</ol>
<ol start="6" style="list-style-type: decimal;">
<li>Click the "'''Driver Installation'''" button</li>
[[File:pi3b-img32.png|284x149px]]
</ol>
<ol start="2" style="list-style-type: lower-alpha;">
<li>After waiting for a period of time, a pop-up window will prompt "'''The driver is installed successfully'''", and then click the "'''OK'''" button.</li>
[[File:pi3b-img33.png|296x154px]]
</ol>
</li></ol>
<li>Then decompress '''RKDevTool_Release_v3.15.zip''', this software does not need to be installed, just find '''RKDevTool''' in the decompressed folder and open it</li>
[[File:pi3b-img34.png|484x143px]]
</ol>
<ol start="8" style="list-style-type: decimal;">
<li>After opening the '''RKDevTool''' burning tool, because the computer has not connected to the development board through the USB2.0 male-to-male data cable at this time, the lower left corner will prompt "'''No device found'''"</li>
[[File:pi3b-img35.png|442x208px]]
</ol>
<ol start="9" style="list-style-type: decimal;">
<div class="figure">
[[File:pi3b-img36.png|275x116px|C:\Users\orangepi\Desktop\用户手册插图\pi 3b\1691131157154(1).jpg1691131157154(1)]]
</div></ol>
<li><p>Then press and hold the MaskROM button on the development board, the position of the MaskROM button on the development board is shown in the figure below:</p></li>
[[File:pi3b-img37.png|289x100px]]
</ol>
<ol start="4" style="list-style-type: lower-alpha;">
<li>Then connect the power supply of the Type-C interface to the development board, and power on, and then release the MaskROM button</li>
[[File:pi3b-img38.png|305x94px]]
</ol>
<ol start="5" style="list-style-type: lower-alpha;">
<li>If the previous steps are successful, the development board will enter the '''MASKROM''' mode at this time, and the interface of the burning tool will prompt "'''found a MASKROM device'''"</li>
[[File:pi3b-img39.png|457x215px]]
</ol>
<ol start="6" style="list-style-type: lower-alpha;">
<div class="figure">
[[File:pi3b-img64.png|458x215px|C:\Users\orangepi\Desktop\用户手册插图\Pi5 Plus\未标题-4.jpg未标题-4]]
</div></ol>
<li>Then click the right mouse button and the selection interface shown in the figure below will pop up</li>
[[File:pi3b-img41.png|460x216px]]
</ol>
<ol start="8" style="list-style-type: lower-alpha;">
<li>Then select the '''import configuration''' option</li>
[[File:pi3b-img42.png|458x215px]]
</ol>
<ol style="list-style-type: lower-roman;">
<li>Then select the '''rk3588_Linux_emmc.cfg''' configuration file in the '''MiniLoader''' folder downloaded earlier, and click '''Open'''</li>
[[File:pi3b-img65.png|466x219px]]
</ol>
<ol start="10" style="list-style-type: lower-alpha;">
<li>Then click '''OK'''</li>
[[File:pi3b-img66.png|468x220px]]
</ol>
<ol start="11" style="list-style-type: lower-alpha;">
<li>Then click the position shown in the figure below</li>
[[File:pi3b-img67.png|462x217px]]
</ol>
<ol start="12" style="list-style-type: lower-alpha;">
<div class="figure">
[[File:pi3b-img68.png|459x216px|SIS5H0S2@F5M2D(6ANZEUPG]]
</div></ol>
<li>Then click the position shown in the figure below</li>
[[File:pi3b-img69.png|459x216px]]
</ol>
<ol start="14" style="list-style-type: lower-alpha;">
|}
[[File:pi3b-img48.png|499x234px]]
</ol>
<ol start="15" style="list-style-type: lower-alpha;">
<li>Then please check the option to '''force writing by address'''</li>
[[File:pi3b-img70.png|501x235px]]
</ol>
<ol start="16" style="list-style-type: lower-alpha;">
<li>Click the execute button again to start burning the Linux image to the eMMC of the development board</li>
[[File:pi3b-img71.png|502x236px]]
</ol>
<ol start="17" style="list-style-type: lower-alpha;">
<li>The log displayed after burning the Linux image is shown in the figure below</li>
[[File:pi3b-img72.png|500x235px]]
</ol>
<ol start="18" style="list-style-type: lower-alpha;">
# The development board reserves the expansion interface of the eMMC module. Before burning the system to the eMMC, you first need to purchase an eMMC module that matches the eMMC interface of the development board. Then install the eMMC module to the development board. The eMMC module and the method of plugging into the development board are as follows:
::[[File:pi3b-img61.png|115x84px400px]] [[File:pi3b-img62.png|120x87px400px]]
::[[File:pi3b-img63.png|286x133px800px]]
<ol start="2" style="list-style-type: decimal;">
<li><p>Then you can use the dd command to burn the Linux image of the development board into the eMMC</p>
<ol style="list-style-type: lower-alpha;">
<li><p>In the following command, the '''if= ''' parameter is followed by the full path where the Linux image is stored + the name of the Linux image (such as '''the name of /home/orangepi/Desktop/Linux image'''). Because we have entered the path of the Linux image above, we only need to fill in the name of the Linux image.</p></li>
<li><p>Please do not copy the Linux image name in the following command, but replace it with the actual image name (because the version number of the image may be updated).</p></li>
{| class="wikitable" style="width:800px;"
<li>The M.2 2230 SSD is as follows</li>
[[File:pi3b-img73.png|157x112px]]
</ol>
<ol start="2" style="list-style-type: lower-alpha;">
<li>The M.2 2242 SSD is as follows</li>
[[File:pi3b-img74.png|174x96px]]
</ol>
</li></ol>
<li>Then insert the NVMe SSD into the M.2 PCIe interface of the development board and fix it</li>
[[File:pi3b-img75.png|283x63px]]
</ol>
<ol start="3" style="list-style-type: decimal;">
<li>The position of the SPI Flash on the development board is shown in the figure below, no other settings are required before starting the programming</li>
[[File:pi3b-img76.png|266x211px]]
</ol>
<ol start="4" style="list-style-type: decimal;">
<div class="figure">
[[File:pi3b-img16.png|141x138px|D6BB9058-CDC3-42d7-A7FC-FBF630D886B7]]
</div></ol>
<div class="figure">
[[File:pi3b-img29.png|362x115px|C:\Users\orangepi\Desktop\用户手册插图\Pi5 Plus\6d1c77df7eeb7e491e5f79e8d85cbdc.png6d1c77df7eeb7e491e5f79e8d85cbdc]]
</div></ol>
<div class="figure">
[[File:pi3b-img30.png|264x118px|C:\Users\orangepi\Desktop\用户手册插图\Pi5 Plus\34acacded202b29eee42fd20f5b4c92.png34acacded202b29eee42fd20f5b4c92]]
</div>
<li><p>Then use the decompression software to decompress '''DriverAssitant_v5.12.zip''', and then find the '''DriverInstall.exe''' executable file in the decompressed folder and open it</p></li>
[[File:pi3b-img31.png|446x131px]]
</ol>
<ol start="8" style="list-style-type: decimal;">
<li>Click the "'''Driver Installation'''" button</li>
[[File:pi3b-img32.png|253x133px]]
</ol>
<ol start="2" style="list-style-type: lower-alpha;">
<li>After waiting for a period of time, a pop-up window will prompt "'''The driver is installed successfully'''", and then click the "'''OK'''" button.</li>
[[File:pi3b-img33.png|269x140px]]
</ol>
</li></ol>
<ol start="9" style="list-style-type: decimal;">
<li>Then decompress '''RKDevTool_Release_v3.15.zizip'''p, this software does not need to be installed, just find '''RKDevTool''' in the decompressed folder and open it</li>
[[File:pi3b-img34.png|402x119px]]
</ol>
<ol start="10" style="list-style-type: decimal;">
<li>After opening the '''RKDevTool''' burning tool, because the computer is not connected to the development board through the USB2.0 male-to-male data cable at this time, the lower left corner will prompt "'''No device found'''"</li>
[[File:pi3b-img35.png|402x189px]]
</ol>
<ol start="11" style="list-style-type: decimal;">
<div class="figure">
[[File:pi3b-img36.png|275x116px|C:\Users\orangepi\Desktop\用户手册插图\pi 3b\1691131157154(1).jpg1691131157154(1)]]
</div></ol>
<li><p>Then press and hold the MaskROM button on the development board, the position of the MaskROM button on the development board is shown in the figure below:</p></li>
[[File:pi3b-img37.png|289x100px]]
</ol>
<ol start="4" style="list-style-type: lower-alpha;">
<li>Then connect the power supply of the Type-C interface to the development board, and power on, and then release the MaskROM button</li>
[[File:pi3b-img38.png|305x94px]]
</ol>
<ol start="5" style="list-style-type: lower-alpha;">
<li>If the previous steps are successful, the development board will enter the '''MASKROM''' mode at this time, and the interface of the burning tool will prompt "'''found a MASKROM device'''"</li>
[[File:pi3b-img39.png|457x215px]]
</ol>
<ol start="6" style="list-style-type: lower-alpha;">
<div class="figure">
[[File:pi3b-img64.png|458x215px|C:\Users\orangepi\Desktop\用户手册插图\Pi5 Plus\未标题-4.jpg未标题-4]]
</div></ol>
<li>Then click the right mouse button and the selection interface shown in the figure below will pop up</li>
[[File:pi3b-img41.png|453x213px]]
</ol>
<ol start="8" style="list-style-type: lower-alpha;">
<li>Then select the '''import configuration''' option</li>
[[File:pi3b-img42.png|458x215px]]
</ol>
<ol start="9" style="list-style-type: lower-alpha;">
<li>Then enter the '''MiniLoader''' folder downloaded earlier, then select the '''rk3588_Linux_pcie.cfg''' configuration file, and click '''Open'''</li>
[[File:pi3b-img77.png|462x217px]]
</ol>
<ol start="10" style="list-style-type: lower-alpha;">
<li>Then click '''OK'''</li>
[[File:pi3b-img78.png|468x220px]]
</ol>
<ol start="11" style="list-style-type: lower-alpha;">
<li>Then click the position shown in the figure below</li>
[[File:pi3b-img79.png|475x223px]]
</ol>
<ol start="12" style="list-style-type: lower-alpha;">
<div class="figure">
[[File:pi3b-img68.png|459x216px|SIS5H0S2@F5M2D(6ANZEUPG]]
</div></ol>
<li>Then click the position shown in the figure below</li>
[[File:pi3b-img80.png|486x228px]]
</ol>
<ol start="14" style="list-style-type: lower-alpha;">
<div class="figure">
[[File:pi3b-img81.png|488x228px|GGU}ZN)TL%P[INB(M%MNJV7]]
</div></ol>
<li>Then click the position shown in the figure below</li>
[[File:pi3b-img82.png|493x231px]]
</ol>
<ol start="16" style="list-style-type: lower-alpha;">
|}
[[File:pi3b-img48.png|499x234px]]
</ol>
<ol start="17" style="list-style-type: lower-alpha;">
<li>Then please check '''the mandatory write option to force writing by address''' option</li>
[[File:pi3b-img83.png|498x234px]]
</ol>
<ol start="18" style="list-style-type: lower-alpha;">
<li>Click the Execute button again to start burning the Linux image to the SSD</li>
[[File:pi3b-img84.png|500x235px]]
</ol>
<ol start="19" style="list-style-type: lower-alpha;">
<li>The log displayed after burning the Linux image is shown in the figure below</li>
[[File:pi3b-img85.png|504x240px]]
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
<li><p>First, you need to prepare an NVMe SSD. The PCIe supported by the M.2 slot of the development board is PCIe2.0x1, and the theoretical maximum speed is 500MB/s. PCIe3.0 and PCIe4.0 NVMe SSDs are also available, but the highest speed is only PCIe2.0x1.</p>
<ol style="list-style-type: lower-alpha;">
<li>The M.2 2230 SSD is as follows</li></ol></li></ol> [[File:pi3b-img73.png|158x114px]]
[[File:pi3b-img73.png]]
</ol>
<ol start="2" style="list-style-type: lower-alpha;">
<li>The M.2 2242 SSD is as follows</li></ol> [[File:pi3b-img74.png|192x104px]]
[[File:pi3b-img74.png]]
</ol>
</li></ol>
<ol start="2" style="list-style-type: decimal;">
<li>Then insert the NVMe SSD into the M.2 PCIe interface of the development board and fix it</li></ol> [[File:pi3b-img75.png|283x63px]]
[[File:pi3b-img75.png]]
</ol>
<ol start="3" style="list-style-type: decimal;">
<li>The position of SPI Flash on the development board is shown in the figure below, no other settings are required before starting to burn</li></ol> [[File:pi3b-img76.png|261x198px]]
[[File:pi3b-img76.png]]
</ol>
<ol start="4" style="list-style-type: decimal;">
<li><p>Burning the Linux image to SPIFlash+NVMe SSD requires a TF card, so first you need to burn the Linux image to the TF card, and then use the TF card to start the development board to enter the Linux system. For the method of burning the Linux image to the TF card, please refer to the instructions in the two sections of [[\lOrange Pi 3B#Method of burning Linux image to TF card based on Windows PC|'''Method of burning Linux image to TF card based on Windows PC''']] and [[\lOrange Pi 3B#Method of burning Linux image to TF card based on Ubuntu PC|'''the method of burning the Linux image to the TF card based on the Ubuntu PC''']].</p></li>
<li><p>After using the TF card to start the Linux system, we first burn the u-boot image into the SPI Flash</p>
<ol style="list-style-type: lower-alpha;">
<li>Run nand-sata-install first, '''<span style="color:#FF0000">ordinary users remember to add sudo permission</span>'''</li></ol></li></ol>
{| class="wikitable" style="width:800px;"
|-
|
orangepi@orangepi:~$ '''sudo nand-sata-install'''
|}</ol>
<ol start="2" style="list-style-type: lower-alpha;">
<li>Then select '''7 Install/Update the bootloader on SPI Flash'''</li></ol>
<div class="figure">
[[File:pi3b-img86.png|355x174px|IMG_256]]
</div></ol>
<ol start="3" style="list-style-type: lower-alpha;">
<li>Then select '''<Yes>'''</li></ol>
<div class="figure">
[[File:pi3b-img87.png|356x179px|IMG_256]]
</div></ol>
<ol start="4" style="list-style-type: lower-alpha;">
<li>Then please wait patiently for the burning to complete. After the burning is completed, the display will be as follows (a '''Done''' will be displayed in the lower left corner):</li></ol>
<div class="figure">
[[File:pi3b-img88.png|358x161px|IMG_256]]
</div></ol></li></ol>
<ol start="6" style="list-style-type: decimal;">
<li><p>Then upload the Linux image file (Debian or Ubuntu image downloaded from the official website) to the TF card. For the method of uploading the Linux image file to the development board, please refer to the description in the section of [[\lOrange Pi 3B#The method of uploading files to the Linux system of the development board|'''the method of uploading files to the development board Linux system''']].</p></li><li><p>After uploading the image to the Linux system of the development board, we enter the storage path of the image file in the command line of the Linux system of the development board. For example, I store the Linux image of the development board in the '''/home/orangepi/Desktop''' directory Download it, and then enter the '''/home/orangepi/Desktop''' directory to see the uploaded image file.</p></li></ol>{| class="wikitable" style="width:800px;" |-|
orangepi@orangepi:~$ '''cd /home/orangepi/Desktop'''
Orangepi3b_x.x.x_debian_bullseye_desktop_xfce_Linux5.10.160.img
|}
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
|-
|
<big>'''How to enter the command line of the development board Linux system?'''
'''1. For the method of using the serial port to log in to the terminal, please refer to the instructions in the section on [[Orange Pi 3B#How to enter use the command line of debugging serial port|how to use the development board Linux system?debugging serial port]].'''
# '''For the method of using the serial port to log in to the terminal, please refer to the instructions in the section on [[\l|how to use the debugging serial port]]2.'''# '''Use ssh to remotely log in to the Linux system, please refer to the instructions in the section of [[\lOrange Pi 3B#SSH remote login development board|SSH remote login to the development board]].'''# '''If HDMI, LCD and other display screens are connected, you can open a command line terminal on the desktop.'''
'''3. If HDMI, LCD and other display screens are connected, you can open a command line terminal on the desktop.'''</big>
|}
</ol>
<!-- -->
<ol start="8" style="list-style-type: decimal;">
<li>Next, let's confirm that the NVMe SSD has been recognized by the development board's Linux. If the NVMe SSD is recognized normally, use the '''sudo fdisk -l''' command to see '''nvme''' related information</li></ol>
{| class="wikitable" style="width:800px;"
|-
|
orangepi@orangepi:~/Desktop$ '''sudo fdisk -l | grep "nvme0n1"'''
Disk /dev/nvme0n1: 1.86 TiB, 2048408248320 bytes, 4000797360 sectors
|}
Use the '''lspci''' command to see an NVMe-related PCI device
{| class="wikitable" style="width:800px;"
|-
|
orangepi@orangepi:~/Desktop$ '''lspci'''
01:00.0 Non-Volatile memory controller: Realtek Semiconductor Co., Ltd. Device 5765 (rev 01)
|}</ol>
<ol start="9" style="list-style-type: decimal;">
<li>Then we can use the dd command to clear the NVMe SSD (optional)</li></ol>
{| class="wikitable" style="width:800px;"
|-
|
orangepi@orangepi3b:~/Desktop$ '''sudo dd bs=1M if=/dev/zero of=/dev/nvme0n1 count=2000 status=progress'''
orangepi@orangepi3b:~/Desktop$ '''sudo sync'''
|}</ol>
<ol start="10" style="list-style-type: decimal;">
<li>Then you can use the dd command to burn the Linux image of the development board to the NVMe SSD</li></ol>
<!-- -->
<ol style="list-style-type: lower-alpha;">
<li><p>In the following command, the '''if= ''' parameter is followed by the full > 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>
{| class="wikitable" style="width:800px;"
|-
|
'''sudo dd bs=1M if=Orangepi3b_x.x.x_debian_bullseye_desktop_xfce_Linux5.10.160.img of=/dev/nvme0n1 status=progress'''
'''sudo''' '''sync'''
|}
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
|-
|
<big>'''<span style="color:#FF0000">Note, if you upload a .7z or .xz or .gz Linux image compressed file, please remember to decompress it before using the dd command to burn.</span>'''
'''Note, if you upload a .7z or .xz or .gz Linux image compressed file, please remember to decompress it before using the dd command to burn.'''
'''The detailed description of all parameters of the dd command and more usage can be viewed by executing the man dd command in the Linux system.'''
'''The detailed description of all parameters of the dd command and more usage can be viewed by executing the man dd command in the Linux system.'''</big>
|}
</ol>
</ol>
<ol start="11" style="list-style-type: decimal;">
<li><p>After successfully burning the Linux image of the development board to the NVMe SSD, you can use the poweroff command to shut down. Then please pull out the TF card, and then short press the power button to turn on, then the Linux system in SPIFlash+NVMe SSD will be started.</p></li>
<li><p>After starting the system in the NVMe SSD, use the '''df -h''' command to see the actual hard disk capacity</p>
<ol style="list-style-type: lower-alpha;">
<li>128GB NVMe SSD</li> {| class="wikitable" style="width:800px;"|-|<p>orangepi@orangepi:~$ '''df -h'''</p><span style="margin-right: 80px;">Filesystem </span><span style="margin-right: 50px;">Size </span><span style="margin-right: 30px;">Used </span><span style="margin-right: 30px;">Avail</span><span style="margin-right: 50px;">Use% Mounted on</span><br><span style="margin-right: 110px;">udev</span><span style="margin-right: 60px;">3.8G </span><span style="margin-right: 50px;">8.0K </span><span style="margin-right: 70px;">3.8G </span><span style="margin-right: 90px;">1% /dev</span><br><span style="margin-right: 100px;">tmpfs </span><span style="margin-right: 50px;">769M </span><span style="margin-right: 30px;">1.4M </span><span style="margin-right: 70px;">768M </span><span style="margin-right: 90px;">1% /run</span><br><span style="margin-right: 25px;color:#FF0000">'''/dev/nvme0n1p2'''</span><span style="margin-right: 50px;color:#FF0000">'''118G '''</span><span style="margin-right: 35px;color:#FF0000">'''5.8G '''</span><span style="margin-right: 80px;color:#FF0000">'''111G '''</span><span style="margin-right: 90px;color:#FF0000">'''5% /'''</span><br><span style="margin-right: 100px;">tmpfs </span><span style="margin-right: 60px;">3.8G </span><span style="margin-right: 50px;">0</span><span style="margin-right: 50px;">3.8G </span><span style="margin-right: 90px;">0% /dev/shm</span><br><span style="margin-right: 100px;">tmpfs </span><span style="margin-right: 60px;">5.0M </span><span style="margin-right: 50px;">4.0K </span><span style="margin-right: 50px;">5.0M </span><span style="margin-right: 90px;">1% /run/lock</span><br><span style="margin-right: 100px;">tmpfs </span><span style="margin-right: 60px;">3.8G </span><span style="margin-right: 50px;">16K </span><span style="margin-right: 50px;">3.8G </span><span style="margin-right: 90px;">1% /tmp</span><br><span style="margin-right: 25px;color:#FF0000">'''/dev/nvme0n1p1'''</span><span style="margin-right: 50px;color:#FF0000">'''256M '''</span><span style="margin-right: 35px;color:#FF0000">'''90M '''</span><span style="margin-right: 80px;color:#FF0000">'''166M '''</span><span style="margin-right: 90px;color:#FF0000">'''36% /boot'''</span><br><span style="margin-right: 65px;">/dev/zram1</span><span style="margin-right: 60px;">194M </span><span style="margin-right: 50px;">9.9M </span><span style="margin-right: 50px;">170M </span><span style="margin-right: 90px;">6% /var/log</span><br><span style="margin-right: 100px;">tmpfs </span><span style="margin-right: 60px;">769M </span><span style="margin-right: 50px;">60K </span><span style="margin-right: 50px;">769M </span><span style="margin-right: 90px;">1% /run/user/1000</span><br><span style="margin-right: 100px;">tmpfs </span><span style="margin-right: 60px;">769M </span><span style="margin-right: 50px;">48K </span><span style="margin-right: 50px;">769M </span><span style="margin-right: 90px;">1% /run/user/0</span><br>|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li>2TB NVMe SSD</li>{| class="wikitable" style="width:800px;"|-|<p>orangepi@orangepi:~$ '''df -h'''</p><span style="margin-right: 80px;">Filesystem </span><span style="margin-right: 50px;">Size </span><span style="margin-right: 30px;">Used </span><span style="margin-right: 30px;">Avail</span><span style="margin-right: 50px;">Use% Mounted on</span><br><span style="margin-right: 110px;">udev</span><span style="margin-right: 60px;">3.8G </span><span style="margin-right: 50px;">8.0K </span><span style="margin-right: 70px;">3.8G </span><span style="margin-right: 90px;">1% /dev</span><br><span style="margin-right: 100px;">tmpfs </span><span style="margin-right: 50px;">769M </span><span style="margin-right: 30px;">1.4M </span><span style="margin-right: 70px;">768M </span><span style="margin-right: 90px;">1% /run</span><br><span style="margin-right: 25px;color:#FF0000">'''/dev/nvme0n1p2'''</span><span style="margin-right: 50px;color:#FF0000">'''1.9T '''</span><span style="margin-right: 35px;color:#FF0000">'''4.1G '''</span><span style="margin-right: 80px;color:#FF0000">'''1.8T '''</span><span style="margin-right: 90px;color:#FF0000">'''1% /'''</span><br><span style="margin-right: 100px;">tmpfs </span><span style="margin-right: 60px;">3.8G </span><span style="margin-right: 50px;">0</span><span style="margin-right: 50px;">3.8G </span><span style="margin-right: 90px;">0% /dev/shm</span><br><span style="margin-right: 100px;">tmpfs </span><span style="margin-right: 60px;">5.0M </span><span style="margin-right: 50px;">4.0K </span><span style="margin-right: 50px;">5.0M </span><span style="margin-right: 90px;">1% /run/lock</span><br><span style="margin-right: 65px;">/dev/zram2</span><span style="margin-right: 60px;">3.7G </span><span style="margin-right: 50px;">76K </span><span style="margin-right: 50px;">3.5G </span><span style="margin-right: 90px;">1% /tmp</span><br><span style="margin-right: 25px;color:#FF0000">'''/dev/nvme0n1p1'''</span><span style="margin-right: 50px;color:#FF0000">'''256M '''</span><span style="margin-right: 35px;color:#FF0000">'''90M '''</span><span style="margin-right: 80px;color:#FF0000">'''166M '''</span><span style="margin-right: 90px;color:#FF0000">'''36% /boot'''</span><br><span style="margin-right: 65px;">/dev/zram1</span><span style="margin-right: 60px;">194M </span><span style="margin-right: 50px;">9.9M </span><span style="margin-right: 50px;">170M </span><span style="margin-right: 90px;">6% /var/log</span><br><span style="margin-right: 100px;">tmpfs </span><span style="margin-right: 60px;">769M </span><span style="margin-right: 50px;">60K </span><span style="margin-right: 50px;">769M </span><span style="margin-right: 90px;">1% /run/user/1000</span><br><span style="margin-right: 100px;">tmpfs </span><span style="margin-right: 60px;">769M </span><span style="margin-right: 50px;">48K </span><span style="margin-right: 50px;">769M </span><span style="margin-right: 90px;">1% /run/user/0</span><br>|}</ol>
</li></ol>
<ol start="13" style="list-style-type: decimal;">
<li>When the same system is programmed in the TF card and NVMe SSD, '''if both the TF card and NVMe SSD are inserted into the development board, then power on and start the development board, and u-boot will give priority to starting the system in the TF card.''' However, since the systems in the TF card and the NVMe SSD are exactly the same, the UUIDs of the /'''boot''' partition and the '''rootfs''' partition in the two storage devices are also the same, which may cause the partition in the NVMe SSD to be loaded when the TF card starts. Running the script below resolves this issue.</li>
{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''df sudo fix_mmc_ssd.sh'''|}{| class="wikitable" style="background-hcolor:#ffffdc;width:800px;" |-| <big>'''Exactly the same system means that the image name is exactly the same. Even if they are all Debian11 systems, the versions are different.'''</big>|}</ol><span id="how-to-use-balenaetcher-software-to-burn"></span>
Filesystem Size Used Avail Use% Mounted on=== How to use balenaEtcher software to burn ===
udev 3<ol style="list-style-type: decimal;"><li><p>First, you need to prepare an NVMe SSD.8G 8The PCIe supported by the M.0K 32 slot of the development board is PCIe2.8G 1% 0x1, and the theoretical maximum speed is 500MB/devs. PCIe3.0 and PCIe4.0 NVMe SSDs are also available, but the highest speed is only PCIe2.0x1.</p><ol style="list-style-type: lower-alpha;"><li>The M.2 2230 SSD is as follows</li>
tmpfs 769M 1[[File:pi3b-img73.4M 768M 1% png]]</runol><ol start="2" style="list-style-type: lower-alpha;"><li>The M.2 2242 SSD is as follows</li>
'''[[File:pi3b-img74.png]]</devol></nvme0n1p2 118G 5.8G 111G 5% li></'''ol><ol start="2" style="list-style-type: decimal;">tmpfs 3<li>Then insert the NVMe SSD into the M.8G 0 3.8G 0% /dev2 PCIe interface of the development board and fix it</shmli>
tmpfs 5[[File:pi3b-img75.0M 4.0K 5.0M 1% png]]</runol><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</lockli>
tmpfs 3[[File:pi3b-img76.8G 16K 3png]]</ol><ol start="4" style="list-style-type: decimal;"><li><p>Burning the Linux image to SPIFlash+NVMe SSD requires a TF card, so first you need to burn the Linux image to the TF card, and then use the TF card to start the development board to enter the Linux system. For the method of burning the Linux image to the TF card, please refer to the instructions in the two sections of [[Orange Pi 3B#Method of burning Linux image to TF card based on Windows PC|'''the method of burning the Linux image to the TF card based on the Windows PC''']] and [[Orange Pi 3B#Method of burning Linux image to TF card based on Ubuntu PC|'''the method of burning the Linux image to the TF card based on the Ubuntu PC''']].8G 1% </p></li><li><p>After booting into the Linux system in the TF card, please confirm that the NVMe SSD has been properly recognized by the Linux of the development board. If the NVMe SSD is recognized normally, use the '''sudo fdisk -l''' command to see '''nvme''' related information</p></li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~/tmpDesktop$ '''sudo fdisk -l | grep "nvme0n1"'''
'''Disk /dev/nvme0n1p1 256M 90M 166M 36% /boot'''nvme0n1: 1.86 TiB, 2048408248320 bytes, 4000797360 sectors|}
/dev/zram1 194M 9.9M 170M 6% /var/logUse the '''lspci''' command to see an NVMe-related PCI device
tmpfs 769M 60K 769M 1% {| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~/run/user/1000Desktop$ '''lspci'''
tmpfs 769M 48K 769M 1% /run/user/0:00.0 PCI bridge: Fuzhou Rockchip Electronics Co., Ltd Device 3566 (rev 01)
01:00.0 Non-Volatile memory controller: Realtek Semiconductor Co., Ltd. Device 5765 (rev 01)|}</ol><ol start="26" style="list-style-type: lower-alphadecimal;"><li>2TB NVMe SSDThe balenaEtcher has been pre-installed in the Linux image, and the opening method is as follows:</li></ol>
orangepi@orangepi:~$ '''df -h'''<div class="figure">
Filesystem Size Used Avail Use% Mounted on[[File:pi3b-img89.png]]
udev 3</div>{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''If it is not pre-installed, for [[Orange Pi 3B#The method of downloading and installing the balenaEtcher version of arm64|how to download and install the arm64 version of balenaEtcher]], please refer to the instructions in the section on how to download and install the arm64 version of balenaEtcher.8G 8.0K 3.8G 1% '''</big>|}</ol><ol start="7" style="list-style-type: decimal;"><li>The interface after balenaEtcher is opened is as follows:</devli>
tmpfs 769M 1.4M 768M 1% /run<div class="figure">
'''/dev/nvme0n1p2 1[[File:pi3b-img90.9T 4.1G 1.8T 1% /'''png]]
tmpfs 3.8G 0 3.8G 0% </devdiv></shmol><ol start="8" style="list-style-type: decimal;"><li><p>The method of using balenaEtcher to burn u-boot to the SPI Flash of the development board is as follows:</p><ol style="list-style-type: lower-alpha;"><li>First click on '''Flash from file'''</li>
tmpfs 5.0M 4.0K 5.0M 1% /run/lock<div class="figure">
/dev/zram2 3[[File:pi3b-img91.7G 76K 3.5G 1% /tmppng]]
</div></ol><ol start="2" style="list-style-type: lower-alpha;"><li>Then enter the '''/devusr/nvme0n1p1 256M 90M 166M 36% lib/Linux-u-boot-legacy-orangepi3b_1.x.x_arm64''' directory, select '''rkspi_loader.img''', and click '''Open''' to open</li>
/dev/zram1 194M 15M 165M 9% /var/log<div class="figure">
tmpfs 769M 60K 769M 1% /run/user/1000[[File:pi3b-img92.png]]
tmpfs 769M 48K 769M 1% </rundiv></userol><ol start="3" style="list-style-type: lower-alpha;"><li>The interface after opening '''rkspi_loader.img''' is as follows:</0li>
[[File:pi3b-img93.png]]</ol><ol start="134" style="list-style-type: decimallower-alpha;"><li>When the same system is programmed in the TF card and NVMe SSD, '''if both the TF card and NVMe SSD are inserted into the development board, then power on and start the development board, and u-boot will give priority to starting the system in the TF card.''' However, since the systems in the TF card and the NVMe SSD are exactly the same, the UUIDs of the /'''boot''' partition and the Then click '''rootfsSelect target''' partition in the two storage devices are also the same, which may cause the partition in the NVMe SSD to be loaded when the TF card starts. Running the script below resolves this issue.</li></ol>
orangepi@orangepi:~$ '''sudo fix_mmc_ssd.sh'''<div class="figure">
'''Exactly the same system means that the image name is exactly the same[[File:pi3b-img94. Even if they are all Debian11 systems, the versions are different.'''png]]
<span id/div></ol><ol start="5" style="how-to-use-balenaetcherlist-softwarestyle-totype: lower-burnalpha;"><li>Then click '''Show 2 hidden''' to open more options for storage devices</spanli> <div class=== How to use balenaEtcher software to burn ==="figure">
<ol style="list-style-type: decimal;"><li><p>First, you need to prepare an NVMe SSD. The PCIe supported by the M.2 slot of the development board is PCIe2.0x1, and the theoretical maximum speed is 500MB/s. PCIe3.0 and PCIe4.0 NVMe SSDs are also available, but the highest speed is only PCIe2.0x1.</p><ol style="list-style-type[[File: lowerpi3b-alpha;"><li>The Mimg95.2 2230 SSD is as follows</li></ol></li></ol>png]]
[[File</div></ol><ol start="6" style="list-style-type:pi3blower-img73.png|189x136px]]alpha;"><li>Then select the device name of SPI Flash '''/dev/mtdblock0''', and click '''Select'''</li>
<ol startdiv class="2figure" style="list-style-type: lower-alpha;"><li>The M.2 2242 SSD is as follows</li></ol>
[[File:pi3b-img74img96.png|238x129px]]
</div></ol><ol start="27" style="list-style-type: decimallower-alpha;"><li>Then insert the NVMe SSD into the M.2 PCIe interface of the development board and fix itclick '''Flash'''</li></ol>
[[File:pi3b-img75.png|283x63px]]<div class="figure">
<ol start="3" style="list[[File:pi3b-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>img97.png]]
[[File</div></ol><ol start="8" style="list-style-type:pi3blower-img76.png|261x198px]]alpha;"><li>Then click '''Yes, I'm sure'''</li>
<ol startdiv class="4figure" style="list-style-type: decimal;"><li><p>Burning the Linux image to SPIFlash+NVMe SSD requires a TF card, so first you need to burn the Linux image to the TF card, and then use the TF card to start the development board to enter the Linux system. For the method of burning the Linux image to the TF card, please refer to the instructions in the two sections of [[\l|'''the method of burning the Linux image to the TF card based on the Windows PC''']] and [[\l|'''the method of burning the Linux image to the TF card based on the Ubuntu PC''']].</p></li><li><p>After booting into the Linux system in the TF card, please confirm that the NVMe SSD has been properly recognized by the Linux of the development board. If the NVMe SSD is recognized normally, use the '''sudo fdisk -l''' command to see '''nvme''' related information</p></li></ol>
orangepi@orangepi[[File:~/Desktop$ '''sudo fdisk pi3b-l | grep "nvme0n1"'''img98.png]]
Disk </devdiv></nvme0n1ol><ol start="9" style="list-style-type: 1.86 TiBlower-alpha;"><li>Then enter the password '''orangepi''' of the development board Linux system, 2048408248320 bytes, 4000797360 sectorsand it will start burning the u-boot image into the SPI Flash</li>
Use the '''lspci''' command to see an NVMe-related PCI device<div class="figure">
orangepi@orangepi[[File:~/Desktop$ '''lspci'''pi3b-img99.png]]
00:00.0 PCI bridge: Fuzhou Rockchip Electronics Co., Ltd Device 3566 (rev 01) 01:00.0 Non-Volatile memory controller: Realtek Semiconductor Co., Ltd. Device 5765 (rev 01)</div></ol><ol start="610" style="list-style-type: decimallower-alpha;"><li>The balenaEtcher has been pre-installed in display of the Linux image, and the opening method burning process is as follows:</li></ol>
<div class="figure">
[[File:pi3b-img89img100.png|506x249px|IMG_256]]
</div>'''If it is not pre-installed, for [[\l|how to download and install the arm64 version of balenaEtcher]], please refer to the instructions in the section on how to download and install the arm64 version of balenaEtcher.'''</ol><ol start="711" style="list-style-type: decimallower-alpha;"><li>The interface display after balenaEtcher is opened burning is as follows:</li></ol>
<div class="figure">
[[File:pi3b-img90img101.png|406x207px|IMG_256]]
</div></ol></li></ol><ol start="89" style="list-style-type: decimal;"><li><p>The method of using balenaEtcher burning the Linux system in the TF card to burn u-boot the NVMe SSD (this method is equivalent to cloning the system in the SPI Flash of TF card to the development board is as follows:NVMe SSD)</p>
<ol style="list-style-type: lower-alpha;">
<li>First click on '''Flash from fileClone drive'''</li></ol></li></ol>
<div class="figure">
[[File:pi3b-img91img102.png|406x205px|IMG_256]]
</div></ol>
<ol start="2" style="list-style-type: lower-alpha;">
<li>Then enter select the device name of the TF card '''/usrdev/lib/Linux-u-boot-legacy-orangepi3b_1.x.x_arm64''' directory, select '''rkspi_loader.imgmmcblk1''', and click '''Open''' to open</li></ol>
<div class="figure">
[[File:pi3b-img92img103.png|563x110px|IMG_256]]
</div></ol>
<ol start="3" style="list-style-type: lower-alpha;">
<li>The interface after opening '''rkspi_loader.img''' the TF card is as follows:</li></ol>
[[File:pi3b-img93.png|379x181px]]<div class="figure">
[[File:pi3b-img104.png]]
</div></ol>
<ol start="4" style="list-style-type: lower-alpha;">
<li>Then click '''Select target'''</li></ol>
<div class="figure">
[[File:pi3b-img94.png|379x171px|IMG_256]]
</div></ol>
<ol start="5" style="list-style-type: lower-alpha;">
<li>Then click '''Show 2 hidden''' to open more options for storage devices</li></ol>
<div class="figure">
[[File:pi3b-img95.png|385x155px|IMG_256]]
</div></ol>
<ol start="6" style="list-style-type: lower-alpha;">
<li>Then select the device name of SPI Flash the NVMe SSD '''/dev/mtdblock0nvme0n1''', and click '''Select'''</li></ol>
<div class="figure"> [[File:pi3b-img96img105.png|389x264px|IMG_256]] </divol>
<ol start="7" style="list-style-type: lower-alpha;">
<li>Then click '''Flash'''</li></ol>
<div class="figure">
[[File:pi3b-img97img106.png|394x268px|IMG_256]]
</div></ol>
<ol start="8" style="list-style-type: lower-alpha;">
<li>Then click '''Yes, I'm sure'''</li></ol>
<div class="figure">
[[File:pi3b-img98img107.png|396x269px|IMG_256]]
</div></ol><ol start="9" style="list-style-type: lower-romanalpha;"><li>Then enter the password '''orangepi''' of the Linux system on the development board Linux system, and it will start burning the u-boot Linux image into to the SPI FlashSSD</li></ol>
<div class="figure">
[[File:pi3b-img99img108.png|393x269px|IMG_256]]
</div></ol>
<ol start="10" style="list-style-type: lower-alpha;">
<li>The display of the burning process is as follows:</li></ol> [[File:pi3b-img109.png]]
<div class="figure">
[[File:pi3b-img100img110.png|397x272px|IMG_256]]
</div></ol>
<ol start="11" style="list-style-type: lower-alpha;">
<li>The display after burning is as follows:</li> [[File:pi3b-img111.png]]</ol><ol start="12" style="list-style-type: lower-alpha;"><li><p>Then you need to expand the capacity of the rootfs partition in the NVMe SSD. The steps are as follows:</p><ol style="list-style-type: none;"><li><p>a) Open '''GParted''' first, if the system does not have Gparted pre-installed, please use the apt command to install it</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''sudo apt-get install -y gparted'''</p>|}</li>
<div class="figure">
[[File:pi3b-img101img112.png|395x225px|IMG_256]]
</div></ol><ol start="92" style="list-style-type: decimalnone;"><li><p>The method b) Then enter the password orangepi of burning the Linux system in the TF card to the NVMe SSD (this method is equivalent to cloning the system in the TF card to the NVMe SSD)</p><ol style="list-style-type: lower-alpha;"><li>First , and click '''Clone driveAuthenticate'''</li></ol></li></ol>
[[File:pi3b-img113.png]]<div class/ol><ol start="3" style="figurelist-style-type: none;"><li>c) Then click '''Fix'''</li>
[[File:pi3b-img102img114.png|386x204px|IMG_256]] </divol><ol start="24" style="list-style-type: lower-alphanone;"><li>d) Then select the device name of the TF card '''/dev/mmcblk1'''NVMe SSD</li></ol>
<div class="figure">
[[File:pi3b-img103img115.png|379x256px|IMG_256]]
</div></ol><ol start="35" style="list-style-type: lower-alphanone;"><li>e) The display interface after opening the TF card selecting NVMe SSD is as follows:</li></ol>
<div class="figure">
[[File:pi3b-img104img116.png|381x191px|IMG_256]]
</div></ol><ol start="46" style="list-style-type: lower-alphanone;"><li>f) Then select the '''/dev/nvme0n1p2''' partition, click the right button again, and then select '''Select targetResize/Move'''</li></ol>
<div class="figure">
[[File:pi3b-img94img117.png|379x171px|IMG_256]]
</div></ol><ol start="57" style="list-style-type: lower-alphanone;"><li>g) Then click '''Show 2 hidden''' drag the capacity to open more options for storage devicesthe maximum at the position shown in the figure below</li></ol>
[[File:pi3b-img118.png]]<div class/ol><ol start="8" style="figurelist-style-type: none;"><li>h) Then click '''Resize/Move'''</li>
[[File:pi3b-img95img119.png|385x155px|IMG_256]]</ol><ol style="list-style-type: none;"><li>i) Then click the green '''√''' in the position below</li>
[[File:pi3b-img120.png]]</divol><ol start="610" style="list-style-type: lower-alphanone;"><li>j) Then select the device name of the NVMe SSD '''/dev/nvme0n1''', and click '''SelectApply'''</li></ol>
[[File:pi3b-img105img121.png|386x264px]]</ol><ol start="11" style="list-style-type: none;"><li>k) Then click '''Close''' to close</li>
[[File:pi3b-img122.png]]</ol></li></ol><ol start="713" style="list-style-type: lower-alpha;"><li>At this point, you can use the '''sudo poweroff''' command to shut down. Then click please pull out the TF card, and then short press the power button to turn on, then the Linux system in SPIFlash+NVMe SSD will be started.</li></ol></li></ol><!-- --><ol start="10" style="list-style-type: decimal;"><li><p>Step '''Flash9'''is to clone the system in the TF card to the NMVe SSD. We can also directly burn the Linux image file to the NVMe SSD. Here are the steps:</p><ol style="list-style-type: lower-alpha;"><li><p>Upload the Linux image file to the Linux system of the development board</p></li><li><p>Then use balenaEtcher to burn</olp></li>
<div class="figure">
[[File:pi3b-img106img123.png|389x264px|IMG_256]]
</div></ol><ol start="83" style="list-style-type: lower-alpha;"><li>Then click '''YesAfter using this method to burn the image, there is no need to manually expand the capacity, I'm sureand it will automatically expand the capacity at the first startup.'''</li></ol></li></ol><span id="how-to-burn-android-image-to-tf-card"></span>
<div class="figure">= How to burn Android image to TF card ==
[[File:pi3b<span id="method-img107of-burning-android-image-to-tf-card-through-usb2.0-burning-port"></span>=== Method of burning Android image to TF card through USB2.png|392x268px|IMG_256]]0 burning port ===
</div><ol style="list-style-type: lower-roman;"><li>Then enter # First prepare a TF card with 8GB or larger capacity. The transmission speed of the password orangepi TF card must be class10 or above. It is recommended to use a TF card of the Linux system on the development board, SanDisk and it will start burning the Linux image other brands# You also need to prepare a good quality USB2.0 male-to the SSD</li></ol>-male data cable
<div class="figure">
::[[File:pi3b-img108img16.png|390x267px|IMG_256]]
</div>
<ol start="103" style="list-style-type: lower-alphadecimal;"><li>The display of the <p>Then download Rockchip driver '''DriverAssitant_v5.12.zip''' and burning process is as followstool '''RKDevTool_Release_v3.15.zip''' from [http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-3B.html '''Orange Pi's data download page''']</lip></olli> <li><p>Then download the Android image from [[Filehttp:pi3b//www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-img109Pi-3B.png|393x212px]html '''Orange Pi's download page'''].</p><ol style="list-style-type: lower-alpha;"><li>After opening the download link of the Android image, you can see the following two types of Android images, please select the image in the '''TF card and eMMC startup image''' folder to download</li>
<div class="figure">
[[File:pi3b-img110img124.png|395x205px|IMG_256]]
</div>
</ol><ol start="112" style="list-style-type: lower-alpha;"><li><p>After entering the '''TF card and eMMC startup image''' folder, you can see the following two images, the difference between them is:</p><ol style="list-style-type: none;"><li><p>a) The first image is dedicated to HDMI display after burning is as follows:and supports 4K display. If you don't use LCD screen, please download the image without lcd</p></li><li><p>b) If you want to use lcd screen, please choose image with lcd</p></olli>
[[File:pi3b-img111img125.png|398x227px]]</ol></li></ol></li></ol><ol start="5" style="list-style-type: decimal;"><li><p>Then use the decompression software to decompress the compressed package of the downloaded Android image. Among the decompressed files, the file ending with ".img" is the Android image file, and the size is more than 1GB</p></li><li><p>Then use the decompression software to decompress '''DriverAssitant_v5.12.zip''', and then find the '''DriverInstall.exe''' executable file in the decompressed folder and open it</p></li>
[[File:pi3b-img31.png]]</ol><ol start="127" style="list-style-type: lower-alphadecimal;"><li><p>Then you need After opening '''DriverInstall.exe''', the steps to expand the capacity of the rootfs partition in install the NVMe SSD. The steps Rockchip driver are as follows:</p>
<ol style="list-style-type: lower-alpha;">
<li><p>Open '''GParted''' first, if Click the system does not have Gparted pre-installed, please use the apt command to install it</p><p>orangepi@orangepi:~$ "'''sudo apt-get install -y gpartedDriver Installation'''</p></li></ol>" button</li></ol>
<div class="figure"> [[File:pi3b-img112img32.png|576x215px|IMG_256]] </divol>
<ol start="2" style="list-style-type: lower-alpha;">
<li>Then enter the password orangepi After waiting for a period of the Linux systemtime, a pop-up window will prompt "'''The driver is installed successfully'''", and then click the "'''AuthenticateOK'''" button.</li></ol>
[[File:pi3b-img113img33.png|356x173px]]</ol></li></ol><ol start="8" style="list-style-type: decimal;"><li>Then decompress '''RKDevTool_Release_v3.15.zip''', this software does not need to be installed, just find '''RKDevTool''' in the decompressed folder and open it</li>
[[File:pi3b-img34.png]]</ol><ol start="39" style="list-style-type: lower-alphadecimal;"><li>Then click After opening the '''FixRKDevTool'''burning tool, because the computer has not connected to the development board through the USB2.0 male-to-male data cable at this time, the lower left corner will prompt "'''No device found'''"</li></ol>
[[File:pi3b-img114img35.png|355x261px]]</ol><ol start="410" style="list-style-type: lower-alphadecimal;"><li><p>Then select NVMe SSDstart burning the Android image to the TF card</p><ol style="list-style-type: lower-alpha;"><li>First, connect the development board to the Windows computer through the USB2.0 male-to-male data cable. The position of the USB2.0 programming interface of the development board is shown in the figure below</olli>
<div class="figure">
[[File:pi3b-img115img36.png|452x187px|IMG_256]]
</div></ol><ol start="52" style="list-style-type: lower-alpha;"><li>The display interface after selecting NVMe SSD <p>Then make sure that the development board is as followsnot 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:</lip></olli>
[[File:pi3b-img37.png]]<div class/ol><ol start="4" style="figurelist-style-type: lower-alpha;"><li>Then connect the power supply of the Type-C interface to the development board, and power on</li>
[[File:pi3b-img116img38.png|451x187px|IMG_256]]</ol><ol start="5" style="list-style-type: lower-alpha;"><li>If the previous steps are successful, the development board will enter the '''MASKROM''' mode at this time, and the interface of the burning tool will prompt "'''found a MASKROM device'''"</li>
[[File:pi3b-img39.png]]</divol>
<ol start="6" style="list-style-type: lower-alpha;">
<li><p>Then insert the TF card into the development board</p></li><li><p>Then please select the '''advanced features'''</devp><p>[[File:pi3b-img126.png]]</p></nvme0n1p2li><li><p>Then click the position shown in the figure below</p><p>[[File:pi3b-img127.png]]</p></li><li><p>Then select ''' partition, click rk3566_MiniLoaderAll.bin''' in the right button again, and then select '''Resize/MoveMiniLoader'''folder downloaded earlier, and click to open</lip></olli>
<div class="figure">
[[File:pi3b-img117img68.png|448x345px|IMG_256]]
</div></ol><ol start="710" style="list-style-type: lower-alpha;"><li><p>Then drag the capacity to the maximum at the position click '''download'''</p><p>[[File:pi3b-img128.png]]</p></li><li><p>The display after downloading '''rk3566_MiniLoaderAll.bin''' is shown in the figure below</p><p>[[File:pi3b-img129.png]]</p></li><li><p>Then select the storage device as '''SD''', and then click '''Switch Storage'''</olp><div class="figure">
[[File:pi3b-img118img130.png|339x210px]]
<ol start="8" style="list-style-type: lower-alpha;"/div></li><li>Then click '''Resize/Move'''<p>The display of successful switching is shown in the figure below</lip></olli>
[[File:pi3b-img119.png|339x212px]]<div class="figure">
<ol style="list-style-type[[File: lowerpi3b-roman;"><li>Then click the green '''√''' in the position below</li></ol>img131.png]]
[[File</div></ol><ol start="14" style="list-style-type:pi3blower-img120.png|425x166px]]alpha;"><li>Then click the "'''Upgrade Firmware'''" column of the burning tool</li>
[[File:pi3b-img132.png]]</ol><ol start="1015" style="list-style-type: lower-alpha;"><li>Then click the "'''ApplyFirmware'''" button to select the path of the Android image that needs to be burned</li></ol>
[[File:pi3b-img121img133.png|378x276px]]</ol><ol start="16" style="list-style-type: lower-alpha;"><li>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.</li>
<ol startdiv class="11figure" style="list-style-type: lower-alpha;"><li>Then click '''Close''' to close</li></ol>
[[File:pi3b-img122img134.png|383x234px]]
</div></ol></li></ol start><span id="13" style="listhow-to-use-sddisktool-to-burn-android-image-styleto-type: lowertf-alpha;card"><li/span>At this point, you can === How to use the '''sudo poweroff''' command SDDiskTool to burn Android image to shut down. Then please pull out the TF card, and then short press the power button to turn on, then the Linux system in SPIFlash+NVMe SSD will be started.</li></ol>===
<!-- --><ol start="10" style="list-style-type: decimal;"><li><p>Step First prepare a TF card with 8GB or larger capacity. The transmission speed of the TF card must be class10 or above. It is recommended to use a TF card of SanDisk and other brands</p></li><li><p>Then use the card reader to insert the TF card into the computer</p></li><li><p>Then download the SDDiskTool programming tool from the [http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-3B.html '''Orange Pi data download page'9)''], ' is to clone ''<span style="color:#FF0000">please make sure that the system in version of the TF card to SDDiskTool tool is the NMVe SSDlatest v1.72</span>. We can also directly burn '''</p></li><li><p>Then download the Linux Android11 image file to from the NVMe SSD[http://www.orangepi. Here are the steps:org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-3B.html '''Orange Pi data download page''']</p>
<ol style="list-style-type: lower-alpha;">
<li><p>Upload After opening the download link of the Linux Android image file to , you can see the Linux system following two types of Android images, please select the image in the development board</p></li><li><p>Then use balenaEtcher '''TF card and eMMC startup image''' folder to burn</p></li></ol>download</li></ol>
<div class="figure">
[[File:pi3b-img123img124.png|529x333px|图片1]]
</div></ol><ol start="32" style="list-style-type: lower-alpha;"><li>After entering the '''After using this method to burn the TF card and eMMC boot image''' folder, there is no need to manually expand you can see the capacityfollowing two images, and it will automatically expand the capacity at the first startup.'''difference between them is:</li></ol>
<span idol style="howlist-to-burn-androidstyle-type: none;"><li><p>a) The image without lcd is specially used for HDMI display and supports 4K display. If you do not use the LCD screen, please download the image-without lcd</p></li><li><p>b) If you want to-tf-card"use LCD screen, please choose image with lcd</p></spanli>
[[File:pi3b-img125.png]]</ol></li></ol></li></ol><ol start="5" style= How "list-style-type: decimal;"><li><p>Then use decompression software to burn 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</p></li><li><p>Then use decompression software to TF card ==decompress '''SDDiskTool_v1.72.zip''', this software does not need to be installed, just find '''SD_Firmware_Tool.exe''' in the decompressed folder and open it</p></li>
[[File:pi3b-img135.png]]</ol><span idol start="7" style="method-oflist-burning-android-image-to-tfstyle-type: decimal;"><li>After opening '''SDDiskTool''', if the TF card-through-usb2is recognized normally, the inserted disk device will be displayed in the "'''Select Removable Disk Device'''" column.0-burning-port'''<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>=== Method of burning Android image ''', if there is no display, you can try to unplug the TF card through USB2.0 burning port ===</li>
# First prepare a TF card with 8GB or larger capacity[[File:pi3b-img136. The transmission speed of png]]</ol><ol start="8" style="list-style-type: decimal;"><li>After confirming the drive letter, you can format the TF card must be class10 first, click the '''restore disk button''' in '''SDDiskTool,''' or use the '''SD Card Formatter''' mentioned above. It is recommended to use a format the TF card of SanDisk and other brands# You also need to prepare a good quality USB2.0 male-to-male data cable</li>
[[File:pi3b-img137.png]]<div class/ol><ol start="9" style="list-style-type: decimal;"><li><p>Then start to write the Android image to the TF card</p><ol style="figurelist-style-type: lower-alpha;"><li><p>First check "SD Boot" in "Select Function Mode"</p></li><li><p>Then select the path of the Android image in the "Select to upgrade firmware" column</p></li><li><p>Finally click the "Start Create" button to start burning the Android image to the TF card</p></li>
[[File:pi3b-img16img138.png|141x138px|D6BB9058-CDC3-42d7-A7FC-FBF630D886B7]] </div><ol start="3" style="list-style-type: decimal;"><li><p>Then download Rockchip driver '''DriverAssitant_v5.12.zip''' and burning tool '''RKDevTool_Release_v3.15.zip''' from [http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-3B.html '''Orange Pi's data download page''']</p></li><li><p>Then download the Android image from [http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-3B.html '''Orange Pi's download page'''].</p><ol style="list-style-type: lower-alpha;"><li>After opening the download link of the Android image, you can see the following two types of Android images, please select the image in the '''TF card and eMMC startup image''' folder to download</li></ol>
</li></ol>
<ol start="10" style="list-style-type: decimal;">
<li>After burning, you can exit the SDDiskTool software, and then you can pull out the TF card from the computer and insert it into the development board to start</li>
[[File:pi3b-img139.png]]<div class/ol><span id="figurehow-to-burn-android-image-to-emmc"></span>
[[File:pi3b-img124.png|340x108px|e6986fc9c8fc078e8cb6a9c39b76fb8]]== How to burn Android image to eMMC ==
</div><ol start{| class="2wikitable" style="listbackground-style-typecolor:#ffffdc;width: lower-alpha800px;">|-| <li><pbig>After entering the '''TF card and Note, after burning the image into eMMC startup image''' folder, you can see if the following two imagestest finds that it cannot be started, please clear the difference between them is:</p><ol style="list-style-type: lower-alpha;"><li><p>The first image is dedicated to HDMI display SPIFlash and supports 4K displaytry again. If you don’t use LCD screenFor the method of clearing SPIFlash, please download refer to [[Orange Pi 3B#Using RKDevTool to clear SPIFlash|the image without lcd</p></li><li><p>If you want method of using RKDevTool to use lcd screen, please choose image with lcdclear SPIFlash]].'''</p></li></olbig></li></ol>|}
[[File:pi3b<span id="method-img125of-burning-android-image-into-emmc-through-usb2.0-burning-port"></span>=== Method of burning Android image into eMMC through USB2.png|264x58px]]0 burning port ===
<ol start{| class="5wikitable" style="listbackground-style-typecolor:#ffffdc;width: decimal800px;"><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 ".img" is the Android image file, and the size is more than 1GB</p></li>|-| <li><pbig>Then use the decompression software to decompress '''DriverAssitant_v5.12.zip''', and then find Note that all the '''DriverInstallfollowing operations are performed on a Windows computer.exe''' executable file in the decompressed folder and open it</p></li></olbig>|}
[[File<ol style="list-style-type:pi3b-img31decimal;"><li><p>The development board reserves an eMMC expansion interface. Before programming the system to eMMC, you first need to purchase an eMMC module that matches the eMMC interface of the development board. Then install the eMMC module to the development board.png|575x169px]]</p><p>The eMMC module and the method of plugging into the development board are as follows:</p></li>
<ol start="7" style="list[[File:pi3b-style-type: decimal;"><li><p>After opening '''DriverInstallimg61.exe''', the steps to install the Rockchip driver are as follows</p><ol style="list-style-typepng|400px]] [[File: lowerpi3b-alpha;"><li>Click the "'''Driver Installation'''" button</li></ol></li></ol>img62.png|400px]]
[[File:pi3b-img32img63.png|300x157px800px]]</ol><ol start="2" style="list-style-type: decimal;"><li>You also need to prepare a good quality USB2.0 male-to-male data cable</li>
<ol startdiv class="2figure" style="list-style-type: lower-alpha;"><li>After waiting for a period of time, a pop-up window will prompt "'''The driver is installed successfully'''", and then click the "'''OK'''" button.</li></ol>
[[File:pi3b-img33img16.png|315x164px]]
</div></ol><ol start="83" style="list-style-type: decimal;"><li><p>Then decompress download Rockchip driver '''RKDevTool_Release_v3DriverAssitant_v5.1512.zip''', this software does not need to be installed, just find and burning tool '''RKDevToolRKDevTool_Release_v3.15.zip''' in the decompressed folder and open it<from [http://www.orangepi.org/html/hardWare/li><computerAndMicrocontrollers/ol> [[File:pi3bservice-and-img34.png|454x134px]] <ol start="9" style="listsupport/Orange-stylePi-type: decimal;"><li>After opening the 3B.html '''RKDevToolOrange Pi''' burning tool, because the computer has not connected to the development board through the USB2.0 male-to-male s data cable at this time, the lower left corner will prompt "download page'''No device found'''"]</lip></ol> [[File:pi3b-img35.png|442x208px]] <ol start="10" style="list-style-type: decimal;"li><li><p>Then start burning download the Android image to the TF cardfrom '''[http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-3B.html Orange Pi's download page].'''</p>
<ol style="list-style-type: lower-alpha;">
<li>First, connect After opening the development board to download link of the Windows computer through Android image, you can see the USB2.0 male-to-male data cable. The position of the USB2.0 programming interface following two types of Android images, please select the development board is shown image in the figure below</li></ol>'''TF card and eMMC startup image folder''' to download</li></ol>
<div class="figure">
[[File:pi3b-img36img124.png|275x116px|C:\Users\orangepi\Desktop\用户手册插图\pi 3b\1691131157154(1).jpg1691131157154(1)]]
</div></ol>
<ol start="2" style="list-style-type: lower-alpha;">
<li><p>Then make sure that the development board is not inserted into After entering the '''TF card and not connected to eMMC startup image folder''', you can see the following two images, the power supplydifference between them is</p></liol style="list-style-type: none;"><li><p>Then press a) The first image is dedicated to HDMI display and hold the MaskROM button on the development boardsupports 4K display. If you don't use LCD screen, please download the position of the MaskROM button on the development board is shown in the figure below:image without lcd</p></li><li><p>b) If you want to use lcd screen, please choose image with lcd</olp></li>
[[File:pi3b-img37img125.png|289x100px]]</ol></li></ol></li></ol><ol start="5" style="list-style-type: decimal;"><li><p>Then use decompression software to decompress the compressed package of the downloaded Android image. Among the decompressed files, the file ending with ".img" is the Android image file, and the size is more than 1GB</p></li><li><p>Then use decompression software to decompress '''DriverAssitant_v5.12.zip''', and then find the '''DriverInstall.exe''' executable file in the decompressed folder and open it</p></li>
[[File:pi3b-img31.png]]</ol><ol start="47" style="list-style-type: lower-alphadecimal;"><li>Then connect the power supply of <p>After opening '''DriverInstall.exe''', the Type-C interface steps to install the development board, and power onRockchip driver are as follows</p><ol style="list-style-type: lower-alpha;"><li>Click the "'''Driver Installation'''" button</olli>
[[File:pi3b-img38img32.png|305x94px]]</ol><ol start="2" style="list-style-type: lower-alpha;"><li>After waiting for a period of time, a pop-up window will prompt "'''driver installed successfully'''", and then click the "'''OK'''" button.</li>
[[File:pi3b-img33.png]]</ol></li></ol><ol start="58" style="list-style-type: lower-alphadecimal;"><li>If the previous steps are successful, the development board will enter the Then decompress '''MASKROMRKDevTool_Release_v3.15.zip''' mode at , this timesoftware does not need to be installed, and the interface of the burning tool will prompt "just find '''found a MASKROM deviceRKDevTool'''"in the decompressed folder and open it</li></ol>
[[File:pi3b-img39img34.png|457x215px]]</ol><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 USB2.0 male-to-male data cable at this time, the lower left corner will prompt "'''No device found'''"</li>
[[File:pi3b-img35.png]]</ol><ol start="610" style="list-style-type: lower-alphadecimal;"><li><p>Then insert start burning the TF card Android image into the development boardeMMC</p></li><li><p>Then please select '''advanced features'''</p><p>[[Fileol style="list-style-type:pi3blower-img126.png|458x138px]]</p></lialpha;"><li><p>Then click First, connect the development board to the Windows computer through the USB2.0 male-to-male data cable. The position of the USB2.0 programming interface of the development board is shown in the figure below</p><p>[[File:pi3b-img127.png|459x216px]]</p></li><li><p>Then select '''rk3566_MiniLoaderAll.bin''' in the '''MiniLoader''' folder downloaded earlier, and click to open</p></li></ol>
<div class="figure">
[[File:pi3b-img68img36.png|459x216px|SIS5H0S2@F5M2D(6ANZEUPG]] </div></ol><ol start="2" style="list-style-type: lower-alpha;"><li><p>Then make sure that the development board is not inserted into the TF card and not connected to the power supply</p></li><li><p>Then press and hold the MaskROM button on the development board, the position of the MaskROM button on the development board is shown in the figure below:</p></li>
[[File:pi3b-img37.png]]</divol><ol start="104" style="list-style-type: lower-alpha;"><li><p>Then click '''download'''</p><p>[[File:pi3bconnect the power supply of the Type-img128.png|472x222px]]</p></li><li><p>The display after downloading '''rk3566_MiniLoaderAll.bin''' is shown in C interface to the figure below</p><p>[[File:pi3b-img129.png|474x227px]]development board</p></li><li><p>Then select the storage device as '''SD''', and then click '''Switch Storage'''</p><div class="figure">
[[File:pi3b-img130img38.png|477x222px|D~T2CO%X~K2@ELR98)BVP~2]]</ol><ol start="5" style="list-style-type: lower-alpha;"><li><p>If the previous steps are successful, the development board will enter the '''MASKROM''' mode at this time, and the interface of the burning tool will prompt "'''found a MASKROM device'''"</p>[[File:pi3b-img39.png]]</li><li><p>Then please select '''Advanced Features'''</p><p>[[File:pi3b-img126.png]]</p></li><li><p>Then click the position shown in the figure below</p><p>[[File:pi3b-img127.png]]</p></li></ol>
</div></liol start="8" style="list-style-type: lower-alpha;"><li><p>The display of successful switching is shown Select '''rk3566_MiniLoaderAll.bin''' in the figure below</p>MiniLoader folder downloaded earlier, and click to open.</li></ol>
<div class="figure">
[[File:pi3b-img131img68.png|474x223px|QFVLTK~19N32OK2UGH{D{AK]]
</div></ol><ol start="9" style="list-style-type: lower-alpha;"><li><p>Then click '''Download'''</p><p>[[File:pi3b-img128.png]]</p></li><li><p>The display after downloading '''MiniLoaderAll.bin''' is shown in the figure below</p><p>[[File:pi3b-img140.png]]</p></li><li><p>Then select the storage device as '''EMMC''', and then click Switch '''Storage'''</p><p>[[File:pi3b-img141.png]]</p></li><li><p>The display of successful switching is shown in the figure below</p></li> [[File:pi3b-img142.png]]</ol><ol start="13" style="list-style-type: lower-alpha;"><li>Then click the "'''Upgrade Firmware'''" column of the burning tool</li> [[File:pi3b-img132.png]]</ol>
<ol start="14" style="list-style-type: lower-alpha;">
<li>Then click the "'''Upgrade Firmware'''" column button to select the path of the burning toolAndroid image that needs to be burned</li></ol> [[File:pi3b-img132.png|477x224px]]
[[File:pi3b-img133.png]]
</ol>
<ol start="15" style="list-style-type: lower-alpha;">
<li>Then click the "'''Firmware'''" button to select the path of the Android image that needs to be burned</li></ol> [[File:pi3b-img133.png|444x209px]] <ol start="16" style="list-style-type: lower-alpha;"><li>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.</li></ol>
<div class="figure">
[[File:pi3b-img134.png|455x214px|GO~ZSPN`B]JCQM`@_9UU8[R]]
</div></ol></li></ol><span id="how-to-useburn-sddisktoolandroid11-to-burnimage-androidinto-imageemmc-tovia-tf-card"></span> === How to use SDDiskTool to burn Android Android11 image to into eMMC via TF card ===
<ol {| class="wikitable" style="listbackground-style-typecolor:#ffffdc;width: decimal800px;"><li><p>First prepare a TF card with 8GB or larger capacity. The transmission speed of the TF card must be class10 or above. It is recommended to use a TF card of SanDisk and other brands</p></li>|-<li><p>Then use the card reader to insert the TF card into the computer</p></li>| <libig><p>Then download the SDDiskTool programming tool from the [http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-3B.html '''Orange Pi data download page'''], '''please make sure Note that all the version of the SDDiskTool tool is the latest v1following operations are performed on a Windows computer.72.'''</p></li><li><p>Then download '''the Android11 image from the Orange Pi download''' '''page'''</pbig><ol style="list-style-type: lower-alpha;"><li>After opening the download link of the Android image, you can see the following two types of Android images, please select the image in the '''TF card and eMMC startup image''' folder to download</li></ol></li></ol>|}
<blockquote><div class="figure"># The development board reserves an eMMC expansion interface. Before programming the system to eMMC, you first need to purchase an eMMC module that matches the eMMC interface of the development board. Then install the eMMC module to the development board. The eMMC module and the method of plugging into the development board are as follows:
::[[File:pi3b-img124img61.png|340x108px400px]] [[File:pi3b-img62.png|e6986fc9c8fc078e8cb6a9c39b76fb8400px]]
</div></blockquote><ol start="2" style="list-style-type: lower:[[File:pi3b-alpha;"><li>After entering the '''TF card and eMMC boot image''' folder, you can see the following two images, the difference between them is:</li></ol>img63.png|800px]]
<!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>Then use the card reader to insert the TF card into the computer</p></li><li><p>Then download the SDDiskTool programming tool from the [http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-3B.html '''Orange Pi data download page'''], '''<span style="color:#FF0000">please make sure that the version of the SDDiskTool tool is the latest v1.72</span>'''</p></li><li><p>Then download the Android image from [http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-3B.html '''Orange Pi's download page''']</p>
<ol style="list-style-type: lower-alpha;">
<li><p>The After opening the download link of the Android image without lcd is specially used for HDMI display and supports 4K display. If , you do not use can see the LCD screenfollowing two types of Android images, please download select the image in '''the TF card and eMMC startup image without lcd</p></li><li><p>If you want folder''' to use LCD screen, please choose image with lcd</p>download</li></ol>
[[File:pi3b-img125.png|281x62px]]<div class="figure">
<ol start="5" style="list-style[[File:pi3b-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 ".img" 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_Toolimg124.exe''' in the decompressed folder and open it</p></li></ol>png]]
[[File</div></ol><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 tow images, the difference between them is:pi3b</p><ol style="list-img135style-type: none;"><li><p>a) The first image is dedicated to HDMI display and supports 4K display.png|415x99px]]If you don't use LCD screen, please download the image without lcd</p></li><li><p>b) If you want to use lcd screen, please choose image with lcd</p></li>
[[File:pi3b-img125.png]]</ol></li></ol></li></ol><ol start="76" style="list-style-type: decimal;"><li>After opening '''SDDiskTool''', if <p>Then use the decompression software to decompress the compressed package of the downloaded Android image. Among the TF card is recognized normallydecompressed files, the inserted disk device will be displayed in the file ending with ".img"is the Android image file, and the size is more than 1GB</p></li><li><p>Then use decompression software to decompress '''Select Removable Disk DeviceSDDiskTool_v1.72.zip'''" column. P, this software does not need to be installed, just find '''lease make sure that the displayed disk device is consistent with the drive letter of the TF card you want to burnSD_Firmware_Tool.exe''', if there is no display, you can try to unplug in the TF carddecompressed folder and open it</lip></olli> [[File:pi3b-img136.png|267x228px]]
[[File:pi3b-img135.png]]
</ol>
<ol start="8" style="list-style-type: decimal;">
<li>After confirming the drive letteropening '''SDDiskTool''', you can format if the TF card firstis recognized normally, click the '''restore inserted disk buttondevice will be displayed in the "''' in Select Removable Disk Device'''SDDiskTool," column. ''' or use <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>'''SD Card Formatter''' mentioned above , if there is no display, you can try to format unplug the TF card.</li></ol> [[File:pi3b-img137.png|264x226px]]
[[File:pi3b-img136.png]]
</ol>
<ol start="9" style="list-style-type: decimal;">
<li><p>Then start to write After confirming the Android image to drive letter, you can format the TF card</p><ol style="list-style-type: lower-alpha;"><li><p>First check "SD Boot" in "Select Function Mode"</p></li><li><p>Then select the path of the Android image in the "Select to upgrade firmware" column</p></li><li><p>Finally first, click the "Start Create" '''restore disk button to start burning ''' in SDDiskTool, or use the Android image '''SD Card Formatter''' mentioned above to format the TF card</p></li></ol></li></ol> [[File:pi3b-img138.png|286x242px]]
[[File:pi3b-img137.png]]
</ol>
<ol start="10" style="list-style-type: decimal;">
<li>After burning, you can exit <p>Then start to write the Android image into the TF card</p><ol style="list-style-type: lower-alpha;"><li><p>First confirm that the displayed drive letter is the SDDiskTool software, and then you can pull out drive letter corresponding to the TF card from under "'''Select Removable Disk Device'''"</p></li><li><p>Then select "'''Firmware Upgrade'''" in "'''Select Function Mode'''"</p></li><li><p>Then select the path of the Android firmware in the computer and insert it into "'''Select Upgrade Firmware'''" column</p></li><li><p>Finally click the development board "'''Start Create'''" button to startburning</lip></olli>
[[File:pi3b-img139img143.png|288x244px]]</ol></li></ol><ol start="11" style="list-style-type: decimal;"><li>After the burning is completed, the display is as shown in the figure below, and then you can exit SDDiskTool</li>
[[File:pi3b-img144.png]]<span id/ol><ol start="12" style="howlist-to-burn-androidstyle-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-emmc"the eMMC of the development board.</p></spanli>== How <li><p>If the development board is connected to burn an HDMI display, you can also see the progress bar of burning the Android image to eMMC from the HDMI display</p></li> [[File:pi3b-img145.png]]</ol><ol start="14" style="list-style-type: decimal;"><li>When the HDMI monitor displays the following information, it means that the burning of the Android image into the eMMC has been completed. At this time, the TF card can be pulled out, and then the Android system in the eMMC will start.</li>
'''Note, after burning the image into eMMC, if the test finds that it cannot be started, please clear the SPIFlash and try again. For the method of clearing SPIFlash, please refer to''' [[\l|the method of using RKDevTool to clear SPIFlashFile:pi3b-img146.png]]'''.'''</ol><span id="how-to-burn-android-image-to-spiflashnvme-ssd"></span>
<span id="method-of-burning-android-image-into-emmc-through-usb2.0-burning-port"></span>=== Method of burning How to burn Android image into eMMC through USB2.0 burning port =to SPIFlash+NVMe SSD ==
{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''Note that all the following operations are performed on a Windows computer.'''</big>|}
<ol style="list-style-type: decimal;">
<li><p>The development board reserves an eMMC expansion interface. Before programming the system to eMMCFirst, you first need to purchase prepare an eMMC module that matches the eMMC interface of the development board. Then install the eMMC module to the development board.NVMe SSD solid state drive</p><pol style="list-style-type: lower-alpha;"><li>The eMMC module and the method of plugging into the development board are M.2 2230 SSD is as follows:</p></li></ol>
[[File:pi3b-img61img73.png|115x84px]] [[File</ol><ol start="2" style="list-style-type:pi3blower-img62alpha;"><li>The M.png|120x87px]]2 2242 SSD is as follows</li>
[[File:pi3b-img63img74.png|286x133px]]</ol></li></ol><ol start="2" style="list-style-type: decimal;"><li>Then insert the NVMe SSD into the M.2 PCIe interface of the development board and fix it</li> [[File:pi3b-img75.png]]</ol><ol start="3" style="list-style-type: decimal;"><li>The position of the SPI Flash on the development board is shown in the figure below, no other settings are required before starting the programming</li>
[[File:pi3b-img76.png]]</ol><ol start="24" style="list-style-type: decimal;"><li>You also need to prepare a good quality USB2.0 male-to-male data cable</li></ol>
<div class="figure">
[[File:pi3b-img16.png|141x138px|D6BB9058-CDC3-42d7-A7FC-FBF630D886B7]]
</div></ol><ol start="35" style="list-style-type: decimal;"><li><p>Then download Rockchip driver '''DriverAssitant_v5.12.zip''' and burning tool '''RKDevTool_Release_v3.15.zip''' from [http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-3B.html '''Orange Pi's data download page''']</p></li><li><p>Then download the Android image from '''[http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-3B.html Orange Pi's download page].'''of Android11</p>
<ol style="list-style-type: lower-alpha;">
<li>After opening the download link of the Android image, you can see the following two types of Android images, please select the image in the S'''TF card and eMMC startup PIFlash-NVME SSD boot image folder''' to download</li></ol></li></ol>
<div class="figure">
[[File:pi3b-img124.png|340x108px|e6986fc9c8fc078e8cb6a9c39b76fb8]]
</div>
</ol>
<ol start="2" style="list-style-type: lower-alpha;">
<li><p>After entering the '''TF card and eMMC startup SPIFlash-NVME SSD boot image folder''', you can see the following two images, the difference between them is. Their differences are:</p><ol style="list-style-type: lower-alphanone;"><li><p>a) The first image without lcd is dedicated to specially used for HDMI display and supports 4K display. If you don’t do not use the LCD screen, please download the image without lcd</p></li><li><p>b) If you want to use lcd LCD screen, please choose image with lcd</p></li></ol></li></ol>
[[File:pi3b-img125img147.png|264x58px]]</ol></li></ol></li></ol><ol start="7" style="list-style-type: decimal;"><li>Then use the decompression software to decompress '''DriverAssitant_v5.12.zip''', and then find the '''DriverInstall.exe''' executable file in the decompressed folder and open it</li>
<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 ".img" is the Android image file, and the size is more than 1GB</p></li><li><p>Then use decompression software to decompress '''DriverAssitant_v5.12.zip''', and then find the '''DriverInstall.exe''' executable file in the decompressed folder and open it</p></li></ol> [[File:pi3b-img31.png|575x169px]]</ol><ol start="78" style="list-style-type: decimal;">
<li><p>After opening '''DriverInstall.exe''', the steps to install the Rockchip driver are as follows</p>
<ol style="list-style-type: lower-alpha;">
<li>Click the "'''Driver Installation'''" button</li></ol></li></ol> [[File:pi3b-img32.png|300x157px]]
[[File:pi3b-img32.png]]
</ol>
<ol start="2" style="list-style-type: lower-alpha;">
<li>After waiting for a period of time, a pop-up window will prompt "'''driver installed successfully'''", and then click the "'''OK'''" button.</li></ol> [[File:pi3b-img33.png|315x164px]] <ol start="8" style="list-style-type: decimal;"><li>Then decompress '''RKDevTool_Release_v3.15.zip''', this software does not need to be installed, just find '''RKDevTool''' in the decompressed folder and open it</li></ol> [[File:pi3b-img34.png|454x134px]]
[[File:pi3b-img33.png]]
</ol>
</li></ol>
<ol start="9" style="list-style-type: decimal;">
<li>After opening the Then decompress '''RKDevToolRKDevTool_Release_v3.15.zip''' burning tool, because the computer is this software does not connected to the development board through the USB2.0 male-need to-male data cable at this timebe installed, the lower left corner will prompt "just find '''No device foundRKDevTool'''"in the decompressed folder and open it</li></ol>
[[File:pi3b-img35img34.png|442x208px]]</ol><ol start="10" style="list-style-type: decimal;"><li>After opening the '''RKDevTool''' burning tool, because the computer is not connected to the development board through the USB2.0 male-to-male data cable at this time, the lower left corner will prompt "'''No device found'''"</li>
[[File:pi3b-img35.png]]</ol><ol start="1011" style="list-style-type: decimal;"><li><p>Then start burning the Android image into eMMCto SPIFlash+NVMe SSD</p>
<ol style="list-style-type: lower-alpha;">
<li>First, connect the development board to the Windows computer through the USB2.0 male-to-male data cable. The position of the USB2.0 programming interface port of the development board is shown in the figure below</li></ol></li></ol>
<div class="figure">
[[File:pi3b-img36.png|275x116px|C:\Users\orangepi\Desktop\用户手册插图\pi 3b\1691131157154(1).jpg1691131157154(1)]]
</div></ol>
<ol start="2" style="list-style-type: lower-alpha;">
<li><p>Then make Make sure that the development board is not inserted into the TF card and not connected to the power supply</p></li><li><p>Then press and hold the MaskROM button on the development board, the position of the MaskROM button on the development board is shown in the figure below:</p></li></ol> [[File:pi3b-img37.png|289x100px]]
[[File:pi3b-img37.png]]
</ol>
<ol start="4" style="list-style-type: lower-alpha;">
<li>Then connect the power supply of the Type-C interface to the development board, and power on, and then release the MaskROM button</li></ol> [[File:pi3b-img38.png|305x94px]]
[[File:pi3b-img38.png]]
</ol>
<ol start="5" style="list-style-type: lower-alpha;">
<li><p>If the previous steps are successful, the development board will enter the '''MASKROM''' mode at this time, and the interface of the burning tool will prompt "'''found a MASKROM device'''"[[File:pi3b-img39.png|457x215px]]</p></li><li><p>Then please select '''Advanced Features'''</p><p>[[File:pi3b-img126.png|458x138px]]</p></li><li><p>Then click the position shown in the figure below</p><p>[[File:pi3b-img127.png|459x216px]]</p></li></ol>
[[File:pi3b-img39.png]]<!-- --/ol><ol start="6" style="list-style-type: lower-alpha;"><li>Select Then click the "'''rk3566_MiniLoaderAll.binUpgrade Firmware''' in " column of the MiniLoader folder downloaded earlier, and click to open.burning tool</li></ol>
[[File:pi3b-img132.png]]<div class/ol><ol start="7" style="figurelist-style-type: lower-alpha;"><li>Then click the "'''Firmware'''" button to select the Android image to be burned</li>
[[File:pi3b-img68img133.png|459x216px|SIS5H0S2@F5M2D(6ANZEUPG]]</ol><ol start="8" style="list-style-type: lower-alpha;"><li>Finally, click the "Upgrade" button to start burning. The burning process is shown in the figure below. You can see that the firmware will be burned to SPIFlash first, and then burned to PCIE. After burning is completed, the Android system will start automatically.</li>
</div><ol start="2" style="list-style-type: lower-alpha;"><li><p>Then click '''Download'''</p><p>[[File:pi3b-img128img148.png|472x222px]]</p></li><li><p>The display after downloading '''MiniLoaderAll.bin''' is shown in the figure below</pol><p>[[File:pi3b-img140.png|474x223px]]</p></li><li><p>Then select the storage device as '''EMMC''', and then click Switch '''Storage'''</pol><p>[[File:pi3bspan id="using-rkdevtool-to-clear-img141.png|468x225px]]</pspiflash"></li><li><p>The display of successful switching is shown in the figure below</p></li></olspan>
[[File:pi3b-img142.png|472x227px]]== Using RKDevTool to clear SPIFlash ==
<ol start="8" style="list-style-type: lower-alpha;"><li>Then click # The position of SPI Flash on the "'''Upgrade Firmware'''" column of development board is shown in the burning tool</li></ol>figure below
::[[File:pi3b-img132img76.png|442x208px]]
<ol style="list-style-type: lower-roman;"><li>Then click the "'''Firmware'''" button to select the path of the Android image that needs to be burned</li></ol> [[File:pi3b-img133.png|444x209px]] <ol start="102" style="list-style-type: lower-alphadecimal;"><li>FinallyFirst, click the "'''Upgrade'''" button you need to start burning, and the log during the burning process is shown in the figure below. After burning is completed, the Android system will start automaticallyprepare a good quality USB2.0 male-to-male data cable</li></ol>
<div class="figure">
[[File:pi3b-img134img16.png|455x214px|GO~ZSPN`B]JCQM`@_9UU8[R]]
</div></ol><span idol start="3" style="howlist-tostyle-burntype: decimal;"><li><p>Then download the Rockchip driver '''DriverAssitant_v5.12.zip''' and MiniLoader and the burning tool '''RKDevTool_Release_v3.15.zip''' from the [http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-android11and-imagesupport/Orange-intoPi-emmc3B.html '''Orange Pi data download page''']</p><ol style="list-viastyle-tftype: lower-cardalpha;"><li>On the download page of Orange Pi, first select the official tool, and then enter the following folder</spanli>=== How to burn Android11 image into eMMC via TF card ===
'''Note that all the following operations are performed on a Windows computer.'''<div class="figure">
# The development board reserves an eMMC expansion interface. Before programming the system to eMMC, you first need to purchase an eMMC module that matches the eMMC interface of the development board. Then install the eMMC module to the development board[[File:pi3b-img149. The eMMC module and the method of plugging into the development board are as follows:png]]
[[File:pi3b-img61.png|115x84px]] [[File:pi3b-img62.png|120x87px]] [[File:pi3b-img63.png|286x133px]] <ol start="2" style="list-style-type: decimal;"><li><p>You also need to prepare a TF card with 8GB or larger capacity. The transmission speed of the TF card must be class10 or above. It is recommended to use a TF card of SanDisk and other brands</pdiv></li><li><p>Then use the card reader to insert the TF card into the computer</p></li><li><p>Then download the SDDiskTool programming tool from the [http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-3B.html '''Orange Pi data download page'''], '''please make sure that the version of the SDDiskTool tool is the latest v1.72'''</p></li><li><p>Then download the Android image from [http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-3B.html '''Orange Pi's download page''']</pol><ol start="2" style="list-style-type: lower-alpha;"><li>After opening the Then download link of the Android image, you can see all the following two types of Android images, please select the image in '''the TF card and eMMC startup image folder''' to downloadfiles below</li></ol></li></ol>
<div class="figure">
[[File:pi3b-img124img150.png|340x108px|e6986fc9c8fc078e8cb6a9c39b76fb8]]
</div>
<ol start{| class="2wikitable" style="listbackground-style-typecolor:#ffffdc;width: lower-alpha800px;">|-| <li><pbig>After entering '''Note that the "MiniLoader-things needed to burn the TF card and eMMC boot Linux image " folderis hereinafter referred to as the MiniLoader folder.''', you can see the following tow images, the difference between them is:</pbig><ol style="list-style-type: lower-alpha;">|}<li><p>The first image is dedicated to HDMI display and supports 4K display. If you don’t use LCD screen, please download the image without lcd</p></li><li><p>If you want to use lcd screen, please choose image with lcd</p></li></ol>
</li></ol>
<ol start="4" style="list-style-type: decimal;">
<li>Then use decompression software to decompress '''DriverAssitant_v5.12.zip''', and then find the '''DriverInstall.exe''' executable file in the decompressed folder and open it</li>
[[File:pi3b-img125img31.png|283x62px]]</ol><ol start="5" style="list-style-type: decimal;"><li><p>After opening DriverInstall.exe, the steps to install the Rockchip driver are as follows</p><ol style="list-style-type: lower-alpha;"><li>Click the "'''Driver Installation'''" button</li>
[[File:pi3b-img32.png]]</ol><ol start="62" style="list-style-type: decimallower-alpha;"><li><p>Then use the decompression software to decompress the compressed package After waiting for a period of the downloaded Android image. Among the decompressed filestime, the file ending with a pop-up window will prompt ".img'''driver installed successfully'''" is the Android image file, and then click the size is more than 1GB</p></li><li><p>Then use decompression software to decompress "'''SDDiskTool_v1.72.zipOK''', this software does not need to be installed, just find '''SD_Firmware_Tool" button.exe''' in the decompressed folder and open it</p></li></ol>
[[File:pi3b-img135img33.png|429x103px]]</ol></li></ol><ol start="6" style="list-style-type: decimal;"><li>Then decompress '''RKDevTool_Release_v3.15.zip''', this software does not need to be installed, just find '''RKDevTool''' in the decompressed folder and open it</li> [[File:pi3b-img34.png]]</ol><ol start="7" style="list-style-type: decimal;"><li>After opening the '''RKDevTool''' burning tool, because the computer has not connected to the development board through the USB2.0 male-to-male data cable at this time, the lower left corner will prompt "'''No device found'''"</li>
[[File:pi3b-img35.png]]
</ol>
<ol start="8" style="list-style-type: decimal;">
<li>After opening '''SDDiskTool'''<p>Then you can start to clear the content in SPI FLASH</p><ol style="list-style-type: lower-alpha;"><li>First, if connect the TF card is recognized normally, development board to the inserted disk device will be displayed in Windows computer through the "'''Select Removable Disk Device'''" columnUSB2.0 male-to-male data cable. '''Please make sure that The position of the displayed disk device is consistent with the drive letter USB2.0 programming port of the TF card you want to burn''', if there development board is no display, you can try to unplug shown in the TF card.figure below</li></ol>
[[File:pi3b-img136.png|267x228px]]<div class="figure">
<ol start="9" style="list[[File:pi3b-style-type: decimal;"><li>After confirming the drive letter, you can format the TF card first, click the '''restore disk button''' in SDDiskTool, or use the '''SD Card Formatter''' mentioned above to format the TF card</li></ol>img36.png]]
[[File</div></ol><ol start="2" style="list-style-type:pi3blower-img137.png|247x212px]]alpha;"><li><p>Make sure that the development board is not inserted into the TF card and not connected to the power supply</p></li><li><p>Then press and hold the MaskROM button on the development board, the position of the MaskROM button on the development board is shown in the figure below:</p></li>
<ol start="10" style="list[[File:pi3b-style-type: decimal;">img37.png]]<li><p>Then start to write the Android image into the TF card</pol><ol start="4" style="list-style-type: lower-alpha;"><li><p>First confirm that the displayed drive letter is the drive letter corresponding to the TF card under "'''Select Removable Disk Device'''"</p></li><li><p>Then select "'''Firmware Upgrade'''" in "'''Select Function Mode'''"</p></li><li><p>Then select connect the path power supply of the Android firmware in Type-C interface to the "'''Select Upgrade Firmware'''" column</p></li><li><p>Finally click development board, and power on, and then release the "'''Start Create'''" MaskROM button to start burning</p></li></ol></li></ol>
[[File:pi3b-img143img38.png|290x246px]]</ol><ol start="5" style="list-style-type: lower-alpha;"><li>If the previous steps are successful, the development board will enter the '''MASKROM''' mode at this time, and the interface of the burning tool will prompt "'''found a MASKROM device'''"</li>
[[File:pi3b-img39.png]]</ol><ol start="116" style="list-style-type: decimallower-alpha;"><li>After the burning is completed, <p>Then please select '''Advanced Features'''</p><p>[[File:pi3b-img126.png]]</p></li><li><p>Then click the display is as position shown in the figure below</p><p>[[File:pi3b-img127.png]]</p></li><li><p>Select '''rk3566_MiniLoaderAll.bin''' in the '''MiniLoader''' folder you downloaded earlier, and then you can exit SDDiskToolclick Open</lip></olli>
[[File:pi3b-img144.png|285x243px]]<div class="figure">
<ol start="12" style="list-style[[File:pi3b-type: decimal;"><li><p>Then pull out the TF card from the computer and insert it into the development board. After the development board is powered on, it will automatically start burning the Android image in the TF card to the eMMC of the development boardimg68.</p></li><li><p>If the development board is connected to an HDMI display, you can also see the progress bar of burning the Android image to eMMC from the HDMI display</p></li></ol>png]]
</div></ol><ol style="list-style-type: lower-roman;"><li><p>Then click '''Download'''</p><p>[[File:pi3b-img145img128.png|430x247px]]</p></li></ol>
<ol start="1410" style="list-style-type: decimallower-alpha;"><li>When <p>The display after downloading '''rk3566_MiniLoaderAll.bin''' is shown in the HDMI monitor displays figure below</p><p>[[File:pi3b-img140.png]]</p></li><li><p>Then select the following information, it means that the burning of the Android image into the eMMC has been completedstorage device as '''SPINOR'''</p><p>[[File:pi3b-img151.png]]</p></li><li><p>Then click Switch '''Storage'''</p><p>[[File:pi3b-img152.png]]</p></li><li><p>Then click '''Erase All''' to start erasing SPIFlash</p><p>[[File:pi3b-img153. At this time, the TF card can be pulled out, and then the Android system png]]</p></li><li><p>The display log after erasing SPIFlash is shown in the eMMC will startfigure below</p><p>[[File:pi3b-img154.png]]</p></li></ol></li></ol><span id="start-the-orange-pi-development-board"></span>
[[File:pi3b-img146.png|576x389px]]== Start the Orange Pi development board ==
<span id="how# Insert the TF card with the burned image into the TF card slot of the Orange Pi development board. If the image of SPIFlash+NVMe SSD has been burnt, then there is no need to insert a TF card, just make sure that the NVMe SSD is inserted into the development board normally.# The development board has an HDMI interface, and the development board can be connected to a TV or HDMI display through an HDMI-to-burnHDMI cable. If you have purchased an LCD screen, you can also use the LCD screen to display the system interface of the development board. If there is a Type-android-imageC to HDMI cable, the system interface of the development board can also be displayed through the Type-C interface.# Connect a USB mouse and keyboard tocontrol the Orange Pi development board.# The development board has an Ethernet port, which can be plugged into a network cable for Internet access.# Connect a high-spiflashnvmequality power adapter with a 5V/3A USB Type-ssd"></span>== How to burn Android image to SPIFlash+NVMe SSD ==C interface.
::{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''Note that all <span style="color:#FF0000">Remember not to plug in a power adapter with a voltage output greater than 5V, as this will burn out the following operations are performed on a Windows computerdevelopment board.'''</span>
'''<ol span style="list-style-typecolor: decimal;#FF0000"><li><p>FirstMany unstable phenomena during the power-on and start-up process of the system are basically caused by power supply problems, so a reliable power adapter is very important. If you need to prepare an NVMe SSD solid state drive</p><ol style="list-style-type: lowerfind that there is a phenomenon of continuous restart during the startup process, please replace the power supply or the Type-alpha;"><li>The MC data cable and try again.2 2230 SSD is as follows</li></ol></li>'''</olspan>
[[File'''<span style="color:pi3b#FF0000">The Type-img73C power port does not support PD negotiation.png|147x106px]]'''</span>
'''<ol start="2" span style="list-style-typecolor: lower-alpha;#FF0000"><li>The MIn addition, please do not connect the USB interface of the computer to power the development board.2 2242 SSD is as follows'''</lispan></olbig>|}
[[File<ol start="6" style="list-style-type:pi3b-img74decimal;"><li>Then turn on the switch of the power adapter. If everything is normal, you can see the startup screen of the system on the HDMI monitor or LCD screen.png|216x119px]]</li>
<ol start="2" style="list-style-type: decimal;"><li>Then insert If you want to view the output information of the system through the NVMe SSD into debugging serial port, please use the Mserial cable to connect the development board to the computer.2 PCIe interface For the connection method of the development board and fix itserial port, please refer to '''[[Orange Pi 3B#How to use the debugging serial port|the section on how to use the debugging serial port]].'''</li></ol><span id="how-to-use-the-debugging-serial-port"></span>
[[File:pi3b-img75.png|283x63px]]== How to use the debugging serial port ==
<ol startspan id="3" style="listconnection-instruction-of-debugging-styleserial-type: decimal;port"><li/span>The position === Connection instruction of the SPI Flash on the development board is shown in the figure below, no other settings are required before starting the programming</li></ol>debugging serial port ===
[[File:pi3b-img76.png|266x211px]] <ol start="4" style="list-style-type: decimal;"><li>You also <p>First, you need to prepare a good quality USB23.0 male3V USB-to-male data cableTTL module, and then insert the USB interface end of the USB-to-TTL module into the USB interface of the computer.</p>{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big><p>'''For better compatibility, it is recommended to use CH340 USB to TTL module, please do not use CP2102, PL2303 USB to TTL module.'''</lip><p>'''Before purchasing a USB to TTL module, please confirm that the module supports a baud rate of 1500000.'''</p></olbig>|}
<div class="figure">
[[File:pi3b-img16img155.png|141x138px|D6BB9058-CDC3-42d7-A7FC-FBF630D886B7]]
</div><ol start="5" style="list-style-type: decimal;"><li><p>Then download Rockchip driver '''DriverAssitant_v5.12.zip''' and burning tool '''RKDevTool_Release_v3.15.zip''' from '''Orange Pi's data download page'''</p></li><li><p>Then download the image of Android11</pol><ol start="2" style="list-style-type: lower-alphadecimal;"><li>After opening the download link The corresponding relationship between GND, RXD and TXD pins of the Android image, you can see the following two types debugging serial port of Android images, please select the image development board is shown in the S'''PIFlash-NVME SSD boot image folder''' to download</li></ol>figure below</li></ol>
[[File:pi3b-img156.png]]<div class/ol><ol start="3" style="figurelist-style-type: decimal;"><li>The GND, TXD and RXD pins of the USB to TTL module need to be connected to the debugging serial port of the development board through a DuPont line</li>
[[File:pi3b-img124a.png|340x108px|e6986fc9c8fc078e8cb6a9c39b76fb8]]Connect the GND of the USB to TTL module to the GND of the development board
</div><ol start="2" style="list-style-type: lower-alpha;"><li><p>After entering the b. The '''SPIFlash-NVME SSD boot image folder''', you can see the following two images. Their differences are:</p><ol span style="list-style-typecolor: lower-alpha;#FF0000"><li><p>The image without lcd RX of the USB to TTL module is specially used for HDMI display and supports 4K display. If you do not use connected to the LCD screen, please download the image without lcdTX</p></li><li><p>If you want to use LCD screen, please choose image with lcd</p></li></ol></li></olspan>''' of the development board
[[File:pi3bc. The '''<span style="color:#FF0000">TX of the USB to TTL module is connected to the TX</span>''' of the development board</ol><ol start="4" style="list-img147.png|305x58px]]style-type: decimal;"><li>The schematic diagram of connecting the USB to TTL module to the computer and the Orange Pi development board is as follows</li>
<ol startdiv class="7figure" style="list-style-type: decimal;"><li>Then use the decompression software to decompress '''DriverAssitant_v5.12.zip''', and then find the '''DriverInstall.exe''' executable file in the decompressed folder and open it</li></ol>
[[File:pi3b-img31img157.png|407x120px]]
<ol start/div>{| class="8wikitable" style="listbackground-style-typecolor:#ffffdc;width: decimal800px;">|-| <li><pbig>After opening '''DriverInstallThe TX and RX of the serial port need to be cross-connected.exe''If you don't want to carefully distinguish the order of TX and RX, you can connect the TX and RX of the serial port casually first. If there is no output in the test, then exchange the steps to install order of TX and RX, so there is always a the Rockchip driver are as followsorder is right'''</pbig>|}</ol style><span id="listhow-to-use-the-debugging-serial-port-on-the-ubuntu-platform"></span> === How to use the debugging serial port on the Ubuntu platform === {| class="wikitable" style="background-typecolor:#ffffdc;width: lower-alpha800px;">|-| <libig>Click the "'''Driver InstallationThere are many serial port debugging software that can be used under Linux, such as putty, minicom, etc. The following demonstrates how to use putty.'''" button</li></olbig></li></ol>|}
[[File:pi3b# First, insert the USB-img32to-TTL module into the USB interface of the Ubuntu computer. If the connection and recognition of the USB-to-TTL module is normal, you can see the corresponding device node name under '''/dev''' on the Ubuntu PC.png|286x150px]]Remember this node name, and then set the serial port software will be used
<ol start::{| class="2wikitable" style="list-style-typewidth: lower-alpha800px;"><li>After waiting for a period of time, a pop|-up window will prompt "| test@test:~$ '''driver installed successfullyls /dev/ttyUSB*'''", and then click the "'''OK'''" button.</li></ol>
[[File:pi3b-img33.png/dev/ttyUSB0|296x154px]]}
<ol start="92" style="list-style-type: decimal;"><li>Then decompress '''RKDevTool_Release_v3.15.zip''', this software does not need use the following command to be installed, just find install putty on Ubuntu PC</li>{| class="wikitable" style="width:800px;" |-| test@test:~$ '''RKDevToolsudo apt-get update''' in the decompressed folder and open it</li></ol>
[[Filetest@test:pi3b~$ '''sudo apt-img34.pngget install -y putty'''|413x122px]]}</ol><ol start="3" style="list-style-type: decimal;"><li>Then run putty, '''<span style="color:#FF0000">remember to add sudo permission</span>'''</li>
{| class="wikitable" style="width:800px;" |-| test@test:~$ '''sudo putty'''|}</ol><ol start="104" style="list-style-type: decimal;"><li>After opening executing the '''RKDevTool''' burning toolputty command, because the computer is not connected to the development board through the USB2.0 male-to-male data cable at this time, the lower left corner following interface will prompt "'''No device found'''"pop up</li></ol>
[[File:pi3b-img35img158.png|402x189px]]</ol><ol start="5" style="list-style-type: decimal;"><li>First select the setting interface of the serial port</li>
[[File:pi3b-img159.png]]</ol><ol start="116" style="list-style-type: decimal;"><li><p>Then start burning set the parameters of the Android image to SPIFlash+NVMe SSDserial port</p>
<ol style="list-style-type: lower-alpha;">
<li>First, <p>Set Serial line to connect the development board toas /dev/ttyUSB0((Modified to the Windows computer through the USB2.0 male-tocorresponding node name, generally /dev/ttyUSB0)</p></li><li><p>Set Speed(baud) as '''1500000'''(Serial port baud rate)</p></li><li><p>Set Flow control as None</p></li> <div class="figure"> [[File:pi3b-male data cableimg160. The position of the USB2.0 programming port of the development board is shown in the figure belowpng]] </lidiv></ol>
</li></ol>
<ol start="7" style="list-style-type: decimal;">
<li><p>After setting the setting interface of the serial port, return to the Session interface</p>
<ol style="list-style-type: lower-alpha;">
<li><p>First select the Connection type as Serial</p></li>
<li><p>Then click the Open button to connect to the serial port</p></li>
<div class="figure">
[[File:pi3b-img36img161.png|275x116px|C:\Users\orangepi\Desktop\用户手册插图\pi 3b\1691131157154(1).jpg1691131157154(1)]]
</div></ol></li></ol><ol start="28" style="list-style-type: lower-alphadecimal;"><li><p>Make sure that the development board is not inserted into the TF card and not connected to the power supply</p></li><li><p>Then press and hold the MaskROM button on After starting the development board, you can see the position of Log information output by the MaskROM button on system from the development board is shown in the figure below:</p>opened serial port terminal</li></ol>
[[File:pi3b-img37img162.png|289x100px]]</ol><span id="how-to-use-the-debugging-serial-port-on-windows-platform"></span>
<ol start="4" style="list-style-type: lower-alpha;"><li>Then connect the power supply of the Type-C interface = How to use the development board, and power debugging serial port on, and then release the MaskROM button</li></ol>Windows platform ===
[[File{| class="wikitable" style="background-color:#ffffdc;width:pi3b800px;" |-img38| <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.png'''</big>|305x94px]]}
<ol startstyle="5list-style-type: decimal;" ><li><p>Download MobaXterm</p><ol style="list-style-type: lower-alpha;"><li>If the previous steps are successful, the development board will enter the Download MobaXterm website as follows</li>{| class="wikitable" style="width:800px;" |-| [https://mobaxterm.mobatek.net/ '''MASKROMhttps://mobaxterm.mobatek.net''' mode at this time]|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li>After entering the MobaXterm download page, and the interface of the burning tool will prompt "click '''found a MASKROM deviceGET XOBATERM NOW!'''"</li></ol>
[[File:pi3b-img39img163.png|443x208px]]</ol><ol start="3" style="list-style-type: lower-alpha;"><li>Then choose to download the Home version</li>
[[File:pi3b-img164.png]]</ol><ol start="64" style="list-style-type: lower-alpha;"><li>Then click select the "''Portable version. After downloading, you don'Upgrade Firmware'''" column of the burning toolt need to install it, just open it and use it</li></ol>
[[File:pi3b-img132img165.png|442x208px]]</ol></li></ol><ol start="2" style="list-style-type: decimal;"><li>After downloading, use decompression software to decompress the downloaded compressed package, you can get the executable software of MobaXterm, and then double-click to open</li>
[[File:pi3b-img166.png]]</ol><ol start="73" style="list-style-type: decimal;" ><li><p>After opening the software, the steps to set up the serial port connection are as follows</p><ol style="list-style-type: lower-alpha;"><li>Then <p>Open the session settings interface</p></li><li><p>Select the serial port type</p></li><li><p>Select the port number of the serial port (select the corresponding port number according to the actual situation)</p></li><li><p>Select the baud rate of the serial port as '''1500000'''</p></li><li><p>Finally click the "'''FirmwareOK'''" button to select complete the Android image to be burnedsetting</lip></olli>
[[File:pi3b-img133.png|444x209px]]<div class="figure">
<ol start="8" style="list-style-type[[File: lowerpi3b-alpha;"><li>Finally, click the "Upgrade" button to start burning. The burning process is shown in the figure below. You can see that the firmware will be burned to SPIFlash first, and then burned to PCIE. After burning is completed, the Android system will start automaticallyimg167.</li></ol>png]]
[[File</div></ol></li></ol><ol start="4" style="list-style-type:pi3b-img148decimal;"><li>After clicking the "'''OK'''" button, you will enter the following interface.png|453x212px]]At this time, start the development board and you can see the output information of the serial port</li>
<span iddiv class="using-rkdevtool-to-clear-spiflashfigure"></span>== Using RKDevTool to clear SPIFlash ==
# The position of SPI Flash on the development board is shown in the figure below[[File:pi3b-img168.png]]
[[File:pi3b</div></ol><span id="instructions-img76.png|263x193px]]for-using-the-5v-pin-in-the-40pin-interface-of-the-development-board-to-supply-power"></span>
<ol start="2" style="list-style-type: decimal;"><li>First, you need Instructions for using the 5v pin in the 40pin interface of the development board to prepare a good quality USB2.0 male-to-male data cable</li></ol>supply power ==
<div {| class="figurewikitable" style="background-color:#ffffdc;width:800px;"|-| <big>'''The power supply method we recommend for the development board is to use the 5V/3A Type C interface power cord to plug into the Type-C power interface of the development board for power supply. If you need to use the 5V pin in the 40pin interface to power the development board, please make sure that the power cord and power adapter used can meet the power supply requirements of the development board. If the use is unstable, please switch back to the Type-C power supply.'''</big>|}
[[File:pi3b-img16.png|141x138px|D6BB9058-CDC3-42d7-A7FC-FBF630D886B7]] </div><ol start="3" style="list-style-type: decimal;"><li><p>Then download the Rockchip driver '''DriverAssitant_v5.12.zip''' and MiniLoader and the burning tool '''RKDevTool_Release_v3.15.zip''' from the [http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-3B.html '''Orange Pi data download page''']</p><ol style="list-style-type: lower-alpha;"><li>On the download page of Orange Pi, first select the official tool# First, and then enter you need to prepare a power cord as shown in the following folder</li></ol></li></ol>figure below
<div class="figure">
::[[File:pi3b-img149img169.png|342x56px|1691401357374]]
</div>
<ol start::{| class="2wikitable" style="listbackground-style-typecolor:#ffffdc;width: lower-alpha800px;">|-| <libig>Then download all '''Please purchase the power cord shown in the files belowpicture above by yourself'''</li></olbig>|}
<div class="figure"> [[File:pi3b-img150.png|347x139px|1691401520573]] </div>'''Note that the "MiniLoader-things needed to burn the Linux image" folder is hereinafter referred to as the MiniLoader folder.''' <ol start="4" style="list-style-type: decimal;"><li>Then use decompression software to decompress '''DriverAssitant_v5.12.zip''', and then find the '''DriverInstall.exe''' executable file in the decompressed folder and open it</li></ol> [[File:pi3b-img31.png|472x139px]] <ol start="52" style="list-style-type: decimal;"><li><p>After opening DriverInstall.exe, Use the 5V pin in the steps 40pin interface to install supply power to the development board. The connection method of the Rockchip driver are power line is as follows</p>
<ol style="list-style-type: lower-alpha;">
<li>Click <p>The USB A port of the power cord shown in the above picture needs to be plugged into the "5V/3A power adapter connector ('''<span style="color:#FF0000">please do not plug into the computer'Driver Installations USB port for power supply</span>'''" button)</p></li><li><p>The red DuPont line needs to be plugged into the 5V pin of the development board 40pin</p></olli><li><p>The black Dupont wire needs to be inserted into the GND pin of the 40pin interface</p></li><li><p>The position of the 5V pin and GND pin of the 40pin interface on the development board is shown in the figure below, '''<span style="color:#FF0000">remember not to reverse the connection</olspan>'''</p></li>
[[File:pi3b-img32img170.png|276x145px]] <ol start="2" style="list-style-type: lower-alpha;"><li>After waiting for a period of time, a pop-up window will prompt "'''driver installed successfully'''", and then click the "'''OK'''" button.</li></ol> [[File:pi3b-img33.png|292x151px]] <ol start="6" style="list-style-type: decimal;"><li>Then decompress '''RKDevTool_Release_v3.15.zip''', this software does not need to be installed, just find '''RKDevTool''' in the decompressed folder and open it</li></ol> [[File:pi3b-img34.png|467x138px]] <ol start="7" style="list-style-type: decimal;"><li>After opening the '''RKDevTool''' burning tool, because the computer has not connected to the development board through the USB2.0 male-to-male data cable at this time, the lower left corner will prompt "'''No device found'''"</li></ol> [[File:pi3b-img35.png|402x189px]] <ol start="8" style="list-style-type: decimal;"><li><p>Then you can start to clear the content in SPI FLASH</p><ol style="list-style-type: lower-alpha;"><li>First, connect the development board to the Windows computer through the USB2.0 male-to-male data cable. The position of the USB2.0 programming port of the development board is shown in the figure below</li></ol>
</li></ol>
<span id="instructions-for-use-of-ubuntudebian-server-and-xfce-desktop-system"></span>
<div class="figure">'''Instructions for use of Ubuntu/Debian Server and Xfce desktop system''' =
[[File{| class="wikitable" style="background-color:#ffffdc;width:pi3b800px;" |-img36| <big>'''The content of this chapter is written based on the images of the Linux server version and the xfce desktop version.png|275x116px'''</big>|C:\Users\orangepi\Desktop\用户手册插图\pi 3b\1691131157154(1).jpg1691131157154(1)]]}
</div><ol startspan id="2" style="listsupported-linux-image-styletypes-type: lowerand-alpha;kernel-versions"><li><p>Make sure that the development board is not inserted into the TF card and not connected to the power supply</p></lispan><li><p>Then press == Supported Linux image types and hold the MaskROM button on the development board, the position of the MaskROM button on the development board is shown in the figure below:</p></li></ol>kernel versions ==
[[File{| class="wikitable" style="width:pi3b800px;text-img37align: center;"|-|'''Linux image type'''|'''kernel version'''|'''server version'''|'''desktop version'''|-|'''Debian 11 - Bullseye'''|'''Linux5.png10'''|'''support'''|'''support'''|-|'''Ubuntu 20.04 - Focal'''|'''Linux5.10'''|'''support'''|'''support'''|-|'''Ubuntu 22.04 - Jammy'''|'''Linux5.10'''|'''support'''|'''support'''|289x100px]]}
<ol startspan id="4" style="list-stylelinux-type: lowersystem-alpha;adaptation"><li>Then connect the power supply of the Type-C interface to the development board, and power on, and then release the MaskROM button</li></olspan>== Linux System adaptation ==
[[File:pi3b-img38.png{|305x94px]] <ol startclass="5wikitable" style="listwidth:800px;text-style-typealign: lower-alphacenter;"><li>If the previous steps are successful, the development board will enter the |-|'''MASKROMFunction''' mode at this time, and the interface of the burning tool will prompt "|'''found a MASKROM deviceDebian11'''"</li></ol>|'''Ubuntu20.04'''[[File:pi3b-img39|'''Ubuntu22.png04'''|457x215px]]-|'''USB2.0x3'''<ol start="6" style="list-style-type: lower-alpha;">|'''OK'''<li><p>Then please select |'''Advanced FeaturesOK'''</p><p>[[File:pi3b-img126.png|458x138px]]</p></li>'''OK'''<li><p>Then click the position shown in the figure below</p>|-<p>[[File:pi3b-img127.png|459x216px]]</p></li><li><p>Select '''rk3566_MiniLoaderAllUSB3.bin0x1''' in the |'''MiniLoaderOK''' folder you downloaded earlier, and click Open</p></li></ol>|'''OK'''<div class="figure">|'''OK'''|-[[File:pi3b-img68|'''M.png2 NVMe SSD Start'''|459x216px'''OK'''|SIS5H0S2@F5M2D(6ANZEUPG]]'''OK'''|'''OK'''</div>|-<ol style="list-style-type: lower-roman;">|'''WIFI'''<li><p>Then click |'''DownloadOK'''</p><p>[[File:pi3b-img128.png|472x222px]]</p></li></ol>'''OK'''|'''OK'''<ol start="10" style="list|-style-type: lower-alpha;"><li><p>The display after downloading |'''rk3566_MiniLoaderAll.binBluetooth''' is shown in the figure below</p><p>[[File:pi3b-img140.png|474x223px]]</p></li>'''OK'''<li><p>Then select the storage device as |'''SPINOROK'''</p><p>[[File:pi3b-img151.png|467x220px]]</p></li><li><p>Then click Switch '''StorageOK'''</p><p>[[File:pi3b|-img152.png|464x218px]]</p></li>'''GPIO(40pin)'''<li><p>Then click |'''Erase AllOK''' to start erasing SPIFlash</p><p>[[File:pi3b-img153.png|467x220px]]</p></li>'''OK'''<li><p>The display log after erasing SPIFlash is shown in the figure below</p>|'''OK'''<p>[[File:pi3b-img154.png|460x216px]]</p></li></ol> <span id="start-the-orange-pi-development-board"></span>== Start the Orange Pi development board ==|'''UART(40pin)'''|'''OK'''# Insert the TF card with the burned image into the TF card slot of the Orange Pi development board. If the image of SPIFlash+NVMe SSD has been burnt, then there is no need to insert a TF card, just make sure that the NVMe SSD is inserted into the development board normally.|'''OK'''# The development board has an HDMI interface, and the development board can be connected to a TV or HDMI display through an HDMI-to-HDMI cable. If you have purchased an LCD screen, you can also use the LCD screen to display the system interface of the development board. If there is a Type-C to HDMI cable, the system interface of the development board can also be displayed through the Type-C interface.|'''OK'''# Connect a USB mouse and keyboard to control the Orange Pi development board.# The development board has an Ethernet port, which can be plugged into a network cable for Internet access.# Connect a high-quality power adapter with a 5V/3A or 5V/4A USB Type|-C interface.|'''SPI(40pin)'''|'''Remember not to plug in a power adapter with a voltage output greater than 5V, as this will burn out the development board.OK'''|'''OK'''|'''Many unstable phenomena during the power-on and start-up process of the system are basically caused by power supply problems, so a reliable power adapter is very important. If you find that there is a phenomenon of continuous restart during the startup process, please replace the power supply or the Type-C data cable and try again.OK'''|-|'''The Type-C power port does not support PD negotiation.I2C(40pin)'''|'''OK'''|'''In addition, please do not connect the USB interface of the computer to power the development board.OK''' 6) Then turn on the switch of the power adapter. If everything is normal, you can see the startup screen of the system on the HDMI monitor or LCD screen. 7) If you want to view the output information of the system through the debugging serial port, please use the serial cable to connect the development board to the computer. For the connection method of the serial port, please refer to |'''[[\l|the section on how to use the debugging serial port]].OK''' <span id="how-to-use-the-debugging|-serial-port"></span>== How to use the debugging serial port ==|'''PWM(40pin)'''|'''OK'''<span id="connection-instruction-of-debugging-serial-port"></span>|'''OK'''=== Connection instruction of debugging serial port ===|'''OK''' <ol style="list|-style-type: decimal;"><li><p>First, you need to prepare a 3.3V USB-to-TTL module, and then insert the USB |'''PWM fan interface end of the USB-to-TTL module into the USB interface of the computer.</p>'''<p>|'''For better compatibility, it is recommended to use CH340 USB to TTL module, please do not use CP2102, PL2303 USB to TTL module.OK'''</p><p>|'''Before purchasing a USB to TTL module, please confirm that the module supports a baud rate of 1500000.OK'''</p></li></ol> <div class="figure">|'''OK'''[[File:pi3b-img155.png|576x115px|07]] </div><ol start="2" style="list-style-type: decimal;"><li>The corresponding relationship between GND, RXD and TXD pins of the debugging |'''3pin Debug serial port of the development board is shown in the figure below</li></ol>'''|'''OK'''[[File:pi3b-img156.png|428x110px]]'''OK'''|'''OK'''<ol start="3" style="list|-style-type: decimal;"><li>The GND, TXD and RXD pins of the USB to TTL module need to be connected to the debugging serial port of the development board through a DuPont line</li></ol>|'''EMMC'''|'''OK'''<blockquote>a. Connect the GND of the USB to TTL module to the GND of the development board b. The |'''RX of the USB to TTL module is connected to the TXOK''' of the development board c. The |'''TX of the USB to TTL module is connected to the TXOK''' of the development board</blockquote>|-<ol |'''TF card start="4" style="list-style-type: decimal;">'''<li>The schematic diagram of connecting the USB to TTL module to the computer and the Orange Pi development board is as follows</li></ol>|'''OK'''|'''OK'''<div class="figure">|'''OK'''[[File:pi3b-img157.png|524x189px|C:\Users\orangepi\Desktop\用户手册插图\pi 3b\USB-to-TTL-module-to-the-computer.jpgUSB-to-TTL-module-to-the-computer]]|'''HDMI Video'''</div>|'''OK'''|'''The TX and RX of the serial port need to be cross-connected. If you don’t want to carefully distinguish the order of TX and RX, you can connect the TX and RX of the serial port casually first. If there is no output in the test, then exchange the order of TX and RX, so there is always a the order is rightOK'''|'''OK'''<span id="how-to-use-the|-debugging-serial-port-on-the-ubuntu-platform"></span>=== How to use the debugging serial port on the Ubuntu platform ===|'''HDMI Audio'''|'''OK'''|'''There are many serial port debugging software that can be used under Linux, such as putty, minicom, etc. The following demonstrates how to use putty.OK'''|'''OK'''# First, insert the USB|-to-TTL module into the USB interface of the Ubuntu computer. If the connection and recognition of the USB-to-TTL module is normal, you can see the corresponding device node name under |'''/devCamera''' on the Ubuntu PC. Remember this node name, and then set the serial port software will be used|'''OK'''test@test:~$ |'''ls /dev/ttyUSB*OK'''|'''OK'''/dev/ttyUSB0 <ol start="2" style="list|-style-type: decimal;"><li>Then use the following command to install putty on Ubuntu PC</li></ol>|'''LCD'''|'''OK'''test@test:~$ |'''sudo apt-get updateOK''' test@test:~$ |'''sudo apt-get install -y puttyOK''' <ol start="3" style="list|-style-type: decimal;"><li>Then run putty, |'''remember to add sudo permissionEdp Display'''</li></ol>|'''OK'''test@test:~$ |'''sudo puttyOK'''|'''OK'''<ol start="4" style="list|-style-type: decimal;"><li>After executing the putty command, the following interface will pop up</li></ol>|'''Gigabit Ethernet port'''|'''OK'''[[File:pi3b-img158.png|367x321px]]'''OK'''|'''OK'''<ol start="5" style="list-style|-type: decimal;"><li>First select the setting interface of the serial |'''Network port</li></ol>status light'''|'''OK'''[[File:pi3b-img159.png|359x352px]]'''OK'''|'''OK'''<ol start="6" style="list|-style-type: decimal;"><li><p>Then set the parameters of the serial port</p>|'''headphone playback'''<ol style="list-style-type: lower-alpha;">|'''OK'''<li><p>Set Serial line to connect toas /dev/ttyUSB0((Modified to the corresponding node name, generally /dev/ttyUSB0)</p></li>|'''OK'''<li><p>Set Speed(baud) as |'''1500000OK'''(Serial port baud rate)</p></li><li><p>Set Flow control as None</p></li></ol>|-</li></ol>|'''headphone recording'''|'''OK'''<div class="figure">|'''OK'''|'''OK'''[[File:pi3b|-img160.png|317x312px'''LED Light'''|09]]'''OK'''|'''OK'''</div>|'''OK'''<ol start="7" style="list|-style-type: decimal;"><li><p>After setting the setting interface of the serial port, return to the Session interface</p>|'''RTC'''<ol style="list-style-type: lower-alpha;">|'''OK'''<li><p>First select the Connection type as Serial</p></li>|'''OK'''<li><p>Then click the Open button to connect to the serial port</p></li></ol>|'''OK'''</li></ol>|-|'''GPU'''<div class="figure">|'''OK'''|'''OK'''[[File:pi3b-img161.png|345x340px'''OK'''|10]] </div><ol start="8" style="list-style-type: decimal;"><li>After starting the development board, you can see the Log information output by the system from the opened serial port terminal</li></ol>|'''NPU'''|'''OK'''[[File:pi3b-img162.png|468x340px]]'''OK'''|'''OK'''<span id="how-to-use-the-debugging-serial-port-on-windows|-platform"></span>=== How to use the debugging serial port on Windows platform ===|'''VPU'''|'''OK'''|'''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.OK'''|'''OK'''<ol style="list|-style-type: decimal;"><li><p>Download MobaXterm</p>|'''watchdog test'''<ol style="list-style-type: lower-alpha;">|'''OK'''<li>Download MobaXterm website as follows</li></ol>|'''OK'''</li></ol>|'''OK'''|-[https://mobaxterm.mobatek.net/ https://mobaxterm.mobatek.net]|'''Chromium Hard solution video'''|'''OK'''<ol start="2" style="list-style-type: lower-alpha;">|'''OK'''<li>After entering the MobaXterm download page, click |'''GET XOBATERM NOW!OK'''</li></ol>|}
[[File:pi3b<span id="the-img163.png|576x334px]]format-of-linux-commands-in-this-manual"></span>== The format of Linux commands in this manual ==
<ol start# In this manual, all commands that need to be entered in the Linux system will be marked with the following box::{| class="3wikitable" style="list-style-typewidth:800px;height: lower-alpha40px;"><li>Then choose to download the Home version</li></ol>|-|
[[File|}::As shown below, the content in the yellow box indicates the content that needs special attention, except for the commands in it.::{| class="wikitable" style="background-color:#ffffdc;width:800px;height:pi3b40px;" |-img164.png|353x231px]]
|}<ol start="42" style="list-style-type: decimal;"><li><p>Description of the prompt type in front of the command</p><ol style="list-style-type: lower-alpha;"><li>Then select 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 Portable version. After downloadingLinux command, you don’t need to install itso when entering the command in the Linux system, just open it and use itplease do not enter the content of the red font part</li>{| class="wikitable" style="width:800px;" |-| '''<span style="color:#FF0000">orangepi@orangepi:~$</olspan>sudo apt update'''
[[File'''<span style="color:pi3b-img165#FF0000">root@orangepi:~#</span>''' '''vim /boot/boot.png|575x259px]]cmd'''
'''<ol start="2" span style="list-style-typecolor: decimal;#FF0000"><li>After downloading, use decompression software to decompress the downloaded compressed package, you can get the executable software of MobaXterm, and then double-click to opentest@test:~$</lispan></ol> [ssh [Filemailto:pi3b-img166root@192.168.1.36 root@192.168.1.png|576x81px]]xxx'''
'''<span style="color:#FF0000">root@test:~#</span> ls'''
|}
</ol>
<ol start="2" style="list-style-type: lower-alpha;">
<li><p>'''<span style="color:#FF0000">root@orangepi:~$</span>''' The prompt indicates that this command is entered in '''the Linux system of the development board'''. The $ at the end of the prompt indicates that the current user of the system is a normal user. When executing a privileged command, you need to add '''sudo'''</p></li>
<li><p>'''<span style="color:#FF0000">root@orangepi:~#</span>''' The prompt indicates that this command is entered in the Linux system of the development board, and the # at the end of the prompt indicates that the current user of the system is the root user, who can execute any desired command</p></li>
<li><p>'''<span style="color:#FF0000">test@test:~$</span>''' The prompt indicates that this command is entered in the Ubuntu PC or Ubuntu virtual machine, not in the Linux system of the development board. The $ at the end of the prompt indicates that the current user of the system is an ordinary user. When executing privileged commands, sudo needs to be added '''sudo'''</p></li>
<li><p>'''<span style="color:#FF0000">root@test:~#</span>''' The prompt indicates that this command is entered in the Ubuntu PC or Ubuntu virtual machine, not in the Linux system of the development board. The # at the end of the prompt indicates that the current user of the system is the root user and can execute any command you want</p></li></ol>
</li></ol>
<!-- -->
<ol start="3" style="list-style-type: decimal;">
<li><p>After opening the software, What are the steps commands that need to set up the serial port connection are as followsbe entered?</p>
<ol style="list-style-type: lower-alpha;">
<li><p>Open the session settings interface</p></li><li><p>Select the serial port type</p></li><li><p>Select the port number of the serial port (select the corresponding port number according to the actual situation), if you can’t see the port numberAs shown below, please use '''Driver Masterthe black bold part''' is the command that needs to scan be input, and install the driver for content below the USB to TTL serial port chip</p></li><li><p>Select command is the baud rate output content (some commands have output, some may not), and this part of the serial port as '''1500000'''</p>content does not need to be input</li><li><p>Finally click the "{| class="wikitable" style="width:800px;" |-| root@orangepi:~# '''OKcat /boot/orangepiEnv.txt'''" button to complete the setting</p></li></ol></li></ol>
'''<div classspan style="figurecolor:#FF0000">verbosity=7</span>'''
[[File:pi3b-img167.png|575x438px|11]]bootlogo=false
'''<span style="color:#FF0000">console=serial</divspan>'''|}</ol><ol start="42" style="list-style-type: decimallower-alpha;"><li>After clicking 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 "'''OK'''\" buttonof each line needs to be removed, you will enter this is not part of the following interfacecommand. At this timeIn addition, start the development board and you can see the output information there are spaces in different parts of the serial portcommand, please don't miss it</li></ol>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''echo \'''
<div class'''"deb [arch="figure">$(dpkg --print-architecture) \'''
[[File:pi3b'''signed-img168by=/usr/share/keyrings/docker-archive-keyring.png|575x291px|12]gpg]\'''
<'''https:/div><span id="instructions-for-using-the-5v-pin-in-the-40pin-interface-of-the-development-board-to-supply-power"></span>== Instructions for using the 5v pin in the 40pin interface of the development board to supply power ==download.docker.com/Linux/debian \'''
'''The power supply method we recommend for the development board is to use the 5V$(lsb_release -cs) stable" | sudo tee /etc/3A or 5Vapt/4A Type C interface power cord to plug into the Type-C power interface of the development board for power supplysources. If you need to use the 5V pin in the 40pin interface to power the development board, please make sure that the power cord and power adapter used can meet the power supply requirements of the development boardlist. If the use is unstable, please switch back to the Type-C power supply.''' # First, you need to prepare a power cord as shown in the figure below <div class="figure"> [[File:pi3b-img169.png|151x108px|C:\Users\orangepi\Desktop\用户手册插图\Pi5 Plus\未标题-7d/docker.jpg未标题-7]] </div>'''Please purchase the power cord shown in the picture above by yourself''' <ol start="2" style="list-style-type: decimal>"><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 5Vdev/3A or 5V4A power adapter connector ('''please do not plug into the computer’s USB port for power supplynull''')</p></li><li><p>The red DuPont line needs to be plugged into the 5V pin of the development board 40pin</p></li><li><p>The black Dupont wire needs to be inserted into the GND pin of the 40pin interface</p></li>|}<li><p>The position of the 5V pin and GND pin of the 40pin interface on the development board is shown in the figure below, remember not to reverse the connection</p></li></ol>
</li></ol>
<span id="linux-system-login-instructions"></span>
[[File:pi3b-img170.png|365x71px]]== Linux system login instructions ==
<span id="instructionslinux-for-usesystem-ofdefault-ubuntudebianlogin-serveraccount-and-xfce-desktop-systempassword"></span>=== Linux system default login account and password ===
= '''Instructions for use of Ubuntu/Debian Server and Xfce desktop system''' = '''The content of this chapter is written based on the images of the Linux server version and the xfce desktop version.''' <span id="supported-linux-image-types-and-kernel-versions"></span>== Supported Linux image types and kernel versions == {| class="wikitable" style="width:800px;text-align: center;"
|-
|'''Linux image typeAccount'''|'''kernel versionPassport'''|-|'''server versionroot'''|'''desktop versionorangepi'''
|-
|'''Debian 11 - Bullseyeorangepi'''|'''Linux5.10orangepi'''|'''support'''} {|'''support'''class="wikitable" style="background-color:#ffffdc;width:800px;"
|-
|'''Ubuntu 20.04 - Focal'''|<big>'''Linux5Note 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.10'''</big>|'''support'''}{|'''support'''class="wikitable" style="background-color:#ffffdc;width:800px;"
|-
|'''Ubuntu 22.04 - Jammy'''|<big>'''Linux5When 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</span>, but look for other reasons.10'''|'''support'''|'''support'''</big>
|}
<span id="how-to-set-automatic-terminal-login-in-linux-system-adaptation"></span> === How to set automatic terminal login in Linux System adaptation system === # The Linux system automatically logs in to the terminal by default, and the default login user name is '''<span style="color:#FF0000">orangepi</span>''' ::[[File:pi3b-img171.png]]
<ol start="2" style="list-style-type: decimal;"><li>Use the following command to set the root user to automatically log in to the terminal</li>{| class="wikitable" style="width:800px;"
|-
|orangepi@orangepi:~$ '''Functionsudo auto_login_cli.sh root'''|'''Debian11'''}</ol><ol start="3" style="list-style-type: decimal;">|'''Ubuntu20.04'''<li>Use the following command to disable automatic login terminal</li>{|'''Ubuntu22.04'''class="wikitable" style="width:800px;"
|-
|orangepi@orangepi:~$ '''USB2sudo auto_login_cli.0x3sh -d'''|'''OK'''}</ol><ol start="4" style="list-style-type: decimal;">|'''OK'''<li>Use the following command to set the orangepi user to automatically log in to the terminal again</li>{|'''OK'''class="wikitable" style="width:800px;"
|-
|orangepi@orangepi:~$ '''USB3sudo auto_login_cli.0x1sh orangepi'''|'''OK'''}</ol><span id="instructions-for-automatic-login-of-linux-desktop-version-system"></span> === Instructions for automatic login of Linux desktop version system === # After the desktop system starts, it will automatically log in to the desktop without entering a password <div class="figure"> ::[[File:pi3b-img172.png]] </div><ol start="2" style="list-style-type: decimal;">|'''OK'''<li>Run the following command to prohibit the desktop system from automatically logging into the desktop</li>{|'''OK'''class="wikitable" style="width:800px;"
|-
|orangepi@orangepi:~$ '''Msudo disable_desktop_autologin.2 NVMe SSD Startsh'''|'''OK'''}</ol><ol start="3" style="list-style-type: decimal;"><li><p>Then restart the system and a login dialog box will appear, at which point a [[\l|'''OK'''password]] is required to enter the system</p><div class="figure"> [[File:pi3b-img173.png]] </div></li></ol> <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 === # Execute the following command to set the desktop system to automatically log in as the root user ::{|'''OK'''class="wikitable" style="width:800px;"
|-
|orangepi@orangepi:~$ '''WIFIsudo desktop_login.sh root'''|'''OK'''} <ol start="2" style="list-style-type: decimal;"><li>Then restart the system, and the root user will automatically log in to the desktop</li> [[File:pi3b-img174.png]]|'''OK'''{|'''OK'''class="wikitable" style="background-color:#ffffdc;width:800px;"
|-
|<big>'''BluetoothNote 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.'''|'''OKAlso note that this is not a bug, since pulseaudio is not allowed to run as root.'''</big>|'''OK'''}</ol><ol start="3" style="list-style-type: decimal;"><li>Execute the following command to set the desktop system to log in automatically with the orangepi user again</li> {|'''OK'''class="wikitable" style="width:800px;"
|-
|orangepi@orangepi:~$ '''GPIO(40pin)sudo desktop_login.sh orangepi'''|}</ol><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 === # First enter the following command on the command line, '''OK<span style="color:#FF0000">Please remember to add sudo permission</span>'''|'''OK'''::{|'''OK'''class="wikitable" style="width:800px;"
|-
|orangepi@orangepi:~$ '''UART(40pin)sudo systemctl disable lightdm.service'''|'''OK'''} <ol start="2" style="list-style-type: decimal;"><li>Then restart the Linux system and you will find that the desktop will not be displayed</li>|'''OK'''{|'''OK'''class="wikitable" style="width:800px;"
|-
|orangepi@orangepi:~$ '''SPI(40pin)sudo reboot'''|}</ol><ol start="3" style="list-style-type: decimal;"><li><p>The steps to reopen the desktop are as follows:</p><ol style="list-style-type: lower-alpha;"><li>First enter the following command on the command line, '''OK<span style="color:#FF0000">Please remember to add sudo permission</span>'''</li>|'''OK'''{|'''OK'''class="wikitable" style="width:800px;"
|-
|orangepi@orangepi:~$ '''I2C(40pin)sudo systemctl start lightdm.service'''|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li>After the command is executed, the desktop will be displayed</li></ol></li></ol> <span id="onboard-led-light-test-instructions"></span> == Onboard LED Light Test Instructions == # There are three LED lights on the development board, one green light, one red light, and one PCIe light. The location is shown in the figure below: <div class="figure"> ::[[File:pi3b-img175.png]] </div><ol start="2" style="list-style-type: decimal;"><li><p>'''OK<span style="color:#FF0000">As long as the development board is powered on, the red LED light will always be on, which is controlled by the hardware and cannot be turned off by the software</span>'''</p></li>|'''OK'''<li><p>The green LED light will keep blinking after the kernel is started, which is controlled by software.</p></li><li><p>The PCIe indicator will flash when there is data transmission on the PCIe interface.</p></li><li><p>The method of setting the green light on and off and flashing is as follows</p>{|'''OK'''class="wikitable" style="background-color:#ffffdc;width:800px;"
|-
|<big>'''PWM(40pin)Note that the following operations should be performed under the root user.'''</big>|'''OK'''}<ol style="list-style-type: lower-alpha;">|'''OK'''<li>First enter the setting directory of the green light</li>{|'''OK'''class="wikitable" style="width:800px;"
|-
|root@orangepi:~# '''PWM fan interfacecd /sys/class/leds/status_led'''|'''OK'''}</ol><ol start="2" style="list-style-type: lower-alpha;">|'''OK'''<li>The command to set the green light to stop flashing is as follows</li>{|'''OK'''class="wikitable" style="width:800px;"
|-
|root@orangepi:/sys/class/leds/status_led# '''3pin Debug serial portecho none > trigger'''|'''OK'''}</ol><ol start="3" style="list-style-type: lower-alpha;">|'''OK'''<li>The command to set the green light to be on is as follows</li>{|'''OK'''class="wikitable" style="width:800px;"
|-
|root@orangepi:/sys/class/leds/status_led# '''EMMCecho default-on > trigger'''|'''OK'''}</ol><ol start="4" style="list-style-type: lower-alpha;">|'''OK'''<li>The command to set the green light to flash is as follows</li>{|'''OK'''class="wikitable" style="width:800px;"
|-
|root@orangepi:/sys/class/leds/status_led# '''TF card startecho heartbeat > trigger'''|}</ol></li></ol><span id="network-connection-test"></span> == Network connection test == <span id="ethernet-port-test"></span>=== Ethernet port test === # First, insert one end of the network cable into the Ethernet interface of the development board, and connect the other end of the network cable to the router, and ensure that the network is unblocked# After the system starts, it will automatically assign an IP address to the Ethernet card through DHCP, '''OK<span style="color:#FF0000">No other configuration is required</span>'''|'''OK'''# The command to view the IP address in the Linux system of the development board is as follows ::{|'''OK'''class="wikitable" style="width:800px;"
|-
|orangepi@orangepi:~$ '''HDMI Videoip addr show eth0'''|2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 :link/ether 4a:fe:2b:3d:17:1c brd ff:ff:ff:ff:ff:ff :inet '''OK<span style="color:#FF0000">192.168.1.150</span>'''/24 brd 192.168.1.255 scope global dynamic noprefixroute eth0 ::valid_lft 43150sec preferred_lft 43150sec :inet6 fe80::9a04:3703:faed:23be/64 scope link noprefixroute ::valid_lft forever preferred_lft forever|'''OK'''} ::{|'''OK'''class="wikitable" style="background-color:#ffffdc;width:800px;"
|-
|<big>'''HDMI AudioWhen using ifconfig to view the IP address, if the following information is displayed, it is because sudo is not added. The correct command is: sudo ifconfig'''</big> |orangepi@orangepi:~$ '''OKifconfig'''|Command 'ifconfig'is available in the following places * /sbin/ifconfig * /usr/sbin/ifconfig The command could not be located because 'OK''/sbin:/usr/sbin'is not included in the PATH environment variable. |'''OK'''This is most likely caused by the lack of administrative privileges associated with your user account.|-|'''Camera'''ifconfig: command not found|'''OK'''}|'''OK'''::{|'''OK'''class="wikitable" style="background-color:#ffffdc;width:800px;"
|-
|<big>'''There are three ways to check the IP address after the development board starts:''' '''1. Connect the HDMI display, then log in to the system and use the ip addr show eth0 command to view the IP address''' '''LCD2. Enter the ip addr show eth0 command in the debugging serial terminal to view the IP address'''|'''3. If there is no debugging serial port and no HDMI display, you can also check the IP address of the development board's network port through the router's management interface. However, in this method, some people often cannot see the IP address of the development board normally. If you can't see it, the debug method looks like this:''' <ol style="list-style-type: upper-alpha;"><li><p>'''First check whether the Linux system has started normally. If the green light of the development board is blinking, it is generally started normally. If only the red light is on, it means that the system has not started normally;'''</p></li><li><p>'''Check whether the network cable is plugged in tightly, or try another network cable;'''</p></li><li><p>'''Try another router (I have encountered many problems with the router, such as the router cannot assign the IP address normally, or the IP address has been assigned normally but cannot be seen in the router);'''</p></li><li><p>'''OKIf there is no router to replace, you can only connect to an HDMI display or use the debugging serial port to view the IP address'''</p></li></ol> |'''OKIn addition, it should be noted that the development board DHCP automatically assigns an IP address without any settings.'''</big>|} <ol start="4" style="list-style-type: decimal;"><li>The command to test the network connectivity is as follows, the '''ping''' command can be interrupted through the shortcut key of '''OKCtrl+C'''</li> {| class="wikitable" style="width:800px;"
|-
|orangepi@orangepi:~$ '''Edp Displayping www.baidu.com -I eth0'''|'''OK'''|'''OK'''PING www.a.shifen.com (14.215.177.38) from 192.168.1.12 eth0: 56(84) bytes of data. 64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=1 ttl=56 time=6.74 ms 64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=2 ttl=56 time=6.80 ms 64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=3 ttl=56 time=6.26 ms 64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=4 ttl=56 time=7.27 ms ^C|'''OK'''|--- www.a.shifen.com ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3002ms|'''Gigabit Ethernet port'''|'''OK'''rtt min/avg/max/mdev = 6.260/6.770/7.275/0.373 ms|'''OK'''}|'''OK'''</ol>|<span id="wifi-connection-test"></span>|'''Network port status light'''|'''OK'''=== WIFI connection test ===|'''OK'''{|'''OK'''class="wikitable" style="background-color:#ffffdc;width:800px;"
|-
|<big>'''headphone playbackPlease do not connect to WIFI by modifying the /etc/network/interfaces configuration file. There will be problems connecting to the WIFI network in this way.'''</big>|'''OK'''} <span id="wifi-the-server-image-connects-to-wifi-through-commands"></span>==== The server image connects to WIFI through commands ====|'''OK'''{|'''OK'''class="wikitable" style="background-color:#ffffdc;width:800px;"
|-
|<big>'''headphone recordingWhen the development board is not connected to Ethernet, not connected to HDMI display, but only connected to the serial port, it is recommended to use the commands demonstrated in this section to connect to the WIFI network. Because nmtui can only display characters in some serial port software (such as minicom), and cannot display the graphical interface normally. Of course, if the development board is connected to an Ethernet or HDMI display, you can also use the commands demonstrated in this section to connect to the WIFI network.'''</big>|'''OK'''} <ol style="list-style-type: decimal;"><li><p>First log in to the Linux system, there are the following three ways</p><ol style="list-style-type: lower-alpha;"><li><p>If the development board is connected with a network cable, you can remotely log in to the Linux system through ssh</p></li><li><p>If the development board is connected to the debugging serial port, you can use the serial port terminal to log in to the Linux system</p></li><li><p>If the development board is connected to the HDMI display, you can log in to the Linux system through the terminal displayed on the HDMI</p></li></ol></li><li><p>First use the nmcli dev wifi command to scan the surrounding WIFI hotspots</p></li>|'''OK'''{|'''OK'''class="wikitable" style="width:800px;"
|-
|'''LED Light'''|orangepi@orangepi:~$ '''OKnmcli dev wifi'''|'''OK'''|'''OK'''|-|'''RTC'''|'''OK'''|'''OK'''|'''OK'''|-|'''GPU'''|'''OK'''|'''OK'''|'''OK'''|-|'''NPU'''|'''OK'''|'''OK'''}|'''OK'''|-|'''VPU'''|'''OK'''|'''OK'''<div class="figure">|'''OK'''|[[File:pi3b-|'''watchdog test'''|'''OK'''|'''OK'''|'''OK'''|-|'''Chromium Hard solution video'''|'''OK'''|'''OK'''|'''OK'''|}img176.png]]
<span id/div></ol><ol start="the-format-of-linux-commands-in3" style="list-thisstyle-manualtype: decimal;"><li>Then use the nmcli command to connect to the scanned WIFI hotspot, where:</spanli>== The format of Linux commands in this manual ==
# In this manual, all commands that need :a. '''wifi_name''' needs to be entered in replaced with the Linux system will be marked with name of the following boxWIFI hotspot you want to connect to
As shown below, the content in the yellow box indicates :b. '''wifi_passwd''' needs to be replaced with the content that needs special attention, except for password of the commands in it.WIFI hotspot you want to connect to
<ol start:{| class="2wikitable" style="list-style-typewidth: decimal800px;"><li><p>Description of the prompt type in front of the command</p>|-| orangepi@orangepi:~$ '''nmcli dev wifi connect <ol span style="list-style-typecolor: lower-alpha;#FF0000"><li>The prompt in front of the command refers to the content of the red part in the box below, which is not part of the Linux command, so when entering the command in the Linux system, please do not enter the content of the red font partwifi_name</lispan>password </ol></lispan style="color:#FF0000">wifi_passwd</olspan>'''
Device 'wlan0'successfully activated with 'orangepi@orangepicf937f88-ca1e-4411-bb50-61f402eef293'.|}</ol><ol start="4" style="list-style-type:~$ sudo apt updatedecimal;"><li>You can view the IP address of wifi through the '''ip addr show wlan0'''command
'''root{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~#''' $ '''vim /boot/boot.cmdip addr show wlan0'''
'''test@test11:~$ ssh [mailtowlan0:root@192.168.1.36 root@192.168.1.]xxx'''<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
'''root@test:~# ls'''link/ether 23:8c:d6:ae:76:bb brd ff:ff:ff:ff:ff:ff
:inet '''<ol start="2" span style="list-style-typecolor: lower-alpha;#FF0000"><li><p>'''root@orangepi:~$''' The prompt indicates that this command is entered in '''the Linux system of the development board'''192.168. The $ at the end of the prompt indicates that the current user of the system is a normal user1. When executing a privileged command, you need to add '''sudo'''</p>11</li><li><pspan>'''root@orangepi:~#''' The prompt indicates that this command is entered in the Linux system of the development board, and the # at the end of the prompt indicates that the current user of the system is the root user, who can execute any desired command</p></li><li><p>'''test@test:~$''' The prompt indicates that this command is entered in the Ubuntu PC or Ubuntu virtual machine, not in the Linux system of the development board24 brd 192. The $ at the end of the prompt indicates that the current user of the system is an ordinary user168. When executing privileged commands, sudo needs to be added '''sudo'''</p></li><li><p>'''root@test:~#''' The prompt indicates that this command is entered in the Ubuntu PC or Ubuntu virtual machine, not in the Linux system of the development board1. The # at the end of the prompt indicates that the current user of the system is the root user and can execute any command you want</p></li></ol>255 scope global dynamic noprefixroute wlan0
<!-- --><ol start="3" style="list-style-type: decimal;"><li><p>What are the commands that need to be entered?</p><ol style="list-style-type: lower-alpha;"><li>As shown below, '''the black bold part''' is the command that needs to be input, and the content below the command is the output content (some commands have output, some may not), and this part of the content does not need to be input</li></ol></li></ol>valid_lft 259192sec preferred_lft 259192sec
root@orangepi:~# '''cat /bootinet6 240e:3b7:3240:c3a0:c401:a445:5002:ccdd/orangepiEnv.txt'''64 scope global dynamic noprefixroute
'''verbosity=7'''::valid_lft 259192sec preferred_lft 172792sec
bootlogo=false:inet6 fe80::42f1:6019:a80e:4c31/64 scope link noprefixroute
::valid_lft forever preferred_lft forever|}</ol><ol start="5" style="list-style-type: decimal;"><li>Use the '''ping'''command to test the connectivity of the wifi network, and the ''console=serial'ping''' command can be interrupted through the shortcut key '''Ctrl+C'''</li>
<ol start{| class="2wikitable" style="list-style-typewidth: lower-alpha800px;"><li>As shown below, some commands cannot be written in one line and will be placed on the next line|-| orangepi@orangepi:~$ '''ping www. As long as the black and bold parts are all commands that need to be inputorangepi. 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</li></ol>org -I wlan0'''
PING www.orangepi@orangepi.org (182.92.236.130) from 192.168.1.49 wlan0:~$ '''echo \'''56(84) bytes of data.
'''"deb [arch=$64 bytes from 182.92.236.130 (dpkg --print-architecture182.92.236.130) \''': icmp_seq=1 ttl=52 time=43.5 ms
'''signed-by64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=2 ttl=52 time=/usr/share/keyrings/docker-archive-keyring41.gpg] \'''3 ms
'''https64 bytes from 182.92.236.130 (182.92.236.130)://download.dockericmp_seq=3 ttl=52 time=44.com/Linux/debian \'''9 ms
'''$64 bytes from 182.92.236.130 (lsb_release -cs) stable" | sudo tee /etc/apt/sources182.92.list236.d/docker130): icmp_seq=4 ttl=52 time=45.list > /dev/null'''6 ms
<span id64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq="linux-system-login-instructions"></span>== Linux system login instructions 5 ttl=52 time=48.8 ms
<span id="linux-system-default-login-account-and-password"></span>=== Linux system default login account and password ===^C
{| class="wikitable"|-|'''Account'''|'''Passport'''|-|'''root'''|'''- www.orangepi'''|.org ping statistics ---|'''orangepi'''|'''orangepi'''|}
'''Note that when entering the password5 packets transmitted, the specific content of the entered password will not be displayed on the screen5 received, please do not think that there is any fault0% packet loss, just press Enter after inputting.'''time 4006ms
'''When rtt min/avg/max/mdev = 41.321/44.864/48.834/2.484 ms|}</ol><span id="the wrong password is prompted, or there is -server-image-connects-to-wifi-in-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.'''-graphical-way"></span>
<span id="how-to-set-automatic-terminal-login-in-linux-system"></span>=== How The server image connects to set automatic terminal login WIFI in Linux system a graphical way ====
# The Linux system automatically logs <ol style="list-style-type: decimal;"><li>First log in to the terminal by defaultLinux system, and there are the following three ways</li><ol style="list-style-type: lower-alpha;"><li><p>If the default development board is connected with a network cable, you can remotely log in to [[Orange Pi 3B#SSH remote login user name is orangepi development board|'''orangepithe Linux system through ssh''']]</p></li><li><p>If the development board is connected to the debugging serial port, you can use the serial port terminal to log in to the Linux system (please use MobaXterm for the serial port software, and the minicom cannot display the graphical interface)</p></li><li><p>If the development board is connected to the HDMI display, you can log in to the Linux system through the HDMI display terminal</p></li></ol>
[[File<li>Then enter the nmtui command in the command line to open the wifi connection interface</li>{| class="wikitable" style="width:pi3b800px;" |-img171.png| orangepi@orangepi:~$ '''nmtui'''|351x198px]]}</ol><ol start="3" style="list-style-type: decimal;"><li>Enter the nmtui command to open the interface as shown below</li>
[[File:pi3b-img177.png]]</ol><ol start="24" style="list-style-type: decimal;"><li>Use the following command to set the root user to automatically log in to the terminalSelect '''Activate a connect''' and press Enter</li></ol>
orangepi@orangepi[[File:~$ '''sudo auto_login_clipi3b-img178.sh root'''png]]</ol><ol start="5" style="list-style-type: decimal;"><li>Then you can see all the searched WIFI hotspots</li>
<ol startdiv class="3figure" style="list-style-type: decimal;"><li>Use the following command to disable automatic login terminal</li></ol>
orangepi@orangepi[[File:~$ '''sudo auto_login_clipi3b-img179.sh -d'''png]]
</div></ol><ol start="46" style="list-style-type: decimal;"><li>Use Select the following command WIFI hotspot you want to connect to set , then use the orangepi user to automatically log in Tab key to position the terminal againcursor on '''Activate''' and press Enter</li></ol>
orangepi@orangepi:~$ '''sudo auto_login_cli.sh orangepi'''<div class="figure">
<span id="instructions[[File:pi3b-for-automatic-login-of-linux-desktop-version-system"></span>=== Instructions for automatic login of Linux desktop version system ===img180.png]]
# After </div></ol><ol start="7" style="list-style-type: decimal;"><li>Then a dialog box for entering a password will pop up, enter the desktop system starts, it will automatically log corresponding password in '''Password''' and press Enter to start connecting to the desktop without entering a passwordWIFI</li>
<div class="figure">
[[File:pi3b-img172img181.png|576x324px|1]]
</div></ol><ol start="28" style="list-style-type: decimal;"><li>Run After the following command to prohibit the desktop system from automatically logging into WIFI connection is successful, a "*" will be displayed in front of the desktopconnected WIFI name</li></ol> orangepi@orangepi:~$ '''sudo disable_desktop_autologin.sh'''
<ol start="3" style="list-style-type: decimal;">
<li><p>Then restart the system and a login dialog box will appear, at which point a [[\l|password]] is required to enter the system</p>
<div class="figure">
[[File:pi3b-img173img182.png|569x320px|IMG_256]]
</div></ol><ol start="9" style="list-style-type: decimal;"><li>You can view the IP address of wifi through the '''ip addr show wlan0''' command</olli>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''ip addr show wlan0'''
<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 ===11: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
# Execute the following command to set the desktop system to automatically log in as the root user:link/ether 24:8c:d3:aa:76:bb brd ff:ff:ff:ff:ff:ff
orangepi@orangepi:~$ inet '''sudo desktop_login<span style="color:#FF0000">192.168.1.sh root11</span>'''/24 brd 192.168.1.255 scope global dynamic noprefixroute wlan0
<ol start="2" style="list-style-type: decimal;"><li>Then restart the system, and the root user will automatically log in to the desktop</li></ol>:valid_lft 259069sec preferred_lft 259069sec
[[File:pi3b-img174.png|448x187px]]inet6 240e:3b7:3240:c4a0:c401:a445:5002:ccdd/64 scope global dynamic noprefixroute
'''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.'''::valid_lft 259071sec preferred_lft 172671sec
'''Also note that this is not a bug, since pulseaudio is not allowed to run as root.''':inet6 fe80::42f1:6019:a80e:4c31/64 scope link noprefixroute
::valid_lft forever preferred_lft forever|}</ol><ol start="310" style="list-style-type: decimal;"><li>Execute Use the following '''ping''' command to set test the desktop system to log in automatically with connectivity of the wifi network, and the '''ping''' command can be interrupted through the orangepi user againshortcut key '''Ctrl+C'''</li></ol>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''ping www.orangepi.org -I wlan0'''
PING www.orangepi@orangepi.org (182.92.236.130) from 192.168.1.49 wlan0:~$ '''sudo desktop_login56(84) bytes of data.sh orangepi'''
<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 64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=1 ttl=52 time=43.5 ms
# First enter the following command on the command line,'''Please remember to add sudo permission'''64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=2 ttl=52 time=41.3 ms
orangepi@orangepi64 bytes from 182.92.236.130 (182.92.236.130):~$ '''sudo systemctl disable lightdmicmp_seq=3 ttl=52 time=44.service'''9 ms
<ol start64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq="2" style4 ttl="list-style-type: decimal;"><li>Then restart the Linux system and you will find that the desktop will not be displayed</li></ol>52 time=45.6 ms
orangepi@orangepi64 bytes from 182.92.236.130 (182.92.236.130):~$ '''sudo reboot'''icmp_seq=5 ttl=52 time=48.8 ms
<ol start="3" style="list-style-type: decimal;"><li><p>The steps to reopen the desktop are as follows:</p><ol style="list-style-type: lower-alpha;"><li>First enter the following command on the command line,'''Please remember to add sudo permission'''</li></ol></li></ol>^C
--- www.orangepi@orangepi:~$ '''sudo systemctl start lightdm.service'''org ping statistics ---
<ol start="2" style="list-style-type: lower-alpha;"><li>After the command is executed5 packets transmitted, the desktop will be displayed</li></ol>5 received, 0% packet loss, time 4006ms
rtt min/avg/max/mdev = 41.321/44.864/48.834/2.484 ms|}</ol><span id="onboardtest-ledmethod-lightof-testdesktop-instructionsimage"></span>== Onboard LED Light Test Instructions ==
# There are three LED lights on the development board, one green light, one red light, and one PCIe light. The location is shown in the figure below:==== Test method of desktop image ====
<div class="figure"># Click the network configuration icon in the upper right corner of the desktop (please do not connect the network cable when testing WIFI)
::[[File:pi3b-img175img183.png|425x115px|C:\Users\orangepi\Desktop\用户手册插图\pi 3b\3.5.Onboard-LED-Light-Test-Instructions(1).jpg3.5.Onboard-LED-Light-Test-Instructions(1)]]
</div>
<ol start="2" style="list-style-type: decimal;">
<li><p>Click '''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 softwareMore networks'''</p></li><li><p>The green LED light will keep blinking after in the kernel is startedpop-up drop-down box to see all scanned WIFI hotspots, which is controlled by software.</p></li><li><p>The PCIe indicator will flash when there is data transmission on and then select the PCIe interfaceWIFI hotspot you want to connect to.</p></li><li><p>The method of setting the green light on and off and flashing is as follows</p></li></ol>
[[File:pi3b-img184.png]]</ol><ol start="3" style="list-style-type: decimal;"><li>Then enter the password of the WIFI hotspot, and then click '''Note that the following operations should be performed under the root user.Connect'''to start connecting to WIFI</li>
[[File:pi3b-img185.png]]</ol ><ol start="4" style="list-style-type: lower-alphadecimal;"><li>First enter After connecting to WIFI, you can open the setting directory browser to check whether you can access the Internet. The entrance of the green lightbrowser is shown in the figure below</li></ol>
root@orangepi[[File:~# '''cd pi3b-img186.png]]</sys/class/ledsol><ol start="5" style="list-style-type: decimal;"><li>If you can open other web pages after opening the browser, it means that the WIFI connection is normal</status'''li>
[[File:pi3b-img187-1.png]]</ol start><span id="2" style="listhow-to-set-a-stylestatic-type: lowerip-alpha;address"><li>The command to set the green light to stop flashing is as follows</li></olspan>
root@orangepi:/sys/class/leds/work# '''echo none > trigger'''=== How to set a static IP address ===
<ol start{| class="3wikitable" style="listbackground-style-typecolor:#ffffdc;width: lower-alpha800px;">|-| <libig>The command to '''Please do not set a static IP address by modifying the green light to be on is as follows</li>etc/network/interfaces configuration file.'''</olbig>|}
root@orangepi:/sys/class<span id="use-the-nmtui-command-to-set-a-static-ip-address"></leds/work# '''echo default-on > trigger'''span>==== Use the nmtui command to set a static IP address ====
<ol start="4" style="list-style-type: lower-alpha;"><li>The # First run the '''nmtui''' command to set the green light to flash is as follows</li></ol>
root::{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:/sys/class/leds/work# ~$ '''echo heartbeat > triggernmtui'''|}
<span idol start="network2" style="list-connectionstyle-testtype: decimal;"><li>Then select '''Edit a connection''' and press Enter</spanli>== Network connection test ==
[[File:pi3b-img188.png]]</ol><span idol start="ethernet3" style="list-portstyle-testtype: decimal;"><li>Then select the network interface that needs to set a static IP address, for example, to set the static IP address of the '''Ethernet''' interface, select '''Wired connection 1'''.</spanli>=== Ethernet port test ===
# First, insert one end of the network cable into the Ethernet interface of the development board, and connect the other end of the network cable to the router, and ensure that the network is unblocked[[File:pi3b-img189.png]]</ol><ol start="4" style="list-style-type: decimal;"># After <li>Then select '''Edit''' with the system starts, it will automatically assign an IP address to the Ethernet card through DHCP, '''No other configuration is requiredTab'''# The command to view the IP address in the Linux system of key and press the development board is as followsEnter key</li>
orangepi@orangepi[[File:~$ pi3b-img190.png]]</ol><ol start="5" style="list-style-type: decimal;"><li>Then use the Tab key to move the cursor to the '''ip addr show eth0<Automatic>'''position shown in the figure below to configure IPv4</li>
2[[File: eth0pi3b-img191.png]]</ol><ol start="6" style="list-style-type: <decimal;BROADCAST"><li>Then press Enter,MULTICASTselect '''Manual''' with the up and down arrow keys,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000and press Enter to confirm</li>
link[[File:pi3b-img192.png]]</ether 4aol><ol start="7" style="list-style-type:fe:2b:3d:17:1c brd ff:ff:ff:ff:ff:ffdecimal;"><li>The display after selection is shown in the figure below</li>
inet [[File:pi3b-img193.png]]</ol><ol start="8" style="list-style-type: decimal;"><li>Then move the cursor to the '''192.168.1.150<Show>'''</24 brd 192.168.1.255 scope global dynamic noprefixroute eth0li>
valid_lft 43150sec preferred_lft 43150sec[[File:pi3b-img194.png]]</ol><ol start="9" style="list-style-type: decimal;"><li>Then press Enter, the following setting interface will pop up after entering</li>
inet6 fe80[[File:pi3b-img195.png]]</ol><ol start="10" style="list-style-type:9a04decimal;"><li>Then you can set the IP address (Addresses), gateway (Gateway) and DNS server address in the position shown in the figure below (there are many other setting options in it, please explore by yourself), '''<span style="color:3703:faed:23be#FF0000">Please set it according to your specific needs, the value set in the figure below is just an example</span>'''</64 scope link noprefixrouteli>
valid_lft forever preferred_lft forever[[File:pi3b-img196.png]]</ol><ol start="11" style="list-style-type: decimal;"><li>After setting, move the cursor to'''<OK>''' in the lower right corner, and press Enter to confirm</li>
[[File:pi3b-img197.png]]</ol><ol start="12" style="list-style-type: decimal;"><li>Then click'''When using ifconfig to view the IP address, if the following information is displayed, it is because sudo is not added. The correct command is: sudo ifconfig<Back>'''to return to the previous selection interface</li>
orangepi@orangepi[[File:~$ pi3b-img198.png]]</ol><ol start="13" style="list-style-type: decimal;"><li>Then select '''Activate a connection''', then move the cursor to'''ifconfig<OK>''', and finally click Enter</li>
Command [[File:pi3b-img199.png]]</ol><ol start="14" style="list-style-type: decimal;"><li>Then select the network interface that needs to be set, such as 'ifconfig' is available in 'Wired connection 1''', then move the following placescursor to'''<Deactivate>''', and press Enter to disable '''Wired connection 1'''</li>
* [[File:pi3b-img200.png]]</sbinol><ol start="15" style="list-style-type: decimal;"><li>Then please do not move the cursor, and then press the Enter key to re-enable '''Wired connection 1''', so that the static IP address set earlier will take effect</ifconfigli>
* [[File:pi3b-img201.png]]</usrol><ol start="16" style="list-style-type: decimal;"><li>Then you can exit nmtui through the'''<Back>''' and '''Quit''' buttons</sbin/ifconfigli>
The command could not be located because '[[File:pi3b-img202.png]] [[File:pi3b-img203.png]]</sbinol><ol start="17" style="list-style-type:/usr/sbindecimal;"><li>Then through '''ip addr show eth0''' is not included in , you can see that the IP address of the network port has changed to the PATH environment variable.static IP address set earlier</li>
This is most likely caused by the lack of administrative privileges associated with your user account.{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''ip addr show eth0'''
ifconfig3: command not foundeth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
'''There are three ways to check the IP address after the development board starts:'''link/ether 5e:ac:14:a5:92:b3 brd ff:ff:ff:ff:ff:ff
# :inet '''Connect the HDMI display, then log in to the system and use the ip addr show eth0 command to view the IP address'''<span style="color:# FF0000">192.168.1.177</span>'''Enter the ip addr show eth0 command in the debugging serial terminal to view the IP address'''# '''If there is no debugging serial port and no HDMI display, you can also check the IP address of the development board’s network port through the router’s management interface/24 brd 192.168. However, in this method, some people often cannot see the IP address of the development board normally1. If you can't see it, the debug method looks like this:'''255 scope global noprefixroute eth0
<!-- --><ol style="list-style-type: upper-alpha;"><li><p>'''First check whether the Linux system has started normally. If the green light of the development board is blinking, it is generally started normally. If only the red light is on, it means that the system has not started normally;'''</p></li><li><p>'''Check whether the network cable is plugged in tightly, or try another network cable;'''</p></li><li><p>'''Try another router (I have encountered many problems with the router, such as the router cannot assign the IP address normally, or the IP address has been assigned normally but cannot be seen in the router);'''</p></li><li><p>'''If there is no router to replace, you can only connect to an HDMI display or use the debugging serial port to view the IP address'''</p></li></ol>:valid_lft forever preferred_lft forever
'''In addition, it should be noted that the development board DHCP automatically assigns an IP address without any settings.''':inet6 241e:3b8:3240:c3a0:e269:8305:dc08:135e/64 scope global dynamic noprefixroute
<ol start="4" style="list-style-type: decimal;"><li>The command to test the network connectivity is as follows, the '''ping''' command can be interrupted through the shortcut key of '''Ctrl+C'''</li></ol>:valid_lft 259149sec preferred_lft 172749sec
orangepi@orangepi:~$ '''ping www.baidu.com -I eth0'''inet6 fe80::957d:bbbe:4928:3604/64 scope link noprefixroute
PING www.a.shifen.com (14.215.177.38) from 192.168.1.12 eth0: 56(84) bytes :valid_lft forever preferred_lft forever|}</ol><ol start="18" style="list-style-type: decimal;"><li>Then you can test the connectivity of data.the network to check whether the IP address is configured OK, and the '''ping''' command can be interrupted through the shortcut key '''Ctrl+C'''</li>
64 bytes from 14.215.177.38 (14{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''ping 192.215168.177.38): icmp_seq=1 ttl=56 time=6.74 ms47 -I eth0'''
64 bytes from 14PING 192.215168.1771.38 47 (14192.215168.1771.3847)from 192.168.1.188 eth0: icmp_seq=2 ttl=56 time=6(84) bytes of data.80 ms
64 bytes from 14192.215168.1771.38 (14.215.177.38)47: icmp_seq=3 1 ttl=56 64 time=60.26 233 ms
64 bytes from 14192.215168.1771.38 (14.215.177.38)47: icmp_seq=4 2 ttl=56 64 time=70.27 263 ms
^C64 bytes from 192.168.1.47: icmp_seq=3 ttl=64 time=0.273 ms
--- www64 bytes from 192.a168.shifen1.com ping statistics ---47: icmp_seq=4 ttl=64 time=0.269 ms
4 packets transmitted, 4 received, 64 bytes from 192.168.1.47: icmp_seq=5 ttl=64 time=0% packet loss, time 3002ms.275 ms
rtt min/avg/max/mdev = 6.260/6.770/7.275/0.373 ms^C
<span id="wifi-connection-test"></span>=== WIFI connection test ===- 192.168.1.47 ping statistics ---
'''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.'''5 packets transmitted, 5 received, 0% packet loss, time 4042ms
rtt min/avg/max/mdev = 0.233/0.262/0.275/0.015 ms|}</ol><span id="wifiuse-the-servernmcli-command-imageto-connectsset-toa-wifistatic-throughip-commandsaddress"></span>==== WIFI The server image connects to WIFI through commands ====
'''When ==== Use the development board is not connected nmcli command 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.'''set a static IP address ====
<ol style="list-style-type: decimal;">
<li><p>First log in If you want to set the Linux systemstatic 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, there are and then start to set the static IP address'''</p></li><li><p>Then use the following three ways'''nmcli con show''' command to view the name of the network device, as shown below</p>
<ol style="list-style-type: lower-alpha;">
<li><p>If '''orangepi''' is the development board is connected with a name of the WIFI network cable, you can remotely log in to interface (the Linux system through sshnames are not necessarily the same)</p></li><li><p>If the development board '''Wired connection 1''' is connected to the debugging serial port, you can use name of the serial port terminal to log in to the Linux systemEthernet interface</p></li>{| class="wikitable" style="width:800px;"|-|orangepi@orangepi:~$ '''nmcli con show'''<libr><span style="margin-right: 180px;">NAME</span><pspan style="margin-right: 260px;">If the development board is connected to the HDMI display, you can log in to the Linux system through the terminal displayed on the HDMIUUID </pspan><span style="margin-right: 45px;">TYPE </lispan><span style="margin-right: 50px;">DEVICE</olspan><br><span style="margin-right: 125px;">'''orangepi'''</span><span style="margin-right: 70px;">cfc4f922-ae48-46f1-84e1-2f19e9ec5e2a</span><span style="margin-right: 50px;">wifi </lispan><span style="margin-right: 50px;">wlan0</span><br><lispan style="margin-right: 50px;">'''Wired connection 1'''</span><span style="margin-right: 50px;">9db058b7-7701-37b8-9411-efc2ae8bfa30</span><span style="margin-right: 30px;">ethernet </span><span style="margin-right: 50px;">eth0</span><pbr>First use the nmcli dev wifi command to scan the surrounding WIFI hotspots|}</pol></li></ol>
orangepi@orangepi:~$ '''nmcli dev wifi'''
<div class="figure">
[[File:pi3b-img176.png|575x250px|选区_011]]
</div>
<ol start="3" style="list-style-type: decimal;">
<li>Then use enter the nmcli following command to connect to the scanned WIFI hotspot, where:</li></ol>
:a. '''wifi_name"Wired connection 1"''' needs means to be replaced with set the static IP address of the Ethernet port. If you need to set the static IP address of the WIFI, please change it to the corresponding name of the WIFI hotspot network interface (you want to connect tocan get it through the '''nmcli con show''' command)
:b. After '''wifi_passwdipv4.addresse''' needs is the static IP address to be replaced with set, which can be modified to the password of the WIFI hotspot value you want to connect toset
orangepi@orangepi:~$ c. '''nmcli dev wifi connect wifi_name password wifi_passwdipv4.gateway'''indicates the address of the gateway
Device ::{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''wlan0nmcli con mod "Wired connection 1" \' successfully activated with 'cf937f88-ca1e-4411-bb50-61f402eef293'.
<ol start="4" style="list-style-type: decimal;"><li>You can view the IP address of wifi through the '''ip addr show wlan0ipv4.addresses "192.168.1.110" \''' command</li></ol>
orangepi@orangepi:~$ '''ip addr show wlan0ipv4.gateway "192.168.1.1" \'''
11: wlan0: '''ipv4.dns <quot;BROADCAST,MULTICAST,UP,LOWER_UP8.8.8.8>quot; mtu 1500 qdisc pfifo_fast state UP group default qlen 1000\'''
link'''ipv4.method "manual"'''|}</ether 23ol><ol start="4" style="list-style-type:8cdecimal;"><li>Then restart the Linux system</li>{| class="wikitable" style="width:d6800px;" |-| orangepi@orangepi:ae~$ '''sudo reboot'''|}</ol><ol start="5" style="list-style-type:76:bb brd ff:ff:ff:ffdecimal;"><li>Then re-enter the Linux system and use the '''ip addr show eth0''' command to see that the IP address has been set to the desired value</li>{| class="wikitable" style="width:ff800px;" |-| orangepi@orangepi:ff~$ '''ip addr show eth0'''
inet '''192.168.1.11'''/24 brd 192.168.1.255 scope global dynamic noprefixroute wlan03: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
valid_lft 259192sec preferred_lft 259192sec:link/ether 5e:ae:14:a5:91:b3 brd ff:ff:ff:ff:ff:ff
inet6 240e:3b7inet '''<span style="color:3240:c3a0:c401:a445:5002:ccdd#FF0000">192.168.1.110</span>'''/64 32 brd 192.168.1.110 scope global dynamic noprefixrouteeth0
::valid_lft 259192sec forever preferred_lft 172792secforever
:inet6 fe80240e:3b7:3240:c3a0:42f197de:60191d01:a80eb290:4c31fe3a/64 scope link global dynamic noprefixroute
::valid_lft forever 259183sec preferred_lft forever172783sec
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''':inet6 fe80::3312:861a:a589:d3c/64 scope link noprefixroute
orangepi@orangepi:~$ '''ping www.orangepi.org :valid_lft forever preferred_lft forever|}</ol><span id="ssh-remote-login-development-I wlan0'''board"></span>
PING www.orangepi.org (182.92.236.130) from 192.168.1.49 wlan0: 56(84) bytes of data.== SSH remote login development board ==
64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq{| class=1 ttl"wikitable" style=52 time=43"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.5 ms'''</big>|}
64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq<span id="ssh-remote-login-development-board-under-ubuntu"></span>=== SSH remote login development board under Ubuntu =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# Obtain the IP address of the development board# Then you can remotely log in to the Linux system through the ssh command
64 bytes from 182::{| class="wikitable" style="width:800px;" |-| test@test:~$ '''ssh [mailto:root@192.92168.2361.130 (18236 root@192.92168.2361.130]xxx''' (Need to be replaced with the IP address of the development board): icmp_seq=4 ttl=52 time=45.6 ms
64 bytes from 182root@192.92168.2361.130 xx's password: (182Enter the password here, the default password is orangepi)|}::{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''Note that when entering the password, <span style="color:#FF0000">the specific content of the entered password will not be displayed on the screen</span>, please do not think that there is any fault, just press Enter after inputting.92.236.130)'''</big>|}:: icmp_seq{| class=5 ttl"wikitable" style=52 time"background-color:#ffffdc;width:800px;" |-| <big>'''If you are prompted to refuse the connection, as long as you are using the image provided by Orange Pi, <span style=48"color:#FF0000">please do not suspect that the password orangepi is wrong</span>, but look for other reasons.8 ms'''</big>|}
^C<ol start="3" style="list-style-type: decimal;"><li>After successfully logging in to the system, the display is as shown in the figure below</li>
--- www.orangepi.org ping statistics ---<div class="figure">
5 packets transmitted, 5 received, 0% packet loss, time 4006ms[[File:pi3b-img204.png]]
rtt min</avg/max/mdev div>{| class="wikitable" style= 41.321/44.864/48"background-color:#ffffdc;width:800px;" |-| <big>'''If ssh cannot log in to the Linux system normally, please first check whether the IP address of the development board can be pinged.834/2If 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.484 msIs it possible to connect:'''
<span id="the-server-image-connects-to-wifi-in-a-graphical-way"></span>
==== The server image connects to WIFI in a graphical way ====
1) First log in to the Linux system, there are the following three ways <ol style="list-style-typeroot@orangepi: lower-alpha;"><li><p>If the development board is connected with a network cable, you can remotely log in to [[\l|the Linux system through ssh]]</p></li><li><p>If the development board is connected to the debugging serial port, you can use the serial port terminal to log in to the Linux system (please use MobaXterm for the serial port software, and the minicom cannot display the graphical interface)</p></li><li><p>If the development board is connected to the HDMI display, you can log in to the Linux system through the HDMI display terminal</p></li></ol>~# '''reset_ssh.sh'''
<!-- -->
#
# Then enter the nmtui command in the command line to open the wifi connection interface
orangepi@orangepi:~$ '''nmtuiIf it still doesn't work, try to reset the system.'''</big>|}</ol><span id="ssh-remote-login-development-board-under-windows"></span>
<ol start="3" style="list-style-type: decimal;"><li>Enter the nmtui command to open the interface as shown below</li></ol>= SSH remote login development board under Windows ===
[[File:pi3b-img177.png|345x215px]]# First obtain the IP address of the development board# Under Windows, you can use MobaXterm to remotely log in to the development board, first create a new ssh session
<ol start="4" style="list-style-type: decimal;"><li>Select :a. Open '''Activate a connectSession''' and press Enter</li></ol>
[[File:pi3b-img178:b.png|349x216px]]Then select '''SSH''' in '''Session Setting'''
<ol start="5" style="list-style-type: decimal;"><li>:c. Then you can see all enter the IP address of the development board in the searched WIFI hotspots</li></ol>'''Remote host'''
<div class="figure">::d. Then enter the user name '''root''' or '''orangepi''' of the Linux system in '''Specify username'''
[[File:pi3b-img179:e.png|426x270px|16]] </div><ol start="6" style="list-style-type: decimal;"><li>Select the WIFI hotspot you want to connect to, then use the Tab key to position the cursor on Finally click '''ActivateOK''' and press Enter</li></ol>
<div class="figure">
::[[File:pi3b-img180img205.png|474x298px|17]]
</div>
<ol start="73" style="list-style-type: decimal;"><li>Then you will be prompted to enter a dialog box password. The default passwords for root and orangepi users are orangepi</li>{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''Note that when entering a the password will pop up, enter <span style="color:#FF0000">the specific content of the corresponding entered password in '''Passwordwill not be displayed on the screen</span>, please do not think that there is any fault, just press Enter after inputting.''' and press Enter to start connecting to WIFI</li></olbig>|}
<div class="figure">
[[File:pi3b-img181img206.png|480x308px|18]]
</div></ol><ol start="84" style="list-style-type: decimal;"><li>After successfully logging in to the system, the WIFI connection display is successful, a "*" will be displayed as shown in front of the connected WIFI namefigure below</li></ol>
[[File:pi3b-img207.png]]<div class/ol><span id="figurethe-method-of-uploading-files-to-the-linux-system-of-the-development-board"></span>
[[File:pi3b-img182.png|443x283px|C:\Users\orangepi\Desktop\用户手册插图\Zero3\未标题-9.jpg未标题-9]]== The method of uploading files to the Linux system of the development board ==
</div><ol startspan id="9" style="listhow-to-upload-files-to-the-development-board-linux-system-in-styleubuntu-type: decimal;pc"><li/span>You can view === How to upload files to the IP address of wifi through the '''ip addr show wlan0''' command</li></ol>development board Linux system in Ubuntu PC ===
orangepi@orangepi:~$ '''ip addr show wlan0'''<span id="how-to-upload-files-using-the-scp-command"></span>==== How to upload files using the scp command ====
11: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000# Use the scp command to upload files from the Ubuntu PC to the Linux system of the development board. The specific commands are as follows
link/ether 24:8c:d3a. '''file_path''':aa:76:bb brd ff:ff:ff:ff:ff:ffneed to be replaced with the path of the file to be uploaded
inet ::b. '''192.168.1.11orangepi'''/24 brd 192.168.1.255 scope global dynamic noprefixroute wlan0: 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
valid_lft 259069sec preferred_lft 259069sec::c. '''192.168.xx.xx''': It is the IP address of the development board, please modify it according to the actual situation
inet6 240e:3b7:3240:c4a0d. '''/home/orangepi''':c401:a445:5002:ccdd/64 scope global dynamic noprefixrouteThe path in the Linux system of the development board, which can also be modified to other paths
valid_lft 259071sec preferred_lft 172671sec inet6 fe80::42f1{| class="wikitable" style="width:6019800px;" |-| test@test:a80e~$ '''scp file_path orangepi@192.168.xx.xx:4c31/64 scope link noprefixroutehome/orangepi/'''|}
valid_lft forever preferred_lft forever<ol start="2" style="list-style-type: decimal;"><li>If you want to upload a folder, you need to add the -r parameter</li>
{| class="wikitable" style="width:800px;" |-| test@test:~$ '''scp <span style="color:#FF0000">-r</span> dir_path orangepi@192.168.xx.xx:/home/orangepi/'''|}</ol><ol start="103" style="list-style-type: decimal;"><li>Use the '''ping''' command to test the connectivity There are more usages of the wifi networkscp, and please use the '''ping''' following command can be interrupted through to view the shortcut key man manual</li>{| class="wikitable" style="width:800px;" |-| test@test:~$ '''Ctrl+Cman scp'''|}</liol><span id="how-to-upload-files-using-filezilla"></olspan>
orangepi@orangepi:~$ '''ping www.orangepi.org -I wlan0'''==== How to upload files using filezilla ====
PING www.orangepi.org (182.92.236.130) from 192.168.1.49 wlan0: 56(84) bytes of data.# First install filezilla in Ubuntu PC
64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq:{| class=1 ttl"wikitable" style=52 time=43.5 ms"width:800px;" |-| test@test:~$ '''sudo apt install -y filezilla'''|}
64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq<ol start="2 ttl" style=52 time=41.3 ms"list-style-type: decimal;"><li>Then use the following command to open filezilla</li>
64 bytes from 182.92.236.130 (182.92.236.130){| class="wikitable" style="width: icmp_seq800px;" |-| test@test:~$ '''filezilla'''|}</ol><ol start="3 ttl" style=52 time=44.9 ms"list-style-type: decimal;"><li>The interface after filezilla is opened is as follows, and the display under the remote site on the right is empty</li>
64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq<div class=4 ttl=52 time=45.6 ms"figure">
64 bytes from 182.92.236.130 (182.92.236.130)[[File: icmp_seq=5 ttl=52 time=48pi3b-img208.8 mspng]]
^C</div></ol><ol start="4" style="list-style-type: decimal;"><li>The method of connecting the development board is shown in the figure below</li>
--- www.orangepi.org ping statistics ---<div class="figure">
5 packets transmitted, 5 received, 0% packet loss, time 4006ms[[File:pi3b-img209.png]]
rtt min</avgdiv></max/mdev ol><ol start="5" style= 41.321/44.864/48.834"list-style-type: decimal;"><li>Then choose to '''save the password''', and then click '''OK'''</2.484 msli>
[[File:pi3b-img210.png]]</ol><span idol start="6" style="test-methodlist-ofstyle-desktop-imagetype: decimal;"><li>Then choose to always '''trust this host''', and then click '''OK'''</spanli>==== Test method of desktop image ====
# Click the network configuration icon in the upper right corner of the desktop (please do not connect the network cable when testing WIFI)<div class="figure">
[[File:pi3b-img183img211.png|377x166px]]
</div></ol><ol start="27" style="list-style-type: decimal;"><li>Click '''More networks''' in After the pop-up drop-down box to connection is successful, you can see all scanned WIFI hotspots, and then select the WIFI hotspot you want to connect to.directory structure of the development board Linux file system on the right side of the filezilla software</li></ol>
[[File:pi3b-img184.png|576x353px]]<div class="figure">
<ol start="3" style="list[[File:pi3b-style-type: decimal;"><li>Then enter the password of the WIFI hotspot, and then click '''Connect''' to start connecting to WIFI</li></ol>img212.png]]
[[File</div></ol><ol start="8" style="list-style-type:pi3b-img185decimal;"><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.png|320x163px]]</li>
<ol startdiv class="4figure" style="list-style-type: decimal;"><li>After connecting to WIFI, you can open the browser to check whether you can access the Internet. The entrance of the browser is shown in the figure below</li></ol>
[[File:pi3b-img186img213.png|576x308px]]
</div></ol><ol start="59" style="list-style-type: decimal;"><li>If After the upload is complete, you can open other web pages after opening go to the browser, it means that corresponding path in the Linux system of the development board to view the WIFI connection is normaluploaded file</li></ol>
[[File:pi3b<li>The method of uploading a folder is the same as that of uploading a file, so I won't go into details here</li></ol><span id="the-img187.png|576x222px]]method-of-uploading-files-from-windows-pc-to-the-linux-system-of-the-development-board"></span>
<span id="how-to-set-a-static-ip-address"></span>=== How The method of uploading files from Windows PC to set a static IP address the Linux system of the development board ===
'''Please do not set a static IP address by modifying the <span id="how-to-upload-files-using-filezilla-1"></etc/network/interfaces configuration file.'''span>==== How to upload files using filezilla ====
<span id="use-# First download the-nmtui-command-to-set-a-static-ip-address"></span>==== Use installation file of the nmtui command to set a static IP address ====Windows version of the filezilla software, the download link is as follows
# First run the ::{| class="wikitable" style="width:800px;" |-| '''nmtuihttps://filezilla-project.org/download.php?type=client''' command|}
orangepi@orangepi:~$ '''nmtui'''<div class="figure">
<ol start="2" style="list::[[File:pi3b-style-type: decimal;"><li>Then select '''Edit a connection''' and press Enter</li></ol>img214.png]]
[[File:pi3b-img188.png|227x247px]]</div><div class="figure">
<ol start="3" style="list::[[File:pi3b-style-type: decimal;"><li>Then select the network interface that needs to set a static IP address, for example, to set the static IP address of the '''Ethernet''' interface, select '''Wired connection 1'''img215.</li></ol>png]]
[[File</div><ol start="2" style="list-style-type:pi3bdecimal;"><li>The downloaded installation package is as follows, and then double-img189.png|310x149px]]click to install directly</li>
<ol start{| class="4wikitable" style="list-style-typewidth: decimal800px;"><li>Then select |-| '''EditFileZilla_Server_1.5.1_win64-setup.exe''' with the '''Tab''' key and press the Enter key</li></ol>|}
[[File:pi3b-img190.png|316x144px]]During the installation process, please select '''Decline''' on the following installation interface, and then select '''Next>'''
<ol startdiv class="5figure" style="list-style-type: decimal;"><li>Then use the Tab key to move the cursor to the '''<Automatic>''' position shown in the figure below to configure IPv4</li></ol>
[[File:pi3b-img191img216.png|575x240px]]
</div></ol><ol start="63" style="list-style-type: decimal;"><li>Then press EnterThe interface after filezilla is opened is as follows, select '''Manual''' with and the display under the up and down arrow keys, and press Enter to confirmremote site on the right is empty</li></ol>
[[File:pi3b-img192.png|576x237px]]<div class="figure">
<ol start="7" style="list[[File:pi3b-style-type: decimal;"><li>The display after selection is shown in the figure below</li></ol>img217.png]]
[[File</div></ol><ol start="4" style="list-style-type: decimal;"><li>The method of connecting the development board is shown in the figure below:pi3b-img193.png|575x240px]]</li>
<ol startdiv class="8figure" style="list-style-type: decimal;"><li>Then move the cursor to the '''<Show>'''</li></ol>
[[File:pi3b-img194img209.png|576x241px]]
</div></ol><ol start="95" style="list-style-type: decimal;"><li>Then press Enterchoose to '''save the password''', the following setting interface will pop up after enteringand then click '''OK'''</li></ol>
[[File:pi3b-img195.png|575x450px]]<div class="figure">
<ol start="10" style="list[[File:pi3b-style-type: decimal;"><li>Then you can set the IP address (Addresses), gateway (Gateway) and DNS server address in the position shown in the figure below (there are many other setting options in it, please explore by yourself),'''Please set it according to your specific needs, the value set in the figure below is just an example'''</li></ol>img218.png]]
[[File</div></ol><ol start="6" style="list-style-type:pi3b-img196.png|576x233px]]decimal;"><li>Then choose to always '''trust this host''', and then click '''OK'''</li>
<ol startdiv class="11figure" style="list-style-type: decimal;"><li>After setting, move the cursor to'''<OK>''' in the lower right corner, and press Enter to confirm</li></ol>
[[File:pi3b-img197img219.png|576x116px]]
</div></ol><ol start="127" style="list-style-type: decimal;"><li>Then click'''<Back>''' to return to After the connection is successful, you can see the directory structure of the development board Linux file system on the right side of the previous selection interfacefilezilla software</li></ol>
[[File:pi3b-img198.png|330x325px]]<div class="figure">
<ol start="13" style="list[[File:pi3b-style-type: decimal;"><li>Then select '''Activate a connection''', then move the cursor to'''<OK>''', and finally click Enter</li></ol>img220.png]]
[[File</div></ol><ol start="8" style="list-style-type:pi3b-img199decimal;"><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.png|331x248px]]</li>
<ol startdiv class="14figure" style="list-style-type: decimal;"><li>Then select the network interface that needs to be set, such as '''Wired connection 1''', then move the cursor to'''<Deactivate>''', and press Enter to disable '''Wired connection 1'''</li></ol>
[[File:pi3b-img200img221.png|576x224px]]
</div></ol><ol start="159" style="list-style-type: decimal;"><li>Then please do not move <p>After the cursorupload is complete, and then press you can go to the corresponding path in the Linux system of the Enter key development board to re-enable '''Wired connection 1''', so view the uploaded file</p></li><li><p>The method of uploading a folder is the same as that the static IP address set earlier will take effectof uploading a file</p></li></ol>
[[File:pi3b<span id="hdmi-img201.png|576x224px]]test"></span>
<ol start="16" style="list-style-type: decimal;"><li>Then you can exit nmtui through the'''<Back>''' and '''Quit''' buttons</li></ol>HDMI test ==
[[File:pi3b<span id="hdmi-img202.png|300x253px]] [[File:pi3bdisplay-img203.png|227x252px]]test"></span>=== HDMI display test ===
<ol start="17" style="list-style-type: decimal;"><li>Then through '''ip addr show eth0''', you can see that the IP address of the network port has changed # Use HDMI to the static IP address set earlier</li></ol>HDMI cable to connect Orange Pi development board and HDMI monitor
orangepi@orangepi:~$ '''ip addr show eth0''':[[File:pi3b-img10.png]]
3<ol start="2" style="list-style-type: eth0: <decimal;BROADCAST"><li>After starting the Linux system,MULTICASTif the HDMI monitor has image output,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000it means that the HDMI interface is in normal use</li>
link/ether 5e{| class="wikitable" style="background-color:ac#ffffdc;width:14:a5:92:b3 brd ff:ff:ff:ff:ff:ff800px;" |-| <big>'''Note that although many notebook computers have an HDMI interface, the HDMI interface of the notebook generally only has the output function, and does not have the function of HDMI in, that is to say, the HDMI output of other devices cannot be displayed on the notebook screen.'''
inet '''192When 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.168'''</big>|}{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''When the HDMI is not displayed, please check whether the HDMI cable is plugged in tightly.1After confirming that there is no problem with the connection, you can change a different screen and try to see if it is displayed.177'''</24 brd 192.168.1.255 scope global noprefixroute eth0big>|}</ol>
valid_lft forever preferred_lft forever<span id="hdmi-to-vga-display-test"></span>
inet6 241e:3b8:3240:c3a0:e269:8305:dc08:135e/64 scope global dynamic noprefixroute=== HDMI to VGA display test ===
valid_lft 259149sec preferred_lft 172749sec<ol style="list-style-type: decimal;"><li><p>First, you need to prepare the following accessories</p><ol style="list-style-type: lower-alpha;"><li>HDMI to VGA converter</li>
inet6 fe80[[File:pi3b-img222.png]]</ol><ol start="2" style="list-style-type:957d:bbbe:4928:3604lower-alpha;"><li>A VGA cable</64 scope link noprefixrouteli>
valid_lft forever preferred_lft forever[[File:pi3b-img223.png]]</ol><ol start="3" style="list-style-type: lower-alpha;"><li>A monitor or TV that supports VGA interface</li></ol></li></ol><ol start="2" style="list-style-type: decimal;"><li>HDMI to VGA display test as shown below</li>
<ol start="18" style="list[[File:pi3b-style-type: decimal;"><li>Then you can test the connectivity of the network to check whether the IP address is configured OK, and the '''ping''' command can be interrupted through the shortcut key '''Ctrl+C'''</li></ol>img224.png]]
orangepi@orangepi{| class="wikitable" style="background-color:#ffffdc;width:~$ 800px;" |-| <big>'''ping 192.168When 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.1So 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.47 -I eth0'''</big>|}</ol><span id="hdmi-resolution-setting-method"></span>
PING 192.168.1.47 (192.168.1.47) from 192.168.1.188 eth0: 56(84) bytes of data.=== HDMI resolution setting method ===
64 bytes from 192.168.1.47: icmp_seq=1 ttl=64 time=0.233 ms# First open '''Display''' in '''Settings'''
64 bytes from 192.168.1.47: icmp_seq=2 ttl=64 time=0:[[File:pi3b-img225.263 mspng]]
64 bytes from 192.168.1.47: icmp_seq<ol start=3 ttl"2" style=64 time=0.273 ms"list-style-type: decimal;"><li>Then you can see the current resolution of the system</li>
64 bytes from 192.168.1[[File:pi3b-img226.47: icmp_seqpng]]</ol><ol start=4 ttl"3" style=64 time=0.269 ms"list-style-type: decimal;"><li>Click the drop-down box of Resolution to see all resolutions currently supported by the monitor</li>
64 bytes from 192.168.1[[File:pi3b-img227.47: icmp_seqpng]]</ol><ol start=5 ttl"4" style=64 time=0.275 ms"list-style-type: decimal;"><li>Then select the resolution you want to set, and click Apply</li>
^C[[File:pi3b-img228.png]]</ol><ol start="5" style="list-style-type: decimal;"><li>After the new resolution is set, select '''Keep the configuration'''</li>
[[File:pi3b--- 192.168.1img229.47 ping statistics png]]</ol><span id="how-to-use-bluetooth"></span>
5 packets transmitted, 5 received, 0% packet loss, time 4042ms== How to use Bluetooth ==
rtt min<span id="test-method-of-desktop-image-1"></avg/max/mdev span>=== Test method of desktop image === 0.233/0.262/0.275/0.015 ms
<span id="use-# Click the-nmcli-command-to-set-a-static-ip-address"></span>==== Use Bluetooth icon in the nmcli command to set a static IP address ====upper right corner of the desktop.
<ol style="list-style-type: decimal;"><li><p>If you want to set the static IP address of the network port, please insert the network cable into the development board first. '''If you need to set the static IP address of WIFI, please connect the WIFI first, and then start to set the static IP address'''</p></li><li><p>Then use the '''nmcli con show''' command to view the name of the network device, as shown below</p><ol style="list-style-type: lower[[File:pi3b-alpha;"><li><p>'''orangepi''' is the name of the WIFI network interface (the names are not necessarily the same)</p></li><li><p>'''Wired connection 1''' is the name of the Ethernet interface</p></li></ol></li></ol>img230.png]]
orangepi@orangepi<ol start="2" style="list-style-type:~$ '''nmcli con show'''decimal;"><li>Then select the adapter</li>
NAME UUID TYPE DEVICE[[File:pi3b-img231.png]]</ol><ol start="3" style="list-style-type: decimal;"><li>If there is a prompt on the following interface, please select '''Yes'''</li>
[[File:pi3b-img232.png]]</ol><ol start="4" style="list-style-type: decimal;"><li>Then set '''orangepiVisibility Setting''' cfc4f922-ae48-46f1-84e1-2f19e9ec5e2a wifi wlan0as '''Always visible''' in the Bluetooth adapter settings interface, and then close it</li>
'''Wired connection 1''' 9db058b7[[File:pi3b-7701img233.png]]</ol><ol start="5" style="list-37b8style-9411-efc2ae8bfa30 ethernet eth0type: decimal;"><li>Then open the configuration interface of the Bluetooth device</li>
[[File:pi3b-img234.png]]</ol><ol start="36" style="list-style-type: decimal;"><li>Then enter Click '''Search''' to start scanning the following command, wheresurrounding Bluetooth device</li></ol>
[[File:pi3b-img235.png]]<blockquote/ol>a. '''"<ol start="7" style="list-style-type: decimal;Wired connection 1"''' means to set the static IP address of "><li>Then select the Ethernet port. If Bluetooth device you need want to connect to set , and then click the static IP address right button of the WIFI, please change it mouse to pop up the corresponding name of the WIFI network operation interface (you can get it through the for this Bluetooth device, select '''nmcli con showPair''' command)to start pairing, and the demonstration here is to pair with an Android phone</li>
b[[File:pi3b-img236. After png]]</ol><ol start="8" style="list-style-type: decimal;"><li>When pairing, the pairing confirmation box will pop up in the upper right corner of the desktop. Select '''ipv4.addresseConfirm''' is the static IP address to be setconfirm. At this time, which can be modified to the value you want mobile phone also needs to setbe confirmed</li>
c[[File:pi3b-img237. '''ipv4.gateway''' indicates the address of the gatewaypng]]</blockquoteol>orangepi@orangepi<ol start="9" style="list-style-type:~$ '''nmcli con mod "decimal;Wired connection 1" \'''"><li>After pairing with the mobile phone, you can choose the paired Bluetooth device, then right-click and select '''ipv4.addresses "192.168.1.110" \Send a File'''to start sending a picture to the phone</li>
'''ipv4[[File:pi3b-img238.gateway "png]]</ol><ol start="10" style="list-style-type: decimal;192.168.1.1" \'''"><li>The interface of the sending picture is shown below</li>
'''ipv4[[File:pi3b-img239.dns "8.8.8.8" \'''png]]</ol><span id="usb-interface-test"></span>
'''ipv4.method "manual"'''== USB interface test ==
<ol start{| class="4wikitable" style="listbackground-style-typecolor:#ffffdc;width: decimal800px;">|-| <libig>Then restart '''The USB interface can be connected to a USB hub to expand the Linux systemnumber of USB interfaces.'''</li></olbig>|}
orangepi@orangepi:~$ '''sudo reboot'''<span id="connect-the-usb-mouse-or-keyboard-test"></span>=== Connect the USB mouse or keyboard test ===
<ol start="5" style="list-style-type: decimal;"><li>Then re-enter # Insert the USB interface keyboard into the Linux system and use USB interface of the '''ip addr show eth0'''command Orange Pi development board# Connect Orange PI development board to see HDMI display# If the mouse or keyboard can operate normally, it means that the IP address has been set to USB interface is working normally (the mouse can only be used in the desktop version of the desired value</li></ol>system)
orangepi@orangepi:~$ '''ip addr show eth0'''<span id="connect-the-usb-storage-device-test"></span>
3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000=== Connect the USB storage device test ===
link/ether 5e:ae:14:a5:91:b3 brd ff:ff:ff:ff:ff:ff# First insert the U disk or USB mobile hard disk into the USB interface of the Orange Pi development board# Execute the following command, if you can see the output of sdX, it means that the U disk is recognized successfully
inet ::{| class="wikitable" style="width:800px;"|-|orangepi@orangepi:~$ '''192.168.cat /proc/partitions | grep "sd*"'''<br><span style="margin-right: 30px;">major </span><span style="margin-right: 40px;">minor </span><span style="margin-right: 30px;">#blocks</span><span style="margin-right: 50px;">name</span><br><span style="margin-right: 70px;">8</span><span style="margin-right: 60px;">0</span><span style="margin-right: 50px;">30044160 </span><span style="margin-right: 50px;color:#FF0000">'''sda'''</span><br><span style="margin-right: 70px;">8</span><span style="margin-right: 60px;">1.110</span><span style="margin-right: 50px;">30043119 </span><span style="margin-right: 50px;color:#FF0000">'''sda1'''</32 brd 192.168.1.110 scope global noprefixroute eth0span><br>|}
valid_lft forever preferred_lft forever<ol start="3" style="list-style-type: decimal;"><li>Use the mount command to mount the U disk into '''/mnt''', and then you can view the file in the U disk</li>
inet6 240e{| class="wikitable" style="width:3b7800px;" |-| orangepi@orangepi:3240:c3a0:97de:1d01:b290:fe3a~$ '''sudo mount /dev/sda1 /mnt/64 scope global dynamic noprefixroute'''
valid_lft 259183sec preferred_lft 172783secorangepi@orangepi:~$ '''ls /mnt/'''
inet6 fe80test.txt|}</ol><ol start="4" style="list-style-type:decimal;"><li>After the mounting, you can view the capacity usage and mount point of the U disk through the '''df -h''' command</li>{| class="wikitable" style="width:3312800px;" |-|orangepi@orangepi:861a:a589:d3c/64 scope link noprefixroute~$ '''df -h | grep "sd"'''
valid_lft forever preferred_lft forever/dev/sda1 29G 208K 29G 1% /mnt|}</ol><span id="usb-wireless-network-card-test"></span>
<span id="ssh-remote-login-development-board"></span>== SSH remote login development board USB wireless network card test ===
The currently '''Linux systems enable ssh remote login tested''' USB wireless network cards are shown below. Please test it by default and allow the root user to log in to the systemyourself for other models of USB wireless network cards. Before logging in with sshIf you cannot use it, you first need to ensure that transplant the Ethernet or wifi corresponding USB wireless network is connected, and then use the ip addr command or check the router to obtain the IP address of the development board.'''card driver
<span id{| class="sshwikitable" style="width:800px;text-remotealign: center;"|-login| No.| Model||-development-board-under-ubuntu"></span>=== SSH remote login development board under Ubuntu ===| 1| RTL8723BU# Obtain the IP address of the development board# Then you can remotely log in to the Linux system through the ssh commandSupport 2.4G WIFI+BT4.0
test@test:~$ '''ssh | [[mailtoFile:root@192.168.1.36 root@192.168.1pi3b-img240.png]]xxx''' (Need to be replaced with the IP address of the development board)|-| 2| RTL8811
root@192Support 2.168.1.xx's password: (Enter the password here, the default password is orangepi)4G +5G WIFI
'''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| [[File:pi3b-img241.'''png]]|-| 3| RTL8821CU
'''If you are prompted to refuse the connection, as long as you are using the image provided by Orange Pi, please do not suspect that the password orangepi is wrong, but look for other reasonsSupport 2.'''4G +5G WIFI
<ol start="3" style="list-style-type: decimal;"><li>After successfully logging in to the system, the display is as shown in the figure below</li></ol>Support BT 4.2
|
<div class="figure">
[[File:pi3b-img204img242.png|405x207px|L467QDF65C(YR79U]TH[TND]]
</div>
'''If ssh cannot log in to the Linux system normally, please first check whether the IP address of the development board can be pinged. If the ping is ok, you can log in to the Linux system through the serial port or HDMI display and then enter the following command on the development board and try again. Is it possible to connect:'''|}
root@orangepi:~# '''reset_ssh.sh'''<span id="rtl8723bu-test"></span>==== RTL8723BU test ====
'''If it still doesn't work# First insert the RTL8723BU wireless network card module into the USB interface of the development board# Then the Linux system will automatically load the RTL8723BU bluetooth and WIFI-related kernel modules, through the lsmod command, try to reset you can see that the system.'''following kernel modules have been automatically loaded
::{| class="wikitable" style="width:800px;" |-|<p>orangepi@orangepi:~$ '''lsmod'''</p><span idstyle="sshmargin-remoteright: 100px;">Module </span><span style="margin-loginright: 50px;">Size </span><span style="margin-developmentright: 45px;">Used by</span><br><span style="margin-boardright: 100px;">rfcomm </span><span style="margin-underright: 50px;">57344</span><span style="margin-windowsright: 50px;">16</span><br><span style="margin-right: 95px;">rtl8xxxu </span><span style="margin-right: 50px;">106496</span><span style= SSH remote login development board under Windows "margin-right: 30px;">0</span><br><span style="margin-right: 90px;">rtk_btusb </span><span style="margin-right: 50px;">61440</span><span style="margin-right: 30px;">0</span><br>|}
# First obtain <ol start="3" style="list-style-type: decimal;"><li>Through the IP address dmesg command, you can see the loading information of the development boardRTL8723BU module</li>
2) Under Windows, you can use MobaXterm to remotely log in to the development board, first create a new ssh session{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''dmesg'''
a. Open '''Session'''.....
b[ 83. Then select '''SSH''' in '''Session Setting'''438901] usb 2-1: new high-speed USB device number 2 using ehci-platform
c[ 83. Then enter the IP address of the development board in the '''Remote host'''588375] usb 2-1: New USB device found, idVendor=0bda, idProduct=b720, bcdDevice= 2.00
d[ 83. Then enter the user name '''root''' or '''orangepi''' of the Linux system in '''Specify username'''588403] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
e[ 83. Finally click '''OK'''588422] usb 2-1: Product: 802.11n WLAN Adapter
<div class="figure">[ 83.588443] usb 2-1: Manufacturer: Realtek
[[File:pi3b-img20583.png|553x280px|14]588460]usb 2-1: SerialNumber: 00e04c000001
</div><ol start[ 83.601974] Bluetooth: hci0: RTL: examining hci_ver=06 hci_rev=000b lmp_ver="2" style06 lmp_subver="list-style-type: decimal;"><li></li><li>Then you will be prompted to enter a password. The default passwords for root and orangepi users are orangepi</li></ol>8723
'''Note that when entering the password, the specific content of the entered password will not be displayed on the screen, please do not think that there is any fault, just press Enter after inputting[ 83.'''603894] Bluetooth: hci0: RTL: rom_version status=0 version=1
<div class="figure">[ 83.603920] Bluetooth: hci0: RTL: loading rtl_bt/rtl8723b_fw.bin
[[File83.610108] Bluetooth: hci0:pi3b-img206.png|578x150px|CRTL:\Users\orangepi\Desktop\用户手册插图\pi 3b\just press Enter after inputting..jpgjust press Enter after inputtingloading rtl_bt/rtl8723b_config.]]bin
</div><ol start="4" style="list-style-type[ 83.611274] Bluetooth: decimal;"><li>After successfully logging in to the systemhci0: RTL: cfg_sz 68, the display is as shown in the figure below</li></ol>total sz 22564
[[File83.658494] rtk_btusb:pi3bRealtek Bluetooth USB driver ver 3.1.6d45ddf.20220519-img207.png|576x334px]]142432
<span id="the-method-of-uploading-files-to-the-linux-system-of-the-development-board"></span>[ 83.658651] usbcore: registered new interface driver rtk_btusb
== The method of uploading files to the Linux system of the development board ==[ 83.667124] usb 2-1: This Realtek USB WiFi dongle (0x0bda:0xb720) is untested!
<span id="how[ 83.667137] usb 2-1: Please report results to-upload-files-to-the-development-board-linux-system-in-ubuntu-pc"></span>=== How to upload files to the development board Linux system in Ubuntu PC ===Jes.Sorensen@gmail.com
<span id="how[ 83.890140] usb 2-to-upload-files-using-the-scp-command"></span>==== How to upload files using the scp command ====1: Vendor: Realtek
# Use the scp command to upload files from the Ubuntu PC to the Linux system of the development board[ 83. The specific commands are as follows890153] usb 2-1: Product: 802.11n WLAN Adapter
<blockquote>a[ 83. '''file_path'''890159] usb 2-1: rtl8723bu_parse_efuse: dumping efuse (0x200 bytes): need to be replaced with the path of the file to be uploaded
b. '''orangepi''': It is the user name of the Linux system of the development board, and it can also be replaced with other ones, such as root.....
c[ 83. '''192.168.xx.xx'''890412] usb 2-1: It is the IP address of the development boardRTL8723BU rev E (SMIC) 1T1R, TX queues 3, WiFi=1, BT=1, GPS=0, please modify it according to the actual situationHI PA=0
d[ 83. '''/home/orangepi'''890417] usb 2-1: The path in the Linux system of the development board, which can also be modified to other paths</blockquote>test@testRTL8723BU MAC:~$ '''scp file_path orangepi@192.168.xx.xx00:13:ef:f4:58:/home/orangepi/'''ae
<ol start="[ 83.890421] usb 2" style="list-style-type1: rtl8xxxu: decimal;"><li>If you want to upload a folder, you need to add the -r parameter</li><Loading firmware rtlwifi/ol>rtl8723bu_nic.bin
test@test[ 83.895289] usb 2-1:~$ '''scp -r dir_path orangepi@192.168Firmware revision 35.xx.xx:/home/orangepi/'''0 (signature 0x5301)
<ol start="3" style="list-style-type[ 84.050893] Bluetooth: decimal;"><li>There are more usages of scp, please use the following command to view the man manual</li></ol>hci0: RTL: fw version 0x0e2f9f73
test@test[ 84.266905] Bluetooth:~$ '''man scp'''RFCOMM TTY layer initialized
<span id="how-to-upload-files-using-filezilla"></span>==== How to upload files using filezilla ====[ 84.266949] Bluetooth: RFCOMM socket layer initialized
# First install filezilla in Ubuntu PC[ 84.266999] Bluetooth: RFCOMM ver 1.11
test@test[ 84.884270] usbcore:~$ '''sudo apt install -y filezilla'''registered new interface driver rtl8xxxu
[ 84.912046] rtl8xxxu 2-1:1.2 wlx0013eff458ae: renamed from wlan0|}</ol><ol start="24" style="list-style-type: decimal;"><li>Then use you can see the RTL8723BU WIFI device node through the following '''sudo ifconfig''' command . Please refer to open filezilla[[Orange Pi 3B#WIFI connection test|'''the WIFI connection test chapter''']] for WIFI connection and testing methods</li></ol>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo ifconfig wlx0013eff458ae'''
test@testwlx0013eff458ae:~$ '''filezilla'''flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
<ol start="3" style="list-style-type: decimal;"><li>The interface after filezilla is opened is as follows, and the display under the remote site on the right is empty</li></ol>:ether 00:13:ef:f4:58:ae txqueuelen 1000 (Ethernet)
<div class="figure">::RX packets 0 bytes 0 (0.0 B)
[[File:pi3b-img208.png|576x453px|截图 2022-12-03 19-04-40]]:RX errors 0 dropped 0 overruns 0 frame 0
</div><ol start="4" style="list-style-type: decimal;"><li>The method of connecting the development board is shown in the figure below</li></ol>:TX packets 0 bytes 0 (0.0 B)
<div class="figure">::TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 [[File:pi3b-img209.png|575x128px|图片565]]}</divol>
<ol start="5" style="list-style-type: decimal;">
<li>Then choose to you can see the USB Bluetooth device through the '''save the passwordhciconfig''', and then click command</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''OKsudo apt update && sudo apt install bluez'''</li></ol>
[[Fileorangepi@orangepi:pi3b-img210.png|249x181px]]~$ '''hciconfig'''
hci0: Type: Primary Bus: '''<ol start="6" span style="list-style-typecolor: decimal;#FF0000">USB<li/span>Then choose to always '''trust this host''', and then click '''OK'''</li></ol>
<div class="figure">::BD Address: 00:13:EF:F4:58:AE ACL MTU: 820:8 SCO MTU: 255:16
[[File:pi3b-img211.png|278x150px|IMG_256]]:DOWN
</div><ol start="7" style="list-style-type: decimal;"><li>After the connection is successful, you can see the directory structure of the development board Linux file system on the right side of the filezilla software</li></ol>:RX bytes:1252 acl:0 sco:0 events:125 errors:0
::TX bytes:23307 acl:0 sco:0 commands:125 errors:0|}<div class/ol><ol start="6" style="figurelist-style-type: decimal;"><li>You can also see the Bluetooth icon on the desktop. At this time, Bluetooth has not been opened, so a red '''<span style="color:#FF0000">x</span>''' will be displayed</li>
[[File:pi3b-img212img243.png|533x330px|IMG_256]]</ol><ol start="7" style="list-style-type: decimal;"><li>Click '''Turn Bluetooth On''' to turn on Bluetooth</li>
[[File:pi3b-img244.png]]</divol>
<ol start="8" style="list-style-type: decimal;">
<li>Then select the path to be uploaded to the development board The display after turning 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.Bluetooth is as follows</li></ol>
[[File:pi3b-img245.png]]<div class/ol><ol start="9" style="figurelist-style-type: decimal;"><li>Please refer to the [[Orange Pi 3B#How to use Bluetooth|'''Bluetooth use method''']] for Bluetooth test method, so I won't go into details here.</li></ol>
[[File:pi3b<span id="rtl8811-img213.png|485x380px|IMG_256]]test"></span>
</div>9) After the upload is complete, you can go to the corresponding path in the Linux system of the development board to view the uploaded file==== RTL8811 test ====
10) The method # First insert the RTL8811 wireless network card module into the USB interface of uploading a folder is the same as development board.# Then the Linux system will automatically load the kernel modules related to RTL8811 WIFI, and you can see that of uploading a file, so I won’t go into details herethe following kernel modules have been automatically loaded through the lsmod command
::{| class="wikitable" style="width:800px;" |-|<p>orangepi@orangepi:~$ '''lsmod'''</p><span idstyle="themargin-methodright: 100px;">Module </span><span style="margin-ofright: 50px;">Size </span><span style="margin-uploadingright: 45px;">Used by</span><br><span style="margin-filesright: 100px;">8821cu </span><span style="margin-fromright: 50px;">1839104 </span><span style="margin-windows-pc-to-the-linux-system-of-the-development-boardright: 50px;">0</span><br>=== The method of uploading files from Windows PC to the Linux system of the development board ===|}
<span idol start="how-to-upload-files-using3" style="list-filezillastyle-1type: decimal;"><li>Through the dmesg command, you can see the loading information of the RTL8811 module</spanli>{| class="wikitable" style=== How to upload files using filezilla ===="width:800px;" |-| orangepi@orangepi:~$ '''dmesg'''
# First download the installation file of the Windows version of the filezilla software, the download link is as follows[ 118.618194] usb 2-1: new high-speed USB device number 2 using ehci-platform
https[ 118.767152] usb 2-1://filezilla-project.org/downloadNew USB device found, idVendor=0bda, idProduct=c811, bcdDevice= 2.php?type=client00
<div class[ 118.767181] usb 2-1: New USB device strings: Mfr="figure">1, Product=2, SerialNumber=3
[[File118.767199] usb 2-1:pi3b-img214.png|472x171px|CProduct:\Users\orangepi\Desktop\用户手册插图\Pi5 Plus\未标题-15802.jpg未标题-15]]11ac NIC
</div><div class="figure">[ 118.767219] usb 2-1: Manufacturer: Realtek
[[File:pi3b-img215118.png|393x283px|图片5552]767235]usb 2-1: SerialNumber: 123456
</div><ol start="2" style="list-style-type[ 119.500530] usbcore: decimal;"><li>The downloaded installation package is as follows, and then double-click to install directly</li></ol>registered new interface driver rtl8821cu
[ 119.525498] rtl8821cu 2-1:1.0 wlx1cbfced9d260: renamed from wlan0|}</ol><ol start="4" style="list-style-type: decimal;"><li>Then you can see the WiFi device node through the '''FileZilla_Server_1.5.1_win64-setup.exesudo ifconfig''' During command. Please refer to the installation process, please select [[Orange Pi 3B#WIFI connection test|'''DeclineWiFi connection test chapter''' on the following installation interface, ]] for WIFI connection and then select testing methods. I won't go into details her</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''Next>sudo ifconfig wlx1cbfced9d260'''
<div classwlx1cbfced9d260: flags="figure">4099<UP,BROADCAST,MULTICAST> mtu 1500
[[File:pi3b-img216.png|319x251px|IMG_256]]:ether 1c:bf:ce:d9:d2:60 txqueuelen 1000 (Ethernet)
</div><ol start="3" style="list-style-type: decimal;"><li>The interface after filezilla is opened is as follows, and the display under the remote site on the right is empty</li></ol>:RX packets 0 bytes 0 (0.0 B)
<div class="figure">::RX errors 0 dropped 0 overruns 0 frame 0
[[File:pi3b-img217:TX packets 0 bytes 0 (0.png|451x357px|IMG_256]]0 B)
::TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0|}</divol><ol startspan id="4" style="listrtl8821cu-style-type: decimal;test"><li>The method of connecting the development board is shown in the figure below:</li></olspan>
<div class="figure">=== RTL8821CU test ====
[[File:pi3b-img209.png|575x128px|图片565]]# First insert the rtl8821cu wireless network card module into the USB interface of the development board# Then use the '''lsusb''' command to see the device information of the rtl8821cu usb wifi module, please make sure that the USB module is not in Driver CDROM Mode
</div><ol start::{| class="5wikitable" style="list-style-typewidth: decimal800px;"><li>Then choose to |-| orangepi@orangepi:~$ '''save the password''', and then click '''OKlsusb | grep "Realtek"'''</li></ol>
<div Bus 002 Device 003: ID 0bda:c820 Realtek Semiconductor Corp. 802.11ac NIC|}::{| class="figurewikitable">style="background-color:#ffffdc;width:800px;" |-| orangepi@orangepi:~$ '''lsusb | grep "Realtek"'''
[[FileBus 002 Device 002:pi3b-img218ID 0bda:1a2b Realtek Semiconductor Corp.png|207x146px|IMG_256]] RTL8188GU 802.11n WLAN Adapter ('''<span style="color:blue">Driver CDROM Mode</span>''')
</div>
<ol start="6" style="list-style-type: decimal;">
<li>Then choose to always '''trust this host''', and then click '''OK'''</li></ol>
<div class="figure"big>'''If the USB WIFI module seen by the lsusb command is in Driver CDROM Mode, please unplug the USB WIFI module again. If not, please manually execute the following command to switch to the next mode:'''</big>
[[File:pi3b-img219.png|221x109px|IMG_256]]
</div><ol start="7" style="listorangepi@orangepi:~$ '''sudo usb_modeswitch -KW -stylev 0bda -type: decimal;">p 1a2b'''<li>After the connection is successful, you can see the directory structure of the development board Linux file system on the right side of the filezilla software</li></ol>|}
<div ol start="3" style="list-style-type: decimal;"><li>The Linux system will automatically load the rtl8821cu bluetooth and wifi-related kernel modules, through the lsmod command, you can see that the following kernel modules have been automatically loaded</li>{| class="figurewikitable" style="width:800px;" |-|<p>orangepi@orangepi:~$ '''lsmod'''</p><span style="margin-right: 100px;">Module </span><span style="margin-right: 50px;">Size </span><span style="margin-right: 45px;">Used by</span><br><span style="margin-right: 100px;">8821cu </span><span style="margin-right: 50px;">1839104 </span><span style="margin-right: 50px;">0</span><br><span style="margin-right: 90px;">rtk_btusb </span><span style="margin-right: 50px;">61440</span><span style="margin-right: 30px;">0</span><br>|}</ol><ol start="4" style="list-style-type: decimal;"><li>Through the dmesg command, you can see the loading information of the rtl8821cu module</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''dmesg'''
[[File:pi3b-img220.png|446x329px|图片3]].....
</div><ol start="8" style="list[ 57.083693] usb 2-style1: new high-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>speed USB device number 2 using ehci-platform
<div class[ 57.231888] usb 2-1: New USB device found, idVendor="figure">0bda, idProduct=1a2b, bcdDevice= 2.00
[[File:pi3b-img22157.png|501x369px|IMG_256]231916]usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
</div><ol start="9" style="list[ 57.231937] usb 2-style-type1: Product: decimal;"><li><p>After the upload is complete, you can go to the corresponding path in the Linux system of the development board to view the uploaded file</p></li><li><p>The method of uploading a folder is the same as that of uploading a file</p></li></ol>DISK
<span id="hdmi[ 57.231956] usb 2-test"></span>== HDMI test ==1: Manufacturer: Realtek
<span id="hdmi[ 57.242594] usb-displaystorage 2-test"></span>=== HDMI display test ===1:1.0: USB Mass Storage device detected
# Use HDMI to HDMI cable to connect Orange Pi development board and HDMI monitor[ 57.245674] scsi host0: usb-storage 2-1:1.0
[[File:pi3b-img1058.png|199x129px]069172]usb 2-1: USB disconnect, device number 2
<ol start="[ 58.440025] usb 2" style="list-style1: new high-type: decimal;"><li>After starting the Linux system, if the HDMI monitor has image output, it means that the HDMI interface is in normal use</li></ol>speed USB device number 3 using ehci-platform
'''Note that although many notebook computers have an HDMI interface, the HDMI interface of the notebook generally only has the output function[ 58.587819] usb 2-1: New USB device found, and does not have the function of HDMI inidVendor=0bda, that is to sayidProduct=c820, the HDMI output of other devices cannot be displayed on the notebook screenbcdDevice= 2.'''00
'''When you want to connect the HDMI of the development board to the HDMI port of the laptop[ 58.587827] usb 2-1: New USB device strings: Mfr=1, please make sure that your laptop supports the HDMI in function.'''Product=2, SerialNumber=3
'''When the HDMI is not displayed, please check whether the HDMI cable is plugged in tightly[ 58. After confirming that there is no problem with the connection, you can change a different screen and try to see if it is displayed587833] usb 2-1: Product: 802.'''11ac NIC
<span id="hdmi[ 58.587838] usb 2-to-vga-display-test"></span>=== HDMI to VGA display test ===1: Manufacturer: Realtek
<ol style="list[ 58.587844] usb 2-style-type1: decimal;"><li><p>First, you need to prepare the following accessories</p><ol style="list-style-typeSerialNumber: lower-alpha;"><li>HDMI to VGA converter</li></ol></li></ol>123456
[[File58.610463] rtk_btusb:pi3bRealtek Bluetooth USB driver ver 3.1.6d45ddf.20220519-img222.png|155x104px]]142432
<ol start="2" style="list-style-type[ 58.610656] usbcore: lower-alpha;"><li>A VGA cable</li></ol>registered new interface driver rtk_btusb
[[File:pi3b-img22358.png|148x133px]634631]Bluetooth: hci0: RTL: examining hci_ver=08 hci_rev=000c lmp_ver=08 lmp_subver=8821
<ol start[ 58.636729] Bluetooth: hci0: RTL: rom_version status="3" style0 version="list-style-type: lower-alpha;"><li>A monitor or TV that supports VGA interface</li></ol>1
<!-- --><ol start="2" style="list-style-type[ 58.636740] Bluetooth: decimal;"><li>HDMI to VGA display test as shown below</li><hci0: RTL: loading rtl_bt/ol>rtl8821c_fw.bin
[[File58.664190] Bluetooth: hci0: RTL:pi3b-img224loading rtl_bt/rtl8821c_config.png|576x339px]]bin
'''When using HDMI to VGA display, the development board and the Linux system of the development board do not need to make any settings, only the HDMI interface of the development board can display normally[ 58. So if there is a problem with the test, please check whether there is a problem with the HDMI to VGA converter664746] Bluetooth: hci0: RTL: cfg_sz 10, VGA cable and monitor.'''total sz 31990
<span id="hdmi-resolution-setting-method"></span>=== HDMI resolution setting method ===[ 59.122471] Bluetooth: hci0: RTL: fw version 0x829a7644
# First open '''Display''' in '''Settings'''[ 59.265513] usbcore: registered new interface driver rtl8821cu
[[File59.280119] rtl8821cu 2-1:pi3b-img2251.png2 wlx90de80521825: renamed from wlan0|576x370px]]}</ol>
<ol start="25" style="list-style-type: decimal;"><li>Then you can see the current resolution of RTL8821CU WiFi device node through the system'''sudo ifconfig''' command. Please refer to the [[Orange Pi 3B#WIFI connection test|'''WiFi connection test chapter''']] for WIFI connection and testing methods.</li></ol>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo ifconfig wlx90de80521825'''
[[Filewlx90de80521825:pi3b-img226.png|382x254px]]flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
<ol start="3" style="list-style-type: decimal;"><li>Click the drop-down box of Resolution to see all resolutions currently supported by the monitor</li></ol>:ether 00:13:ef:f4:58:ae txqueuelen 1000 (Ethernet)
[[File:pi3b-img227:RX packets 0 bytes 0 (0.png|415x274px]]0 B)
<ol start="4" style="list-style-type: decimal;"><li>Then select the resolution you want to set, and click Apply</li></ol>:RX errors 0 dropped 0 overruns 0 frame 0
[[File:pi3b-img228:TX packets 0 bytes 0 (0.png|415x277px]]0 B)
::TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0|}</ol><ol start="56" style="list-style-type: decimal;"><li>After Then you can see the USB Bluetooth device through the new resolution is set, select '''Keep the configurationhciconfig'''command</li></ol>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo apt-get update && sudo apt-get install -y bluez'''
[[Fileorangepi@orangepi:pi3b-img229.png|447x243px]]~$ '''hciconfig'''
hci0: Type: Primary Bus: '''<span idstyle="how-to-use-bluetoothcolor:#FF0000">USB</span>== How to use Bluetooth =='''
<span id="test-method-of-desktop-image-1"></span>=== Test method of desktop image ===::BD Address: 00:13:EF:F4:58:AE ACL MTU: 820:8 SCO MTU: 255:16
# Click the Bluetooth icon in the upper right corner of the desktop.::DOWN
[[File:pi3b-img230.png|330x128px]]:RX bytes:1252 acl:0 sco:0 events:125 errors:0
::TX bytes:23307 acl:0 sco:0 commands:125 errors:0|}</ol><ol start="27" style="list-style-type: decimal;"><li>Then select Bluetooth icons can also be seen on the adapterdesktop. At this time, Bluetooth has not been turned on, so a red '''<span style="color:#FF0000">x</lispan>''' will be displayed</olli>
[[File:pi3b-img231img243.png|375x165px]]</ol><ol start="8" style="list-style-type: decimal;"><li>Click '''Turn Bluetooth On''' to turn on Bluetooth</li>
[[File:pi3b-img244.png]]</ol><ol start="39" style="list-style-type: decimal;"><li>If there The display after turning on Bluetooth is a prompt below, select '''Yes'''as follows</li></ol>
[[File:pi3b-img232img245.png]]</ol><ol start="10" style="list-style-type: decimal;"><li>Please refer to the [[Orange Pi 3B#How to use Bluetooth|248x85px'''Bluetooth use chapter''']]for the Bluetooth test method. I won't go into details here</li></ol>
<ol startspan id="4" style="listusb-stylecamera-type: decimal;test"><li>Then set '''Visibility Setting''' as '''Always visible''' in the Bluetooth adapter settings interface, and then close it</li></olspan>
[[File:pi3b-img233.png|243x229px]]=== USB Camera Test ===
<ol start="5" style="list-style-type: decimal;"><li>Then open # First, you need to prepare a USB camera that supports UVC protocol as shown in the configuration interface figure below or similar, and then insert the USB camera into the USB port of the Bluetooth device</li></ol>Orange Pi development board
::[[File:pi3b-img234img13.png|438x179px]]
<ol start="62" style="list-style-type: decimal;"><li>Click You can see that the USB camera's device node information is/dev/video0 through the v4l2-ctl command</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''Searchv4l2-ctl --list-devices''' to start scanning the surrounding Bluetooth device</li></ol>
[[FileQ8 HD Webcam:pi3bQ8 HD Webcam ('''<span style="color:#FF0000">usb</span>'''-img235fc880000.png|322x217px]]usb-1):
:'''<ol start="7" span style="list-style-typecolor: decimal;blue">/dev/video0<li/span>Then select the Bluetooth device you want to connect. If you right -click the mouse, you will pop up the operating interface of this Bluetooth device. Select '''Pair''' to start pairing. Here, it is demonstrated with the Android phone</li></ol>
[[File:pi3b-img236.png|338x263px]]/dev/video1
<ol start:/dev/media0|}{| class="8wikitable" style="listbackground-style-typecolor:#ffffdc;width: decimal800px;">|-| <libig>When pairing, '''Note that the pairing confirmation box will pop up l in v4l2 is a lowercase letter l, not the upper right corner of the desktopnumber 1. Select '''Confirm''' to confirm. At this time, the mobile phone also needs to be confirmed</li></ol>
[[File:pi3b-img237.png|417x152px]]
'''In addition, the serial number of the video is not necessarily video0, please refer to what you actually see.'''</big>|}</ol><ol start="93" style="list-style-type: decimal;"><li>After pairing with In the mobile phonedesktop system, you Cheese can choose be used to directly open the paired Bluetooth device, then right -click and select '''Send a File''' to start sending a picture to USB camera. The method of opening Cheese is shown in the phonefigure below:</li></ol>
[[File:pi3b-img238img246.png|439x259px]]
<ol start="10" style="list-style-type: decimal;"><li>The interface of after Cheese turns on the sending picture USB camera is shown in the figure below</li></ol>:
[[File:pi3b-img239img247.png|437x253px]]</ol><span idol start="usb4" style="list-interfacestyle-type: decimal;"><li><p>How to testthe USB camera using fswebcam</p><ol style="list-style-type: lower-alpha;"><li>Install fswebcam</spanli>{| class="wikitable" style= USB interface test =="width:800px;" |-| orangepi@orangepi:~$ '''sudo''' '''apt update'''
orangepi@orangepi:~$ '''sudo apt-get install -y fswebcam'''|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li><p>After installing fswebcam, you can use the following command to take pictures</p><ol style="list-style-type: none;"><li><p>a) -d The option is used to specify the device node of the USB interface can connect USB Hub camera</p></li><li><p>b) --no-banner Used to remove the watermark of photos</p></li><li><p>c) -r The option is used to specify the resolution of the photo</p></li><li><p>d) -S The option is used to expand set the number of USB interfacesprevious frames to skip</p></li><li><p>e) ./image.jpg The name and path for setting the generated photos</p></li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo''' '''fswebcam -d /dev/video0 \'''
'''--no-banner -r 1280x720 -S 5 ./image.jpg'''|}</ol></li><span id/ol><ol start="3" style="connect-the-usb-mouselist-orstyle-keyboardtype: lower-testalpha;"><li>In the desktop version of the Linux system, you can directly view the captured pictures through the HDMI display</spanli>{| class="wikitable" style== Connect "width:800px;" |-| orangepi@orangepi:~$ '''scp image.jpg''' [mailto:test@192.168.1.55:/home/test test@192.168.1.55:/home/test] '''(Modify the IP address and path according to the USB mouse or keyboard test actual situation)'''|}</ol><ol start="4" style="list-style-type: lower-alpha;"><li>In the desktop version of the Linux system, you can directly view the captured pictures through the HDMI display</li></ol></li></ol><span id="audio-test"></span>
# Insert the keyboard of the USB interface into the USB interface of Orange PI development board# Connect Orange PI development board to HDMI display# If the mouse or keyboard can normal operating systems, the USB interface is used normally (the mouse can only be used in the system of the desktop version)== Audio Test ==
<span id="connecttest-theaudio-methods-usbin-storagethe-devicedesktop-testsystem"></span>=== Connect Test audio methods in the USB storage device test desktop system ===
# First insert open the U disk or USB mobile hard disk into the USB interface of Orange PI development board# Execute the following command. If you can see the output of sdX, the U disk recognition is successfulfile manager
orangepi@orangepi:~$ '''cat /proc/partitions | grep "sd*"''':[[File:pi3b-img248.png]]
major minor #blocks name<ol start="2" style="list-style-type: decimal;"><li>Then find the following file (if there is no audio file in the system, you can upload a audio file to the system by yourself)</li>
8 0 30044160 '''sda'''<div class="figure">
8 1 30043119 '''sda1'''[[File:pi3b-img249.png]]
</div></ol>
<ol start="3" style="list-style-type: decimal;">
<li>Use Then select the mount command to mount the U disk into '''/mnt'''audio.wav file, right click and then you can view the file in the U diskselect open with vlc to start playing</li></ol>
orangepi@orangepi[[File:~$ '''sudo mount pi3b-img250.png]]</devol><ol start="4" style="list-style-type: decimal;"><li><p>Methods to switch different audio equipment such as HDMI playback and headset playback</sda1 /mntp><ol style="list-style-type: lower-alpha;"><li>First open the volume control interface</'''li>
orangepi@orangepi[[File:~$ pi3b-img251.png]]</ol><ol start="2" style="list-style-type: lower-alpha;"><li>When playing audio, the audio equipment options that play software can be used will be displayed in '''ls /mnt/Playback'''. As shown in the figure below, which audio equipment you need to play here can be set.</li>
test[[File:pi3b-img252.txtpng]]</ol></li></ol><span id="how-to-play-audio-with-commands"></span>
<ol start="4" style="list-style-type: decimal;"><li>After the mounting, you can view the capacity of the U disk through the '''df -h''' command and the mounting point</li></ol>= How to play audio with commands ===
orangepi@orangepi:~$ '''df <span id="headphone-h | grep "sd"'''interface-play-audio-test"></span>==== Headphone interface play audio test ====
/dev/sda1 29G 208K 29G 1% /mnt# First insert the headset into the headphone jack of the development board
<span id="usb::[[File:pi3b-wireless-network-card-test"></span>=== USB wireless network card test ===img253.png]]
The currently <ol start="2" style="list-style-type: decimal;"><li>Then you can check the sound card device supported by the Linux system through the '''testedaplay -l''' USB wireless network cards are shown command. From the output below. Please test it by yourself for other models of USB wireless network cards. If you cannot use , itcan be seen that '''card 0''' is the sound card device with RK809, you need to transplant which is the corresponding USB wireless network sound card driverdevice of the headset</li>
{| class="wikitable" style="width:800px;"
|-
| No.| Model||orangepi@orangepi:~$ '''aplay -| 1| RTL8723BUl'''
Support 2.4G WIFI+BT4.0<p>**** List of PLAYBACK Hardware Devices ****</p>
| '''card 0: rockchiprk809 [rockchip-rk809], device 0: dailink-multicodecs rk817-hifi-0 [File:pi3bdailink-multicodecs rk817-hifi-img240.png0]]|-| 2| RTL8811'''
Support 2.4G +5G WIFI:'''Subdevices: 0/1'''
| [[File:pi3b-img241.png]]|-| 3| RTL8821CU'''Subdevice #0: subdevice #0'''
Support 2card 1: rockchiphdmi [rockchip,hdmi], device 0: fe400000.4G +5G WIFIi2s-i2s-hifi i2s-hifi-0 [fe400000.i2s-i2s-hifi i2s-hifi-0]
Support BT 4.2:Subdevices: 0/1
| <div class="figure">:Subdevice #0: subdevice #0
[[File:pi3bSubdevice #0: subdevice #0|}</ol><ol start="3" style="list-img242style-type: decimal;"><li>Then use the '''aplay''' command to play the audio file that comes with the system.png|tb_imag e_share_1670833201 123]]If the headset can hear the sound, it means that the hardware can be used normally</li>
<{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''aplay -D hw:0,0 /div>usr/share/sounds/alsa/audio.wav''' Playing WAVE 'audio.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
|}
</ol>
<span id="hdmi-audio-play-test"></span>
<span id="rtl8723bu-test"></span>==== RTL8723BU test HDMI Audio Play Test ====
# First insert use the RTL8723BU wireless network card module into the USB interface of HDMI to HDMI cable to connect the Orange PI development boardto the TV (other HDMI displays need to ensure that the audio can be played)# Then check the Linux system will automatically load sound card serial number of HDMI. From the RTL8723BU Bluetooth and WiFi -related kernel modules. You output below, you can see know that the kernel module below HDMI sound card is automatically loaded through the lsmod command'''card 1'''
::{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''lsmodaplay -l'''
Module Size Used by<p>**** List of PLAYBACK Hardware Devices ****</p>
rfcomm 57344 16card 0: rockchiprk809 [rockchip-rk809], device 0: dailink-multicodecs rk817-hifi-0 [dailink-multicodecs rk817-hifi-0]
rtl8xxxu 106496 :Subdevices: 0/1
rtk_btusb 61440 :Subdevice #0: subdevice #0
<ol start="3" style="list'''card 1: rockchiphdmi [rockchip,hdmi], device 0: fe400000.i2s-stylei2s-type: decimal;"><li>You can see the loading information of the RTL8723BU module through the dmesg command</li></ol>hifi i2s-hifi-0 [fe400000.i2s-i2s-hifi i2s-hifi-0]'''
orangepi@orangepi:~$ '''dmesgSubdevices: 0/1'''
......:'''Subdevice #0: subdevice #0'''
[ 83.438901] usb 2-1: new high-speed USB device number 2 using ehci-platform'''Subdevice #0: subdevice #0'''|}
[ 83<ol start="3" style="list-style-type: decimal;"><li>Then use the '''aplay''' command to play the audio file that comes with the system.588375] usb 2If the HDMI display or television can hear the sound indicates that the hardware can be used normally</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''aplay -1D hw: New USB device found, idVendor<span style=0bda"color:#FF0000">1</span>, idProduct0 /usr/share/sounds/alsa/audio.wav'''|}</ol><span id=b720, bcdDevice= 2.00"use-the-command-to-test-the-recording-method"></span>
[ 83.588403] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3Use the command to test the recording method ===
[ 83# Orange Pi 3B development board does not have MICs, and can only record audio through headphones with MIC function.588422] usb 2-1: Product: 802.11n WLAN AdapterAfter inserting the headset with the MIC function into the development board, the command below will record a piece of audio through the headset
[ 83.588443] usb 2::{| class="wikitable" style="width:800px;" |-1| orangepi@orangepi: Manufacturer: Realtek~$ '''amixer -c 0 cset name='Capture MIC Path' 'Main Mic''''
[ 83.588460] usb 2orangepi@orangepi:~$ '''arecord -1D hw: SerialNumber: 00e04c0000010,0 -d 5 -f cd -t wav /tmp/test.wav'''|}
[ 83.601974] Bluetooth: hci0: RTL: examining hci_ver<span id=06 hci_rev=000b lmp_ver=06 lmp_subver=8723"temperature-sensor"></span>
[ 83.603894] Bluetooth: hci0: RTL: rom_version status=0 version=1Temperature Sensor ==
[ 83.603920] Bluetooth# The command to view the system temperature sensor is: hci0: RTL: loading rtl_bt/rtl8723b_fw.bin
[ 83.610108] Bluetooth: hci0: RTL{| class="wikitable" style="width: loading rtl_bt/rtl8723b_config.bin800px;" |-| orangepi@orangepi:~$ '''sensors'''
[ 83.611274] Bluetooth: hci0: RTL: cfg_sz 68, total sz 22564soc_thermal-virtual-0
[ 83.658494] rtk_btusbAdapter: Realtek Bluetooth USB driver ver 3.1.6d45ddf.20220519-142432Virtual device
[ 83temp1: +41.658651] usbcore: registered new interface driver rtk_btusb9°C (crit = +115.0°C)
[ 83.667124] usb 2-1: This Realtek USB WiFi dongle (0x0bda:0xb720) is untested!
[ 83.667137] usb 2gpu_thermal-1: Please report results to Jes.Sorensen@gmail.comvirtual-0
[ 83.890140] usb 2-1Adapter: Vendor: RealtekVirtual device
[ 83.890153] usb 2-1: Producttemp1: 802+43.11n WLAN Adapter8°C|}
[ 83.890159] usb <ol start="2" style="list-1style-type: decimal;"><li><p>The command to view the current temperature of the nvme ssd solid state drive is:</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''sudo smartctl -a /dev/nvme0 | grep "Temperature: rtl8723bu_parse_efuse"'''</p><p>Temperature: dumping efuse (0x200 bytes)'''<span style="color:#FF0000">40 Celsius</span>'''</p>|}</li></ol>
......<span id="pin-interface-pin-explanation"></span>
[ 83.890412] usb 2-1: RTL8723BU rev E (SMIC) 1T1R, TX queues 3, WiFi=1, BT=1, GPS40 Pin interface pin explanation =0, HI PA=0
[ 83.890417] usb 2-1: RTL8723BU MAC: 00:13:ef:f4:58:ae# Orange Pi 3B Development board 40 Pin interface pins, please refer to the figure below
[ 83.890421] usb 2-1: rtl8xxxu: Loading firmware rtlwifi/rtl8723bu_nic.bin<div class="figure">
::[ 83[File:pi3b-img254.895289png]] usb 2-1: Firmware revision 35.0 (signature 0x5301)
[ 84</div><ol start="2" style="list-style-type: decimal;"><li><p>The function of the Orange Pi 3B development board 40 PIN interface pins is shown in the table below.050893] Bluetooth: hci0: RTL</p><ol style="list-style-type: fw version 0x0e2f9f73lower-alpha;"><li>Below is a complete pins of 40pin</li>
[ 84[File:pi3b-img255-1.266905png]] Bluetooth</ol><ol start="2" style="list-style-type: RFCOMM TTY layer initializedlower-alpha;"><li>The following form is a picture on the left half of the full table above, which can be seen clearly</li>
[ 84[File:pi3b-img256-1.266949png]] Bluetooth</ol><ol start="3" style="list-style-type: RFCOMM socket layer initializedlower-alpha;"><li>The following form is a picture on the right half of the top table above, which can be seen clearly</li>
[ 84[File:pi3b-img257-1.266999png]] Bluetooth</ol></li></ol><ol start="3" style="list-style-type: RFCOMM ver 1decimal;"><li>There are a total of '''<span style="color:#FF0000">28</span>''' GPIO ports in the 40pin interface. The voltage of all GPIO ports is '''<span style="color:#FF0000">3.113v</span>'''</li></ol>
[ 84.884270] usbcore: registered new interface driver rtl8xxxu<span id="how-to-install-wiringop"></span>
[ 84.912046] rtl8xxxu 2-1:1.2 wlx0013eff458ae: renamed from wlan0== How to install wiringOP ==
<ol start{| class="4wikitable" style="listbackground-style-typecolor:#ffffdc;width: decimal800px;">|-| <libig>Then you can see the RTL8723BU WIFI device node through the '''sudo ifconfigNote that wiringOP has been pre -installed in the Linux image released by Orange Pi. Unless wiringOP''' commands code is updated, it is not necessary to re -download and install. Just use it directly. Please refer to the WIFI connection test a [[\l|'''section for WIFI connection''']] and testing methods</li></ol>
orangepi@orangepi:~$ '''sudo ifconfig wlx0013eff458ae'''
wlx0013eff458ae'''The storage path of the compiled wiringOP's Deb is wrapped in Orangepi-Build: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500'''
ether 00'''<span style="color:13:ef:f4:58:ae txqueuelen 1000 (Ethernet)blue">orangepi-build/external/cache/debs/arm64/wiringpi_x.xx.deb</span>'''
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0'''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>
TX packets 0 bytes 0 (0.0 B)<div class="figure">
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0[[File:pi3b-img258-1.png]]
<ol start="5" style="list-style-type: decimal;"/div><libig>Then you can see the USB Bluetooth device through the '''hciconfigwiringOP 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.''' command</li></olbig>|}
orangepi@orangepi:~$ '''sudo apt update && sudo apt install bluez'''# Download the code of wiringOP
::{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''hciconfigsudo apt update'''
hci0: Type: Primary Busorangepi@orangepi: ~$ '''USBsudo apt install -y git'''
BD Addressorangepi@orangepi: 00~$ '''git clone https:13:EF:F4:58:AE ACL MTU: 820:8 SCO MTU: 255:16//github.com/orangepi-xunlong/wiringOP.git -b next'''|}
DOWN::{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''Note that Orange Pi 3B needs to download the code of the wiringOP next branch, please don't miss the parameter of -b next.'''
RX bytes:1252 acl:0 sco:0 events:125 errors:0
TX bytes'''If there is a problem with the download code from GitHub, you can use the wiringOP source code that comes with the Linux image directly, and the storage location is:23307 acl:0 sco:0 commands:125 errors:0/usr/src/wiringOP'''</big>|}
<ol start="62" style="list-style-type: decimal;"><li>You can also see the Bluetooth icon on the desktop. At this time, Bluetooth has not been opened, so a red '''x''' will be displayedCompile and install wiringOP</li></ol>
[[File{| class="wikitable" style="width:pi3b800px;" |-img243.png|576x157px]]orangepi@orangepi:~$ '''cd wiringOP'''
<ol start="7" style="list-style-typeorangepi@orangepi: decimal;"><li>Click ~/wiringOP$ '''Turn Bluetooth Onsudo ./build clean''' to open Bluetooth</li></ol>
[[Fileorangepi@orangepi:pi3b-img244~/wiringOP$ '''sudo .png/build'''|576x262px]]}</ol><ol start="3" style="list-style-type: decimal;"><li>Test the output of the GPIO Readall command as follows</li>
<ol startdiv class="8figure" style="list-style-type: decimal;"><li>The display after opening Bluetooth is shown below</li></ol>
[[File:pi3b-img245img258-1.png|576x164px]]
</div></ol start><span id="9" style="listpin-interface-gpio-i2c-uart-spi-and-stylepwm-type: decimal;test"><li>Please refer to the [[\l|'''Bluetooth use method''']] for Bluetooth test method, so I won't go into details here.</li></olspan>
<span id="rtl8811-test"></span>==== RTL8811 40Pin interface GPIO, I2C, UART, SPI, and PWM test ====
{| class="wikitable" style="background-color:# First insert the RTL8811 wireless network card module into the USB interface of the development board.ffffdc;width:800px;" # Then the Linux system will automatically load the RTL8811 WIFI |-related kernel modules. You can see | <big>'''Note that if you need to set overlays to open multiple configurations at the kernel module below is automatically loaded through same time, please use a space to write in one line like the lsmod commandfollowing space.'''</big>
orangepi@orangepi:~$ '''lsmodsudo vim /boot/orangepiEnv.txt'''
Module Size Used by'''<span style="color:#FF0000">overlays=spi3-m0-cs0-spidev i2c2-m1 i2c3-m0 uart7-m2 uart9-m2 pwm11-m1</span>'''|}
8821cu 1839104 0<span id="pin-gpio-port-test"></span>=== 40pin GPIO port test ===
<ol start{| class="3wikitable" style="listbackground-style-typecolor:#ffffdc;width: decimal800px;">|-| <li>You can see the loading information of the RTL8811 module through the dmesg command</li></olbig>'''The Linux system released by Orange Pi has a pre -installed blink_all_gpio program. This program will set up all 28 GPIO ports in 40pin to switch high and low levels.'''
orangepi@orangepi:~$ '''dmesg'''
[ 118'''After running the blink_all_gpio program, when using a multimeter to measure the level of the GPIO port, you will find that the GPIO pin will be switched between 0 and 3.618194] usb 2-1: new high-speed USB device number 2 using ehci-platform3v. Use this program to test whether the GPIO port can work normally'''
[ 118.767152] usb 2-1: New USB device found, idVendor=0bda, idProduct=c811, bcdDevice= 2.00
[ 118.767181] usb 2-1'''The method of running blink_all_gpio program is shown below: New USB device strings: Mfr=1, Product=2, SerialNumber=3'''</big>
[ 118.767199] usb 2-1orangepi@orangepi3b: Product: 802.11ac NIC~$ '''sudo blink_all_gpio''' #Remember to add Sudo permissions
[ 118.767219sudo] usb 2-1password for orangepi: Manufacturer: Realtek #You need to enter password here'''|}
[ 118# There are a total of '''28''' GPIO ports in the 40pins of the development board that can be used.767235] usb 2-1: SerialNumber: 123456The following uses pin 7—the corresponding GPIO is GPIO4_C3——the corresponding wPi serial number is 2—as an example to demonstrate how to set the high and low levels of the GPIO port
::[[ 119File:pi3b-img259-1.500530png]] usbcore: registered new interface driver rtl8821cu
[ 119.525498] rtl8821cu <ol start="2" style="list-1:1.0 wlx1cbfced9d260style-type: renamed from wlan0decimal;"><li>First set the GPIO port as the output mode, the third parameter needs to enter the serial number of the wPi corresponding to the pins</li>
{| class="wikitable" style="width:800px;" |-| root@orangepi:~/wiringOP# '''gpio mode <span style="color:#FF0000">2</span> out'''|}</ol><ol start="43" style="list-style-type: decimal;"><li>Then set the GPIO port to output the low level. After setting, you can see use the WiFi device node through value of the '''sudo ifconfig''' command. Please refer to voltage of the [[\l|'''WiFi connection test pins with a section''']] for WIFI connection and testing methodsmultimeter. I won't go into details herIf it is 0v, it means that the low level flat is successful</li></ol>
orangepi{| class="wikitable" style="width:800px;" |-| root@orangepi:~$ /wiringOP# '''sudo ifconfig wlx1cbfced9d260gpio write 2 <span style="color:#FF0000">0</span>'''|}
wlx1cbfced9d260: flags=4099<UPUsing GPIO Readall,BROADCAST,MULTICAST> mtu 1500you can see the value of the No. 7 pin (V) to 0
ether 1c[[File:bfpi3b-img260.png]]</ol><ol start="4" style="list-style-type:ce:d9:d2:60 txqueuelen 1000 (Ethernet)decimal;"><li>Then set the GPIO port to output a high level. After setting, you can use a multimeter to measure the voltage value of the pin. If it is 3.3v, it means that the high level is set successfully.</li>
RX packets 0 bytes 0 (0.0 B){| class="wikitable" style="width:800px;" |-| root@orangepi:~/wiringOP# '''gpio write 2 <span style="color:#FF0000">1</span>'''|}
RX errors 0 dropped 0 overruns 0 frame 0Using GPIO Readall, you can see the value of No. 7 pin (v) into 1
TX packets 0 bytes 0 (0[[File:pi3b-img261-1.0 B)png]]</ol><ol start="5" style="list-style-type: decimal;"><li>The setting method of other pins is similar, just modify the serial number of wPi to the corresponding serial number of the pin</li></ol>
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0<span id="pin-gpio-port--down-and-downward-pull--down-resistance-setting-method"></span>
<span id="rtl8821cu-test"></span>==== RTL8821CU test =40pin GPIO port pull-down resistance setting method ===
{| class="wikitable" style="background-color:# First insert the rtl8821cu wireless network card module into the USB interface of the development boardffffdc;width:800px;" |-| # Then use the '''lsusb<big>''' command to see the device information of Note that the rtl8821cu usb wifi module4 GPIO pins below Orange Pi 3B are invalid because there are 3. Make sure 3V on the USB module outside, so setting drop-down is not in the Driver CDROM Modeinvalid. Other pins can be set normally '''</big>
orangepi@orangepi[[File:~$ '''lsusb pi3b-img262-1.png| grep "Realtek"'''center]]|}
Bus 002 Device 003: ID 0bda:c820 Realtek Semiconductor Corp# Below the No. 802.11ac NIC11 pin—corresponding to GPIO 3_C6-corresponding wPi serial number 5—to demonstrate how to set up and down pull-down resistance of the GPIO port
orangepi@orangepi:~$ '''lsusb | grep "Realtek"''' Bus 002 Device 002: ID 0bda[[File:1a2b Realtek Semiconductor Corp. RTL8188GU 802.11n WLAN Adapter ('''Driver CDROM Mode''') '''If the USB WIFI module seen by the lsusb command is in Driver CDROM Mode, re pi3b-img263-insert the USB WiFi module1. If not, please manually execute the following command to switch the mode: ''' orangepi@orangepi:~$ '''sudo usb_modeswitch -KW -v 0bda -p 1a2b'''png]]
<ol start="2" style="list-style-type: decimal;">
<li>First of all, you need to set the GPIO port as the input mode. The third parameter needs to enter the serial number of the wPi corresponding to the pins</li>
{| class="wikitable" style="width:800px;"
|-
|
root@orangepi:~/wiringOP# '''gpio mode <span style="color:#FF0000">5</span> in'''
|}
</ol>
<ol start="3" style="list-style-type: decimal;">
<li>The Linux system will automatically load After the RTL8821CU Bluetooth and WIFI setting is set to input mode, execute the following command to set the GPIO port as the pull-related kernel modulesdown mode</li>{| class="wikitable" style="width:800px;" |-| root@orangepi:~/wiringOP# '''gpio mode <span style="color:#FF0000">5</span> up'''|}</ol><ol start="4" style="list-style-type: decimal;"><li>Then enter the following command to read the level of the GPIO port. You can see If the level is 1, it means that the kernel module below drawing mode is automatically loaded through the lsmod commandsuccessful</li>{| class="wikitable" style="width:800px;" |-| root@orangepi:~/wiringOP# '''gpio read <span style="color:#FF0000">5</olspan>'''
'''<span style="color:#FF0000">1</span>'''|}</ol><ol start="5" style="list-style-type: decimal;"><li>Then execute the following command to set the GPIO port as the drop-down mode</li>{| class="wikitable" style="width:800px;" |-| root@orangepi:~/wiringOP# '''gpio mode <span style="color:#FF0000">5</span> down'''|}</ol><ol start="6" style="list-style-type: decimal;"><li>Then enter the following command to read the level of the GPIO port. If the level is 0, it means that the drop-down mode is set successfully</li>{| class="wikitable" style="width:800px;" |-| root@orangepi:~$ /wiringOP# '''lsmodgpio read <span style="color:#FF0000">5</span>'''
Module Size Used by'''<span style="color:#FF0000">0</span>'''|}</ol><span id="pin-spi-test"></span>
8821cu 1839104 0=== 40pin SPI Test ===
rtk_btusb 61440 0# From the schematic diagram of the 40PIN interface, the SPI available for Orange Pi 3B is spi3
<ol start="4" style="list::[[File:pi3b-styleimg264-type: decimal;"><li>You can see the loading information of the rtl8821cu module through the dmesg command</li></ol>1.png]]
<ol start="2" style="list-style-type: decimal;"><li><p>In the linux system, the SPI in the 40 pin is closed by default, and it needs to be opened manually before it can be used. The detailed steps are as follows:</p><ol style="list-style-type: lower-alpha;"><li><p>First run '''orangepi-config''', normal users remember to add sudo permission</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''dmesgsudo orangepi-config'''</p>|}</li><li><p>Then select '''System'''</p><p>[[File:pi3b-1.png]]</p></li><li><p>Then select '''Hardware'''</p><p>[[File:pi3b-2.png]]</p></li><li><p>Then use the arrow keys on the keyboard to navigate to the position shown in the figure below, and then use the '''space''' to select the SPI configuration you want to open</p><p>[[File:pi3b-3.png]]</p></li><li><p>Then select '''<Save>''' to save</p><p>[[File:pi3b-4.png]]</p></li><li><p>Then select '''<Back>'''</p><p>[[File:pi3b-5.png]]</p></li><li><p>Then select '''<Reboot>''' to restart the system to make the configuration take effect</p><p>[[File:pi3b-6.png]]</p></li></ol></li></ol>
[ 57.083693] usb 2<ol start="3" style="list-style-1type: new high-speed USB decimal;"><li>After restarting, enter the system to check whether there is a spidev3.0 device number 2 using ehci-platformnode in the Linux system. If it exists, it means that SPI3 has been set up and can be used directly</li>
[ 57.231888] usb 2{| class="wikitable" style="width:800px;" |-1| orangepi@orangepi: New USB device found, idVendor=0bda, idProduct=1a2b, bcdDevice= 2~$ '''ls /dev/spidev3.000'''
[ 57/dev/spidev3.231916] usb 20|}</ol><ol start="4" style="list-1style-type: New USB device strings: Mfr=1decimal;"><li>Do not short-circuit the mosi and miso pins of SPI3, Product=2the output result of running spidev_test is as follows, SerialNumber=0you can see that the data of TX and RX are inconsistent</li>
[ 57.231937] usb 2{| class="wikitable" style="width:800px;" |-1| orangepi@orangepi: Product: DISK~$ '''sudo spidev_test -v -D /dev/spidev3.0'''
[ 57.231956] usb 2-1spi mode: Manufacturer: Realtek0x0
[ 57.242594] usb-storage 2-1bits per word:1.0: USB Mass Storage device detected8
[ 57.245674] scsi host0max speed: usb-storage 2-1:1.0500000 Hz (500 KHz)
[ 58TX | FF FF FF FF FF FF '''<span style="color:#FF0000">40 00 00 00 00 95</span>''' FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D | ......@.…▒..................▒.069172] usb 2-1: USB disconnect, device number 2
[ 58RX | FF FF FF FF FF FF '''<span style="color:#FF0000">FF FF FF FF FF FF</span>''' FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ...............440025] usb 2.............….|}</ol><ol start="5" style="list-1style-type: new high-speed USB device number 3 using ehcidecimal;"><li>Then short-platformcircuit the two pins of mosi (pin 19 in the 40pin interface) and miso (pin 21 in the 40pin interface) of SPI3, and then run the output of spidev_test as follows, you can see the sending and receiving same data</li>
[ 58[File:pi3b-img265.587819png]] usb 2{| class="wikitable" style="width:800px;" |-1| orangepi@orangepi: New USB device found, idVendor=0bda, idProduct=c820, bcdDevice= 2~$ '''sudo spidev_test -v -D /dev/spidev3.000'''
[ 58.587827] usb 2-1spi mode: New USB device strings: Mfr=1, Product=2, SerialNumber=30x0
[ 58.587833] usb 2-1bits per word: Product: 802.11ac NIC8
[ 58.587838] usb 2-1max speed: Manufacturer: Realtek500000 Hz (500 KHz)
[ 58TX | FF FF FF FF FF FF '''<span style="color:#FF0000">40 00 00 00 00 95</span>''' FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D | ......@.…▒..................▒.587844] usb 2-1: SerialNumber: 123456
[ 58RX | FF FF FF FF FF FF '''<span style="color:#FF0000">40 00 00 00 00 95</span>''' FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D | ......@.…▒................610463] rtk_btusb: Realtek Bluetooth USB driver ver 3.1.6d45ddf▒.20220519|}</ol><span id="pin-i2c-142432test"></span>
[ 58.610656] usbcore: registered new interface driver rtk_btusb=== 40pin I2C Test ===
[ 58# From the table below, the I2C available for Orange Pi 3B is I2C2, I2C3, and I2C4 a total of three groups of I2C bus.634631] Bluetooth: hci0: RTL: examining hci_ver=08 hci_rev=000c lmp_ver=08 lmp_subver=8821
[ 58.636729] Bluetooth: hci0: RTL[[File: rom_version status=0 version=pi3b-img266-1.png]]
[ 58.636740] Bluetooth: hci0: RTL{| class="wikitable" style="background-color:#ffffdc;width: loading rtl_bt800px;" |-| <big>'''It can be seen from the above table that i2c4_m0 and spi3_m0 are pins. The two cannot be opened at the same time. i2c3_m0 and uart3_m0 are also reused. The two cannot be opened at the same time'''</rtl8821c_fw.binbig>|}
<ol start="2" style="list-style-type: decimal;"><li><p>In the linux system, the I2C bus in the 40 pin is closed by default, and it needs to be opened manually to use it. The detailed steps are as follows:</p><ol style="list-style-type: lower-alpha;"><li><p>First run '''orangepi-config''', normal users remember to add '''sudo''' permission</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''sudo orangepi-config'''</p>|}</li><li><p>Then select '''System'''</p><p>[ 58[File:pi3b-1.664190png] Bluetooth]</p></li><li><p>Then select '''Hardware'''</p><p>[[File: hci0pi3b-2.png]]</p></li><li><p>Then use the arrow keys on the keyboard to navigate to the position shown in the figure below, and then use the '''space''' to select the I2C configuration you want to open</p><p>[[File: RTLpi3b-3-2.png]]</p></li><li><p>Then select '''<Save>''' to save</p><p>[[File: loading rtl_btpi3b-4.png]]</rtl8821c_configp></li><li><p>Then select '''<Back>'''</p><p>[[File:pi3b-5.binpng]]</p></li><li><p>Then select '''<Reboot>''' to restart the system to make the configuration take effect</p><p>[[File:pi3b-6.png]]</p></li></ol></li></ol>
[ 58.664746] Bluetooth<ol start="3" style="list-style-type: hci0decimal;"><li>After starting the Linux system, first confirm that the i2c device node exists under/dev</li>{| class="wikitable" style="width: RTL800px;" |-| orangepi@orangepi: cfg_sz 10, total sz 31990~# '''ls /dev/i2c-*'''
[ 59.122471] Bluetooth/dev/i2c-0 '''/dev/i2c-2''' '''/dev/i2c-3''' '''/dev/i2c-4''' /dev/i2c-6|}</ol><ol start="4" style="list-style-type: hci0: RTL: fw version 0x829a7644decimal;"><li>Then connect a i2c device on the i2c pin of the 40Pin connector</li>
[ 59{| class="wikitable" style="width:800px;text-align: center;"|-||i2c2-m1|i2c3-m0|i2c4-m0|-| Sda Pin|Corresponding to No.265513] usbcore: registered new interface driver rtl8821cu 3 pin|Corresponding to No. 27 pin|Corresponding to No. 19 pin|-| Sck Pin|Corresponding to No. 5 pin|Corresponding to No. 28 pin[ 59|Corresponding to No.280119] rtl8821cu 223 pin|-| Vcc Pin|Corresponding to No. 1 pin|Corresponding to No. 1 pin|Corresponding to No. 1:1pin|-| Gnd Pin|Corresponding to No. 6 pin|Corresponding to No. 6 pin|Corresponding to No.2 wlx90de80521825: renamed from wlan06 pin|}</ol><ol start="5" style="list-style-type: decimal;"><li>Then you can see the RTL8821CU WiFi device node through use the '''sudo ifconfigi2cdetect -y''' command. Please refer to if the address of the connected I2C device can be detected, it means that the [[\l|'''WiFi connection test''']] a section for WIFI connection and testing methods.I2C can be used normally</li></ol>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo ifconfig wlx90de80521825''' wlx90de80521825: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500i2cdetect -y 2 #i2c2 command
ether 00orangepi@orangepi:13:ef:f4:58:ae txqueuelen 1000 (Ethernet)~$ sudo i2cdetect -y 3 #i2c3 command
RX packets 0 bytes 0 (0.0 B)orangepi@orangepi:~$ sudo i2cdetect -y 4 #i2c4 command|}
RX errors 0 dropped 0 overruns 0 frame 0<div class="figure">
TX packets 0 bytes 0 (0[[File:pi3b-img267.0 B)png]]
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0</div></ol><span id="pin-uart-test"></span>
<ol start="6" style="list-style-type: decimal;"><li>Then you can see the USB Bluetooth device through the '''hciconfig''' command</li></ol>= 40pin UART test ===
orangepi@orangepi:~$ '''sudo apt-get update && sudo apt-get install -y bluez'''# As can be seen from the table below, the uart available for Orange Pi 3B is uart3, uart7, and uart9. There are three sets of uart bus
orangepi@orangepi:~$ '''hciconfig''':[[File:pi3b-img268-1.png]]
hci0: Type: Primary Bus{| class="wikitable" style="background-color: #ffffdc;width:800px;" |-| <big>'''USBAs can be seen from the above table, i2c3_m0 and uart3_m0 are reused by pins, and the two cannot be opened at the same time'''</big>|}
BD Address<ol start="2" style="list-style-type: 00decimal;"><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:13</p><ol style="list-style-type:EFlower-alpha;"><li><p>First run '''orangepi-config''', normal users remember to add sudo permission</p>{| class="wikitable" style="width:F4800px;" |-| <p>orangepi@orangepi:58~$ '''sudo orangepi-config'''</p>|}</li><li><p>Then select '''System'''</p><p>[[File:AE ACL MTUpi3b-1.png]]</p></li><li><p>Then select '''Hardware'''</p><p>[[File: 820pi3b-2.png]]</p></li><li><p>Then use the arrow keys on the keyboard to navigate to the position shown in the figure below, and then use the '''space''' to select the UART configuration you want to open</p><p>[[File:8 SCO MTUpi3b-3-3.png]]</p></li><li><p>Then select '''<Save>''' to save</p><p>[[File: 255pi3b-4.png]]</p></li><li><p>Then select '''<Back>'''</p><p>[[File:16pi3b-5.png]]</p></li><li><p>Then select '''<Reboot>''' to restart the system to make the configuration take effect</p><p>[[File:pi3b-6.png]]</p></li></ol></li></ol>
DOWN<ol start="3" style="list-style-type: decimal;"><li>After entering the Linux system, first confirm whether there is a device node corresponding to uart under/dev</li>
RX bytes{| class="wikitable" style="width:1252 acl800px;" |-| orangepi@orangepi:0 sco:0 events:125 errors:0~# '''ls /dev/ttyS*'''
TX bytes/dev/ttyS1 '''/dev/ttyS3 /dev/ttyS7 /dev/ttyS9'''|}</ol><ol start="4" style="list-style-type:23307 acl:0 sco:0 commands:125 errors:0decimal;"><li>Then start testing the uart interface, first use the rx and tx of the uart interface to be tested by DuPont</li>
<ol start{| class="7wikitable" style="list-stylewidth:800px;text-typealign: decimalcenter;"><li>Bluetooth icons can also be seen on |-||uart3|uart7|uart9|-| Tx pin|Corresponding to the desktop. At this time, Bluetooth has not been opened, so a red '''x''' will be displayed</li></ol>28 pin|Corresponding to the 16 pin|Corresponding to the 29 pin|-| Rx Pin|Corresponding to the 27 pin|Corresponding to the 15 pin|Corresponding to the 22 pin|}
[[File:pi3b-img243img269-1.png|576x157px]]</ol><ol start="5" style="list-style-type: decimal;"><li><p>Use the '''gpio serial''' command to test the loop function of the serial port as shown below. If you can see the following printing, it means that the serial communication is normal</p><ol style="list-style-type: lower-alpha;"><li>Test UART3</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo gpio serial /dev/ttyS3'''
<ol start="8" style="list-style-type[sudo] password for orangepi: decimal;"><li>Click '''Turn Bluetooth On''' to open Bluetooth</li></ol>#Enter the password here.
[[File:pi3b-img244.png|576x262px]]
<ol start="9" style="list-styleOut: 0: -type: decimal>"><li>The display after opening Bluetooth is shown below</li></ol>0
[[FileOut: 1:pi3b-img245.png|576x164px]]> 1
<ol start="10" style="list-styleOut: 2: -type: decimal>"><li>Please refer to the [[\l|'''Bluetooth use chapter''']] for the Bluetooth test method. I won't go into details her</li></ol>2
<span id="usbOut: 3: -camera-test"></span>=== USB Camera Test ===> 3
# First, you need to prepare a USB camera that supports the UVC protocol in the figure below, and then insert the USB camera into the USB interface of the Orange PI development boardOut: 4: -> 4
[[FileOut:pi3b5: -> 5^C|}</ol><ol start="2" style="list-style-img13.pngtype: lower-alpha;"><li>Test UART7</li>{|259x150px]]class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo gpio serial /dev/ttyS7'''
<ol start="2" style="list-style-type[sudo] password for orangepi: decimal;"><li>You can see that #Enter the USB camera's device node information is/dev/video0 through the v4l2-ctl command</li></ol>password here.
orangepi@orangepi:~$ '''v4l2-ctl --list-devices'''
Q8 HD WebcamOut: 0: Q8 HD Webcam ('''usb'''-fc880000.usb-1):> 0
'''/dev/video0'''Out: 1: -> 1
/dev/video1Out: 2: -> 2
/dev/media0Out: 3: -> 3
'''Note that l in v4l2 is a lowercase letter l, not numbers 1.'''Out: 4: -> 4
Out: 5: -> 5^C|}</ol><ol start="3" style="list-style-type: lower-alpha;"><li>Test UART9</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''In addition, Video's sudo gpio serial number is not necessarily Video0, please refer to what you see./dev/ttyS9'''
<ol start="3" style="list-style-type[sudo] password for orangepi: decimal;"><li>In #Enter the desktop system, you can use Cheese to directly turn on the USB camerapassword here. The cheese opening method is shown in the figure below: </li></ol>
[[File:pi3b-img246.png|474x302px]]
The interface after cheese opens the USB camera is shown in the figure belowOut: 0: -> 0
[[FileOut: 1:pi3b-img247.png|473x277px]]> 1
<ol start="4" style="list-style-typeOut: decimal;"><li><p>How to test the USB camera using fswebcam</p><ol style="list-style-type2: lower-alpha>"><li>Install fswebcam</li></ol></li></ol>2
orangepi@orangepiOut:~$ '''sudo''' '''apt update'''3: -> 3
orangepi@orangepiOut: 4:~$ '''sudo apt-get install -y fswebcam'''> 4
<ol start="2" style="list-style-typeOut: lower-alpha;"><li><p>After installing fswebcam, you can use the following command to take pictures</p><ol style="list-style-type5: lower-alpha>">5^C<li><p>-d The option is used to specify the device node of the USB camera</p></li><li><p>--no-banner Used to remove the watermark of photos</p></li><li><p>-r The option is used to specify the resolution of the photo</p></li><li><p>-S The option is set to the number of frames before skipping</p></li>|}<li><p>./image.jpg The name and path for setting the generated photos</p></li></ol>
</li></ol>
<span id="pwm-test-method"></span>
orangepi@orangepi:~$ '''sudo''' '''fswebcam -d /dev/video0 \'''=== PWM test method ===
'''--no-banner -r 1280x720 -S 5 ./image.jpg''' <ol start="3" style="list-style-type: lower-alpha;"><li>In # From the service version of the Linux systemtable below, you can use the scp command to pass the picture to the Ubuntu PC to watch after taking the photo</li></ol>pwm11 available for Orange Pi 3B
orangepi@orangepi:~$ '''scp image.jpg''' [mailto:test@192.168.1.55:/home/test test@192.168.1.55:/home/test] '''(Modify the IP address and path according to the actual situation)''' <ol start="4" style="list-style-type: lower-alpha;"><li>In the desktop version of the Linux system, you can directly view the shot pictures through the HDMI display</li></ol> <span id="audio-test"></span>== Audio Test == <span id="test-audio-methods-in-the-desktop-system"></span>=== Test audio methods in the desktop system === # First open the file manager [[File:pi3b-img248img270-1.png|357x176px]]
<ol start="2" 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><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 find select '''System'''</p><p>[[File:pi3b-1.png]]</p></li><li><p>Then select '''Hardware'''</p><p>[[File:pi3b-2.png]]</p></li><li><p>Then use the arrow keys on the keyboard to navigate to the following file (if there is no audio file position shown in the systemfigure below, and then use the '''space''' to select the PWM configuration you can upload a audio file want to open</p><p>[[File:pi3b-3-4.png]]</p></li><li><p>Then select '''<Save>''' to save</p><p>[[File:pi3b-4.png]]</p></li><li><p>Then select '''<Back>'''</p><p>[[File:pi3b-5.png]]</p></li><li><p>Then select '''<Reboot>''' to restart the system by yourself)to make the configuration take effect</p><p>[[File:pi3b-6.png]]</p></li></ol> <div class="figure"/li></ol>
[[File:pi3b-img249.png|236x186px|图片10]]
</div>
<ol start="3" style="list-style-type: decimal;">
<li>Then select After opening a pwm, there will be an extra pwmchipX in '''/sys/class/pwm/''' (X is a specific number), for example, after opening pwm11, check the audio.wav file, right -click and select VLC to open it to start playingpwmchipX under '''/sys/class/pwm/''' one becomes two</li></ol>{| class="wikitable" style="width:800px;" [[File:pi3b|-img250.png|288x234px]]orangepi@orangepi:~$ '''ls /sys/class/pwm/'''
pwmchip0 pwmchip1
|}
</ol>
<ol start="4" style="list-style-type: decimal;">
<li><p>Methods Which pwmchip above corresponds to switch different audio equipment such pwm11, let's check the output of the '''ls /sys/class/pwm/ -l''' command first, as HDMI playback and headset playbackshown below:</p><ol style="list-style-type: lower-alpha;"/li><li>First open <p>Then it can be known from the volume control interface<table below that the base address of the pwm11 register is fe6f0030, and then look at the output of the '''ls /sys/class/pwm/li>-l''' command, you can see that pwmchip1 is linked to fe6f0030.pwm, so pwm11 corresponds to pwmchip as pwmchip1</olp></li></ol>
[[File:pi3b-img251.png|308x169px]]<div class="figure">
<ol start="2" style="list-style-type[[File: lowerpi3b-alpha;"><li>When playing audio, the audio equipment options that play software can be used will be displayed in '''Playback'''. As shown in the figure below, which audio equipment you need to play here can be setimg271.</li></ol>png]]
[[File</div></ol><ol start="6" style="list-style-type: decimal;"><li>Then use the following command to make pwm11 output a 50Hz square wave (please switch to the root user first, and then execute the following command)</li>{| class="wikitable" style="width:pi3b800px;" |-img252.png|576x282px]]root@orangepi:~# '''echo 0 > /sys/class/pwm/pwmchip1/export'''
<span id="how-to-play-audio-with-commands"><root@orangepi:~# '''echo 20000000 > /span>=== How to play audio with commands ===sys/class/pwm/pwmchip1/pwm0/period'''
<span id="headphone-interface-play-audio-test"><root@orangepi:~# '''echo 1000000 > /span>==== Headphone interface play audio test ====sys/class/pwm/pwmchip1/pwm0/duty_cycle'''
root@orangepi:~# First insert the headset into the headphone jack of the development board'''echo 1 > /sys/class/pwm/pwmchip1/pwm0/enable'''|}
[[File:pi3b-img253img272.png|395x112px]]
<ol start="2" style="list-style-type: decimal;"><li>Then you can check the sound card device supported by the Linux system through the '''aplay -l''' commandThe test method of pwm11 demonstrated above is similar to other pwm test methods. From the output below, it can be seen that '''card 0''' is the sound card device with RK809, which is the sound card device of the headset</li></ol><span id="how-to-install-and-use-wiringop-python"></span>
orangepi@orangepi:~$ '''aplay == How to install and use wiringOP-l'''Python ==
**** List {| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''wiringOP-Python is the Python language version of PLAYBACK Hardware Devices ****wiringOP, which is used to operate the hardware resources of the development board, such as GPIO, I2C, SPI and UART, in the Python program.'''
'''card 0: rockchiprk809 [rockchip-rk809], device 0: dailink-multicodecs rk817-hifi-0 [dailink-multicodecs rk817-hifi-0]'''
'''Subdevices: 0/1In addition, please note that all the following commands are operated under the root user.'''</big>|}
'''Subdevice #0: subdevice #0'''<span id="wiringop-python-installation-method"></span>=== wiringOP-Python installation method ===
card 1: rockchiphdmi [rockchip,hdmi], device 0: fe400000.i2s-i2s-hifi i2s-hifi-0 [fe400000.i2s-i2s-hifi i2s-hifi-0]# First install the dependency package
Subdevices: 0/1:{| class="wikitable" style="width:800px;" |-| Subdevice #0root@orangepi: subdevice ~#0'''sudo apt-get update'''
Subdevice #0root@orangepi: subdevice ~#0'''sudo apt-get -y install git swig python3-dev python3-setuptools'''|}
<ol start="32" style="list-style-type: decimal;"><li>Then use the following command to download the source code of wiringOP-Python</li>{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''aplay''' command to play the audio file Note that comes with the system. If following git clone--recursivee command will automatically download the headset can hear the soundsource code of wiringOP, it means because wiringOP-Python depends on wiringOP. Please make sure that the hardware can be used normally</li></ol>download process does not report an error due to network problems.'''
orangepi@orangepi:~$ '''aplay -D hw:0,0 /usr/share/sounds/alsa/audio.wav'''
Playing WAVE 'audio.wav' : Signed 16 bit Little Endian'If there is a problem with the download code from GitHub, Rate 44100 Hzyou can use the wiringOP-Python source code that comes with the Linux image directly, Stereoand the storage location is:/usr/src/wiringOP-Python'''</big>|}{| class="wikitable" style="width:800px;" |-| root@orangepi:~# '''git clone --recursive https://github.com/orangepi-xunlong/wiringOP-Python -b next'''
<span id="hdmiroot@orangepi:~# '''cd wiringOP-audio-play-test"></span>==== HDMI Audio Play Test ====Python'''
root@orangepi:~/wiringOP-Python# First '''git submodule update --init --remote'''|}</ol><ol start="3" style="list-style-type: decimal;"><li>Then use the HDMI following command to HDMI cable to connect compile wiringOP-Python and install it into the Linux system of the Orange PI development board to the TV (other HDMI displays need to ensure that the audio can be played)</li>{| class="wikitable" style="width:800px;" |-| root@orangepi:~# Then check the sound card serial number of HDMI. From the output below, you can know that the HDMI sound card is '''card 1cd wiringOP-Python'''
orangepiroot@orangepi:~$ /wiringOP-Python# '''aplay python3 generate-lbindings.py > bindings.i'''
**** List root@orangepi:~/wiringOP-Python# '''sudo python3 setup.py install'''|}</ol><ol start="4" style="list-style-type: decimal;"><li>Then enter the following command. If there is a help information output, it means that Wiringop-Python is successfully installed. Press the '''q''' key to exit the interface of PLAYBACK Hardware Devices ****the help information</li>
card 0{| class="wikitable" style="width: rockchiprk809 [rockchip800px;" |-rk809], device 0| root@orangepi: dailink~/wiringOP-multicodecs rk817Python# '''python3 -hifi-0 [dailink-multicodecs rk817-hifi-0]c "import wiringpi; help(wiringpi)"'''
SubdevicesHelp on module wiringpi: 0/1
Subdevice #0: subdevice #0
'''card 1: rockchiphdmi [rockchip,hdmi], device 0: fe400000.i2s-i2s-hifi i2s-hifi-0 [fe400000.i2s-i2s-hifi i2s-hifi-0]'''NAME
'''Subdevices: 0/1'''wiringpi
'''Subdevice #0: subdevice #0'''
'''Subdevice #0: subdevice #0'''DESCRIPTION
<ol start="3" style="list-style-type: decimal;"><li>Then use the '''aplay''' command to play the audio # This file that comes with the system. If the HDMI display or television can hear the sound indicates that the hardware can be used normally<was automatically generated by SWIG (http:/li></ol>www.swig.org).
orangepi@orangepi:~$ '''aplay -D hw:1,# Version 4.0 /usr/share/sounds/alsa/audio.wav'''2
<span id="use-the-command-to-test-the-recording-method"></span>=== Use the command to test the recording method ===: #
: # Orange Pi 3B development board does Do not have MICs, and can only record audio through headphones with MIC function. After inserting the headset with the MIC function into the development board, the command below will record a piece of audio through the headsetmake changes to this file unless you know what you are doing--modify
orangepi: # the SWIG interface file instead.|}</ol><ol start="5" style="list-style-type: decimal;"><li><p>Test whether the wiringOP-Python is installed successfully under the Python command line is shown below:</p><ol style="list-style-type: lower-alpha;"><li>First use the Python3 command to enter the command line mode of Python3</li>{| class="wikitable" style="width:800px;" |-| root@orangepi:~$ # '''python3''amixer '|}</ol><ol start="2" style="list-style-type: lower-c 0 cset namealpha;"><li>Then import the Python module of WiringPi</li>{| class="wikitable" style='Capture MIC Path"width:800px;" |-| >>> ' 'Main Mic'import wiringpi;'''|}orangepi@orangepi</ol><ol start="3" style="list-style-type:~$ lower-alpha;"><li>Enter the following command to view the help information of wiringOP-Python, and press the '''q'''arecord -D hwkey to exit the interface of the help information</li>{| class="wikitable" style="width:0,0 800px;" |-d 5 -f cd -t wav /tmp/test.wav| >>> '''help(wiringpi)'''
<span id="temperature-sensor"></span>== Temperature Sensor ==Help on module wiringpi:
# The command of the system temperature sensor is:
orangepi@orangepi:~$ '''sensors'''NAME
soc_thermal-virtual-0:wiringpi
Adapter: Virtual device
temp1: +41.9°C (crit = +115.0°C)DESCRIPTION
gpu_thermal-virtual-0: # This file was automatically generated by SWIG (http://www.swig.org).
Adapter: Virtual device# Version 4.0.2
temp1: +43.8°C#
<ol start="2" style="list-style-type: decimal;"><li><p>The command of the current temperature of the NVMe SSD solid # Do not make changes to this file unless you know what you are doing-state hard disk is: </p><p>orangepi@orangepi:~$ '''sudo smartctl -a /dev/nvme0 | grep "Temperature:"'''</p><p>Temperature: '''40 Celsius'''</p></li></ol>modify
<span id="pin-: # the SWIG interface-pin-explanation"></span>== 40 Pin interface pin explanation ==file instead.
# Orange Pi 3B Development board 40 Pin interface pins, please refer to the figure below
<div class="figure">CLASSES
[[File:pi3b-img254builtins.png|400x124px|C:\Users\orangepi\Desktop\用户手册插图\pi 3b\Orange-Pi-3B-Development-board-40-Pin(1).jpgOrange-Pi-3B-Development-board-40-Pin(1)]]object
</div><ol start="2" style="list-style-type: decimal;"><li><p>The function of the Orange Pi 3B development board 40 PIN interface pins is shown in the table below.</p><ol style="list-style-type: lower-alpha;"><li>Below is a complete pins of 40pin</li></ol></li></ol>GPIO
[[File:pi3b-img255.png|575x160px]]:I2C
<ol start="2" style="list-style-type: lower-alpha;"><li>The following form is a picture on the left half of the full table above, which can be seen clearly</li></ol>:Serial
[[File:pi3b-img256.png|478x267px]]:nes
<ol start="3" style="list-style-type: lower-alpha;">
<li>The following form is a picture on the right half of the top table above, which can be seen clearly</li></ol>
[[File:pi3b-img257class GPIO(builtins.png|479x266px]]object)
<ol start="3" style="list-style-type: decimal;"><li>There are a total of '''28''' | GPIO ports in the 40pin interface. The voltage of all GPIO ports is '''3.3v'''</li></ol>(pinmode=0)
<span id="how-to-install-wiringop"></span>== How to install Wiringop ==:|
'''Note that Wiringop has been pre -installed in the Linux image released by Orange Pi. Unless Wiringop's code is updated, it is not necessary to re -download and install. Just use it directly.'''
'''The storage path of the compiled Wiringop's Deb is wrapped in Orangepi>>>|}</ol></li></ol><span id="pin-Build: '''gpio-port-test-1"></span>
'''orangepi-build/external/cache/debs/arm64/wiringpi_x.xx.deb'''=== 40pin GPIO port test ===
{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''After entering wiringOP-Python is the systemsame as wiringOP, you can run also determine which GPIO pin to operate by specifying the gpio readall wPi number, because there is no command. If to check the wPi number in wiringOP-Python, so you can see only check the output below, it means that wiringOP is pre -installed board wPi number and can be used normallyphysical Correspondence between pins.'''</big>
<div class="figure">
[[File:pi3b-img258.png|575x355px|66AC(IBG%N8L@Y7(1BZPS`Ncenter]]
</div>
'''wiringOP is currently adapted |}# Below the No. 7 pin — corresponding to GPIO4_a4 -corresponding WPI serial number 2 -to demonstrate how to set the GPIO port input output, set height of 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.'''
# Download the code of Wiringop::[[File:pi3b-img259.png]]
orangepi<ol start="2" style="list-style-type: decimal;"><li><p>The steps of the command test are shown below directly: </p><ol style="list-style-type: lower-alpha;"><li>First set the GPIO port to the output mode. The first parameter of the '''pinMode''' function is the serial number of the wpi corresponding to the pin, and the second parameter is the GPIO mode</li>{| class="wikitable" style="width:800px;" |-| root@orangepi:~$ /wiringOP-Python# '''sudo apt updatepython3 -c "import wiringpi; \'''
orangepi@orangepi:~$ '''sudo apt install -y gitfrom wiringpi import GPIO; wiringpi.wiringPiSetup() ; \'''
orangepi@orangepi:~$ '''git clone httpswiringpi.pinMode(<span style="color:#FF0000">2, GPIO.OUTPUT</span>) ; "'''|}</githubol><ol start="2" style="list-style-type: lower-alpha;"><li>Then set the GPIO port output low level.comAfter setting, you can use the voltage of the voltage of the universal meter to measure the pins. If it is 0V, it means that the low -power flat is successful</li>{| class="wikitable" style="width:800px;" |-| root@orangepi-xunlong:~/wiringOP.git -b nextPython# '''python3 -c "import wiringpi; \'''
'''Note that Orange Pi 3B needs to download the code of the wiringOP next branch, please don't miss the parameter of -b nextfrom wiringpi import GPIO; wiringpi.wiringPiSetup() ;\'''
'''If there is a problem with wiringpi.digitalWrite(<span style="color:#FF0000">2, GPIO.LOW</span>)"'''|}</ol><ol start="3" style="list-style-type: lower-alpha;"><li>Then set the download code from GitHubGPIO port output high level. After setting, you can use the wiringOP source code that comes value of the voltage of the pins with the Linux image directlya multimeter. If it is 3.3V, and it means that the storage location high -power flat issuccessful.</li>{| class="wikitable" style="width:/usr/src800px;" |-| root@orangepi:~/wiringOP-Python# '''python3 -c "import wiringpi; \'''
<ol start="2" style="list-style-type: decimal;"><li>Compile and install wiringOP</li></ol> orangepi@orangepi:~$ '''cd wiringOP''' orangepi@orangepi:~/wiringOP$ '''sudo from wiringpi import GPIO; wiringpi./build clean''' orangepi@orangepi:~/wiringOP$ '''sudo ./buildwiringPiSetup() ;\'''
'''wiringpi.digitalWrite(<span style="color:#FF0000">2, GPIO.HIGH</span>)"'''
|}
</ol>
</li></ol>
<ol start="3" style="list-style-type: decimal;">
<li>Test <p>The steps of testing in the output command line of Python3 are shown below: </p><ol style="list-style-type: lower-alpha;"><li>First use the Python3 command to enter the GPIO Readall command as followsline mode of Python3</li>{| class="wikitable" style="width:800px;" |-| root@orangepi:~# '''python3'''|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li>Then import the Python module of WiringPi</li>{| class="wikitable" style="width:800px;" |-| >>> '''import wiringpi'''
>>> '''from wiringpi import GPIO'''|}<div /ol><ol start="3" style="list-style-type: lower-alpha;"><li>Then set the GPIO port as the output mode. The first parameter of the '''pinMode''' function is the serial number of the wpi corresponding to the pin, and the second parameter is the GPIO mode.</li>{| class="figurewikitable" style="width:800px;">|-| >>> '''wiringpi.wiringPiSetup()''' 0
[[File>>> '''wiringpi.pinMode(<span style="color:#FF0000">2, GPIO.OUTPUT</span>)'''|}</ol><ol start="4" style="list-style-type: lower-alpha;"><li>Then set the GPIO port output low level. After setting, you can use the value of the voltage of the pins with a multimeter. If it is 0V, it means that the low -power flat is set.</li>{| class="wikitable" style="width:800px;" |-| >>> '''wiringpi.digitalWrite(2, <span style="color:#FF0000">GPIO.LOW</span>)'''|}</ol><ol start="5" style="list-style-type:pi3blower-img258alpha;"><li>Then set the GPIO port output high level. After setting, you can use the value of the voltage of the pins with a multimeter. If it is 3.png3V, it means that the high -power flat is successful</li>{|575x355pxclass="wikitable" style="width:800px;" |66AC-| >>> '''wiringpi.digitalWrite(IBG%N8L2, <span style="color:#FF0000">GPIO.HIGH</span>)'''|}</ol></li></ol><ol start="4" style="list-style-type: decimal;"><li>Wiringop-Python Sets GPIO high and low levels in the Python code. For reference to the '''blink.py''' test program in Examples, the voltage of the '''blink.py''' test program will set up the voltage of all GPIO ports in the development board 40 PIN</li>{| class="wikitable" style="width:800px;" |-| root@Y7(1BZPS`N]]orangepi:~/wiringOP-Python# '''cd examples'''
<root@orangepi:~/div><span id="pinwiringOP-interface-gpio-i2c-uart-spi-and-pwm-test"><Python/span>== 40Pin interface GPIO, I2C, UART, SPI, and PWM test ==examples# '''ls blink.py'''
'''Note that if you need to set overlays to open multiple configurations at the same time, please use a space to write in one line like the following spaceblink.py'''
orangepiroot@orangepi:~$ /wiringOP-Python/examples'''sudo vim /boot/orangepiEnv# python3 blink.txtpy'''|}</ol><span id="pin-spi-test-1"></span>
'''overlays=spi3-m0-cs0-spidev i2c2-m1 i2c3-m0 uart7-m2 uart9-m2 pwm11-m1'''== 40pin SPI test ===
<span id="pin-gpio-port-test"></span>=== # From the schematic diagram of the 40pin GPIO port test ===interface, the SPI available for Orange Pi 3B is spi3
'''The Linux system released by Orange Pi has a pre ::[[File:pi3b-installed blink_all_gpio programimg264. This program will set up all 28 GPIO ports in 40pin to switch high and low levels.'''png]]
::{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''After running In the blink_all_gpio programLinux system, when using a multimeter to measure the level of the GPIO portspi3 in 40pin is closed by default, you will find that the GPIO pin will and it needs to be switched between 0 and 3opened manually to use.3v. Use this program to test whether the GPIO port can work normally'''
'''The method of running blink_all_gpio program is shown below: '''
orangepi@orangepi3b:~$ '''sudo blink_all_gpioAdd the configuration of the red font part below to the /boot/orangepiEnv.txt, and then restart the Linux system to open the spi4.''' #Remember to add Sudo permissions</big>
[sudo] password for orangepi: #You need to enter a password here
# A total of 28 GPIO ports can be used in the development board 40pinorangepi@orangepi:~$ '''sudo vim /boot/orangepiEnv. Below is No. 7 pins -corresponding GPIO as GPIO4_A4 -corresponding WPI serial number 2 -as an example how to set the height of the GPIO porttxt'''
[[File'''<span style="color:pi3b#FF0000">overlays=spi3-img259.pngm0-cs0-spidev</span>'''|576x120px]]}
<ol start="2" style="list-style-type: decimal;">
<li>First set check whether there is a '''spidev3.0''' device node in the GPIO port as the output modeLinux system. If it exists, it means that the third parameter needs to enter the serial number of the wPi corresponding to the pinsSPI3 has been set and can be used directly</li></ol>{| class="wikitable" style="width:800px;" |-| rootorangepi@orangepi:~/wiringOP# $ '''gpio mode 2 outls /dev/spidev3.0'''
/dev/spidev3.0
|}
</ol>
<ol start="3" style="list-style-type: decimal;">
<li>Then set <p>You can then use the GPIO port spi back function under the '''spidev_test.py''' program in Examples. The '''spidev_test.py''' program needs to output specify the low level. After setting, you can use following two parameters: </p><ol style="list-style-type: lower-alpha;"><li><p>'''--channel''': Specify the value channel number of SPI</p></li><li><p>'''--port''': Specify the voltage port number of SPI</p></li></ol></li><li><p>Do not pick up the two pins with a multimeterof the SPI3 MOSI and MISO in short, and run the output result of the spidev_test. If it is 0v, it means py as shown below. You can see that the low -electric flat is successfuldata of TX and RX are inconsistent</lip></olli>{| class="wikitable" style="width:800px;" |-| root@orangepi:~/wiringOP-Python# '''cd examples'''
root@orangepi:~/wiringOP-Python/examples# '''gpio write 2 0python3 spidev_test.py \'''
Using GPIO Readall, you can see the value of the No. 7 pin (v) to '''--channel 3 --port 0'''
[[Filespi mode:pi3b-img260.png|576x120px]]0x0
<ol start="4" style="list-style-typemax speed: decimal;"><li>Then set the GPIO port output high level. After setting, you can use the voltage of the voltage of the permanent meter to measure the voltage. If it is 3.3V, it means that the high-electricity level is successful</li></ol>500000 Hz (500 KHz)
root@orangepi:~Opening device /wiringOP# '''gpio write 2 1'''dev/spidev3.0
Using GPIO Readall, you can see the value of NoTX | 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 |......@...... 7 pin (v) into 1 [[File:pi3b-img261.png…|576x118px]]
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 |.............….|
|}
</ol>
<ol start="5" style="list-style-type: decimal;">
<li>The setting method of other Then use the TXD (No. 19 pins is similarin the 40Pin interface) and RXD (No. Just modify 21 pins in the serial number 40pin interface) of the wPi sequence number as DuPont line short connection SPI3. Like sending and receiving data, it means that the corresponding serial number corresponding to the pinSPI3 loop test is normal</li><{| class="wikitable" style="width:800px;" |-| root@orangepi:~/ol>wiringOP-Python# '''cd examples'''
<span id="pin-gpio-port--down-and-downward-pull--downroot@orangepi:~/wiringOP-resistance-setting-method"><Python/span>=== 40Pin GPIO Port -down and downward pull -down resistance setting method ===examples# '''python3 spidev_test.py \'''
'''Note that the 4 GPIO pins below Orange Pi 3B are invalid because there are --channel 3.3V on the outside, so setting drop -down is invalid. Other pins can be set normally-port 0'''
[[Filespi mode:pi3b-img262.png|575x353px]]0x0
# Below the No. 11 pin—corresponding to GPIO 3_C6-corresponding WPI serial number 5—to demonstrate how to set up and down pull-down resistance of the GPIO portmax speed: 500000 Hz (500 KHz)
[[File:pi3b-img263Opening device /dev/spidev3.png|576x147px]]0
TX | FF FF FF FF FF FF '''<ol start="2" span style="list-style-typecolor: decimal;#FF0000">40 00 00 00 00 95<li/span>First of all, you need to set the GPIO port as the input mode''' FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D |...... The third parameter needs to enter the serial number of the wpi corresponding to the pins</li></ol>@.......…|
root@orangepi:~/wiringOP# RX | FF FF FF FF FF FF '''gpio mode 5 in<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 |......@.......…||}</ol><span id="pin-i2c-test-1"></span>
<ol start="3" style="list-style-type: decimal;"><li>After the setting is set to input mode, execute the following command to set the GPIO port as the pull -down mode</li></ol>= 40pin I2C test ===
root@orangepi<ol start="1" style="list-style-type:~decimal;"><li>As can be seen from the table below, the I2C available for Orange Pi 3B is I2C2, I2C3, and I2C4 a total of three groups of I2C bus</wiringOP# '''gpio mode 5 up'''li>
<ol start="4" style="list[[File:pi3b-style-type: decimal;"><li>Then enter the following command to read the level of the GPIO portimg266. If the level is 1, it means that the drawing mode is successful</li></ol>png]]
root@orangepi{| class="wikitable" style="background-color:~#ffffdc;width:800px;" |-| <big>'''It can be seen from the above table that I2C4_M0 and SPI3_M0 are pins. The two cannot be opened at the same time. I2C3_M0 and UART3_M0 are also reused. The two cannot be opened at the same time'''</wiringOPbig>|}{| class="wikitable" style="background-color:# ffffdc;width:800px;" |-| <big>'''gpio read 5In the Linux system, the I2C in 40Pin is closed by default, and it needs to be opened manually to use.'''
'''1'''
<ol start="5" style="list-style-type: decimal;"><li>Then execute '''Add the configuration of the red font part below to the/boot/orangepiEnv.txt, and then restart the following command Linux system to set open the GPIO port as I2C2, i2C3, and I2C4 at the drop-down mode</li>same time. If you only need to open one, then fill in one.'''</olbig>
root@orangepi:~/wiringOP# '''gpio mode 5 down'''
<ol start="6" style="list-style-typeorangepi@orangepi: decimal;"><li>Then enter the following command to read the level of the GPIO port. If the level is 0, it means that the drop -down mode is set successfully<~$ '''sudo vim /li><boot/ol>orangepiEnv.txt'''
root@orangepi:~/wiringOP# '''gpio read 5<span style="color:#FF0000">overlays=i2c2-m1 i2c3-m0 i2c4-m0</span>'''|}</ol><ol start="2" style="list-style-type: decimal;"><li>After starting the Linux system, first confirm the I2C device node under/dev.</li>
{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~# '''0ls /dev/i2c-*'''
/dev/i2c-0 '''/dev/i2c-2''' '''/dev/i2c-3''' '''/dev/i2c-4''' /dev/i2c-6|}</ol><span idol start="pin3" style="list-spistyle-testtype: decimal;"><li>Then connect a I2C device on the I2C pin of the 40PIN connector. Here is an example of the DS1307 RTC module.</spanli>=== 40pin SPI Test ===
# From the schematic diagram of the 40PIN interface, the SPI available for Orange Pi 3B is spi3{| class="wikitable" style="width:800px;text-align: center;"|-||i2c2-m1|i2c3-m0|i2c4-m0|-| Sda Pin|Corresponding to No. 3 pin|Corresponding to No. 27 pin|Corresponding to No. 19 pin|-| Sck Pin|Corresponding to No. 5 pin|Corresponding to No. 28 pin|Corresponding to No. 23 pin|-| Vcc Pin|Corresponding to No. 1 pin|Corresponding to No. 1 pin|Corresponding to No. 1 pin|-| Gnd Pin|Corresponding to No. 6 pin|Corresponding to No. 6 pin|Corresponding to No. 6 pin|}
[[File:pi3b-img264img273.png|577x193px]]</ol><ol start="4" style="list-style-type: decimal;"><li>Then use the '''i2cdetect -y''' command If the address of the connected I2C device can be detected, it means that the I2C can be used normally</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ sudo i2cdetect -y 2 #i2c2 command
'''In the Linux system, the SPI3 in 40pin is closed by default, and it needs to be opened manually to use.'''orangepi@orangepi:~$ sudo i2cdetect -y 3 #i2c3 command
'''Add the configuration of the red font part below to the /boot/orangepiEnv.txt, and then restart the Linux system to open the spi3.'''orangepi@orangepi:~$ sudo i2cdetect -y 4 #i2c4 command|}
orangepi@orangepi:~$ '''sudo vim /boot/orangepiEnv.txt'''<div class="figure">
'''overlays=spi3[[File:pi3b-m0-cs0-spidev'''img274.png]]
</div></ol><ol start="25" style="list-style-type: decimal;"><li>First check whether there is a You can then run the time of the ds '''spidev3ds1307.0py''' device node test program in '''examples''' to read the Linux system. If it exists, it means that the SPI3 has been set. You can use it directlyRTC time</li><{| class="wikitable" style="width:800px;" |-| root@orangepi:~/ol>wiringOP-Python# '''cd examples'''
orangepiroot@orangepi:~$ /wiringOP-Python/examples# '''ls /dev/spidev3python3 ds1307.0py --device \'''
'''"/dev/spidev3.0i2c-4"'''
<ol start="3" style="listThu 2023-style01-type05 14: decimal;"><li>Do not shorten the two pins of the SPI3 MOSI and MISO, and run the output result of the spidev_test as shown below. You can see that the data of TX and RX is inconsistent</li></ol>57:55
orangepi@orangepi:~$ '''sudo spidev_test Thu 2023-v 01-D /dev/spidev3.0'''05 14:57:56
spi modeThu 2023-01-05 14: 0x057:57
bits per word: 8^C
max speed: 500000 Hz (500 KHz)exit|}</ol><span id="pins-uart-test."></span>
TX | FF FF FF FF FF FF === 40pin'''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 | ......@.…▒..................▒.s UART test ===
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 | ............................…. <ol start="4" style="list-style-type: decimal;"><li>Then # As can be seen from the two pins of table below, the SPI3 MOSI (No. 19 pins in the 40pin interface) UART available for Orange Pi 3B is UART3, UART7 and MISO (NoUART9. 21 in the 40PIN interface) run the output There are three sets of SPIDEV_TEST as follows.You can see that sending and receiving data is the same.</li></ol>UART bus
::[[File:pi3b-img265img268.png|577x83px]]
orangepi@orangepi:~$ :{| class="wikitable" style="width:800px;background-color:#ffffdc;" |-| <big>'''sudo spidev_test -v -D /dev/spidev3.0As can be seen from the above table, I2C3_M0 and UART3_M0 are reused by pins, and the two cannot be opened at the same time'''</big>|}
spi mode: 0x0:{| class="wikitable" style="width:800px;background-color:#ffffdc;" |-bits per word: 8| <big>'''In the Linux system, the UART in 40pin is closed by default, and it needs to be opened manually to use.'''
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 | ......@.…▒..................▒. <span id="pin-i2c-test"></span>=== 40pin I2C Test === # From the table below, the I2C available for Orange Pi 3B is I2C2, I2C3, and I2C4 a total of three groups of I2C bus. [[File:pi3b-img266.png|576x160px]] '''It can be seen from the above table that i2c4_m0 and spi3_m0 are pins. The two cannot be opened at the same time. i2c3_m0 and uart3_m0 are also reused. The two cannot be opened at the same time''' '''In the Linux system, the i2c in 40Pin is closed by default, and it needs to be opened manually to use.''' '''Add the configuration of the red font part below to the /boot/orangepiEnv.txt, and then restart the Linux system to open the i2c2UART3, i2c3UART7, and i2c4 UART9 at the same time. If you only need to open one, then you can fill in one.'''</big>
orangepi@orangepi:~$ '''sudo vim /boot/orangepiEnv.txt'''
'''<span style="color:#FF0000">overlays=i2c2uart3-m1 i2c3m0 uart7-m0 i2c4m2 uart9-m0m2</span>'''|}
<ol start="2" style="list-style-type: decimal;">
<li>After starting entering the Linux system, first confirm that the i2c whether there is a device node exists corresponding to UART under/dev</li></ol>
{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~# '''ls /dev/i2c-ttyS*''' /dev/i2c-0 '''/dev/i2c-2''' '''/dev/i2c-3''' '''/dev/i2c-4''' /dev/i2c-6
/dev/ttyS1 '''/dev/ttyS3 /dev/ttyS7 /dev/ttyS9'''
|}
</ol>
<ol start="3" style="list-style-type: decimal;">
<li>Then connect a i2c device on start testing the i2c pin UART interface, and first use the RX and TX of the 40Pin connectorUART interface to be tested by DuPont</li></ol>
{| class="wikitable" style="width:800px;text-align: center;"
|-
|
|i2c2-m1uart3|i2c3-m0uart7|i2c4-m0uart9
|-
| Sda Tx Pin|Corresponding to No. 3 the 28 pin|Corresponding to No. 27 the 16 pin|Corresponding to No. 19 the 29 pin
|-
| Sck Rx Pin|Corresponding to No. 5 the 27 pin|Corresponding to No. 28 the 15 pin|Corresponding to No. 23 pin|-| Vcc Pin|Corresponding to No. 1 pin|Corresponding to No. 1 pin|Corresponding to No. 1 pin|-| Gnd Pin|Corresponding to No. 6 pin|Corresponding to No. 6 pin|Corresponding to No. 6 the 7 pin
|}
</ol>
<ol start="4" style="list-style-type: decimal;">
<li>Then use <p>Use the '''i2cdetect -yserialTest.py''' command if program in Examples to test the address loop function of the connected I2C device serial port. If you can be detectedsee the printing below, it means that the I2C can be used normallyserial communication is normal</p><ol style="list-style-type: lower-alpha;"><li>Test UART3</olli>{| class="wikitable" style="width:800px;" |-| root@orangepi:~/wiringOP-Python/examples# '''python3 serialTest.py --device \'''
orangepi@orangepi:~$ sudo i2cdetect -y 2 #i2c2 command'''"/dev/ttyS3"'''
orangepi@orangepi:~$ sudo i2cdetect -y 3 #i2c3 command
orangepi@orangepiOut: 0:~$ sudo i2cdetect -y 4 #i2c4 command> 0
<div class="figure">Out: 1: -> 1
[[FileOut: 2:pi3b-img267.png|476x179px|UN}~]Q}T_70O%Z%RNO8R@YE]]> 2
</div><span id="pinOut: 3: -uart-test"></span>=== 40pin UART test ===> 3
# As can be seen from the table below, the uart available for Orange Pi 3B is uart3, uart7, and uart9. There are three sets of uart busOut: 4:^C
[[Fileexit|}</ol><ol start="2" style="list-style-type:pi3blower-img268alpha;"><li>Test UART7</li>{| class="wikitable" style="width:800px;" |-| root@orangepi:~/wiringOP-Python/examples# '''python3 serialTest.png|575x160px]]py --device \'''
'''As can be seen from the above table, i2c3_m0 and uart3_m0 are reused by pins, and the two cannot be opened at the same time"/dev/ttyS7"'''
'''In the Linux system, the uart in 40pin is closed by default, and it needs to be opened manually to use.'''
'''Add the configuration of the red font part below to the /boot/orangepiEnv.txt, and then restart the Linux system to open the uart3, uart7, and uart9 at the same time. If you only need to open one, you can fill in one..'''Out: 0: -> 0
orangepi@orangepiOut:~$ '''sudo vim /boot/orangepiEnv.txt'''1: -> 1
'''overlays=uart3Out: 2: -m0 uart7-m2 uart9-m2'''> 2
<ol start="2" style="list-styleOut: 3: -type: decimal>"><li>After entering the Linux system, first confirm whether there is a device node corresponding to uart under/dev</li></ol>3
orangepi@orangepiOut:~# '''ls /dev/ttyS*'''4:^C
exit|}</dev/ttyS1 '''/dev'''/'''ttyS3 /dev/ttyS7 /dev/ttyS9'''ol><ol start="3" style="list-style-type: decimallower-alpha;"><li>Then start testing the uart interface, first use the rx and tx of the uart interface to be tested by DuPontTest UART9</li></ol> {| class="wikitable" style="width:800px;"
|-
||uart3|uart7|uart9|root@orangepi:~/wiringOP-| Tx pin|Corresponding to the 28 pin|Corresponding to the 16 pin|Corresponding to the 29 pin|Python/examples# '''python3 serialTest.py -| Rx Pin|Corresponding to the 27 pin|Corresponding to the 15 pin|Corresponding to the 7 pin|}-device \'''
[[File:pi3b-img269.png|545x134px]] <ol start="4" style="list-style-type: decimal;"><li><p>Use the '''gpio serial"/dev/ttyS9"''' command to test the loop function of the serial port as shown below. If you can see the following printing, it means that the serial communication is normal</p><ol style="list-style-type: lower-alpha;"><li>Test UART3</li></ol></li></ol>
orangepi@orangepi:~$ '''sudo gpio serial /dev/ttyS3'''
[sudo] password for orangepi: #Enter the password here.
Out: 0: -> 0
Out: 3: -> 3
Out: 4: -> 4^C
Out: 5: exit|}</ol></li></ol><span id="hardware-> 5^Cwatch-the-door-dog-test"></span>
<ol start="2" style="list-style-type: lower-alpha;"><li>Test UART7</li></ol>Hardware watch the door dog test ==
orangepi@orangepi:~$ '''sudo gpio serial /dev/ttyS7'''The WatchDog_test program is pre -installed in the Linux system released by Orange PI, which can be tested directly.
[sudo] password for orangepiThe method of running the WatchDog_test program is shown below: #Enter the password here.
Out: 0<ol style="list-style-type: lower->alpha; 0"><li><p>The second parameter 10 indicates the counting time of the door. If there is no dog feeding in this time, the system will restart.</p></li><li><p>We can feed the dog by pressing any keys on the keyboard (except ESC). After the dog is fed, the program will print a line of Keep Alive to indicate that the dog is successful</p></li>
Out{| class="wikitable" style="width: 1800px;" |-| orangepi@orangepi: -> 1~$ '''sudo watchdog_test 10'''
Out: 2: -> 2open success
Out: 3: options is 33152,identity is sunxi-> 3wdt
Output_usr return,if 0,success: 4: -> 40
OutThe old reset time is: 5: -> 5^C16
<ol start="3" style="listreturn ENOTTY,if -style-type1,success: lower-alpha;"><li>Test UART9</li></ol>0
orangepi@orangepireturn ENOTTY,if -1,success:~$ '''sudo gpio serial /dev/ttyS9'''0
[sudo] password for orangepiput_user return,if 0,success: #Enter the password here.0
Out: put_usr return,if 0,success: -> 0
Out: 1: -> 1keep alive
Out: 2: -> 2keep alive
Out: 3: keep alive|}</ol><span id="check-> 3the-serial-number-of-the-rk3566-chip"></span>
Out: 4: -> 4== Check the serial number of the RK3566 chip ==
Out: 5: -> 5^CThe commands of the RK3566 chip serial number are shown below. The serial number of each chip is different, so you can use the serial number to distinguish multiple development boards.
<span id{| class="pwmwikitable" style="width:800px;" |-test-method"></span>=== PWM test method ===| orangepi@orangepi:~$ '''cat_serial.sh'''
# From the table below, the pwm11 available for Orange Pi 3BSerial : '''8fa18eaf489041f0'''|}
[[File:pi3b<span id="the-img270.png|575x160px]]method-of-downloading-and-installing-the-balenaetcher-version-of-arm64"></span>
'''In == The method of downloading and installing the Linux system, the pwm in 40pin is closed by default, and it needs to be opened manually to use..'''balenaEtcher version of arm64 ==
'''Add the configuration <ol style="list-style-type: decimal;"><li><p>The download address of Balenaetcher ARM64 version is: </p><ol style="list-style-type: lower-alpha;"><li>The download address of the red font part Deb installation package is shown below to the /boot/orangepiEnv.txt, and then restart the Linux system it needs to be installed to open the pwm11.'''use</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo vim https://github.com/Itai-Nelken/BalenaEtcher-arm/releases/download/bootv1.7.9/orangepiEnvbalena-etcher-electron_1.txt7.9+5945ab1f_arm64.deb'''|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li>The download address of the Appimage version that does not need to be installed is shown below: </li>{| class="wikitable" style="width:800px;" |-| '''overlays=pwm11https://github.com/Itai-Nelken/BalenaEtcher-arm/releases/download/v1.7.9/balenaEtcher-1.7.9+5945ab1f-m1arm64.AppImage'''|}
<ol startdiv class="2figure" style="list-style-type: decimal;"><li>After opening a pwm, a pwmchipX (X is a specific number) will be available in'''/sys/class/pwm/'''</li></ol>
orangepi@orangepi[[File:~$ '''ls /sys/class/pwm/'''pi3b-img275.png]]
pwmchip0 pwmchip1</div></ol></li></ol><ol start="2" style="list-style-type: decimal;"><li><p>How to install and use the deb version of Balenaetcher: </p><ol style="list-style-type: lower-alpha;"><li>deb version of Balenaetcher installation commands as shown below: </li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo apt install -y \'''
'''--fix-broken ./balena-etcher-electron_1.7.9+5945ab1f_arm64.deb'''|}</ol><ol start="32" style="list-style-type: decimallower-alpha;"><li><p>Which pwmchip corresponds to pwm11 above? Let's first check out After the output of '''ls /sys/class/pwm/ -l''' command, as shown below: </p></li><li><p>The base address deb version of the pwm11 register Balenaetcher is Fe6F0030. Then see the output of '''ls /sys/class/pwm/ -l''' commandinstalled, you it can see that the fe6f0030.pwm is connected to the pwmchip1, so be opened in the PWM11 corresponding pwmchip is pwmchip1</p>Application</li></ol>
<div class="figure">
[[File:pi3b-img271img89.png|576x46px|RCUS$_~VYM{4ZS]_L}DNZQR]]
</div></ol><ol start="53" style="list-style-type: decimallower-alpha;"><li>Then use the following command to allow pwm11 to output a 50Hz square wave (please switch to the root user first, and then execute the following command)The interface after Balenaetcher is opened is shown below: </li></ol>
root@orangepi:~# '''echo 0 > /sys/<div class/pwm/pwmchip1/export'''="figure">
root@orangepi[[File:~# '''echo 20000000 > /sys/class/pwm/pwmchip1/pwm0/period'''pi3b-img276.png]]
root</div></ol></li></ol><ol start="3" style="list-style-type: decimal;"><li><p>How to use the AppImage version of balenaEtcher: </p><ol style="list-style-type: lower-alpha;"><li>First add permissions to Balenaetcher</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~# /Desktop$ '''echo 1000000 > /sys/class/pwm/pwmchip1/pwm0/duty_cyclechmod +x balenaEtcher-1.7.9+5945ab1f-arm64.AppImage'''|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li>Then select the AppImage version balenaEtcher right -click the mouse, and then click Execute to open balenaEtcher</li>
root@orangepi[[File:~# '''echo 1 > pi3b-img277.png]]</sysol></classli></pwmol><span id="the-installation-method-of-the-bt-panel-linux-panel"></pwmchip1/pwm0/enable'''span>
[[File:pi3b== The installation method of the Bt-img272.png|575x346px]]Panel Linux panel ==
<span id{| class="wikitable" style="howbackground-tocolor:#ffffdc;width:800px;" |-install| <big>'''Bt-Panel Linux panel is a server management software that improves operation andmaintenance efficiency. It supports more than 100 server management functions such as one -use-wiringopclick LAMP/LNMP/cluster/monitoring/website/FTP/database/Java (excerpted from the [https://www.bt.cn/new/index.html official website of the Bt-python">Panel])'''</spanbig>== How to install and use Wiringop-Python ==|}
# First of all, the size of the'''/tmp''Wiringop-Python ' space is needed. After setting, you need to '''<span style="color:#FF0000">restart the library of the Python language version Linux system of Wiringop. It is used to operate the development board</span>'''s GPIO, I2C, SPI and UART hardware resources such as the development board in the Python program.'''command is shown below:
::{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''Please note that all the following command below is operated under the root user.sudo sed -i 's/nosuid/&,size=2G/' /etc/fstab'''
<span id="wiringop-python-installation-method"></span>orangepi@orangepi:~$ '''sudo reboot'''=== Wiringop-Python installation method ===|}
# First install <ol start="2" style="list-style-type: decimal;"><li>After restarting, you can see that the dependency packagesize of the'''/tmp''' space has become 2G.</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''df -h | grep "/tmp"'''
roottmpfs 2.0G 12K '''<span style="color:#FF0000">2.0G</span>''' 1% /tmp|}</ol><ol start="3" style="list-style-type: decimal;"><li>Then enter the following command in the Linux system to start the installation of the Bt-Panel</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~# $ '''sudo aptinstall_bt_panel.sh'''|}</ol><ol start="4" style="list-style-type: decimal;"><li>Then the pagoda installation program reminds whether to install the '''Bt-get updatePanel''' to the'''/www''' folder, and enter '''<span style="color:#FF0000">y</span>'''at this time</li>{| class="wikitable" style="width:800px;" |-| +----------------------------------------------------------------------
root@orangepi:~# '''sudo apt<p>| Bt-get -y install git swig python3-dev python3-setuptools'''WebPanel FOR CentOS/Ubuntu/Debian</p>
<ol start="2" style="list+--------------------------------------------------------------------style-type: decimal;"><li>Then use the following command to download the source code of wiringOP-Python</li></ol>
'''Note that the following git clone<p>| Copyright © 2015-2099 BT-recursivee command will automatically download the source code of Wiringop, because Wiringop-Python depends on WiringopSOFT(http://www.bt. Please make sure that the download process does not report an error due to network problemscn) All rights reserved.'''</p>
'''If there is a problem with the download code from GitHub, you can use the Wiringop+---------------------------------------------------------------------Python source code that comes with the Linux image directly, and the storage location is:/usr/src/wiringOP-Python'''
root@orangepi:~# '''git clone --recursive https<p>| The WebPanel URL will be http://githubSERVER_IP:8888 when installed.com/orangepi-xunlong</wiringOP-Python -b next'''p>
root@orangepi:~# '''cd wiringOP+----------------------------------------------------------------------Python'''
root@orangepi:~/wiringOP-Python# '''git submodule update --init --remote'''
Do you want to install Bt-Panel to the /www directory now?(y/n): '''<span style="color:#FF0000">y</span>'''|}</ol><ol start="35" style="list-style-type: decimal;"><li>Then use you have to wait patiently. When you see the following command to compile wiringOP-Python and install printing information below the terminal output, it into means that the Linux system of pagoda has been installed. The entire installation process takes about 34 minutes. There may be some differences according to the development boarddifference in network speed</li></ol>
root@orangepi[[File:~# pi3b-img278.png|800px]]</ol><ol start="6" style="list-style-type: decimal;"><li><p>At this time, enter the '''cd wiringOP-Pythonpanel address''' displayed above in the browser to open the login interface of the pagoda Linux panel, and then enter the '''username''' and '''password'''displayed in the corresponding position to log in to the Bt-Panel<br />[[File:pi3b-img279.png|1200px]]</p></li><li><p>After successfully logging in to the pagoda, the following welcome interface will pop up. First, please take the intermediate user notice to read to the bottom, and then you can choose "I have agreed and read" User Agreement ", and then click" Enter the panel " You can enter the Bt-Panel</p></li>
root@orangepi[[File:~pi3b-img280.png|1200px]]</wiringOPol><ol start="8" style="list-Python# style-type: decimal;"><li>After entering the Bt-Panel, you will first prompt that you need to bind the account of the Bt-Panel official website. If you do n't have an account, you can go to the pagoda's official website ('python3 generate-bindings''https://www.py > bindingsbt.icn''') to register one.</li>
root@orangepi[[File:~pi3b-img281.png|1200px]]</wiringOPol><ol start="9" style="list-Python# '''sudo python3 setupstyle-type: decimal;"><li>The final display interface is shown in the figure below.py install'''You can intuitively see some status information of the development board Linux system, such as load state, CPU usage, memory usage and storage space usage</li>
[[File:pi3b-img282.png|1200px]]</ol><ol start="410" style="list-style-type: decimal;"><li>Then enter More functions of the following command. If there is a help information output, it means that WiringopBt-Python is successfully installed. Press the '''q''' key Panel can refer to exit the interface of the help following informationto explore by yourself</li></ol>
root@orangepi{| class="wikitable" style="width:800px;" |-| Manual: [http:~/wiringOP-Python# /docs.bt.cn '''python3 -c "import wiringpi; help(wiringpi)"http://docs.bt.cn''']
Help on module wiringpiForum address:[https://www.bt.cn/bbs '''https://www.bt.cn/bbs''']
NAMEGitHub Link: '''https://github.com/aaPanel/BaoTa'''|}</ol><span id="set-the-chinese-environment-and-install-chinese-input-method"></span>
wiringpi== Set the Chinese environment and install Chinese input method ==
DESCRIPTION{| 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>|}
# This file was automatically generated by SWIG (http:<span id="debian-system-installation-method"><//www.swig.org).span>=== Debian system installation method ===
# Version 4.0.2 # # Do not make changes to this file unless you know what you are doing--modify # the SWIG interface file instead. <ol start="5" style="list-style-type: decimal;"><li><p>Test whether the Wiringop-Python is installed successfully under First set the Python command line is shown below: default '''locale''' as Chinese</p>
<ol style="list-style-type: lower-alpha;">
<li>First use Enter the Python3 command below to enter the command line mode of Python3</li></ol></li></ol> root@orangepi:~# start configured '''python3locale'''</li>
{| class="wikitable" style="width:800px;"
|-
|
orangepi@orangepi:~$ '''sudo dpkg-reconfigure locales'''
|}
</ol>
<ol start="2" style="list-style-type: lower-alpha;">
<li>Then import select '''zh_CN.UTF-8 UTF-8''' in the pop-up interface (to move up and down through the upper and lower direction buttons on the Python module of WiringPi</li></ol> keyboard, select it through the space key, and finally move the cursor to '''>>lt;OK> '''import wiringpi;'''through the TAB key, then press the ENTER key )</li>
[[File:pi3b-img283.png|1200px]]
</ol>
<ol start="3" style="list-style-type: lower-alpha;">
<li>Enter the following command to view the help information of Wiringop-Python, and press Then set the default '''locale''' as '''qzh_CN.UTF-8''' key to exit the interface of the help information</li></ol>
>[[File:pi3b-img284.png|1200px]]</ol><ol start="4" style="list-style-type: lower-alpha;>>"><li>After exiting the interface, the '''locale''' settings will be started. The output displayed by the command line is shown below</li>{| class="wikitable" style="width:800px; " |-| orangepi@orangepi:~$ '''help(wiringpi)sudo dpkg-reconfigure locales'''
Help on module wiringpi:Generating locales (this might take a while)...
NAME:en_US.UTF-8... done
wiringpi:zh_CN.UTF-8... done
DESCRIPTIONGeneration complete.|}</ol></li></ol><ol start="2" style="list-style-type: decimal;"><li>Then open '''Input Method'''</li>
# This file was automatically generated by SWIG (http[[File:pi3b-img285.png]]</ol><ol start="3" style="list-style-type: decimal;"><li>Then select '''OK'''</www.swig.org).li>
# Version [[File:pi3b-img286.png]]</ol><ol start="4.0.2" style="list-style-type: decimal;"><li>Then select '''Yes'''</li>
#[[File:pi3b-img287.png]]</ol><ol start="5" style="list-style-type: decimal;"><li>Then select '''fcitx'''</li>
# Do not make changes to this file unless you know what you are doing[[File:pi3b-img288.png]]</ol><ol start="6" style="list-modifystyle-type: decimal;"><li>Then select '''OK'''</li>
[[File:pi3b-img289.png]]</ol><ol start="7" style="list-style-type: decimal;"><li><p>'''<span style="color:# FF0000">Then restart the SWIG interface file instead.Linux system to make the configuration effective</span>'''</p></li><li><p>Then open '''Fcitx configuration'''</p></li>
CLASSES[[File:pi3b-img290.png]]</ol><ol start="9" style="list-style-type: decimal;"><li>Then click the + of the position shown in the figure below</li>
builtins[[File:pi3b-img291.objectpng]]</ol><ol start="10" style="list-style-type: decimal;"><li>Then search '''Google Pinyin''' and click '''OK'''</li>
GPIO<div class="figure">
I2C[[File:pi3b-img292.png]]
Serial</div></ol><ol start="11" style="list-style-type: decimal;"><li>Then put '''Google Pinyin''' to the front</li>
nes[[File:pi3b-img293.png]]
class GPIO(builtins[[File:pi3b-img294.object)png]]</ol><ol start="12" style="list-style-type: decimal;"><li>Then open the '''Geany''' editor to test the Chinese input method</li>
| GPIO(pinmode[[File:pi3b-img295.png]]</ol><ol start=0)"13" style="list-style-type: decimal;"><li>The Chinese input method test is shown below</li>
[[File:pi3b-img296.png]]</ol><ol start="14" style="list-style-type: decimal;"><li><p>You can switch the Chinese and English input method through the '''Ctrl+Space''' shortcut</p></li><li><p>If the entire system is required as Chinese, the variables in '''/etc/default/locale''' can be set to '''zh_CN.UTF-8'''</p></li>{|class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo vim /etc/default/locale''' <p># File generated by update-locale</p>
>>>LC_MESSAGES='''<span style="color:#FF0000">zh_CN.UTF-8</span>'''
LANG='''<span idstyle="pin-gpio-port-test-1color:#FF0000">zh_CN.UTF-8</span>=== 40pin GPIO port test ==='''
LANGUAGE='''Wiringop<span style="color:#FF0000">zh_CN.UTF-8</span>'''|}</ol><ol start="16" style="list-Python is the same as Wiringop. You can also determine which GPIO pink can be determined by specifying the WPI number. Because there is no command to check the WPI number in Wiringopstyle-Python, you can only check type: decimal;"><li>Then '''<span style="color:#FF0000">restart the board WPI number and physical physical physics through the GPIO command in Wiringop. The corresponding relationship of the pin.system</span>'''to see the system displayed as Chinese</li>
[[File:pi3b-img297.png]]<div class/ol><span id="figurethe-installation-method-of-ubuntu-20.04-system"></span>
[[File:pi3b-img258=== The installation method of Ubuntu 20.png|575x355px|66AC(IBG%N8L@Y7(1BZPS`N]]04 system ===
</div># Below the No. 7 pin — corresponding to GPIO4_a4 -corresponding WPI serial number 2 -to demonstrate how to set the height of the GPIO portFirst open '''Language Support'''
::[[File:pi3b-img259img298.png|576x120px]]
<ol start="2" style="list-style-type: decimal;">
<li><p>The steps of the command test are shown below directly: </p><ol style="list-style-type: lower-alpha;"><li>First set the GPIO port to the output mode. The first parameter of the Then find '''pinModeChinese (China)''' function is the serial number of the wpi corresponding to the pin, and the second parameter is the GPIO modeoption</li></ol></li></ol>
root@orangepi[[File:~pi3b-img299.png]]</wiringOPol><ol start="3" style="list-Python# style-type: decimal;"><li>Then use the left mouse button to select '''python3 -c "import wiringpi; \Chinese (China)'''and hold it down, and then drag it up to the beginning. The display is shown below: </li>
'''from wiringpi import GPIO; wiringpi[[File:pi3b-img300.wiringPiSetup() ; \'''png]]
{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''wiringpi.pinMode(2Note that this step is not easy to drag, GPIOplease try more patiently.OUTPUT) ; "'''</big>|}</ol><ol start="24" style="list-style-type: lower-alphadecimal;"><li>Then set select the GPIO port output low level. After setting, you can use the voltage of the voltage of '''Apply System-Wide''' to apply the universal meter Chinese settings to measure the pins. If it is 0V, it means that the low -power flat is successfulentire system</li></ol>
root@orangepi[[File:~pi3b-img301.png]]</wiringOPol><ol start="5" style="list-style-Python# type: decimal;"><li>Then set the '''Keyboard input method system''' to '''python3 -c "import wiringpi; \fcitx'''</li>
[[File:pi3b-img302.png]]</ol><ol start="6" style="list-style-type: decimal;"><li><p>'''<span style="color:#FF0000">Then restart the Linux system to make the configuration effective</span>'''</p></li><li><p>After re -entering the system, please do ''from wiringpi import GPIO; wiringpi.wiringPiSetup() ;\'not ask me again'''at the interface below, and then determine whether the standard folder should be updated as Chinese based on your preference.</p></li>
'''wiringpi[[File:pi3b-img303.digitalWrite(2, GPIO.LOW)"png]]</ol><ol start="8" style="list-style-type: decimal;'''"><li>Then you can see that the desktop is displayed as Chinese</li>
[[File:pi3b-img304.png]]</ol><ol start="39" style="list-style-type: lower-alphadecimal;"><li>Then set we can open the GPIO port output high level. After setting'''Geany''' to test Chinese input method , you can use and the value of the voltage of the pins with a multimeter. If it way to open is 3.3V, it means that shown in the high -power flat is successful.figure below</li></ol>
root@orangepi[[File:~pi3b-img305.png]]</wiringOPol><ol start="10" style="list-style-Python# type: decimal;"><li>After opening '''Geany''', the default is an English input method. We can switch into Chinese input method through the '''python3 -c "import wiringpi; \Ctrl+Space'''shortcut keys, and then we can enter Chinese</li>
'''from wiringpi import GPIO; wiringpi[[File:pi3b-img306.wiringPiSetup() ;\'''png]]</ol><span id="the-installation-method-of-ubuntu-22.04-system"></span>
'''wiringpi=== The installation method of ubuntu 22.digitalWrite(2, GPIO.HIGH)"'''04 system ===
<ol start="3" style="list-style-type: decimal;"><li><p>The steps of testing in the command line of Python3 are shown below: </p><ol style="list-style-type: lower-alpha;"><li># First use the Python3 command to enter the command line mode of Python3</li></ol></li></ol>open '''Language Support'''
root@orangepi:~# '''python3''':[[File:pi3b-img298.png]]
<ol start="2" style="list-style-type: lower-alphadecimal;"><li>Then import the Python module of WiringPifind '''Chinese (China)''' option</li></ol>
>>>[[File:pi3b-img307.png]]</ol><ol start="3" style="list-style-type: decimal; "><li>Then use the left mouse button to select '''import wiringpiChinese (China)'''and hold it down, and then drag it up to the beginning. The display after dragging is shown in the figure below: </li>
>>> '''from wiringpi import GPIO'''[[File:pi3b-img308.png]]
{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''Note that this step is not easy to drag, please try more patiently.'''</big>|}</ol><ol start="34" style="list-style-type: lower-alphadecimal;"><li>Then set the GPIO port as the output mode. The first parameter of select the '''pinModeApply System-Wide''' function is to apply the serial number of the wpi corresponding Chinese settings to the pin, and the second parameter is the GPIO mode.entire system</li></ol>
>>>[[File:pi3b-img309.png]]</ol><ol start="5" style="list-style-type: decimal; "><li><p>'''<span style="color:#FF0000">Then restart the Linux system to make the configuration effective</span>'''</p></li><li><p>After re -entering the system, please '''wiringpi.wiringPiSetup()do not ask me again'''at the interface below, and then determine whether the standard folder should be updated as Chinese based on your preference</p></li>
0[[File:pi3b-img303.png]]</ol><ol start="7" style="list-style-type: decimal;"><li>Then you can see that the desktop is displayed as Chinese</li>
>[[File:pi3b-img304.png]]</ol><ol start="8" style="list-style-type: decimal;>> '''wiringpi.pinMode(2, GPIO.OUTPUT)'''"><li>Then open the Fcitx5 configuration program</li>
[[File:pi3b-img310.png]]</ol><ol start="49" style="list-style-type: lower-alphadecimal;"><li>Then set the GPIO port output low level. After setting, you can choose to 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.Pinyin input method</li></ol>
>>> '''wiringpi.digitalWrite(2, GPIO.LOW)'''<div class="figure">
<ol start="5" style="list-style-type[[File: lowerpi3b-alpha;"><li>Then set the GPIO port output high levelimg311. After setting, you can use the value of the voltage of the pins with a multimeter. If it is 3.3V, it means that the high -power flat is successful</li></ol>png]]
></div></ol><ol start="10" style="list-style-type: decimal;>> '''wiringpi.digitalWrite(2"><li>The interface after the selection is shown below, GPIO.HIGH)'''then click OK</li>
[[File:pi3b-img312.png]]</ol><ol start="411" style="list-style-type: decimal;"><li>Wiringop-Python Sets GPIO high and low levels in the Python code. For reference to Then we can open the '''blink.pyGeany''' to test program in ExamplesChinese input method, and the voltage of the '''blink.py''' test program will set up the voltage of all GPIO ports way to open is shown in the development board 40 PINfigure below</li></ol>
root@orangepi[[File:~pi3b-img305.png]]</wiringOPol><ol start="12" style="list-Python# style-type: decimal;"><li>After opening '''Geany'''cd examples, it is still an English input method by default. We can switch into Chinese input methods through the '''Ctrl+Space''' shortcut keys, and then we can enter Chinese</li>
root@orangepi[[File:~pi3b-img313.png]]</wiringOPol><span id="how-to-remotely-log-in-to-the-linux-system-Pythondesktop-method"></examples# '''ls blink.py'''span>
'''blink.py'''== How to remotely log in to the Linux system desktop method ==
root@orangepi{| class="wikitable" style="background-color:#ffffdc;width:~/wiringOP800px;" |-Python/examples| <big>'''# python3 blinkUbuntu Gnome Wayland image does not support Nomachine and VNCs introduced here to remotely log in to the desktop.py'''</big>|}
<span id="pinuse-spinomachine-testremote-1login"></span>=== 40pin SPI test Use nomachine remote login ===
{| class="wikitable" style="background-color:# From ffffdc;width:800px;" |-| <big>'''Make sure the schematic diagram of Ubuntu or Debian system installed on the 40pin interfacedevelopment 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 SPI available for Orange Pi 3B is spi3use of nomachine. The document links are shown below: '''
[[File'''https:pi3b//knowledgebase.nomachine.com/DT10R00166'''</big>|}{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''Nomachine supports Windows, Mac, Linux, iOS, and Android platforms, so we can remotely log in to control Orange PI development boards through Nomachine on multiple devices. The following demonstrates the Linux system desktop of the Orange PI development board through Nomachine in Windows. For installation methods for other platforms, please refer to the official documentation of Nomachine.'''</big>|}{| class="wikitable" style="background-img264color:#ffffdc;width:800px;" |-| <big>'''Before operation, please ensure that the Windwos computer and the development board are in the same local area network, and can log in to the Ubuntu or Debian system that can log in to the development board normally.png'''</big>|577x193px]]}
<ol style="list-style-type: decimal;"><li><p>First download the nomachine software Linux '''<span style="color:#FF0000">ARM64</span>''In ' DEB version of the installation package, and then install it in the Linux systemof the development board</p><ol style="list-style-type: lower-alpha;"><li>Since RK3566 is a SOC of the ARMV8 architecture, the spi3 in 40pin system we use is closed by defaultUbuntu or Debian, and it needs so you need to be opened manually to usedownload '''NoMachine for ARM ARMv8 DEB''' installation package here. The download link is shown below: </li>{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''Note that this download link may change, please recognize the DEB package of the ARMV8/ARM64 version.'''</big>|}{| class="wikitable" style="width:800px;" |-| [https://www.nomachine.com/download/download&id=112&s=ARM '''https://downloads.nomachine.com/download/?id=118&distro=ARM''']|}
'''Add the configuration of the red font part below to the [[File:pi3b-img314.png]]</boot/orangepiEnv.txtol><ol start="2" style="list-style-type: lower-alpha;"><li>In addition, and then restart you can also download the Linux system installation package to open '''NoMachine''' in the spi4.'''official tools'''.</li>
orangepi@orangepi[[File:~$ '''sudo vim /boot/orangepiEnvpi3b-img315.txt'''png]]
First enter the '''overlays=spi3remote login software-m0-cs0-spidevNomachine'''folder
<ol start="2" style="list-style[[File:pi3b-type: decimal;"><li>First check whether there is a '''spidev3.0''' device node in the Linux systemimg316. If it exists, it means that the SPI3 has been set and can be used directly</li></ol>png]]
orangepi@orangepi:~$ '''ls /dev/spidev3.0''' /dev/spidev3.0Then download the ARM64 version of the DEB installation package
[[File:pi3b-img317.png]]
</ol>
<ol start="3" style="list-style-type: lower-alpha;">
<li><p>Then upload the downloaded '''nomachine_x.x.x_x_arm64.deb''' to the Linux system of the development board.</p></li>
<li><p>Then use the following command to install '''NoMachine''' in the Linux system of the development board</p></li>
{| class="wikitable" style="width:800px;"
|-
|
orangepi@orangepi:~$ '''sudo dpkg -i nomachine_x.x.x_x_arm64_arm64.deb'''
|}
</ol>
</li></ol>
<ol start="2" style="list-style-type: decimal;">
<li>Then download the nomachine software Windows version of the installation package, the download address is shown below</li>
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
|-
|
<big>'''Note that this download link may change.'''</big>
|}
{| class="wikitable" style="width:800px;"
|-
|
'''https://downloads.nomachine.com/download/?id=9'''
|}
[[File:pi3b-img318.png]]
</ol>
<ol start="3" style="list-style-type: decimal;">
<li><p>You can then use the spi back function under the '''spidev_test.py''' program Then install nomachine in ExamplesWindows. The '''spidev_test.py''' program needs to specify Please restart the following two parameters: </p><ol style="list-style-type: lower-alpha;"><li><p>'''--channelcomputer after installation''': Specify the channel number of SPI</p></li><li><p>Then open '''--portNoMachine''': Specify the port number of SPI</p></li></ol></li><li><p>Do not pick up the two pins of the SPI3 MOSI and MISO in short, and run the output result of the spidev_test.py as shown below. You can see that the data of TX and RX are inconsistentWindow</p></li></ol>
root@orangepi[[File:~pi3b-img319.png]]</wiringOPol><ol start="5" style="list-style-Python# '''cd examples'''type: decimal;"><li>After Nomachine starts, it will automatically scan other devices installed in the local area network. After entering the main interface of Nomachine, you can see that the development board is already in the connected device list, and then click the location shown in the red box below in the figure below. Start log in to the Linux system desktop of the development board</li>
root@orangepi[[File:~pi3b-img320.png]]</wiringOPol><ol start="6" style="list-style-Python/examples# type: decimal;"><li>Then click '''python3 spidev_test.py \OK'''</li>
[[File:pi3b-img321.png]]</ol><ol start="7" style="list-style-type: decimal;"><li>Then enter the username and password of the Linux system in the corresponding position in the figure below, and then click '''--channel 3 --port 0OK'''to start logging in</li>
spi mode: 0x0<div class="figure">
max speed[[File: 500000 Hz (500 KHz)pi3b-img322.png]]
Opening device </devdiv></spidev3ol><ol start="8" style="list-style-type: decimal;"><li><p>Then click OK in the next interface</p></li><li><p>Finally, you can see the desktop of the development board Linux system</p><p>[[File:pi3b-img323.0png]]</p></li></ol>
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 |......@.......…|<span id="use-vnc-remote-login"></span>
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 |.............….|=== Use VNC remote login ===
<ol start{| class="5wikitable" style="listbackground-style-typecolor:#ffffdc;width: decimal800px;">|-| <libig>Then use '''Before operation, please ensure that the Windwos computer and the TXD (No. 19 pins development board are in the 40Pin interface) same local area network, and RXD (No. 21 pins you can log in to the 40pin interface) Ubuntu or Debian system of the DuPont line short connection SPI3development board normally. Like sending and receiving data, it means that the SPI3 loop test is normal</li></ol>'''
root@orangepi:~/wiringOP-Python# '''cd examples<span style="color:#FF0000">Ubuntu 20.04 tests many problems with VNC, please do not use this method.</span>'''</big>|}
root@orangepi:~/wiringOP-Python/examples# First run the '''python3 spidev_testset_vnc.py \sh''' script settings, and '''<span style="color:#FF0000">remember to add Sudo permissions</span>'''
::{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''--channel 3 --port 0sudo set_vnc.sh''' You will require a password to access your desktops.
spi mode: 0x0
max speedPassword: 500000 Hz (500 KHz) '''<span style="color:#FF0000">#Set the VNC password here, 8 -bit characters</span>'''
Opening device Verify: '''<span style="color:#FF0000">#Set the VNC password here, 8 -bit characters</dev/spidev3.0span>'''
TX | FF FF FF FF FF FF Would you like to enter a view-only password (y/n)? '''40 00 00 00 00 95<span style="color:#FF0000">n</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 |xauth: file /root/......@.......…|Xauthority does not exist
<span id="pin-i2c-test-1"></span>
=== 40pin I2C test ===
<ol start="5" style="list-style-typeNew 'X' desktop is orangepi3b: decimal;"><li>As can be seen from the table below, the I2C available for Orange Pi 3B is I2C2, I2C3, and I2C4 a total of three groups of I2C bus</li></ol>1
[[File:pi3b-img266.png|576x160px]]
'''It can be seen from the above table that I2C4_M0 and SPI3_M0 are pinsCreating default startup script /root/. The two cannot be opened at the same time. I2C3_M0 and UART3_M0 are also reused. The two cannot be opened at the same time'''vnc/xstartup
'''In the Linux system, the I2C Starting applications specified in 40Pin is closed by default, and it needs to be opened manually to use/root/.'''vnc/xstartup
'''Add the configuration of the red font part below to theLog file is /bootroot/orangepiEnv.txt, and then restart the Linux system to open the I2C2, i2C3, and I2C4 at the same time. If you only need to open one, then fill in onevnc/orangepi3b:1.'''log
orangepi@orangepi:~$ '''sudo vim /boot/orangepiEnv.txt'''
'''overlays=i2c2-m1 i2c3-m0 i2c4-m0'''Killing Xtightvnc process ID 3047
<ol start="6" style="list-style-type: decimal;">
<li>After starting the Linux system, first confirm the I2C device node under/dev.</li></ol>
orangepi@orangepi:~# '''ls /dev/i2c-*'New 'X'desktop is orangepi3b:1
/dev/i2c-0 '''/dev/i2c-2''' '''/dev/i2c-3''' '''/dev/i2c-4''' /dev/i2c-6
<ol start="7" style="list-style-type: decimal;"><li>Then connect a I2C device on the I2C pin of the 40PIN connector. Here is an example of the DS1307 RTC moduleStarting applications specified in /root/.</li><vnc/ol>xstartup
{| class="wikitable"|-||i2c2-m1|i2c3-m0|i2c4-m0|-| Sda Pin|Corresponding to No. 3 pin|Corresponding to No. 27 pin|Corresponding to No. 19 pin|-| Sck Pin|Corresponding to No. 5 pin|Corresponding to No. 28 pin|Corresponding to No. 23 pin|-| Vcc Pin|Corresponding to No. 1 pin|Corresponding to No. 1 pin|Corresponding to NoLog file is /root/. vnc/orangepi3b:1 pin|-| Gnd Pin|Corresponding to No. 6 pin|Corresponding to No. 6 pin|Corresponding to No. 6 pinlog
|}
[[File<ol start="2" style="list-style-type: decimal;"><li><p>The steps of using MobaxTerm software to connect the development board Linux system desktop are shown below: </p><ol style="list-style-type:pi3blower-img273.png|180x153px]]alpha;"><li>First click Session, then select VNC, then fill in the IP address and port of the development board, and finally click OK to confirm</li>
<ol startdiv class="8figure" style="list-style-type: decimal;"><li>Then use the '''i2cdetect -y''' command If the address of the connected I2C device can be detected, it means that the I2C can be used normally</li></ol>
orangepi@orangepi[[File:~$ sudo i2cdetect pi3b-y 2 #i2c2 commandimg324.png]]
orangepi@orangepi</div></ol><ol start="2" style="list-style-type:~$ sudo i2cdetect lower-y 3 #i2c3 commandalpha;"><li>Then enter the password of the previously set VNC</li>
orangepi@orangepi[[File:~$ sudo i2cdetect pi3b-y 4 #i2c4 commandimg325.png]]</ol><ol start="3" style="list-style-type: lower-alpha;"><li><p>The interface after the login is shown as shown in the figure below, and then the desktop of the Linux system can be remotely operated</p><p>[[File:pi3b-img326.png]]</p></li></ol></li></ol>
<div classspan id="figuresome-programming-language-tests-supported-by-linux-system"></span>
[[File:pi3b-img274.png|464x174px|V@(61L~0})Q`8VLBCAYEP[2]]== Some programming language tests supported by Linux system ==
</div><ol start="9" stylespan id="listdebian-stylebullseye-type: decimal;system"><li>You can then run the time of the ds '''ds1307.py''' test program in '''examples''' to read the RTC time</li></olspan>=== Debian Bullseye system ===
root<ol style="list-style-type: decimal;"><li><p>Debian Bullseye is equipped with a gcc compilation tool chain by default, which can directly compile the C language program in the Linux system of the development board</p><ol style="list-style-type: lower-alpha;"><li>The version of the gcc is shown below</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~/wiringOP-Python# $ '''cd examplesgcc --version'''
root@orangepi:~/wiringOPgcc (Debian 10.2.1-Python/examples# '''python3 ds13076) 10.py --device \'''2.1 20210110
'''"/dev/i2c-4"'''Copyright (C) 2020 Free Software Foundation, Inc.
Thu 2023-01-05 14:57:55This is free software; see the source for copying conditions. There is NO
Thu 2023warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.|}</ol><ol start="2" style="list-01style-05 14type:57lower-alpha;"><li>Write C language of '''Hello_world.c''' program</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:56~$ '''vim hello_world.c'''
Thu 2023-01-05 14:57:57
^C<p>#include <stdio.h></p>
exitint main(void)
<span id="pins-uart-test."></span>=== 40pin's UART test ==={
# As can be seen from the table below, the UART available for Orange Pi 3B is UART3, UART7 and UART9. There are three sets of UART bus:printf("Hello World!\n");
[[File:pi3b-img268.png|575x160px]]
'''As can be seen from the above table, I2C3_M0 and UART3_M0 are reused by pins, and the two cannot be opened at the same time''':return 0;
}|}</ol><ol start="3" style="list-style-type: lower-alpha;"><li>Then compile and run '''In the Linux system, the UART in 40pin is closed by default, and it needs to be opened manually to usehello_world.c'''</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''gcc -o hello_world hello_world.c'''
'''Add the configuration of the red font part below to the /boot/orangepiEnv.txt, and then restart the Linux system to open the UART3, UART7, and UART9 at the same time. If you only need to open one, you can fill in one''' orangepi@orangepi:~$ '''sudo vim ./boot/orangepiEnv.txt''' '''overlays=uart3-m0 uart7-m2 uart9-m2hello_world'''
Hello World!
|}
</ol>
</li></ol>
<ol start="2" style="list-style-type: decimal;">
<li>After entering the Linux system, first confirm whether there is a device node corresponding to UART under<p>Debian BullSeye Default with Python3</devp><ol style="list-style-type: lower-alpha;"></li>The specific version of Python is shown below</olli>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''python3'''
orangepi@orangepi:~# '''ls /dev/ttyS*Python 3.9.2'''(default, Feb 28 2021, 17:03:44)
/dev/ttyS1 '''/dev'''/'''ttyS3 /dev/ttyS7 /dev/ttyS9'''[GCC 10.2.1 20210110] on linux
<ol start="3" style="list-style-type: decimalType "help", "copyright""><li>Then start testing the UART interface, and first use the RX and TX of the UART interface to be tested by DuPont</li></ol>"credits" or "license" for more information.
>>>|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li>'''hello_world.py''' program in Python language</li>{| class="wikitable" style="width:800px;"
|-
|orangepi@orangepi:~$ '''vim hello_world.py''' print('Hello World!')|uart3}</ol>|uart7<ol start="3" style="list-style-type: lower-alpha;"><li>The results of running '''hello_world.py''' are shown below</li>{|uart9class="wikitable" style="width:800px;"
|-
| Tx Pin|Corresponding to the 28 pinorangepi@orangepi:~$ '''python3 hello_world.py'''|Corresponding to the 16 pin|Corresponding to the 29 pin|-| Rx Pin|Corresponding to the 27 pin|Corresponding to the 15 pin|Corresponding to the 7 pinHello World!
|}
</ol></li></ol><ol start="43" style="list-style-type: decimal;"><li><p>Use the '''serialTest.py''Debian Bullseye' program in Examples to test the loop function of the serial port. If you can see the printing below, it means s compilation tool and operating environment that the serial communication is normalnot installed in Java by default</p>
<ol style="list-style-type: lower-alpha;">
<li>Test UART3You can use the following command to install OpenJDK. The latest version in Debian Bullseye is openjdk-17</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo apt install -y openjdk-17-jdk'''|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li>After installation, you can check the version of Java</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''java --version'''|}</ol><ol start="3" style="list-style-type: lower-alpha;"><li>Edit the '''hello_world.java''' of the Jave version</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''vim hello_world.java'''
root@orangepi:~/wiringOP-Python/examples# '''python3 serialTest.py --device \'''public class hello_world
'''"/dev/ttyS3"'''{
Out: 0: -> 0public static void main(String[] args)
Out: 1: -> 1{
Out: 2: -System.out.println(>quot;Hello World!"); 2
Out: 3: -> 3}
Out}|}</ol><ol start="4" style="list-style-type: 4lower-alpha;"><li>Then compile and run '''hello_world.java'''</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:^C~$ '''javac hello_world.java'''
exitorangepi@orangepi:~$ '''java hello_world'''
Hello World!|}</ol start="2" style="list-style-type: lower-alpha;"></li>Test UART7</liol><span id="ubuntu-focal-system"></olspan>
root@orangepi:~/wiringOP-Python/examples# '''python3 serialTest.py --device \'''=== Ubuntu Focal system ===
'''"<ol style="list-style-type: decimal;"><li><p>Ubuntu Focal has the GCC compilation tool chain by default, which can compile the C language program directly in the Linux system of the development board.</devp><ol style="list-style-type: lower-alpha;"><li>The version of the gcc is shown below</ttyS7"li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''gcc --version'''
Out: gcc (Ubuntu 9.4.0: -> 1ubuntu1~20.04.1) 9.4.0
Out: 1: -> 1Copyright (C) 2019 Free Software Foundation, Inc.
Out: 2: ->This is free software; 2see the source for copying conditions. There is NO
Outwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.|}</ol><ol start="2" style="list-style-type: 3lower-alpha;"><li>'''hello_world.c''' program to write C language</li>{| class="wikitable" style="width: 800px;" |-> 3| orangepi@orangepi:~$ '''vim hello_world.c'''
Out: 4:^C<p>#include <stdio.h></p>
exit
<ol start="3" style="list-style-type: lower-alpha;"><li>Test UART9</li></ol>int main(void)
root@orangepi:~/wiringOP-Python/examples# '''python3 serialTest.py --device \'''{
''':printf("/dev/ttyS9Hello World!\n"''');
Out: 0: -> 0
Out: 1: ->return 0; 1
Out}|}</ol><ol start="3" style="list-style-type: lower-alpha;"><li>Then compile and run '''hello_world.c'''</li>{| class="wikitable" style="width: 2800px;" |-| orangepi@orangepi: ~$ '''gcc -> 2o hello_world hello_world.c'''
Outorangepi@orangepi: 3: -> 3~$ '''./hello_world'''
OutHello World!|}</ol></li></ol><ol start="2" style="list-style-type: 4decimal;"><li><p>Ubuntu Focal defaults to install Python3</p><ol style="list-style-type:^Clower-alpha;"><li>Python3 specific version is shown below</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''python3'''
exitPython 3.8.10 (default, Nov 14 2022, 12:59:47)
<span id="hardware-watch-the-door-dog-test"></span>[GCC 9.4.0] on linux
== Hardware watch the door dog test ==Type "help", "copyright", "credits" or "license" for more information.
The WatchDog_test >>>|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li>'''hello_world.py''' program is pre in Python language</li>{| class="wikitable" style="width:800px;" |-installed in the Linux system released by Orange PI, which can be tested directly| orangepi@orangepi:~$ '''vim hello_world.py''' print('Hello World!')|}</ol><ol start="3" style="list-style-type: lower-alpha;"><li>The method results of running the WatchDog_test program is '''hello_world.py''' are shown below</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi: ~$ '''python3 hello_world.py'''
Hello World!
|}
</ol>
</li></ol>
<ol start="3" style="list-style-type: decimal;">
<li><p>Ubuntu Focal's compilation tool and operating environment without the installation of Java default</p>
<ol style="list-style-type: lower-alpha;">
<li><p>The second parameter 10 indicates You can use the counting time of the door. If there is no dog feeding in this time, the system will restart.following command to install '''openjdk-17'''</pli>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo apt install -y openjdk-17-jdk'''|}</liol><liol start="2" style="list-style-type: lower-alpha;"><pli>We can feed the dog by pressing any keys on the keyboard (except ESC). After the dog is fedinstallation, you can check the program will print a line version of Keep Alive to indicate that the dog is successful</p>Java</li></ol>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''java --version'''
orangepi@orangepi:~$ '''sudo watchdog_test 10'''openjdk 17.0.2 2022-01-18
open successOpenJDK Runtime Environment (build 17.0.2+8-Ubuntu-120.04)
options is 33152OpenJDK 64-Bit Server VM (build 17.0.2+8-Ubuntu-120.04,identity is sunximixed mode, sharing)|}</ol><ol start="3" style="list-style-type: lower-alpha;"><li>Edit the '''hello_world.java''' of Jave version</li>{| class="wikitable" style="width:800px;" |-wdt| orangepi@orangepi:~$ '''vim hello_world.java'''
put_usr return,if 0,success:0public class hello_world
The old reset time is: 16{
return ENOTTY,if -1,success:0public static void main(String[] args)
return ENOTTY,if -1,success:0{
put_user return,if 0,success:0:System.out.println("Hello World!");
put_usr return,if 0,success:0}
keep alive}|}</ol><ol start="4" style="list-style-type: lower-alpha;"><li>Then compile and run '''hello_world.java'''</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''javac hello_world.java''' orangepi@orangepi:~$ '''java hello_world''' Hello World!|}</ol></li></ol><span id="ubuntu-jammy-system"></span>
keep alive=== Ubuntu jammy system ===
keep alive<ol style="list-style-type: decimal;"><li><p>Ubuntu Jammy is installed with the GCC compilation tool chain by default, which can directly compile the C language program in the Linux system of the development board</p><ol style="list-style-type: lower-alpha;"><li>The version of the gcc is shown below</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''gcc --version'''
<span id="checkgcc (Ubuntu 11.2.0-the-serial-number-of-the-rk3566-chip"></span>== Check the serial number of the RK3566 chip ==19ubuntu1) '''11.2.0'''
The commands of the RK3566 chip serial number are shown below. The serial number of each chip is differentCopyright (C) 2021 Free Software Foundation, so you can use the serial number to distinguish multiple development boardsInc.
orangepi@orangepi:~$ '''cat_serialThis is free software; see the source for copying conditions.sh'''There is NO
Serial warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li>Write the '''8fa18eaf489041f0hello_world.c''' program of c language</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''vim hello_world.c'''
<span id="the-method-of-downloading-and-installing-the-balenaetcher-version-of-arm64"p>#include <stdio.h></spanp>== The method of downloading and installing the balenaEtcher version of arm64 ==
<ol style="list-style-type: decimal;">
<li><p>The download address of Balenaetcher ARM64 version is: </p>
<ol style="list-style-type: lower-alpha;">
<li>The download address of the Deb installation package is shown below, and it needs to be installed to use</li></ol>
</li></ol>
https://github.com/Itai-Nelken/BalenaEtcher-arm/releases/download/v1.7.9/balena-etcher-electron_1.7.9+5945ab1f_arm64.debint main(void)
<ol start="2" style="list-style-type: lower-alpha;"><li>The download address of the Appimage version that does not need to be installed is shown below: </li></ol>{
https://github.com/Itai-Nelken/BalenaEtcher-arm/releases/download/v1.7.9/balenaEtcher-1.7.9+5945ab1f-arm64.AppImageprintf("Hello World!\n");
<div class="figure">
[[File:pi3b-img275.png|527x211px|IMG_256]]return 0;
}|}</divol><ol start="3" style="list-style-type: lower-alpha;"><li>Then compile and run '''hello_world.c'''</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''gcc -o hello_world hello_world.c''' orangepi@orangepi:~$ '''./hello_world''' Hello World!|}</ol></li></ol> <ol start="2" style="list-style-type: decimal;"><li><p>How to install and use the deb version of Balenaetcher: Ubuntu jammy is installed with Python3 by default</p>
<ol style="list-style-type: lower-alpha;">
<li>deb Python3 specific version of Balenaetcher installation commands as is shown below: </li></ol></li></ol>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''python3'''
orangepi@orangepi:~$ Python '''sudo apt install -y \3.10.4'''(main, Apr 2 2022, 09:04:19) [GCC 11.2.0] on linux
'''--fix-broken Type "help", "copyright", "credits" or "license" for more information./balena-etcher-electron_1.7.9+5945ab1f_arm64.deb'''
>>>
|}
</ol>
<ol start="2" style="list-style-type: lower-alpha;">
<li>After the deb version of Balenaetcher is installed, it can be opened Edit '''hello_world.py''' program in the ApplicationPython language</li></ol>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''vim hello_world.py'''
<div class="figure">print('Hello World!')[[File:pi3b-img89.png|507x249px|IMG_256]]}</divol>
<ol start="3" style="list-style-type: lower-alpha;">
<li>The interface after Balenaetcher is opened is results of running '''hello_world.py''' are shown below: </li></ol>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''python3 hello_world.py'''
<div class="figure">Hello World! [[File:pi3b-img276.png|429x263px|IMG_256]]}</ol></divli></ol>
<ol start="3" style="list-style-type: decimal;">
<li><p>How Ubuntu jammy defaults to use the AppImage version of balenaEtcher: compile tools and operating environments that are not installed in Java</p>
<ol style="list-style-type: lower-alpha;">
<li>First add permissions You can use the following command to Balenaetcherinstall openjdk-18</li></ol></li></ol>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~/Desktop$ '''chmod +x balenaEtchersudo apt install -1.7.9+5945ab1fy openjdk-arm64.AppImage18-jdk'''|}</ol>
<ol start="2" style="list-style-type: lower-alpha;">
<li>Then select After installation, you can check the AppImage version balenaEtcher right -click the mouse, and then click Execute to open balenaEtcherof Java</li></ol>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''java --version'''
[[File:pi3bopenjdk 18-img277.png|145x118px]]ea 2022-03-22
<span id="theOpenJDK Runtime Environment (build 18-installationea+36-methodUbuntu-of-the-bt-panel-linux-panel"></span>== The installation method of the Bt-Panel Linux panel ==1)
'''BtOpenJDK 64-Bit Server VM (build 18-ea+36-Panel Linux panel is a server management software that improves operation and maintenance efficiency. It supports more than 100 server management functions such as one Ubuntu-click LAMP1, mixed mode, sharing)|}</LNMP/cluster/monitoring/website/FTP/database/Java (excerpted from ol><ol start="3" style="list-style-type: lower-alpha;"><li>Edit the [https://www'''hello_world.bt.cn/new/index.html official website java''' of the BtJave version</li>{| class="wikitable" style="width:800px;" |-Panel])| orangepi@orangepi:~$ '''vim hello_world.java'''
# First of all, the size of the'''/tmp''' space is needed. After setting, you need to '''restart the Linux system of the development board''', and the command is shown below: public class hello_world
orangepi@orangepi:~$ '''sudo sed -i 's/nosuid/&,size=2G/' /etc/fstab'''{
orangepi@orangepi:~$ '''sudo reboot'''public static void main(String[] args)
<ol start="2" style="list-style-type: decimal;"><li>After restarting, you can see that the size of the'''/tmp''' space has become 2G.</li></ol>{
orangepi@orangepi:~$ '''df -h | grep :System.out.println("/tmpHello World!"''');
tmpfs 2.0G 12K '''2.0G''' 1% /tmp:}
}|}</ol><ol start="34" style="list-style-type: decimallower-alpha;"><li>Then enter the following command in the Linux system to start the installation of the Bt-Panelcompile and run '''hello_world.java'''</li></ol>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''javac hello_world.java'''
orangepi@orangepi:~$ '''sudo install_bt_panel.shjava hello_world'''
Hello World!|}</ol start="4" style="list-style-type: decimal;"></li>Then the pagoda </ol><span id="qt-installation program reminds whether to install the '''Bt-Panel''' to the'''/www''' folder, and enter y at this time</limethod"></olspan>
+----------------------------------------------------------------------== QT installation method ==
| Bt-WebPanel FOR CentOS/Ubuntu/Debian# Use the following script to install QT5 and QT Creator
+---------------------------------------------------------------------::{| class="wikitable" style="width:800px;" |-| | Copyright © 2015-2099 BT-SOFT(httporangepi@orangepi://www.bt.cn) All rights reserved~$ '''install_qt.sh'''|}
+----------------------------------------------------------------<ol start="2" style="list-style-type: decimal;"><li><p>The QT version number will be automatically printed after installation</p><ol style="list-style-type: lower-alpha;"><li>Ubuntu20.04 comes with QT version '''5.12.8'''</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''install_qt.sh'''
| The WebPanel URL will be http://SERVER_IP:8888 when installed......
+----------------------------------------------------------------------QMake version 3.1
Do you want to install BtUsing Qt version '''<span style="color:#FF0000">5.12.8</span>''' in /usr/lib/aarch64-linux-Panel to the gnu|}</www directory now?(yol><ol start="2" style="list-style-type: lower-alpha;"><li>Ubuntu22.04 comes with QT version '''5.15.3'''</n)li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi: ~$ '''yinstall_qt.sh'''
<ol start="5" style="list-style-type: decimal;"><li>Then you have to wait patiently. When you see the printing information below the terminal output, it means that the pagoda has been installed. The entire installation process takes about 34 minutes. There may be some differences according to the difference in network speed</li></ol>...
[[File:pi3b-img278QMake version 3.png|576x233px]]1
Using Qt version '''<span style="color:#FF0000">5.15.3</span>''' in /usr/lib/aarch64-linux-gnu|}</ol><ol start="63" style="list-style-type: decimallower-alpha;"><li><p>At this time, enter the Debian11 comes with QT version '''panel address''' displayed above in the browser to open the login interface of the pagoda Linux panel, and then enter the '5.15.2''username''' and '''password''' displayed in the corresponding position to log in to the Bt-Panel<br /li>[[File{| class="wikitable" style="width:pi3b800px;" |-img279.png|575x281px]]</p></li><li><p>After successfully logging in to the pagoda, the following welcome interface will pop uporangepi@orangepi:~$ '''install_qt. First, please take the intermediate user notice to read to the bottom, and then you can choose "I have agreed and read" User Agreement ", and then click" Enter the panel " You can enter the Bt-Panel</p></li></ol>sh'''
[[File:pi3b-img280.png|575x317px]].....
<ol start="8" style="list-style-type: decimal;"><li>After entering the Bt-Panel, you will first prompt that you need to bind the account of the Bt-Panel official websiteQMake version 3. If you do n’t have an account, you can go to the pagoda's official website ('''https://www.bt.cn''') to register one.</li></ol>1
[[FileUsing Qt version '''<span style="color:pi3b#FF0000">5.15.2</span>''' in /usr/lib/aarch64-linux-gnu|}</ol><ol start="4" style="list-style-type: lower-img281alpha;"><li>Debian12 comes with QT version '''5.png15.8'''</li>{| class="wikitable" style="width:800px;" |576x300px]]-| orangepi@orangepi:~$ '''install_qt.sh'''
<ol start="9" style="list-style-type: decimal;"><li>The final display interface is shown in the figure below. You can intuitively see some status information of the development board Linux system, such as load state, CPU usage, memory usage and storage space usage</li></ol>.....
[[File:pi3b-img282QMake version 3.png|575x306px]]1
Using Qt version '''<span style="color:#FF0000">5.15.8</span>''' in /usr/lib/aarch64-linux-gnu|}</ol></li></ol><ol start="103" style="list-style-type: decimal;"><li>More functions of the Bt-Panel Then you can refer to see the following information to explore by yourselfQT Creator launch icon in '''Applications'''</li></ol>
Manual: [http[File://docspi3b-img327.bt.cn png]] QT Creator can also be opened using the following command{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''qtcreator'''http|}{| class="wikitable" style="background-color:#ffffdc;width://docs800px;" |-| <big>'''During the startup of QT and QT applications, if the following error is displayed, ignore it.btThis error has no impact on application running.cn''']
Forum address: [https://www.bt.cn/bbs '''https://www.bt.cn/bbs''']
GitHub Link: '''httpslibGL error://github.com/aaPanel/BaoTafailed to create dri screen'''
<span id="set-the-chinese-environment-and-install-chinese-input-method"></span>== Set the Chinese environment and install Chinese input method =='''libGL error: failed to load driver: rockchip'''
'''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.libGL error: failed to create dri screen'''
'''libGL error: failed to load driver: rockchip'''<span id/big>|}</ol><ol start="debian4" style="list-systemstyle-installation-methodtype: decimal;"><li>The interface after QT Creator is opened is as follows</spanli>=== Debian system installation method ===
[[File:pi3b-img328.png]]</ol><ol start="5" style="list-style-type: decimal;"><li><p>First set the default '''locale''' as ChineseThe QT Creator version is shown below</p>
<ol style="list-style-type: lower-alpha;">
<li>Enter the command below to start configured The default version of QT Creator in '''localeUbuntu20.04'''is as follows</li></ol></li></ol> orangepi@orangepi:~$ '''sudo dpkg-reconfigure locales'''
[[File:pi3b-img329.png]]
</ol>
<ol start="2" style="list-style-type: lower-alpha;">
<li>Then select The default version of QT Creator in '''zh_CNUbuntu22.UTF-8 UTF-8''' in the pop-up interface (to move up and down through the upper and lower direction buttons on the keyboard, select it through the space key, and finally move the cursor to ''04'<OK>''' through the TAB key, then press the ENTER key )is as follows</li></ol> [[File:pi3b-img283.png|575x296px]]
[[File:pi3b-img330.png]]
</ol>
<ol start="3" style="list-style-type: lower-alpha;">
<li>Then set the The default version of QT Creator in '''localeDebian11''' is as '''zh_CN.UTF-8'''follows</li></ol> [[File:pi3b-img284.png|575x160px]]
[[File:pi3b-img331.png]]
</ol>
<ol start="4" style="list-style-type: lower-alpha;">
<li>After exiting the interface, the The default version of QT Creator in '''localeDebian12''' settings will be started. The output displayed by the command line is shown belowas follows</li></ol>
orangepi@orangepi[[File:~$ pi3b-img332.png]]</ol></li></ol><ol start="6" style="list-style-type: decimal;"><li><p>Then set QT</p><ol style="list-style-type: lower-alpha;"><li>First open '''Help'''sudo dpkg-reconfigure locales>'''About Plugins...'''</li>
Generating locales (this might take a while)..[[File:pi3b-img333.png]]</ol><ol start="2" style="list-style-type: lower-alpha;"><li>Then remove the check box for '''ClangCodeModel'''</li>
en_US[[File:pi3b-img334.UTFpng]]</ol><ol start="3" style="list-style-type: lower-8..alpha;"><li><p>'''<span style="color:#FF0000">Restart QT Creator after the Settings are complete</span>'''</p></li><li><p>Then make sure that QT Creator uses the GCC compiler, if the default is Clang, change it to GCC</p></li>{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''Debian12 Please skip this step. done'''</big>|}
zh_CN.UTF[[File:pi3b-8..img335. donepng]]
Generation complete[[File:pi3b-img336.png]]</ol></li></ol><ol start="7" style="list-style-type: decimal;"><li>You can then open a sample code</li>
<ol start="2" style="list-style-type: decimal;"><li>Then open '''Input Method'''</li></ol> [[File:pi3b-img285.png|575x361px]] <ol start="3" style="list-style-type: decimal;"><li>Then select '''OK'''</li></ol> [[File:pi3b-img286img337.png|295x212px]] <ol start="4" style="list-style-type: decimal;"><li>Then select '''Yes'''</li></ol> [[File:pi3b-img287.png|303x192px]] <ol start="58" style="list-style-type: decimal;"><li>Then select '''fcitx'''</li></ol> [[File:pi3b-img288.png|307x220px]] <ol start="6" style="list-style-type: decimal;"><li>Then select '''OK'''</li></ol> [[File:pi3b-img289.png|305x216px]] <ol start="7" style="list-style-type: decimal;"><li><p>'''Then restart Clicking on the example code will automatically open the Linux system to make corresponding instruction document, you can carefully read the configuration effective'''</p>instructions</li><li><p>Then open '''Fcitx configuration'''</p></li></ol> [[File:pi3b-img290.png|575x376px]]
[[File:pi3b-img338.png]]
</ol>
<ol start="9" style="list-style-type: decimal;">
<li>Then click the + of the position shown in the figure below'''Configure Project'''</li></ol> [[File:pi3b-img291.png|280x187px]]
[[File:pi3b-img339.png]]
</ol>
<ol start="10" style="list-style-type: decimal;">
<li>Then search '''Google Pinyin''' click the green triangle in the lower left corner to compile and click '''OK'''run the sample code</li></ol>
<div class="figure"> [[File:pi3b-img292img340.png|291x196px|C:\Users\orangepi\Desktop\用户手册插图\Pi5 Plus\未标题-10.jpg未标题-10]] </divol>
<ol start="11" style="list-style-type: decimal;">
<li>Then put '''Google Pinyin''' to After waiting for a period of time, the frontinterface shown in the following figure will pop up, which indicates that QT can compile and run normally</li></ol> [[File:pi3b-img293.png|299x202px]] [[File:pi3b-img294.png|300x202px]]
[[File:pi3b-img341.png]]
</ol>
<ol start="12" style="list-style-type: decimal;">
<li>Then open the Reference documents</li>{| class="wikitable" style="width:800px;" |-| '''Geanyhttps://wiki.qt.io/Install_Qt_5_on_Ubuntu''' editor to test the Chinese input method</li></ol>
[[File'''https:pi3b-img295//download.png|349x212px]]qt.io/archive/qtcreator'''
'''https://download.qt.io/archive/qt'''|}</ol start="13" style><span id="listros-styleinstallation-type: decimal;method"><li>The Chinese input method test is shown below</li></olspan>
[[File:pi3b-img296.png|575x325px]]== ROS Installation Method ==
<ol startspan id="14" style="listhow-to-install-ros-1-noetic-on-styleubuntu-type: decimal;20.04"><li><p>You can switch the Chinese and English input method through the '''Ctrl+Space''' shortcut</p></lispan><li><p>If the entire system is required as Chinese, the variables in '''/etc/default/locale''' can be set === How to '''zh_CNinstall ROS 1 Noetic on Ubuntu 20.UTF-8'''</p></li></ol>04 ===
orangepi@orangepi:~$ # The current active version of ROS 1 is as follows, the recommended version is '''sudo vim /etc/default/localeNoetic Ninjemys'''
# ::[[File generated by update:pi3b-localeimg342.png|800px]]
LC_MESSAGES='''zh_CN::[[File:pi3b-img343.UTF-8'''png|800px]]
LANG::{| class="wikitable" style="width:800px;" |-| [http://docs.ros.org/ '''zh_CNhttp://docs.UTF-8ros.org''']
LANGUAGE='''zh_CN.UTF-8''' <ol start="16" style="list-style-typehttps: decimal;"><li>Then '''restart the system''' to see the system displayed as Chinese</li></ol> [[File:pi3b-img297wiki.png|576x356px]] <span id="the-installation-method-of-ubuntu-20ros.04-system"><org/span>=== The installation method of Ubuntu 20.04 system === # First open '''Language SupportDistributions''' [[File:pi3b-img298.png|575x351px]]}
<ol start="2" style="list-style-type: decimal;">
<li>Then find The official installation document link of ROS 1 '''Chinese (China)Noetic Ninjemys''' optionis as follows:</li></ol>{| class="wikitable" style="width:800px;" |-| [[Filehttp://wiki.ros.org/noetic/Installation/Ubuntu '''http:pi3b-img299//wiki.ros.pngorg/noetic/Installation/Ubuntu''']|318x311px]]}</ol>
<ol start="3" style="list-style-type: decimal;">
<li>Then use In the left mouse button to select official installation document of ROS '''Chinese (China)Noetic Ninjemys''' and hold it down, and then drag it up to Ubuntu recommends using Ubuntu20.04, so please make sure that the beginning. The display system used by the development board is shown below'''<span style="color: #FF0000">Ubuntu20.04 desktop system</lispan>'''</olli>{| class="wikitable" style="width:800px;" [[File:pi3b|-img300.png|324x320px]]http://wiki.ros.org/noetic/Installation'''Note that this step is not easy to drag, please try more patiently.'''|}
[[File:pi3b-img344.png]]
</ol>
<ol start="4" style="list-style-type: decimal;">
<li>Then select use the '''Apply System-Wide''' to apply the Chinese settings script below to the entire systeminstall ros1</li></ol>{| class="wikitable" style="width:800px;" |-| [[Fileorangepi@orangepi3b:pi3b-img301~$ '''install_ros.pngsh ros1'''|321x316px]]}</ol>
<ol start="5" style="list-style-type: decimal;">
<li>Then set Before using the '''Keyboard input method ROS tool, you first need to initialize rosdep, and then you can quickly install some systemdependencies and some core components in ROS when compiling the source code</li>{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>''' Note that running the following command needs to ensure that the development board can access github normally, otherwise an error will be reported due to network problems.'''fcitx'''</li></ol>
[[File:pi3b-img302.png|327x320px]]
<ol start="6" style="list-style-type: decimal;"><li><p>'''hen restart the Linux system The install_ros.sh script will try to make the configuration effective'''<modify /p><etc/li><li><p>After re -entering hosts and automatically run the systemfollowing commands. However, this method cannot guarantee normal access to github every time. If the following error is displayed after installing ros1 in install_ros.sh, please do '''not ask me again''' at find other ways to allow the Linux system of the interface belowdevelopment board to access github normally, and then determine whether manually run the standard folder should be updated as Chinese based on your preferencefollowing Order.</p></li></ol>'''
[[File:pi3b-img303.png|303x247px]]
<ol start="8" style="list-style-type'''https: decimal;"><li>Then you can see that the desktop is displayed as Chinese</li></ol>raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml'''
[[File'''Hit https:pi3b-img304//raw.png|575x383px]]githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml'''
<ol start="9" style="list-style-type: decimal;"><li>Then we can open the '''GeanyERROR: error loading sources list:''' to test Chinese input method , and the way to open is shown in the figure below</li></ol>
[[File:pi3b'''The read operation timed out'''</big>|}{| class="wikitable" style="width:800px;" |-img305| orangepi@orangepi:~$ '''source /opt/ros/noetic/setup.png|576x292px]]bash'''
<ol start="10" style="list-style-typeorangepi@orangepi: decimal;"><li>After opening ~$ '''Geanysudo rosdep init''', the default is an English input method. We can switch into Chinese input method through the '''Ctrl+Space''' shortcut keys, and then we can enter Chinese</li></ol>
[[File:pi3bWrote /etc/ros/rosdep/sources.list.d/20-img306default.png|575x308px]]list
<span id="the-installation-method-of-ubuntu-22.04-system"></span>=== The installation method of ubuntu 22.04 system ===Recommended: please run
# First open '''Language Support'''
[[File:pi3b-img298.png|575x351px]]:rosdep update
<ol start="2" style="list-style-typeorangepi@orangepi: decimal;"><li>Then find ~$ '''Chinese (China)rosdep update''' option</li></ol>
[[File:pi3b-img307reading in sources list data from /etc/ros/rosdep/sources.png|335x326px]]list.d
<ol start="3" style="list-style-typeHit https: decimal;"><li>Then use the left mouse button to select '''Chinese (China)''' and hold it down, and then drag it up to the beginning//raw. The display after dragging is shown in the figure below: <githubusercontent.com/ros/rosdistro/master/li><rosdep/ol>osx-homebrew.yaml
[[FileHit https:pi3b-img308//raw.png|337x331px]]githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml
'''Note that this step is not easy to drag, please try more patientlyHit https://raw.'''githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml
<ol start="4" style="list-style-typeHit https: decimal;"><li>Then select the '''Apply System-Wide''' to apply the Chinese settings to the entire system</li></ol>raw.githubusercontent.com/ros/rosdistro/master/rosdep/ruby.yaml
[[FileHit https:pi3b-img309//raw.png|336x330px]]githubusercontent.com/ros/rosdistro/master/releases/fuerte.yaml
<ol start="5" style="list-style-typeQuery rosdistro index https: decimal;"><li><p>'''Then restart the Linux system to make the configuration effective'''</p></li><li><p>After re -entering the system, please '''do not ask me again''' at the interface below, and then determine whether the standard folder should be updated as Chinese based on your preference<raw.githubusercontent.com/ros/p><rosdistro/li><master/ol>index-v4.yaml
[[File:pi3bSkip end-img303.png|303x247px]]of-life distro "ardent"
<ol start="7" style="listSkip end-styleof-type: decimallife distro "bouncy""><li>Then you can see that the desktop is displayed as Chinese</li></ol>
[[File:pi3bSkip end-img304.png|575x383px]]of-life distro "crystal"
<ol start="8" style="listSkip end-styleof-type: decimallife distro "dashing""><li>Then open the Fcitx5 configuration program</li></ol>
[[File:pi3bSkip end-img310.png|575x349px]]of-life distro "eloquent"
<ol start="9" style="list-style-type: decimalAdd distro "foxy""><li>Then choose to use Pinyin input method</li></ol>
<div class="figure">Add distro "galactic"
[[File:pi3bSkip end-img311.png|338x267px|C:\Users\orangepi\Desktop\用户手册插图\Pi5 Plus\未标题of-11.jpg未标题-11]]life distro "groovy"
</div><ol start="10" style="list-style-type: decimalAdd distro "humble""><li>The interface after the selection is shown below, then click OK</li></ol>
[[File:pi3bSkip end-img312.png|366x290px]]of-life distro "hydro"
<ol start="11" style="listSkip end-styleof-type: decimallife distro "indigo""><li>Then we can open the '''Geany''' to test Chinese input method, and the way to open is shown in the figure below</li></ol>
[[File:pi3bSkip end-img305.png|576x292px]]of-life distro "jade"
<ol start="12" style="listSkip end-styleof-type: decimallife distro "kinetic""><li>After opening '''Geany''', it is still an English input method by default. We can switch into Chinese input methods through the '''Ctrl+Space''' shortcut keys, and then we can enter Chinese</li></ol>
[[File:pi3bSkip end-img313.png|576x408px]]of-life distro "lunar"
<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 ==Add distro "melodic"
'''Ubuntu Gnome Wayland image does not support Nomachine and VNCs introduced here to remotely log in to the desktop.'''Add distro "noetic"
<span id="use-nomachine-remote-login"></span>=== Use nomachine remote login ===Add distro "rolling"
'''Make sure the Ubuntu or Debian system installed updated cache in /home/orangepi/.ros/rosdep/sources.cache|}</ol><ol start="6" style="list-style-type: decimal;"><li><p>Then open a command line terminal window on the development board is a desktop version. In addition, nomachine also provides detailed documentsand then use the test_ros. It is strongly recommended sh script to read this document start a small turtle routine to test whether ROS can be familiar with used normally</p></li>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''test_ros.sh'''</p>|}<li><p>After running the use of nomachine'''test_ros. The document links are shown below: sh'''script, a little turtle as shown in the figure below will pop up</p></li>
'''https://knowledgebase.nomachine.com/DT10R00166'''<div class="figure">
'''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[[File:pi3b-img345. 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.'''png]]
'''Before operation, </div></ol><ol start="8" style="list-style-type: decimal;"><li>Then please ensure that keep the Windwos computer and terminal window just opened at 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.'''top</li>
<ol stylediv class="list-style-type: decimal;figure"><li><p>First download the nomachine software Linux '''ARM64''' DEB version of the installation package, and then install it in the Linux system of the development board</p><ol style="list-style-type: lower-alpha;"><li>Since RK3566 is a SOC of the ARMV8 architecture, the system we use is Ubuntu or Debian, so you need to download '''NoMachine for ARM ARMv8 DEB''' installation package here. The download link is shown below: </li></ol></li></ol>
'''Note that this download link may change, please recognize the DEB package of the ARMV8/ARM64 version[[File:pi3b-img346.'''png]]
[https:</div></www.nomachine.com/download/download&idol><ol start=112&s"9" style=ARM '''https"list-style-type:decimal;"><li>At this time, press the direction keys on the keyboard to control the little turtle to move up, down, left, and right<//downloads.nomachine.com/download/?id=118&distro=ARM''']li>
[[File:pi3b-img314img347.png|575x227px]]</ol><span id="how-to-install-ros-2-galactic-on-ubuntu-20.04"></span>
<ol start="2" style="list-style-type: lower-alpha;"><li>In addition, you can also download the installation package = How to '''NoMachine''' in the '''official tools'''install ROS 2 Galactic on Ubuntu 20.</li></ol>04 ===
[[File:pi3b-img315.png|66x102px]]# The current active version of ROS 2 is as follows, the recommended version is '''Galactic Geochelone'''
<blockquote>First enter the '''remote login software-Nomachine''' folder</blockquote>::[[File:pi3b-img316img348.png|271x43px]]
<blockquote>Then download the ARM64 version of the DEB installation package</blockquote>::[[File:pi3b-img317img349.png|180x109px]]
<ol start::{| class="3wikitable" style="list-style-typewidth: lower-alpha800px;"><li><p>Then upload the downloaded '''nomachine_x|-| [http://docs.xros.x_x_arm64.deborg/ ''' to the Linux system of the development board.<http:/p></li><li><p>Then use the following command to install ''docs.ros.org'NoMachine''' in the Linux system of the development board</p></li></ol>]
orangepi@orangepi:~$ '''sudo dpkg -i nomachine_xhttp://docs.xros.x_x_arm64_arm64org/en/galactic/Releases.debhtml'''|}
<ol start="2" style="list-style-type: decimal;">
<li>Then download the nomachine software Windows version of The link to the official ROS 2 '''Galactic Geochelone''' installation package, the download address documentation is shown belowas follows:</li></ol>{| class="wikitable" style="width:800px;" '''Note that this download link may change.'''|-| '''https://downloadsdocs.nomachineros.comorg/downloaden/?id=9galactic/Installation.html''' [[File:pi3b-img318.png|575x163px]]
'''http://docs.ros.org/en/galactic/Installation/Ubuntu-Install-Debians.html'''
|}
</ol>
<ol start="3" style="list-style-type: decimal;">
<li><p>Then It is recommended to use Ubuntu20.04 in the official installation document of ROS 2 '''Galactic Geochelone''', so please ensure that the system used by the development board is '''<span style="color:#FF0000">Ubuntu20.04 desktop version</span>'''. There are several ways to install nomachine in WindowsROS 2. The following shows how to install ROS 2 '''Galactic Geochelone'''Please restart the computer after installationusing '''Debian packages'''</p></li><li><p>Then open Use the '''NoMachineinstall_ros.sh''' in Windowscript to install ros2</p></li></ol>{| class="wikitable" style="width:800px;" |-| [[Fileorangepi@orangepi:pi3b-img319~$ '''install_ros.pngsh ros2'''|76x66px]]}</ol>
<ol start="5" style="list-style-type: decimal;">
<li>After Nomachine starts, it The '''install_ros.sh''' script will automatically scan other devices installed in run the local area network'''ros2 -h''' command after installing ros2. After entering the main interface of Nomachine, If you can see the following print, it means that the development board ros2 installation is already in the connected device list, and then click the location shown in the red box below in the figure below. Start log in to the Linux system desktop of the development boardcomplete</li></ol>{| class="wikitable" style="width:800px;" |-| usage: ros2 [-h] Call `ros2 <command> -h` for more detailed usage. ...
[[File:pi3b-img320.png|321x92px]]
<ol start="6" style="listros2 is an extensible command-style-type: decimal;"><li>Then click '''OK'''</li></ol>line tool for ROS 2.
[[File:pi3b-img321.png|402x275px]]
<ol start="7" style="list-style-typeoptional arguments: decimal;"><li>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</li></ol>
<div class="figure">:-h, --help show this help message and exit
[[File:pi3b-img322.png|303x204px|C:\Users\orangepi\Desktop\用户手册插图\Pi5 Plus\未标题-12.jpg未标题-12]]
</div><ol start="8" style="list-style-typeCommands: decimal;"><li><p>Then click OK in the next interface</p></li><li><p>Finally, you can see the desktop of the development board Linux system</p><p>[[File:pi3b-img323.png|411x246px]]</p></li></ol>
<span id="use:action Various action related sub-vnc-remote-login"></span>=== Use VNC remote login ===commands
'''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.''':bag Various rosbag related sub-commands
'''Ubuntu 20.04 tests many problems with VNC, please do not use this method.''':component Various component related sub-commands
# First run the '''set_vnc.sh''' script settings, and '''remember to add Sudo permissions''':daemon Various daemon related sub-commands
orangepi@orangepi:~$ '''sudo set_vnc.sh'''doctor Check ROS setup and other potential issues
You will require a password to access your desktops.:interface Show information about ROS interfaces
Password: '''#Set the VNC password here, 8 -bit characters'''launch Run a launch file
Verify: '''#Set the VNC password here, 8 lifecycle Various lifecycle related sub-bit characters'''commands
Would you like to enter a view:multicast Various multicast related sub-only password (y/n)? '''n'''commands
xauth: file /root/.Xauthority does not existnode Various node related sub-commands
New 'X' desktop is orangepi3b:1param Various param related sub-commands
Creating default startup script /root/.vnc/xstartup:pkg Various package related sub-commands
Starting applications specified in /root/.vnc/xstartup:run Run a package specific executable
Log file is /root/.vnc/orangepi3b:1.logsecurity Various security related sub-commands
Killing Xtightvnc process ID 3047:service Various service related sub-commands
New 'X' desktop is orangepi3b:1topic Various topic related sub-commands
Starting applications specified in /root/.vnc/xstartup:wtf Use `wtf` as alias to `doctor`
Log file is /root/.vnc/orangepi3b:1.log
:Call `ros2 <command> -h` for more detailed usage.|}</ol><ol start="26" style="list-style-type: decimal;"><li><p>The steps of using MobaxTerm software Then you can use the '''test_ros.sh''' script to connect test whether ROS 2 is installed successfully. If you can see the development board Linux system desktop are shown below: following print, it means that ROS 2 can run normally</pli><ol {| class="wikitable" style="list-style-typewidth: lower-alpha800px;"><li>First click Session, then select VNC, then fill in the IP address and port of the development board, and finally click OK to confirm</li></ol>|-| </li></ol>orangepi@orangepi3b:~$ '''test_ros.sh'''
<div class="figure">[INFO] [1671174101.200091527] [talker]: Publishing: 'Hello World: 1'
[INFO] [File:pi3b-img3241671174101.png|490x349px|图片1208235661048] [listener]: I heard: [Hello World: 1]
</div><ol start="[INFO] [1671174102.199572327] [talker]: Publishing: 'Hello World: 2" style="list-style-type: lower-alpha;"><li>Then enter the password of the previously set VNC</li></ol>'
[INFO] [File:pi3b-img3251671174102.png|274x131px204196299] [listener]: I heard: [Hello World: 2]
<ol start="3" style="list-style-type: lower-alpha;"><li><p>The interface after the login is shown as shown in the figure below, and then the desktop of the Linux system can be remotely operated</p><p>[INFO] [File:pi3b-img3261671174103.png|405x293px199580322][talker]</p></li></ol>: Publishing: 'Hello World: 3'
[INFO] [1671174103.204019965] [listener]: I heard: [Hello World: 3]|}</ol><span idol start="7" style="some-programming-language-tests-supported-bylist-linuxstyle-systemtype: decimal;"><li>Run the following command to open rviz2</spanli>{| class="wikitable" style= Some programming language tests supported by Linux system =="width:800px;" |-| orangepi@orangepi:~$ '''source /opt/ros/galactic/setup.bash'''
<span id="debian-bullseye-system"></span>orangepi@orangepi:~$ '''ros2 run rviz2 rviz2'''=== Debian Bullseye system ===|}
<ol stylediv class="list-style-type: decimal;figure"><li><p>Debian Bullseye is equipped with a gcc compilation tool chain by default, which can directly compile the C language program in the Linux system of the development board</p><ol style="list-style-type: lower-alpha;"><li>The version of the gcc is shown below</li></ol></li></ol>
orangepi@orangepi[[File:~$ '''gcc pi3b--version'''img350.png]]
gcc (Debian 10</div></ol><ol start="8" style="list-style-type: decimal;"><li>For the usage of ROS, please refer to the documentation of ROS 2</li>{| class="wikitable" style="width:800px;" |-| '''http://docs.2ros.org/en/galactic/Tutorials.1html'''|}</ol><span id="how-to-install-ros-6) 10.2-humble-on-ubuntu-22.1 2021011004"></span>
Copyright (C) 2020 Free Software Foundation, Inc=== How to install ROS 2 Humble on Ubuntu 22.04 ===
This is free software; see # Use the source for copying conditions'''install_ros. There is NOsh''' script to install ros2
warranty::{| class="wikitable" style="width:800px; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE" |-| orangepi@orangepi:~$ '''install_ros.sh ros2'''|}
<ol start="2" style="list-style-type: lower-alphadecimal;"><li>Write C language of The '''Hello_worldinstall_ros.csh''' script will automatically run the '''ros2 -h''' programcommand after installing ros2. If you can see the following print, it means that the ros2 installation is complete</li></ol>
orangepi@orangepi{| class="wikitable" style="width:~$ '''vim hello_world800px;" |-| usage: ros2 [-h] Call `ros2 <command> -h` for more detailed usage. ...c'''
#include <stdio.h>
int main(void)ros2 is an extensible command-line tool for ROS 2.
{
printf("Hello World!\n");optional arguments:
return 0;:-h, --help show this help message and exit
}
<ol start="3" style="list-style-typeCommands: lower-alpha;"><li>Then compile and run '''hello_world.c'''</li></ol>
orangepi@orangepi:~$ '''gcc action Various action related sub-o hello_world hello_world.c'''commands
orangepi@orangepi:~$ '''./hello_world'''bag Various rosbag related sub-commands
Hello World!:component Various component related sub-commands
<ol start="2" style="list-style-type: decimal;"><li><p>Debian BullSeye Default with Python3</p><ol style="list-style-type: lowerdaemon Various daemon related sub-alpha;"><li>The specific version of Python is shown below</li></ol></li></ol>commands
orangepi@orangepi:~$ '''python3'''doctor Check ROS setup and other potential issues
'''Python 3.9.2''' (default, Feb 28 2021, 17:03:44)interface Show information about ROS interfaces
[GCC 10.2.1 20210110] on linux:launch Run a launch file
Type "help", "copyright", "credits" or "license" for more information.:lifecycle Various lifecycle related sub-commands
>>>:multicast Various multicast related sub-commands
<ol start="2" style="list-style-type: lowernode Various node related sub-alpha;"><li>'''hello_world.py''' program in Python language</li></ol>commands
orangepi@orangepi:~$ '''vim hello_world.py'''param Various param related sub-commands
print('Hello World!'):pkg Various package related sub-commands
<ol start="3" style="list-style-type: lower-alpha;"><li>The results of running '''hello_world.py''' are shown below</li></ol>run Run a package specific executable
orangepi@orangepi:~$ '''python3 hello_world.py'''security Various security related sub-commands
Hello World!:service Various service related sub-commands
<ol start="3" style="list-style-type: decimal;"><li><p>Debian Bullseye's compilation tool and operating environment that is not installed in Java by default</p><ol style="list-style-type: lower-alpha;"><li>You can use the following command to install OpenJDK. The latest version in Debian Bullseye is openjdktopic Various topic related sub-17</li></ol></li></ol>commands
orangepi@orangepi:~$ '''sudo apt install -y openjdk-17-jdk'''wtf Use `wtf` as alias to `doctor`
<ol start="2" style="list-style-type: lower-alpha;">
<li>After installation, you can check the version of Java</li></ol>
orangepi@orangepi:~$ Call `ros2 <command> -h` for more detailed usage.|}</ol><ol start="3" style="list-style-type: decimal;"><li>Then you can use the '''java --versiontest_ros.sh'''script to test whether ROS 2 is installed successfully. If you can see the following print, it means that ROS 2 can run normally</li>
<ol start{| class="3wikitable" style="list-style-typewidth: lower-alpha800px;"><li>Edit the |-| orangepi@orangepi3b:~$ '''hello_worldtest_ros.javash''' of the Jave version</li></ol>
orangepi@orangepi[INFO] [1671174101.200091527] [talker]: Publishing:~$ '''vim hello_world.java''Hello World: 1'
public class hello_world[INFO] [1671174101.235661048] [listener]: I heard: [Hello World: 1]
{[INFO] [1671174102.199572327] [talker]: Publishing: 'Hello World: 2'
public static void main(String[INFO] [1671174102.204196299] [listener]: I heard: [Hello World: 2] args)
{[INFO] [1671174103.199580322] [talker]: Publishing: 'Hello World: 3'
System[INFO] [1671174103.out.println("204019965] [listener]: I heard: [Hello World!": 3]|}</ol><ol start="4" style="list-style-type: decimal;)"><li>Run the following command to open rviz2</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''source /opt/ros/humble/setup.bash'''
orangepi@orangepi:~$ '''ros2 run rviz2 rviz2'''|}
}<div class="figure">
<ol start="4" style="list-style-type[[File: lowerpi3b-alpha;"><li>Then compile and run '''hello_worldimg351.java'''</li></ol>png]]
orangepi@orangepi</div></ol><ol start="5" style="list-style-type:~$ decimal;"><li>Reference documents</li>{| class="wikitable" style="width:800px;" |-| '''javac hello_worldhttp://docs.ros.org/en/humble/index.javahtml'''
orangepi@orangepi[http:~$ //docs.ros.org/en/galactic/Tutorials.html '''java hello_worldhttp://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html''']|}</ol><span id="how-to-install-kernel-header-files"></span>
Hello World!== How to install kernel header files ==
<span id="ubuntu-focal-system"><# The Linux image released by OPi comes with the deb package of the kernel header file by default, and the storage location is '''/span>=== Ubuntu Focal system ===opt/'''
<ol style::{| class="list-style-type: decimal;wikitable"><li><p>Ubuntu Focal has the GCC compilation tool chain by default, which can compile the C language program directly in the Linux system of the development board.</p><ol style="list-style-typewidth: lower-alpha800px;"><li>The version of the gcc is shown below</li></ol>|-| <orangepi@orangepi:~$ '''ls /li><opt/ol>linux-headers*'''
orangepi@orangepi:~$ '''gcc /opt/linux-headers-version'''legacy-rockchip-rk356x_x.x.x_arm64.deb|}
gcc (Ubuntu 9<ol start="2" style="list-style-type: decimal;"><li>Use the following command to install the deb package of the kernel header file</li>{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''The name of the kernel header file deb package needs to be replaced with the actual name, please do not copy it.4.0'''</big>|}{| class="wikitable" style="width:800px;" |-1ubuntu1| orangepi@orangepi:~20.04$ '''sudo dpkg -i /opt/linux-headers-legacy-rockchip-rk356x_1.1) 9x.4x_arm64.0deb'''|}Copyright (C) 2019 Free Software Foundation, Inc.</ol><ol start="3" style="list-style-type: decimal;">This is free software; <li>After installation, you can see the source for copying conditions. There is NOfolder where the kernel header files are located under '''/usr/src'''</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''ls /usr/src'''
warrantylinux-headers-5.10.160-rockchip-rk356x|}</ol><ol start="4" style="list-style-type: decimal;"><li><p>Then you can write a hello kernel module to test the kernel header file</p><ol style="list-style-type: lower-alpha;"><li>First write the code of the hello kernel module, as follows:</li>{| class="wikitable" style="width:800px; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE" |-| orangepi@orangepi:~$ '''vim hello.c'''
<ol start="2" style="list-style-type: lower-alphap>#include <"><li>'''hello_worldlinux/init.c''' program to write C language</li>h></olp>
orangepi@orangepi:~$ '''vim hello_world<p>#include <linux/module.c'''h></p>
#include <stdio.h>
static int mainhello_init(void)
{
printf:printk("Hello World!Orange Pi -- init\n");
:return 0;
}
<ol start="3" style="list-style-type: lower-alpha;"><li>Then compile and run '''hello_world.c'''</li></ol>static void hello_exit(void)
orangepi@orangepi:~$ '''gcc -o hello_world hello_world.c'''{
orangepi@orangepi:~$ '''./hello_world'''printk("Hello Orange Pi -- exit\n");
Hello World!
<ol start="2" style="list-style-type: decimalreturn;"><li><p>Ubuntu Focal defaults to install Python3</p><ol style="list-style-type: lower-alpha;"><li>Python3 specific version is shown below</li></ol></li></ol>
orangepi@orangepi:~$ '''python3'''}
Python 3.8.10 (default, Nov 14 2022, 12:59:47)
[GCC 9.4.0] on linuxmodule_init(hello_init);
Type "module_exit(hello_exit);help", "copyright", "credits" or "license" for more information.
>>>
MODULE_LICENSE("GPL");
|}
</ol>
<ol start="2" style="list-style-type: lower-alpha;">
<li>Then write the Makefile for compiling the hello kernel module, as follows:</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''hello_world.pyvim Makefile''' program in Python language</li></ol>
orangepi@orangepi:~ifneq ($ '''vim hello_world.py'''(KERNELRELEASE),)
print('Hello World!')obj-m:=hello.o
<ol start="3" style="list-style-type: lower-alpha;"><li>The results of running '''hello_world.py''' are shown below</li></ol>else
orangepi@orangepiKDIR :~=/lib/modules/$ '''python3 hello_world.py'''(shell uname -r)/build
Hello World!PWD :=$(shell pwd)
<ol start="3" style="list-style-typeall: decimal;"><li><p>Ubuntu Focal's compilation tool and operating environment without the installation of Java default</p><ol style="list-style-type: lower-alpha;"><li>You can use the following command to install '''openjdk-17'''</li></ol></li></ol>
orangepi@orangepi:~make -C $ '''sudo apt install -y openjdk-17-jdk'''(KDIR) M=$(PWD) modules
<ol start="2" style="list-style-typeclean: lower-alpha;"><li>After installation, you can check the version of Java</li></ol>
orangepi@orangepi:~$ '''java rm --version''' openjdk 17f *.ko *.o *.0mod.2 2022-01-18 OpenJDK Runtime Environment (build 17o *.0mod *.2+8-Ubuntu-120symvers *.04) OpenJDK 64-Bit Server VM (build 17cmd *.0mod.2+8-Ubuntu-120c *.04, mixed mode, sharing)order
endif
|}
</ol>
<ol start="3" style="list-style-type: lower-alpha;">
<li>Edit Then use the make command to compile the hello kernel module. The output of the compilation process is as follows:</li>{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''hello_worldIf there is a problem with compiling the code you copied here, please go to the official tool to download the source code and upload it to the Linux system of the development board for testing.java''' of Jave version</li></olbig>
[[File:pi3b-img352.png|center]]|}{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''vim hello_world.javamake'''
public class hello_worldmake -C /lib/modules/5.10.160-rockchip-35xx/build M=/home/orangepi modules
{make[1]: Entering directory '/usr/src/linux-headers-5.10.160-rockchip-rk35xx'
public static void main(String:CC [M] args)/home/orangepi/hello.o
{:MODPOST /home/orangepi/Module.symvers
System:CC [M] /home/orangepi/hello.outmod.println("Hello World!");o
} }:LD [M] /home/orangepi/hello.ko
make[1]: Leaving directory '/usr/src/linux-headers-5.10.160-rockchip-rk35xx'
|}
</ol>
<ol start="4" style="list-style-type: lower-alpha;">
<li>Then compile and run After compiling, the '''hello_worldhello.javako'''kernel module will be generated</li></ol>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''ls *.ko'''
hello.ko|}</ol><ol start="5" style="list-style-type: lower-alpha;"><li>Use the '''insmod''' command to insert the '''hello.ko''' kernel module into the kernel</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''javac hello_worldsudo insmod hello.javako'''|}orangepi@orangepi</ol><ol start="6" style="list-style-type:~$ lower-alpha;"><li>Then use the '''demsg''' command to view the output of the '''hello.ko''' kernel module. If you can see the output below, it means that the '''java hello_worldhello.ko'''kernel module is loaded correctly.</li>
{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''dmesg | grep "Hello World!"'''
[ 2871.893988] '''Hello Orange Pi -- init'''|}</ol><span idol start="7" style="ubuntulist-jammystyle-systemtype: lower-alpha;"><li>Use the '''rmmod''' command to uninstall the '''hello.ko''' kernel module</spanli>{| class="wikitable" style== Ubuntu jammy system ==="width:800px;" |-| orangepi@orangepi:~$ '''sudo rmmod hello'''
<ol style="list-style-typeorangepi@orangepi: decimal~$ '''dmesg | grep ""><li><p>Ubuntu Jammy is installed with the GCC compilation tool chain by default, which can directly compile the C language program in the Linux system of the development board</p><ol style="list-style-type: lower-alphaHello""><li>The version of the gcc is shown below</li></ol></li></ol>'''
orangepi@orangepi:~$ '''gcc [ 2871.893988] Hello Orange Pi --version'''init
gcc (Ubuntu 11[ 3173.2.0-19ubuntu1) 800892] '''11.2.0Hello Orange Pi -- exit'''|}</ol></li></ol><span id="use-of-the-raspberry-pis-5-inch-screen"></span>
Copyright (C) 2021 Free Software Foundation, Inc.== Use of the Raspberry PI's 5-inch screen ==
This is free software; see the source for copying conditions. There is NO<span id="assembly-method-of-raspberry-pi-5-inch-screen"></span>=== Assembly method of Raspberry PI 5-inch screen ===
warranty<ol style="list-style-type: decimal; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."><li><p>First prepare the required accessories</p><ol style="list-style-type: lower-alpha;"><li>Raspberry PI 5-inch MIPI LCD display + touch screen</li>
[[File:pi3b-img353.png]]
</ol>
<ol start="2" style="list-style-type: lower-alpha;">
<li>Write the '''hello_world.c''' program of c language15pin MIPI cable</li></ol>
orangepi@orangepi[[File:~$ '''vim hello_worldpi3b-img354.c'''png]]</ol></li></ol><ol start="2" style="list-style-type: decimal;"><li>Then connect the 15pin MIPI cable to the Raspberry PI 5-inch screen in the way shown below (note the orientation of the insulation surface)</li>
#include <stdio[[File:pi3b-img355.h>png]]</ol><ol start="3" style="list-style-type: decimal;"><li>Finally connect to the LCD interface of the Orange Pi 3B development board</li>
int main(void)[[File:pi3b-img356.png]]</ol><span id="open-the-raspberry-pi-5-inch-screen-configuration-method"></span>
{=== Open the Raspberry PI 5-inch screen configuration method ===
printf("<ol style="list-style-type: decimal;Hello World!\n""><li><p>The Linux image does not open the 5-inch screen of the Raspberry PI by default. If you need to use the 5-inch screen of the Raspberry PI, you need to open it manually.</p></li><li><p>The steps to open the mipi lcd configuration are as follows:</p><ol style="list-style-type: lower-alpha;)"><li>First run '''orangepi-config''', ordinary users remember to add '''sudo''' permission</li>{| class="wikitable" style="width:800px;" |-return 0;| orangepi@orangepi:~$ '''sudo orangepi-config'''|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li>Then select '''System'''</li>
[[File:pi3b-img357.png]]
</ol>
<ol start="3" style="list-style-type: lower-alpha;">
<li>Then compile and run select '''hello_world.cHardware'''</li></ol>
orangepi@orangepi[[File:~$ '''gcc pi3b-o hello_world hello_worldimg358.c'''png]]</ol><ol start="4" style="list-style-type: lower-alpha;"><li>Then use the arrow keys on the keyboard to locate the Rasp-7inch-touchscreen, and then use the space button to check</li>
orangepi@orangepi[[File:~$ pi3b-img359.png]]</ol><ol start="5" style="list-style-type: lower-alpha;"><li>Then select '''./hello_world<Save>'''to save</li>
Hello World![[File:pi3b-img360.png]]</ol><ol start="6" style="list-style-type: lower-alpha;"><li>Then select '''<Back>'''</li>
<ol start="2" style="list-style[[File:pi3b-type: decimal;">img361.png]]<li><p>Ubuntu jammy is installed with Python3 by default</pol><ol start="7" style="list-style-type: lower-alpha;"><li>Python3 specific version is shown belowThen select '''<Reboot>''' to restart the system for the configuration to take effect</li></ol></li></ol>
orangepi@orangepi[[File:~$ '''python3'''pi3b-img362.png]]
Python {| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''3The above settings will eventually add the configuration of <span style="color:#FF0000">overlays=raspi-7inch-touchscreen</span> to /boot/orangepiEnv.10txt. After setting, you can check it first. If this configuration does not exist, then there is a problem with the settings.4''' (main, Apr 2 2022, 09:04:19) [GCC 11.2.0] on linux
Type "help"'''If you find it troublesome to use orangepi-config, "copyright"you can also use the vim editor to open /boot/orangepiEnv.txt, "credits" or "license" for more informationand then add the configuration of <span style="color:#FF0000">overlays=raspi-7inch-touchscreen</span> is also possible.'''</big>
>>>
<ol start="2" style="list-style-typeorangepi@orangepi: lower-alpha;"><li>Edit ~$ '''hello_worldcat /boot/orangepiEnv.pytxt | grep "raspi"''' program in Python language</li></ol>
orangepi@orangepi:~$ '''vim hello_world.py<span style="color:#FF0000">overlays=raspi-7inch-touchscreen #Sample configuration</span>'''|}</ol></li></ol><ol start="3" style="list-style-type: decimal;"><li>After startup, you can see the lcd screen display as follows:</li>
print('Hello World!')[[File:pi3b-img363.png]]</ol><span id="the-method-of-server-version-image-rotation-display-direction"></span>
<ol start="3" style="list-style-type: lower-alpha;"><li>= The results method of running '''hello_world.py''' are shown below</li></ol>server version image rotation display direction ===
orangepi@orangepi<ol start="1" style="list-style-type:~$ decimal;"><li><p>Add '''python3 hello_worldextraargs=fbcon=rotate:the direction to rotate''' in '''/boot/orangepiEnv.pytxt'''This line configuration can set the direction displayed by the server version of the Linux system, where the number after '''fbcon=rotate:''' can be set as:</p></li>
Hello World!<ol style="list-style-type: lower-alpha;"><li><p>0: normal screen (default is landscape)</p></li><li><p>1: Turn clockwise 90 degrees</p></li><li><p>2: Flip 180 degrees</p></li><li><p>3: Turn clockwise 270 degrees</p></li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo vim /boot/orangepiEnv.txt''' overlays=lcd1
'''<ol start="3" span style="list-style-typecolor: decimal;#FF0000"><li><p>Ubuntu jammy defaults to compile tools and operating environments that are not installed in Javaextraargs=cma=64M fbcon=rotate:3</pspan>'''<ol |}{| class="wikitable" style="listbackground-style-typecolor:#ffffdc;width: lower-alpha800px;">|-| <libig>You '''Note that if there is the line extraargs=cma=64M in /boot/orangepiEnv.txt by default, the configuration fbcon=rotate:3 can use the following command to install openjdk-18be added after extraargs=cma=64M (separated by spaces).'''</libig>|}</ol>
</li></ol>
<ol start="2" style="list-style-type: decimal;">
<li>Then '''<span style="color:#FF0000">restart</span>''' the Linux system and you can see that the direction displayed on the LCD screen has been rotated</li></ol>
orangepi@orangepi:~$ '''sudo apt install <span id="method-y openjdkof-18rotating-jdk'''display-and-touch-direction-of-desktop-version-image"></span>
<ol start="2" style="list-style-type: lower-alpha;"><li>After installation, you can check the = Method of rotating display and touch direction of desktop version of Java</li></ol>image ===
orangepi@orangepi:~$ # First open '''java --versionDisplay'''Settings in Linux
openjdk 18::[[File:pi3b-ea 2022-03-22img364.png]]
OpenJDK Runtime Environment (build 18<ol start="2" style="list-ea+36style-Ubuntutype: decimal;"><li><p>Then select the direction you want to rotate in '''Rotation'''</p><ol style="list-1)style-type: lower-alpha;"><li><p>'''None''': no rotation</p></li><li><p>'''Left''': rotate left 90 degrees</p></li><li><p>'''Inverted''': Flip up and down, which is equivalent to rotating 180 degrees</p></li><li><p>'''Right''': rotate right 90 degrees</p></li>
OpenJDK 64[[File:pi3b-Bit Server VM (build 18img365.png]]</ol></li></ol><ol start="3" style="list-ea+36style-Ubuntu-1, mixed mode, sharing)type: decimal;"><li>Then click '''Apply'''</li>
[[File:pi3b-img366.png]]</ol><ol start="34" style="list-style-type: lower-alphadecimal;"><li>Edit the Then select '''hello_world.javaKeep this configuration''' of the Jave version</li></ol>
[[File:pi3b-img367.png]]</ol><ol start="5" style="list-style-type: decimal;"><li><p>At this point, the screen display has been rotated, and then close the '''Display''' program</p></li><li><p>The above steps will only select the display direction, and will not rotate the direction of the touch. Use the '''set_lcd_rotate.sh''' script to rotate the direction of the touch. After the script is set, it will automatically restart, and then you can test whether the touch has been used normally.</p><ol style="list-style-type: lower-alpha;"><li>'''None''': no rotation</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''set_lcd_rotate.sh none'''|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li>'''Left''': rotate left 90 degrees</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''vim hello_worldset_lcd_rotate.javash left'''|}</ol><ol start="3" style="list-style-type: lower-alpha;">public <li>'''Inverted''': Flip up and down, which is equivalent to rotating 180 degrees</li>{| class hello_world="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''set_lcd_rotate.sh inverted'''|}</ol><ol start="4" style="list-style-type: lower-alpha;"><li>'''Right''': rotate right 90 degrees</li>{| class="wikitable" style="width:800px;" |-public static void main(String[] args)| orangepi@orangepi:~$ '''set_lcd_rotate.sh right'''|}{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''The set_lcd_rotate.sh script mainly does four things:'''
System.out.println("Hello World!");
}'''1. Rotate the direction displayed by the framebuffer'''
}'''2. Rotate the direction of the touch'''
<ol start="4" style="list-style-type: lower-alpha;"><li>Then compile and run '''hello_world3.javaTurn off the boot logo'''</li></ol>
orangepi@orangepi:~$ '''javac hello_world4.javaRestart the system'''
orangepi@orangepi:~$ '''java hello_world'''
Hello World!'''Rotating the touch direction is achieved by adding the line Option "TransformationMatrix" "x x x x x x x x x" to /usr/share/X11/xorg.conf.d/40-libinput.conf Where "x x x x x x x x x" is configured differently for different directions.'''</big>|}</ol></li></ol><ol start="7" style="list-style-type: decimal;"><li>Touch rotation reference</li>{| class="wikitable" style="width:800px;" |-| '''https://wiki.ubuntu.com/X/InputCoordinateTransformation'''|}</ol><span id="instructions-for-using-the-switch-logo"></span>
<span id="qt-installation-method"></span>== QT installation method Instructions for using the switch logo ==
# Use By default, the following script switch logo will only be displayed in the desktop version of the system# Set the '''bootlogo''' variable to install QT5 and QT Creator'''false''' in '''/boot/orangepiEnv.txt''' to turn off the switch logo
::{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''install_qtvim /boot/orangepiEnv.shtxt'''
<ol startverbosity="2" style="list-style-type: decimal;"><li><p>The QT version number will be automatically printed after installation</p><ol style="list-style-type: lower-alpha;"><li>Ubuntu20.04 comes with QT version '''5.12.8'''</li></ol></li></ol>1
orangepi@orangepi:~$ '''install_qt.sh<span style="color:#FF0000">bootlogo=false</span>'''|}
<ol start="3" style="list-style-type: decimal;"><li>Set the '''bootlogo''' variable to '''true''' in '''/boot/orangepiEnv......txt''' to enable the switch logo</li>
QMake version 3{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''vim /boot/orangepiEnv.1txt'''
Using Qt version '''5.12.8''' in /usr/lib/aarch64-linux-gnuverbosity=1
'''<span style="color:#FF0000">bootlogo=true</span>'''|}</ol><ol start="24" style="list-style-type: lower-alphadecimal;"><li>Ubuntu22.04 comes with QT version The location of the boot logo image in the Linux system is</li>{| class="wikitable" style="width:800px;" |-| '''5.15/usr/share/plymouth/themes/orangepi/watermark.3png'''|}</ol><ol start="5" style="list-style-type: decimal;"><li>After replacing the boot logo picture, you need to run the following command to take effect</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo update-initramfs -u'''|}</ol><span id="how-to-use-the-zfs-file-system"></span>
orangepi@orangepi:~$ '''install_qt.sh'''== How to use the ZFS file system ==
{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''The latest version of Ubuntu20.04, Ubuntu22.04, Debian11 and Debian12 <span style="color:#FF0000">desktop version systems</span> have pre-installed zfs, you can use it directly....'''
QMake '''The pre-installed zfs version 3in Ubuntu20.04 and Ubuntu22.04 desktop systems is 2.1.6.'''
Using Qt version '''5The pre-installed zfs version in Debian11 and Debian12 desktop systems is 2.1.1511.3''' in /usr/lib/aarch64-linux-gnu
<ol start="3" style="list-style-type: lower-alpha;"><li>Debian11 comes with QT version '''5After the system starts, please first confirm whether the zfs kernel module has been loaded.15If you can see zfs-related content using the lsmod command, it means that the system has pre-installed zfs.2'''</li></olbig>
orangepi@orangepi:~$ '''install_qt.shlsmod | grep "zfs"'''
......zfs 2801664 0
QMake version 3.zunicode 327680 1 zfs
Using Qt version '''5.15.2''' in /usr/lib/aarch64-linux-gnuzzstd 471040 1 zfs
<ol start="4" style="list-style-type: lower-alphazlua "><li>Debian12 comes with QT version '''5.15.8'''</li></ol> 139264 1 zfs
orangepi@orangepi:~$ '''install_qt.sh'''zcommon 69632 1 zfs
......znvpair 61440 2 zfs,zcommon
QMake version 3.zavl 16384 1 zfs
Using Qt version '''5.15.8''' in /usr/lib/aarch64-linux-gnuicp 221184 1 zfs
<ol start="3" style="list-style-type: decimalspl "> 77824 6 zfs,icp,zzstd,znvpair,zcommon,zavl<li>Then you can see the QT Creator launch icon in '''Applications'''</li></ol>|}
[[File:pi3b<span id="how-img327.png|576x270px]]to-install-zfs"></span>=== How to install ZFS ===
QT Creator can also {| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''Before installing zfs, please make sure that the Linux image used is the latest version. In addition, if zfs is already installed in the system, it needs to be opened using the following commandinstalled again.'''</big>|}
orangepi@orangepi:~$ Before installing zfs, you need to install the kernel header file first. For the method of installing the kernel header file, please refer to the instructions in the [[Orange Pi 3B#How to install kernel header files|'''qtcreatorsection on the method of installing the kernel header file''']].
'''During the startup of QT In Ubuntu20.04, Ubuntu22.04 and QT applicationsDebian11 systems, zfs cannot be installed directly through apt, if because the following error default apt source zfs version is displayedlower than 2.1.6, ignore itand there is a problem of incompatibility with rk Linux5.10 kernel. This error has no impact on application runningproblem is fixed in zfs version 2.1.6 and later.'''
To solve this problem, we provide a zfs deb package that can be installed normally, which can be downloaded from the [http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-3B.html '''official tool'''] of the development board. Open the '''libGL error: failed to create dri screen<span class="mark">official tool</span>''', and enter the '''<span class="mark">zfs-related deb package folders used by Ubuntu and Debian systems</span>'''. You can see three types of deb packages: Ubuntu20.04, Ubuntu22.04 and Debian11. Please download the required version.
'''libGL error[[File: failed to load driver: rockchip'''pi3b-img368.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 '''libGL error: failed [[Orange Pi 3B#The method of uploading files to the Linux system of the development board|the description in the section of the method of uploading files to create dri screenthe Linux system of the development board]].'''
After the upload is complete, use the '''libGL error: failed to load driver: rockchipcd'''command in the command line of the development board Linux system to enter the directory of the deb package, and then use the following command to install the deb package of zfs.
<ol start{| class="4wikitable" style="list-style-typewidth: decimal800px;"><li>The interface after QT Creator is opened is as follows<|-| orangepi@orangepi:~$ '''sudo apt install ./li></ol>*.deb'''|}
[[FileAfter the installation is complete, use the following command to see the zfs-related kernel modules:pi3b-img328.png|418x222px]]
<ol start{| class="5wikitable" style="list-style-typewidth: decimal800px;"><li><p>The QT Creator version is shown below</p>|-| <ol style="list-style-typeorangepi@orangepi: lower-alpha;"><li>The default version of QT Creator in ~$ '''Ubuntu20ls /lib/modules/5.10.04160-rockchip-rk356x/updates/dkms/''' is as follows</li></ol></li></ol>
[[File:pi3b-img329'''icp.pngko spl.ko zavl.ko zcommon.ko zfs.ko zlua.ko znvpair.ko zunicode.ko zzstd.ko'''|419x224px]]}
<ol start="2" style="list-style-typeThen restart the Linux system to see that the zfs kernel module will be automatically loaded: lower-alpha;"><li>The default version of QT Creator in '''Ubuntu22.04''' is as follows</li></ol>
[[File{| class="wikitable" style="width:pi3b800px;" |-img330.png| orangepi@orangepi:~$ '''lsmod |443x237px]]grep "zfs"'''
<ol start="3" style="list-style-type: lower-alphazfs "><li>The default version of QT Creator in '''Debian11''' is as follows</li></ol> 2801664 0
[[File:pi3b-img331.png|444x238px]]zunicode 327680 1 zfs
<ol start="4" style="list-style-type: lower-alphazzstd "><li>The default version of QT Creator in '''Debian12''' is as follows</li></ol> 471040 1 zfs
[[File:pi3b-img332.png|449x277px]]zlua 139264 1 zfs
<ol start="6" style="list-style-type: decimalzcommon "><li><p>Then set QT</p><ol style="list-style-type: lower-alpha 69632 "><li>First open '''Help'''- 1 >nbsp;'''About Plugins...'''</li></ol></li></ol>zfs
[[File:pi3b-img333.png|573x164px]]znvpair 61440 2 zfs,zcommon
<ol start="2" style="list-style-type: lower-alphazavl "><li>Then remove the check box for '''ClangCodeModel'''</li></ol> 16384 1 zfs
[[File:pi3b-img334.png|408x254px]]icp 221184 1 zfs
<ol start="3" style="list-style-type: lower-alphaspl "><li><p>'''Restart QT Creator after the Settings are complete'''</p></li><li><p>Then make sure that QT Creator uses the GCC compiler 77824 6 zfs,icp,zzstd,znvpair, if the default is Clangzcommon, change it to GCC</p></li></ol>zavl|}
'''In Debian12 Please skip this step, 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.'''
[[File{| class="wikitable" style="width:pi3b800px;" |-| orangepi@orangepi:~$ '''sudo apt install -y zfsutils-linux zfs-img335.pngdkms'''|576x315px]]}
[[File:pi3b<span id="methods-img336.png|575x307px]]of-creating-zfs-pools"></span>
<ol start="7" style="list-style-type: decimal;"><li>You can then open a sample code</li></ol>= Methods of creating ZFS pools ===
[[File{| class="wikitable" style="background-color:#ffffdc;width:pi3b800px;" |-img337| <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.png|575x312px]]'''
<ol start="8" style="list-style-type: decimal;"><li>Clicking '''The following content is demonstrated based on the example code will automatically open the corresponding instruction document, you can carefully read the instructionsdevelopment board connected to an NVMe SSD and a USB flash drive.'''</li></olbig>|}
[[File# 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:pi3b-img338.png|576x218px]]
<ol start="9" style="list::[[File:pi3b-style-type: decimal;"><li>Then click '''Configure Project'''</li></ol>img369.png]]
[[File<ol start="2" style="list-style-type: decimal;"><li>Then enter the following command to create a ZFS pool, including two storage devices, NVMe SSD and U disk</li>{| class="wikitable" style="width:pi3b800px;" |-img339.png|575x304px]]orangepi@orangepi:~$ '''sudo zpool create -f pool1 /dev/nvme0n1 /dev/sda'''|}</ol><ol start="3" style="list-style-type: decimal;"><li>Then use the '''zpool list''' command to see that the system has created a ZFS pool named '''pool1''', and the size of the ZFS pool pool1 is the size of the NVME SSD plus the size of the U disk</li>
[[File:pi3b-img370.png]]</ol><ol start="104" style="list-style-type: decimal;"><li>Then click the green triangle in the lower left corner execute '''df -h''' to see that '''pool1''' is mounted to compile and run the sample code'''/pool1''' directory</li>{| class="wikitable" style="width:800px;" |-|orangepi@orangepi:~$ '''df -h''' </olbr>
[[File:pi3b-img340.png|575x312px]]Filesystem Size Used Avail Use% Mounted on
<ol start="11" style="list-style-type: decimaltmpfs 1.6G "><li>After waiting for a period of time, the interface shown in the following figure will pop up, which indicates that QT can compile and 18M 1.6G 2% /run normally</li></olbr>
[[File:pi3b-img341/dev/mmcblk0p2 29G 6.png|576x308px]]0G 22G 22% / <br>
<ol start="12" style="list-style-type: decimaltmpfs 7.7G "><li>Reference documents< 46M 7.7G 1% /dev/li>shm </olbr>
https://wikitmpfs 5.0M 4.qt0K 5.io0M 1% /run/Install_Qt_5_on_Ubuntulock <br>
https://downloadtmpfs 7.qt7G 944K 7.io/archive7G 1% /qtcreatortmp <br>
https:/dev/download.qt.iommcblk0p1 1022M 115M 908M 12% /archive/qtboot <br>
/dev/zram1 188M 4.5M 169M 3% /var/log <span id="ros-installation-method"></spanbr>== ROS Installation Method ==
<span id="how-to-install-ros-tmpfs 1.6G 80K 1-noetic-on-ubuntu-20.04">6G 1% /run/user/1000 </spanbr>=== How to install ROS 1 Noetic on Ubuntu 20.04 ===
'''pool1 489G 9.3M 489G 1% <span style="color:# The current active version FF0000">/pool1</span>''' <br>|}</ol><ol start="5" style="list-style-type: decimal;"><li>Use the following command to see that the file system type of ROS 1 is as follows, the recommended version pool1 is zfs</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''Noetic Ninjemysmount | grep pool1'''
[[Filepool1 on /pool1 type '''<span style="color:pi3b#FF0000">zfs</span>''' (rw,xattr,noacl)|}</ol><ol start="6" style="list-img342style-type: decimal;"><li>Then we can test copying a file to the ZFS pool</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo cp -v /usr/local/test.png|345x235px]]mp4 /pool1/'''
[[File:pi3b'/usr/local/test.mp4' -img343> '/pool1/test.pngmp4'|576x210px]]}</ol><span id="test-the-data-deduplication-function-of-zfs"></span>
[http=== Test the data deduplication function of ZFS === # The data deduplication function of ZFS is disabled by default, we need to execute the following command to enable it:://docs.ros.org/ http{| class="wikitable" style="width://docs.ros.org]800px;" |-| orangepi@orangepi:~$ '''https://wiki.ros.org/Distributionssudo zfs set dedup=on pool1'''|}
<ol start="2" style="list-style-type: decimal;">
<li>The official installation document link Then do a simple test, first enter pool1, and then execute the following command to generate a random file with a size of ROS 1 1G</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''Noetic Ninjemyscd /pool1/''' is as follows:</li></ol>
[httproot@orangepi://wiki.ros.org/noetic/Installation/Ubuntu pool1$ '''http:sudo dd if=/dev/wikiurandom of=test.ros.org/noetic/Installation/Ubuntu1g bs=1M count=1024''']
<ol start="3" style="list-style-type: decimal;"><li>In the official installation document of ROS '''Noetic Ninjemys''', Ubuntu recommends using Ubuntu20.04, so please make sure that the system used by the development board is '''Ubuntu20.04 desktop system'''</li></ol>1024+0 records in
http://wiki.ros.org/noetic/Installation [[File:pi3b-img344.png|312x176px]]1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 5.04367 s, 213 MB/s
|}
</ol>
<ol start="3" style="list-style-type: decimal;">
<li>Then use the following command to copy 1000 random files of size 1G</li>
{| class="wikitable" style="width:800px;"
|-
|
root@orangepi:/pool1$ '''for ((i=0; i<1000; i++)); do sudo cp test.1g $i.test.1g; done'''
|}
</ol>
<ol start="4" style="list-style-type: decimal;">
<li>Then use '''du -lh''' to see that there are currently 1002G of data in the pool, but in fact the size of the ZFS pool is only '''504GB''' (the script below to install ros1total capacity of SSD+U disk), which cannot hold such a large amount of data</li></ol>{| class="wikitable" style="width:800px;" |-| root@orangepi@orangepi3b:~/pool1$ '''install_ros.sh ros1du -lh'''
1002G
|}
</ol>
<ol start="5" style="list-style-type: decimal;">
<li>Before using Then use the ROS tool'''zpool list''' command to see that only 1.01G is actually occupied, you first need to initialize rosdepbecause these 1001 files are all duplicates, and then you can quickly install some system dependencies and some core components in ROS when compiling indicating that the source codedata deduplication function is effective.</li></ol>
'''Note that running [[File:pi3b-img371.png]]</ol><span id="test-the following command needs to ensure that the development board can access github normally, otherwise an error will be reported due to network problems.'''-data-compression-function-of-zfs"></span>
'''The install_ros.sh script will try to modify /etc/hosts and automatically run === Test the following commands. However, this method cannot guarantee normal access to github every time. If the following error is displayed after installing ros1 in install_ros.sh, please find other ways to allow the Linux system data compression function of the development board to access github normally, and then manually run the following Order.'''ZFS ===
# Because the stored data is different, the disk space saved by compression will also be different, so we choose to compress relatively large plain text files for compression testing, and execute the following commands to pack the '''https:/var/raw.githubusercontent.comlog/ros/rosdistro/master''' and '''/rosdepetc/osx-homebrew.yaml'''directories into a tarball
::{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''Hit https://raw.githubusercontent.com/ros/rosdistro/mastercd /rosdeppool1/base.yaml'''
root@orangepi:/pool1$ '''ERROR: error loading sources list:sudo tar -cf text.tar /var/log/ /etc/'''|}
<ol start="2" style="list-style-type: decimal;"><li>Then the file size that can be seen through the '''The read operation timed outls -lh'''command and the space occupied in the ZFS pool are both '''27M'''</li>
orangepi[[File:pi3b-img372.png]]</ol><ol start="3" style="list-style-type: decimal;"><li>Then we enable compression in the ZFS pool pool1</li>{| class="wikitable" style="width:800px;" |-| root@orangepi:~/pool1$ '''source sudo zfs set compression=lz4 pool1'''|}</optol><ol start="4" style="list-style-type: decimal;"><li>Then execute the following command again to package the '''/rosvar/noeticlog/''' and '''/etc/setup.bash'''directories into a tar package</li>{| class="wikitable" style="width:800px;" |-| orangepiroot@orangepi:~/pool1$ '''sudo rosdep inittar -cf text.tar /var/log/ /etc/'''|}</ol><ol start="5" style="list-style-type: decimal;"><li>At this time, you can see that the size of the '''text.tar''' file is still 27M, but it only occupies 9.47M in the ZFS pool, indicating that the file is compressed</li>
Wrote /etc/ros/rosdep/sources.list[[File:pi3b-img373.dpng]]</20ol><span id="how-to-default.listshut-down-and-restart-the-development-board"></span>
Recommended: please run== How to shut down and restart the development board ==
rosdep update# During the running of the Linux system, if the Type-C power supply is directly unplugged, some data may be lost or damaged in the file system, so please use the '''poweroff''' command to shut down the Linux system of the development board before powering off. Then unplug the power again.
::{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''rosdep updatesudo poweroff'''|}
reading in sources <ol start="2" style="list data from /etc/ros-style-type: decimal;"><li>In addition, the development board is equipped with a switch button, and you can also '''short press''' the switch button on the development board to shut down.</rosdep/sources.list.dli>
Hit https[[File://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osxpi3b-homebrewimg374.yamlpng]]
Hit https{| class="wikitable" style="background-color://raw#ffffdc;width:800px;" |-| <big>'''Note that the Linux desktop version system will pop up a confirmation box as shown in the figure below after pressing the switch button, and the system will shut down only after clicking the Shut Down option.githubusercontent.com'''</ros/rosdistro/master/rosdep/base.yamlbig>
Hit https[[File:pi3b-img375.png|center]]|}<//rawol><ol start="3" style="list-style-type: decimal;"><li>Short press the switch button on the development board after shutting down to start up.githubusercontent.com</ros/rosdistro/master/rosdep/python.yamlli>
Hit https[[File://raw.githubusercontentpi3b-img374.compng]]</rosol><ol start="4" style="list-style-type: decimal;"><li>The command to restart the Linux system is</rosdistro/masterli>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo''' '''reboot'''|}</rosdepol><span id="linux-sdkorangepi-build-instructions"></ruby.yamlspan>
Hit https://raw.githubusercontent.com/ros/rosdistro/master/releases/fuerte.yaml= '''Linux SDK——orangepi-build instructions''' =
Query rosdistro index https://raw.githubusercontent.com/ros/rosdistro/master<span id="compilation-system-requirements"></index-v4.yamlspan>== Compilation system requirements ==
Skip end{| class="wikitable" style="background-of-life distro "color:#ffffdc;ardent"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.'''
Skip end-of-life distro "bouncy"
Skip end'''If you use orangepi-build to compile the Linux image in the Ubuntu22.04 system of-life distro "crystal"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>|}
Skip end<span id="compile-with-the-ubuntu22.04-system-of-life distro "dashing"the-development-board"></span>=== Compile with the Ubuntu22.04 system of the development board ===
Skip end# The Linux SDK, namely '''orangepi-build''', supports running on the '''Ubuntu 22.04''' ofthe development board (other systems have not been tested), so before downloading orangepi-life distro "eloquent"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.
Add distro "foxy"::{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''lsb_release -a'''
Add distro "galactic"No LSB modules are available.
Skip end-of-life distro "groovy"Distributor ID: Ubuntu
Add distro "humble"Description: Ubuntu 22.04.1 LTS
Skip end-of-life distro "hydro"Release: '''<span style="color:#FF0000">22.04</span>'''
Skip end-of-life distro "indigo"Codename: jammy|}
Skip end<ol start="2" style="list-ofstyle-life distro "jade"type: decimal;"><li>'''<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>'''</li></ol>
Skip end<span id="compile-ofwith-life distro "kinetic"x64-ubuntu22.04-computer"></span>
Skip end-of-life distro "lunar"=== Compile with x64 Ubuntu22.04 computer ===
Add distro "melodic"# 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.
Add distro "noetic"::{| class="wikitable" style="width:800px;" |-| test@test:~$ '''lsb_release -a'''
Add distro "rolling"No LSB modules are available.
updated cache in /home/orangepi/.ros/rosdep/sources.cacheDistributor ID: Ubuntu
<ol start="6" style="list-style-typeDescription: decimal;"><li><p>Then open a command line terminal window on the desktop, and then use the test_rosUbuntu 22.sh script to start a small turtle routine to test whether ROS can be used normallyorangepi@orangepi:~$ '''test_ros.sh'''</p></li><li><p>After running the '''test_ros.sh''' script, a little turtle as shown in the figure below will pop up</p></li></ol>04 LTS
Release: '''<div classspan style="figurecolor:#FF0000">22.04</span>'''
[[FileCodename:pi3b-img345.pngjammy|575x275px|图片4]]}
</div><ol start="82" style="list-style-type: decimal;"><li>Then <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 keep be careful not to compile orangepi-build on the terminal window just opened at WSL virtual machine, because orangepi-build has not been tested in the topWSL 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 '''<span style="color:#FF0000">amd64</olspan>''' version is:</p></li>
<div {| class="figurewikitable">style="width:800px;" |-| [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''']
[[File:pi3b-img346.png|576x275px|图片5]]Or
'''https://repo.huaweicloud.com/ubuntu-releases/22.04/ubuntu-22.04.1-desktop-amd64.iso'''|}</divol><ol start="94" style="list-style-type: decimal;"><li>At this time, press the direction keys <p>After installing Ubuntu 22.04 on the keyboard to control computer or virtual machine, please set the little turtle software source of Ubuntu 22.04 to move upTsinghua source, down, left, and rightotherwise it is easy to make mistakes due to network reasons when installing the software later</p><ol style="list-style-type: lower-alpha;"><li>For the method of replacing Tsinghua source, please refer to the instructions on this web page</olli>
[[File{| class="wikitable" style="width:pi3b800px;" |-img347| '''https://mirrors.tuna.tsinghua.edu.pngcn/help/ubuntu/'''|575x296px]]}</ol><ol start="2" style="list-style-type: lower-alpha;"><li>Note that the Ubuntu version needs to be switched to 22.04</li>
[[File:pi3b-img376.png]]<span id/ol><ol start="how-to-install-ros-2-galactic3" style="list-onstyle-ubuntutype: lower-20.04alpha;"><li>The content of the '''/spanetc/apt/sources.list''' file that needs to be replaced is</li>=== How to install ROS 2 Galactic on Ubuntu 20.04 ===
# The current active version of ROS 2 is as follows, the recommended version is {| class="wikitable" style="width:800px;" |-| test@test:~$ '''Galactic Geochelonesudo mv /etc/apt/sources.list /etc/apt/sources.list.bak'''
[[Filetest@test:pi3b-img348~$ '''sudo vim /etc/apt/sources.png|576x271px]]list'''
[[File:pi3b-img349.png|575x265px]]<p># By default, the source image is commented to improve the speed of apt update, you can uncomment it yourself if necessary</p>
[httpdeb https://docsmirrors.rostuna.org/ http:tsinghua.edu.cn/ubuntu/docs.ros.org]jammy main restricted universe multiverse
'''http<p># deb-src https://docsmirrors.rostuna.orgtsinghua.edu.cn/enubuntu/galacticjammy main restricted universe multiverse</Releases.html'''p>
<ol start="2" style="list-style-typedeb https: decimal;"><li>The link to the official ROS 2 '''Galactic Geochelone''' installation documentation is as follows:</li></ol>mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
'''docs<p># deb-src https://mirrors.rostuna.orgtsinghua.edu.cn/enubuntu/galacticjammy-updates main restricted universe multiverse</Installation.html'''p>
'''httpdeb https://docsmirrors.rostuna.org/en/galactictsinghua.edu.cn/Installationubuntu/Ubuntujammy-Install-Debians.html'''backports main restricted universe multiverse
<ol start="3" style="list-stylep># deb-typesrc https: decimal;"><li><p>It is recommended to use Ubuntu20//mirrors.04 in the official installation document of ROS 2 '''Galactic Geochelone''', so please ensure that the system used by the development board is '''Ubuntu20tuna.04 desktop version'''tsinghua. There are several ways to install ROS 2edu. The following shows how to install ROS 2 '''Galactic Geochelone''' using '''Debian packages'''<cn/p><ubuntu/li><li><p>Use the '''install_ros.sh''' script to install ros2jammy-backports main restricted universe multiverse</p></li></ol>
orangepi@orangepideb https:~$ '''install_ros//mirrors.sh ros2'''tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
<ol start="5" style="list-stylep># deb-typesrc https: decimal;"><li>The '''install_ros//mirrors.tuna.tsinghua.sh''' script will automatically run the '''ros2 -h''' command after installing ros2edu. If you can see the following print, it means that the ros2 installation is complete<cn/ubuntu/li>jammy-security main restricted universe multiverse</olp>
usage: ros2 [-h] Call `ros2 <command> -h` for more detailed usage. ...
ros2 is an extensible command<p># Pre-line tool for ROS 2.release software source, not recommended to enable</p>
optional arguments<p># deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse</p>
<p># deb-hsrc https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse</p>|}</ol><ol start="4" style="list-style-type: lower-alpha;"><li>After the replacement, you need to update the package information and make sure there is no error</li>{| class="wikitable" style="width:800px;" |-| test@test:~$ '''sudo apt update'''|}</ol><ol start="5" style="list-style-type: lower-help show this help message alpha;"><li>'''<span style="color:#FF0000">In addition, since the source codes such as the kernel and exitU-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>'''</li></ol></li></ol><span id="get-the-source-code-of-linux-sdk"></span>
Commands:== Get the source code of Linux sdk ==
action Various action related sub<span id="download-commandsorangepi-build-from-github"></span>=== Download orangepi-build from github ===
bag Various rosbag related sub# The Linux sdk actually refers to the code of orangepi-commandsbuild. 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:
component Various component related sub::{| class="wikitable" style="width:800px;" |-commands| test@test:~$ '''sudo apt-get update'''
daemon Various daemon related subtest@test:~$ '''sudo apt-commandsget install -y git'''
doctor Check ROS setup and other potential issuestest@test:~$ '''git clone https://github.com/orangepi-xunlong/orangepi-build.git -b next'''|}::{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''Note that the Orange Pi 3B development board needs to download the source code of the <span style="color:#FF0000">next</span> branch of orangepi-build. The above git clone command needs to specify the branch of the orangepi-build source code as next.'''</big>
interface Show information about ROS interfaces<div class="figure">
launch Run a launch file[[File:pi3b-img377.png|center]]
lifecycle Various lifecycle related sub</div>|}::{| class="wikitable" style="background-commandscolor:#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>|}
multicast Various multicast related sub<ol start="2" style="list-commandsstyle-type: decimal;"><li>The u-boot and Linux kernel versions currently used by the development board are as follows</li>
node Various node related sub{| class="wikitable" style="width:800px;text-commandsalign: center;"|-|'''branch'''|'''u-boot version'''|'''Linux Kernel version'''|-|'''legacy'''|'''u-boot 2017.09'''|'''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.'''
param Various param related sub'''Currently, the Linux5.10 bsp kernel provided by RK is defined as the legacy branch. If the mainline kernel is supported in the future, a current branch will be added.'''</big>|}</ol><ol start="3" style="list-commandsstyle-type: decimal;"><li><p>orangepi-build will contain the following files and folders after downloading</p><ol style="list-style-type: lower-alpha;"><li><p>'''build.sh''': Compile the startup script</p></li><li><p>'''external''': Contains the configuration files needed to compile the image, specific scripts, and the source code of some programs, etc.</p></li><li><p>'''LICENSE''': GPL 2 license file</p></li><li><p>README.md: orangepi-build documentation</p></li><li><p>'''scripts''': General script for compiling Linux images</p></li>{| class="wikitable" style="width:800px;" |-| test@test:~/orangepi-build$ '''ls'''
pkg Various package related sub'''build.sh external LICENSE README.md scripts'''|}{| class="wikitable" style="background-commandscolor:#ffffdc;width:800px;" |-| <big>'''If you downloaded the code of orangepi-build from github, after downloading, you may find that orangepi-build does not contain the source code of u-boot and Linux kernel, nor does u-boot and Linux kernel need to use cross-compilation tools Chain, this is normal, because these things are stored in other separate github warehouses or some servers (the addresses will be detailed below). orangepi-build will specify the address of u-boot, Linux kernel and cross-compilation toolchain in the script and configuration file. When running orangepi-build, when it finds that there are no such things locally, it will automatically go to the corresponding place to download them.'''</big>|}</ol></li></ol><span id="download-the-cross-compilation-toolchain"></span>
run Run a package specific executable=== Download the cross-compilation toolchain ===
security Various security related sub{| class="wikitable" style="background-commandscolor:#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>|}
service Various service related sub-commands topic Various topic related sub-commands wtf Use `wtf` as alias to `doctor` Call `ros2 <command> # When orangepi-h` build runs for more detailed usage. <ol start="6" style="listthe first time, it will automatically download the cross-style-type: decimal;"><li>Then you can use compilation toolchain and put it in the '''test_ros.shtoolchains''' script to test whether ROS 2 is installed successfullyfolder. If you can see Every time after running the following printbuild.sh script of orangepi-build, it means that ROS 2 can run normally</li></ol> orangepi@orangepi3b:~$ will check whether the cross-compilation toolchain in '''test_ros.shtoolchains''' [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] <ol start="7" style="list-style-type: decimal;"><li>Run exists , if it does not exist, the download will be restarted, if it exists, it will be used directly, and the following command to open rviz2</li></ol> orangepi@orangepi:~$ '''source /opt/ros/galactic/setupdownload will not be repeated.bash''' orangepi@orangepi:~$ '''ros2 run rviz2 rviz2'''
<div class="figure">
::[[File:pi3b-img350img378.png|576x324px|1]]
</div>
<ol start="82" style="list-style-type: decimal;"><li>For The image URL of the usage of ROS, please refer to cross-compilation toolchain in China is the documentation open source software image site of ROS 2Tsinghua University</li>{| class="wikitable" style="width:800px;" |-| '''https://mirrors.tuna.tsinghua.edu.cn/armbian-releases/_toolchain/'''|}</ol><ol start="3" style="list-style-type: decimal;"><li>After '''toolchains''' is downloaded, it will contain multiple versions of cross-compilation toolchains, and the development board will only use two of them</li>{| class="wikitable" style="width:800px;" |-| test@test:~/orangepi-build$ '''ls toolchains/'''
http://docsgcc-arm-11.ros2-2022.org/en/galactic/Tutorials.html02-x86_64-aarch64-none-linux-gnu
<span id="howgcc-toarm-install11.2-ros2022.02-2x86_64-humblearm-onnone-ubuntulinux-22.04"></span>=== How to install ROS 2 Humble on Ubuntu 22.04 ===gnueabihf
# Use the '''install_rosgcc-arm-9.sh''' script to install ros22-2019.12-x86_64-aarch64-none-linux-gnu
orangepi@orangepi:~$ '''install_rosgcc-arm-9.sh ros2'''2-2019.12-x86_64-arm-none-linux-gnueabihf
<ol start="2" style="listgcc-stylelinaro-type: decimal;"><li>The '''install_ros4.sh''' script will automatically run the '''ros2 9.4-h''' command after installing ros22017. If you can see the following print, it means that the ros2 installation is complete</li></ol>01-x86_64_arm-linux-gnueabi
usage: ros2 [gcc-h] Call `ros2 <command> linaro-h` for more detailed usage. 5.5.0-2017.10-x86_64_arm-linux-gnueabihf
ros2 is an extensible commandgcc-line tool for ROS 2linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu
optional arguments:gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabi
gcc-h, linaro-aarch64-help show this help message and exitnone-elf-4.8-2013.11_linux
Commands:gcc-linaro-arm-linux-gnueabihf-4.8-2014.04_linux
action Various action related subgcc-commandslinaro-arm-none-eabi-4.8-2014.04_linux|}</ol><ol start="4" style="list-style-type: decimal;"><li><p>The cross-compilation toolchain used to compile the Linux kernel source code is</p><ol style="list-style-type: lower-alpha;"><li>Linux5.10</li>{| class="wikitable" style="width:800px;" |-| '''gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu'''|}</ol></li></ol><ol start="5" style="list-style-type: decimal;"><li><p>The cross-compilation tool chain used to compile the u-boot source code is</p><ol style="list-style-type: lower-alpha;"><li>v2017.09</li>{| class="wikitable" style="width:800px;" |-| '''gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu'''|}</ol></li></ol><span id="orangepi-build-complete-directory-structure-description"></span>
bag Various rosbag related sub=== orangepi-commandsbuild complete directory structure description ===
component Various component related sub<ol style="list-commandsstyle-type: decimal;"><li><p>The orangepi-build repository does not contain the source code of the Linux kernel, u-boot, and cross-compilation toolchain after downloading. The source code of the Linux kernel and u-boot is stored in an independent git repository</p><ol style="list-style-type: lower-alpha;"><li>The git repository where the Linux kernel source code is stored is as follows:</li>{| class="wikitable" style="width:800px;" |-| '''https://github.com/orangepi-xunlong/linux-orangepi/tree/orange-pi-5.10-rk35xx'''|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li>The git warehouse where the b.u-boot source code is stored is as follows:</li>{| class="wikitable" style="width:800px;" |-| '''https://github.com/orangepi-xunlong/u-boot-orangepi/tree/v2017.09-rk3588'''|}</ol></li></ol><ol start="2" style="list-style-type: decimal;"><li><p>When orangepi-build runs for the first time, it will download the cross-compilation toolchain, u-boot and Linux kernel source code. After successfully compiling a Linux image, the files and folders that can be seen in orangepi-build are:</p>:<p>a. '''build.sh''': compile startup script</p>:<p>b. '''external''': Contains the configuration files needed to compile the image, scripts with specific functions, and the source code of some programs. The rootfs compressed package cached during the image compilation process is also stored in external</p>:<p>c. '''kernel''': stores the source code of the Linux kernel, and the folder named orange-pi-5.10-rk35xx stores the kernel source code of the legacy branch of the RK3588/RK3588S/RK3566 series development boards. Please do not manually name the folder name of the kernel source code Modify, if modified, the kernel source code will be re-downloaded when the compilation system is running</p>:<p>d. '''LICENSE''': GPL 2 license file</p>:<p>e. '''README'''.md: orangepi-build documentation</p>:<p>f. '''output''': Store compiled deb packages such as u-boot and Linux, compilation logs, and compiled images and other files</p>:<p>g. '''scripts''': general scripts for compiling Linux images</p>:<p>h. '''toolchains''': store cross-compilation toolchain</p>:<p>i. '''u-boot''': stores the source code of u-boot, the folder named v2017.09-rk3588 stores the u-boot source code of the legacy branch of the RK3588/RK3588S/RK3566 series development boards, the name of the folder of the u-boot source code Please do not modify it manually, if it is modified, the u-boot source code will be re-downloaded when the compiling system is running</p>:<p>j. '''userpatches''': Store configuration files needed to compile scripts</p></li>:{| class="wikitable" style="width:800px;" |-| <p>test@test:~/orangepi-build$ '''ls'''</p><p>'''build.sh external kernel LICENSE output README.md scripts toolchains u-boot userpatches'''</p>|}</ol><span id="compile-u-boot"></span>
daemon Various daemon related sub== Compile u-commandsboot ==
doctor Check ROS setup and other potential issues# Run the build.sh script, remember to add sudo permission
interface Show information about ROS interfaces::{| class="wikitable" style="width:800px;" |-launch Run a launch file| test@test:~/orangepi-build$ '''sudo ./build.sh'''|}
lifecycle Various lifecycle related sub<ol start="2" style="list-commandsstyle-type: decimal;"><li>Select '''U-boot package''', then enter</li>
multicast Various multicast related sub-commands<div class="figure">
node Various node related sub[[File:pi3b-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 usageimg379.png]]
</div></ol>
<ol start="3" style="list-style-type: decimal;">
<li>Then you can use select the '''test_ros.sh''' script to test whether ROS 2 is installed successfully. If you can see model of the following print, it means that ROS 2 can run normallydevelopment board</li></ol>
orangepi@orangepi3b:~$ '''test_ros.sh'''<div class="figure">
[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 WorldFile: 3' [INFO] [1671174103pi3b-img380.204019965] [listenerpng]: I heard: [Hello World: 3]
</div></ol>
<ol start="4" style="list-style-type: decimal;">
<li>Run the following command <p>Then it will start to open rviz2compile u-boot, and some information prompted during compilation is explained as follows</p><ol style="list-style-type: lower-alpha;"><li>u-boot source code version</olli>{| class="wikitable" style="width:800px;" orangepi@orangepi:~$ |-| [ o.k. ] Compiling u-boot [ '''source /opt/ros/humble/setupv2017.bash09''']|}orangepi@orangepi</ol><ol start="2" style="list-style-type: lower-alpha;"><li>The version of the cross-compilation toolchain</li>{| class="wikitable" style="width:~$ 800px;" |-| [ o.k. ] Compiler version [ '''ros2 run rviz2 rviz2aarch64-linux-gnu-gcc 7.4.1''']|}</ol><ol start="3" style="list-style-type: lower-alpha;"><div li>Path to the generated u-boot deb package</li>{| class="figurewikitable">style="width:800px;" |-| [o.k. ] Target directory [File'''orangepi-build/output/debs/u-boot''' ]|}</ol><ol start="4" style="list-style-type:pi3blower-alpha;"><li>The package name of the generated u-img351.pngboot deb package</li>{| class="wikitable" style="width:800px;" |576x324px-|1[ o.k. ]File name [ '''linux-u-boot-legacy-orangepi3b_1.0.0_arm64.deb''' ]|}</divol><ol start="5" style="list-style-type: decimallower-alpha;"><li>Reference documentsCompilation time</li>{| class="wikitable" style="width:800px;" |-| [ o.k. ] Runtime [ '''1 min''' ]|}</ol><ol start="6" style="list-style-type: lower-alpha;"><li>Repeat the command to compile u-boot, use the following command to start compiling u-boot directly without selecting through the graphical interface</li>{| class="wikitable" style="width:800px;" |-| [ o.k. ] Repeat Build Options [ '''http://docssudo .ros.org/en/humble/indexbuild.htmlsh BOARD=orangepi3b BRANCH=legacy BUILD_OPT=u-boot KERNEL_CONFIGURE=no''']|}[http:</ol></docs.ros.orgli></enol><ol start="5" style="list-style-type: decimal;"><li>View the u-boot deb package generated by compilation</galacticli>{| class="wikitable" style="width:800px;" |-| test@test:~/Tutorials.html orangepi-build$ '''http:ls output/debs/docs.ros.org/en/humble/Installationu-boot/Ubuntu-Install-Debians.html''']
linux-u-boot-legacy-orangepi3b_1.0.0_arm64.deb|}<span id/ol><ol start="6" style="howlist-style-totype: decimal;"><li><p>The files contained in the generated u-installboot deb package are as follows</p><ol style="list-kernelstyle-headertype: lower-filesalpha;"><li>Use the following command to decompress the deb package</spanli>{| class="wikitable" style= How to install kernel header files =="width:800px;" |-| test@test:~/orangepi-build$ '''cd output/debs/u-boot'''
# The Linux image released by OPi comes with the deb package of the kernel header file by default, and the storage location is test@test:~/orangepi_build/output/debs/u-boot$ $ '''/opt/dpkg -x'''\
orangepi@orangepi:~$ '''ls /opt/linux-headers*u-boot-legacy-orangepi3b_1.0.0_arm64.deb . (Note that there is a "." at the end of the command)'''
test@test:~/optorangepi_build/linux-headers-legacy-rockchipoutput/debs/u-rk356x_x.x.x_arm64.debboot$ '''ls'''
linux-u-boot-legacy-orangepi3b_1.0.0_arm64.deb '''usr'''|}</ol><ol start="2" style="list-style-type: decimallower-alpha;"><li>Use the following command to install the deb package of the kernel header The decompressed fileis as follows</li><{| class="wikitable" style="width:800px;" |-| test@test:~/orangepi-build/output/debs/ol>u-boot$ '''tree usr'''
'''The name of the kernel header file deb package needs to be replaced with the actual name, please do not copy it.'''usr
orangepi@orangepi:~$ '''sudo dpkg -i /opt/linux-headers-legacy-rockchip-rk356x_1.x.x_arm64.deb'''└── lib
<ol start="3" style="list:├── linux-u-boot-stylelegacy-type: decimal;"><li>After installation, you can see the folder where the kernel header files are located under '''/usr/src'''</li></ol>orangepi3b_1.0.0_arm64
orangepi@orangepi:~$ '''ls /usr/src'''│ ├── idbloader.img
linux-headers-5:│ ├── rkspi_loader.10.160-rockchip-rk356ximg
<ol start="4" style="list-style-type: decimal;"><li><p>Then you can write a hello kernel module to test the kernel header file</p><ol style="list-style-type: lower│ └── u-alpha;"><li>First write the code of the hello kernel module, as follows:</li></ol></li></ol>boot.itb
orangepi@orangepi:~$ '''vim hello.c'''└── u-boot
#include <linux/init.h>::├── LICENSE
#include <linux/module.h>::├── orangepi-3b-rk3566_defconfig
static int hello_init(void)::└── platform_install.sh
{
printk3 directories, 6 files|}</ol></li></ol><ol start="7" style="list-style-type: decimal;"><li>When the orangepi-bulid compilation system compiles the u-boot source code, it will first synchronize the u-boot source code with the u-boot source code of the github server, so if you want to modify the u-boot source code, you first need to turn off the download and update function of the source code '''("Hello Orange Pi This function needs to be fully compiled once u-boot, otherwise it will prompt that the source code of u-boot cannot be found. If the source code compressed package is downloaded from Google cloud disk, there is no such problem, because the source code of u- init\n"boot have been cached);''', otherwise the changes made will be reverted, the method is as follows:</li>
return 0Set the IGNORE_UPDATES variable in userpatches/config-default.conf to "yes"
}{| class="wikitable" style="width:800px;" |-| test@test:~/orangepi-build$ '''vim userpatches/config-default.conf'''
static void hello_exit(void)IGNORE_UPDATES="'''<span style="color:#FF0000">yes</span>'''"|}</ol><ol start="8" style="list-style-type: decimal;"><li><p>When debugging u-boot code, you can use the following method to update u-boot in the Linux image for testing</p><ol style="list-style-type: lower-alpha;"><li>Upload the compiled u-boot deb package to the Linux system of the development board</li>{| class="wikitable" style="width:800px;" |-| test@test:~/orangepi-build$ '''cd output/debs/u-boot'''
{test@test:~/orangepi_build/output/debs/u-boot$ '''scp \'''
printk("'''linux-u-boot-legacy-orangepi3b_1.0.0_arm64.deb root@192.168.1.xxx:/root'''|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li>Then log in to the development board and uninstall the deb package of u-boot installed</li>{| class="wikitable" style="width:800px;Hello Orange Pi " |-| root@orangepi:~# '''apt purge -y linux-u-boot-orangepi3b-legacy'''|}</ol><ol start="3" style="list-style-type: lower-alpha;"><li>Install the new u- exit\n"boot deb package just uploaded</li>{| class="wikitable" style="width:800px;)" |-| root@orangepi:~# '''dpkg -i''' '''linux-u-boot-legacy-orangepi3b_1.0.0_arm64.deb'''|}</ol><ol start="4" style="list-style-type: lower-alpha;"><li>Then run the nand-sata-install script</li>return{| class="wikitable" style="width:800px;" |-| root@orangepi:~# '''nand-sata-install'''|}</ol>module_init(hello_init)<ol start="5" style="list-style-type: lower-alpha;"><li>Then select '''5 Install/Update the bootloader on SD/eMM''' to update the u-boot in the TF card or '''7 Install/Update the bootloader on SPI Flash''' to update the u-boot in the SPI Flash</li>
module_exit(hello_exit)[[File:pi3b-img381.png]]</ol><ol start="6" style="list-style-type: lower-alpha;"><li>After pressing the Enter key, a Warning will pop up first</li>
MODULE_LICENSE("GPL")[[File:pi3b-img382.png]]</ol><ol start="7" style="list-style-type: lower-alpha;"><li>Press the Enter key again to start updating u-boot, and the following information will be displayed after the update is completed</li>
[[File:pi3b-img383.png]]
</ol>
<ol start="8" style="list-style-type: lower-alpha;">
<li>Then you can restart the development board to test whether the modification of u-boot takes effect</li>
</ol>
</li></ol>
<!-- -->
<ol start="9" style="list-style-type: decimal;">
<li><p>Other useful information</p>
<ol style="list-style-type: lower-alpha;">
<li>In the u-boot 2017.09 source code, the defconfig configuration file used by the development board is</li>
{| class="wikitable" style="width:800px;"
|-
|
[https://github.com/orangepi-xunlong/u-boot-orangepi/blob/v2017.09-rk3588/configs/orangepi_5_defconfig '''orangepi-build/u-boot/v2017.09-rk3588/configs/orangepi-3b-rk3566_defconfig''']
|}
</ol>
<ol start="2" style="list-style-type: lower-alpha;">
<li>Then write In the Makefile for compiling u-boot 2017.09 source code, the hello kernel module, as followsdts file used by the development board is</li>{| class="wikitable" style="width:800px;" |-| [https://github.com/orangepi-xunlong/u-boot-orangepi/blob/v2017.09-rk3588/arch/arm/dts/rk3588s-orangepi-5.dts '''orangepi-build/u-boot/v2017.09-rk3588/arch/arm/dts/rk3566-orangepi-3b.dts''']|}</ol></li></ol><span id="compile-the-linux-kernel"></span>
orangepi@orangepi:~$ '''vim Makefile'''== Compile the Linux kernel ==
ifneq ($(KERNELRELEASE)# Run the build.sh script,)remember to add sudo permission
obj::{| class="wikitable" style="width:800px;" |-m| test@test:=hello~/orangepi-build$ '''sudo ./build.osh'''|}
else<ol start="2" style="list-style-type: decimal;"><li>Select '''Kernel package''', then enter</li>
KDIR :<div class=/lib/modules/$(shell uname -r)/build"figure">
PWD [[File:=$(shell pwd)pi3b-img384.png]]
all</div></ol><ol start="3" style="list-style-type:decimal;"><li>Then select the model of the development board</li>
make -C $(KDIR) M<div class=$(PWD) modules"figure">
clean[[File:pi3b-img380.png]]
rm </div></ol><ol start="4" style="list-f *.ko *.o *.mod.o *.mod *.symvers *.cmd *style-type: decimal;"><li>Then it will prompt whether to display the kernel configuration interface.modIf you do not need to modify the kernel configuration, select the first one.c *If you need to modify the kernel configuration, select the second one.order</li>
endif[[File:pi3b-img385.png]]</ol><ol start="5" style="list-style-type: decimal;"><li>If you choose to display the kernel configuration menu (the second option) in step 4), the kernel configuration interface opened by '''make menuconfig''' will pop up. At this time, you can directly modify the kernel configuration, save and exit after modification. Yes, after exiting, the kernel source code will be compiled</li>
<ol start="3" style="list-style-type[[File: lowerpi3b-alpha;"><li>Then use the make command to compile the hello kernel moduleimg386. The output of the compilation process is as follows:</li></ol>png]]
'''<ol style="list-style-type: lower-alpha;"><li>If there is a problem with compiling the code you copied here, please go do not need to modify the official tool to download configuration options of the source code and upload it to kernel, when running the Linux system of the development board for testingbuild.sh script, pass in '''KERNEL_CONFIGURE=no''' to temporarily block the pop-up kernel configuration interface</li>{| class="wikitable" style="width:800px;" [[File:pi3b|-img352.png|337x52px]] orangepitest@orangepitest:~/orangepi-build$ '''make''' make -C /lib/modules/5.10sudo .160-rockchip-35xx/build M.sh KERNEL_CONFIGURE=/home/orangepi modules make[1]: Entering directory no''/usr/src/linux-headers-5.10.160-rockchip-rk35xx'|}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.160-rockchip-rk35xx'ol><ol start="42" style="list-style-type: lower-alpha;"><li>After compiling, <p>You can also set '''KERNEL_CONFIGURE=no''' in the '''helloorangepi-build/userpatches/config-default.koconf''' kernel module will be generatedconfiguration file, which can permanently disable this function</lip></olli> orangepi@orangepi:~$ <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 '''ls *.komake menuconfig''' hellointerface. Please maximize the terminal of the Ubuntu PC and run the build.kosh script again</p></li>
[[File:pi3b-img387.png]]
</ol>
</ol>
<ol start="6" style="list-style-type: decimal;">
<li><p>Part of the information prompted when compiling the kernel source code is as follows</p>
<ol style="list-style-type: lower-alpha;">
<li>The version of the Linux kernel source code</li>
{| class="wikitable" style="width:800px;"
|-
|
[ o.k. ] Compiling current kernel [ '''5.10.160''' ]
|}
</ol>
<ol start="2" style="list-style-type: lower-alpha;">
<li>The version of the cross-compilation toolchain used</li>
{| class="wikitable" style="width:800px;"
|-
|
[ o.k. ] Compiler version [ '''aarch64-none-linux-gnu-gcc 11.2.1''' ]
|}
</ol>
<ol start="3" style="list-style-type: lower-alpha;">
<li>The configuration file used by the kernel by default and the path where it is stored</li>
{| class="wikitable" style="width:800px;"
|-
|
[ o.k. ] Using kernel config file [ '''config/kernel/linux-rockchip-rk356x-legacy.config''' ]
|}
</ol>
<ol start="4" style="list-style-type: lower-alpha;">
<li>The path of the deb package related to the kernel generated by compiling</li>
{| class="wikitable" style="width:800px;"
|-
|
[ o.k. ] Target directory [ '''orangepi-build/output/debs/''' ]
|}
</ol>
<ol start="5" style="list-style-type: lower-alpha;">
<li>Use the '''insmod''' command to insert the '''hello.ko''' kernel module into The package name of the compiled kernelimage deb package</li></ol>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ [ o.k. ] File name [ '''sudo insmod hellolinux-image-legacy-rockchip-rk356x_1.0.0_arm64.kodeb''']|}</ol>
<ol start="6" style="list-style-type: lower-alpha;">
<li>Then use the The time used for compilation</li>{| class="wikitable" style="width:800px;" |-| [ o.k. ] Runtime [ '''demsg5 min''' ]|}</ol><ol start="7" style="list-style-type: lower-alpha;"><li>Finally, the compilation command to repeatedly compile the kernel selected last time will be displayed. Use the following command to view start compiling the output of kernel source code directly without selecting through the graphical interface</li>{| class="wikitable" style="width:800px;" |-| [ o.k. ] Repeat Build Options [ '''hellosudo ./build.kosh BOARD=orangepi3b BRANCH=legacy BUILD_OPT=kernel KERNEL_CONFIGURE=no''' ]|}</ol></li></ol><ol start="7" style="list-style-type: decimal;"><li><p>View the deb package related to the kernel modulegenerated by compilation</p><ol style="list-style-type: lower-alpha;"><li><p>'''linux-dtb-legacy-rockchip-rk356x_1.0. If you can see the output below, it means that 0_arm64.deb''' Contains dtb files used by the kernel</p></li><li><p>'''hellolinux-headers-legacy-rockchip-rk356x_1.0.0_arm64.kodeb''' Include kernel module is loaded correctlyheader files</p></li><li><p>'''linux-image-legacy-rockchip-rk356x_1.0.0_arm64.deb''' Contains kernel images and kernel modules</lip></olli>{| class="wikitable" style="width:800px;" |-| test@test:~/orangepi-build$ '''ls output/debs/linux-*'''
orangepi@orangepi:~$ '''dmesg | grep "Hello"'''output/debs/linux-dtb-legacy-rockchip-rk356x_1.0.0_arm64.deb output/debs/linux-image-legacy-rockchip-rk356x_1.0.0_arm64.deb
[ 2871output/debs/linux-headers-legacy-rockchip-rk356x_1.0.0_arm64.893988] deb|}</ol></li></ol><ol start="8" style="list-style-type: decimal;"><li><p>The files contained in the generated Linux-image deb package are as follows</p><ol style="list-style-type: lower-alpha;"><li>Use the following command to decompress the deb package</li>{| class="wikitable" style="width:800px;" |-| test@test:~/orangepi-build$ '''Hello Orange Pi -- initcd output/debs'''
<ol start="7" style="list-style-typetest@test: lower-alpha;"><li>Use the '~/orangepi_build/output/debs$ ''rmmod'mkdir test'' command to uninstall the '''hello.ko''' kernel module</li></ol>
orangepitest@orangepitest:~/orangepi_build/output/debs$ '''sudo rmmod hellocp \'''
orangepi@orangepi:~$ '''dmesg | grep "Hello"linux-image-legacy-rockchip-rk356x_1.0.0_arm64.deb test/'''
[ 2871.893988] Hello Orange Pi -- inittest@test:~/orangepi_build/output/debs$ '''cd test'''
[ 3173.800892] test@test:~/orangepi_build/output/debs/test$ '''Hello Orange Pi dpkg -- exitx \'''
<span id="use'''linux-ofimage-thelegacy-raspberryrockchip-pis-5-inch-screen"></span>== Use of the Raspberry PIrk356x_1.0.0_arm64.deb .'''s 5-inch screen ==
<span id="assembly-method-of-raspberry-pi-5-inch-screen"><test@test:~/span>=== Assembly method of Raspberry PI 5-inch screen ===orangepi_build/output/debs/test$ '''ls'''
<ol style="list'''boot etc lib''' linux-styleimage-type: decimal;"><li><p>First prepare the required accessories</p><ol style="listlegacy-stylerockchip-type: lower-alpha;">rk356x_1.0.0_arm64.deb '''usr'''<li>Raspberry PI 5-inch MIPI LCD display + touch screen</li></ol>|}</li></ol> <blockquote>[[File:pi3b-img353.png|306x219px]]</blockquote>
<ol start="2" style="list-style-type: lower-alpha;">
<li>15pin MIPI cableThe decompressed file is as follows</li><{| class="wikitable" style="width:800px;" |-| test@test:~/orangepi-build/output/debs/ol>test$ '''tree -L 2'''
<blockquote>[[File:pi3b-img354.png|276x111px]]</blockquote><ol start="2" style="list-style-type: decimal;"><li>Then connect the 15pin MIPI cable to the Raspberry PI 5-inch screen in the way shown below (note the orientation of the insulation surface)</li></ol>
[[File:pi3b-img355.png|294x160px]]├── boot
<ol start="3" style="list│ ├── config-style5.10.160-type: decimal;"><li>Finally connect to the LCD interface of the Orange Pi 3B development board</li></ol>rockchip-rk356x
[[File:pi3b│ ├── System.map-img3565.10.png|333x199px]]160-rockchip-rk356x
<span id="open-the-raspberry-pi│ └── vmlinuz-5.10.160-inch-screen-configuration-method"></span>=== Open the Raspberry PI 5rockchip-inch screen configuration method ===rk356x
<ol style="list-style-type: decimal;"><li><p>The Linux image does not open the 5-inch screen of the Raspberry PI by default. If you need to use the 5-inch screen of the Raspberry PI, you need to open it manually.</p></li><li><p>The steps to open the mipi lcd configuration are as follows:</p><ol style="list-style-type: lower-alpha;"><li>First run '''orangepi-config''', ordinary users remember to add '''sudo''' permission</li></ol></li></ol>├── etc
orangepi@orangepi:~$ '''sudo orangepi-config'''│ └── kernel
<ol start="2" style="list-style-type: lower-alpha;"><li>Then select '''System'''</li></ol>├── lib
[[File:pi3b-img357.png|575x272px]]│ └── modules
<ol start="3" style="list├── linux-styleimage-type: lowerlegacy-alpha;"><li>Then select '''Hardware'''</li></ol>rockchip-rk356x_1.0.0_arm64.deb
[[File:pi3b-img358.png|576x266px]]└── usr
<ol start="4" style="list-style-type: lower-alpha;"><li>Then use the arrow keys on the keyboard to locate the Rasp-7inch-touchscreen, and then use the space button to check</li></ol>├── lib
[[File:pi3b-img359.png└── share|408x310px]]}</ol></li></ol><ol start="59" style="list-style-type: lower-alphadecimal;"><li>Then select 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 '''<Save>(you need to compile it once This function can only be turned off after the Linux kernel source code, otherwise it will prompt that the source code of the Linux kernel cannot be found. If the source code compressed package downloaded from Google cloud disk, there is no such problem, because the source code of Linux has been cached)''' to save, otherwise the The changes made will be reverted as follows:</li></ol>
[[File:pi3bSet the IGNORE_UPDATES variable in '''userpatches/config-img360default.png|404x133px]]conf''' to "yes"
<ol start{| class="6wikitable" style="list-style-typewidth: lower-alpha800px;"><li>Then select |-| test@test:~/orangepi-build$ '''<Back>vim userpatches/config-default.conf'''</li></ol>
[[File:pi3b-img361.png|397x151px]] IGNORE_UPDATES="'''<ol start="7" span style="list-style-typecolor: lower-alpha;#FF0000">yes<li/span>Then select '''<quot;Reboot>''' to restart the system for the configuration to take effect</li>|}</ol> [[File:pi3b-img362.png|331x154px]] '''The above settings will eventually add the configuration of overlays=raspi-7inch-touchscreen to /boot/orangepiEnv.txt. After setting, you can check it first. If this configuration does not exist, then there is a problem with the settings.''' '''If you find it troublesome to use orangepi-config, you can also use the vim editor to open /boot/orangepiEnv.txt, and then add the configuration of overlays=raspi-7inch-touchscreen is also possible.''' orangepi@orangepi:~$ '''cat /boot/orangepiEnv.txt | grep "raspi"''' '''overlays=raspi-7inch-touchscreen #Sample configuration''' <ol start="310" style="list-style-type: decimal;"><li>After startup, you can see the lcd screen display as follows:</lip></ol> [[File:pi3b-img363.png|381x262px]] <span id="If the kernel has been modified, the-following method-of-server-version-image-rotation-display-direction"></span>=== The method of server version image rotation display direction === # Add '''extraargs=fbcon=rotate:the direction can be used to rotate''' in '''/boot/orangepiEnv.txt''' This line configuration can set update the direction displayed by the server version kernel and kernel modules of the development board Linux system, where the number after '''fbcon=rotate:''' can be set as: <!-- --/p>
<ol style="list-style-type: lower-alpha;">
<li><p>0: normal screen (default is landscape)</p>Upload the deb package of the compiled Linux kernel to the Linux system of the development board</li><li><p>1{| class="wikitable" style="width: Turn clockwise 90 degrees</p></li>800px;" |-<li><p>2: Flip 180 degrees</p></li>| <li><p>3test@test: Turn clockwise 270 degrees<~/p><orangepi-build$ '''cd output/li></ol>debs'''
orangepitest@orangepitest:~/orangepi-build/output/debs$ '''sudo vim /boot/orangepiEnv.txtscp \'''
overlays'''linux-image-legacy-rockchip-rk356x_1.0.0_arm64.deb root@192.168.1.xxx:/root'''|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li>Then log in to the development board and uninstall the deb package of the installed Linux kernel</li>{| class="wikitable" style="width:800px;" |-| root@orangepi:~# '''apt purge -y linux-image-legacy-rockchip-rk356x'''|}</ol><ol start="3" style="list-style-type: lower-alpha;"><li>Install the deb package of the new Linux kernel just uploaded</li>{| class="wikitable" style=lcd1"width:800px;" |-| root@orangepi:~# '''dpkg -i linux-image-legacy-rockchip-rk356x_1.0.0_arm64.deb'''extraargs|}</ol><ol start=cma"4" style="list-style-type: lower-alpha;"><li>Then restart the development board, and then check whether the kernel-related modifications have taken effect</li>{| class=64M fbcon"wikitable" style=rotate"width:3800px;" |-| root@orangepi:~# '''reboot'''|}</ol></li></ol><ol start="11" style="list-style-type: decimal;"><li><p>Other useful information</p><ol style="list-style-type: lower-alpha;"><li>The storage location of the kernel configuration file is as follows, please do not go to the kernel source code to find the kernel configuration file used by the development board</li>{| class="wikitable" style="width:800px;" |-| [https://github.com/orangepi-xunlong/orangepi-build/blob/next/external/config/kernel/linux-rockchip-rk3588-legacy.config '''orangepi-build/external/config/kernel/linux-rockchip-rk356x-legacy.config''']|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li>The location of the dts file used by the development board is</li>{| class="wikitable" style="width:800px;" |-| [https://github.com/orangepi-xunlong/linux-orangepi/blob/orange-pi-5.10-rk3588/arch/arm64/boot/dts/rockchip/rk3588s-orangepi-5.dts '''orangepi-build/kernel/orange-pi-5.10-rk35xx/arch/arm64/boot/dts/rockchip/rk3566-orangepi-3b.dts''']|}</ol></li></ol><span id="compile-rootfs"></span>
'''Note that if there is the line extraargs=cma=64M in /boot/orangepiEnvCompile rootfs == # Run the build.txt by defaultsh script, the configuration fbcon=rotateremember to add sudo permission ::3 can be added after extraargs{| class=cma"wikitable" style=64M (separated by spaces)"width:800px;" |-| test@test:~/orangepi-build$ '''sudo ./build.sh'''|}
<ol start="2" style="list-style-type: decimal;">
<li>Then Select '''restartRootfs and all deb packages''' the Linux system and you can see that the direction displayed on the LCD screen has been rotated, then enter</li></ol>
<span iddiv class="method-of-rotating-display-and-touch-direction-of-desktop-version-imagefigure"></span>=== Method of rotating display and touch direction of desktop version image ===
# First open '''Display''' Settings in Linux[[File:pi3b-img388.png]]
[[File</div></ol><ol start="3" style="list-style-type:pi3b-img364.png|298x206px]]decimal;"><li>Then select the model of the development board</li>
<ol startdiv class="2figure" style="list-style-type: decimal;"><li><p>Then select the direction you want to rotate in '''Rotation'''</p><ol style="list-style-type: lower-alpha;"><li><p>'''None''': no rotation</p></li><li><p>'''Left''': rotate left 90 degrees</p></li><li><p>'''Inverted''': Flip up and down, which is equivalent to rotating 180 degrees</p></li><li><p>'''Right''': rotate right 90 degrees</p></li></ol></li></ol>
[[File:pi3b-img365img380.png|286x180px]] <ol start="3" style="list-style-type: decimal;"><li>Then click '''Apply'''</li></ol> [[File:pi3b-img366.png|330x207px]]
</div></ol>
<ol start="4" style="list-style-type: decimal;">
<li>Then select '''Keep this configuration'''the type of rootfs</li></ol> [[File:pi3b-img367.png|374x210px]]
[[File:pi3b-img389.png]]
</ol>
<ol start="5" style="list-style-type: decimal;">
<li><p>At this point, the screen display has been rotated, and then close the '''Display''' program</p></li><li><p>The above steps will only Then select the display direction, and will not rotate the direction of the touch. Use the '''set_lcd_rotate.sh''' script to rotate the direction type of the touch. After the script is set, it will automatically restart, and then you can test whether the touch has been used normally.image</p>
<ol style="list-style-type: lower-alpha;">
<li><p>'''NoneImage with console interface (server)''': no rotationIndicates the image of the server version, which is relatively small</lip></olli><li><p>'''Image with desktop environment''' Indicates a image with a desktop, which is relatively large</lip></olli>
orangepi@orangepi:~$ '''set_lcd_rotate.sh none'''<div class="figure">
<ol start="2" style="list-style-type[[File: lowerpi3b-alpha;"><li>'''Left''': rotate left 90 degrees</li></ol>img390.png]]
orangepi@orangepi</div></ol></li></ol><ol start="6" style="list-style-type:~$ decimal;"><li>If you are compiling the image of the server version, you can also choose to compile the Standard version or the Minimal version. The pre-installed software of the Minimal version will be much less than that of the Standard version '''set_lcd_rotate(please do not choose the Minimal version if there is no special requirement, because many things are not pre-installed by default.sh leftSome functions may not be available)'''</li>
<ol startdiv class="3figure" style="list-style-type: lower-alpha;"><li>'''Inverted''': Flip up and down, which is equivalent to rotating 180 degrees</li></ol>
orangepi@orangepi[[File:~$ '''set_lcd_rotate.sh inverted''' <ol start="4" style="listpi3b-style-type: lower-alpha;"><li>'''Right''': rotate right 90 degrees</li></ol> orangepi@orangepi:~$ '''set_lcd_rotate.sh right''' '''The set_lcd_rotate.sh script mainly does four things:''' '''1. Rotate the direction displayed by the framebuffer''' '''2. Rotate the direction of the touch''' '''3. Turn off the boot logo''' '''4. Restart the system''' '''Rotating the touch direction is achieved by adding the line Option "TransformationMatrix" "x x x x x x x x x" to /usr/share/X11/xorg.conf.d/40-libinput.conf Where "x x x x x x x x x" is configured differently for different directionsimg391.'''png]]
</div></ol>
<ol start="7" style="list-style-type: decimal;">
<li>Touch rotation referenceIf you are compiling the image of the desktop version, you also need to select the type of desktop environment. Currently, Ubuntu Jammy mainly maintains XFCE and Gnome desktops, Ubuntu Focal only maintains XFCE desktops, and Debian Bullseye mainly maintains XFCE and KDE desktops</li></ol>
https://wiki.ubuntu.com/X/InputCoordinateTransformation<div class="figure">
<span id="instructions[[File:pi3b-for-using-the-switch-logo"></span>== Instructions for using the switch logo ==img392.png]]
# By default, the switch logo will only be displayed in the desktop version of the system</div># Set the '''bootlogo''' variable to '''false''' in '''/boot/orangepiEnv[[File:pi3b-img393.txt''' to turn off the switch logopng]]
orangepi@orangepi:~$ '''vim /boot/orangepiEnvYou can then select additional packages that need to be installed. Please press the Enter key to skip directly here.txt'''
verbosity[[File:pi3b-img394.png]]</ol><ol start="8" style="list-style-type: decimal;"><li><p>Then it will start to compile rootfs, and some of the information prompted during compilation are as follows</p><ol style="list-style-type: lower-alpha;"><li>The type of rootfs</li>{| class="wikitable" style="width:800px;" |-| [ o.k. ] local not found [ Creating new rootfs cache for '''jammy''']|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li>The storage path of the compiled rootfs compressed package</li>{| class="wikitable" style="width:800px;" |-| [ o.k. ] Target directory [ '''external/cache/rootfs''' ]|}</ol><ol start="3" style="list-style-type: lower-alpha;"><li>The name of the rootfs compressed package generated by compilation</li>{| class="wikitable" style="width:800px;" |-| [ o.k. ] File name [ '''jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4''' ]|}</ol><ol start="4" style="list-style-type: lower-alpha;"><li>The time used for compilation</li>{| class="wikitable" style="width:800px;" |-| [ o.k. ] Runtime [ '''13 min''' ]|}</ol></li></ol><ol start="9" style="list-style-type: decimal;"><li><p>View the rootfs compressed package generated by compilation</p><ol style="list-style-type: lower-alpha;"><li><p>'''jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4''' is the rootfs compressed package, the meaning of each field of the name is</p><ol style=1"list-style-type: none;"><li><p>a) '''jammy''' indicates the type of Linux distribution of rootfs</p></li><li><p>b) '''xfce''' means rootfs is the type of desktop version, if it is '''cli''', it means the type of server version</p></li><li><p>c) '''arm64''' represents the architecture type of rootfs</p></li><li><p>d) '''f930ff6ebbac1a72108a2e100762b18f''' is the MD5 hash value generated by the package names of all software packages installed by rootfs. As long as the list of software packages installed by rootfs is not modified, this value will not change. The compilation script will use this MD5 hash value to generate Determine whether rootfs needs to be recompiled</p></li></ol></li><li><p>'''jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4.list''bootlogo' lists the package names of all packages installed by rootfs</p></li>{| class="wikitable" style=false"width:800px;" |-| test@test:~/orangepi-build$ '''ls external/cache/rootfs/'''
<ol start="3" style="list-style-type: decimal;"><li>Set the '''bootlogo''' variable to '''true''' in '''/boot/orangepiEnvjammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.txtlz4''' to enable the switch logo</li></ol>
orangepi@orangepi:~$ '''vim /boot/orangepiEnvjammy-xfce-arm64.txt'''f930ff6ebbac1a72108a2e100762b18f.tar.lz4.current
verbosityjammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4.list|}</ol></li></ol><ol start=1"10" style="list-style-type: decimal;"><li>If the required rootfs already exists under '''external/cache/rootfs''', then compiling rootfs again will directly skip the compilation process and will not restart the compilation. When compiling the image, it will also go to '''external/cache/rootfs''' to find out whether it has If there is rootfs available in the cache, use it directly, which can save a lot of download and compilation time.</li></ol>
'''bootlogo<span id=true'''"compile-linux-image"></span>
<ol start="4" style="list-style-type: decimal;"><li>The location of the boot logo Compile Linux image in the Linux system is</li></ol>==
'''/usr/share/plymouth/themes/orangepi/watermark# Run the build.png'''sh script, remember to add sudo permission
<ol start::{| class="5wikitable" style="list-style-typewidth: decimal800px;"><li>After replacing the boot logo picture, you need to run the following command to take effect<|-| test@test:~/li><orangepi-build$ '''sudo ./ol>build.sh'''|}
orangepi@orangepi<ol start="2" style="list-style-type:~$ decimal;"><li>Select '''sudo update-initramfs -uFull OS image for flashing''', then enter</li>
<span iddiv class="how-to-use-the-zfs-file-systemfigure"></span>== How to use the ZFS file system ==
'''The latest version of Ubuntu20.04, Ubuntu22.04, Debian11 and Debian12 desktop version systems have pre[[File:pi3b-installed zfs, you can use it directlyimg395.'''png]]
'''The pre</div></ol><ol start="3" style="list-installed zfs version in Ubuntu20.04 and Ubuntu22.04 desktop systems is 2.1.6.'''style-type: decimal;"><li>Then select the model of the development board</li>
'''The pre-installed zfs version in Debian11 and Debian12 desktop systems is 2.1.11.'''<div class="figure">
'''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[[File:pi3b-installed zfsimg380.'''png]]
orangepi@orangepi</div></ol><ol start="4" style="list-style-type:~$ '''lsmod | grep "decimal;zfs"'''"><li>Then select the type of rootfs</li>
zfs 2801664 0[[File:pi3b-img389.png]]</ol><ol start="5" style="list-style-type: decimal;"><li><p>Then select the type of image</p><ol style="list-style-type: lower-alpha;"><li><p>'''Image with console interface (server)''' Indicates the image of the server version, which is relatively small</p></li><li><p>'''Image with desktop environment''' Indicates a image with a desktop, which is relatively large</p></li>
zunicode 327680 1 zfs<div class="figure">
zzstd 471040 1 zfs[[File:pi3b-img390.png]]
zlua 139264 1 zfs</div></ol></li></ol><ol start="6" style="list-style-type: decimal;"><li>If you are compiling the image of the server version, you can also choose to compile the Standard version or the Minimal version. The pre-installed software of the Minimal version will be much less than that of the Standard version '''(please do not choose the Minimal version if there is no special requirement, because many things are not pre-installed by default. Some functions may not be available)'''</li>
zcommon 69632 1 zfs<div class="figure">
znvpair 61440 2 zfs,zcommon[[File:pi3b-img391.png]]
zavl 16384 1 zfs</div></ol><ol start="7" style="list-style-type: decimal;"><li>If you are compiling the image of the desktop version, you also need to select the type of desktop environment. Currently, Ubuntu Jammy mainly maintains XFCE and Gnome desktops, Ubuntu Focal only maintains XFCE desktops, and Debian Bullseye mainly maintains XFCE and KDE desktops</li>
icp 221184 1 zfs<div class="figure">
spl 77824 6 zfs,icp,zzstd,znvpair,zcommon,zavl[[File:pi3b-img392.png]]
<span id="how-to-install-zfs"></spandiv>=== How to install ZFS ===[[File:pi3b-img393.png]]
'''Before installing zfs, please make sure You can then select additional packages that the Linux image used is the latest versionneed to be installed. In addition, if zfs is already installed in Please press the system, it needs Enter key to be installed againskip directly here.'''
Before installing zfs, you need [[File:pi3b-img394.png]]</ol><ol start="8" style="list-style-type: decimal;"><li><p>Then it will start to install compile the kernel header file firstLinux image. For The general process of compilation is as follows</p><ol style="list-style-type: lower-alpha;"><li><p>Initialize the method compilation environment of installing Ubuntu PC and install the software packages required for the compilation process</p></li><li><p>Download the source code of u-boot and Linux kernel header file(if cached, please refer to only update the code)</p></li><li><p>Compile u-boot source code and generate u-boot deb package</p></li><li><p>Compile the instructions in Linux source code and generate Linux-related deb packages</p></li><li><p>Make the [[\l|'''section on deb package of Linux firmware</p></li><li><p>Make the method deb package of installing the kernel header file''']].orangepi-config tool</p></li><li><p>Create a deb package supported by the board</p></li>In Ubuntu20.04<li><p>If you are compiling the desktop image, Ubuntu22.04 and Debian11 systemsyou will also create desktop-related deb packages</p></li><li><p>Check whether the rootfs has been cached, zfs cannot be installed directly through aptif not, because recreate the default apt source zfs version is lower than 2.1.6rootfs, if it has been cached, directly decompress and use</p></li><li><p>Install the previously generated deb package into rootfs</p></li><li><p>Make some specific settings for different development boards and there is a problem different types of incompatibility with rk Linux5images, such as pre-installing additional software packages, modifying system configuration, etc.10 kernel. This problem is fixed in zfs version 2.1.6 </p></li><li><p>Then make an image file and later. To solve this problemformat the partition, we provide a zfs deb package that can be installed normally, which can be downloaded from the [http:default type is ext4</p></www.orangepi.orgli><li><p>Then copy the configured rootfs to the mirrored partition</htmlp></hardWareli><li><p>Then update initramfs</computerAndMicrocontrollersp></serviceli><li><p>Finally, write the bin file of u-and-supportboot into the image through the dd command</p></li></ol></Orange-Pi-3B.html '''official tool'''] of li><li><p>After compiling the development board. Open image, the '''following information will be prompted</p><span classol style="marklist-style-type: lower-alpha;">official tool</spanli>''', and enter The storage path of the '''compiled image<span /li>{| class="markwikitable">zfsstyle="width:800px;" |-related deb package folders used by Ubuntu and Debian systems</span>| [ o.k. ] Done building [ '''output/images/Orangepi3b_1.0.0_debian_bullseye_desktop_xfce_linux5.10.160/Orangepi3b_1. You can see three types of deb packages: Ubuntu200.04, Ubuntu220_debian_bullseye_desktop_xfce_linux5.04 and Debian1110. Please download the required version160.img''' ]|}[[File</ol><ol start="2" style="list-style-type:pi3blower-img368.pngalpha;"><li>Compilation time</li>{| class="wikitable" style="width:800px;" |230x93px]]-| 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 '''[o.k. ] Runtime [\l|the description in the section of the method of uploading files to the Linux system of the development board19 min ]].'''|}After the upload is complete, use the '''cd''' command in </ol><ol start="3" style="list-style-type: lower-alpha;"><li>Repeat the command line of the development board Linux system to enter compile the directory of the deb packageimage, and then use the following command to install start compiling the image directly without selecting through the deb package of zfs.graphical interface</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ [ o.k. ] Repeat Build Options [ '''sudo apt install ./*build.debsh BOARD=orangepi3b BRANCH=legacy BUILD_OPT=image RELEASE=bullseye BUILD_MINIMAL=no BUILD_DESKTOP=no KERNEL_CONFIGURE=yes''']|}</ol></li></ol><span id="android-11-operating-system-instructions"></span>
After the installation is complete, use the following command to see the zfs-related kernel modules:= '''Android 11 operating system instructions''' =
orangepi@orangepi:~$ '''ls /lib/modules/5.10.160<span id="supported-rockchipandroid-rk356x/updates/dkmsversions"></'''span>== Supported Android versions ==
{| class="wikitable" style="width:800px;text-align: center;"|-|'''icp.ko spl.ko zavl.ko zcommon.ko zfs.ko zlua.ko znvpair.ko zunicode.ko zzstdAndroid version'''|'''Kernel version'''|-|'''Android 11'''|'''Linux4.ko19'''|}
Then restart the Linux system to see that the zfs kernel module will be automatically loaded:<span id="android-function-adaptation"></span>
orangepi@orangepi:~$ '''lsmod | grep "zfs"'''== Android Function Adaptation ==
zfs 2801664 0{| class="wikitable" style="width:800px;text-align: center;"|-zunicode 327680 1 zfs|'''Functions'''|'''Android 11'''|-zzstd 471040 1 zfs|'''USB2.0x3'''|'''OK'''zlua 139264 1 zfs|-|'''USB3.0x1'''zcommon 69632 1 zfs|'''OK'''|-znvpair 61440 |'''M.2 zfs,zcommonNVMe SSD boot'''|'''OK'''zavl 16384 1 zfs|-|'''WIFI'''icp 221184 1 zfs|'''OK'''|-spl 77824 6 zfs,icp,zzstd,znvpair,zcommon,zavl|'''Bluetooth'''|'''OK'''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.|-|'''GPIO(40pin)'''orangepi@orangepi:~$ |'''OK'''sudo apt install |-y zfsutils|'''UART(40pin)'''|'''OK'''|-linux zfs|'''SPI(40pin)'''|'''OK'''|-dkms|'''I2C(40pin)'''|'''OK'''<span id="methods|-of|'''PWM(40pin)'''|'''OK'''|-creating|'''PWM fan interface'''|'''OK'''|-zfs|'''3pin Debugging serial port'''|'''OK'''|-pools"></span>=== Methods of creating ZFS pools ===|'''EMMC'''|'''OK'''|-|'''TF card boot'''|'''ZFS is based on storage pools, we can add multiple physical storage devices to the pool, and then allocate storage space from this pool.OK'''|-|'''HDMI video'''|'''The following content is demonstrated based on the development board connected to an NVMe SSD and a USB flash drive.OK'''|-# First, we can use the |'''lsblkHDMI Audio''' 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:|'''OK'''[[File:pi3b|-img369.png|379x227px]]'''LCD'''|'''OK'''<ol start="2" style="list|-style|'''eDP display'''|'''OK'''|-type: decimal;"><li>Then enter the following command to create a ZFS pool, including two storage devices, NVMe SSD and U disk</li></ol>|'''Gigabit network port'''|'''OK'''|-orangepi@orangepi:~$ |'''sudo zpool create -f pool1 /dev/nvme0n1 /dev/sdaNetwork port status indicator'''|'''OK'''<ol start="3" style="list-style|-type: decimal;"><li>Then use the |'''zpool listHeadphone playback''' command to see that the system has created a ZFS pool named |'''pool1OK''', and the size of the ZFS pool pool1 is the size of the NVME SSD plus the size of the U disk</li></ol>|-[[File:pi3b-img370.png|576x37px]]'''Headphone recording'''|'''OK'''<ol start="4" style="list|-style-type: decimal;"><li>Then execute |'''LED Light'''|'''df -hOK''' to see that |-|'''pool1GPU''' is mounted to the |'''/pool1OK''' directory</li></ol>|-orangepi@orangepi:~$ |'''df -hNPU'''|'''OK'''Filesystem Size Used Avail Use% Mounted on|-|'''VPU'''tmpfs 1.6G 18M 1.6G 2% /run|'''OK'''|-/dev/mmcblk0p2 29G 6.0G 22G 22% /|'''RTC'''|'''OK'''tmpfs 7.7G 46M 7.7G 1% /dev/shm|}
tmpfs 5.0M 4.0K 5.0M 1% <span id="wifi-connection-test-method"></run/lockspan>
tmpfs 7.7G 944K 7.7G 1% /tmp== WIFI connection test method ==
/dev/mmcblk0p1 1022M 115M 908M 12% /boot# First click enter '''Setting'''
/dev/zram1 188M 4::[[File:pi3b-img396.5M 169M 3% /var/logpng]]
tmpfs 1.6G 80K 1.6G 1% <ol start="2" style="list-style-type: decimal;"><li>Then select '''Network & internet'''</run/user/1000li>
[[File:pi3b-img397.png]]</ol><ol start="3" style="list-style-type: decimal;"><li>Then select '''Wi-Fi'''pool1 489G 9</li> [[File:pi3b-img398.3M 489G 1% png]]</pool1ol><ol start="4" style="list-style-type: decimal;"><li>Then turn on the '''Wi-Fi''' switch</li>
[[File:pi3b-img399.png]]
</ol>
<ol start="5" style="list-style-type: decimal;">
<li>Use the following command to see that the file system type of pool1 is zfs</li></ol> orangepi@orangepi:~$ '''mount | grep pool1''' pool1 After turning on /pool1 type '''zfsWi-Fi''' (rw,xattrif everything is normal,noacl)you can scan for nearby Wi-Fi hotspots</li>
[[File:pi3b-img400.png]]
</ol>
<ol start="6" style="list-style-type: decimal;">
<li>Then we can test copying a file select the Wi-Fi you want to connect to, and the ZFS poolpassword input interface shown in the figure below will pop up</li></ol>
orangepi@orangepi[[File:~$ '''sudo cp pi3b-v /usr/local/testimg401.mp4 png]]</pool1ol><ol start="7" style="list-style-type: decimal;"><li>Then use the keyboard to enter the password corresponding to Wi-Fi, and then use the mouse to click the Enter button in the virtual keyboard to start connecting to Wi-Fi</'''li>
'[[File:pi3b-img402.png]]</usr/local/test.mp4' ol><ol start="8" style="list-style->type: decimal; '/pool1"><li>After the Wi-Fi connection is successful, the display is as shown in the figure below:</test.mp4'li>
[[File:pi3b-img403.png]]</ol><span id="test-thehow-datato-deduplicationuse-functionwi-offi-zfshotspot"></span>=== Test the data deduplication function of ZFS ===
# The data deduplication function of ZFS is disabled by default, we need == How to execute the following command to enable ituse Wi-Fi hotspot ==
orangepi@orangepi:~$ # First, please make sure that the Ethernet port is connected to the network cable and can access the Internet normally# Then select '''sudo zfs set dedup=on pool1Settings'''
<ol start="2" style="list::[[File:pi3b-style-type: decimal;"><li>Then do a simple test, first enter pool1, and then execute the following command to generate a random file with a size of 1G</li></ol>img396.png]]
orangepi@orangepi<ol start="3" style="list-style-type:~$ decimal;"><li>Then select '''cd /pool1/Network & internet'''</li>
root@orangepi[[File:pi3b-img397.png]]</pool1$ ol><ol start="4" style="list-style-type: decimal;"><li>Then select '''sudo dd if=/dev/urandom of=test.1g bs=1M count=1024Hotspot & tethering'''</li>
1024+0 records in[[File:pi3b-img404.png]]</ol><ol start="5" style="list-style-type: decimal;"><li>Then select '''Wi-Fi hotspot'''</li>
1024+0 records out[[File:pi3b-img405.png]]</ol><ol start="6" style="list-style-type: decimal;"><li>Then turn on the '''Wi-Fi hotspot''', you can also see the name and password of the generated hotspot in the figure below, remember them, and use them when connecting to the hotspot (<span style="color:blue">if you need to modify the name and password of the hotspot, you need to turn off the Wi-Fi first -Fi hotspot before modification</span>)</li>
1073741824 bytes (1[[File:pi3b-img406.1 GBpng]]</ol><ol start="7" style="list-style-type: decimal;"><li>At this time, 1you can take out your mobile phone.0 GiBIf everything is normal, you can find the WIFI hotspot with the same name ('''here AndroidAP_6953''') copied, 5displayed under the '''Hotspot name''' in the above picture in the WI-FI list searched by the mobile phone.04367 sThen you can click '''AndroidAP_6953''' to connect to the hotspot, 213 MBand the password can be seen under the '''Hotspot password''' in the above picture</sli>
[[File:pi3b-img407.png]]</ol><ol start="38" style="list-style-type: decimal;"><li>Then use 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 following command display of your mobile phone). At this point, you can open a webpage on your mobile phone to copy 1000 random files see if you can access the Internet. If you can open the webpage normally, it means that the '''WI-FI Hotspot''' of size 1Gthe development board can be used normally.</li></ol>
root@orangepi[[File:pi3b-img408.png]]</pool1$ '''for ((iol><span id=0; i<1000; i++)); do sudo cp "bluetooth-test.1g $i.test.1g; done'''-method"></span>
<ol start="4" style="list-style-type: decimal;"><li>Then use '''du -lh''' to see that there are currently 1002G of data in the pool, but in fact the size of the ZFS pool is only '''504GB''' (the total capacity of SSD+U disk), which cannot hold such a large amount of data</li></ol>Bluetooth test method ==
root@orangepi:/pool1$ # First click enter '''du -lhSetting'''
1002G::[[File:pi3b-img396.png]]
<ol start="52" style="list-style-type: decimal;"><li>Then use the select '''zpool listConnected devices''' command to see that only 1.01G is actually occupied, because these 1001 files are all duplicates, indicating that the data deduplication function is effective.</li></ol>
[[File:pi3b-img371img409.png|576x36px]]</ol><ol start="3" style="list-style-type: decimal;"><li>Then click '''Pair new device''' to turn on Bluetooth and start scanning the surrounding Bluetooth devices</li>
[[File:pi3b-img410.png]]</ol><span idol start="4" style="test-thelist-datastyle-compression-function-of-zfstype: decimal;"><li>The searched Bluetooth devices will be displayed under '''Available devices'''</spanli>=== Test the data compression function of ZFS ===
# Because [[File:pi3b-img411.png]]</ol><ol start="5" style="list-style-type: decimal;"><li>Then click the stored data is different, Bluetooth device you want to connect to start pairing. When the disk space saved by compression will also be differentfollowing interface pops up, so we choose to compress relatively large plain text files for compression testing, and execute please use the following commands mouse to pack select the '''/var/log/''' and Pair'''option</etc/''' directories into a tarballli>
orangepi@orangepi[[File:~$ '''cd pi3b-img412.png]]</pool1ol><ol start="6" style="list-style-type: decimal;"><li>The test here is the configuration process of the development board and the Bluetooth of the Android mobile phone. At this time, the following confirmation interface will pop up on the mobile phone. After clicking the pairing button on the mobile phone, the pairing process will start</'''li>
root@orangepi[[File:/pool1$ '''sudo tar pi3b-cf textimg413.tar png]]</var/log/ /etcol><ol start="7" style="list-style-type: decimal;"><li>After the pairing is completed, you can see the paired Bluetooth device as shown in the figure below</'''li>
[[File:pi3b-img414.png]]</ol><ol start="28" style="list-style-type: decimal;"><li>Then At this time, you can use the Bluetooth of your mobile phone to send a picture to the file size that development board. After sending, you can be seen through see the following confirmation interface in the Android system of the development board, and then click '''ls -lhAccept''' command and to start receiving the space occupied in picture sent by the ZFS pool are both '''27M'''mobile phone.</li></ol>
[[File:pi3b-img372img415.png|576x90px]]</ol><ol start="9" style="list-style-type: decimal;"><li>You can open the '''Download''' directory in the file manager to view the pictures received by the Android system Bluetooth of the development board</li>
[[File:pi3b-img416.png]]</ol start><span id="3" style="listhow-to-use-raspberry-pi-5-styleinch-type: decimal;screen"><li>Then we enable compression in the ZFS pool pool1</li></olspan>
root@orangepi:/pool1$ '''sudo zfs set compression=lz4 pool1'''= How to use Raspberry Pi 5-inch screen ==
<ol start{| class="4wikitable" style="listbackground-style-typecolor:#ffffdc;width: decimal800px;">|-| <libig>Then execute '''Please make sure that the image used is the following command again to package two versions of the image:'''/var/log/''' and '''/etc/''' directories into a tar package</li></ol>
root@orangepi:/pool1$ '''sudo tar -cf textOrangePi3B_RK3566_Android11_lcd_v1.tar /var/log/ /etc/x.x.img'''
<ol start="5" style="list-style-type: decimal;"><li>At this time, you can see that the size of the '''textOrangePi3B_RK3566_Android11_spi-nvme_lcd_v1.tarx.x.img''' file is still 27M, but it only occupies 9.47M in the ZFS pool, indicating that the file is compressed</li></olbig>|}
# The screen needs to be assembled first, please refer to [[File:pi3bOrange Pi 3B#Use of the Raspberry PI's 5-img373.pnginch screen|576x79px'''the assembly method of the Raspberry Pi 5-inch screen''']]# Connect the Type-C power supply to the board and power it on. After the system starts, you can see the screen display as shown in the figure below
<span id="how::[[File:pi3b-to-shut-down-and-restart-the-development-board"></span>== How to shut down and restart the development board ==img417.png]]
# During the running of the Linux system, if the Type<span id="pin-C power supply is directly unplugged, some data may be lost or damaged in the file system, so please use the '''poweroff''' command to shut down the Linux system of the development board before powering off. Then unplug the power again.interface-gpio-uart-spi-and-pwm-test"></span>
orangepi@orangepi:~$ '''sudo poweroff'''== 40pin interface GPIO, UART, SPI and PWM test ==
<ol startspan id="2" style="listpin-gpio-port-styletest-type: decimal;2"><li>In addition, the development board is equipped with a switch button, and you can also '''short press''' the switch button on the development board to shut down.</li></olspan>=== 40pin GPIO port test ===
[[File:pi3b-img374.png|294x80px]]# First click on the wiringOP icon to open the wiringOP APP
'''Note that the Linux desktop version system will pop up a confirmation box as shown in the figure below after pressing the switch button, and the system will shut down only after clicking the Shut Down option::[[File:pi3b-img418.'''png]]
[[File<ol start="2" style="list-style-type:pi3b-img375.png|207x193px]]decimal;"><li>The main interface of wiringOP APP is displayed as shown in the figure below, and then click the '''GPIO_TEST''' button to open the GPIO test interface</li>
[[File:pi3b-img419.png]]
</ol>
<ol start="3" style="list-style-type: decimal;">
<li>Short press The GPIO test interface is shown in the switch button figure below. The two rows of '''CheckBox''' buttons on the development board after shutting down left are in one-to start up-one correspondence with the 40pin pins.When the '''CheckBox''' button is checked, the corresponding GPIO pin will be set to '''OUT''' mode, and the pin level will be set to high level; when the checkbox is unchecked, the GPIO pin level will be set to low level; When the '''GPIO READALL''' button is pressed, information such as wPi number, GPIO mode, and pin level can be obtained; when the '''BLINK ALL GPIO''' button is clicked, the program will control the 28 GPIO ports to continuously switch between high and low levels</li></ol> [[File:pi3b-img374.png|294x80px]]
[[File:pi3b-img420.png]]
</ol>
<ol start="4" style="list-style-type: decimal;">
<li>The command to restart Then click the Linux system '''GPIO READALL''' button, the output information isas shown in the figure below:</li></ol>
orangepi@orangepi[[File:~$ '''sudo''' pi3b-img421.png]]</ol><ol start="5" style="list-style-type: decimal;"><li>There are a total of 28 GPIO ports in the 40pins of the development board that can be used. The following uses pin 7—the corresponding GPIO is GPIO4_A4—the corresponding wPi serial number is 2—as an example to demonstrate how to set the high and low levels of the GPIO port. First click the '''rebootCheckBox'''button corresponding to pin 7. When the button is selected, pin 7 will be set to high level. After setting, you can use a multimeter to measure the voltage value of the pin. If it is 3.3v, it means setting high level success</li>
[[File:pi3b-img422.png]]<span id/ol><ol start="6" style="linuxlist-sdkorangepistyle-build-instructionstype: decimal;"><li>Then click the '''GPIO READALL''' button, you can see that the current pin 7 mode is '''OUT''', and the pin level is high</spanli>
[[File:pi3b-img423.png]]</ol><ol start= "7" style="list-style-type: decimal;"><li>Click the '''CheckBox''' button in the figure below again to cancel the check status. Pin 7 will be set to low level. After setting, you can use a multimeter to measure the voltage value of the pin. If it is '''Linux SDK——orangepi-build instructions0v''' =, it means that the low level is set successfully.</li>
[[File:pi3b-img424.png]]<span id/ol><ol start="8" style="compilationlist-systemstyle-requirementstype: decimal;"><li>Then click the '''GPIO READALL''' button, you can see that the current pin 7 mode is OUT, and the pin level is low</spanli>== Compilation system requirements ==
'''We can cross[[File:pi3b-compile the Linux image of the development board on the x64 computer, or compile the Linux image of the development board on the Ubuntu22img425.04 system of the development board, please choose one according to your preference.'''png]]</ol><span id="pin-uart-test-1"></span>
'''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.'''=== 40pin UART test ===
<span id="compile-with-the-ubuntu22# UART7 and UART9 are enabled by default in Android.04-system-The position of-the-development-board"></span>=== Compile with 40pin is shown in the Ubuntu22.04 system of figure below, and the development board ===corresponding device nodes are '''/dev/ttyS7''' and '''/dev/ttyS9''' respectively
# The Linux SDK, namely '''orangepi::[[File:pi3b-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 operationsimg269.png]]
orangepi@orangepi<ol start="2" style="list-style-type:~$ '''lsb_release -a'''decimal;"><li>First click on the wiringOP icon to open the wiringOP APP</li>
No LSB modules are available[[File:pi3b-img418.png]]</ol><ol start="3" style="list-style-type: decimal;"><li>The main interface of wiringOP APP is displayed as shown in the figure below, and then click the '''UART_TEST''' button to open the UART test interface</li>
Distributor ID[[File: Ubuntupi3b-img426.png]]</ol><ol start="4" style="list-style-type: decimal;"><li>The serial port test interface of the APP is shown in the figure below</li>
Description[[File: Ubuntu 22pi3b-img427.04png]]</ol><ol start="5" style="list-style-type: decimal;"><li>Take the test of '''UART7''' as an example below, select the '''/dev/ttyS7''' node in the selection box, enter the baud rate you want to set in the edit box, and then click the '''OPEN''' button to open the /dev/ttyS7 node.1 LTSAfter the opening is successful, the '''OPEN''' button becomes unselectable, and the '''CLOSE''' button and '''SEND''' button become selectable</li>
Release[[File: '''22pi3b-img428.04'''png]]</ol><ol start="6" style="list-style-type: decimal;"><li>Then use Dupont wire to short the RXD and TXD pins of uart7</li>
Codename[[File: jammypi3b-img429.png]]</ol><ol start="7" style="list-style-type: decimal;"><li>Then you can enter a character in the send edit box below, and click the '''SEND''' button to start sending</li>
[[File:pi3b-img430.png]]</ol><ol start="28" style="list-style-type: decimal;"><li>'''Since the source codes such as the kernel and U-boot are stored on GitHubIf everything is normal, it is very important to ensure that the development board can download codes from GitHub normally when compiling received string will be displayed in the image.'''receiving box</li></ol>
[[File:pi3b-img431.png]]</ol><span id="compile-withpin-x64spi-ubuntu22.04test-computer2"></span>=== Compile with x64 Ubuntu22.04 computer ===
# The Linux SDK, '''orangepi-build''', supports running on computers with '''Ubuntu 22.04''' installed, so before downloading orangepi-build, please make sure that the Ubuntu version installed on your computer is Ubuntu 22.04. The command to check the Ubuntu version installed on the computer is as follows. If the Release field does not display '''22.04''', it means that the current Ubuntu version does not meet the requirements. Please replace the system before performing the following operations.=== 40pin SPI test ===
test@test:~$ '''lsb_release -a'''# According to the schematic diagram of the 40pin interface, the spi available for Orange Pi 3B is spi3
No LSB modules are available::[[File:pi3b-img264.png]]
Distributor ID<ol start="2" style="list-style-type: Ubuntudecimal;"><li>Here, the SPI interface is tested through the w25q64 module. First, the w25q64 device is connected to the SPI3 interface</li>
Description[[File: Ubuntu 22pi3b-img432.04 LTSpng]]</ol><ol start="3" style="list-style-type: decimal;"><li>Then click the wiringOP icon to open the wiringOP APP</li>
Release[[File: '''22pi3b-img418.04'''png]]</ol><ol start="4" style="list-style-type: decimal;"><li>The main interface of wiringOP APP is displayed as shown in the figure below, click the SPI_TEST button to open the SPI test interface</li>
Codename[[File: jammypi3b-img433.png]]</ol><ol start="5" style="list-style-type: decimal;"><li>Then click the '''OPEN''' button to initialize the SPI</li>
[[File:pi3b-img434.png]]</ol><ol start="26" style="list-style-type: decimal;"><li><p>If Then fill in the computer is installed with Windows system and there is no computer with Ubuntu 22.04 installed, you can consider using '''VirtualBox''' or '''VMware''' bytes that need to install an Ubuntu 22.04 virtual machine in the Windows system. But please be careful not to compile orangepi-build on sent, such as reading the WSL virtual machineID information of w25q64, because orangepi-build has not been tested fill in the WSL virtual machineaddress 0x9f in data[0], so it cannot be guaranteed that orangepi-build can be used normally in WSL.</p></li><li><p>The download address of and then click the installation image of Ubuntu 22.04 '''amd64TRANSFER''' version is:</p>button</li></ol>
[https[File://repo.huaweicloud.com/ubuntupi3b-releases/21img435.04png]]</ubuntu-21.04ol><ol start="7" style="list-desktopstyle-amd64.iso '''httpstype:decimal;"><li>Finally, the APP will display the read ID information<//mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/22.04/ubuntu-22.04-desktop-amd64.iso''']li>
Or[[File:pi3b-img436.png]]</ol><ol start="8" style="list-style-type: decimal;"><li>The MANUFACTURER ID of the w25q64 module is EFh, and the Device ID is 4017h, corresponding to the value read above (h stands for hexadecimal)</li>
'''https[[File://repo.huaweicloud.com/ubuntupi3b-releases/22img437.04png]]</ubuntuol><span id="pin-22.04.1pwm-desktop-amd64.iso'''test"></span>
<ol start="4" style="list-style-type: decimal;"><li><p>After installing Ubuntu 22.04 on the computer or virtual machine, please set the software source of Ubuntu 22.04 to Tsinghua source, otherwise it is easy to make mistakes due to network reasons when installing the software later</p><ol style="list-style-type: lower-alpha;"><li>For the method of replacing Tsinghua source, please refer to the instructions on this web page</li></ol></li></ol>40pin PWM test ===
https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/# Android enables '''PWM11''' by default, and the corresponding pin is located at 40pin as shown in the figure below
<ol start="2" style="list-style-type: lower:[[File:pi3b-alpha;"><li>Note that the Ubuntu version needs to be switched to 22img438.04</li></ol>png]]
[[File<ol start="2" style="list-style-type:pi3b-img376.png|576x241px]]decimal;"><li>First click on the wiringOP icon to open the wiringOP APP</li>
[[File:pi3b-img418.png]]</ol><ol start="3" style="list-style-type: lower-alphadecimal;"><li>The content of Then click the '''/etc/apt/sources.listPWM_TEST''' file that needs button on the main interface of wiringOP to be replaced isenter the PWM test interface</li></ol>
test@test[[File:~$ pi3b-img439.png]]</ol><ol start="4" style="list-style-type: decimal;"><li>The base address corresponding to PWM11 is '''sudo mv /etc/apt/sourcesfe6f0030''', here pwmchip0 shows '''fdd70020.list /etc/apt/sources.listpwm''' on the right, then you need to click the drop-down option to select other pwmchips until '''febf0030.bakpwm'''is displayed on the right</li>
test@test[[File:~$ pi3b-img440.png]]</ol><ol start="5" style="list-style-type: decimal;"><li>When the drop-down option selects '''pwmchip3''', the corresponding base address of PWM11 is '''sudo vim /etc/apt/sources.listfe6f0030'''on the right</li>
# By [[File:pi3b-img441.png]]</ol><ol start="6" style="list-style-type: decimal;"><li>Then confirm the PWM channel, the defaultis channel 0, and confirm the source image PWM cycle, the default configuration is commented '''50000ns''', converted to improve the speed of apt updatePWM frequency is '''20KHz''', you can uncomment modify it yourself if necessary, click the '''EXPORT''' button to export '''PWM11'''</li>
deb https[[File://mirrors.tuna.tsinghuapi3b-img442.edu.cnpng]]</ubuntuol><ol start="7" style="list-style-type: decimal;"><li>Then drag the drag bar below to change the PWM duty cycle, and then check Enable to output the PWM waveform</ jammy main restricted universe multiverseli>
# deb[[File:pi3b-img443.png]]</ol><ol start="8" style="list-src httpsstyle-type://mirrorsdecimal;"><li>Then use an oscilloscope to measure the No.tuna.tsinghua.edu.cn/ubuntu 32 pin in the 40pin of the development board, and you can see the following waveform</ jammy main restricted universe multiverseli>
deb https[[File://mirrors.tuna.tsinghua.edupi3b-img444.cnpng]]</ubuntuol><span id="how-to-use-adb"></ jammy-updates main restricted universe multiversespan>
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse== How to use ADB ==
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu<span id="use-network-connection-adb-debugging"></ jammy-backports main restricted universe multiversespan>=== Use network connection adb debugging ===
{| class="wikitable" style="background-color:# debffffdc;width:800px;" |-src https://mirrors| <big>'''Using the network adb does not require a data cable to connect the computer and the development board, but to communicate through the network, so first make sure that the wired or wireless network of the development board is connected, and then obtain the IP address of the development board, which will be used later.tuna.tsinghua.edu.cn'''</ubuntu/ jammy-backports main restricted universe multiversebig>|}
deb https://mirrors# Make sure that the '''service.tunaadb.tsinghuatcp.edu.cn/ubuntu/ jammy-security main restricted universe multiverseport''' of the Android system is set to port number 5555
# deb::{| class="wikitable" style="width:800px;" |-src https| console://mirrors.tuna.tsinghua.edu# '''getprop | grep "adb.cn/ubuntu/ jammy-security main restricted universe multiversetcp"'''
# Pre-release software source, not recommended to enable[service.adb.tcp.port]: ['''5555''']|}
# deb https<ol start="2" style="list-style-type://mirrorsdecimal;"><li>If '''service.tunaadb.tsinghuatcp.edu.cnport''' is not set, you can use the following command to set the port number of network adb</ubuntu/ jammy-proposed main restricted universe multiverseli>
# deb{| class="wikitable" style="width:800px;" |-src https| console://mirrors.tuna# '''setprop service.tsinghuaadb.edutcp.cn/ubuntu/ jammy-proposed main restricted universe multiverseport 5555'''
console:/ # '''stop adbd''' console:/ # '''start adbd'''|}</ol><ol start="43" style="list-style-type: lower-alphadecimal;"><li>After the replacement, you need to update the package information and make sure there is no errorInstall adb tool on Ubuntu PC</li></ol>
{| class="wikitable" style="width:800px;"
|-
|
test@test:~$ '''sudo apt update'''
test@test:~$ '''sudo apt install -y adb'''|}</ol><ol start="54" style="list-style-type: lower-alphadecimal;"><li>Then connect network adb on Ubuntu PC</li> {| class="wikitable" style="width:800px;" |-| test@test:~$ '''adb connect 192.168.1.xxx''' '''In addition, since the source codes such as the kernel and U-boot are stored on GitHub, it is very important (The IP address needs to be changed to ensure that the computer can download codes from GitHub normally when compiling IP address of the image.development board)'''</li></ol>
<span id="get-the-source-code-of-linux-sdk"p>* daemon not running; starting now at tcp:5037</spanp>== Get the source code of Linux sdk ==
<span id="download-orangepi-build-from-github"p>* daemon started successfully</spanp>=== Download orangepi-build from github ===
# The Linux sdk actually refers connected to the code of orangepi-build192. orangepi-build is modified based on the armbian build system168. Using orangepi-build, multiple versions of Linux images can be compiled1. First download the code of orangepi-build, the command is as followsxxx:5555
test@test:~$ '''sudo apt-get update'''
test@test:~$ '''sudo apt-get install -y gitadb devices'''
test@test:~$ '''git clone https://github.com/orangepi-xunlong/orangepi-build.git -b next'''List of devices attached
'''Note that the Orange Pi 3B development board needs 192.168.1.xxx:5555 device|}</ol><ol start="5" style="list-style-type: decimal;"><li>Then you can log in to download the source code of the next branch of orangepi-build. The above git clone command needs to specify android system through the branch of adb shell on the orangepi-build source code as next.'''Ubuntu PC</li>
<div {| class="figurewikitable">style="width:800px;" |-| test@test:~$ '''adb shell'''
[[Fileconsole:pi3b-img377.png/ #|576x298px|图片6]]}</ol><span id="appendix"></span>
</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.Appendix'''=
<ol startspan id="2" style="listuser-manual-styleupdate-type: decimal;history"><li>The u-boot and Linux kernel versions currently used by the development board are as follows</li></olspan>== User Manual Update History ==
{| class="wikitable" style="width:800px;text-align: center;"
|-
|'''branchVersion'''|'''u-boot versionDate'''|'''Linux Kernel versionUpdate Notes'''
|-
|'''legacy'''v0.1|'''u2023-boot 2017.09'''07-19|'''Linux5.10'''initial version
|}
'''The branch mentioned here is not the same thing as the branch of the orangepi<span id="image-build source code, please do not confuse it. This branch is mainly used to distinguish different kernel source code versions.'''update-history"></span>== Image Update History ==
'''Currently, the Linux5.10 bsp kernel provided by RK is defined as the legacy branch. If the mainline kernel is supported in the future, a current branch will be added.''' <ol start{| class="3wikitable" style="list-style-typewidth: decimal800px;"><li><p>orangepi|-build will contain the following files and folders after downloading</p><ol | style="list-styletext-typealign: lower-alphacenter;">| <li><p>'''build.shDate''': Compile the startup script</p></li><li><p>'''external'''| style="text-align: Contains the configuration files needed to compile the image, specific scripts, and the source code of some programs, etc.</p></li>center;" | <li><p>'''LICENSEUpdate Notes''': GPL 2 license file</p></li><li><p>README.md: orangepi|-build documentation</p></li><li><p>'''scripts'''| style="text-align: General script for compiling Linux images</p></li></ol>center;" | </li></ol>2023-07-19|test@test:~/orangepi-build$ '''ls'''Orangepi3b_1.0.0_debian_bullseye_desktop_xfce_linux5.10.160.7z
'''buildOrangepi3b_1.sh external LICENSE''' README0.md '''scripts'''0_ubuntu_jammy_desktop_xfce_linux5.10.160.7z
'''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)Orangepi3b_1. orangepi-build will specify the address of u-boot, Linux kernel and cross-compilation toolchain in the script and configuration file0. When running orangepi-build, when it finds that there are no such things locally, it will automatically go to the corresponding place to download them0_ubuntu_focal_desktop_xfce_linux5.'''10.160.7z
<span id="download-the-cross-compilation-toolchain"></span>=== Download the cross-compilation toolchain ===OrangePi3B_RK3566_Android11_v1.0.0.tar.gz
'''The cross-compilation toolchain will only be downloaded when the orangepi-build compilation image is used on an x64 computerOrangePi3B_RK3566_Android11_lcd_v1. Compiling the Linux image of the development board in the Ubuntu220.04 of the development board will not download the cross-compilation toolchain0. At this time, orangepi-build/toolchains will be an empty foldertar.'''gz
# When orangepi-build runs for the first time, it will automatically download the cross-compilation toolchain and put it in the '''toolchains''' folder. Every time after running the build.sh script of orangepi-build, it will check whether the cross-compilation toolchain in '''toolchains''' exists , if it does not exist, the download will be restarted, if it exists, it will be used directly, and the download will not be repeated. <div class="figure"> [[File:pi3b-img378.png|575x278px|选区_396]] </div><ol start="2" style="list-style-type: decimal;"><li>The image URL of the cross-compilation toolchain in China is the open source software image site of Tsinghua University</li></ol> https://mirrors.tuna.tsinghua.edu.cn/armbian-releases/_toolchain/ <ol start="3" style="list-style-type: decimal;"><li>After '''toolchains''' is downloaded, it will contain multiple versions of cross-compilation toolchains, and the development board will only use two of them</li></ol> test@test:~/orangepi-build$ '''ls toolchains/''' gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu gcc-arm-11.2-2022.02-x86_64-arm-none-linux-gnueabihf gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabihf gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabihf gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabi gcc-linaro-aarch64-none-elf-4.8-2013.11_linux gcc-linaro-arm-linux-gnueabihf-4.8-2014.04_linux gcc-linaro-arm-none-eabi-4.8-2014.04_linux <ol start="4" style="list-style-type: decimal;"><li><p>The cross-compilation toolchain used to compile the Linux kernel source code is</p><ol style="list-style-type: lower-alpha;"><li>Linux5.10</li></ol></li></ol> '''gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu''' <ol start="5" style="list-style-type: decimal;"><li><p>The cross-compilation tool chain used to compile the u-boot source code is</p><ol style="list-style-type: lower-alpha;"><li>v2017.09</li></ol></li></ol> '''gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu''' <span id="orangepi-build-complete-directory-structure-description"></span>=== orangepi-build complete directory structure description === <ol style="list-style-type: decimal;"><li><p>The orangepi-build repository does not contain the source code of the Linux kernel, u-boot, and cross-compilation toolchain after downloading. The source code of the Linux kernel and u-boot is stored in an independent git repository</p><ol style="list-style-type: lower-alpha;"><li>The git repository where the Linux kernel source code is stored is as follows:</li></ol></li></ol> '''https://github.com/orangepi-xunlong/linux-orangepi/tree/orange-pi-5.10-rk35xx''' <ol start="2" style="list-style-type: lower-alpha;"><li>The git warehouse where the b.u-boot source code is stored is as follows:</li></ol> '''https://github.com/orangepi-xunlong/u-boot-orangepi/tree/v2017.09-rk3588''' <ol start="2" style="list-style-type: decimal;"><li><p>When orangepi-build runs for the first time, it will download the cross-compilation toolchain, u-boot and Linux kernel source code. After successfully compiling a Linux image, the files and folders that can be seen in orangepi-build are:</p><p>a. '''build.sh''': compile startup script</p><p>b. '''external''': Contains the configuration files needed to compile the image, scripts with specific functions, and the source code of some programs. The rootfs compressed package cached during the image compilation process is also stored in external</p><p>c. '''kernel''': stores the source code of the Linux kernel, and the folder named orange-pi-5.10-rk35xx stores the kernel source code of the legacy branch of the RK3588/RK3588S/RK3566 series development boards. Please do not manually name the folder name of the kernel source code Modify, if modified, the kernel source code will be re-downloaded when the compilation system is running</p><p>d. '''LICENSE''': GPL 2 license file</p><p>e. '''README'''.md: orangepi-build documentation</p><p>f. '''output''': Store compiled deb packages such as u-boot and Linux, compilation logs, and compiled images and other files</p><p>g. '''scripts''': general scripts for compiling Linux images</p><p>h. '''toolchains''': store cross-compilation toolchain</p><p>i. '''u-boot''': stores the source code of u-boot, the folder named v2017.09-rk3588 stores the u-boot source code of the legacy branch of the RK3588/RK3588S/RK3566 series development boards, the name of the folder of the u-boot source code Please do not modify it manually, if it is modified, the u-boot source code will be re-downloaded when the compiling system is running</p><p>j. '''userpatches''': Store configuration files needed to compile scripts</p></li></ol> test@test:~/orangepi-build$ '''ls''' '''build.sh external kernel LICENSE output''' README.md '''scripts toolchains u-boot userpatches''' <span id="compile-u-boot"></span>== Compile u-boot == # Run the build.sh script, remember to add sudo permission test@test:~/orangepi-build$ '''sudo ./build.sh''' <ol start="2" style="list-style-type: decimal;"><li>Select '''U-boot package''',then enter</li></ol> <div class="figure"> [[File:pi3b-img379.png|576x132px|选区_238]] </div><ol start="3" style="list-style-type: decimal;"><li>Then select the model of the development board</li></ol> <div class="figure"> [[File:pi3b-img380.png|576x197px|}4$_5F06}}0R4GU8]OVO}4E]] </div><ol start="4" style="list-style-type: decimal;"><li><p>Then it will start to compile u-boot, and some information prompted during compilation is explained as follows</p><ol style="list-style-type: lower-alpha;"><li>u-boot source code version</li></ol></li></ol> [ o.k. ] Compiling u-boot [ '''v2017.09''' ] <ol start="2" style="list-style-type: lower-alpha;"><li>The version of the cross-compilation toolchain</li></ol> [ o.k. ] Compiler version [ '''aarch64-linux-gnu-gcc 7.4.1''' ] <ol start="3" style="list-style-type: lower-alpha;"><li>Path to the generated u-boot deb package</li></ol> [ o.k. ] Target directory [ '''orangepi-build/output/debs/u-boot''' ] <ol start="4" style="list-style-type: lower-alpha;"><li>The package name of the generated u-boot deb package</li></ol> [ o.k. ] File name [ '''linux-u-boot-legacy-orangepi3b_1.0.0_arm64.deb''' ] <ol start="5" style="list-style-type: lower-alpha;"><li>Compilation time</li></ol> [ o.k. ] Runtime [ '''1 min''' ] <ol start="6" style="list-style-type: lower-alpha;"><li>Repeat the command to compile u-boot, use the following command to start compiling u-boot directly without selecting through the graphical interface</li></ol> [ o.k. ] Repeat Build Options [ '''sudo ./build.sh BOARD=orangepi3b BRANCH=legacy BUILD_OPT=u-boot KERNEL_CONFIGURE=no''' ] <ol start="5" style="list-style-type: decimal;"><li>View the u-boot deb package generated by compilation</li></ol> test@test:~/orangepi-build$ '''ls output/debs/u-boot/''' linux-u-boot-legacy-orangepi3b_1.0.0_arm64.deb <ol start="6" style="list-style-type: decimal;"><li><p>The files contained in the generated u-boot deb package are as follows</p><ol style="list-style-type: lower-alpha;"><li>Use the following command to decompress the deb package</li></ol></li></ol> test@test:~/orangepi-build$ '''cd output/debs/u-boot''' test@test:~/orangepi_build/output/debs/u-boot$ $ '''dpkg -x''' \ '''linux-u-boot-legacy-orangepi3b_1.0.0_arm64.deb . (Note that there is a "." at the end of the command)''' test@test:~/orangepi_build/output/debs/u-boot$ '''ls''' linux-u-boot-legacy-orangepi3b_1.0.0_arm64.deb '''usr''' <ol start="2" style="list-style-type: lower-alpha;"><li>The decompressed file is as follows</li></ol> test@test:~/orangepi-build/output/debs/u-boot$ '''tree usr''' usr └── lib ├── linux-u-boot-legacy-orangepi3b_1.0.0_arm64 │ ├── idbloader.img │ ├── rkspi_loader.img │ └── u-boot.itb └── u-boot ├── LICENSE ├── orangepi-3b-rk3566_defconfig └── platform_install.sh 3 directories, 6 files <ol start="7" style="list-style-type: decimal;"><li>When the orangepi-bulid compilation system compiles the u-boot source code, it will first synchronize the u-boot source code with the u-boot source code of the github server, so if you want to modify the u-boot source code, you first need to turn off the download and update function of the source code '''(This function needs to be fully compiled once u-boot, otherwise it will prompt that the source code of u-boot cannot be found. If the source code compressed package is downloaded from Google cloud disk, there is no such problem, because the source code of u-boot have been cached)''', otherwise the changes made will be reverted, the method is as follows:</li></ol> <blockquote>Set the IGNORE_UPDATES variable in userpatches/config-default.conf to "yes"</blockquote>test@test:~/orangepi-build$ '''vim userpatches/config-default.conf''' IGNORE_UPDATES="'''yes'''" <ol start="8" style="list-style-type: decimal;"><li><p>When debugging u-boot code, you can use the following method to update u-boot in the Linux image for testing</p><ol style="list-style-type: lower-alpha;"><li>Upload the compiled u-boot deb package to the Linux system of the development board</li></ol></li></ol> test@test:~/orangepi-build$ '''cd output/debs/u-boot''' test@test:~/orangepi_build/output/debs/u-boot$ '''scp \''' '''linux-u-boot-legacy-orangepi3b_1.0.0_arm64.deb''' [mailto:root@192.168.1.xxx:/root root@192.168.1.xxx:/root] <ol start="2" style="list-style-type: lower-alpha;"><li>Then log in to the development board and uninstall the deb package of u-boot installed</li></ol> root@orangepi:~# '''apt purge -y linux-u-boot-orangepi3b-legacy''' <ol start="3" style="list-style-type: lower-alpha;"><li>Install the new u-boot deb package just uploaded</li></ol> root@orangepi:~# '''dpkg -i''' '''linux-u-boot-legacy-orangepi3b_1.0.0_arm64.deb''' <ol start="4" style="list-style-type: lower-alpha;"><li>Then run the nand-sata-install script</li></ol> root@orangepi:~# '''nand-sata-install''' <ol start="5" style="list-style-type: lower-alpha;"><li>Then select '''5 Install/Update the bootloader on SD/eMM''' to update the u-boot in the TF card or '''7 Install/Update the bootloader on SPI Flash''' to update the u-boot in the SPI Flash</li></ol> [[File:pi3b-img381.png|312x152px]] <ol start="6" style="list-style-type: lower-alpha;"><li>After pressing the Enter key, a Warning will pop up first</li></ol> [[File:pi3b-img382.png|309x168px]] <ol start="7" style="list-style-type: lower-alpha;"><li>Press the Enter key again to start updating u-boot, and the following information will be displayed after the update is completed</li></ol> [[File:pi3b-img383.png|244x137px]] <ol start="8" style="list-style-type: lower-alpha;"><li>Then you can restart the development board to test whether the modification of u-boot takes effect</li></ol> <!-- --><ol start="9" style="list-style-type: decimal;"><li><p>Other useful information</p><ol style="list-style-type: lower-alpha;"><li>In the u-boot 2017.09 source code, the defconfig configuration file used by the development board is</li></ol></li></ol> [https://github.com/orangepi-xunlong/u-boot-orangepi/blob/v2017.09-rk3588/configs/orangepi_5_defconfig '''orangepi-build/u-boot/v2017.09-rk3588/configs/orangepi-3b-rk3566_defconfig'''] <ol start="2" style="list-style-type: lower-alpha;"><li>In the u-boot 2017.09 source code, the dts file used by the development board is</li></ol> [https://github.com/orangepi-xunlong/u-boot-orangepi/blob/v2017.09-rk3588/arch/arm/dts/rk3588s-orangepi-5.dts orangepi-build/u-boot/v2017.09-rk3588/arch/arm/dts/rk3566-orangepi-3b.dts] <span id="compile-the-linux-kernel"></span>== Compile the Linux kernel == # Run the build.sh script, remember to add sudo permission test@test:~/orangepi-build$ '''sudo ./build.sh''' <ol start="2" style="list-style-type: decimal;"><li>Select '''Kernel package''',then enter</li></ol> <div class="figure"> [[File:pi3b-img384.png|575x116px|选区_240]] </div><ol start="3" style="list-style-type: decimal;"><li>Then select the model of the development board</li></ol> <div class="figure"> [[File:pi3b-img380.png|576x197px|}4$_5F06}}0R4GU8]OVO}4E]] </div><ol start="4" style="list-style-type: decimal;"><li>Then it will prompt whether to display the kernel configuration interface. If you do not need to modify the kernel configuration, select the first one. If you need to modify the kernel configuration, select the second one.</li></ol> [[File:pi3b-img385.png|576x87px]] <ol start="5" style="list-style-type: decimal;"><li>If you choose to display the kernel configuration menu (the second option) in step 4), the kernel configuration interface opened by '''make menuconfig''' will pop up. At this time, you can directly modify the kernel configuration, save and exit after modification. Yes, after exiting, the kernel source code will be compiled</li></ol> [[File:pi3b-img386.png|462x322px]] <ol style="list-style-type: lower-alpha;"><li>If you do not need to modify the configuration options of the kernel, when running the build.sh script, pass in '''KERNEL_CONFIGURE=no''' to temporarily block the pop-up kernel configuration interface</li></ol> test@test:~/orangepi-build$ '''sudo ./build.sh KERNEL_CONFIGURE=no''' <ol start="2" style="list-style-type: lower-alpha;"><li><p>You can also set '''KERNEL_CONFIGURE=no''' in the '''orangepi-build/userpatches/config-default.conf''' configuration file, which can permanently disable this function</p></li><li><p>If the following error is displayed when compiling the kernel, it is because the terminal interface of the Ubuntu PC is too small to display the '''make menuconfig''' interface. Please maximize the terminal of the Ubuntu PC and run the build.sh script again</p></li></ol> [[File:pi3b-img387.png|574x234px]] <ol start="6" style="list-style-type: decimal;"><li><p>Part of the information prompted when compiling the kernel source code is as follows</p><ol style="list-style-type: lower-alpha;"><li>The version of the Linux kernel source code</li></ol></li></ol> [ o.k. ] Compiling current kernel [ '''5.10.160''' ] <ol start="2" style="list-style-type: lower-alpha;"><li>The version of the cross-compilation toolchain used</li></ol> [ o.k. ] Compiler version [ '''aarch64-none-linux-gnu-gcc 11.2.1''' ] <ol start="3" style="list-style-type: lower-alpha;"><li>The configuration file used by the kernel by default and the path where it is stored</li></ol> [ o.k. ] Using kernel config file [ '''config/kernel/linux-rockchip-rk356x-legacy.config''' ] <ol start="4" style="list-style-type: lower-alpha;"><li>The path of the deb package related to the kernel generated by compiling</li></ol> [ o.k. ] Target directory [ '''orangepi-build/output/debs/''' ] <ol start="5" style="list-style-type: lower-alpha;"><li>The package name of the compiled kernel image deb package</li></ol> [ o.k. ] File name [ '''linux-image-legacy-rockchip-rk356x_1.0.0_arm64.deb''' ] <ol start="6" style="list-style-type: lower-alpha;"><li>The time used for compilation</li></ol> [ o.k. ] Runtime [ '''5 min''' ] <ol start="7" style="list-style-type: lower-alpha;"><li>Finally, the compilation command to repeatedly compile the kernel selected last time will be displayed. Use the following command to start compiling the kernel source code directly without selecting through the graphical interface</li></ol> [ o.k. ] Repeat Build Options [ '''sudo ./build.sh BOARD=orangepi3b BRANCH=legacy BUILD_OPT=kernel KERNEL_CONFIGURE=no''' ] <ol start="7" style="list-style-type: decimal;"><li><p>View the deb package related to the kernel generated by compilation</p><ol style="list-style-type: lower-alpha;"><li><p>'''linux-dtb-legacy-rockchip-rk356x_1.0.0_arm64.deb''' Contains dtb files used by the kernel</p></li><li><p>'''linux-headers-legacy-rockchip-rk356x_1.0.0_arm64.deb''' Include kernel header files</p></li><li><p>'''linux-image-legacy-rockchip-rk356x_1.0.0_arm64.deb''' Contains kernel images and kernel modules</p></li></ol></li></ol> test@test:~/orangepi-build$ '''ls output/debs/linux-*''' output/debs/linux-dtb-legacy-rockchip-rk356x_1.0.0_arm64.deb output/debs/linux-image-legacy-rockchip-rk356x_1.0.0_arm64.deb output/debs/linux-headers-legacy-rockchip-rk356x_1.0.0_arm64.deb <ol start="8" style="list-style-type: decimal;"><li><p>The files contained in the generated Linux-image deb package are as follows</p><ol style="list-style-type: lower-alpha;"><li>Use the following command to decompress the deb package</li></ol></li></ol> test@test:~/orangepi-build$ '''cd output/debs''' test@test:~/orangepi_build/output/debs$ '''mkdir test''' test@test:~/orangepi_build/output/debs$ '''cp \''' '''linux-image-legacy-rockchip-rk356x_1.0.0_arm64.deb test/''' test@test:~/orangepi_build/output/debs$ '''cd test''' test@test:~/orangepi_build/output/debs/test$ '''dpkg -x \''' '''linux-image-legacy-rockchip-rk356x_1.0.0_arm64.deb .''' test@test:~/orangepi_build/output/debs/test$ '''ls''' '''boot etc lib''' linux-image-legacy-rockchip-rk356x_1.0.0_arm64.deb '''usr''' <ol start="2" style="list-style-type: lower-alpha;"><li>The decompressed file is as follows</li></ol> test@test:~/orangepi-build/output/debs/test$ '''tree -L 2''' . ├── boot │ ├── config-5.10.160-rockchip-rk356x │ ├── System.map-5.10.160-rockchip-rk356x │ └── vmlinuzOrangePi3B_RK3566_Android11_spi-5.10.160-rockchip-rk356x ├── etc │ └── kernel ├── lib │ └── modules ├── linux-image-legacy-rockchip-rk356x_1nvme_v1.0.0_arm64.deb └── usr ├── lib └── share <ol start="9" style="list-style-type: decimal;"><li>The orangepi-bulid compilation system will first synchronize the Linux kernel source code with the Linux kernel source code of the github server when compiling the Linux kernel source code, so if you want to modify the Linux kernel source code, you first need to turn off the update function of the source code '''(you need to compile it once This function can only be turned off after the Linux kernel source code, otherwise it will prompt that the source code of the Linux kernel cannot be found. If the source code compressed package downloaded from Google cloud disk, there is no such problem, because the source code of Linux has been cached)''', otherwise the The changes made will be reverted as follows:</li></ol> <blockquote>Set the IGNORE_UPDATES variable in '''userpatches/config-default.conf''' to "yes"</blockquote>test@test:~/orangepi-build$ '''vim userpatches/config-default.conf''' IGNORE_UPDATES="'''yes'''" <ol start="10" style="list-style-type: decimal;"><li><p>If the kernel has been modified, the following method can be used to update the kernel and kernel modules of the development board Linux system</p><ol style="list-style-type: lower-alpha;"><li>Upload the deb package of the compiled Linux kernel to the Linux system of the development board</li></ol></li></ol> test@test:~/orangepi-build$ '''cd output/debs''' test@test:~/orangepi-build/output/debs$ '''scp \''' '''linux-image-legacy-rockchip-rk356x_1.0.0_arm64.deb root@192.168.1.xxx:/root''' <ol start="2" style="list-style-type: lower-alpha;"><li>Then log in to the development board and uninstall the deb package of the installed Linux kernel</li></ol> root@orangepi:~# '''apt purge -y linux-image-legacy-rockchip-rk356x''' <ol start="3" style="list-style-type: lower-alpha;"><li>Install the deb package of the new Linux kernel just uploaded</li></ol> root@orangepi:~# '''dpkg -i linux-image-legacy-rockchip-rk356x_1.0.0_arm64.deb''' <ol start="4" style="list-style-type: lower-alpha;"><li>Then restart the development board, and then check whether the kernel-related modifications have taken effect</li></ol> root@orangepi:~# '''reboot''' <ol start="11" style="list-style-type: decimal;"><li><p>Other useful information</p><ol style="list-style-type: lower-alpha;"><li>The storage location of the kernel configuration file is as follows, please do not go to the kernel source code to find the kernel configuration file used by the development board</li></ol></li></ol> [https://github.com/orangepi-xunlong/orangepi-build/blob/next/external/config/kernel/linux-rockchip-rk3588-legacy.config orangepi-build/external/config/kernel/linux-rockchip-rk356x-legacy.config] <ol start="2" style="list-style-type: lower-alpha;"><li>The location of the dts file used by the development board is</li></ol> [https://github.com/orangepi-xunlong/linux-orangepi/blob/orange-pi-5.10-rk3588/arch/arm64/boot/dts/rockchip/rk3588s-orangepi-5.dts orangepi-build/kernel/orange-pi-5.10-rk35xx/arch/arm64/boot/dts/rockchip/rk3566-orangepi-3b.dts] <span id="compile-rootfs"></span>== Compile rootfs == # Run the build.sh script, remember to add sudo permission test@test:~/orangepi-build$ '''sudo ./build.sh''' <ol start="2" style="list-style-type: decimal;"><li>Select '''Rootfs and all deb packages''',then enter</li></ol> <div class="figure"> [[File:pi3b-img388.png|576x119px|选区_241]] </div><ol start="3" style="list-style-type: decimal;"><li>Then select the model of the development board</li></ol> <div class="figure"> [[File:pi3b-img380.png|576x197px|}4$_5F06}}0R4GU8]OVO}4E]] </div><ol start="4" style="list-style-type: decimal;"><li>Then select the type of rootfs</li></ol> [[File:pi3b-img389.png|575x86px]] <ol start="5" style="list-style-type: decimal;"><li><p>Then select the type of image</p><ol style="list-style-type: lower-alpha;"><li><p>'''Image with console interface (server)''' Indicates the image of the server version, which is relatively small</p></li><li><p>'''Image with desktop environment''' Indicates a image with a desktop, which is relatively large</p></li></ol></li></ol> <div class="figure"> [[File:pi3b-img390.png|576x75px|选区_245]] </div><ol start="6" style="list-style-type: decimal;"><li>If you are compiling the image of the server version, you can also choose to compile the Standard version or the Minimal version. The pre-installed software of the Minimal version will be much less than that of the Standard version '''(please do not choose the Minimal version if there is no special requirement, because many things are not pre-installed by default. Some functions may not be available)'''</li></ol> <div class="figure"> [[File:pi3b-img391.png|576x78px|选区_397]] </div><ol start="7" style="list-style-type: decimal;"><li>If you are compiling the image of the desktop version, you also need to select the type of desktop environment. Currently, Ubuntu Jammy mainly maintains XFCE and Gnome desktops, Ubuntu Focal only maintains XFCE desktops, and Debian Bullseye mainly maintains XFCE and KDE desktops</li></ol> <div class="figure"> [[File:pi3b-img392.png|575x99px|Selection_001]] </div>[[File:pi3b-img393.png|576x74px]] You can then select additional packages that need to be installed. Please press the Enter key to skip directly here. [[File:pi3b-img394.png|575x264px]] <ol start="8" style="list-style-type: decimal;"><li><p>Then it will start to compile rootfs, and some of the information prompted during compilation are as follows</p><ol style="list-style-type: lower-alpha;"><li>The type of rootfs</li></ol></li></ol> [ o.k. ] local not found [ Creating new rootfs cache for '''jammy'''] <ol start="2" style="list-style-type: lower-alpha;"><li>The storage path of the compiled rootfs compressed package</li></ol> [ o.k. ] Target directory [ '''external/cache/rootfs''' ] <ol start="3" style="list-style-type: lower-alpha;"><li>The name of the rootfs compressed package generated by compilation</li></ol> [ o.k. ] File name [ '''jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4''' ] <ol start="4" style="list-style-type: lower-alpha;"><li>The time used for compilation</li></ol> [ o.k. ] Runtime [ '''13 min''' ] <ol start="9" style="list-style-type: decimal;"><li><p>View the rootfs compressed package generated by compilation</p><ol style="list-style-type: lower-alpha;"><li><p>'''jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4''' is the rootfs compressed package, the meaning of each field of the name is</p><ol style="list-style-type: lower-alpha;"><li><p>'''jammy''' indicates the type of Linux distribution of rootfs</p></li><li><p>'''xfce''' means rootfs is the type of desktop version, if it is '''cli''', it means the type of server version</p></li><li><p>'''arm64''' represents the architecture type of rootfs</p></li><li><p>'''f930ff6ebbac1a72108a2e100762b18f''' is the MD5 hash value generated by the package names of all software packages installed by rootfs. As long as the list of software packages installed by rootfs is not modified, this value will not change. The compilation script will use this MD5 hash value to generate Determine whether rootfs needs to be recompiled</p></li></ol></li><li><p>'''jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4.list''' lists the package names of all packages installed by rootfs</p></li></ol></li></ol> test@test:~/orangepi-build$ '''ls external/cache/rootfs/''' '''jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4''' jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4.current jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4.list <ol start="10" style="list-style-type: decimal;"><li>If the required rootfs already exists under '''external/cache/rootfs''', then compiling rootfs again will directly skip the compilation process and will not restart the compilation. When compiling the image, it will also go to '''external/cache/rootfs''' to find out whether it has If there is rootfs available in the cache, use it directly, which can save a lot of download and compilation time.</li></ol> <span id="compile-linux-image"></span>== Compile Linux image == # Run the build.sh script, remember to add sudo permission test@test:~/orangepi-build$ '''sudo ./build.sh''' <ol start="2" style="list-style-type: decimal;"><li>Select '''Full OS image for flashing''',then enter</li></ol> <div class="figure"> [[File:pi3b-img395.png|576x128px|选区_242]] </div><ol start="3" style="list-style-type: decimal;"><li>Then select the model of the development board</li></ol> <div class="figure"> [[File:pi3b-img380.png|576x197px|}4$_5F06}}0R4GU8]OVO}4E]] </div><ol start="4" style="list-style-type: decimal;"><li>Then select the type of rootfs</li></ol> [[File:pi3b-img389.png|575x86px]] <ol start="5" style="list-style-type: decimal;"><li><p>Then select the type of image</p><ol style="list-style-type: lower-alpha;"><li><p>'''Image with console interface (server)''' Indicates the image of the server version, which is relatively small</p></li><li><p>'''Image with desktop environment''' Indicates a image with a desktop, which is relatively large</p></li></ol></li></ol> <div class="figure"> [[File:pi3b-img390.png|576x75px|选区_245]] </div><ol start="6" style="list-style-type: decimal;"><li>If you are compiling the image of the server version, you can also choose to compile the Standard version or the Minimal version. The pre-installed software of the Minimal version will be much less than that of the Standard version '''(please do not choose the Minimal version if there is no special requirement, because many things are not pre-installed by default. Some functions may not be available)'''</li></ol> <div class="figure"> [[File:pi3b-img391.png|569x77px|选区_397]] </div><ol start="7" style="list-style-type: decimal;"><li>If you are compiling the image of the desktop version, you also need to select the type of desktop environment. Currently, Ubuntu Jammy mainly maintains XFCE and Gnome desktops, Ubuntu Focal only maintains XFCE desktops, and Debian Bullseye mainly maintains XFCE and KDE desktops</li></ol> <div class="figure"> [[File:pi3b-img392.png|575x99px|Selection_001]] </div>[[File:pi3b-img393.png|576x74px]] You can then select additional packages that need to be installed. Please press the Enter key to skip directly here. [[File:pi3b-img394.png|575x264px]] <ol start="8" style="list-style-type: decimal;"><li><p>Then it will start to compile the Linux image. The general process of compilation is as follows</p><p>a. Initialize the compilation environment of Ubuntu PC and install the software packages required for the compilation process</p><p>b. Download the source code of u-boot and Linux kernel (if cached, only update the code)</p><p>c. Compile u-boot source code and generate u-boot deb package</p><p>d. Compile the Linux source code and generate Linux-related deb packages</p><p>e. Make the deb package of Linux firmware</p><p>f. Make the deb package of the orangepi-config tool</p><p>g. Create a deb package supported by the board</p><p>h. If you are compiling the desktop image, you will also create desktop-related deb packages</p><p>i. Check whether the rootfs has been cached, if not, recreate the rootfs, if it has been cached, directly decompress and use</p><p>j. Install the previously generated deb package into rootfs</p><p>k. Make some specific settings for different development boards and different types of images, such as pre-installing additional software packages, modifying system configuration, etc.</p><p>l. Then make an image file and format the partition, the default type is ext4</p><p>m. Then copy the configured rootfs to the mirrored partition</p><p>n. Then update initramfs</p><p>o. Finally, write the bin file of u-boot into the image through the dd command</p></li><li><p>After compiling the image, the following information will be prompted</p><ol style="list-style-type: lower-alpha;"><li>The storage path of the compiled image</li></ol></li></ol> [ o.k. ] Done building [ '''output/images/Orangepi3b_1.0.0_debian_bullseye_desktop_xfce_linux5.10.160/Orangepi3b_1.0.0_debian_bullseye_desktop_xfce_linux5.10.160.img''' ] <ol start="2" style="list-style-type: lower-alpha;"><li>Compilation time</li></ol> '''[ o.k. ] Runtime [ 19 min ]''' <ol style="list-style-type: lower-alpha;"><li>Repeat the command to compile the image, and use the following command to start compiling the image directly without selecting through the graphical interface</li></ol> [ o.k. ] Repeat Build Options [ '''sudo ./build.sh BOARD=orangepi3b BRANCH=legacy BUILD_OPT=image RELEASE=bullseye BUILD_MINIMAL=no BUILD_DESKTOP=no KERNEL_CONFIGURE=yes''' ] <span id="android-11-operating-system-instructions"></span> = '''Android 11 operating system instructions''' = <span id="supported-android-versions"></span>== Supported Android versions == {| class="wikitable"|-|'''Android version'''|'''Kernel version'''|-|'''Android 11'''|'''Linux4.19'''|} <span id="android-function-adaptation"></span>== Android Function Adaptation == {| class="wikitable"|-|'''Functions'''|'''Android 11'''|-|'''USB2.0x3'''|'''OK'''|-|'''USB3.0x1'''|'''OK'''|-|'''M.2 NVMe SSD boot'''|'''OK'''|-|'''WIFI'''|'''OK'''|-|'''Bluetooth'''|'''OK'''|-|'''GPIO(40pin)'''|'''OK'''|-|'''UART(40pin)'''|'''OK'''|-|'''SPI(40pin)'''|'''OK'''|-|'''I2C(40pin)'''|'''OK'''|-|'''PWM(40pin)'''|'''OK'''|-|'''PWM fan interface'''|'''OK'''|-|'''3pin Debugging serial port'''|'''OK'''|-|'''EMMC'''|'''OK'''|-|'''TF card boot'''|'''OK'''|-|'''HDMI video'''|'''OK'''|-|'''HDMI Audio'''|'''OK'''|-|'''LCD'''|'''OK'''|-|'''eDP display'''|'''OK'''|-|'''Gigabit network port'''|'''OK'''|-|'''Network port status indicator'''|'''OK'''|-|'''Headphone playback'''|'''OK'''|-|'''Headphone recording'''|'''OK'''|-|'''LED Light'''|'''OK'''|-|'''GPU'''|'''OK'''|-|'''NPU'''|'''OK'''|-|'''VPU'''|'''OK'''|-|'''RTC'''|'''OK'''|} <span id="wifi-connection-test-method"></span>== WIFI connection test method == # First click enter '''Setting''' [[File:pi3b-img396.png|549x228px]] <ol start="2" style="list-style-type: decimal;"><li>Then select '''Network & internet'''</li></ol> [[File:pi3b-img397.png|565x120px]] <ol start="3" style="list-style-type: decimal;"><li>Then select '''Wi-Fi'''</li></ol> [[File:pi3b-img398.png|561x99px]] <ol start="4" style="list-style-type: decimal;"><li>Then turn on the '''Wi-Fi''' switch</li></ol> [[File:pi3b-img399.png|560x167px]] <ol start="5" style="list-style-type: decimal;"><li>After turning on '''Wi-Fi''', if everything is normal, you can scan for nearby Wi-Fi hotspots</li></ol> [[File:pi3b-img400.png|561x166px]] <ol start="6" style="list-style-type: decimal;"><li>Then select the Wi-Fi you want to connect to, and the password input interface shown in the figure below will pop up</li></ol> [[File:pi3b-img401.png|553x237px]] <ol start="7" style="list-style-type: decimal;"><li>Then use the keyboard to enter the password corresponding to Wi-Fi, and then use the mouse to click the Enter button in the virtual keyboard to start connecting to Wi-Fi</li></ol> [[File:pi3b-img402.png|553x232px]] <ol start="8" style="list-style-type: decimal;"><li>After the Wi-Fi connection is successful, the display is as shown in the figure below:</li></ol> [[File:pi3b-img403.png|558x102px]] <span id="how-to-use-wi-fi-hotspot"></span>== How to use Wi-Fi hotspot == # First, please make sure that the Ethernet port is connected to the network cable and can access the Internet normally# Then select '''Settings''' [[File:pi3b-img396.png|549x228px]] <ol start="3" style="list-style-type: decimal;"><li>Then select '''Network & internet'''</li></ol> [[File:pi3b-img397.png|565x120px]] <ol start="4" style="list-style-type: decimal;"><li>Then select '''Hotspot & tethering'''</li></ol> [[File:pi3b-img404.png|549x173px]] <ol start="5" style="list-style-type: decimal;"><li>Then select '''Wi-Fi hotspot'''</li></ol> [[File:pi3b-img405.png|548x104px]] <ol start="6" style="list-style-type: decimal;"><li>Then turn on the '''Wi-Fi hotspot''', you can also see the name and password of the generated hotspot in the figure below, remember them, and use them when connecting to the hotspot (if you need to modify the name and password of the hotspot, you need to turn off the Wi-Fi first -Fi hotspot before modification)</li></ol> [[File:pi3b-img406.png|551x158px]] <ol start="7" style="list-style-type: decimal;"><li>At this time, you can take out your mobile phone. If everything is normal, you can find the WIFI hotspot with the same name ('''here AndroidAP_6953''') displayed under the '''Hotspot name''' in the above picture in the WI-FI list searched by the mobile phone. Then you can click '''AndroidAP_6953''' to connect to the hotspot, and the password can be seen under the '''Hotspot password''' in the above picture</li></ol> [[File:pi3b-img407.png|313x238px]] <ol start="8" style="list-style-type: decimal;"><li>After the connection is successful, it will be displayed as shown in the figure below (the interface of different mobile phones will be different, the specific interface is subject to the display of your mobile phone). At this point, you can open a webpage on your mobile phone to see if you can access the Internet. If you can open the webpage normally, it means that the '''WI-FI Hotspot''' of the development board can be used normally.</li></ol> [[File:pi3b-img408.png|327x165px]] <span id="bluetooth-test-method"></span>== Bluetooth test method == # First click enter '''Setting''' [[File:pi3b-img396.png|549x228px]] <ol start="2" style="list-style-type: decimal;"><li>Then select '''Connected devices'''</li></ol> [[File:pi3b-img409.png|547x115px]] <ol start="3" style="list-style-type: decimal;"><li>Then click '''Pair new device''' to turn on Bluetooth and start scanning the surrounding Bluetooth devices</li></ol> [[File:pi3b-img410.png|547x126px]] <ol start="4" style="list-style-type: decimal;"><li>The searched Bluetooth devices will be displayed under '''Available devices'''</li></ol> [[File:pi3b-img411.png|559x279px]] <ol start="5" style="list-style-type: decimal;"><li>Then click the Bluetooth device you want to connect to start pairing. When the following interface pops up, please use the mouse to select the '''Pair''' option</li></ol> [[File:pi3b-img412.png|522x212px]] <ol start="6" style="list-style-type: decimal;"><li>The test here is the configuration process of the development board and the Bluetooth of the Android mobile phone. At this time, the following confirmation interface will pop up on the mobile phone. After clicking the pairing button on the mobile phone, the pairing process will start</li></ol> [[File:pi3b-img413.png|236x273px]] <ol start="7" style="list-style-type: decimal;"><li>After the pairing is completed, you can see the paired Bluetooth device as shown in the figure below</li></ol> [[File:pi3b-img414.png|545x178px]] <ol start="8" style="list-style-type: decimal;"><li>At this time, you can use the Bluetooth of your mobile phone to send a picture to the development board. After sending, you can see the following confirmation interface in the Android system of the development board, and then click '''Accept''' to start receiving the picture sent by the mobile phone.</li></ol> [[File:pi3b-img415.png|559x238px]] <ol start="9" style="list-style-type: decimal;"><li>You can open the '''Download''' directory in the file manager to view the pictures received by the Android system Bluetooth of the development board</li></ol> [[File:pi3b-img416.png|573x97px]] <span id="how-to-use-raspberry-pi-5-inch-screen"></span>== How to use Raspberry Pi 5-inch screen == '''Please make sure that the image used is the following two versions of the image:''' '''OrangePi3B_RK3566_Android11_lcd_v1.x.x.img''' '''OrangePi3B_RK3566_Android11_spi-nvme_lcd_v1.x.x.img''' # The screen needs to be assembled first, please refer to [[\l|'''the assembly method of the Raspberry Pi 5-inch screen''']]# Connect the Type-C power supply to the board and power it on. After the system starts, you can see the screen display as shown in the figure below [[File:pi3b-img417.png|516x332px]] <span id="pin-interface-gpio-uart-spi-and-pwm-test"></span>== 40pin interface GPIO, UART, SPI and PWM test == <span id="pin-gpio-port-test-2"></span>=== 40pin GPIO port test === # First click on the wiringOP icon to open the wiringOP APP [[File:pi3b-img418.png|576x210px]] <ol start="2" style="list-style-type: decimal;"><li>The main interface of wiringOP APP is displayed as shown in the figure below, and then click the '''GPIO_TEST''' button to open the GPIO test interface</li></ol> [[File:pi3b-img419.png|575x148px]] <ol start="3" style="list-style-type: decimal;"><li>The GPIO test interface is shown in the figure below. The two rows of '''CheckBox''' buttons on the left are in one-to-one correspondence with the 40pin pins. When the '''CheckBox''' button is checked, the corresponding GPIO pin will be set to '''OUT''' mode, and the pin level will be set to high level; when the checkbox is unchecked, the GPIO pin level will be set to low level; When the '''GPIO READALL''' button is pressed, information such as wPi number, GPIO mode, and pin level can be obtained; when the '''BLINK ALL GPIO''' button is clicked, the program will control the 28 GPIO ports to continuously switch between high and low levels</li></ol> [[File:pi3b-img420.png|576x303px]] <ol start="4" style="list-style-type: decimal;"><li>Then click the '''GPIO READALL''' button, the output information is as shown in the figure below:</li></ol> [[File:pi3b-img421.png|575x323px]] <ol start="5" style="list-style-type: decimal;"><li>There are a total of 28 GPIO ports in the 40pins of the development board that can be used. The following uses pin 7—the corresponding GPIO is GPIO4_A4—the corresponding wPi serial number is 2—as an example to demonstrate how to set the high and low levels of the GPIO port. First click the '''CheckBox''' button corresponding to pin 7. When the button is selected, pin 7 will be set to high level. After setting, you can use a multimeter to measure the voltage value of the pin. If it is 3.3v, it means setting high level success</li></ol> [[File:pi3b-img422.png|241x326px]] <ol start="6" style="list-style-type: decimal;"><li>Then click the '''GPIO READALL''' button, you can see that the current pin 7 mode is '''OUT''', and the pin level is high</li></ol> [[File:pi3b-img423.png|574x301px]] <ol start="7" style="list-style-type: decimal;"><li>Click the '''CheckBox''' button in the figure below again to cancel the check status. Pin 7 will be set to low level. After setting, you can use a multimeter to measure the voltage value of the pin. If it is '''0v''', it means that the low level is set successfully.</li></ol> [[File:pi3b-img424.png|250x345px]] <ol start="8" style="list-style-type: decimal;"><li>Then click the '''GPIO READALL''' button, you can see that the current pin 7 mode is OUT, and the pin level is low</li></ol> [[File:pi3b-img425.png|576x300px]] <span id="pin-uart-test-1"></span>=== 40pin UART test === # UART7 and UART9 are enabled by default in Android. The position of the 40pin is shown in the figure below, and the corresponding device nodes are '''/dev/ttyS7''' and '''/dev/ttyS9''' respectively [[File:pi3b-img269.png|376x92px]] <ol start="2" style="list-style-type: decimal;"><li>First click on the wiringOP icon to open the wiringOP APP</li></ol> [[File:pi3b-img418.png|576x210px]] <ol start="3" style="list-style-type: decimal;"><li>The main interface of wiringOP APP is displayed as shown in the figure below, and then click the '''UART_TEST''' button to open the UART test interface</li></ol> [[File:pi3b-img426.png|575x156px]] <ol start="4" style="list-style-type: decimal;"><li>The serial port test interface of the APP is shown in the figure below</li></ol> [[File:pi3b-img427.png|576x324px]] <ol start="5" style="list-style-type: decimal;"><li>Take the test of '''UART7''' as an example below, select the '''/dev/ttyS7''' node in the selection box, enter the baud rate you want to set in the edit box, and then click the '''OPEN''' button to open the /dev/ttyS7 node. After the opening is successful, the '''OPEN''' button becomes unselectable, and the '''CLOSE''' button and '''SEND''' button become selectable</li></ol> [[File:pi3b-img428.png|574x166px]] <ol start="6" style="list-style-type: decimal;"><li>Then use Dupont wire to short the RXD and TXD pins of uart7</li></ol> [[File:pi3b-img429.png|418x103px]] <ol start="7" style="list-style-type: decimal;"><li>Then you can enter a character in the send edit box below, and click the '''SEND''' button to start sending</li></ol> [[File:pi3b-img430.png|575x161px]] <ol start="8" style="list-style-type: decimal;"><li>If everything is normal, the received string will be displayed in the receiving box</li></ol> [[File:pi3b-img431.png|574x164px]] <span id="pin-spi-test-2"></span>=== 40pin SPI test === # According to the schematic diagram of the 40pin interface, the spi available for Orange Pi 3B is spi3 [[File:pi3b-img264.png|577x193px]] <ol start="2" style="list-style-type: decimal;"><li>Here, the SPI interface is tested through the w25q64 module. First, the w25q64 device is connected to the SPI3 interface</li></ol> [[File:pi3b-img432.png|373x215px]] <ol start="3" style="list-style-type: decimal;"><li>Then click the wiringOP icon to open the wiringOP APP</li></ol> [[File:pi3b-img418.png|576x210px]] <ol start="4" style="list-style-type: decimal;"><li>The main interface of wiringOP APP is displayed as shown in the figure below, click the SPI_TEST button to open the SPI test interface</li></ol> [[File:pi3b-img433.png|574x149px]] <ol start="5" style="list-style-type: decimal;"><li>Then click the '''OPEN''' button to initialize the SPI</li></ol> [[File:pi3b-img434.png|576x241px]] <ol start="6" style="list-style-type: decimal;"><li>Then fill in the bytes that need to be sent, such as reading the ID information of w25q64, fill in the address 0x9f in data[0], and then click the '''TRANSFER''' button</li></ol> [[File:pi3b-img435.png|572x216px]] <ol start="7" style="list-style-type: decimal;"><li>Finally, the APP will display the read ID information</li></ol> [[File:pi3b-img436.png|575x296px]] <ol start="8" style="list-style-type: decimal;"><li>The MANUFACTURER ID of the w25q64 module is EFh, and the Device ID is 4017h, corresponding to the value read above (h stands for hexadecimal)</li></ol> [[File:pi3b-img437.png|374x126px]] <span id="pin-pwm-test"></span>=== 40pin PWM test === # Android enables '''PWM11''' by default, and the corresponding pin is located at 40pin as shown in the figure below [[File:pi3b-img438.png|334x107px]] <ol start="2" style="list-style-type: decimal;"><li>First click on the wiringOP icon to open the wiringOP APP</li></ol> [[File:pi3b-img418.png|576x210px]] <ol start="3" style="list-style-type: decimal;"><li>Then click the '''PWM_TEST''' button on the main interface of wiringOP to enter the PWM test interface</li></ol> [[File:pi3b-img439.png|575x150px]] <ol start="4" style="list-style-type: decimal;"><li>The base address corresponding to PWM11 is '''fe6f0030''', here pwmchip0 shows '''fdd70020.pwm''' on the right, then you need to click the drop-down option to select other pwmchips until '''febf0030.pwm''' is displayed on the right</li></ol> [[File:pi3b-img440.png|576x178px]] <ol start="5" style="list-style-type: decimal;"><li>When the drop-down option selects '''pwmchip3''', the corresponding base address of PWM11 is '''fe6f0030''' on the right</li></ol> [[File:pi3b-img441.png|574x161px]] <ol start="6" style="list-style-type: decimal;"><li>Then confirm the PWM channel, the default is channel 0, and confirm the PWM cycle, the default configuration is '''50000ns''', converted to PWM frequency is '''20KHz''', you can modify it yourself, click the '''EXPORT''' button to export '''PWM11'''</li></ol> [[File:pi3b-img442.png|575x160px]] <ol start="7" style="list-style-type: decimal;"><li>Then drag the drag bar below to change the PWM duty cycle, and then check Enable to output the PWM waveform</li></ol> [[File:pi3b-img443.png|575x167px]] <ol start="8" style="list-style-type: decimal;"><li>Then use an oscilloscope to measure the No. 32 pin in the 40pin of the development board, and you can see the following waveform</li></ol> [[File:pi3b-img444.png|460x276px]] <span id="how-to-use-adb"></span>== How to use ADB == <span id="use-network-connection-adb-debugging"></span>=== Use network connection adb debugging === '''Using the network adb does not require a data cable to connect the computer and the development board, but to communicate through the network, so first make sure that the wired or wireless network of the development board is connected, and then obtain the IP address of the development board, which will be used later.''' # Make sure that the '''service.adb.tcp.port''' of the Android system is set to port number 5555 console:/ # '''getprop | grep "adb.tcp"''' [service.adb.tcp.port]: ['''5555'''] <ol start="2" style="list-style-type: decimal;"><li>If '''service.adb.tcp.port''' is not set, you can use the following command to set the port number of network adb</li></ol> console:/ # '''setprop service.adb.tcp.port 5555''' console:/ # '''stop adbd''' console:/ # '''start adbd''' <ol start="3" style="list-style-type: decimal;"><li>Install adb tool on Ubuntu PC</li></ol> test@test:~$ '''sudo apt update''' test@test:~$ '''sudo apt install -y adb''' <ol start="4" style="list-style-type: decimal;"><li>Then connect network adb on Ubuntu PC</li></ol> test@test:~$ '''adb connect 192.168.1.xxx''' '''(The IP address needs to be changed to the IP address of the development board)''' * daemon not running; starting now at tcp:5037 * daemon started successfully connected to 192.168.1.xxx:5555 test@test:~$ '''adb devices''' List of devices attached 192.168.1.xxx:5555 devicegz
<ol start="5" style="list-style-type: decimal;"><li>Then you can log in to the android system through the adb shell on the Ubuntu PC</li></ol> test@test:~$ '''adb shell''' console:/ # <span id="appendix"></span> = '''Appendix''' = <span id="user-manual-update-history"></span>== User Manual Update History == {| class="wikitable"|-|'''Version'''|'''Date'''|'''Update Notes'''|-|v0.1|2023-07-19|initial version|} <span id="image-update-history"></span>== Image Update History == {| class="wikitable"|-| '''Date'''| '''Update Notes'''|-| 2023-07-19| Orangepi3 b_1.0.0_debian_bullseye_desktop_xfce_linux5.10.160.7z Orange pi3b_1.0.0_ubuntu_jammy_desktop_xfce_linux5.10.160.7z Orange pi3b_1.0.0_ubuntu_focal_desktop_xfce_linux5.10.160.7z OrangePi3B_RK3566_Android11_v1.0.0.tar.gz OrangePi3B_RK3566_Android11_lcd_v1.0.0.tar.gz OrangePi3B_RK3566_Android11_spiOrangePi3B_RK3566_Android11_lcd_spi-nvme_v1.0.0.tar.gz
O rangePi3B_RK3566_Android11_lcd_spi-nvme_v1.0.0.tar.gz
<p>* initial version</p>
|}