Changes

Jump to: navigation, search

Orange Pi 3B

39,945 bytes added, 09:06, 24 August 2023
Interface details of Orange Pi 3B
Orange Pi 3B brings out quite a lot of interfaces, including HDMI output, M.2 PCIe2.0x1, Gigabit Ethernet port, USB2.0, USB3.0 interface and 40pin expansion pin header, etc. It can be widely used in high-end tablet, edge computing, artificial intelligence, cloud computing, AR/VR, smart security, smart home and other fields, covering various AIoT industries.
Orange Pi 3B supports Android11, Ubuntu22.04, Ubuntu20.04, Debian11, Debian12, open source Hongmeng OpenHarmony 4.0 Beta1, Orange Pi OS (Arch), Orange Pi OS (OH) based on open source Hongmeng OpenHarmony and other operating systems.
<span id="purpose-of-orange-pi-3b"></span>
 
== Purpose of Orange Pi 3B ==
• Integrated RKNN NPU AI accelerator, 0.8Tops@INT8 performance
• Supports one-click conversion of C affeCaffe/TensorFlow/TFLite/ONNX/PyTorch/Keras/Darknet architecture models
|-
| storage
|
• Support eMMC module: 16GB/32GB/64GB/128GB/256GB
• SPI Flash: 16MB/32MB
| Wi-Fi+Bluetooth
|
Wi-Fi 5+BT 5.0,BLE(20U5622)0, BLE(20U5622)
|-
| ethernet transceiver
| Supported OS
|
Android11, Ubuntu22.04, Ubuntu20.04, Debian11, Debian12, open source Hongmeng OpenHarmony 4.0 Beta1, Orange Pi OS (Arch), Orange Pi OS (OH) based on open source Hongmeng OpenHarmony and other operating systems.
|-
|colspan=2|
<div class="figure">
[[File:pi3b-img3.png|800px]]
</div>
<div class="figure">
[[File:pi3b-img4.png|800px]]
</div>
== Interface details of Orange Pi 3B ==
[[File:pi3b-img5-1.png|800px]]
[[File:pi3b-img6.png|800px]]
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
|-
|
<big>'''The diameter of the four positioning holes is 32.0mm7mm, and the diameter of the M.2 PICE device fixing hole is 32.5mm9mm.'''</big>
|}
</ol>
<ol start="5" style="list-style-type: decimal;">
<li>Power adapter, Orange Pi 3B is recommended to use 5V/3A or 5V/4A Type-C power supply for power supply</li>
[[File:pi3b-img11-1.png]]
</ol>
<ol start="6" style="list-style-type: decimal;">
<li>'''3.3V''' USB to TTL module and DuPont line, when using serial port debugging function, need USB to TTL module and DuPont line to connect the development board and computer</li>
[[File:pi3b-img17.png|400px]] [[File:pi3b-img18.png|400px]]
</ol>
<ol start="12" style="list-style-type: decimal;">
<div class="figure">
::[[File:pi3b-img19.png|800px]]
</div>
|-
|
'''https://www.balena.io/etcher/'''
|}
</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">
|-
|
'''https://www.sdcard.org/downloads/formatter/eula_windows/SDCardFormatterv5_WinEN.zip'''
|}
</ol>
|-
|
'''http://sourceforge.net/projects/win32diskimager/files/Archive/'''
|}
</ol>
</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]]
# 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|400px]] [[File:pi3b-img62.png|400px]]
::[[File:pi3b-img63.png|800px]]
<ol start="2" style="list-style-type: decimal;">
# 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|400px]] [[File:pi3b-img62.png|400px]]
::[[File:pi3b-img63.png|800px]]
<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></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]]
</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]]
<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]]
</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]]
</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]]
</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]]
</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]]
</div></ol>
<ol start="3" style="list-style-type: lower-alpha;">
<li>Then select '''&lt;Yes&gt;'''</li></ol>
<div class="figure">
[[File:pi3b-img87.png]]
</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]]
</div></ol></li></ol>
<ol start="6" style="list-style-type: decimal;">
<li><p>Then upload the Linux image file (Debian or Ubuntu image downloaded from the official website) to the TF card. For the method of uploading the Linux image file to the development board, please refer to the description in the section of [[\lOrange Pi 3B#The method of uploading files to the Linux system of the development board|'''the method of uploading files to the development board Linux system''']].</p></li><li><p>After uploading the image to the Linux system of the development board, we enter the storage path of the image file in the command line of the Linux system of the development board. For example, I store the Linux image of the development board in the '''/home/orangepi/Desktop''' directory Download it, and then enter the '''/home/orangepi/Desktop''' directory to see the uploaded image file.</p></li></ol>{| class="wikitable" style="width:800px;" |-|
orangepi@orangepi:~$ '''cd /home/orangepi/Desktop'''
Orangepi3b_x.x.x_debian_bullseye_desktop_xfce_Linux5.10.160.img
|}
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
|-
|
<big>'''How to enter the command line of the development board Linux system?'''
'''1. For the method of using the serial port to log in to the terminal, please refer to the instructions in the section on [[Orange Pi 3B#How to enter use the command line of debugging serial port|how to use the development board Linux system?debugging serial port]].'''
# '''For the method of using the serial port to log in to the terminal, please refer to the instructions in the section on [[\l|how to use the debugging serial port]]2.'''# '''Use ssh to remotely log in to the Linux system, please refer to the instructions in the section of [[\lOrange Pi 3B#SSH remote login development board|SSH remote login to the development board]].'''# '''If HDMI, LCD and other display screens are connected, you can open a command line terminal on the desktop.'''
'''3. If HDMI, LCD and other display screens are connected, you can open a command line terminal on the desktop.'''</big>
|}
</ol>
<!-- -->
<ol start="8" style="list-style-type: decimal;">
<li>Next, let's confirm that the NVMe SSD has been recognized by the development board's Linux. If the NVMe SSD is recognized normally, use the '''sudo fdisk -l''' command to see '''nvme''' related information</li></ol>
{| class="wikitable" style="width:800px;"
|-
|
orangepi@orangepi:~/Desktop$ '''sudo fdisk -l | grep &quot;nvme0n1&quot;'''
Disk /dev/nvme0n1: 1.86 TiB, 2048408248320 bytes, 4000797360 sectors
|}
Use the '''lspci''' command to see an NVMe-related PCI device
{| class="wikitable" style="width:800px;"
|-
|
orangepi@orangepi:~/Desktop$ '''lspci'''
01:00.0 Non-Volatile memory controller: Realtek Semiconductor Co., Ltd. Device 5765 (rev 01)
|}</ol>
<ol start="9" style="list-style-type: decimal;">
<li>Then we can use the dd command to clear the NVMe SSD (optional)</li></ol>
{| class="wikitable" style="width:800px;" |-| orangepi@orangepi3b:~/Desktop$ '''sudo dd bs=1M if=/dev/zero of=/dev/nvme0n1 count=2000 status=progress'''
orangepi@orangepi3b:~/Desktop$ '''sudo sync'''
|}</ol>
<ol start="10" style="list-style-type: decimal;">
<li>Then you can use the dd command to burn the Linux image of the development board to the NVMe SSD</li></ol>
<!-- -->
<ol style="list-style-type: lower-alpha;">
<li><p>In the following command, the '''if= ''' parameter is followed by the full &gt; path where the Linux image is stored + the name of the Linux image &gt; (such as '''the name of /home/orangepi/Desktop/Linux image'''). &gt; Because we have entered the path of the Linux image above, we only &gt; need to fill in the name of the Linux image.</p></li><li><p>Please do not copy the Linux image name in the following command, &gt; but replace it with the actual image name (because the version &gt; number of the image may be updated).</p></li></ol>
{| class="wikitable" style="width:800px;"
|-
|
'''sudo dd bs=1M if=Orangepi3b_x.x.x_debian_bullseye_desktop_xfce_Linux5.10.160.img of=/dev/nvme0n1 status=progress'''
 
'''sudo''' '''sync'''
|}
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
|-
|
<big>'''<span style="color:#FF0000">Note, if you upload a .7z or .xz or .gz Linux image compressed file, please remember to decompress it before using the dd command to burn.</span>'''
'''Note, if you upload a .7z or .xz or .gz Linux image compressed file, please remember to decompress it before using the dd command to burn.'''
 
'''The detailed description of all parameters of the dd command and more usage can be viewed by executing the man dd command in the Linux system.'''
'''The detailed description of all parameters of the dd command and more usage can be viewed by executing the man dd command in the Linux system.'''</big>
|}
</ol>
</ol>
<ol start="11" style="list-style-type: decimal;">
<li><p>After successfully burning the Linux image of the development board to the NVMe SSD, you can use the poweroff command to shut down. Then please pull out the TF card, and then short press the power button to turn on, then the Linux system in SPIFlash+NVMe SSD will be started.</p></li>
<li><p>After starting the system in the NVMe SSD, use the '''df -h''' command to see the actual hard disk capacity</p>
<ol style="list-style-type: lower-alpha;">
<li>128GB NVMe SSD</li> {| class="wikitable" style="width:800px;"|-|<p>orangepi@orangepi:~$ '''df -h'''</p><span style="margin-right: 80px;">Filesystem </span><span style="margin-right: 50px;">Size </span><span style="margin-right: 30px;">Used </span><span style="margin-right: 30px;">Avail</span><span style="margin-right: 50px;">Use% Mounted on</span><br><span style="margin-right: 110px;">udev</span><span style="margin-right: 60px;">3.8G </span><span style="margin-right: 50px;">8.0K </span><span style="margin-right: 70px;">3.8G </span><span style="margin-right: 90px;">1% /dev</span><br><span style="margin-right: 100px;">tmpfs </span><span style="margin-right: 50px;">769M </span><span style="margin-right: 30px;">1.4M </span><span style="margin-right: 70px;">768M </span><span style="margin-right: 90px;">1% /run</span><br><span style="margin-right: 25px;color:#FF0000">'''/dev/nvme0n1p2'''</span><span style="margin-right: 50px;color:#FF0000">'''118G '''</span><span style="margin-right: 35px;color:#FF0000">'''5.8G '''</span><span style="margin-right: 80px;color:#FF0000">'''111G '''</span><span style="margin-right: 90px;color:#FF0000">'''5% /'''</span><br><span style="margin-right: 100px;">tmpfs </span><span style="margin-right: 60px;">3.8G </span><span style="margin-right: 50px;">0</span><span style="margin-right: 50px;">3.8G </span><span style="margin-right: 90px;">0% /dev/shm</span><br><span style="margin-right: 100px;">tmpfs </span><span style="margin-right: 60px;">5.0M </span><span style="margin-right: 50px;">4.0K </span><span style="margin-right: 50px;">5.0M </span><span style="margin-right: 90px;">1% /run/lock</span><br><span style="margin-right: 100px;">tmpfs </span><span style="margin-right: 60px;">3.8G </span><span style="margin-right: 50px;">16K </span><span style="margin-right: 50px;">3.8G </span><span style="margin-right: 90px;">1% /tmp</span><br><span style="margin-right: 25px;color:#FF0000">'''/dev/nvme0n1p1'''</span><span style="margin-right: 50px;color:#FF0000">'''256M '''</span><span style="margin-right: 35px;color:#FF0000">'''90M '''</span><span style="margin-right: 80px;color:#FF0000">'''166M '''</span><span style="margin-right: 90px;color:#FF0000">'''36% /boot'''</span><br><span style="margin-right: 65px;">/dev/zram1</span><span style="margin-right: 60px;">194M </span><span style="margin-right: 50px;">9.9M </span><span style="margin-right: 50px;">170M </span><span style="margin-right: 90px;">6% /var/log</span><br><span style="margin-right: 100px;">tmpfs </span><span style="margin-right: 60px;">769M </span><span style="margin-right: 50px;">60K </span><span style="margin-right: 50px;">769M </span><span style="margin-right: 90px;">1% /run/user/1000</span><br><span style="margin-right: 100px;">tmpfs </span><span style="margin-right: 60px;">769M </span><span style="margin-right: 50px;">48K </span><span style="margin-right: 50px;">769M </span><span style="margin-right: 90px;">1% /run/user/0</span><br>|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li>2TB NVMe SSD</li>{| class="wikitable" style="width:800px;"|-|<p>orangepi@orangepi:~$ '''df -h'''</p><span style="margin-right: 80px;">Filesystem </span><span style="margin-right: 50px;">Size </span><span style="margin-right: 30px;">Used </span><span style="margin-right: 30px;">Avail</span><span style="margin-right: 50px;">Use% Mounted on</span><br><span style="margin-right: 110px;">udev</span><span style="margin-right: 60px;">3.8G </span><span style="margin-right: 50px;">8.0K </span><span style="margin-right: 70px;">3.8G </span><span style="margin-right: 90px;">1% /dev</span><br><span style="margin-right: 100px;">tmpfs </span><span style="margin-right: 50px;">769M </span><span style="margin-right: 30px;">1.4M </span><span style="margin-right: 70px;">768M </span><span style="margin-right: 90px;">1% /run</span><br><span style="margin-right: 25px;color:#FF0000">'''/dev/nvme0n1p2'''</span><span style="margin-right: 50px;color:#FF0000">'''1.9T '''</span><span style="margin-right: 35px;color:#FF0000">'''4.1G '''</span><span style="margin-right: 80px;color:#FF0000">'''1.8T '''</span><span style="margin-right: 90px;color:#FF0000">'''1% /'''</span><br><span style="margin-right: 100px;">tmpfs </span><span style="margin-right: 60px;">3.8G </span><span style="margin-right: 50px;">0</span><span style="margin-right: 50px;">3.8G </span><span style="margin-right: 90px;">0% /dev/shm</span><br><span style="margin-right: 100px;">tmpfs </span><span style="margin-right: 60px;">5.0M </span><span style="margin-right: 50px;">4.0K </span><span style="margin-right: 50px;">5.0M </span><span style="margin-right: 90px;">1% /run/lock</span><br><span style="margin-right: 65px;">/dev/zram2</span><span style="margin-right: 60px;">3.7G </span><span style="margin-right: 50px;">76K </span><span style="margin-right: 50px;">3.5G </span><span style="margin-right: 90px;">1% /tmp</span><br><span style="margin-right: 25px;color:#FF0000">'''/dev/nvme0n1p1'''</span><span style="margin-right: 50px;color:#FF0000">'''256M '''</span><span style="margin-right: 35px;color:#FF0000">'''90M '''</span><span style="margin-right: 80px;color:#FF0000">'''166M '''</span><span style="margin-right: 90px;color:#FF0000">'''36% /boot'''</span><br><span style="margin-right: 65px;">/dev/zram1</span><span style="margin-right: 60px;">194M </span><span style="margin-right: 50px;">9.9M </span><span style="margin-right: 50px;">170M </span><span style="margin-right: 90px;">6% /var/log</span><br><span style="margin-right: 100px;">tmpfs </span><span style="margin-right: 60px;">769M </span><span style="margin-right: 50px;">60K </span><span style="margin-right: 50px;">769M </span><span style="margin-right: 90px;">1% /run/user/1000</span><br><span style="margin-right: 100px;">tmpfs </span><span style="margin-right: 60px;">769M </span><span style="margin-right: 50px;">48K </span><span style="margin-right: 50px;">769M </span><span style="margin-right: 90px;">1% /run/user/0</span><br>|}</ol>
</li></ol>
<ol start="13" style="list-style-type: decimal;">
<li>When the same system is programmed in the TF card and NVMe SSD, '''if both the TF card and NVMe SSD are inserted into the development board, then power on and start the development board, and u-boot will give priority to starting the system in the TF card.''' However, since the systems in the TF card and the NVMe SSD are exactly the same, the UUIDs of the /'''boot''' partition and the '''rootfs''' partition in the two storage devices are also the same, which may cause the partition in the NVMe SSD to be loaded when the TF card starts. Running the script below resolves this issue.</li>
{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''df sudo fix_mmc_ssd.sh'''|}{| class="wikitable" style="background-hcolor:#ffffdc;width:800px;" |-| <big>'''Exactly the same system means that the image name is exactly the same. Even if they are all Debian11 systems, the versions are different.'''</big>|}</ol><span id="how-to-use-balenaetcher-software-to-burn"></span>
Filesystem Size Used Avail Use% Mounted on=== How to use balenaEtcher software to burn ===
udev 3<ol style="list-style-type: decimal;"><li><p>First, you need to prepare an NVMe SSD.8G 8The PCIe supported by the M.0K 32 slot of the development board is PCIe2.8G 1% 0x1, and the theoretical maximum speed is 500MB/devs. PCIe3.0 and PCIe4.0 NVMe SSDs are also available, but the highest speed is only PCIe2.0x1.</p><ol style="list-style-type: lower-alpha;"><li>The M.2 2230 SSD is as follows</li>
tmpfs 769M 1[[File:pi3b-img73.4M 768M 1% png]]</runol><ol start="2" style="list-style-type: lower-alpha;"><li>The M.2 2242 SSD is as follows</li>
'''[[File:pi3b-img74.png]]</ol></devli></nvme0n1p2 118G 5ol><ol start="2" style="list-style-type: decimal;"><li>Then insert the NVMe SSD into the M.8G 111G 5% 2 PCIe interface of the development board and fix it</'''li>
tmpfs 3[[File:pi3b-img75.8G 0 png]]</ol><ol start="3.8G 0% /dev" style="list-style-type: decimal;"><li>The position of the SPI Flash on the development board is shown in the figure below, no other settings are required before starting the programming</shmli>
tmpfs 5[[File:pi3b-img76.0M png]]</ol><ol start="4" style="list-style-type: decimal;"><li><p>Burning the Linux image to SPIFlash+NVMe SSD requires a TF card, so first you need to burn the Linux image to the TF card, and then use the TF card to start the development board to enter the Linux system.0K 5For the method of burning the Linux image to the TF card, please refer to the instructions in the two sections of [[Orange Pi 3B#Method of burning Linux image to TF card based on Windows PC|'''the method of burning the Linux image to the TF card based on the Windows PC''']] and [[Orange Pi 3B#Method of burning Linux image to TF card based on Ubuntu PC|'''the method of burning the Linux image to the TF card based on the Ubuntu PC''']].0M 1% </p></li><li><p>After booting into the Linux system in the TF card, please confirm that the NVMe SSD has been properly recognized by the Linux of the development board. If the NVMe SSD is recognized normally, use the '''sudo fdisk -l''' command to see '''nvme''' related information</p></runli>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~/lockDesktop$ '''sudo fdisk -l | grep &quot;nvme0n1&quot;'''
tmpfs 3.8G 16K 3Disk /dev/nvme0n1: 1.8G 1% /tmp86 TiB, 2048408248320 bytes, 4000797360 sectors|}
Use the '''/dev/nvme0n1p1 256M 90M 166M 36% /bootlspci'''command to see an NVMe-related PCI device
{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~/dev/zram1 194M 9.9M 170M 6% /var/logDesktop$ '''lspci'''
tmpfs 769M 60K 769M 1% /run/user/100000:00.0 PCI bridge: Fuzhou Rockchip Electronics Co., Ltd Device 3566 (rev 01)
tmpfs 769M 48K 769M 1% 01:00.0 Non-Volatile memory controller: Realtek Semiconductor Co., Ltd. Device 5765 (rev 01)|}</runol><ol start="6" style="list-style-type: decimal;"><li>The balenaEtcher has been pre-installed in the Linux image, and the opening method is as follows:</user/0li>
<ol startdiv class="2figure" style="list-style-type: lower-alpha;"><li>2TB NVMe SSD</li></ol>
orangepi@orangepi[[File:~$ '''df pi3b-h'''img89.png]]
Filesystem Size Used Avail Use% Mounted </div>{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''If it is not pre-installed, for [[Orange Pi 3B#The method of downloading and installing the balenaEtcher version of arm64|how to download and install the arm64 version of balenaEtcher]], please refer to the instructions in the section onhow to download and install the arm64 version of balenaEtcher.'''</big>|}</ol><ol start="7" style="list-style-type: decimal;"><li>The interface after balenaEtcher is opened is as follows:</li>
udev 3.8G 8.0K 3.8G 1% /dev<div class="figure">
tmpfs 769M 1[[File:pi3b-img90.4M 768M 1% /runpng]]
</div></ol><ol start="8" style="list-style-type: decimal;"><li><p>The method of using balenaEtcher to burn u-boot to the SPI Flash of the development board is as follows:</p><ol style="list-style-type: lower-alpha;"><li>First click on '''/dev/nvme0n1p2 1.9T 4.1G 1.8T 1% /Flash from file'''</li>
tmpfs 3.8G 0 3.8G 0% /dev/shm<div class="figure">
tmpfs 5[[File:pi3b-img91.0M 4.0K 5.0M 1% /run/lockpng]]
</devdiv></zram2 3ol><ol start="2" style="list-style-type: lower-alpha;"><li>Then enter the '''/usr/lib/Linux-u-boot-legacy-orangepi3b_1.x.7G 76K 3x_arm64''' directory, select '''rkspi_loader.5G 1% img''', and click '''Open''' to open</tmpli>
'''/dev/nvme0n1p1 256M 90M 166M 36% /boot'''<div class="figure">
/dev/zram1 194M 15M 165M 9% /var/log[[File:pi3b-img92.png]]
tmpfs 769M 60K 769M 1% </rundiv></userol><ol start="3" style="list-style-type: lower-alpha;"><li>The interface after opening '''rkspi_loader.img''' is as follows:</1000li>
tmpfs 769M 48K 769M 1% [[File:pi3b-img93.png]]</runol><ol start="4" style="list-style-type: lower-alpha;"><li>Then click '''Select target'''</user/0li>
<ol startdiv class="13figure" 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></ol>
orangepi@orangepi[[File:~$ '''sudo fix_mmc_ssdpi3b-img94.sh'''png]]
</div></ol><ol start="5" style="list-style-type: lower-alpha;"><li>Then click '''Exactly the same system means that the image name is exactly the same. Even if they are all Debian11 systems, the versions are different.Show 2 hidden'''to open more options for storage devices</li>
<span iddiv class="how-to-use-balenaetcher-software-to-burnfigure"></span>=== How to use balenaEtcher software to burn ===[[File:pi3b-img95.png]]
<ol style="list-style-type: decimal;"><li/div><p>First, you need to prepare an NVMe SSD. The PCIe supported by the M.2 slot of the development board is PCIe2.0x1, and the theoretical maximum speed is 500MB/s. PCIe3.0 and PCIe4.0 NVMe SSDs are also available, but the highest speed is only PCIe2.0x1.</pol><ol start="6" style="list-style-type: lower-alpha;"><li>The M.2 2230 SSD is as follows<Then select the device name of SPI Flash '''/li><dev/ol>mtdblock0''', and click '''Select'''</li></ol>
[[File:pi3b-img73.png]]<div class="figure">
<ol start="2" style="list-style-type[[File: lowerpi3b-alpha;"><li>The Mimg96.2 2242 SSD is as follows</li></ol>png]]
[[File</div></ol><ol start="7" style="list-style-type:pi3blower-img74.png]]alpha;"><li>Then click '''Flash'''</li>
<ol startdiv class="2figure" style="list-style-type: decimal;"><li>Then insert the NVMe SSD into the M.2 PCIe interface of the development board and fix it</li></ol>
[[File:pi3b-img75img97.png]]
</div></ol><ol start="38" style="list-style-type: decimallower-alpha;"><li>The position of the SPI Flash on the development board is shown in the figure belowThen click '''Yes, no other settings are required before starting the programmingI'm sure'''</li></ol>
[[File:pi3b-img76.png]]<div class="figure">
<ol start="4" style="list[[File:pi3b-style-type: decimal;"><li><p>Burning the Linux image to SPIFlash+NVMe SSD requires a TF card, so first you need to burn the Linux image to the TF card, and then use the TF card to start the development board to enter the Linux systemimg98. For the method of burning the Linux image to the TF card, please refer to the instructions in the two sections of [[\l|'''the method of burning the Linux image to the TF card based on the Windows PC''']] and [[\l|'''the method of burning the Linux image to the TF card based on the Ubuntu PC'''png]].</p></li><li><p>After booting into the Linux system in the TF card, please confirm that the NVMe SSD has been properly recognized by the Linux of the development board. If the NVMe SSD is recognized normally, use the '''sudo fdisk -l''' command to see '''nvme''' related information</p></li></ol>
orangepi@orangepi</div></ol><ol start="9" style="list-style-type:~/Desktop$ lower-alpha;"><li>Then enter the password '''sudo fdisk -l | grep &quot;nvme0n1&quot;orangepi'''of the development board Linux system, and it will start burning the u-boot image into the SPI Flash</li>
Disk /dev/nvme0n1: 1.86 TiB, 2048408248320 bytes, 4000797360 sectors<div class="figure">
Use the '''lspci''' command to see an NVMe[[File:pi3b-related PCI deviceimg99.png]]
orangepi@orangepi</div></ol><ol start="10" style="list-style-type: lower-alpha;"><li>The display of the burning process is as follows:~</Desktop$ '''lspci'''li>
00:00.0 PCI bridge: Fuzhou Rockchip Electronics Co., Ltd Device 3566 (rev 01)<div class="figure">
01[[File:00.0 Nonpi3b-Volatile memory controller: Realtek Semiconductor Co., Ltdimg100. Device 5765 (rev 01)png]]
</div></ol><ol start="611" style="list-style-type: decimallower-alpha;"><li>The balenaEtcher has been pre-installed in the Linux image, and the opening method display after burning is as follows:</li></ol>
<div class="figure">
[[File:pi3b-img89img101.png]]
</div></ol>'''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.'''</li></ol><ol start="79" style="list-style-type: decimal;"><li><p>The interface after balenaEtcher method of burning the Linux system in the TF card to the NVMe SSD (this method is opened is as followsequivalent to cloning the system in the TF card to the NVMe SSD)</p><ol style="list-style-type:lower-alpha;"></li>First click '''Clone drive'''</olli>
<div class="figure">
[[File:pi3b-img90img102.png]]
</div></ol><ol start="82" style="list-style-type: decimallower-alpha;"><li><p>The method of using balenaEtcher to burn u-boot to Then select the SPI Flash device name of the development board is as follows:</p><ol style="list-style-type: lower-alpha;"><li>First click on TF card '''Flash from file/dev/mmcblk1'''</li></ol></li></ol>
<div class="figure">
[[File:pi3b-img91img103.png]]
</div></ol><ol start="23" style="list-style-type: lower-alpha;"><li>Then enter The interface after opening the '''/usr/lib/Linux-u-boot-legacy-orangepi3b_1.x.x_arm64''' directory, select '''rkspi_loader.img''', and click '''Open''' to openTF card is as follows:</li></ol>
<div class="figure">
[[File:pi3b-img92.png]] </div><ol start="3" style="list-style-type: lower-alpha;"><li>The interface after opening '''rkspi_loader.img''' is as follows:</li></ol> [[File:pi3b-img93img104.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]]
</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]]
</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]] </divol>
<ol start="7" style="list-style-type: lower-alpha;">
<li>Then click '''Flash'''</li></ol>
<div class="figure">
[[File:pi3b-img97img106.png]]
</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]]
</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]]
</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]]
</div></ol>
<ol start="11" style="list-style-type: lower-alpha;">
<li>The display after burning is as follows:</li></ol>
[[File:pi3b-img111.png]]<div /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="figurewikitable"style="width:800px;" |-| <p>orangepi@orangepi:~$ '''sudo apt-get install -y gparted'''</p>|}</li>
[[File:pi3b-img101.png]]<div class="figure">
</div><ol start="9" style="list-style-type: decimal;"><li><p>The method of burning the Linux system in the TF card to the NVMe SSD (this method is equivalent to cloning the system in the TF card to the NVMe SSD)</p><ol style="list-style-type[[File: lowerpi3b-alpha;"><li>First click '''Clone drive'''</li></ol></li></ol>img112.png]]
</div class></ol><ol start="figure2"style="list-style-type: none;"><li>b) Then enter the password orangepi of the Linux system, and click '''Authenticate'''</li>
[[File:pi3b-img102img113.png]]</ol><ol start="3" style="list-style-type: none;"><li>c) Then click '''Fix'''</li>
[[File:pi3b-img114.png]]</divol><ol start="24" style="list-style-type: lower-alphanone;"><li>d) Then select the device name of the TF card '''/dev/mmcblk1'''NVMe SSD</li></ol>
<div class="figure">
[[File:pi3b-img103img115.png]]
</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]]
</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]]
</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]]</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]]</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]]
</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]]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]]
</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:</li></ol> [[File:pi3bwww.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-img109.png]] <div class="figure"> [[File:pi3bPi-img1103B.pnghtml '''Orange Pi's data download page''']] </divp><ol start="11" style="list-style-type: lower-alpha;"/li><li>The display after burning is as follows:</li></olp[Then download the Android image from [Filehttp:pi3b//www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-img111.png]] <ol start="12" style="listand-stylesupport/Orange-type: lowerPi-alpha;"><li><p>Then you need to expand the capacity of the rootfs partition in the NVMe SSD3B.html '''Orange Pi's download page''']. The steps are as follows:</p>
<ol style="list-style-type: lower-alpha;">
<li><p>Open '''GParted''' firstAfter opening the download link of the Android image, if you can see the system does not have Gparted pre-installedfollowing two types of Android images, please use select the image in the apt command to install it</p><p>orangepi@orangepi:~$ '''sudo apt-get install -y gpartedTF card and eMMC startup image'''</p></li></ol>folder to download</li></ol>
<div class="figure">
[[File:pi3b-img112img124.png]]
</div>
</ol>
<ol start="2" style="list-style-type: lower-alpha;">
<li>Then enter <p>After entering the password orangepi of the Linux system, and click '''AuthenticateTF card and eMMC startup image'''folder, you can see the following two images, the difference between them is:</p><ol style="list-style-type: none;"><li><p>a) The first image is dedicated to HDMI display and supports 4K display. If you don't use LCD screen, please download the image without lcd</olp></li><li><p>b) If you want to use lcd screen, please choose image with lcd</p></li>
[[File:pi3b-img113img125.png]]</ol></li></ol></li></ol><ol start="5" style="list-style-type: decimal;"><li><p>Then use the decompression software to decompress the compressed package of the downloaded Android image. Among the decompressed files, the file ending with &quot;.img&quot; is the Android image file, and the size is more than 1GB</p></li><li><p>Then use the decompression software to decompress '''DriverAssitant_v5.12.zip''', and then find the '''DriverInstall.exe''' executable file in the decompressed folder and open it</p></li>
[[File:pi3b-img31.png]]</ol><ol start="37" style="list-style-type: decimal;" ><li><p>After opening '''DriverInstall.exe''', the steps to install the Rockchip driver are as follows</p><ol style="list-style-type: lower-alpha;"><li>Then click Click the &quot;'''FixDriver Installation'''&quot; button</li></ol>
[[File:pi3b-img114img32.png]]</ol><ol start="2" style="list-style-type: lower-alpha;"><li>After waiting for a period of time, a pop-up window will prompt &quot;'''The driver is installed successfully'''&quot;, and then click the &quot;'''OK'''&quot; button.</li>
[[File:pi3b-img33.png]]</ol></li></ol><ol start="48" style="list-style-type: lower-alphadecimal;"><li>Then select NVMe SSDdecompress '''RKDevTool_Release_v3.15.zip''', this software does not need to be installed, just find '''RKDevTool''' in the decompressed folder and open it</li></ol>
[[File:pi3b-img34.png]]<div class/ol><ol start="9" style="figurelist-style-type: decimal;"><li>After opening the '''RKDevTool''' burning tool, because the computer has not connected to the development board through the USB2.0 male-to-male data cable at this time, the lower left corner will prompt &quot;'''No device found'''&quot;</li>
[[File:pi3b-img115img35.png]] </divol><ol start="510" style="list-style-type: decimal;"><li><p>Then start burning the Android image to the TF card</p><ol style="list-style-type: lower-alpha;"><li>First, connect the development board to the Windows computer through the USB2.0 male-to-male data cable. The display position of the USB2.0 programming interface after selecting NVMe SSD of the development board is as follows:shown in the figure below</li></ol>
<div class="figure">
[[File:pi3b-img116img36.png]]
</div></ol><ol start="62" style="list-style-type: lower-alpha;"><li><p>Then select make sure that the development board is not inserted into the TF card and not connected to the '''power supply</devp></nvme0n1p2''' partitionli><li><p>Then press and hold the MaskROM button on the development board, click the right position of the MaskROM button again, and then select '''Resize/Move'''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-img117img38.png]]</ol><ol start="5" style="list-style-type: lower-alpha;"><li>If the previous steps are successful, the development board will enter the '''MASKROM''' mode at this time, and the interface of the burning tool will prompt &quot;'''found a MASKROM device'''&quot;</li>
[[File:pi3b-img39.png]]</divol><ol start="76" style="list-style-type: lower-alpha;"><li><p>Then drag insert the capacity to TF card into the maximum at development board</p></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><li><p>Then select '''rk3566_MiniLoaderAll.bin''' in the '''MiniLoader''' folder downloaded earlier, and click to open</p></olli>
[[File:pi3b-img118.png]]<div class="figure">
<ol start="8" style="list-style-type[[File: lowerpi3b-alpha;"><li>Then click '''Resize/Move'''</li></ol>img68.png]]
</div></ol><ol start="10" style="list-style-type: lower-alpha;"><li><p>Then click '''download'''</p><p>[[File:pi3b-img128.png]]</p></li><li><p>The display after downloading '''rk3566_MiniLoaderAll.bin''' is shown in the figure below</p><p>[[File:pi3b-img119img129.png]]</p></li><li><p>Then select the storage device as '''SD''', and then click '''Switch Storage'''</p><div class="figure">
<ol style="list-style-type[[File: lowerpi3b-roman;"><li>Then click the green '''√''' in the position below</li></ol>img130.png]]
[[File:pi3b-img120.png]]</div></li><li><p>The display of successful switching is shown in the figure below</p></li>
<ol startdiv class="10figure" style="list-style-type: lower-alpha;"><li>Then click '''Apply'''</li></ol>
[[File:pi3b-img121img131.png]]
</div></ol><ol start="1114" style="list-style-type: lower-alpha;"><li>Then click the &quot;'''CloseUpgrade Firmware''' to close&quot; column of the burning tool</li></ol>
[[File:pi3b-img122img132.png]]</ol><ol start="15" style="list-style-type: lower-alpha;"><li>Then click the &quot;'''Firmware'''&quot; button to select the path of the Android image that needs to be burned</li>
[[File:pi3b-img133.png]]</ol><ol start="1316" style="list-style-type: lower-alpha;"><li>At this pointFinally, you can use click the &quot;'''sudo poweroffUpgrade''' command &quot; button to shut down. Then please pull out the TF cardstart burning, and then short press the power button to turn onlog during the burning process is shown in the figure below. After burning is completed, then the Linux Android system in SPIFlash+NVMe SSD will be startedstart automatically.</li></ol>
<!-- --><ol startdiv class="10figure" style="list-style-type: decimal;"><li><p>Step '''9)''' is to clone the system in the TF card to the NMVe SSD. We can also directly burn the Linux image file to the NVMe SSD. Here are the steps:</p><ol style="list-style-type: lower-alpha;"><li><p>Upload the Linux image file to the Linux system of the development board</p></li><li><p>Then use balenaEtcher to burn</p></li></ol></li></ol>
<div class="figure">[[File:pi3b-img134.png]]
[[File:pi3b</div></ol></li></ol><span id="how-img123.png]]to-use-sddisktool-to-burn-android-image-to-tf-card"></span>
</div><ol start="3" style="list-style-type: lower-alpha;"><li>'''After using this method = How to use SDDiskTool to burn the Android image, there is no need to manually expand the capacity, and it will automatically expand the capacity at the first startup.'''</li></ol>TF card ===
<span idol style="howlist-tostyle-burn-android-image-to-tf-cardtype: decimal;"></span> == How to burn Android image to TF card == <span id="method-of-burning-android-image-to-tf-card-through-usb2.0-burning-port"li></spanp>=== Method of burning Android image to TF card through USB2.0 burning port === # First prepare a TF card with 8GB or larger capacity. The transmission speed of the TF card must be class10 or above. It is recommended to use a TF card of SanDisk and other brands</p></li># You also need to prepare a good quality USB2.0 male-to-male data cable <div class="figure"li><p[[File:pi3b-img16.png]] Then use the card reader to insert the TF card into the computer</divp><ol start="3" style="list-style-type: decimal;"/li><li><p>Then download Rockchip driver '''DriverAssitant_v5.12.zip''' and burning the SDDiskTool programming tool '''RKDevTool_Release_v3.15.zip''' from the [http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-3B.html '''Orange Pi's data download page'''], '''<span style="color:#FF0000">please make sure that the version of the SDDiskTool tool is the latest v1.72</span>.'''</p></li><li><p>Then download the Android Android11 image from the [http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-3B.html '''Orange Pi's data download page'''].</p>
<ol style="list-style-type: lower-alpha;">
<li>After opening the download link of the Android image, you can see the following two types of Android images, please select the image in the '''TF card and eMMC startup image''' folder to download</li></ol></li></ol>
<div class="figure">
[[File:pi3b-img124.png]]
</div></ol>
<ol start="2" style="list-style-type: lower-alpha;">
<li><p>After entering the '''TF card and eMMC startup boot image''' folder, you can see the following two images, the difference between them is:</pli> <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-img125.png]]
</ol></li></ol></li></ol>
<ol start="5" style="list-style-type: decimal;">
<li><p>Then use the decompression software to decompress the compressed package of the downloaded Android image. Among the decompressed files, the file ending with &quot;.img&quot; is the Android image file, and the size is more than 1GB</p></li><li><p>Then use the decompression software to decompress '''DriverAssitant_v5SDDiskTool_v1.1272.zip''', and then this software does not need to be installed, just find the '''DriverInstallSD_Firmware_Tool.exe''' executable file in the decompressed folder and open it</p></li></ol> [[File:pi3b-img31.png]]
[[File:pi3b-img135.png]]
</ol>
<ol start="7" style="list-style-type: decimal;">
<li><p>After opening '''DriverInstall.exeSDDiskTool''', if the steps to install TF card is recognized normally, the Rockchip driver are as follows</p><ol style="list-style-type: lower-alpha;"><li>Click inserted disk device will be displayed in the &quot;'''Driver InstallationSelect Removable Disk Device'''&quot; button</li></ol></li></ol> [[File:pi3b-img32column.png]] '''<ol start="2" span style="list-style-typecolor: lower-alpha;#FF0000">Please make sure that the displayed disk device is consistent with the drive letter of the TF card you want to burn<li/span>After waiting for a period of time, a pop-up window will prompt &quot;'''The driver , if there is installed successfully'''&quot;no display, and then click you can try to unplug the &quot;'''OK'''&quot; button.TF card</li></ol> [[File:pi3b-img33.png]]
[[File:pi3b-img136.png]]
</ol>
<ol start="8" style="list-style-type: decimal;">
<li>Then decompress After confirming the drive letter, you can format the TF card first, click the '''restore disk button'RKDevTool_Release_v3.15.zip''in '''SDDiskTool, this software does not need to be installed, just find '''RKDevToolor use the '''SD Card Formatter''' in mentioned above to format the decompressed folder and open itTF card</li></ol> [[File:pi3b-img34.png]]
[[File:pi3b-img137.png]]
</ol>
<ol start="9" style="list-style-type: decimal;">
<li>After opening the '''RKDevTool''' burning tool, because <p>Then start to write the computer has not connected Android image to the development board through the USB2.0 maleTF card</p><ol style="list-tostyle-male data cable at this time, the type: lower left corner will prompt -alpha;"><li><p>First check &quot;SD Boot&quot;'''No device found'''in &quot;Select Function Mode&quot;</p></li><li><p>Then select the path of the Android image in the &quot;Select to upgrade firmware&quot; column</p></olli[[File:pi3b-img35.png]]<li><p>Finally click the &quot;Start Create&quot; button to start burning the Android image to the TF card</p></li>
[[File:pi3b-img138.png]]
</ol>
</li></ol>
<ol start="10" style="list-style-type: decimal;">
<li><p>Then start After burning , you can exit the Android image to SDDiskTool software, and then you can pull out the TF card</p><ol style="list-style-type: lower-alpha;"><li>First, connect the development board to from the Windows computer through the USB2.0 male-to-male data cable. The position of the USB2.0 programming interface of and insert it into the development board is shown in the figure belowto start</li></ol></li></ol>
[[File:pi3b-img139.png]]<div class/ol><span id="figurehow-to-burn-android-image-to-emmc"></span>
[[File:pi3b-img36.png]]== How to burn Android image to eMMC ==
</div><ol start{| class="2wikitable" style="listbackground-style-typecolor:#ffffdc;width: lower-alpha800px;">|-| <libig><p>Then make sure that '''Note, after burning the development board is not inserted image into eMMC, if the TF card and not connected to test finds that it cannot be started, please clear the power supply</p></li><li><p>Then press SPIFlash and hold try again. For the MaskROM button on the development boardmethod of clearing SPIFlash, please refer to [[Orange Pi 3B#Using RKDevTool to clear SPIFlash|the position method of the MaskROM button on the development board is shown in the figure below:using RKDevTool to clear SPIFlash]].'''</p></li></olbig>|}
[[File:pi3b<span id="method-img37of-burning-android-image-into-emmc-through-usb2.0-burning-port"></span>=== Method of burning Android image into eMMC through USB2.png]]0 burning port ===
<ol start{| class="4wikitable" style="listbackground-style-typecolor:#ffffdc;width: lower-alpha800px;">|-| <libig>Then connect the power supply of the Type-C interface to '''Note that all the development board, and power following operations are performed ona Windows computer.'''</li></olbig>|}
[[File<ol style="list-style-type:pi3b-img38decimal;"><li><p>The development board reserves an eMMC expansion interface. Before programming the system to eMMC, you first need to purchase an eMMC module that matches the eMMC interface of the development board. Then install the eMMC module to the development board.png]]</p><p>The eMMC module and the method of plugging into the development board are as follows:</p></li>
<ol start="5" style="list-style[[File:pi3b-typeimg61.png|400px]] [[File: lowerpi3b-alpha;"><li>If the previous steps are successful, the development board will enter the '''MASKROM''' mode at this time, and the interface of the burning tool will prompt &quot;'''found a MASKROM device'''&quot;</li></ol>img62.png|400px]]
[[File:pi3b-img39img63.png|800px]]</ol><ol start="62" style="list-style-type: lower-alphadecimal;"><li><p>Then insert the TF card into the development board</p></li><li><p>Then please select '''advanced features'''</p><p>[[File:pi3b-img126You also need to prepare a good quality USB2.png]]</p></li><li><p>Then click the position shown in the figure below</p><p>[[File:pi3b0 male-img127.png]]</p></li><li><p>Then select '''rk3566_MiniLoaderAll.bin''' in the '''MiniLoader''' folder downloaded earlier, and click to open</p>-male data cable</li></ol>
<div class="figure">
[[File:pi3b-img68img16.png]] </div></ol><ol start="3" style="list-style-type: decimal;"><li><p>Then download Rockchip driver '''DriverAssitant_v5.12.zip''' and burning tool '''RKDevTool_Release_v3.15.zip''' from [http://www.orangepi.org/html/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>
</div>
<ol start="10" style="list-style-type: lower-alpha;">
<li><p>Then click '''download'''</p>
<p>[[File:pi3b-img128.png]]</p></li>
<li><p>The display after downloading '''rk3566_MiniLoaderAll.bin''' is shown in the figure below</p>
<p>[[File:pi3b-img129.png]]</p></li>
<li><p>Then select the storage device as '''SD''', and then click '''Switch Storage'''</p>
<div class="figure">
[[File:pi3b-img130img124.png]]
</div></ol><ol start="2" style="list-style-type: lower-alpha;"><li><p>After entering the '''TF card and eMMC startup image folder''', you can see the following two images, the difference between them is</p><ol style="list-style-type: none;"><li><p>a) The first image is dedicated to HDMI display and supports 4K display of successful switching is shown in . If you don't use LCD screen, please download the figure belowimage without lcd</p></li><li><p>b) If you want to use lcd screen, please choose image with lcd</olp></li>
[[File:pi3b-img125.png]]<div class/ol></li></ol></li></ol><ol start="5" style="figurelist-style-type: decimal;"><li><p>Then use decompression software to decompress the compressed package of the downloaded Android image. Among the decompressed files, the file ending with &quot;.img&quot; is the Android image file, and the size is more than 1GB</p></li><li><p>Then use decompression software to decompress '''DriverAssitant_v5.12.zip''', and then find the '''DriverInstall.exe''' executable file in the decompressed folder and open it</p></li>
[[File:pi3b-img131img31.png]]</ol><ol start="7" style="list-style-type: decimal;"><li><p>After opening '''DriverInstall.exe''', the steps to install the Rockchip driver are as follows</p><ol style="list-style-type: lower-alpha;"><li>Click the &quot;'''Driver Installation'''&quot; button</li>
[[File:pi3b-img32.png]]</divol><ol start="142" style="list-style-type: lower-alpha;"><li>Then After waiting for a period of time, a pop-up window will prompt &quot;'''driver installed successfully'''&quot;, and then click the &quot;'''Upgrade FirmwareOK'''&quot; column of the burning toolbutton.</li></ol>
[[File:pi3b-img132img33.png]]</ol></li></ol><ol start="8" style="list-style-type: decimal;"><li>Then decompress '''RKDevTool_Release_v3.15.zip''', this software does not need to be installed, just find '''RKDevTool''' in the decompressed folder and open it</li>
[[File:pi3b-img34.png]]</ol><ol start="159" style="list-style-type: lower-alphadecimal;"><li>Then click After opening the '''RKDevTool''' burning tool, because the computer is not connected to the development board through the USB2.0 male-to-male data cable at this time, the lower left corner will prompt &quot;'''FirmwareNo device found'''&quot; button to select the path of the Android image that needs to be burned</li></ol>
[[File:pi3b-img133img35.png]]</ol><ol start="1610" style=" list-style-type: decimal;"><li><p>Then start burning the Android image into eMMC</p><ol style="list-style-type: lower-alpha;"><li>FinallyFirst, click connect the &quot;'''Upgrade'''&quot; button development board to start burning, and the log during Windows computer through the USB2.0 male-to-male data cable. The position of the burning process USB2.0 programming interface of the development board is shown in the figure below. After burning is completed, the Android system will start automatically.</li></ol>
<div class="figure">
[[File:pi3b-img134img36.png]]
</div></ol><span idol start="how2" style="list-tostyle-use-sddisktooltype: lower-alpha;"><li><p>Then make sure that the development board is not inserted into the TF card and not connected to-burn-android-image-to-tf-card"the power supply</p></spanli>=== How to use SDDiskTool to burn Android image to TF card ===<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 style="list-style-type: decimal;"><li><p>First prepare a TF card with 8GB or larger capacity. The transmission speed of the TF card must be class10 or above. It is recommended to use a TF card of SanDisk and other brands</p></li><li><p>Then use the card reader to insert the TF card into the computer</p></li><li><p>Then download the SDDiskTool programming tool from the [http[File://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orangepi3b-Pi-3Bimg37.html '''Orange Pi data download page'''png]], '''please make sure that the version of the SDDiskTool tool is the latest v1.72.'''</p></li><li><p>Then download '''the Android11 image from the Orange Pi download''' '''page'''</pol><ol start="4" style="list-style-type: lower-alpha;"><li>After opening Then connect the download link power supply of the Android image, you can see Type-C interface to the following two types of Android images, please select the image in the '''TF card and eMMC startup image''' folder to download</li></ol>development board</li></ol>
[[File:pi3b-img38.png]]<blockquote/ol><div classol start="5" style="list-style-type: lower-alpha;"><li><p>If the previous steps are successful, the development board will enter the '''MASKROM''' mode at this time, and the interface of the burning tool will prompt &quot;'''found a MASKROM device'''&quot;</p>[[File:pi3b-img39.png]]</li><li><p>Then please select '''Advanced Features'''</p><p>[[File:pi3b-img126.png]]</p></li><li><p>Then click the position shown in the figure"below</p><p>[[File:pi3b-img127.png]]</p></li></ol>
[[File<ol start="8" style="list-style-type:pi3blower-img124alpha;"><li>Select '''rk3566_MiniLoaderAll.bin''' in the MiniLoader folder downloaded earlier, and click to open.png]]</li>
</div></blockquote><ol startclass="2figure" style="list-style-type: lower-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>
<!-- --><ol style="list-style-type[[File: lowerpi3b-alpha;"><li><p>The image without lcd is specially used for HDMI display and supports 4K displayimg68. If you do not use the 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>png]]
</div></ol><ol start="9" style="list-style-type: lower-alpha;"><li><p>Then click '''Download'''</p><p>[[File:pi3b-img128.png]]</p></li><li><p>The display after downloading '''MiniLoaderAll.bin''' is shown in the figure below</p><p>[[File:pi3b-img140.png]]</p></li><li><p>Then select the storage device as '''EMMC''', and then click Switch '''Storage'''</p><p>[[File:pi3b-img125img141.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="513" style="list-style-type: decimallower-alpha;"><li><p>Then use decompression software to decompress click the compressed package of the downloaded Android image. Among the decompressed files, the file ending with &quot;.img&quot; is the Android image file, and the size is more than 1GB</p></li><li><p>Then use decompression software to decompress '''SDDiskTool_v1.72.zipUpgrade Firmware''', this software does not need to be installed, just find '''SD_Firmware_Tool.exe''' in &quot; column of the decompressed folder and open it</p>burning tool</li></ol>
[[File:pi3b-img135img132.png]]</ol><ol start="14" style="list-style-type: lower-alpha;"><li>Then click the &quot;'''Firmware'''&quot; button to select the path of the Android image that needs to be burned</li>
[[File:pi3b-img133.png]]</ol><ol start="715" style="list-style-type: decimallower-alpha;"><li>After opening '''SDDiskTool''', if the TF card is recognized normallyFinally, the inserted disk device will be displayed in click the &quot;'''Select Removable Disk DeviceUpgrade'''&quot; column. P'''lease make sure that button to start burning, and the log during the displayed disk device burning process is consistent with shown in the drive letter of the TF card you want to burn''', if there figure below. After burning is no displaycompleted, you can try to unplug the TF cardAndroid system will start automatically.</li></ol>
[[File:pi3b-img136.png]]<div class="figure">
<ol start="8" 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>img134.png]]
[[File:pi3b-img137.png]] <ol start="9" style="list-style-type: decimal;"><li><p>Then start to write the Android image to the TF card</p><ol style="list-style-type: lower-alpha;"><li><p>First check &quot;SD Boot&quot; in &quot;Select Function Mode&quot;</p></li><li><p>Then select the path of the Android image in the &quot;Select to upgrade firmware&quot; column</p></li><li><p>Finally click the &quot;Start Create&quot; button to start burning the Android image to the TF card</p></lidiv></ol>
</li></ol>
<span id="how-to-burn-android11-image-into-emmc-via-tf-card"></span>
[[File:pi3b-img138.png]]=== How to burn Android11 image into eMMC via TF card ===
<ol start{| class="10wikitable" style="listbackground-style-typecolor:#ffffdc;width: decimal800px;">|-| <libig>After burning, you can exit the SDDiskTool software, and then you can pull out the TF card from '''Note that all the following operations are performed on a Windows computer and insert it into the development board to start.'''</li></olbig>|}
[[File:pi3b-img139.png]] <span id="how-to-burn-android-image-to-emmc"></span>== How to burn Android image to eMMC == '''Note, after burning the image into eMMC, if the test finds that it cannot be started, please clear the SPIFlash and try again. For the method of clearing SPIFlash, please refer to''' [[\l|the method of using RKDevTool to clear SPIFlash]]'''.''' <span id="method-of-burning-android-image-into-emmc-through-usb2.0-burning-port"></span>=== Method of burning Android image into eMMC through USB2.0 burning port === '''Note that all the following operations are performed on a Windows computer.''' <ol style="list-style-type: decimal;"><li><p># The development board reserves an eMMC expansion interface. Before programming the system to eMMC, you first need to purchase an eMMC module that matches the eMMC interface of the development board. Then install the eMMC module to the development board.</p><p>The eMMC module and the method of plugging into the development board are as follows:</p></li></ol>
::[[File:pi3b-img61.png|400px]] [[File:pi3b-img62.png|400px]]
::[[File:pi3b-img63.png|800px]]
<ol start="2" style="list-style-type: decimal;">
<li><p>You also need to prepare a good quality USB2TF card with 8GB or larger capacity.0 male-The transmission speed of the TF card must be class10 or above. It is recommended to-male data cableuse a TF card of SanDisk and other brands</lip></olli> <div class="figure"li><p[[File:pi3b-img16.png]] Then use the card reader to insert the TF card into the computer</divp><ol start="3" style="list-style-type: decimal;"/li><li><p>Then download Rockchip driver '''DriverAssitant_v5.12.zip''' and burning the SDDiskTool programming tool '''RKDevTool_Release_v3.15.zip''' from the [http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-3B.html '''Orange Pi's data download page'''], '''<span style="color:#FF0000">please make sure that the version of the SDDiskTool tool is the latest v1.72</span>'''</p></li><li><p>Then download the Android image from '''[http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-3B.html '''Orange Pi's download page].''']</p>
<ol style="list-style-type: lower-alpha;">
<li>After opening the download link of the Android image, you can see the following two types of Android images, please select the image in the '''the TF card and eMMC startup image folder''' to download</li></ol></li></ol>
<div class="figure">
[[File:pi3b-img124.png]]
</div></ol>
<ol start="2" style="list-style-type: lower-alpha;">
<li><p>After entering the '''the TF card and eMMC startup boot image folder''', you can see the following two tow images, the difference between them is:</p><ol style="list-style-type: lower-alphanone;"><li><p>a) The first image is dedicated to HDMI display and supports 4K display. If you don’t don't use LCD screen, please download the image without lcd</p></li><li><p>b) If you want to use lcd screen, please choose image with lcd</p></li></ol></li></ol>
[[File:pi3b-img125.png]]
</ol>
</li></ol>
</li></ol>
<ol start="6" style="list-style-type: decimal;">
<li><p>Then use the decompression software to decompress the compressed package of the downloaded Android image. Among the decompressed files, the file ending with &quot;.img&quot; is the Android image file, and the size is more than 1GB</p></li>
<li><p>Then use decompression software to decompress '''SDDiskTool_v1.72.zip''', this software does not need to be installed, just find '''SD_Firmware_Tool.exe''' in the decompressed folder and open it</p></li>
[[File:pi3b-img135.png]]</ol><ol start="58" style="list-style-type: decimal;"><li><p>Then use decompression software to decompress After opening '''SDDiskTool''', if the compressed package of TF card is recognized normally, the downloaded Android image. Among the decompressed files, inserted disk device will be displayed in the file ending with &quot;.img'''Select Removable Disk Device'''&quot; column. '''<span style="color:#FF0000">Please make sure that the displayed disk device is consistent with the Android image file, and drive letter of the size is more than 1GBTF card you want to burn</pspan></li><li><p>Then use decompression software to decompress '''DriverAssitant_v5.12.zip''', and then find if there is no display, you can try to unplug the '''DriverInstallTF card.exe''' executable file in the decompressed folder and open it</p></li></ol>
[[File:pi3b-img31img136.png]]</ol><ol start="9" style="list-style-type: decimal;"><li>After confirming the drive letter, you can format the TF card first, click the '''restore disk button''' in SDDiskTool, or use the '''SD Card Formatter''' mentioned above to format the TF card</li>
[[File:pi3b-img137.png]]</ol><ol start="710" style="list-style-type: decimal;"><li><p>After opening '''DriverInstall.exe''', Then start to write the steps to install Android image into the Rockchip driver are as followsTF card</p>
<ol style="list-style-type: lower-alpha;">
<li>Click <p>First confirm that the displayed drive letter is the drive letter corresponding to the TF card under &quot;'''Select Removable Disk Device'''&quot;</p></li><li><p>Then select &quot;'''Firmware Upgrade'''&quot; in &quot;'''Driver InstallationSelect Function Mode'''&quot;</p></li><li><p>Then select the path of the Android firmware in the &quot;'''Select Upgrade Firmware'''&quot; column</p></li><li><p>Finally click the &quot;'''Start Create'''&quot; buttonto start burning</p></li> [[File:pi3b-img143.png]]</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-img32img144.png]]</ol><ol start="12" style="list-style-type: decimal;"><li><p>Then pull out the TF card from the computer and insert it into the development board. After the development board is powered on, it will automatically start burning the Android image in the TF card to the eMMC of the development board.</p></li><li><p>If the development board is connected to an HDMI display, you can also see the progress bar of burning the Android image to eMMC from the HDMI display</p></li>
[[File:pi3b-img145.png]]</ol><ol start="214" style="list-style-type: lower-alphadecimal;"><li>After waiting for a period 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, a pop-up window will prompt &quot;'''driver installed successfully'''&quot;the TF card can be pulled out, and then click the &quot;'''OK'''&quot; buttonAndroid system in the eMMC will start.</li></ol>
[[File:pi3b-img33img146.png]]</ol><span id="how-to-burn-android-image-to-spiflashnvme-ssd"></span>
<ol start="8" style="list-style-type: decimal;"><li>Then decompress '''RKDevTool_Release_v3.15.zip''', this software does not need How to be installed, just find '''RKDevTool''' in the decompressed folder and open it</li></ol>burn Android image to SPIFlash+NVMe SSD ==
[[File{| class="wikitable" style="background-color:#ffffdc;width:pi3b800px;" |-img34| <big>'''Note that all the following operations are performed on a Windows computer.png]]'''</big>|}
<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 &quot;'''No device found'''&quot;</li></ol> [[File:pi3b-img35.png]] <ol start="10" style="list-style-type: decimal;"><li><p>Then start burning the Android image into eMMCFirst, you need to prepare an NVMe SSD solid state drive</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 USB2M.0 programming interface of the development board 2 2230 SSD is shown in the figure belowas follows</li></ol></li></ol>
<div class="figure"> [[File:pi3b-img36img73.png]]</ol><ol start="2" style="list-style-type: lower-alpha;"><li>The M.2 2242 SSD is as follows</li>
[[File:pi3b-img74.png]]</divol></li></ol><ol start="2" style="list-style-type: lower-alphadecimal;"><li><p>Then make sure that insert the development board is not inserted NVMe SSD 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 M.2 PCIe interface of the MaskROM button on the development board is shown in the figure below:</p>and fix it</li></ol>
[[File:pi3b-img37img75.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="4" style="list-style-type: lower-alphadecimal;"><li>Then connect the power supply of the TypeYou also need to prepare a good quality USB2.0 male-C interface to the development board-male data cable</li></ol>
[[File:pi3b-img38.png]]<div class="figure">
<ol start="5" style="list-style-type: lower-alpha;"><li><p>If the previous steps are successful, the development board will enter the '''MASKROM''' mode at this time, and the interface of the burning tool will prompt &quot;'''found a MASKROM device'''&quot;[[File:pi3b-img39.png]]</p></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-img127img16.png]]</p></li></ol>
<!-- /div></ol><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</p>
<ol style="list-style-type: lower-alpha;">
<li>Select 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'''rk3566_MiniLoaderAll.binPIFlash-NVME SSD boot image folder''' in the MiniLoader folder downloaded earlier, and click to open.download</li></ol>
<div class="figure">
[[File:pi3b-img68img124.png]]
</div>
</ol>
<ol start="2" style="list-style-type: lower-alpha;">
<li><p>Then click After entering the '''DownloadSPIFlash-NVME SSD boot image folder''', you can see the following two images. Their differences are:</p><p>[[Fileol style="list-style-type:pi3b-img128.png]]</p></linone;"><li><p>a) The image without lcd is specially used for HDMI display and supports 4K display after downloading '''MiniLoaderAll.bin''' is shown in If you do not use the LCD screen, please download the figure below</p><p>[[File:pi3b-img140.png]]image without lcd</p></li><li><p>Then select the storage device as '''EMMC'''b) If you want to use LCD screen, and then click Switch '''Storage'''</p><p>[[File:pi3b-img141.png]]please choose image with lcd</p></li><li><p>The display of successful switching is shown in the figure below</p></li></ol>
[[File:pi3b-img142img147.png]]</ol></li></ol></li></ol><ol start="7" style="list-style-type: decimal;"><li>Then use the decompression software to decompress '''DriverAssitant_v5.12.zip''', and then find the '''DriverInstall.exe''' executable file in the decompressed folder and open it</li>
[[File:pi3b-img31.png]]</ol><ol start="8" style="list-style-type: decimal;"><li><p>After opening '''DriverInstall.exe''', the steps to install the Rockchip driver are as follows</p><ol style="list-style-type: lower-alpha;"><li>Then click Click the &quot;'''Upgrade FirmwareDriver Installation'''&quot; column of the burning toolbutton</li></ol> [[File:pi3b-img132img32.png]]</ol><ol start="2" style="list-style-type: lower-alpha;"><li>After waiting for a period of time, a pop-up window will prompt &quot;'''driver installed successfully'''&quot;, and then click the &quot;'''OK'''&quot; button.</li>
[[File:pi3b-img33.png]]</ol ></li></ol><ol start="9" style="list-style-type: lower-romandecimal;"><li>Then click the &quot;decompress '''FirmwareRKDevTool_Release_v3.15.zip'''&quot; button , this software does not need to select be installed, just find '''RKDevTool''' in the path of the Android image that needs to be burneddecompressed folder and open it</li></ol>
[[File:pi3b-img133img34.png]]</ol><ol start="10" style="list-style-type: decimal;"><li>After opening the '''RKDevTool''' burning tool, because the computer is not connected to the development board through the USB2.0 male-to-male data cable at this time, the lower left corner will prompt &quot;'''No device found'''&quot;</li>
[[File:pi3b-img35.png]]</ol><ol start="1011" style="list-style-type: decimal;" ><li><p>Then start burning the Android image to SPIFlash+NVMe SSD</p><ol style="list-style-type: lower-alpha;"><li>FinallyFirst, click connect the development board to the Windows computer through the &quot;'''Upgrade'''&quot; button USB2.0 male-to start burning, and -male data cable. The position of the log during USB2.0 programming port of the burning process development board is shown in the figure below. After burning is completed, the Android system will start automatically.</li></ol>
<div class="figure">
[[File:pi3b-img134img36.png]]
</div></ol><span idol start="2" style="howlist-tostyle-burn-android11-imagetype: lower-alpha;"><li><p>Make sure that the development board is not inserted into-emmc-via-tf-the TF card"and not connected to the power supply</p></spanli>=== How to burn Android11 image into eMMC via TF card ===<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>
'''Note that all [[File:pi3b-img37.png]]</ol><ol start="4" style="list-style-type: lower-alpha;"><li>Then connect the following operations are performed power supply of the Type-C interface to the development board, and power on a Windows computer.''', and then release the MaskROM button</li>
# The development board reserves an eMMC expansion interface[[File:pi3b-img38. Before programming png]]</ol><ol start="5" style="list-style-type: lower-alpha;"><li>If the system to eMMCprevious steps are successful, you first need to purchase an eMMC module that matches the eMMC interface of the development board. Then install will enter the eMMC module to the development board. The eMMC module '''MASKROM''' mode at this time, and the method interface of plugging into the development board are as follows:burning tool will prompt &quot;'''found a MASKROM device'''&quot;</li>
[[File:pi3b-img61img39.png]] [[File</ol><ol start="6" style="list-style-type:pi3blower-img62.png]]alpha;"><li>Then click the &quot;'''Upgrade Firmware'''&quot; column of the burning tool</li>
[[File:pi3b-img63img132.png]]</ol><ol start="7" style="list-style-type: lower-alpha;"><li>Then click the &quot;'''Firmware'''&quot; button to select the Android image to be burned</li>
<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[File://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pipi3b-3Bimg133.html '''Orange Pi data download page'''png]], '''please make sure that the version of the SDDiskTool tool is the latest v1.72'''</p></li><li><p>Then download the 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="8" style="list-style-type: lower-alpha;"><li>After opening Finally, click the download link of &quot;Upgrade&quot; button to start burning. The burning process is shown in the Android image, you figure below. You can see that the following two types of Android imagesfirmware will be burned to SPIFlash first, please select the image in '''the TF card and eMMC startup image folder''' then burned to download</li></ol>PCIE. After burning is completed, the Android system will start automatically.</li></ol>
<div class="figure"> [[File:pi3b-img124img148.png]] </div><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:</p><ol style="list-style-type: lower-alpha;"><li><p>The first image is dedicated to HDMI display and supports 4K display. If you don’t use LCD screen, please download the image without lcd</p></li><li><p>If you want to use lcd screen, please choose image with lcd</p></li></ol>
</li></ol>
<span id="using-rkdevtool-to-clear-spiflash"></span>
[[File:pi3b-img125.png]]== Using RKDevTool to clear SPIFlash ==
<ol start="6" style="list-style-type: decimal;"><li><p>Then use the decompression software to decompress the compressed package # The position of SPI Flash on the downloaded Android image. Among the decompressed files, the file ending with &quot;.img&quot; is the Android image file, and the size development board is more than 1GB</p></li><li><p>Then use decompression software to decompress '''SDDiskTool_v1.72.zip''', this software does not need to be installed, just find '''SD_Firmware_Tool.exe''' shown in the decompressed folder and open it</p></li></ol>figure below
::[[File:pi3b-img135img76.png]]
<ol start="82" style="list-style-type: decimal;"><li>After opening '''SDDiskTool'''First, if the TF card is recognized normally, the inserted disk device will be displayed in the &quot;'''Select Removable Disk Device'''&quot; column. '''Please make sure that the displayed disk device is consistent with the drive letter of the TF card you want need to burn''', if there is no display, you can try prepare a good quality USB2.0 male-to unplug the TF card.-male data cable</li></ol>
[[File:pi3b-img136.png]]<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>img16.png]]
[[File:pi3b-img137.png]]</div></ol><ol start="103" style="list-style-type: decimal;"><li><p>Then start to write download the Rockchip driver '''DriverAssitant_v5.12.zip''' and MiniLoader and the Android image into burning tool '''RKDevTool_Release_v3.15.zip''' from the TF card[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><p>First confirm that On the displayed drive letter is the drive letter corresponding to the TF card under &quot;'''Select Removable Disk Device'''&quot;</p></li><li><p>Then select &quot;'''Firmware Upgrade'''&quot; in &quot;'''Select Function Mode'''&quot;</p></li><li><p>Then download page of Orange Pi, first select the path of the Android firmware in the &quot;'''Select Upgrade Firmware'''&quot; column</p></li><li><p>Finally click official tool, and then enter the &quot;'''Start Create'''&quot; button to start burning</p></li></ol>following folder</li></ol>
[[File:pi3b-img143.png]]<div class="figure">
<ol start="11" style="list[[File:pi3b-style-type: decimal;"><li>After the burning is completed, the display is as shown in the figure below, and then you can exit SDDiskTool</li></ol>img149.png]]
[[File</div></ol><ol start="2" style="list-style-type:pi3blower-img144.png]]alpha;"><li>Then download all the files below</li>
<ol startdiv class="12figure" style="list-style-type: decimal;"><li><p>Then pull out the TF card from the computer and insert it into the development board. After the development board is powered on, it will automatically start burning the Android image in the TF card to the eMMC of the development board.</p></li><li><p>If the development board is connected to an HDMI display, you can also see the progress bar of burning the Android image to eMMC from the HDMI display</p></li></ol>
[[File:pi3b-img145img150.png]]
<ol start/div>{| class="14wikitable" style="listbackground-style-typecolor:#ffffdc;width: decimal800px;">|-| <libig>When the HDMI monitor displays the following information, it means '''Note that the burning of &quot;MiniLoader-things needed to burn the Android Linux image into &quot; folder is hereinafter referred to as the eMMC has been completed. At this time, the TF card can be pulled out, and then the Android system in the eMMC will startMiniLoader folder.'''</big>|}</ol></li></ol> [[File:pi3b-img146.png]] <span idol start="how4" style="list-tostyle-burn-android-image-to-spiflashnvme-ssdtype: 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</spanli>== How to burn Android image to SPIFlash+NVMe SSD ==
'''Note that all the following operations are performed on a Windows computer[[File:pi3b-img31.'''png]]</ol><ol start="5" style="list-style-type: decimal;"><li><p>FirstAfter opening DriverInstall.exe, you need the steps to prepare an NVMe SSD solid state driveinstall the Rockchip driver are as follows</p>
<ol style="list-style-type: lower-alpha;">
<li>The M.2 2230 SSD is as followsClick the &quot;'''Driver Installation'''&quot; button</li></ol></li></ol> [[File:pi3b-img73.png]]
[[File:pi3b-img32.png]]
</ol>
<ol start="2" style="list-style-type: lower-alpha;">
<li>The MAfter waiting for a period of time, a pop-up window will prompt &quot;'''driver installed successfully'''&quot;, and then click the &quot;'''OK'''&quot; button.2 2242 SSD is as follows</li></ol>
[[File:pi3b-img74img33.png]]</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="27" style="list-style-type: decimal;"><li>Then insert After opening the NVMe SSD into '''RKDevTool''' burning tool, because the M.2 PCIe interface of computer has not connected to the development board and fix itthrough the USB2.0 male-to-male data cable at this time, the lower left corner will prompt &quot;'''No device found'''&quot;</li></ol>
[[File:pi3b-img75img35.png|283x63px]] <ol start="3" style="list-style-type: decimal;"><li>The position of the SPI Flash on the development board is shown in the figure below, no other settings are required before starting the programming</li></ol> [[File:pi3b-img76.png|266x211px]] <ol start="4" style="list-style-type: decimal;"><li>You also need to prepare a good quality USB2.0 male-to-male data cable</li></ol> <div class="figure"> [[File:pi3b-img16.png|141x138px|D6BB9058-CDC3-42d7-A7FC-FBF630D886B7]] </div><ol start="58" 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 you can start to clear the image of Android11content in SPI FLASH</p>
<ol style="list-style-type: lower-alpha;">
<li>After opening First, connect the download link development board to the Windows computer through the USB2.0 male-to-male data cable. The position of the Android image, you can see the following two types USB2.0 programming port of Android images, please select the image development board is shown in the S'''PIFlash-NVME SSD boot image folder''' to downloadfigure below</li></ol></li></ol>
<div class="figure">
[[File:pi3b-img124img36.png|340x108px|e6986fc9c8fc078e8cb6a9c39b76fb8]]
</div></ol>
<ol start="2" style="list-style-type: lower-alpha;">
<li><p>After entering Make sure that the '''SPIFlash-NVME SSD boot image folder''', you can see development board is not inserted into the TF card and not connected to the following two images. Their differences are:power supply</p><ol style="list-style-type: lower-alpha;"/li><li><p>The image without lcd is specially used for HDMI display Then press and supports 4K display. If you do not use hold the MaskROM button on the LCD screendevelopment board, please download the image without lcdposition of the MaskROM button on the development board is shown in the figure below:</p></li><li><p>If you want to use LCD screen, please choose image with lcd[[File:pi3b-img37.png]]</p></liol></olstart="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</olli>
[[File:pi3b-img147img38.png|305x58px]]</ol><ol start="5" style="list-style-type: lower-alpha;"><li>If the previous steps are successful, the development board will enter the '''MASKROM''' mode at this time, and the interface of the burning tool will prompt &quot;'''found a MASKROM device'''&quot;</li>
[[File:pi3b-img39.png]]</ol><ol start="76" style="list-style-type: decimallower-alpha;"><li><p>Then use the decompression software to decompress please select '''DriverAssitant_v5.12.zipAdvanced Features''', and then find </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><li><p>Select '''DriverInstallrk3566_MiniLoaderAll.exebin''' executable file in the decompressed '''MiniLoader''' folder you downloaded earlier, and open itclick Open</lip></olli>
[[File:pi3b-img31.png|407x120px]]<div class="figure">
<ol start="8" style="list-style[[File:pi3b-type: decimal;"><li><p>After opening '''DriverInstallimg68.exe''', the steps to install the Rockchip driver are as follows</p><ol style="list-style-type: lower-alpha;"><li>Click the &quot;'''Driver Installation'''&quot; button</li></ol></li></ol>png]]
</div></ol><ol style="list-style-type: lower-roman;"><li><p>Then click '''Download'''</p><p>[[File:pi3b-img32img128.png|286x150px]]</p></li></ol>
<ol start="210" style="list-style-type: lower-alpha;"><li>After waiting for a period of time, a pop<p>The display after downloading '''rk3566_MiniLoaderAll.bin''' is shown in the figure below</p><p>[[File:pi3b-up window will prompt &quot;img140.png]]</p></li><li><p>Then select the storage device as '''SPINOR'''</p><p>[[File:pi3b-img151.png]]</p></li><li><p>Then click Switch '''driver installed successfullyStorage'''&quot;, and then </p><p>[[File:pi3b-img152.png]]</p></li><li><p>Then click the &quot;'''OKErase All'''&quot; buttonto start erasing SPIFlash</p><p>[[File:pi3b-img153.png]]</p></li><li><p>The display log after erasing SPIFlash is shown in the figure below</p><p>[[File:pi3b-img154.png]]</p></li></ol></li></ol><span id="start-the-orange-pi-development-board"></span>
[[File:pi3b-img33.png|296x154px]]== Start the Orange Pi development board ==
<ol start="9" style="list# Insert the TF card with the burned image into the TF card slot of the Orange Pi development board. If the image of SPIFlash+NVMe SSD has been burnt, then there is no need to insert a TF card, just make sure that the NVMe SSD is inserted into the development board normally.# The development board has an HDMI interface, and the development board can be connected to a TV or HDMI display through an HDMI-styleto-type: decimal;"><li>Then decompress '''RKDevTool_Release_v3HDMI cable.15If you have purchased an LCD screen, you can also use the LCD screen to display the system interface of the development board.zip'''If there is a Type-C to HDMI cable, this software does not need to the system interface of the development board can also be installed, just find '''RKDevTool''' in displayed through the decompressed folder Type-C interface.# Connect a USB mouse and open it<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/li></ol>3A USB Type-C interface.
[[File:pi3b:{| class="wikitable" style="background-img34color:#ffffdc;width:800px;" |-| <big>'''<span style="color:#FF0000">Remember not to plug in a power adapter with a voltage output greater than 5V, as this will burn out the development board.png|413x122px]]'''</span>
'''<ol start="10" span style="list-style-typecolor: decimal;#FF0000"><li>After opening Many unstable phenomena during the power-on and start-up process of the '''RKDevTool''' burning toolsystem are basically caused by power supply problems, because so a reliable power adapter is very important. If you find that there is a phenomenon of continuous restart during the computer is not connected to startup process, please replace the development board through power supply or the USB2.0 maleType-to-male C data cable at this time, the lower left corner will prompt &quot;and try again.'''No device found'''&quot;</li></olspan>
[[File'''<span style="color:pi3b#FF0000">The Type-img35C power port does not support PD negotiation.png|402x189px]]'''</span>
'''<ol start="11" span style="list-style-typecolor: decimal;#FF0000"><li><p>Then start burning the Android image to SPIFlash+NVMe SSD</p><ol style="list-style-type: lower-alpha;"><li>FirstIn addition, please do not connect the development board to USB interface of the Windows computer through the USB2.0 male-to-male data cable. The position of the USB2.0 programming port of power the development board is shown in the figure below.'''</lispan></olbig></li></ol>|}
<div classol start="figure6"style="list-style-type: decimal;"><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.</li>
<li>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 '''[[File:pi3b-img36.png|275x116pxOrange Pi 3B#How to use the debugging serial port|C:\Users\orangepi\Desktop\用户手册插图\pi 3b\1691131157154(1).jpg1691131157154(1)the section on how to use the debugging serial port]].'''</li></ol><span id="how-to-use-the-debugging-serial-port"></span>
</div><ol start="2" style="list-style-type: lower-alpha;"><li><p>Make sure that the development board is not inserted into the TF card and not connected How to use 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>debugging serial port ==
[[File:pi3b<span id="connection-img37.png|289x100px]]instruction-of-debugging-serial-port"></span>=== Connection instruction of debugging serial port ===
<ol start="4" style="list-style-type: lower-alphadecimal;"><li>Then connect <p>First, you need to prepare a 3.3V USB-to-TTL module, and then insert the power supply USB interface end of the TypeUSB-C 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 the development boardTTL module, please do not use CP2102, and power onPL2303 USB to TTL module.'''</p><p>'''Before purchasing a USB to TTL module, and then release please confirm that the MaskROM buttonmodule supports a baud rate of 1500000.'''</lip></olbig>|}
[[File:pi3b-img38.png|305x94px]] <ol startdiv class="5figure" style="list-style-type: lower-alpha;"><li>If the previous steps are successful, the development board will enter the '''MASKROM''' mode at this time, and the interface of the burning tool will prompt &quot;'''found a MASKROM device'''&quot;</li></ol>
[[File:pi3b-img39img155.png|443x208px]] <ol start="6" style="list-style-type: lower-alpha;"><li>Then click the &quot;'''Upgrade Firmware'''&quot; column of the burning tool</li></ol> [[File:pi3b-img132.png|442x208px]] <ol start="7" style="list-style-type: lower-alpha;"><li>Then click the &quot;'''Firmware'''&quot; button to select the Android image to be burned</li></ol> [[File:pi3b-img133.png|444x209px]] <ol start="8" style="list-style-type: lower-alpha;"><li>Finally, click the &quot;Upgrade&quot; button to start burning. The burning process is shown in the figure below. You can see that the firmware will be burned to SPIFlash first, and then burned to PCIE. After burning is completed, the Android system will start automatically.</li></ol> [[File:pi3b-img148.png|453x212px]] <span id="using-rkdevtool-to-clear-spiflash"></span>== Using RKDevTool to clear SPIFlash == # The position of SPI Flash on the development board is shown in the figure below [[File:pi3b-img76.png|263x193px]]
</div></li></ol>
<ol start="2" style="list-style-type: decimal;">
<li>FirstThe corresponding relationship between GND, you need to prepare a good quality USB2.0 male-to-male data cableRXD and TXD pins of the debugging serial port of the development board is shown in the figure below</li></ol>
<div class="figure"> [[File:pi3b-img16img156.png|141x138px|D6BB9058-CDC3-42d7-A7FC-FBF630D886B7]] </divol>
<ol start="3" style="list-style-type: decimal;">
<li><p>Then download the Rockchip driver '''DriverAssitant_v5.12.zip''' The GND, TXD and MiniLoader and the burning tool '''RKDevTool_Release_v3.15.zip''' from RXD pins of 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 USB to TTL module need to be connected to the download page debugging serial port of Orange Pi, first select the official tool, and then enter the following folderdevelopment board through a DuPont line</li></ol></li></ol>
<div class="figure">:a. Connect the GND of the USB to TTL module to the GND of the development board
[[File:pi3b-img149b.png|342x56px|1691401357374]]The '''<span style="color:#FF0000">RX of the USB to TTL module is connected to the TX</span>''' of the development board
:c. The '''<span style="color:#FF0000">TX of the USB to TTL module is connected to the TX</divspan>''' of the development board</ol><ol start="24" style="list-style-type: lower-alphadecimal;"><li>Then download all The schematic diagram of connecting the files belowUSB to TTL module to the computer and the Orange Pi development board is as follows</li></ol>
<div class="figure">
[[File:pi3b-img150img157.png|347x139px|1691401520573]]
</div>
{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''Note that The TX and RX of the &quot;MiniLoaderserial port need to be cross-things needed connected. If you don't want to burn 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 Linux image&quot; folder order of TX and RX, so there is hereinafter referred to as always a the MiniLoader folder.order is right'''</big>|}</ol><span id="how-to-use-the-debugging-serial-port-on-the-ubuntu-platform"></span>
<ol start="4" style="list-style-type: decimal;"><li>Then = How to use decompression software to decompress '''DriverAssitant_v5.12.zip''', and then find the '''DriverInstall.exe''' executable file in debugging serial port on the decompressed folder and open it</li></ol>Ubuntu platform ===
[[File{| class="wikitable" style="background-color:#ffffdc;width:pi3b800px;" |-img31| <big>'''There are many serial port debugging software that can be used under Linux, such as putty, minicom, etc. The following demonstrates how to use putty.png'''</big>|472x139px]]}
<ol start="5" style="list# First, insert the USB-styleto-type: decimal;"><li><p>After opening DriverInstallTTL module into the USB interface of the Ubuntu computer.exe, If the steps to install connection and recognition of the Rockchip driver are as follows</p><ol style="listUSB-styleto-type: lower-alpha;"><li>Click TTL module is normal, you can see the &quot;corresponding device node name under '''Driver Installation/dev'''&quot; button</li></ol></li></ol>on the Ubuntu PC. Remember this node name, and then set the serial port software will be used
[[File:pi3b:{| class="wikitable" style="width:800px;" |-img32.png|276x145px]]test@test:~$ '''ls /dev/ttyUSB*'''
<ol start="2" style="list-style-type: lower-alpha;"><li>After waiting for a period of time, a pop-up window will prompt &quot;'''driver installed successfully'''&quot;, and then click the &quot;'''OK'''&quot; button.</li><dev/ol>ttyUSB0|}
[[File<ol start="2" style="list-style-type: decimal;"><li>Then use the following command to install putty on Ubuntu PC</li>{| class="wikitable" style="width:pi3b800px;" |-img33.png|292x151px]]test@test:~$ '''sudo apt-get update'''
test@test:~$ '''sudo apt-get install -y putty'''|}</ol><ol start="63" style="list-style-type: decimal;"><li>Then decompress run putty, '''RKDevTool_Release_v3.15.zip''', this software does not need <span style="color:#FF0000">remember to be installed, just find add sudo permission</span>'''RKDevTool''' in the decompressed folder and open it</li></ol>
[[File{| class="wikitable" style="width:pi3b800px;" |-img34.png| test@test:~$ '''sudo putty'''|467x138px]]}</ol><ol start="4" style="list-style-type: decimal;"><li>After executing the putty command, the following interface will pop up</li>
[[File:pi3b-img158.png]]</ol><ol start="75" style="list-style-type: decimal;"><li>After opening First select the '''RKDevTool''' burning tool, because setting interface of the computer has not connected to the development board through the USB2.0 male-to-male data cable at this time, the lower left corner will prompt &quot;'''No device found'''&quot;serial port</li></ol>
[[File:pi3b-img35img159.png|402x189px]]</ol><ol start="86" style="list-style-type: decimal;"><li><p>Then you can start to clear set the parameters of the content in SPI FLASHserial port</p>
<ol style="list-style-type: lower-alpha;">
<li>First, <p>Set Serial line to connect the development board toas /dev/ttyUSB0((Modified to the Windows computer through the USB2.0 male-to-male data cable. The position of the USB2.0 programming corresponding node name, generally /dev/ttyUSB0)</p></li><li><p>Set Speed(baud) as '''1500000'''(Serial port of the development board is shown in the figure belowbaud rate)</lip></olli><li><p>Set Flow control as None</lip></olli>
<div class="figure">
[[File:pi3b-img36img160.png|275x116px|C:\Users\orangepi\Desktop\用户手册插图\pi 3b\1691131157154(1).jpg1691131157154(1)]]
</div></ol></li></ol><ol start="27" style="list-style-type: decimal;"><li><p>After setting the setting interface of the serial port, return to the Session interface</p><ol style="list-style-type: lower-alpha;"><li><p>Make sure that First select the development board is not inserted into the TF card and not connected to the power supplyConnection type as Serial</p></li><li><p>Then press and hold click the MaskROM Open button on the development board, the position of to connect to the MaskROM button on the development board is shown in the figure below:serial port</p></li></ol>
[[File:pi3b-img37.png|289x100px]]<div class="figure">
<ol start="4" style="list-style-type[[File: lower-alpha;"><li>Then connect the power supply of the Typepi3b-C interface to the development board, and power on, and then release the MaskROM button</li></ol>img161.png]]
[[File</div></ol></li></ol><ol start="8" style="list-style-type:pi3b-img38.png|305x94px]]decimal;"><li>After starting the development board, you can see the Log information output by the system from the opened serial port terminal</li>
[[File:pi3b-img162.png]]</ol start><span id="5" style="listhow-to-use-the-debugging-serial-port-styleon-type: lowerwindows-alpha;platform"><li>If the previous steps are successful, the development board will enter the '''MASKROM''' mode at this time, and the interface of the burning tool will prompt &quot;'''found a MASKROM device'''&quot;</li></olspan>
[[File:pi3b-img39.png|457x215px]]=== How to use the debugging serial port on Windows platform ===
<ol start{| class="6wikitable" style="listbackground-style-typecolor:#ffffdc;width: lower-alpha800px;"><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><libig><p>Select '''rk3566_MiniLoaderAllThere 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.bin''' in the '''MiniLoader''' folder you downloaded earlier, and click Open</p></li></olbig>|}
<div ol style="list-style-type: decimal;"><li><p>Download MobaXterm</p><ol style="list-style-type: lower-alpha;"><li>Download MobaXterm website as follows</li>{| class="figurewikitable" style="width:800px;" |-| [https://mobaxterm.mobatek.net/ '''https://mobaxterm.mobatek.net''']|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li>After entering the MobaXterm download page, click '''GET XOBATERM NOW!'''</li>
[[File:pi3b-img68img163.png|459x216px|SIS5H0S2@F5M2D(6ANZEUPG]]</ol><ol start="3" style="list-style-type: lower-alpha;"><li>Then choose to download the Home version</li>
[[File:pi3b-img164.png]]</divol><ol start="4" style="list-style-type: lower-romanalpha;"><li><p>Then click '''Download''select the Portable version. After downloading, you don'</p><p>[[File:pi3b-img128.png|472x222px]]</p>t need to install it, just open it and use it</li></ol>
<ol start="10" style="list-style-type: lower-alpha;"><li><p>The display after downloading '''rk3566_MiniLoaderAll.bin''' is shown in the figure below</p><p>[[File:pi3b-img140img165.png|474x223px]]</p></li><li><p>Then select the storage device as '''SPINOR'''</pol><p>[[File:pi3b-img151.png|467x220px]]</p></li><li><p>Then click Switch '''Storage'''</pol><p>[[Fileol start="2" style="list-style-type:pi3b-img152.png|464x218px]]</p></lidecimal;"><li><p>Then click '''Erase All''' After downloading, use decompression software to start erasing SPIFlash</p><p>[[File:pi3b-img153.png|467x220px]]</p></li><li><p>The display log after erasing SPIFlash is shown in decompress the downloaded compressed package, you can get the figure below</p><p>[[File:pi3bexecutable software of MobaXterm, and then double-img154.png|460x216px]]</p>click to open</li></ol>
[[File:pi3b-img166.png]]</ol><span idol start="3" style="startlist-style-type: decimal;"><li><p>After opening the software, the steps to set up theserial port connection are as follows</p><ol style="list-orangestyle-pitype: lower-development-boardalpha;"><li><p>Open the session settings interface</spanp></li>== Start <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 &quot;'''OK'''&quot; button to complete the Orange Pi development board ==setting</p></li>
# Insert the TF card with the burned image into the TF card slot of the Orange Pi development board. If the image of SPIFlash+NVMe SSD has been burnt, then there is no need to insert a TF card, just make sure that the NVMe SSD is inserted into the development board normally.# The development board has an HDMI interface, and the development board can be connected to a TV or HDMI display through an HDMI-to-HDMI cable. If you have purchased an LCD screen, you can also use the LCD screen to display the system interface of the development board. If there is a Type-C to HDMI cable, the system interface of the development board can also be displayed through the Type-C interface.# Connect a USB mouse and keyboard to control the Orange Pi development board.# The development board has an Ethernet port, which can be plugged into a network cable for Internet access.# Connect a high-quality power adapter with a 5V/3A or 5V/4A USB Type-C interface.<div class="figure">
'''Remember not to plug in a power adapter with a voltage output greater than 5V, as this will burn out the development board[[File:pi3b-img167.'''png]]
</div></ol></li></ol><ol start="4" style="list-style-type: decimal;"><li>After clicking the &quot;'''OK'''Many unstable phenomena during &quot; button, you will enter the power-on and following interface. At this time, start-up process of the system are basically caused by power supply problems, so a reliable power adapter is very important. If development board and you find that there is a phenomenon can see the output information of continuous restart during the startup process, please replace the power supply or the Type-C data cable and try again.'''serial port</li>
'''The Type-C power port does not support PD negotiation.'''<div class="figure">
'''In addition, please do not connect the USB interface of the computer to power the development board[[File:pi3b-img168.'''png]]
6) Then turn on </div></ol><span id="instructions-for-using-the switch -5v-pin-in-the-40pin-interface-of -the -development-board-to-supply-power adapter. If everything is normal, you can see the startup screen of the system on the HDMI monitor or LCD screen."></span>
7) If you want to view == Instructions for using the 5v pin in the output information 40pin interface 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]].'''supply power ==
<span id{| class="wikitable" style="howbackground-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 toplug into the Type-C power interface of the development board for power supply. If you need to use-the5V 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-debugging-serial-port">C power supply.'''</spanbig>== How to use the debugging serial port ==|}
<span id="connection-instruction-of-debugging-serial-port"></span>=== Connection instruction of debugging serial port === <ol style="list-style-type: decimal;"><li><p># First, you need to prepare a 3.3V USB-to-TTL module, and then insert power cord as shown in the USB interface end of the USB-to-TTL module into the USB interface of the computer.</p><p>'''For better compatibility, it is recommended to use CH340 USB to TTL module, please do not use CP2102, PL2303 USB to TTL module.'''</p><p>'''Before purchasing a USB to TTL module, please confirm that the module supports a baud rate of 1500000.'''</p></li></ol>figure below
<div class="figure">
::[[File:pi3b-img155img169.png|576x115px|07]]
</div>
::{| class="wikitable" style="background-color:#ffffdc;width:800px;"
|-
|
<big>'''Please purchase the power cord shown in the picture above by yourself'''</big>
|}
 
<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 corresponding relationship between 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's USB port for power supply</span>''')</p></li><li><p>The red DuPont line needs to be plugged into the 5V pin of the development board 40pin</p></li><li><p>The black Dupont wire needs to be inserted into the GND, RXD pin of the 40pin interface</p></li><li><p>The position of the 5V pin and TXD pins GND pin of the debugging serial port of 40pin interface on the development board is shown in the figure below, '''<span style="color:#FF0000">remember not to reverse the connection</span>'''</lip></olli>
[[File:pi3b-img156img170.png|428x110px]]</ol></li></ol><span id="instructions-for-use-of-ubuntudebian-server-and-xfce-desktop-system"></span>
<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 '''Instructions for use of the development board through a DuPont line<Ubuntu/li></ol>Debian Server and Xfce desktop system''' =
{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <blockquotebig>a. Connect '''The content of this chapter is written based on the GND images of the USB to TTL module to Linux server version and the GND of the development boardxfce desktop version.'''</big>|}
b. The '''RX of the USB to TTL module is connected to the TX''' of the development board<span id="supported-linux-image-types-and-kernel-versions"></span>== Supported Linux image types and kernel versions ==
c{| class="wikitable" style="width:800px;text-align: center;"|-|'''Linux image type'''|'''kernel version'''|'''server version'''|'''desktop version'''|-|'''Debian 11 - Bullseye'''|'''Linux5. The 10'''TX of the USB to TTL module is connected to the TX|'''support''' of the development board</blockquote>|'''support'''|-<ol start="4" style="list|'''Ubuntu 20.04 - Focal'''|'''Linux5.10'''|'''support'''|'''support'''|-style|'''Ubuntu 22.04 -type: decimal;">Jammy'''|'''Linux5.10'''|'''support'''|'''support'''<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>|}
<div classspan id="figurelinux-system-adaptation"></span>== Linux System adaptation ==
[[File{| class="wikitable" style="width:pi3b800px;text-img157.png|524x189pxalign: center;"|C:\Users\orangepi\Desktop\用户手册插图\pi 3b\USB-to-TTL-module-to-the-computer.jpgUSB-to-TTL-module-to-the-computer]]|'''Function'''</div>|'''Debian11'''|'''The TX and RX of the serial port need to be cross-connectedUbuntu20. 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 first04'''|'''Ubuntu22. If there is no output in the test, then exchange the order of TX and RX, so there is always a the order is right04''' <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 === |'''There are many serial port debugging software that can be used under Linux, such as putty, minicom, etc. The following demonstrates how to use puttyUSB2.0x3'''|'''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 |'''/devOK''' on the Ubuntu PC. Remember this node name, and then set the serial port software will be used test@test:~$ |'''ls /dev/ttyUSB*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>|'''USB3.0x1'''|'''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 permissionM.2 NVMe SSD Start'''</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>|'''WIFI'''|'''OK'''[[File:pi3b-img158.png|367x321px]]'''OK'''|'''OK'''<ol start="5" style="list|-style-type: decimal;"><li>First select the setting interface of the serial port</li></ol>|'''Bluetooth'''|'''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>|'''GPIO(40pin)'''<ol style="list-style-type: lower-alpha;">|'''OK'''<li><p>Set Serial line to connect toas /dev/ttyUSB0((Modified to the corresponding node name, generally /dev/ttyUSB0)</p></li>|'''OK'''<li><p>Set Speed(baud) as |'''1500000OK'''(Serial port baud rate)</p></li><li><p>Set Flow control as None</p></li></ol></li></ol> <div class="figure"> [[File:pi3b-img160.png|317x312px|09]] </div><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>|'''UART(40pin)'''<ol style="list-style-type: lower-alpha;">|'''OK'''<li><p>First select the Connection type as Serial</p></li><li><p>Then click the Open button to connect to the serial port</p></li></ol></li></ol> <div class="figure">|'''OK'''|'''OK'''[[File:pi3b-img161.png|345x340px|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>|'''SPI(40pin)'''|'''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 ===|'''I2C(40pin)'''|'''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>|'''PWM(40pin)'''<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] <ol start="2" style="list-style-type: lower|-alpha;"><li>After entering the MobaXterm download page, click |'''GET XOBATERM NOW!PWM fan interface'''</li></ol>|'''OK'''[[File:pi3b-img163.png|576x334px]] <ol start="3" style="list-style-type: lower-alpha;"><li>Then choose to download the Home version</li></ol>'''OK'''[[File:pi3b-img164.png|353x231px]]'''OK'''<ol start="4" style="list-style-type: lower-alpha;"><li>Then select the Portable version. After downloading, you don’t need to install it, just open it and use it</li></ol> [[File:pi3b-img165.png|575x259px]] <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></ol> [[File:pi3b-img166.png|576x81px]] <ol start="3" style="list-style-type: decimal;"><li><p>After opening the software, the steps to set up the '''3pin Debug serial port connection are as follows</p>'''<ol style="list-style-type: lower-alpha;"><li><p>Open the session settings interface</p></li><li><p>Select the serial port type</p></li><li><p>Select the port number of the serial port (select the corresponding port number according to the actual situation), if you can’t see the port number, please use |'''Driver MasterOK''' to scan and install the driver for the USB to TTL serial port chip</p></li><li><p>Select the baud rate of the serial port as |'''1500000OK'''</p></li><li><p>Finally click the &quot;|'''OK'''&quot; button to complete the setting</p></li></ol></li></ol>|-|'''EMMC'''<div class="figure">|'''OK'''|'''OK'''[[File:pi3b-img167.png|575x438px'''OK'''|11]]- </div><ol |'''TF card start="4" style="list-style-type: decimal;">'''<li>After clicking the &quot;|'''OK'''&quot; button, you will enter the following interface. At this time, start the development board and you can see the output information of the serial port</li></ol>|'''OK'''<div class="figure">|'''OK'''[[File:pi3b-img168.png|575x291px|12]] </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 ==|'''HDMI Video'''|'''OK'''|'''The power supply method we recommend for the development board is to use the 5V/3A or 5V/4A Type C interface power cord to plug into the Type-C power interface of the development board for power supply. If you need to use the 5V pin in the 40pin interface to power the development board, please make sure that the power cord and power adapter used can meet the power supply requirements of the development board. If the use is unstable, please switch back to the Type-C power supply.OK''' # 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\未标题-7.jpg未标题-7]] </div>'''Please purchase the power cord shown in the picture above by yourselfOK''' <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 5V/3A or 5V4A power adapter connector (|'''please do not plug into the computer’s USB port for power supplyHDMI Audio''')</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> [[File:pi3b-img170.png|365x71px]] <span id="instructions-for-use-of-ubuntudebian-server-and-xfce-desktop-system"></span> = '''Instructions for use of Ubuntu/Debian Server and Xfce desktop systemOK''' = |'''The content of this chapter is written based on the images of the Linux server version and the xfce desktop version.OK''' <span id="supported-linux-image-types-and-kernel-versions"></span>== Supported Linux image types and kernel versions == {| class="wikitable"'''OK'''
|-
|'''Linux image typeCamera'''|'''kernel versionOK'''|'''server versionOK'''|'''desktop versionOK'''
|-
|'''Debian 11 - BullseyeLCD'''|'''Linux5.10OK'''|'''supportOK'''|'''supportOK'''
|-
|'''Ubuntu 20.04 - Focal'''|'''Linux5.10'''|'''support'''|'''support'''|-|'''Ubuntu 22.04 - Jammy'''|'''Linux5.10'''|'''support'''|'''support'''|} <span id="linux-system-adaptation"></span>== Linux System adaptation == {| class="wikitable"|-|'''Function'''|'''Debian11'''|'''Ubuntu20.04'''|'''Ubuntu22.04'''|-|'''USB2.0x3Edp Display'''
|'''OK'''
|'''OK'''
|'''OK'''
|-
|'''USB3.0x1Gigabit Ethernet port'''
|'''OK'''
|'''OK'''
|'''OK'''
|-
|'''M.2 NVMe SSD StartNetwork port status light'''
|'''OK'''
|'''OK'''
|'''OK'''
|-
|'''WIFIheadphone playback'''
|'''OK'''
|'''OK'''
|'''OK'''
|-
|'''Bluetoothheadphone recording'''
|'''OK'''
|'''OK'''
|'''OK'''
|-
|'''GPIO(40pin)LED Light'''
|'''OK'''
|'''OK'''
|'''OK'''
|-
|'''UART(40pin)RTC'''
|'''OK'''
|'''OK'''
|'''OK'''
|-
|'''SPI(40pin)GPU'''
|'''OK'''
|'''OK'''
|'''OK'''
|-
|'''I2C(40pin)NPU'''
|'''OK'''
|'''OK'''
|'''OK'''
|-
|'''PWM(40pin)VPU'''
|'''OK'''
|'''OK'''
|'''OK'''
|-
|'''PWM fan interfacewatchdog test'''
|'''OK'''
|'''OK'''
|'''OK'''
|-
|'''3pin Debug serial portChromium Hard solution video'''
|'''OK'''
|'''OK'''
|'''OK'''
|}
 
<span id="the-format-of-linux-commands-in-this-manual"></span>
== The format of Linux commands in this manual ==
 
# In this manual, all commands that need to be entered in the Linux system will be marked with the following box
::{| class="wikitable" style="width:800px;height:40px;"
|-
|'''EMMC''' |'''OK'''}|'''OK'''::As shown below, the content in the yellow box indicates the content that needs special attention, except for the commands in it.::{|'''OK'''class="wikitable" style="background-color:#ffffdc;width:800px;height:40px;"
|-
|'''TF card  |}<ol start'''="2" style="list-style-type: decimal;">|'''OK'''<li><p>Description of the prompt type in front of the command</p><ol style="list-style-type: lower-alpha;">|'''OK'''<li>The prompt in front of the command refers to the content of the red part in the box below, which is not part of the Linux command, so when entering the command in the Linux system, please do not enter the content of the red font part</li>{|'''OK'''class="wikitable" style="width:800px;"
|-
|'''<span style="color:#FF0000">orangepi@orangepi:~$</span> sudo apt update''' '''<span style="color:#FF0000">root@orangepi:~#</span>''' '''vim /boot/boot.cmd''' 'HDMI Video''<span style="color:#FF0000">test@test:~$</span> ssh [mailto:root@192.168.1.36 root@192.168.1.]xxx''' '''<span style="color:#FF0000">root@test:~#</span> ls'''|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li><p>'''OK<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>'''OK<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>What are the commands that need to be entered?</p><ol style="list-style-type: lower-alpha;"><li>As shown below, '''OKthe black bold part'''is the command that needs to be input, and the content below the command is the output content (some commands have output, some may not), and this part of the content does not need to be input</li>{| class="wikitable" style="width:800px;"
|-
|root@orangepi:~# '''HDMI Audiocat /boot/orangepiEnv.txt'''|'''OK<span style="color:#FF0000">verbosity=7</span>'''|bootlogo=false '''OK<span style="color:#FF0000">console=serial</span>'''|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li>As shown below, some commands cannot be written in one line and will be placed on the next line. As long as the black and bold parts are all commands that need to be input. When these commands are entered into one line, the last &quot;\&quot; of each line needs to be removed, this is not part of the command. In addition, there are spaces in different parts of the command, please don'''OK'''t miss it</li>{| class="wikitable" style="width:800px;"
|-
|orangepi@orangepi:~$ '''Cameraecho \'''|'''OK&quot;deb [arch=$(dpkg --print-architecture) \'''|'''OKsigned-by=/usr/share/keyrings/docker-archive-keyring.gpg] \'''|'''OKhttps://download.docker.com/Linux/debian \'''|-|'''LCD$(lsb_release -cs) stable&quot; | sudo tee /etc/apt/sources.list.d/docker.list &gt; /dev/null'''|'''OK'''}</ol></li></ol><span id="linux-system-login-instructions"></span> == Linux system login instructions == <span id="linux-system-default-login-account-and-password"></span>=== Linux system default login account and password ===|'''OK'''{|'''OK'''class="wikitable" style="width:800px;text-align: center;"
|-
|'''Edp DisplayAccount'''|'''OK'''|'''OK'''|'''OKPassport'''
|-
|'''Gigabit Ethernet portroot'''|'''OK'''|'''OK'''|'''OKorangepi'''
|-
|'''Network port status lightorangepi'''|'''OKorangepi'''|'''OK'''} {|'''OK'''class="wikitable" style="background-color:#ffffdc;width:800px;"
|-
|'''headphone playback'''|<big>'''OKNote that when entering the password, <span style="color:#FF0000">the specific content of the entered password will not be displayed on the screen</span>, please do not think that there is any fault, just press Enter after inputting.'''</big>|'''OK'''}{|'''OK'''class="wikitable" style="background-color:#ffffdc;width:800px;"
|-
|<big>'''headphone recordingWhen 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.'''</big>|'''OK'''} <span id="how-to-set-automatic-terminal-login-in-linux-system"></span> === How to set automatic terminal login in Linux system === |# The Linux system automatically logs in to the terminal by default, and the default login user name is '''OK<span style="color:#FF0000">orangepi</span>'''|'''OK'''|::[[File:pi3b-img171.png]]|'''LED Light'''|'''OK'''<ol start="2" style="list-style-type: decimal;">|'''OK'''<li>Use the following command to set the root user to automatically log in to the terminal</li>{|'''OK'''class="wikitable" style="width:800px;"
|-
|orangepi@orangepi:~$ '''RTCsudo auto_login_cli.sh root'''|'''OK'''}</ol><ol start="3" style="list-style-type: decimal;">|'''OK'''<li>Use the following command to disable automatic login terminal</li>{|'''OK'''class="wikitable" style="width:800px;"
|-
|orangepi@orangepi:~$ '''GPUsudo auto_login_cli.sh -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;"
|-
|'''NPU'''|'''OK'''|'''OK'''|'''OK'''|-|'''VPU'''|'''OK'''|'''OK'''|'''OK'''|-|'''watchdog test'''|'''OK'''|'''OK'''|'''OK'''|-|'''Chromium Hard solution video'''|'''OK'''|'''OK'''|orangepi@orangepi:~$ '''OKsudo auto_login_cli.sh orangepi'''
|}
</ol>
<span id="instructions-for-automatic-login-of-linux-desktop-version-system"></span>
<span id="the-format-of-linux-commands-in-this-manual"></span>== The format Instructions for automatic login of Linux commands in this manual desktop version system ===
# In this manual, all commands that need to be entered in After the Linux desktop system starts, it will be marked with automatically log in to the following boxdesktop without entering a password <div class="figure">
As shown below, the content in the yellow box indicates the content that needs special attention, except for the commands in it::[[File:pi3b-img172.png]]
</div>
<ol start="2" style="list-style-type: decimal;">
<li>Run the following command to prohibit the desktop system from automatically logging into the desktop<p/li>Description of the prompt type in front of the command{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo disable_desktop_autologin.sh'''|}</pol><ol start="3" style="list-style-type: lower-alphadecimal;"><li>The prompt in front of the command refers to the content of the red part in <p>Then restart the system and a login dialog box belowwill appear, at which point a [[\l|password]] is not part of required to enter the Linux command, so when entering the command in the Linux system, please do not enter the content of the red font part</li></olp></li></oldiv class="figure">
'''orangepi@orangepi[[File:~$ sudo apt update'''pi3b-img173.png]]
'''root@orangepi:~#''' '''vim </bootdiv></boot.cmd'''li></ol>
'''test@test:~$ ssh [mailto:<span id="the-setting-method-of-root@192.168.1.36 root@192.168.1.]xxx'''-user-automatic-login-in-linux-desktop-version-system"></span>
'''=== The setting method of root@test:~# ls'''user automatic login in Linux desktop version system ===
<ol start="2" style="list-style-type: lower-alpha;"><li><p>'''root@orangepi:~$''' The prompt indicates that this command is entered in '''the Linux system of the development board'''. The $ at # Execute the end of the prompt indicates that the current user of the system is a normal user. When executing a privileged following command, you need to add '''sudo'''</p></li><li><p>'''root@orangepi:~#''' The prompt indicates that this command is entered in the Linux system of the development board, and the # at the end of the prompt indicates that the current user of the system is the root user, who can execute any desired command</p></li><li><p>'''test@test:~$''' The prompt indicates that this command is entered in the Ubuntu PC or Ubuntu virtual machine, not in set the Linux desktop 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>'''root@test:~#''' The prompt indicates that this command is entered in the Ubuntu PC or Ubuntu virtual machine, not automatically log in the Linux system of the development board. The # at the end of the prompt indicates that the current user of the system is as the root user and can execute any command you want</p></li></ol>
<!-- --><ol start::{| class="3wikitable" style="list-style-typewidth: decimal800px;"><li><p>What are the commands that need to be entered?</p>|-| <ol style="list-style-typeorangepi@orangepi: lower-alpha;"><li>As shown below, ~$ '''the black bold partsudo desktop_login.sh root''' 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>|}
<ol start="2" style="list-style-type: decimal;"><li>Then restart the system, and the root@orangepi:~# '''cat /bootuser will automatically log in to the desktop</orangepiEnv.txt'''li>
'''verbosity=7'''[[File:pi3b-img174.png]]
bootlogo{| class=false"wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''Note that if you log in to the desktop system as the root user, you cannot use pulseaudio in the upper right corner to manage audio devices.'''
'''console=serialAlso note that this is not a bug, since pulseaudio is not allowed to run as root.'''</big>|}</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>
<ol start{| class="2wikitable" style="list-style-typewidth: lower-alpha800px;"|-| orangepi@orangepi:~$ '''sudo desktop_login.sh orangepi'''|}</ol><li>As shown below, some commands cannot be written in one line and will be placed on span id="the next line. As long as the black and bold parts are all commands that need to be input. When these commands are entered into one line, the last &quot;\&quot; of each line needs to be removed, this is not part -method-of -disabling-the command. In addition, there are spaces -desktop-in different parts of -the command, please don’t miss it</li-linux-desktop-version-system"></olspan>
orangepi@orangepi:~$ '''echo \'''=== The method of disabling the desktop in the Linux desktop version system ===
# First enter the following command on the command line, '''&quot;deb [arch<span style=$(dpkg --print-architecture) \"color:#FF0000">Please remember to add sudo permission</span>'''
'''signed-by::{| class="wikitable" style=/usr/share/keyrings/docker-archive"width:800px;" |-keyring.gpg] \'''| orangepi@orangepi:~$ '''https://download.dockersudo systemctl disable lightdm.com/Linux/debian \service'''|}
'''$(lsb_release <ol start="2" style="list-cs) stable&quot; | sudo tee /etc/apt/sources.list.d/docker.list &gtstyle-type: decimal; "><li>Then restart the Linux system and you will find that the desktop will not be displayed</dev/null'''li>
<span id="linux-system-login-instructions"></span>== Linux system login instructions == <span id="linux-system-default-login-account-and-password"></span>=== Linux system default login account and password === {| class="wikitable" style="width:800px;"
|-
|'''Account'''|'''Passport'''|-|'''root'''|'''orangepi'''|-|'''@orangepi:~$ '''|'''orangepisudo reboot'''
|}
 '''Note that when entering the password, the specific content of the entered password will not be displayed on the screen, please do not think that there is any fault, just press Enter after inputting.''' '''When the wrong password is prompted, or there is a problem with the ssh connection, please note that as long as you are using the Linux image provided by Orange Pi, please do not suspect that the above password is wrong, but look for other reasons.''' <span id="how-to-set-automatic-terminal-login-in-linux-system"></span>=== How to set automatic terminal login in Linux system === # The Linux system automatically logs in to the terminal by default, and the default login user name is orangepi '''orangepi''' [[File:pi3b-img171.png|351x198px]] <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></ol> orangepi@orangepi:~$ '''sudo auto_login_cli.sh root''' 
<ol start="3" style="list-style-type: decimal;">
<li>Use <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, '''<span style="color:#FF0000">Please remember to disable automatic login terminaladd sudo permission</lispan>'''</olli>
{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo auto_login_clisystemctl start lightdm.sh -dservice'''|}</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>
<ol startspan id="4" style="listonboard-led-light-styletest-type: decimal;instructions"><li>Use the following command to set the orangepi user to automatically log in to the terminal again</li></olspan>
orangepi@orangepi:~$ '''sudo auto_login_cli.sh orangepi'''== Onboard LED Light Test Instructions ==
<span id="instructions-for-automatic-login-of-linux-desktop-version-system"></span>=== Instructions for automatic login of Linux desktop version system === # After There are three LED lights on the desktop system startsdevelopment board, it will automatically log one green light, one red light, and one PCIe light. The location is shown in to the desktop without entering a passwordfigure below:
<div class="figure">
::[[File:pi3b-img172img175.png|576x324px|1]]
</div>
<ol start="2" style="list-style-type: decimal;">
<li>Run <p>'''<span style="color:#FF0000">As long as the development board is powered on, the red LED light will always be on, which is controlled by the hardware and cannot be turned off by the software</span>'''</p></li><li><p>The green LED light will keep blinking after the kernel is started, which is controlled by software.</p></li><li><p>The PCIe indicator will flash when there is data transmission on the PCIe interface.</p></li><li><p>The method of setting the green light on and off and flashing is as follows</p>{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''Note that the following operations should be performed under the root user.'''</big>|}<ol style="list-style-type: lower-alpha;"><li>First enter the setting directory of the green light</li>{| class="wikitable" style="width:800px;" |-| root@orangepi:~# '''cd /sys/class/leds/status_led'''|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li>The command to prohibit set the desktop system from automatically logging into green light to stop flashing is as follows</li>{| class="wikitable" style="width:800px;" |-| root@orangepi:/sys/class/leds/status_led# '''echo none &gt; trigger'''|}</ol><ol start="3" style="list-style-type: lower-alpha;"><li>The command to set the desktopgreen light to be on is as follows</li>{| class="wikitable" style="width:800px;" |-| root@orangepi:/sys/class/leds/status_led# '''echo default-on &gt; trigger'''|}</ol><ol start="4" style="list-style-type: lower-alpha;"><li>The command to set the green light to flash is as follows</li>{| class="wikitable" style="width:800px;" |-| root@orangepi:/sys/class/leds/status_led# '''echo heartbeat &gt; trigger'''|}</ol></li></ol><span id="network-connection-test"></span>
orangepi@orangepi:~$ '''sudo disable_desktop_autologin.sh'''== Network connection test ==
<ol startspan id="3" style="listethernet-styleport-type: decimal;test"><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</pspan><div class="figure">== Ethernet port test ===
[[File# First, insert one end of the network cable into the Ethernet interface of the development board, and connect the other end of the network cable to the router, and ensure that the network is unblocked# After the system starts, it will automatically assign an IP address to the Ethernet card through DHCP, '''<span style="color:pi3b-img173.png|569x320px|IMG_256]]#FF0000">No other configuration is required</span>'''# The command to view the IP address in the Linux system of the development board is as follows
</div></li></ol>::{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''ip addr show eth0'''
<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 ===2: eth0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc mq 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 4a:fe:2b:3d:17:1c brd ff:ff:ff:ff:ff:ff
orangepi@orangepi:~$ inet '''sudo desktop_login<span style="color:#FF0000">192.168.1.sh root150</span>'''/24 brd 192.168.1.255 scope global dynamic noprefixroute eth0
<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 43150sec preferred_lft 43150sec
[[File:pi3b-img174.png|448x187px]]inet6 fe80::9a04:3703:faed:23be/64 scope link 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 forever preferred_lft forever|}
::{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''Also note that this When using ifconfig to view the IP address, if the following information is not a bugdisplayed, since pulseaudio it is because sudo is not allowed to run as rootadded.The correct command is: sudo ifconfig'''</big>
<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></ol>
orangepi@orangepi:~$ '''sudo desktop_login.sh orangepiifconfig'''
<span id="the-method-of-disabling-the-desktop-in-the-linux-desktop-version-system"></span>=== The method of disabling the desktop Command 'ifconfig' is available in the Linux desktop version system ===following places
# First enter the following command on the command line,'''Please remember to add sudo permission'''* /sbin/ifconfig
orangepi@orangepi:~$ '''sudo systemctl disable lightdm.service'''* /usr/sbin/ifconfig
<ol start="2" style="list-style-type: decimal;"><li>Then restart the Linux system and you will find that the desktop will The command could not be displayed<located because '/li><sbin:/ol>usr/sbin' is not included in the PATH environment variable.
orangepi@orangepi:~$ '''sudo reboot'''This is most likely caused by the lack of administrative privileges associated with your user account.
<ol start="3" style="list-style-typeifconfig: 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>not found</li></ol>|}
orangepi@orangepi:~$ :{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''sudo systemctl start lightdm.serviceThere are three ways to check the IP address after the development board starts:'''
<ol start="2" style="list-style-type: lower-alpha;"><li>After '''1. Connect the HDMI display, then log in to the system and use the ip addr show eth0 command is executed, to view the desktop will be displayed</li></ol>IP address'''
<span id="onboard-led-light-test-instructions"></span>== Onboard LED Light Test Instructions =='''2. Enter the ip addr show eth0 command in the debugging serial terminal to view the IP address'''
# There are three LED lights on '''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, one green lightin this method, one red lightsome people often cannot see the IP address of the development board normally. If you can't see it, and one PCIe light. The location is shown in the figure belowdebug method looks like this:'''
<div classol style="figurelist-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>
[[File:pi3b-img175.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>'''As long as In addition, it should be noted that 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 softwareDHCP automatically assigns an IP address without any settings.'''</p></libig><li><p>The green LED light will keep blinking after the kernel is started, which is controlled by software.</p></li><li><p>The PCIe indicator will flash when there is data transmission on the PCIe interface.</p></li><li><p>The method of setting the green light on and off and flashing is as follows</p></li></ol>|}
<ol start="4" style="list-style-type: decimal;"><li>The command to test the network connectivity is as follows, the '''Note that the following operations should ping''' command can be performed under interrupted through the root user.shortcut key of '''Ctrl+C'''</li>
<ol {| class="wikitable" style="list-style-typewidth: lower-alpha800px;"><li>First enter the setting directory of the green light</li></ol>|-| orangepi@orangepi:~$ '''ping www.baidu.com -I eth0'''
root@orangepiPING www.a.shifen.com (14.215.177.38) from 192.168.1.12 eth0:~# '''cd /sys/class/leds/status'''56(84) bytes of data.
<ol start64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq="2" style1 ttl="list-style-type: lower-alpha;"><li>The command to set the green light to stop flashing is as follows</li></ol>56 time=6.74 ms
root@orangepi64 bytes from 14.215.177.38 (14.215.177.38):/sys/class/leds/work# '''echo none &gt; trigger'''icmp_seq=2 ttl=56 time=6.80 ms
<ol start64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq="3" stylettl="list-style-type: lower-alpha;"><li>The command to set the green light to be on is as follows</li></ol>56 time=6.26 ms
root@orangepi64 bytes from 14.215.177.38 (14.215.177.38):/sys/class/leds/work# '''echo default-on &gt; trigger'''icmp_seq=4 ttl=56 time=7.27 ms
<ol start="4" style="list-style-type: lower-alpha;"><li>The command to set the green light to flash is as follows</li></ol>^C
root@orangepi:/sys/class/leds/work# '''echo heartbeat &gt; trigger'''--- www.a.shifen.com ping statistics ---
<span id="network-connection-test"></span>== Network connection test ==4 packets transmitted, 4 received, 0% packet loss, time 3002ms
rtt min/avg/max/mdev = 6.260/6.770/7.275/0.373 ms|}</ol><span id="ethernetwifi-portconnection-test"></span> === Ethernet port WIFI connection test === {| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''Please do not connect to WIFI by modifying the /etc/network/interfaces configuration file. There will be problems connecting to the WIFI network in this way.'''</big>|}
# First, insert one end of <span id="wifi-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 -server-image-connects-to the Ethernet card -wifi-through DHCP, '''No other configuration is required'''-commands"></span># ==== The command server image connects to view the IP address in the Linux system of the development board is as followsWIFI through commands ====
orangepi@orangepi{| class="wikitable" style="background-color:~$ #ffffdc;width:800px;" |-| <big>'''ip addr show eth0When 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>|}
2<ol style="list-style-type: eth0decimal;"><li><p>First log in to the Linux system, there are the following three ways</p><ol style="list-style-type: &ltlower-alpha;BROADCAST"><li><p>If the development board is connected with a network cable,MULTICASTyou 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,UPyou 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,LOWER_UP&gt; mtu 1500 qdisc mq state UP group default qlen 1000you 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>
link/ether 4a{| class="wikitable" style="width:fe800px;" |-| orangepi@orangepi:2b:3d:17:1c brd ff:ff:ff:ff:ff:ff~$ '''nmcli dev wifi'''|}
inet '''192.168.1.150'''/24 brd 192.168.1.255 scope global dynamic noprefixroute eth0<div class="figure">
valid_lft 43150sec preferred_lft 43150sec[[File:pi3b-img176.png]]
inet6 fe80::9a04:3703</div></ol><ol start="3" style="list-style-type:faeddecimal;"><li>Then use the nmcli command to connect to the scanned WIFI hotspot, where:23be</64 scope link noprefixrouteli>
valid_lft forever preferred_lft forever:a. '''wifi_name''' needs to be replaced with the name of the WIFI hotspot you want to connect to
:b. '''wifi_passwd''When using ifconfig ' needs to view be replaced with the IP address, if password of the following information is displayed, it is because sudo is not added. The correct command is: sudo ifconfig'''WIFI hotspot you want to connect to
:{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''ifconfignmcli dev wifi connect <span style="color:#FF0000">wifi_name</span> password <span style="color:#FF0000">wifi_passwd</span>'''
Command Device 'ifconfigwlan0' is available in successfully activated with 'cf937f88-ca1e-4411-bb50-61f402eef293'.|}</ol><ol start="4" style="list-style-type: decimal;"><li>You can view the following placesIP address of wifi through the '''ip addr show wlan0''' command
* /sbin/ifconfig{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''ip addr show wlan0'''
* /usr/sbin/ifconfig11: wlan0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
The command could not be located because ':link/sbinether 23:8c:d6:ae:76:bb brd ff:ff:ff:ff:ff:/usr/sbin' is not included in the PATH environment variable.ff
This is most likely caused by the lack of administrative privileges associated with your user account:inet '''<span style="color:#FF0000">192.168.1.11</span>'''/24 brd 192.168.1.255 scope global dynamic noprefixroute wlan0
ifconfig: command not found:valid_lft 259192sec preferred_lft 259192sec
'''There are three ways to check the IP address after the development board starts:'''inet6 240e:3b7:3240:c3a0:c401:a445:5002:ccdd/64 scope global dynamic noprefixroute
# '''Connect the HDMI display, then log in to the system and use the ip addr show eth0 command to view the IP address'''# '''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. 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:''':valid_lft 259192sec preferred_lft 172792sec
<!-- --><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><inet6 fe80::42f1:6019:a80e:4c31/ol>64 scope link noprefixroute
::valid_lft forever preferred_lft forever|}</ol><ol start="5" style="list-style-type: decimal;"><li>Use the '''ping'''In additioncommand to test the connectivity of the wifi network, it should and the '''ping''' command can be noted that interrupted through the development board DHCP automatically assigns an IP address without any settings.shortcut key '''Ctrl+C'''</li>
<ol start{| class="4wikitable" style="list-style-typewidth: decimal800px;"><li>The command to test the network connectivity is as follows, the |-| orangepi@orangepi:~$ '''pingwww.orangepi.org -I wlan0''' command can be interrupted through the shortcut key of '''Ctrl+C'''</li></ol>
PING www.orangepi@orangepi.org (182.92.236.130) from 192.168.1.49 wlan0:~$ '''ping www.baidu56(84) bytes of data.com -I eth0'''
PING www64 bytes from 182.a92.shifen236.com 130 (14182.21592.177236.38130) from 192.168.: icmp_seq=1ttl=52 time=43.12 eth0: 56(84) bytes of data.5 ms
64 bytes from 14182.21592.177236.38 130 (14182.21592.177236.38130): icmp_seq=1 2 ttl=56 52 time=641.74 3 ms
64 bytes from 14182.21592.177236.38 130 (14182.21592.177236.38130): icmp_seq=2 3 ttl=56 52 time=644.80 9 ms
64 bytes from 14182.21592.177236.38 130 (14182.21592.177236.38130): icmp_seq=3 4 ttl=56 52 time=45.6.26 ms
64 bytes from 14182.21592.177236.38 130 (14182.21592.177236.38130): icmp_seq=4 5 ttl=56 52 time=748.27 8 ms
^C
--- www.aorangepi.shifen.com org ping statistics ---
4 5 packets transmitted, 4 5 received, 0% packet loss, time 3002ms4006ms
rtt min/avg/max/mdev = 641.260321/644.770864/748.275834/02.373 484 ms|}</ol><span id="the-server-image-connects-to-wifi-in-a-graphical-way"></span>
<span id="wifi-connection-test"></span>=== WIFI connection test === '''Please do not connect to WIFI by modifying the /etc/network/interfaces configuration file. There will be problems connecting to the WIFI network in this way.''' <span id="wifi-the-server-image-connects-to-wifi-through-commands"></span>==== WIFI The server image connects to WIFI through commands in a graphical way ==== '''When the development board is not connected to Ethernet, not connected to HDMI display, but only connected to the serial port, it is recommended to use the commands demonstrated in this section to connect to the WIFI network. Because nmtui can only display characters in some serial port software (such as minicom), and cannot display the graphical interface normally. Of course, if the development board is connected to an Ethernet or HDMI display, you can also use the commands demonstrated in this section to connect to the WIFI network.'''
<ol style="list-style-type: decimal;">
<li><p>First log in to the Linux system, there are the following three ways</pli>
<ol style="list-style-type: lower-alpha;">
<li><p>If the development board is connected with a network cable, you can remotely log in to [[Orange Pi 3B#SSH remote login development board|'''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 displayed on the HDMI</p></li></ol></li><li><p>First use the nmcli dev wifi command to scan the surrounding WIFI hotspots</p></li></ol>
<li>Then enter the nmtui command in the command line to open the wifi connection interface</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''nmcli dev wifinmtui'''|}</ol><ol start="3" style="list-style-type: decimal;"><li>Enter the nmtui command to open the interface as shown below</li> [[File:pi3b-img177.png]]</ol><ol start="4" style="list-style-type: decimal;"><li>Select '''Activate a connect''' and press Enter</li> [[File:pi3b-img178.png]]</ol><ol start="5" style="list-style-type: decimal;"><li>Then you can see all the searched WIFI hotspots</li> <div class="figure"> [[File:pi3b-img179.png]] </div></ol><ol start="6" style="list-style-type: decimal;"><li>Select the WIFI hotspot you want to connect to, then use the Tab key to position the cursor on '''Activate'''and press Enter</li>
<div class="figure">
[[File:pi3b-img176img180.png|575x250px|选区_011]]
</div></ol><ol start="37" style="list-style-type: decimal;"><li>Then use a dialog box for entering a password will pop up, enter the nmcli command corresponding password in '''Password''' and press Enter to connect start connecting to the scanned WIFI hotspot, where:</li></ol>
a. '''wifi_name''' needs to be replaced with the name of the WIFI hotspot you want to connect to<div class="figure">
b[[File:pi3b-img181. '''wifi_passwd''' needs to be replaced with the password of the WIFI hotspot you want to connect topng]]
orangepi@orangepi</div></ol><ol start="8" style="list-style-type:~$ '''nmcli dev wifi connect wifi_name password wifi_passwd'''decimal;"><li>After the WIFI connection is successful, a &quot;*&quot; will be displayed in front of the connected WIFI name</li>
Device 'wlan0' successfully activated with 'cf937f88-ca1e-4411-bb50-61f402eef293'.<div class="figure">
<ol start="4" style="list[[File:pi3b-style-type: decimal;"><li>You can view the IP address of wifi through the '''ip addr show wlan0''' command</li></ol>img182.png]]
</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</li>
{| class="wikitable" style="width:800px;"
|-
|
orangepi@orangepi:~$ '''ip addr show wlan0'''
11: wlan0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
:link/ether 2324:8c:d6d3:aeaa:76:bb brd ff:ff:ff:ff:ff:ff
:inet '''<span style="color:#FF0000">192.168.1.11</span>'''/24 brd 192.168.1.255 scope global dynamic noprefixroute wlan0
::valid_lft 259192sec 259069sec preferred_lft 259192sec259069sec
:inet6 240e:3b7:3240:c3a0c4a0:c401:a445:5002:ccdd/64 scope global dynamic noprefixroute
::valid_lft 259192sec 259071sec preferred_lft 172792sec172671sec
:inet6 fe80::42f1:6019:a80e:4c31/64 scope link noprefixroute valid_lft forever preferred_lft forever 5) Use the '''ping''' command to test the connectivity of the wifi network, and the '''ping''' command can be interrupted through the shortcut key '''Ctrl+C'''
::valid_lft forever preferred_lft forever
|}
</ol>
<ol start="10" style="list-style-type: decimal;">
<li>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'''</li>
{| class="wikitable" style="width:800px;"
|-
|
orangepi@orangepi:~$ '''ping www.orangepi.org -I wlan0'''
rtt min/avg/max/mdev = 41.321/44.864/48.834/2.484 ms
|}
</ol>
<span id="test-method-of-desktop-image"></span>
<span id="the-server-image-connects-to-wifi-in-a-graphical-way"></span>==== The server Test method of desktop image connects to WIFI in a graphical way ====
1) First log # Click the network configuration icon in to the Linux system, there are upper right corner of the desktop (please do not connect the following three waysnetwork cable when testing WIFI)
<ol style="list-style-type: lower-alpha;"><li><p>If the development board is connected with a network cable, you can remotely log in to :[[\l|the Linux system through sshFile:pi3b-img183.png]]</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>
<!-- ol start="2" style="list-style-type: decimal;"># # Then enter the nmtui command in the command line to open the wifi connection interface orangepi@orangepi:~$ <li>Click '''nmtuiMore networks'''in the pop-up drop-down box to see all scanned WIFI hotspots, and then select the WIFI hotspot you want to connect to.</li>
[[File:pi3b-img184.png]]
</ol>
<ol start="3" style="list-style-type: decimal;">
<li>Enter Then enter the nmtui command password of the WIFI hotspot, and then click '''Connect''' to open the interface as shown belowstart connecting to WIFI</li></ol> [[File:pi3b-img177.png|345x215px]]
[[File:pi3b-img185.png]]
</ol>
<ol start="4" style="list-style-type: decimal;">
<li>Select '''Activate a connect''' and press EnterAfter 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-img178.png|349x216px]]
[[File:pi3b-img186.png]]
</ol>
<ol start="5" style="list-style-type: decimal;">
<li>Then If you can see all open other web pages after opening the browser, it means that the searched WIFI hotspotsconnection is normal</li></ol>
[[File:pi3b-img187-1.png]]<div class/ol><span id="figurehow-to-set-a-static-ip-address"></span>
[[File:pi3b-img179.png|426x270px|16]]=== How to set a static IP address ===
</div><ol start{| class="6wikitable" style="listbackground-style-typecolor:#ffffdc;width: decimal800px;">|-| <libig>Select the WIFI hotspot you want to connect to, then use the Tab key to position the cursor on '''ActivatePlease do not set a static IP address by modifying the /etc/network/interfaces configuration file.''' and press Enter</li></olbig>|}
<div classspan id="figureuse-the-nmtui-command-to-set-a-static-ip-address"></span>==== Use the nmtui command to set a static IP address ====
[[File:pi3b-img180.png|474x298px|17]]# First run the '''nmtui''' command
</div><ol start::{| class="7wikitable" style="list-style-typewidth: decimal800px;"><li>Then a dialog box for entering a password will pop up, enter the corresponding password in |-| orangepi@orangepi:~$ '''Passwordnmtui''' and press Enter to start connecting to WIFI</li></ol>|}
<div classol start="figure2"style="list-style-type: decimal;"><li>Then select '''Edit a connection''' and press Enter</li>
[[File:pi3b-img181img188.png|480x308px|18]]</ol><ol start="3" style="list-style-type: decimal;"><li>Then select the network interface that needs to set a static IP address, for example, to set the static IP address of the '''Ethernet''' interface, select '''Wired connection 1'''.</li>
[[File:pi3b-img189.png]]</divol><ol start="84" style="list-style-type: decimal;"><li>After Then select '''Edit''' with the WIFI connection is successful, a &quot;*&quot; will be displayed in front of '''Tab''' key and press the connected WIFI nameEnter key</li></ol>
[[File:pi3b-img190.png]]<div class/ol><ol start="5" style="list-style-type: decimal;"><li>Then use the Tab key to move the cursor to the '''&lt;Automatic&gt;''' position shown in the figure"below to configure IPv4</li>
[[File:pi3b-img182img191.png|443x283px|C:\Users\orangepi\Desktop\用户手册插图\Zero3\未标题]]</ol><ol start="6" style="list-9.jpg未标题style-9]]type: decimal;"><li>Then press Enter, select '''Manual''' with the up and down arrow keys, and press Enter to confirm</li>
[[File:pi3b-img192.png]]</divol><ol start="97" style="list-style-type: decimal;"><li>You can view The display after selection is shown in the IP address of wifi through the '''ip addr show wlan0''' commandfigure below</li></ol>
orangepi@orangepi[[File:~$ pi3b-img193.png]]</ol><ol start="8" style="list-style-type: decimal;"><li>Then move the cursor to the '''ip addr show wlan0&lt;Show&gt;'''</li>
11[[File: wlan0pi3b-img194.png]]</ol><ol start="9" style="list-style-type: &ltdecimal;BROADCAST"><li>Then press Enter,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast state UP group default qlen 1000the following setting interface will pop up after entering</li>
link[[File:pi3b-img195.png]]</ether 24ol><ol start="10" style="list-style-type:8cdecimal;"><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:d3:aa:76:bb brd ff:ff:ff:ff:ff:ff#FF0000">Please set it according to your specific needs, the value set in the figure below is just an example</span>'''</li>
inet [[File:pi3b-img196.png]]</ol><ol start="11" style="list-style-type: decimal;"><li>After setting, move the cursor to'''192.168.1.11&lt;OK&gt;'''in the lower right corner, and press Enter to confirm</24 brd 192.168.1.255 scope global dynamic noprefixroute wlan0li>
valid_lft 259069sec preferred_lft 259069sec[[File:pi3b-img197.png]]</ol><ol start="12" style="list-style-type: decimal;"><li>Then click'''&lt;Back&gt;''' to return to the previous selection interface</li>
inet6 240e[[File:3b7:3240:c4a0:c401:a445:5002pi3b-img198.png]]</ol><ol start="13" style="list-style-type:ccdddecimal;"><li>Then select '''Activate a connection''', then move the cursor to'''&lt;OK&gt;''', and finally click Enter</64 scope global dynamic noprefixrouteli>
valid_lft 259071sec preferred_lft 172671sec[[File:pi3b-img199.png]]</ol><ol start="14" style="list-style-type: decimal;"><li>Then select the network interface that needs to be set, such as '''Wired connection 1''', then move the cursor to'''&lt;Deactivate&gt;''', and press Enter to disable '''Wired connection 1'''</li>
inet6 fe80[[File:pi3b-img200.png]]</ol><ol start="15" style="list-style-type:42f1:6019:a80e:4c31decimal;"><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</64 scope link noprefixrouteli>
valid_lft forever preferred_lft forever[[File:pi3b-img201.png]]</ol><ol start="16" style="list-style-type: decimal;"><li>Then you can exit nmtui through the'''&lt;Back&gt;''' and '''Quit''' buttons</li>
[[File:pi3b-img202.png]] [[File:pi3b-img203.png]]</ol><ol start="1017" style="list-style-type: decimal;"><li>Use the Then through '''pingip addr show eth0''' command to test , you can see that the connectivity IP address of the wifi network, and the '''ping''' command can be interrupted through port has changed to the shortcut key '''Ctrl+C'''static IP address set earlier</li></ol>
{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''ping www.orangepi.org -I wlan0ip addr show eth0'''
PING www.orangepi.org (182.92.236.130) from 192.168.1.49 wlan03: 56(84) bytes of data.eth0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
64 bytes from 182.:link/ether 5e:ac:14:a5:92.236.130 (182.92.236.130): icmp_seq=1 ttl=52 time=43.5 msb3 brd ff:ff:ff:ff:ff:ff
64 bytes from 182.92:inet '''<span style="color:#FF0000">192.236168.130 (1821.92177</span>'''/24 brd 192.236168.130): icmp_seq=2 ttl=52 time=411.3 ms255 scope global noprefixroute eth0
64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=3 ttl=52 time=44.9 ms:valid_lft forever preferred_lft forever
:inet6 241e:3b8:3240:c3a0:e269:8305:dc08:135e/64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=4 ttl=52 time=45.6 msscope global dynamic noprefixroute
64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=5 ttl=52 time=48.8 ms:valid_lft 259149sec preferred_lft 172749sec
^C:inet6 fe80::957d:bbbe:4928:3604/64 scope link noprefixroute
::valid_lft forever preferred_lft forever|}</ol><ol start="18" style="list-style-- www.orangepi.org type: decimal;"><li>Then you can test the connectivity of the network to check whether the IP address is configured OK, and the '''ping statistics ---''' command can be interrupted through the shortcut key '''Ctrl+C'''</li>
5 packets transmitted, 5 received, 0% packet loss, time 4006ms{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''ping 192.168.1.47 -I eth0'''
rtt min/avg/max/mdev = 41PING 192.321/44168.864/481.834/247 (192.168.1.47) from 192.168.1.188 eth0: 56(84) bytes of data.484 ms
<span id="test-method-of-desktop-image"></span>==== Test method of desktop image =64 bytes from 192.168.1.47: icmp_seq=1 ttl=64 time=0.233 ms
# Click the network configuration icon in the upper right corner of the desktop (please do not connect the network cable when testing WIFI)64 bytes from 192.168.1.47: icmp_seq=2 ttl=64 time=0.263 ms
[[File64 bytes from 192.168.1.47:pi3b-img183icmp_seq=3 ttl=64 time=0.png|377x166px]]273 ms
<ol start64 bytes from 192.168.1.47: icmp_seq="2" style4 ttl="list-style-type: decimal;"><li>Click '''More networks''' in the pop-up drop-down box to see all scanned WIFI hotspots, and then select the WIFI hotspot you want to connect to64 time=0.</li></ol>269 ms
[[File64 bytes from 192.168.1.47:pi3b-img184icmp_seq=5 ttl=64 time=0.png|576x353px]]275 ms
<ol start="3" style="list-style-type: decimal;"><li>Then enter the password of the WIFI hotspot, and then click '''Connect''' to start connecting to WIFI</li></ol>^C
[[File:pi3b-img185-- 192.168.png|320x163px]]1.47 ping statistics ---
<ol start="4" style="list-style-type: decimal;"><li>After connecting to WIFI5 packets transmitted, 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>5 received, 0% packet loss, time 4042ms
[[File:pi3b-img186rtt min/avg/max/mdev = 0.233/0.262/0.275/0.png015 ms|576x308px]]}</ol><span id="use-the-nmcli-command-to-set-a-static-ip-address"></span>
<ol start="5" style="list-style-type: decimal;"><li>If you can open other web pages after opening == Use the browser, it means that the WIFI connection is normal</li></ol>nmcli command to set a static IP address ====
[[File<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-alpha;"><li><p>'''orangepi''' is the name of the WIFI network interface (the names are not necessarily the same)</p></li><li><p>'''Wired connection 1''' is the name of the Ethernet interface</p></li>{| class="wikitable" style="width:pi3b800px;"|-img187.png|orangepi@orangepi:~$ '''nmcli con show'''<br><span style="margin-right: 180px;">NAME</span><span style="margin-right: 260px;">UUID </span><span style="margin-right: 45px;">TYPE </span><span style="margin-right: 50px;">DEVICE</span><br><span style="margin-right: 125px;">'''orangepi'''</span><span style="margin-right: 70px;">cfc4f922-ae48-46f1-84e1-2f19e9ec5e2a</span><span style="margin-right: 50px;">wifi </span><span style="margin-right: 50px;">wlan0</span><br><span style="margin-right: 50px;">'''Wired connection 1'''</span><span style="margin-right: 50px;">9db058b7-7701-37b8-9411-efc2ae8bfa30</span><span style="margin-right: 30px;">ethernet </span><span style="margin-right: 50px;">eth0</span><br>|576x222px]]}</ol></li></ol>
<span idol start="how3" style="list-tostyle-set-a-static-ip-addresstype: decimal;"><li>Then enter the following command, where</spanli>=== How to set a static IP address ===
:a. '''&quot;Wired connection 1&quot;''Please do not ' means to set a the static IP address of the Ethernet port. If you need to set the static IP address by modifying of the WIFI, please change it to the corresponding name of the /etc/WIFI network/interfaces configuration file.interface (you can get it through the '''nmcli con show'''command)
<span id="use-:b. After '''ipv4.addresse''' is the-nmtui-command-static IP address to-be set-a-static-ip-address"></span>==== Use , which can be modified to the nmtui command value you want to set a static IP address ====
# First run the :c. '''nmtuiipv4.gateway''' commandindicates the address of the gateway
::{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''nmtuinmcli con mod &quot;Wired connection 1&quot; \'''
<ol start="2" style="list-style-type: decimal;"><li>Then select '''Edit a connectionipv4.addresses &quot;192.168.1.110&quot; \''' and press Enter</li></ol>
[[File:pi3b-img188'''ipv4.png|227x247px]]gateway &quot;192.168.1.1&quot; \'''
<ol start="3" style="list-style-type: decimal;"><li>Then select the network interface that needs to set a static IP address, for example, to set the static IP address of the '''Ethernetipv4.dns &quot;8.8.8.8&quot; \''' interface, select '''Wired connection 1'''.</li></ol> [[File:pi3b-img189.png|310x149px]]
'''ipv4.method &quot;manual&quot;'''
|}
</ol>
<ol start="4" style="list-style-type: decimal;">
<li>Then select '''Edit''' with restart the Linux system</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''Tabsudo reboot''' key and press the Enter key</li>|}</ol> [[File:pi3b-img190.png|316x144px]] 
<ol start="5" style="list-style-type: decimal;">
<li>Then re-enter the Linux system and use the Tab key to move the cursor to the '''&lt;Automatic&gt;ip addr show eth0''' position shown in command to see that the figure below IP address has been set to configure IPv4the desired value</li></ol>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''ip addr show eth0'''
[[File3:pi3b-img191.png|575x240px]]eth0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
<ol start="6" style="list-style-type: decimal;"><li>Then press Enter, select '''Manual''' with the up and down arrow keys, and press Enter to confirm<link/li></ol>ether 5e:ae:14:a5:91:b3 brd ff:ff:ff:ff:ff:ff
[[File:pi3b-img192inet '''<span style="color:#FF0000">192.168.1.110</span>'''/32 brd 192.168.1.png|576x237px]]110 scope global noprefixroute eth0
<ol start="7" style="list-style-type: decimal;"><li>The display after selection is shown in the figure below</li></ol>:valid_lft forever preferred_lft forever
[[File:pi3b-img193.png|575x240px]]inet6 240e:3b7:3240:c3a0:97de:1d01:b290:fe3a/64 scope global dynamic noprefixroute
<ol start="8" style="list-style-type: decimal;"><li>Then move the cursor to the '''&lt;Show&gt;'''</li></ol>:valid_lft 259183sec preferred_lft 172783sec
[[File:pi3b-img194.png|576x241px]]inet6 fe80::3312:861a:a589:d3c/64 scope link noprefixroute
::valid_lft forever preferred_lft forever|}</ol start><span id="9" style="listssh-remote-login-styledevelopment-type: decimal;board"><li>Then press Enter, the following setting interface will pop up after entering</li></olspan>
[[File:pi3b-img195.png|575x450px]]== SSH remote login development board ==
<ol start{| class="10wikitable" style="listbackground-style-typecolor:#ffffdc;width: decimal800px;">|-| <libig>Then you can set the IP address (Addresses), gateway (Gateway) '''Linux systems enable ssh remote login by default and DNS server address in allow the position shown root user to log in to the figure below (there are many other setting options system. Before logging in itwith ssh, please explore by yourself),'''Please set it according you first need to your specific needsensure that the Ethernet or wifi network is connected, and then use the ip addr command or check the router to obtain the value set in IP address of the figure below is just an exampledevelopment board.'''</li></olbig>|}
[[File:pi3b<span id="ssh-img196.png|576x233px]]remote-login-development-board-under-ubuntu"></span>=== SSH remote login development board under Ubuntu ===
<ol start="11" style="list-style-type: decimal;"># Obtain the IP address of the development board<li>After setting, move # Then you can remotely log in to the cursor to'''&lt;OK&gt;''' in Linux system through the lower right corner, and press Enter to confirm</li></ol>ssh command
::{| class="wikitable" style="width:800px;" |-| test@test:~$ '''ssh [[Filemailto:pi3b-img197root@192.168.1.36 root@192.168.1.png|576x116px]]xxx''' &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Need to be replaced with the IP address of the development board)
<ol startroot@192.168.1.xx's password: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Enter the password here, the default password is orangepi)|}::{| class="12wikitable" style="listbackground-color:#ffffdc;width:800px;" |-| <big>'''Note that when entering the password, <span style-type="color: decimal;#FF0000">the specific content of the entered password will not be displayed on the screen<li/span>Then click, please do not think that there is any fault, just press Enter after inputting.'''&lt</big>|}::{| class="wikitable" style="background-color:#ffffdc;Back&gtwidth:800px;" |-| <big>''' If you are prompted to return to refuse the connection, as long as you are using the image provided by Orange Pi, <span style="color:#FF0000">please do not suspect that the previous selection interfacepassword orangepi is wrong</lispan>, but look for other reasons.'''</olbig>|}
[[File<ol start="3" style="list-style-type:pi3b-img198.png|330x325px]]decimal;"><li>After successfully logging in to the system, the display is as shown in the figure below</li>
<ol startdiv class="13figure" style="list-style-type: decimal;"><li>Then select '''Activate a connection''', then move the cursor to'''&lt;OK&gt;''', and finally click Enter</li></ol>
[[File:pi3b-img199img204.png|331x248px]]
<ol start/div>{| class="14wikitable" style="listbackground-style-typecolor:#ffffdc;width: decimal800px;">|-| <libig>Then select the network interface that needs to be set, such as '''Wired connection 1'''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 move enter the cursor to'''&lt;Deactivate&gt;''', following command on the development board and press Enter try again. Is it possible to disable '''Wired connection 1connect:'''</li></ol>
[[File:pi3b-img200.png|576x224px]]
<ol start="15" style="list-style-typeroot@orangepi: decimal;"><li>Then please do not move the cursor, and then press the Enter key to re-enable ~# '''Wired connection 1reset_ssh.sh''', so that the static IP address set earlier will take effect</li></ol>
[[File:pi3b-img201.png|576x224px]]
<ol start="16" style="list-style-type: decimal;"><li>Then you can exit nmtui through the'''&lt;Back&gt;''' and 'If it still doesn't work, try to reset the system.'Quit''' buttons</libig>|}</ol><span id="ssh-remote-login-development-board-under-windows"></span>
[[File:pi3b-img202.png|300x253px]] [[File:pi3b-img203.png|227x252px]]=== SSH remote login development board under Windows ===
<ol start="17" style="list-style-type: decimal;"><li>Then through '''ip addr show eth0''', you can see that # First obtain the IP address of the network port has changed development board# Under Windows, you can use MobaXterm to remotely log in to the static IP address set earlier</li></ol>development board, first create a new ssh session
orangepi@orangepi:~$ :a. Open '''ip addr show eth0Session'''
3: eth0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast state UP group default qlen 1000b. Then select '''SSH''' in '''Session Setting'''
link/ether 5e:ac:14:a5:92:b3 brd ff:ff:ff:ff:ff:ffc. Then enter the IP address of the development board in the '''Remote host'''
inet ::d. Then enter the user name '''root'''or ''192.168.1.177'orangepi''' of the Linux system in '''Specify username'''/24 brd 192.168.1.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever::e. Finally click '''OK'''
inet6 241e:3b8:3240:c3a0:e269:8305:dc08:135e/64 scope global dynamic noprefixroute<div class="figure">
valid_lft 259149sec preferred_lft 172749sec::[[File:pi3b-img205.png]]
inet6 fe80</div><ol start="3" style="list-style-type:decimal;"><li>Then you will be prompted to enter a password. The default passwords for root and orangepi users are orangepi</li>{| class="wikitable" style="background-color:957d#ffffdc;width:bbbe800px;" |-| <big>'''Note that when entering the password, <span style="color:4928:3604#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.'''</64 scope link noprefixroutebig>|}
valid_lft forever preferred_lft forever<div class="figure">
<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>img206.png]]
orangepi@orangepi</div></ol><ol start="4" style="list-style-type:~$ '''ping 192.168.1.47 -I eth0'''decimal;"><li>After successfully logging in to the system, the display is as shown in the figure below</li>
PING 192[[File:pi3b-img207.168.1.47 (192.168.1.47) from 192.168.1.188 eth0: 56(84) bytes png]]</ol><span id="the-method-of-uploading-files-to-the-linux-system-of data.-the-development-board"></span>
64 bytes from 192.168.1.47: icmp_seq=1 ttl=64 timeThe method of uploading files to the Linux system of the development board ==0.233 ms
64 bytes from 192.168.1.47: icmp_seq<span id="how-to-upload-files-to-the-development-board-linux-system-in-ubuntu-pc"></span>=== How to upload files to the development board Linux system in Ubuntu PC =2 ttl=64 time=0.263 ms
64 bytes from 192.168.1.47: icmp_seq<span id="how-to-upload-files-using-the-scp-command"></span>==== How to upload files using the scp command ==3 ttl=64 time=0.273 ms
64 bytes # Use the scp command to upload files from 192the Ubuntu PC to the Linux system of the development board.168.1.47: icmp_seq=4 ttl=64 time=0.269 msThe specific commands are as follows
64 bytes from 192::a.168.1.47'''file_path''': icmp_seq=5 ttl=64 time=0.275 msneed to be replaced with the path of the file to be uploaded
^C::b. '''orangepi''': It is the user name of the Linux system of the development board, and it can also be replaced with other ones, such as root
--- ::c. '''192.168.1xx.47 ping statistics ---xx''': It is the IP address of the development board, please modify it according to the actual situation
5 packets transmitted::d. '''/home/orangepi''': The path in the Linux system of the development board, 5 received, 0% packet loss, time 4042mswhich can also be modified to other paths
rtt min/avg/max/mdev ::{| class="wikitable" style= 0"width:800px;" |-| test@test:~$ '''scp file_path orangepi@192.233168.xx.xx:/0.262home/0.275orangepi/0.015 ms'''|}
<span idol start="use2" style="list-the-nmcli-commandstyle-type: decimal;"><li>If you want to-set-upload afolder, you need to add the -static-ip-address">r parameter</spanli>==== Use the nmcli command to set a static IP address ====
<ol {| class="wikitable" style="list-style-typewidth: decimal800px;"><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|-| test@test:~$ '''scp </pspan style="color:#FF0000">-r</lispan><li><p>Then use the dir_path orangepi@192.168.xx.xx:/home/orangepi/'''nmcli con show''' command to view the name of the network device, as shown below|}</pol><ol start="3" style="list-style-type: lower-alphadecimal;"><li><p>'''orangepi''' is the name There are more usages of scp, please use the WIFI network interface (following command to view the names are not necessarily the same)</p>man manual</li><li><p>{| class="wikitable" style="width:800px;" |-| test@test:~$ '''Wired connection 1man scp''' is the name of the Ethernet interface</p></li>|}</ol></lispan id="how-to-upload-files-using-filezilla"></olspan>
orangepi@orangepi:~$ '''nmcli con show'''==== How to upload files using filezilla ====
NAME UUID TYPE DEVICE# First install filezilla in Ubuntu PC
::{| class="wikitable" style="width:800px;" |-| test@test:~$ '''orangepisudo apt install -y filezilla''' cfc4f922-ae48-46f1-84e1-2f19e9ec5e2a wifi wlan0|}
'''Wired connection 1''' 9db058b7<ol start="2" style="list-7701style-37b8-9411-efc2ae8bfa30 ethernet eth0type: decimal;"><li>Then use the following command to open filezilla</li>
{| class="wikitable" style="width:800px;"
|-
|
test@test:~$ '''filezilla'''
|}
</ol>
<ol start="3" style="list-style-type: decimal;">
<li>Then enter The interface after filezilla is opened is as follows, and the display under the remote site on the following command, whereright is empty</li></ol>
<blockquotediv class="figure">a. '''&quot;Wired connection 1&quot;''' means to set the static IP address of the Ethernet port. If you need to set the static IP address of the WIFI, please change it to the corresponding name of the WIFI network interface (you can get it through the '''nmcli con show''' command)
b[[File:pi3b-img208. After '''ipv4.addresse''' is the static IP address to be set, which can be modified to the value you want to setpng]]
c. '''ipv4.gateway''' indicates the address of the gateway</blockquotediv></ol>orangepi@orangepi<ol start="4" style="list-style-type:~$ '''nmcli con mod &quotdecimal;Wired connection 1&quot; \'''"><li>The method of connecting the development board is shown in the figure below</li>
'''ipv4.addresses &quot;192.168.1.110&quot; \'''<div class="figure">
'''ipv4[[File:pi3b-img209.gateway &quot;192.168.1.1&quot; \'''png]]
</div></ol><ol start="5" style="list-style-type: decimal;"><li>Then choose to '''ipv4.dns &quot;8.8.8.8&quot; \save the password''', and then click '''OK'''</li>
[[File:pi3b-img210.png]]</ol><ol start="6" style="list-style-type: decimal;"><li>Then choose to always '''trust this host''ipv4.method &quot;manual&quot;', and then click '''OK'''</li>
<ol startdiv class="4figure" style="list-style-type: decimal;"><li>Then restart the Linux system</li></ol>
orangepi@orangepi[[File:~$ '''sudo reboot'''pi3b-img211.png]]
</div></ol><ol start="57" style="list-style-type: decimal;"><li>Then re-enter After the connection is successful, you can see the directory structure of the development board Linux file system and use on the '''ip addr show eth0'''command to see that right side of the IP address has been set to the desired valuefilezilla software</li></ol>
orangepi@orangepi:~$ '''ip addr show eth0'''<div class="figure">
3[[File: eth0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast state UP group default qlen 1000pi3b-img212.png]]
link</ether 5ediv></ol><ol start="8" style="list-style-type:ae:14:a5:91:b3 brd ff:ff:ff:ff:ff:ffdecimal;"><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.</li>
inet '''192.168.1.110'''/32 brd 192.168.1.110 scope global noprefixroute eth0<div class="figure">
valid_lft forever preferred_lft forever[[File:pi3b-img213.png]]
inet6 240e:3b7:3240:c3a0:97de:1d01:b290</div></ol><ol start="9" style="list-style-type:fe3adecimal;"><li>After the upload is complete, you can go to the corresponding path in the Linux system of the development board to view the uploaded file</64 scope global dynamic noprefixrouteli>
valid_lft 259183sec preferred_lft 172783sec<li>The method of uploading a folder is the same as that of uploading a file, so I won't go into details here</li></ol><span id="the-method-of-uploading-files-from-windows-pc-to-the-linux-system-of-the-development-board"></span>
inet6 fe80::3312:861a:a589:d3c/64 scope link noprefixroute=== The method of uploading files from Windows PC to the Linux system of the development board ===
valid_lft forever preferred_lft forever<span id="how-to-upload-files-using-filezilla-1"></span>==== How to upload files using filezilla ====
<span id="ssh-remote-login-development-board"></span>== SSH remote login development board ==# First download the installation file of the Windows version of the filezilla software, the download link is as follows
::{| class="wikitable" style="width:800px;" |-| '''Linux systems enable ssh remote login by default and allow the root user to log in to the systemhttps://filezilla-project. 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 boardorg/download.php?type=client'''|}
<span iddiv class="ssh-remote-login-development-board-under-ubuntufigure"></span>=== SSH remote login development board under Ubuntu ===
# Obtain the IP address of the development board# Then you can remotely log in to the Linux system through the ssh command::[[File:pi3b-img214.png]]
test@test:~$ '''ssh [mailto:root@192.168.1.36 root@192.168.1.]xxx''' (Need to be replaced with the IP address of the development board)</div><div class="figure">
root@192.168::[[File:pi3b-img215.1.xx's password: (Enter the password here, the default password is orangepi)png]]
'''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 </div><ol start="2" style="list-style-type: decimal;"><li>The downloaded installation package is any faultas follows, just press Enter after inputting.'''and then double-click to install directly</li>
{| class="wikitable" style="width:800px;" |-| '''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 reasonsFileZilla_Server_1.5.1_win64-setup.exe'''|}
<ol start="3" style="list-style-type: decimal;"><li>After successfully logging in to During the systeminstallation process, please select '''Decline''' on the display is as shown in the figure below</li></ol>following installation interface, and then select '''Next&gt;'''
<div class="figure">
[[File:pi3b-img204img216.png|405x207px|L467QDF65C(YR79U]TH[TND]]
</div></ol>'''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 <ol start="3" style="list-style-type: decimal;"><li>The interface after filezilla is opened is okas follows, you can log in to the Linux system through and the serial port or HDMI display and then enter under the following command remote site on the development board and try again. Is it possible to connect:'''right is empty</li>
root@orangepi:~# '''reset_ssh.sh'''<div class="figure">
'''If it still doesn't work, try to reset the system[[File:pi3b-img217.'''png]]
<span id/div></ol><ol start="4" style="ssh-remote-login-development-boardlist-understyle-windowstype: decimal;"></spanli>=== SSH remote login The method of connecting the development board under Windows ===is shown in the figure below:</li>
# First obtain the IP address of the development board<div class="figure">
2) Under Windows, you can use MobaXterm to remotely log in to the development board, first create a new ssh session[[File:pi3b-img209.png]]
a. Open </div></ol><ol start="5" style="list-style-type: decimal;"><li>Then choose to '''Sessionsave the password''', and then click '''OK'''</li>
b. Then select '''SSH''' in '''Session Setting'''<div class="figure">
c[[File:pi3b-img218. Then enter the IP address of the development board in the '''Remote host'''png]]
d. </div></ol><ol start="6" style="list-style-type: decimal;"><li>Then enter the user name '''root''' or '''orangepi''' of the Linux system in choose to always '''Specify usernametrust this host''' e. Finally , and then click '''OK'''</li>
<div class="figure">
[[File:pi3b-img205img219.png|553x280px|14]]
</div></ol><ol start="27" style="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> '''Note that when entering After the passwordconnection is successful, you can see the specific content directory structure of the entered password will not be displayed development board Linux file system on the screen, please do not think that there is any fault, just press Enter after inputting.'''right side of the filezilla software</li>
<div class="figure">
[[File:pi3b-img206img220.png|578x150px|C:\Users\orangepi\Desktop\用户手册插图\pi 3b\just press Enter after inputting..jpgjust press Enter after inputting.]]
</div></ol><ol start="48" style="list-style-type: decimal;"><li>After successfully logging in 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 systemright mouse button, and then click the upload option to start uploading the display is as shown in file to the figure belowdevelopment board.</li></ol>
[[File:pi3b-img207.png|576x334px]]<div class="figure">
<span id="the[[File:pi3b-method-of-uploading-files-to-the-linux-system-of-the-development-board"></span>img221.png]]
</div></ol><ol start="9" style= The method of uploading files "list-style-type: decimal;"><li><p>After the upload is complete, you can go to the corresponding path in the Linux system of the development board ==to view the uploaded file</p></li><li><p>The method of uploading a folder is the same as that of uploading a file</p></li></ol>
<span id="howhdmi-to-upload-files-to-the-development-board-linux-system-in-ubuntu-pctest"></span>=== How to upload files to the development board Linux system in Ubuntu PC ===
<span id="how-to-upload-files-using-the-scp-command"></span>==== How to upload files using the scp command ==HDMI test ==
# 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<span id="hdmi-display-test"></span>=== HDMI display test ===
<blockquote>a. '''file_path''': need # Use HDMI to be replaced with the path of the file HDMI cable to be uploadedconnect Orange Pi development board and HDMI monitor
b. '''orangepi''': It is the user name of the Linux system of the development board, and it can also be replaced with other ones, such as root c. '''192.168.xx.xx''': It is the IP address of the development board, please modify it according to the actual situation d. '''/home/orangepi''': The path in the Linux system of the development board, which can also be modified to other paths</blockquote>test@test[[File:~$ '''scp file_path orangepi@192pi3b-img10.168.xx.xx:/home/orangepi/'''png]]
<ol start="2" style="list-style-type: decimal;">
<li>If you want to upload a folderAfter starting the Linux system, you need to add if the -r parameterHDMI monitor has image output, it means that the HDMI interface is in normal use</li></ol>
test@test{| class="wikitable" style="background-color:#ffffdc;width:~$ 800px;" |-| <big>'''scp -r dir_path orangepi@192Note 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.168.xx.xx:/home/orangepi/'''
'''When you want to connect the HDMI of the development board to the HDMI port of the laptop, please make sure that your laptop supports the HDMI in function.'''<ol start/big>|}{| class="3wikitable" style="listbackground-style-typecolor:#ffffdc;width: decimal800px;">|-| <libig>There are more usages of scp'''When the HDMI is not displayed, please use check whether the HDMI cable is plugged in tightly. After confirming that there is no problem with the following command connection, you can change a different screen and try to view the man manualsee if it is displayed.'''</libig>|}</ol>
<span id="hdmi-to-vga-display-test@test:~$ '''man scp'''"></span>
<span id="how-to-upload-files-using-filezilla"></span>==== How HDMI to upload files using filezilla =VGA display test ===
# <ol style="list-style-type: decimal;"><li><p>First install filezilla in Ubuntu PC, you need to prepare the following accessories</p><ol style="list-style-type: lower-alpha;"><li>HDMI to VGA converter</li>
test@test[[File:~$ '''sudo apt install pi3b-y filezilla'''img222.png]]</ol><ol start="2" style="list-style-type: lower-alpha;"><li>A VGA cable</li>
[[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>Then use the following command HDMI to open filezillaVGA display test as shown below</li></ol>
test@test[[File:~$ '''filezilla'''pi3b-img224.png]]
<ol start{| class="3wikitable" style="listbackground-style-typecolor:#ffffdc;width: decimal800px;">|-| <libig>The interface after filezilla is opened is as follows'''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 under normally. So if there is a problem with the remote site on test, please check whether there is a problem with the right is emptyHDMI to VGA converter, VGA cable and monitor.'''</libig>|}</ol><span id="hdmi-resolution-setting-method"></span> === HDMI resolution setting method ===
<div class="figure"># First open '''Display''' in '''Settings'''
::[[File:pi3b-img208img225.png|576x453px|截图 2022-12-03 19-04-40]]
</div><ol start="42" style="list-style-type: decimal;"><li>The method Then you can see the current resolution of connecting the development board is shown in the figure belowsystem</li></ol>
[[File:pi3b-img226.png]]<div class/ol><ol start="3" style="figurelist-style-type: decimal;"><li>Click the drop-down box of Resolution to see all resolutions currently supported by the monitor</li>
[[File:pi3b-img209img227.png|575x128px|图片565]]</ol><ol start="4" style="list-style-type: decimal;"><li>Then select the resolution you want to set, and click Apply</li>
[[File:pi3b-img228.png]]</divol>
<ol start="5" style="list-style-type: decimal;">
<li>Then choose to '''save After the password'''new resolution is set, and then click select '''OKKeep the configuration'''</li></ol>
[[File:pi3b-img210img229.png|249x181px]]</ol><span id="how-to-use-bluetooth"></span>
<ol start="6" style="list-style-type: decimal;"><li>Then choose How to always '''trust this host''', and then click '''OK'''</li></ol>use Bluetooth ==
<div classspan id="figuretest-method-of-desktop-image-1"></span>=== Test method of desktop image ===
[[File:pi3b-img211# Click the Bluetooth icon in the upper right corner of the desktop.png|278x150px|IMG_256]]
</div><ol start="7" style="list::[[File:pi3b-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>img230.png]]
<div classol start="figure2"style="list-style-type: decimal;"><li>Then select the adapter</li>
[[File:pi3b-img212img231.png|533x330px|IMG_256]]</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]]</divol><ol start="84" style="list-style-type: decimal;"><li>Then select the path to be uploaded to the development board on the right side of set '''Visibility Setting''' as '''Always visible''' in the filezilla softwareBluetooth adapter settings interface, 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.close it</li></ol>
[[File:pi3b-img233.png]]<div class/ol><ol start="5" style="figurelist-style-type: decimal;"><li>Then open the configuration interface of the Bluetooth device</li>
[[File:pi3b-img213img234.png|485x380px|IMG_256]]</ol><ol start="6" style="list-style-type: decimal;"><li>Click '''Search''' to start scanning the surrounding Bluetooth device</li>
[[File:pi3b-img235.png]]</divol>9) After <ol start="7" style="list-style-type: decimal;"><li>Then select the upload is complete, Bluetooth device you can go want to connect to, and then click the corresponding path in the Linux system right button of the development board mouse to view pop up the operation interface for this Bluetooth device, select '''Pair''' to start pairing, and the uploaded filedemonstration here is to pair with an Android phone</li>
10) The method [[File:pi3b-img236.png]]</ol><ol start="8" style="list-style-type: decimal;"><li>When pairing, the pairing confirmation box will pop up in the upper right corner of uploading a folder is the same as that of uploading a filedesktop. Select '''Confirm''' to confirm. At this time, so I won’t go into details herethe mobile phone also needs to be confirmed</li>
[[File:pi3b-img237.png]]</ol><span idol start="the9" style="list-methodstyle-of-uploading-files-from-windows-pctype: decimal;"><li>After pairing with the mobile phone, you can choose the paired Bluetooth device, then right-click and select '''Send a File''' to start sending a picture to-the-linux-system-of-the-development-board">phone</spanli>=== The method of uploading files from Windows PC to the Linux system of the development board ===
[[File:pi3b-img238.png]]<span id/ol><ol start="how-to-upload10" style="list-filesstyle-using-filezilla-1type: decimal;"><li>The interface of the sending picture is shown below</spanli>==== How to upload files using filezilla ====
# First download the installation file of the Windows version of the filezilla software, the download link is as follows[[File:pi3b-img239.png]]</ol><span id="usb-interface-test"></span>
https://filezilla-project.org/download.php?type=client= USB interface test ==
<div {| class="figurewikitable" style="background-color:#ffffdc;width:800px;"|-| <big>'''The USB interface can be connected to a USB hub to expand the number of USB interfaces.'''</big>|}
[[File:pi3b<span id="connect-img214.png|472x171px|C:\Users\orangepi\Desktop\用户手册插图\Pi5 Plus\未标题the-15.jpg未标题usb-15]]mouse-or-keyboard-test"></span>=== Connect the USB mouse or keyboard test ===
</div># Insert the USB interface keyboard into the USB interface of the Orange Pi development board<div class="figure"># Connect Orange PI development board to HDMI display# If the mouse or keyboard can operate normally, it means that the USB interface is working normally (the mouse can only be used in the desktop version of the system)
[[File:pi3b<span id="connect-img215.png|393x283px|图片5552]]the-usb-storage-device-test"></span>
</div><ol start="2" style="list-style-type: decimal;"><li>The downloaded installation package is as follows, and then double-click to install directly</li></ol>= Connect the USB storage device test ===
'''FileZilla_Server_1.5.1_win64-setup.exe'''# 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
During the installation process, please select ::{| class="wikitable" style="width:800px;"|-|orangepi@orangepi:~$ '''Declinecat /proc/partitions | grep &quot;sd*&quot;''' on the following installation interface, and then select <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">'''Next&gt;sda'''</span><br> <div classspan style="margin-right: 70px;">8</span><span style="margin-right: 60px;">1</span><span style="margin-right: 50px;">30043119 </span><span style="figuremargin-right: 50px;color:#FF0000">'''sda1'''</span><br>|}
[[File:pi3b-img216.png|319x251px|IMG_256]]
 
</div>
<ol start="3" style="list-style-type: decimal;">
<li>The interface after filezilla is opened is as followsUse the mount command to mount the U disk into '''/mnt''', and then you can view the display under the remote site on file in the right is emptyU disk</li></ol>
<div {| class="figurewikitable">style="width:800px;" |-| orangepi@orangepi:~$ '''sudo mount /dev/sda1 /mnt/'''
[[Fileorangepi@orangepi:pi3b-img217.png|451x357px|IMG_256]]~$ '''ls /mnt/'''
test.txt|}</divol>
<ol start="4" style="list-style-type: decimal;">
<li>The method After the mounting, you can view the capacity usage and mount point of connecting the development board is shown in U disk through the figure below:'''df -h''' command</li></ol>{| class="wikitable" style="width:800px;" |-|orangepi@orangepi:~$ '''df -h | grep &quot;sd&quot;'''
/dev/sda1 &nbsp;&nbsp;&nbsp; 29G &nbsp;&nbsp; 208K &nbsp;&nbsp; 29G &nbsp;&nbsp; 1% /mnt|}<div class/ol><span id="figureusb-wireless-network-card-test"></span>
[[File:pi3b-img209.png|575x128px|图片565]]=== USB wireless network card test ===
</div><ol start="5" style="list-style-type: decimal;"><li>Then choose to The currently '''save the passwordtested'''USB wireless network cards are shown below. Please test it by yourself for other models of USB wireless network cards. If you cannot use it, and then click '''OK'''</li></ol>you need to transplant the corresponding USB wireless network card driver
<div {| class="figurewikitable" style="width:800px;text-align: center;">|-[[File:pi3b-img218| No.png|207x146pxModel|IMG_256]]|-</div>| 1<ol start="6" style="list-style-type: decimal;">| <li>Then choose to always '''trust this host''', and then click '''OK'''</li></ol>RTL8723BU
<div class="figure">Support 2.4G WIFI+BT4.0
| [[File:pi3b-img219img240.png]]|221x109px-|IMG_256]]2| RTL8811
</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>Support 2.4G +5G WIFI
<div class="figure">| [[File:pi3b-img241.png]]|-| 3| RTL8821CU
[[File:pi3b-img220Support 2.png|446x329px|图片3]]4G +5G WIFI
</div><ol start="8" style="list-style-type: decimal;"><li>Then select the path to be uploaded to the development board on the right side of the filezilla software, and then select the file to be uploaded on the Windows PC on the left side of the filezilla software, then click the right mouse button, and then click the upload option to start uploading the file to the development board bingo</li></ol>Support BT 4.2
|
<div class="figure">
[[File:pi3b-img221img242.png|501x369px|IMG_256]]
</div>
|} <ol startspan id="9" style="listrtl8723bu-style-type: decimal;test"><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></lispan><li><p>The method of uploading a folder is the same as that of uploading a file</p></li></ol>==== RTL8723BU test ====
<span id="hdmi# 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-test"></span>== HDMI test ==related kernel modules, through the lsmod command, you can see that the following kernel modules have been automatically loaded
::{| class="wikitable" style="width:800px;" |-|<p>orangepi@orangepi:~$ '''lsmod'''</p><span idstyle="hdmimargin-displayright: 100px;">Module </span><span style="margin-testright: 50px;">Size </span><span style="margin-right: 45px;">Used by</span><br><span style="margin-right: 100px;">rfcomm </span><span style="margin-right: 50px;">57344</span><span style= HDMI display test "margin-right: 50px;">16</span><br><span style="margin-right: 95px;">rtl8xxxu </span><span style="margin-right: 50px;">106496</span><span style="margin-right: 30px;">0</span><br><span style="margin-right: 90px;">rtk_btusb </span><span style="margin-right: 50px;">61440</span><span style="margin-right: 30px;">0</span><br>|}
# Use HDMI to HDMI cable to connect Orange Pi development board and HDMI monitor<ol start="3" style="list-style-type: decimal;"><li>Through the dmesg command, you can see the loading information of the RTL8723BU module</li>
[[File{| class="wikitable" style="width:pi3b800px;" |-img10.png|199x129px]]orangepi@orangepi:~$ '''dmesg'''
<ol start="2" style="list-style-type: decimal;"><li>After starting the Linux system, if the HDMI monitor has image output, it means that the HDMI interface is in normal use</li></ol>......
'''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[ 83.'''438901] usb 2-1: new high-speed USB device number 2 using ehci-platform
'''When you want to connect the HDMI of the development board to the HDMI port of the laptop[ 83.588375] usb 2-1: New USB device found, idVendor=0bda, idProduct=b720, please make sure that your laptop supports the HDMI in functionbcdDevice= 2.'''00
'''When the HDMI is not displayed[ 83.588403] usb 2-1: New USB device strings: Mfr=1, please check whether the HDMI cable is plugged in tightly. After confirming that there is no problem with the connectionProduct=2, you can change a different screen and try to see if it is displayed.'''SerialNumber=3
<span id="hdmi[ 83.588422] usb 2-to-vga-display-test"></span>=== HDMI to VGA display test ===1: Product: 802.11n WLAN Adapter
<ol style="list[ 83.588443] usb 2-style-type1: decimal;"><li><p>First, you need to prepare the following accessories</p><ol style="list-style-typeManufacturer: lower-alpha;"><li>HDMI to VGA converter</li></ol></li></ol>Realtek
[[File:pi3b-img22283.png|155x104px]588460]usb 2-1: SerialNumber: 00e04c000001
<ol start[ 83.601974] Bluetooth: hci0: RTL: examining hci_ver=06 hci_rev="2" style000b lmp_ver="list-style-type: lower-alpha;"><li>A VGA cable</li></ol>06 lmp_subver=8723
[[File:pi3b-img22383.png|148x133px]603894]Bluetooth: hci0: RTL: rom_version status=0 version=1
<ol start="3" style="list-style-type[ 83.603920] Bluetooth: lower-alpha;"><li>A monitor or TV that supports VGA interface</li><hci0: RTL: loading rtl_bt/ol>rtl8723b_fw.bin
<!-- --><ol start="2" style="list-style-type[ 83.610108] Bluetooth: decimal;"><li>HDMI to VGA display test as shown below</li><hci0: RTL: loading rtl_bt/ol>rtl8723b_config.bin
[[File:pi3b-img22483.png|576x339px]611274]Bluetooth: hci0: RTL: cfg_sz 68, total sz 22564
'''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[ 83. So if there is a problem with the test, please check whether there is a problem with the HDMI to VGA converter, VGA cable and monitor658494] rtk_btusb: Realtek Bluetooth USB driver ver 3.'''1.6d45ddf.20220519-142432
<span id="hdmi-resolution-setting-method"></span>=== HDMI resolution setting method ===[ 83.658651] usbcore: registered new interface driver rtk_btusb
# First open '''Display''' in '''Settings'''[ 83.667124] usb 2-1: This Realtek USB WiFi dongle (0x0bda:0xb720) is untested!
[[File83.667137] usb 2-1:pi3b-img225Please report results to Jes.Sorensen@gmail.png|576x370px]]com
<ol start="[ 83.890140] usb 2" style="list-style-type1: Vendor: decimal;"><li>Then you can see the current resolution of the system</li></ol>Realtek
[[File83.890153] usb 2-1:pi3b-img226Product: 802.png|382x254px]]11n WLAN Adapter
<ol start="3" style="list[ 83.890159] usb 2-style-type1: rtl8723bu_parse_efuse: dumping efuse (0x200 bytes): decimal;"><li>Click the drop-down box of Resolution to see all resolutions currently supported by the monitor</li></ol>
[[File:pi3b-img227.png|415x274px]].....
<ol start[ 83.890412] usb 2-1: RTL8723BU rev E (SMIC) 1T1R, TX queues 3, WiFi="4" style1, BT="list-style-type: decimal;"><li>Then select the resolution you want to set1, GPS=0, and click Apply</li></ol>HI PA=0
[[File:pi3b-img22883.png|415x277px]890417]usb 2-1: RTL8723BU MAC: 00:13:ef:f4:58:ae
<ol start="5" style="list[ 83.890421] usb 2-style-type1: rtl8xxxu: decimal;"><li>After the new resolution is set, select '''Keep the configuration'''</li><Loading firmware rtlwifi/ol>rtl8723bu_nic.bin
[[File83.895289] usb 2-1:pi3b-img229Firmware revision 35.png|447x243px]]0 (signature 0x5301)
<span id="how-to-use-bluetooth"></span>== How to use [ 84.050893] Bluetooth ==: hci0: RTL: fw version 0x0e2f9f73
<span id="test-method-of-desktop-image-1"></span>=== Test method of desktop image ===[ 84.266905] Bluetooth: RFCOMM TTY layer initialized
# Click the [ 84.266949] Bluetooth icon in the upper right corner of the desktop.: RFCOMM socket layer initialized
[[File84.266999] Bluetooth:pi3b-img230RFCOMM ver 1.png|330x128px]]11
<ol start="2" style="list-style-type[ 84.884270] usbcore: decimal;"><li>Then select the adapter</li></ol>registered new interface driver rtl8xxxu
[[File84.912046] rtl8xxxu 2-1:1.2 wlx0013eff458ae:pi3brenamed from wlan0|}</ol><ol start="4" style="list-style-img231type: decimal;"><li>Then you can see the RTL8723BU WIFI device node through the '''sudo ifconfig''' command.pngPlease refer to [[Orange Pi 3B#WIFI connection test|375x165px'''the WIFI connection test chapter''']]for WIFI connection and testing methods</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo ifconfig wlx0013eff458ae'''
<ol startwlx0013eff458ae: flags="3" style="list-style-type: decimal4099&lt;"><li>If there is a prompt belowUP, select '''Yes'''</li></ol>BROADCAST,MULTICAST&gt; mtu 1500
[[File:pi3b-img232.png|248x85px]]:ether 00:13:ef:f4:58:ae txqueuelen 1000 (Ethernet)
<ol start="4" style="list-style-type: decimal;"><li>Then set '''Visibility Setting''' as '''Always visible''' in the Bluetooth adapter settings interface, and then close it</li></ol>:RX packets 0 bytes 0 (0.0 B)
[[File:pi3b-img233.png|243x229px]]:RX errors 0 dropped 0 overruns 0 frame 0
::TX packets 0 bytes 0 (0.0 B)
 
::TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
|}
</ol>
<ol start="5" style="list-style-type: decimal;">
<li>Then open the configuration interface of you can see the USB Bluetooth devicethrough the '''hciconfig''' command</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo apt update &amp;&amp; sudo apt install bluez''' orangepi@orangepi:~$ '''hciconfig''' hci0: Type: Primary Bus: '''<span style="color:#FF0000">USB</olspan>'''
[[File:pi3b-img234.png|438x179px]]:BD Address: 00:13:EF:F4:58:AE ACL MTU: 820:8 SCO MTU: 255:16
::DOWN
 
::RX bytes:1252 acl:0 sco:0 events:125 errors:0
 
::TX bytes:23307 acl:0 sco:0 commands:125 errors:0
|}
</ol>
<ol start="6" style="list-style-type: decimal;">
<li>Click You can also see the Bluetooth icon on the desktop. At this time, Bluetooth has not been opened, so a red '''Search<span style="color:#FF0000">x</span>''' to start scanning the surrounding Bluetooth devicewill be displayed</li></ol> [[File:pi3b-img235.png|322x217px]]
[[File:pi3b-img243.png]]
</ol>
<ol start="7" style="list-style-type: decimal;">
<li>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 Click '''PairTurn Bluetooth On''' to start pairing. Here, it is demonstrated with the Android phoneturn on Bluetooth</li></ol> [[File:pi3b-img236.png|338x263px]]
[[File:pi3b-img244.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 '''Confirm''' to confirm. At this time, the mobile phone also needs to be confirmedThe display after turning on Bluetooth is as follows</li></ol> [[File:pi3b-img237.png|417x152px]]
[[File:pi3b-img245.png]]
</ol>
<ol start="9" style="list-style-type: decimal;">
<li>After pairing with Please refer to the mobile phone, you can choose the paired [[Orange Pi 3B#How to use Bluetooth device, then right -click and select |'''Bluetooth use method'Send a File'']] for Bluetooth test method, so I won' to start sending a picture to the phonet go into details here.</li></ol>
[[File:pi3b<span id="rtl8811-img238.png|439x259px]]test"></span>
<ol start="10" style="list-style-type: decimal;"><li>The interface of the sending picture is shown below</li></ol>== RTL8811 test ====
[[File:pi3b-img239# First insert the RTL8811 wireless network card module into the USB interface of the development board.png|437x253px]]# Then the Linux system will automatically load the kernel modules related to RTL8811 WIFI, and you can see that the following kernel modules have been automatically loaded through the lsmod command
::{| class="wikitable" style="width:800px;" |-|<p>orangepi@orangepi:~$ '''lsmod'''</p><span idstyle="usbmargin-interfaceright: 100px;">Module </span><span style="margin-right: 50px;">Size </span><span style="margin-testright: 45px;">Used by</span><br><span style="margin-right: 100px;">8821cu </span><span style= USB interface test ="margin-right: 50px;">1839104 </span><span style="margin-right: 50px;">0</span><br>|}
<ol start="3" style="list-style-type: decimal;"><li>Through the dmesg command, you can see the loading information of the RTL8811 module</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''The USB interface can connect USB Hub to expand the number of USB interfaces.dmesg'''
<span id="connect-the-[ 118.618194] usb2-mouse1: new high-orspeed USB device number 2 using ehci-keyboard-test"></span>=== Connect the USB mouse or keyboard test ===platform
# Insert the keyboard of the [ 118.767152] usb 2-1: New 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 systemsdevice found, idVendor=0bda, idProduct=c811, the USB interface is used normally (the mouse can only be used in the system of the desktop version)bcdDevice= 2.00
<span id="connect-the-[ 118.767181] usb2-storage-device-test"></span>=== Connect the 1: New USB storage device test strings: Mfr=1, Product=2, SerialNumber=3
# First insert the U disk or USB mobile hard disk into the USB interface of Orange PI development board# Execute the following command[ 118. If you can see the output of sdX, the U disk recognition is successful767199] usb 2-1: Product: 802.11ac NIC
orangepi@orangepi[ 118.767219] usb 2-1:~$ '''cat /proc/partitions | grep &quot;sd*&quot;'''Manufacturer: Realtek
major minor #blocks name[ 118.767235] usb 2-1: SerialNumber: 123456
8 0 30044160 '''sda'''[ 119.500530] usbcore: registered new interface driver rtl8821cu
8 [ 119.525498] rtl8821cu 2-1 30043119 :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 '''sudo ifconfig''' command. Please refer to the [[Orange Pi 3B#WIFI connection test|'''WiFi connection test chapter''']] for WIFI connection and testing methods. I won't go into details her</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sda1sudo ifconfig wlx1cbfced9d260'''
<ol startwlx1cbfced9d260: flags="3" style="list-style-type: decimal4099&lt;"><li>Use the mount command to mount the U disk into '''/mnt'''UP, and then you can view the file in the U disk</li></ol>BROADCAST,MULTICAST&gt; mtu 1500
orangepi@orangepi:~$ '''sudo mount /dev/sda1 /mnt/''':ether 1c:bf:ce:d9:d2:60 txqueuelen 1000 (Ethernet)
orangepi@orangepi:~$ '''ls /mnt/''':RX packets 0 bytes 0 (0.0 B)
test.txt::RX errors 0 dropped 0 overruns 0 frame 0
<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>:TX packets 0 bytes 0 (0.0 B)
orangepi@orangepi:~$ '''df :TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0|}</ol><span id="rtl8821cu-h | grep &quot;sd&quot;'''test"></span>
/dev/sda1 29G 208K 29G 1% /mnt==== RTL8821CU test ====
<span id="usb-# First insert the rtl8821cu wireless-network-card-test"></span>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 wireless network card test ===module is not in Driver CDROM Mode
The currently '''tested''' USB wireless network cards are shown below. Please test it by yourself for other models of USB wireless network cards. If you cannot use it, you need to transplant the corresponding USB wireless network card driver ::{| class="wikitable" style="width:800px;"
|-
| No.orangepi@orangepi:~$ '''lsusb | Model||-| 1| RTL8723BUgrep &quot;Realtek&quot;'''
Support 2Bus 002 Device 003: ID 0bda:c820 Realtek Semiconductor Corp.4G WIFI+BT4 802.011ac NIC|}::{| [[Fileclass="wikitable" style="background-color:#ffffdc;width:pi3b-img240.png]]800px;"
|-
| 2orangepi@orangepi:~$ '''lsusb | RTL8811grep &quot;Realtek&quot;'''
Support 2Bus 002 Device 002: ID 0bda:1a2b Realtek Semiconductor Corp.4G +5G WIFI RTL8188GU 802.11n WLAN Adapter ('''<span style="color:blue">Driver CDROM Mode</span>''')
| [[File:pi3b-img241.png]]
|-
| 3
| RTL8821CU
 
Support 2.4G +5G WIFI
Support BT 4<big>'''If the USB WIFI module seen by the lsusb command is in Driver CDROM Mode, please unplug the USB WIFI module again.2If not, please manually execute the following command to switch to the next mode:'''</big>
| <div class="figure">
[[Fileorangepi@orangepi:pi3b~$ '''sudo usb_modeswitch -img242.pngKW -v 0bda -p 1a2b'''|tb_imag e_share_1670833201 123]]}
<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</divli>{| class="wikitable" style="width:800px;" |-|<p>orangepi@orangepi:~$ '''lsmod'''</p><span style="margin-right: 100px;">Module </span><span style="margin-right: 50px;">Size </span><span style="margin-right: 45px;">Used by</span><br><span style="margin-right: 100px;">8821cu </span><span style="margin-right: 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'''
<span id="rtl8723bu-test"></span>==== RTL8723BU test ====......
# First insert the RTL8723BU wireless network card module into the [ 57.083693] usb 2-1: new high-speed USB interface of the development board# Then the Linux system will automatically load the RTL8723BU Bluetooth and WiFi device number 2 using ehci-related kernel modules. You can see that the kernel module below is automatically loaded through the lsmod commandplatform
orangepi@orangepi[ 57.231888] usb 2-1:~$ '''lsmod'''New USB device found, idVendor=0bda, idProduct=1a2b, bcdDevice= 2.00
Module Size Used by[ 57.231916] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
rfcomm 57344 16[ 57.231937] usb 2-1: Product: DISK
rtl8xxxu 106496 0[ 57.231956] usb 2-1: Manufacturer: Realtek
rtk_btusb 61440 [ 57.242594] usb-storage 2-1:1.0: USB Mass Storage device detected
<ol start="3" style="list[ 57.245674] scsi host0: usb-stylestorage 2-type1: decimal;"><li>You can see the loading information of the RTL8723BU module through the dmesg command</li></ol>1.0
orangepi@orangepi[ 58.069172] usb 2-1:~$ '''dmesg'''USB disconnect, device number 2
[ 58......440025] usb 2-1: new high-speed USB device number 3 using ehci-platform
[ 8358.438901587819] usb 2-1: new high-speed New USB device number found, idVendor=0bda, idProduct=c820, bcdDevice= 2 using ehci-platform.00
[ 8358.588375587827] usb 2-1: New USB device found, idVendorstrings: Mfr=0bda1, idProductProduct=b7202, bcdDeviceSerialNumber= 2.003
[ 8358.588403587833] usb 2-1: New USB device stringsProduct: Mfr=1, Product=2, SerialNumber=3802.11ac NIC
[ 8358.588422587838] usb 2-1: ProductManufacturer: 802.11n WLAN AdapterRealtek
[ 8358.588443587844] usb 2-1: ManufacturerSerialNumber: Realtek123456
[ 8358.588460610463] usb 2rtk_btusb: Realtek Bluetooth USB driver ver 3.1.6d45ddf.20220519-1: SerialNumber: 00e04c000001142432
[ 8358.601974610656] Bluetoothusbcore: hci0: RTL: examining hci_ver=06 hci_rev=000b lmp_ver=06 lmp_subver=8723registered new interface driver rtk_btusb
[ 8358.603894634631] Bluetooth: hci0: RTL: rom_version statusexamining hci_ver=0 version08 hci_rev=1000c lmp_ver=08 lmp_subver=8821
[ 8358.603920636729] Bluetooth: hci0: RTL: loading rtl_bt/rtl8723b_fw.binrom_version status=0 version=1
[ 8358.610108636740] Bluetooth: hci0: RTL: loading rtl_bt/rtl8723b_configrtl8821c_fw.bin
[ 8358.611274664190] Bluetooth: hci0: RTL: cfg_sz 68, total sz 22564loading rtl_bt/rtl8821c_config.bin
[ 8358.658494664746] rtk_btusbBluetooth: hci0: RTL: Realtek Bluetooth USB driver ver 3.1.6d45ddf.20220519-142432cfg_sz 10, total sz 31990
[ 8359.658651122471] usbcoreBluetooth: registered new interface driver rtk_btusbhci0: RTL: fw version 0x829a7644
[ 8359.667124265513] usb 2-1usbcore: This Realtek USB WiFi dongle (0x0bda:0xb720) is untested!registered new interface driver rtl8821cu
[ 8359.667137280119] usb rtl8821cu 2-1: Please report results to Jes1.Sorensen@gmail.com2 wlx90de80521825: renamed from wlan0|}</ol>
<ol start="5" style="list-style-type: decimal;"><li>Then you can see the RTL8821CU WiFi device node through the '''sudo ifconfig''' command. Please refer to the [[ 83Orange Pi 3B#WIFI connection test|'''WiFi connection test chapter''']] for WIFI connection and testing methods.890140] usb 2</li>{| class="wikitable" style="width:800px;" |-1: Vendor| orangepi@orangepi: Realtek~$ '''sudo ifconfig wlx90de80521825'''
[ 83.890153] usb 2-1wlx90de80521825: Product: 802.11n WLAN Adapterflags=4099&lt;UP,BROADCAST,MULTICAST&gt; mtu 1500
[ 83.890159] usb 2-1: rtl8723bu_parse_efuse: dumping efuse ether 00:13:ef:f4:58:ae txqueuelen 1000 (0x200 bytesEthernet):
::RX packets 0 bytes 0 (0......0 B)
[ 83.890412] usb 2-1: RTL8723BU rev E (SMIC) 1T1R, TX queues 3, WiFi=1, BT=1, GPS=:RX errors 0 dropped 0 overruns 0, HI PA=frame 0
[ 83.890417] usb 2-1: RTL8723BU MAC: 00:13:ef:f4:58:aeTX packets 0 bytes 0 (0.0 B)
[ 83.890421] usb 2::TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0|}</ol><ol start="6" style="list-style-1type: rtl8xxxudecimal;"><li>Then you can see the USB Bluetooth device through the '''hciconfig''' command</li>{| class="wikitable" style="width: Loading firmware rtlwifi/rtl8723bu_nic.bin800px;" |-| orangepi@orangepi:~$ '''sudo apt-get update &amp;&amp; sudo apt-get install -y bluez'''
[ 83.895289] usb 2-1orangepi@orangepi: Firmware revision 35.0 (signature 0x5301)~$ '''hciconfig'''
[ 84.050893] Bluetoothhci0: hci0Type: Primary Bus: RTL'''<span style="color: fw version 0x0e2f9f73#FF0000">USB</span>'''
[ 84.266905] Bluetooth: RFCOMM TTY layer initialized:BD Address: 00:13:EF:F4:58:AE ACL MTU: 820:8 SCO MTU: 255:16
[ 84.266949] Bluetooth: RFCOMM socket layer initialized:DOWN
[ 84.266999] Bluetooth: RFCOMM ver 1.11:RX bytes:1252 acl:0 sco:0 events:125 errors:0
[ 84::TX bytes:23307 acl:0 sco:0 commands:125 errors:0|}</ol><ol start="7" style="list-style-type: decimal;"><li>Bluetooth icons can also be seen on the desktop.884270] usbcoreAt this time, Bluetooth has not been turned on, so a red '''<span style="color: registered new interface driver rtl8xxxu#FF0000">x</span>''' will be displayed</li>
[ 84[File:pi3b-img243.912046png]] rtl8xxxu 2</ol><ol start="8" style="list-style-1:1.2 wlx0013eff458aetype: renamed from wlan0decimal;"><li>Click '''Turn Bluetooth On''' to turn on Bluetooth</li>
[[File:pi3b-img244.png]]</ol><ol start="49" style="list-style-type: decimal;"><li>Then you can see the RTL8723BU WIFI device node through the '''sudo ifconfig''' command. Please refer to the WIFI connection test a [[\l|'''section for WIFI connection''']] and testing methodsThe display after turning on Bluetooth is as follows</li></ol>
orangepi@orangepi[[File:~$ pi3b-img245.png]]</ol><ol start="10" style="list-style-type: decimal;"><li>Please refer to the [[Orange Pi 3B#How to use Bluetooth|'''Bluetooth use chapter'sudo ifconfig wlx0013eff458ae'']] for the Bluetooth test method. I won't go into details here</li></ol>
wlx0013eff458ae: flags<span id=4099&lt;UP,BROADCAST,MULTICAST&gt; mtu 1500"usb-camera-test"></span>
ether 00:13:ef:f4:58:ae txqueuelen 1000 (Ethernet)=== USB Camera Test ===
RX packets 0 bytes 0 (0.0 B)# First, you need to prepare a USB camera that supports UVC protocol as shown in the figure below or similar, and then insert the USB camera into the USB port of the Orange Pi development board
RX errors 0 dropped 0 overruns 0 frame 0::[[File:pi3b-img13.png]]
TX packets 0 bytes 0 (0.0 B)<ol start="2" style="list-style-type: decimal;"><li>You can see that the USB camera's device node information is/dev/video0 through the v4l2-ctl command</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''v4l2-ctl --list-devices'''
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0Q8 HD Webcam: Q8 HD Webcam ('''<span style="color:#FF0000">usb</span>'''-fc880000.usb-1):
:'''<ol start="5" span style="list-style-typecolor: decimal;blue">/dev/video0<li/span>Then you can see the USB Bluetooth device through the '''hciconfig''' command</li></ol>
orangepi@orangepi:~$ '''sudo apt update &amp;&amp; sudo apt install bluez'''/dev/video1
orangepi@orangepi:~$ /dev/media0|}{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''hciconfigNote that the l in v4l2 is a lowercase letter l, not the number 1.'''
hci0: Type: Primary Bus: '''USB'''
BD Address'''In addition, the serial number of the video is not necessarily video0, please refer to what you actually see.'''</big>|}</ol><ol start="3" style="list-style-type: 00decimal;"><li>In the desktop system, Cheese can be used to directly open the USB camera. The method of opening Cheese is shown in the figure below:13:EF:F4:58:AE ACL MTU: 820:8 SCO MTU: 255:16</li>
DOWN[[File:pi3b-img246.png]]
RX bytesThe interface after Cheese turns on the USB camera is shown in the figure below:1252 acl:0 sco:0 events:125 errors:0
TX bytes[[File:23307 aclpi3b-img247.png]]</ol><ol start="4" style="list-style-type:0 scodecimal;"><li><p>How to test the USB camera using fswebcam</p><ol style="list-style-type:0 commandslower-alpha;"><li>Install fswebcam</li>{| class="wikitable" style="width:125 errors800px;" |-| orangepi@orangepi:0~$ '''sudo''' '''apt update'''
orangepi@orangepi:~$ '''sudo apt-get install -y fswebcam'''|}</ol><ol start="62" style="list-style-type: decimallower-alpha;"><li>You <p>After installing fswebcam, you can also see use the Bluetooth icon on following command to take pictures</p><ol style="list-style-type: none;"><li><p>a) -d The option is used to specify the desktop. At this time, Bluetooth has not been opened, so a red '''x''' will be displayeddevice node of the USB camera</p></li><li><p>b) --no-banner Used to remove the watermark of photos</p></olli><li><p>c) -r The option is used to specify the resolution of the photo</p></li>[[File:pi3b<li><p>d) -img243S The option is used to set the number of previous frames to skip</p></li><li><p>e) ./image.pngjpg The name and path for setting the generated photos</p></li>{|576x157px]] <ol startclass="7wikitable" style="list-style-typewidth: decimal800px;"><li>Click |-| orangepi@orangepi:~$ '''sudo'''Turn Bluetooth On''' to open Bluetooth<fswebcam -d /li><dev/ol>video0 \'''
'''--no-banner -r 1280x720 -S 5 ./image.jpg'''|}</ol></li></ol><ol start="3" style="list-style-type: lower-alpha;"><li>In the desktop version of the Linux system, you can directly view the captured pictures through the HDMI display</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''scp image.jpg''' [[Filemailto:test@192.168.1.55:pi3b-img244/home/test test@192.168.1.png55:/home/test] '''(Modify the IP address and path according to the actual situation)'''|576x262px]]}</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>
<ol start="8" style="list-style-type: decimal;"><li>The display after opening Bluetooth is shown below</li></ol>Audio Test ==
[[File:pi3b<span id="test-img245.png|576x164px]]audio-methods-in-the-desktop-system"></span>=== Test audio methods in the desktop system ===
<ol start="9" style="list-style-type: decimal;"><li>Please refer to # First open the [[\l|'''Bluetooth use method''']] for Bluetooth test method, so I won't go into details here.</li></ol>file manager
<span id="rtl8811::[[File:pi3b-test"></span>==== RTL8811 test ====img248.png]]
# First insert the RTL8811 wireless network card module into the USB interface of the development board.<ol start="2" style="list-style-type: decimal;"># <li>Then find the following file (if there is no audio file in the Linux system will automatically load the RTL8811 WIFI -related kernel modules. You , you can see that upload a audio file to the kernel module below is automatically loaded through the lsmod commandsystem by yourself)</li>
orangepi@orangepi:~$ '''lsmod'''<div class="figure">
Module Size Used by 8821cu 1839104 0[[File:pi3b-img249.png]]
</div></ol>
<ol start="3" style="list-style-type: decimal;">
<li>You can see Then select the loading information of the RTL8811 module through the dmesg commandaudio.wav file, right click and select open with vlc to start playing</li></ol>
orangepi@orangepi[[File:~$ '''dmesg'''pi3b-img250.png]]</ol><ol start="4" style="list-style-type: decimal;"><li><p>Methods to switch different audio equipment such as HDMI playback and headset playback</p><ol style="list-style-type: lower-alpha;"><li>First open the volume control interface</li>
[ 118[File:pi3b-img251.618194png]] usb </ol><ol start="2" style="list-style-1type: new highlower-speed USB device number 2 using ehci-platformalpha;"><li>When playing audio, the audio equipment options that play software can be used will be displayed in '''Playback'''. As shown in the figure below, which audio equipment you need to play here can be set.</li>
[ 118[File:pi3b-img252.767152png]] usb 2</ol></li></ol><span id="how-1: New USB device found, idVendor=0bda, idProduct=c811, bcdDevice= 2.00to-play-audio-with-commands"></span>
[ 118.767181] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3How to play audio with commands ===
[ 118.767199] usb 2<span id="headphone-1: Product: 802.11ac NICinterface-play-audio-test"></span>==== Headphone interface play audio test ====
[ 118.767219] usb 2-1: Manufacturer: Realtek# First insert the headset into the headphone jack of the development board
::[ 118[File:pi3b-img253.767235png]] usb 2-1: SerialNumber: 123456
[ 119<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''' command.500530] usbcore: registered new interface driver rtl8821cuFrom 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>
[ 119.525498] rtl8821cu 2{| class="wikitable" style="width:800px;" |-1| orangepi@orangepi:1.0 wlx1cbfced9d260: renamed from wlan0~$ '''aplay -l'''
<ol start="4" style="list-style-type: decimal;"><li>Then you can see the WiFi device node through the '''sudo ifconfig''' command. Please refer to the [[\l|'''WiFi connection test a section''']] for WIFI connection and testing methods. I won't go into details her</lip>**** List of PLAYBACK Hardware Devices ****</olp>
orangepi@orangepi:~$ '''sudo ifconfig wlx1cbfced9d260card 0: rockchiprk809 [rockchip-rk809], device 0: dailink-multicodecs rk817-hifi-0 [dailink-multicodecs rk817-hifi-0]'''
wlx1cbfced9d260: flags=4099&lt;UP,BROADCAST,MULTICAST&gt; mtu 1500'''Subdevices: 0/1'''
ether 1c:bf'''Subdevice #0:ce:d9:d2:60 txqueuelen 1000 (Ethernet)subdevice #0'''
RX packets card 1: rockchiphdmi [rockchip,hdmi], device 0 bytes 0 (: fe400000.i2s-i2s-hifi i2s-hifi-0[fe400000.i2s-i2s-hifi i2s-hifi-0 B)]
RX errors 0 dropped 0 overruns 0 frame :Subdevices: 0/1
TX packets :Subdevice #0 bytes : subdevice #0 (0.0 B)
TX errors :Subdevice #0 dropped 0 overruns 0 carrier 0 collisions : subdevice #0|}</ol><ol start="3" style="list-style-type: decimal;"><li>Then use the '''aplay''' command to play the audio file that comes with the system. If the headset can hear the sound, it means that the hardware can be used normally</li>
<span id{| class="rtl8821cuwikitable" style="width:800px;" |-test"><| orangepi@orangepi:~$ '''aplay -D hw:0,0 /usr/share/sounds/alsa/span>==== RTL8821CU test ====audio.wav'''
# First insert the rtl8821cu wireless network card module into the USB interface of the development board# Then use the Playing WAVE 'audio.wav''lsusb''' command to see the device information of the rtl8821cu usb wifi module. Make sure the USB module is not in the Driver CDROM Mode: Signed 16 bit Little Endian, Rate 44100 Hz, Stereo|}</ol><span id="hdmi-audio-play-test"></span>
orangepi@orangepi:~$ '''lsusb | grep &quot;Realtek&quot;'''==== HDMI Audio Play Test ====
Bus 002 Device 003: ID 0bda:c820 Realtek Semiconductor Corp# First use the HDMI to HDMI cable to connect the Orange PI development board to the TV (other HDMI displays need to ensure that the audio can be played)# Then check the sound card serial number of HDMI. 802.11ac NICFrom the output below, you can know that the HDMI sound card is '''card 1'''
::{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''lsusb | grep &quot;Realtek&quot;aplay -l'''
Bus 002 Device 002: ID 0bda:1a2b Realtek Semiconductor Corp. RTL8188GU 802.11n WLAN Adapter ('''Driver CDROM Mode''')<p>**** List of PLAYBACK Hardware Devices ****</p>
'''If the USB WIFI module seen by the lsusb command is in Driver CDROM Mode, re card 0: rockchiprk809 [rockchip-insert the USB WiFi module. If notrk809], please manually execute the following command to switch the modedevice 0: '''dailink-multicodecs rk817-hifi-0 [dailink-multicodecs rk817-hifi-0]
orangepi@orangepi:~$ '''sudo usb_modeswitch -KW -v 0bda -p 1a2b'''Subdevices: 0/1
<ol start="3" style="list-style-type: decimal;"><li>The Linux system will automatically load the RTL8821CU Bluetooth and WIFI -related kernel modules. You can see that the kernel module below is automatically loaded through the lsmod command</li></ol>Subdevice #0: subdevice #0
orangepi@orangepi:~$ '''lsmodcard 1: rockchiphdmi [rockchip,hdmi], device 0: fe400000.i2s-i2s-hifi i2s-hifi-0 [fe400000.i2s-i2s-hifi i2s-hifi-0]'''
Module Size Used by:'''Subdevices: 0/1'''
8821cu 1839104 :'''Subdevice #0: subdevice #0'''
rtk_btusb 61440 :'''Subdevice #0: subdevice #0'''|}
<ol start="43" style="list-style-type: decimal;"><li>You Then use the '''aplay''' command to play the audio file that comes with the system. If the HDMI display or television can see hear the loading information of sound indicates that the rtl8821cu module through the dmesg commandhardware can be used normally</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''aplay -D hw:<span style="color:#FF0000">1</span>,0 /usr/share/sounds/alsa/audio.wav'''|}</ol><span id="use-the-command-to-test-the-recording-method"></span>
orangepi@orangepi:~$ '''dmesg'''=== Use the command to test the recording method ===
# Orange Pi 3B development board does not have MICs, and can only record audio through headphones with MIC function......After inserting the headset with the MIC function into the development board, the command below will record a piece of audio through the headset
[ 57.083693] usb 2-1: new high:{| class="wikitable" style="width:800px;" |-speed USB device number 2 using ehci-platform| [ 57.231888] usb 2orangepi@orangepi:~$ '''amixer -1: New USB device found, idVendor=0bda, idProduct=1a2b, bcdDevicec 0 cset name= 2.00'Capture MIC Path' 'Main Mic''''
[ 57.231916] usb 2orangepi@orangepi:~$ '''arecord -1D hw: New USB device strings: Mfr=10, Product=2, SerialNumber=0-d 5 -f cd -t wav /tmp/test.wav'''|}
[ 57.231937] usb 2<span id="temperature-1: Product: DISKsensor"></span>
[ 57.231956] usb 2-1: Manufacturer: Realtek== Temperature Sensor ==
[ 57.242594] usb-storage 2-1# The command to view the system temperature sensor is:1.0: USB Mass Storage device detected
[ 57.245674] scsi host0: usb-storage 2:{| class="wikitable" style="width:800px;" |-1| orangepi@orangepi:1.0~$ '''sensors'''
[ 58.069172] usb 2soc_thermal-1: USB disconnect, device number 2virtual-0
[ 58.440025] usb 2-1Adapter: new high-speed USB Virtual device number 3 using ehci-platform
[ 58temp1: +41.587819] usb 2-1: New USB device found, idVendor=0bda, idProduct=c820, bcdDevice9°C (crit = 2+115.000°C)
[ 58.587827] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 58.587833] usb 2gpu_thermal-1: Product: 802.11ac NICvirtual-0
[ 58.587838] usb 2-1Adapter: Manufacturer: RealtekVirtual device
[ 58temp1: +43.587844] usb 2-1: SerialNumber: 1234568°C|}
[ 58.610463] rtk_btusb<ol start="2" style="list-style-type: Realtek Bluetooth USB driver ver 3.1.6d45ddf.20220519decimal;"><li><p>The command to view the current temperature of the nvme ssd solid state drive is:</p>{| class="wikitable" style="width:800px;" |-142432| <p>orangepi@orangepi:~$ '''sudo smartctl -a /dev/nvme0 | grep &quot;Temperature:&quot;'''</p><p>Temperature: '''<span style="color:#FF0000">40 Celsius</span>'''</p>|}</li></ol>
[ 58.610656] usbcore: registered new <span id="pin-interface driver rtk_btusb-pin-explanation"></span>
[ 58.634631] Bluetooth: hci0: RTL: examining hci_ver=08 hci_rev=000c lmp_ver40 Pin interface pin explanation =08 lmp_subver=8821
[ 58.636729] Bluetooth: hci0: RTL: rom_version status=0 version=1# Orange Pi 3B Development board 40 Pin interface pins, please refer to the figure below
[ 58.636740] Bluetooth: hci0: RTL: loading rtl_bt/rtl8821c_fw.bin<div class="figure">
[ 58.664190] Bluetooth: hci0: RTL[[File: loading rtl_bt/rtl8821c_configpi3b-img254.binpng]]
[ 58</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.664746] Bluetooth: hci0: RTL</p><ol style="list-style-type: cfg_sz 10, total sz 31990lower-alpha;"><li>Below is a complete pins of 40pin</li>
[ 59[File:pi3b-img255-1.122471png]] Bluetooth: hci0: RTL</ol><ol start="2" style="list-style-type: fw version 0x829a7644lower-alpha;"><li>The following form is a picture on the left half of the full table above, which can be seen clearly</li>
[ 59[File:pi3b-img256-1.265513png]] usbcore</ol><ol start="3" style="list-style-type: registered new interface driver rtl8821culower-alpha;"><li>The following form is a picture on the right half of the top table above, which can be seen clearly</li>
[ 59[File:pi3b-img257-1.280119png]] rtl8821cu 2</ol></li></ol><ol start="3" style="list-style-1type: decimal;"><li>There are a total of '''<span style="color:1#FF0000">28</span>''' GPIO ports in the 40pin interface.2 wlx90de80521825The voltage of all GPIO ports is '''<span style="color: renamed from wlan0#FF0000">3.3v</span>'''</li></ol>
<ol startspan id="5" style="listhow-to-styleinstall-type: decimal;wiringop"><li>Then you can see the RTL8821CU WiFi device node through the '''sudo ifconfig''' command. Please refer to the [[\l|'''WiFi connection test''']] a section for WIFI connection and testing methods.</li></olspan>
orangepi@orangepi:~$ '''sudo ifconfig wlx90de80521825'''== How to install wiringOP ==
wlx90de80521825{| class="wikitable" style="background-color:#ffffdc;width: flags=4099&lt800px;UP" |-| <big>'''Note that wiringOP has been pre -installed in the Linux image released by Orange Pi. Unless wiringOP's code is updated,BROADCAST,MULTICAST&gt; mtu 1500it is not necessary to re -download and install. Just use it directly.'''
ether 00:13:ef:f4:58:ae txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)'''The storage path of the compiled wiringOP's Deb is wrapped in Orangepi-Build:'''
RX errors 0 dropped 0 overruns 0 frame 0'''<span style="color:blue">orangepi-build/external/cache/debs/arm64/wiringpi_x.xx.deb</span>'''
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 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>
<ol startdiv class="6figure" style="list-style-type: decimal;"><li>Then you can see the USB Bluetooth device through the '''hciconfig''' command</li></ol>
orangepi@orangepi[[File:~$ '''sudo aptpi3b-get update &amp;&amp; sudo aptimg258-get install -y bluez'''1.png]]
orangepi@orangepi:~$ </div><big>'''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.'''</big>|}
hci0: Type: Primary Bus: '''USB'''# Download the code of wiringOP
BD Address: 00:13{| class="wikitable" style="width:EF800px;" |-| orangepi@orangepi:F4:58:AE ACL MTU: 820:8 SCO MTU: 255:16~$ '''sudo apt update'''
DOWNorangepi@orangepi:~$ '''sudo apt install -y git'''
RX bytesorangepi@orangepi:1252 acl~$ '''git clone https:0 sco:0 events:125 errors:0//github.com/orangepi-xunlong/wiringOP.git -b next'''|}
TX bytes:23307 acl:0 sco{| class="wikitable" style="background-color:0 commands#ffffdc;width:125 errors:0800px;" |-| <big>'''Note that Orange Pi 3B needs to download the code of the wiringOP next branch, please don't miss the parameter of -b next.'''
<ol start="7" style="list-style-type: decimal;">
<li>Bluetooth icons can also be seen on the desktop. At this time, Bluetooth has not been opened, so a red '''x''' will be displayed</li></ol>
[[File'''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:pi3b-img243.png/usr/src/wiringOP'''</big>|576x157px]]}
<ol start="82" style="list-style-type: decimal;"><li>Click '''Turn Bluetooth On''' to open BluetoothCompile and install wiringOP</li></ol>
[[File{| class="wikitable" style="width:pi3b800px;" |-img244.png|576x262px]]orangepi@orangepi:~$ '''cd wiringOP'''
<ol start="9" style="list-style-typeorangepi@orangepi: decimal;"><li>The display after opening Bluetooth is shown below<~/li><wiringOP$ '''sudo ./ol>build clean'''
[[Fileorangepi@orangepi:pi3b-img245~/wiringOP$ '''sudo .png/build'''|576x164px]]}</ol><ol start="3" style="list-style-type: decimal;"><li>Test the output of the GPIO Readall command as follows</li>
<ol startdiv class="10figure" style="list-style-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>
<span id="usb[[File:pi3b-cameraimg258-test"></span>=== USB Camera Test ===1.png]]
# First, you need to prepare a USB camera that supports the UVC protocol in the figure below, </div></ol><span id="pin-interface-gpio-i2c-uart-spi-and then insert the USB camera into the USB interface of the Orange PI development board-pwm-test"></span>
[[File:pi3b-img13.png|259x150px]]== 40Pin interface GPIO, I2C, UART, SPI, and PWM test ==
<ol start{| class="2wikitable" style="listbackground-style-typecolor:#ffffdc;width: decimal800px;">|-| <libig>You can see '''Note that if you need to set overlays to open multiple configurations at the USB camerasame time, please use a space to write in one line like the following space.'''s device node information is/dev/video0 through the v4l2-ctl command</li></olbig>
orangepi@orangepi:~$ '''v4l2-ctl --list-devicessudo vim /boot/orangepiEnv.txt'''
Q8 HD Webcam: Q8 HD Webcam ('''usb<span style="color:#FF0000">overlays=spi3-m0-cs0-spidev i2c2-m1 i2c3-m0 uart7-m2 uart9-m2 pwm11-m1</span>'''-fc880000.usb-1):|}
'''<span id="pin-gpio-port-test"></dev/video0'''span>=== 40pin GPIO port test ===
/dev/video1{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''The Linux system released by Orange Pi has a pre -installed blink_all_gpio program. This program will set up all 28 GPIO ports in 40pin to switch high and low levels.'''
/dev/media0
'''Note that l in v4l2 is After running the blink_all_gpio program, when using a lowercase letter lmultimeter to measure the level of the GPIO port, not numbers 1you will find that the GPIO pin will be switched between 0 and 3.3v.Use this program to test whether the GPIO port can work normally'''
'''In addition, Video's serial number is not necessarily Video0, please refer to what you see.'''
<ol start="3" style="list-style-type: decimal;"><li>In the desktop system, you can use Cheese to directly turn on the USB camera. '''The cheese opening method of running blink_all_gpio program is shown in the figure below: '''</li></olbig>
[[Fileorangepi@orangepi3b:pi3b-img246.png|474x302px]]~$ '''sudo blink_all_gpio''' &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #Remember to add Sudo permissions
The interface after cheese opens the USB camera is shown in the figure below[sudo] password for orangepi: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #You need to enter password here'''|}
[[File:pi3b-img247# There are a total of '''28''' GPIO ports in the 40pins of the development board that can be used.png|473x277px]]The following uses pin 7—the corresponding GPIO is GPIO4_C3——the corresponding wPi serial number is 2—as an example to demonstrate how to set the high and low levels of the GPIO port
<ol start="4" style="list-style-type: decimal;"><li><p>How to test the USB camera using fswebcam</p><ol style="list:[[File:pi3b-style-type: lowerimg259-alpha;"><li>Install fswebcam</li></ol></li></ol>1.png]]
orangepi@orangepi<ol start="2" style="list-style-type:~$ '''sudo''' '''apt update'''decimal;"><li>First set the GPIO port as the output mode, the third parameter needs to enter the serial number of the wPi corresponding to the pins</li>
orangepi{| class="wikitable" style="width:800px;" |-| root@orangepi:~$ /wiringOP# '''sudo apt-get install -y fswebcamgpio mode <span style="color:#FF0000">2</span> out'''|}</ol><ol start="3" style="list-style-type: decimal;"><li>Then set the GPIO port to output the low level. After setting, you can use the value of the voltage of the pins with a multimeter. If it is 0v, it means that the low level flat is successful</li>
<ol start{| class="2wikitable" style="list-style-typewidth: lower-alpha800px;"><li><p>After installing fswebcam, you can use the following command to take pictures<|-| root@orangepi:~/p>wiringOP# '''gpio write 2 <ol span style="list-style-typecolor: lower-alpha;#FF0000"><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>0</lispan>'''<li><p>./image.jpg The name and path for setting the generated photos</p></li></ol></li></ol>|}
orangepi@orangepi:~$ '''sudo''' '''fswebcam -d /dev/video0 \'''Using GPIO Readall, you can see the value of the No. 7 pin (V) to 0
'''[[File:pi3b-img260.png]]</ol><ol start="4" style="list-nostyle-banner -r 1280x720 -S 5 type: decimal;"><li>Then set the GPIO port to output a high level. After setting, you can use a multimeter to measure the voltage value of the pin. If it is 3.3v, it means that the high level is set successfully.</image.jpg'''li>
<ol start{| class="3wikitable" style="list-style-typewidth: lower-alpha800px;">|-| root@orangepi:~/wiringOP# '''gpio write 2 <lispan style="color:#FF0000">In the service version of the Linux system, you can use the scp command to pass the picture to the Ubuntu PC to watch after taking the photo1</li></olspan>'''|}
orangepi@orangepi:~$ '''scp image.jpg''' [mailto:test@192.168.1.55:/home/test test@192.168Using GPIO Readall, you can see the value of No. 7 pin (v) into 1.55:/home/test] '''(Modify the IP address and path according to the actual situation)'''
[[File:pi3b-img261-1.png]]</ol><ol start="45" style="list-style-type: lower-alphadecimal;"><li>In The setting method of other pins is similar, just modify the desktop version serial number of wPi to the Linux system, you can directly view the shot pictures through corresponding serial number of the HDMI displaypin</li></ol>
<span id="audiopin-testgpio-port--down-and-downward-pull--down-resistance-setting-method"></span>== Audio Test ==
<span id="test-audio-methods-in-the-desktop-system"></span>=== Test audio methods in the desktop system 40pin GPIO port pull-down resistance setting method ===
{| class="wikitable" style="background-color:# First open ffffdc;width:800px;" |-| <big>'''Note that the file manager4 GPIO pins below Orange Pi 3B are invalid because there are 3.3V on the outside, so setting drop-down is invalid. Other pins can be set normally '''</big>
[[File:pi3b-img248img262-1.png|357x176pxcenter]]|}
<ol start="2" style="list# Below the No. 11 pin—corresponding to GPIO 3_C6-stylecorresponding wPi serial number 5—to demonstrate how to set up and down pull-type: decimal;"><li>Then find the following file (if there is no audio file in the system, you can upload a audio file to down resistance of the system by yourself)</li></ol>GPIO port
<div class="figure">::[[File:pi3b-img263-1.png]]
[[File<ol start="2" style="list-style-type:pi3b-img249decimal;"><li>First of all, you need to set the GPIO port as the input mode.pngThe third parameter needs to enter the serial number of the wPi corresponding to the pins</li>{| class="wikitable" style="width:800px;" |236x186px-|图片10]]root@orangepi:~/wiringOP# '''gpio mode <span style="color:#FF0000">5</span> in'''|}</divol>
<ol start="3" style="list-style-type: decimal;">
<li>Then select After the audio.wav filesetting is set to input mode, right execute the following command to set the GPIO port as the pull-click and select VLC to open it to start playingdown mode</li>{| class="wikitable" style="width:800px;" |-| root@orangepi:~/wiringOP# '''gpio mode <span style="color:#FF0000">5</olspan>up''' [[File:pi3b-img250.png|288x234px]]}</ol>
<ol start="4" style="list-style-type: decimal;">
<li><p>Methods Then enter the following command to switch different audio equipment such as HDMI playback and headset playbackread the level of the GPIO port. If the level is 1, it means that the drawing mode is successful</pli><ol {| class="wikitable" style="list-style-typewidth: lower-alpha800px;"><li>First open the volume control interface<|-| root@orangepi:~/li>wiringOP# '''gpio read </ol></lispan style="color:#FF0000">5</olspan>'''
[[File'''<span style="color:pi3b#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-img251type: decimal;"><li>Then enter the following command to read the level of the GPIO port.pngIf the level is 0, it means that the drop-down mode is set successfully</li>{|308x169px]]class="wikitable" style="width:800px;" |-| root@orangepi:~/wiringOP# '''gpio read <span style="color:#FF0000">5</span>'''
'''<ol start="2" span style="list-style-typecolor: lower-alpha;#FF0000">0<li/span>When playing audio, the audio equipment options that play software can be used will be displayed in '''Playback'''. As shown in the figure below, which audio equipment you need to play here can be set.|}</liol><span id="pin-spi-test"></olspan>
[[File:pi3b-img252.png|576x282px]]=== 40pin SPI Test ===
<span id="how-to-play-audio-with-commands"></span>=== How to play audio with commands === <span id="headphone-interface-play-audio-test"></span>==== Headphone interface play audio test ==== # First insert From the headset into schematic diagram of the headphone jack of 40PIN interface, the development boardSPI available for Orange Pi 3B is spi3
::[[File:pi3b-img253img264-1.png|395x112px]]
<ol start="2" style="list-style-type: decimal;">
<li>Then you can check the sound card device supported by <p>In the Linux linux system through , the '''aplay -l''' command. From SPI in the output below40 pin is closed by default, and it needs to be opened manually before it can be seen that used. The detailed steps are as follows:</p><ol style="list-style-type: lower-alpha;"><li><p>First run '''card 0orangepi-config''' is the sound card device with RK809, which is the sound card device of the headsetnormal users remember to add sudo permission</lip>{| class="wikitable" style="width:800px;" |-| </olp> orangepi@orangepi:~$ '''aplay sudo orangepi-lconfig'''</p>|}</li>**** List of PLAYBACK Hardware Devices ****<li><p>Then select '''System'''</p><p>[[File:pi3b-1.png]]</p></li><li><p>Then select '''Hardware'''card 0</p><p>[[File: rockchiprk809 [rockchippi3b-rk8092.png]]</p></li><li><p>Then use the arrow keys on the keyboard to navigate to the position shown in the figure below, device 0and then use the '''space''' to select the SPI configuration you want to open</p><p>[[File: dailinkpi3b-multicodecs rk8173.png]]</p></li><li><p>Then select '''<Save>''' to save</p><p>[[File:pi3b-hifi-0 4.png]]</p></li><li><p>Then select '''<Back>'''</p><p>[[dailinkFile:pi3b-multicodecs rk817-hifi-05.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>
'''Subdevices<ol start="3" style="list-style-type: decimal;"><li>After restarting, enter the system to check whether there is a spidev3.0device node in the Linux system. If it exists, it means that SPI3 has been set up and can be used directly</1'''li>
{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''Subdevice #0: subdevice #ls /dev/spidev3.0'''
card 1: rockchiphdmi [rockchip,hdmi], device 0: fe400000/dev/spidev3.i2s-i2s-hifi i2s-hifi-0 [fe400000.i2s|}</ol><ol start="4" style="list-i2sstyle-hifi i2stype: decimal;"><li>Do not short-hifi-0]circuit the mosi and miso pins of SPI3, the output result of running spidev_test is as follows, you can see that the data of TX and RX are inconsistent</li>
Subdevices{| class="wikitable" style="width: 800px;" |-| orangepi@orangepi:~$ '''sudo spidev_test -v -D /dev/spidev3.0/1'''
Subdevice #0spi mode: subdevice #00x0
Subdevice #0bits per word: subdevice #08
<ol start="3" style="list-style-typemax speed: decimal;"><li>Then use the '''aplay''' command to play the audio file that comes with the system. If the headset can hear the sound, it means that the hardware can be used normally</li></ol>500000 Hz (500 KHz)
orangepi@orangepi:~$ TX | FF FF FF FF FF FF '''aplay -D hw<span style="color:0,0 #FF0000">40 00 00 00 00 95</usr/share/sounds/alsa/audio.wavspan>'''FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D | ......@.…▒..................▒.
Playing WAVE RX | FF FF FF FF FF FF 'audio''<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 | .....wav' .......................….|}</ol><ol start="5" style="list-style-type: Signed 16 bit Little Endiandecimal;"><li>Then short-circuit the two pins of mosi (pin 19 in the 40pin interface) and miso (pin 21 in the 40pin interface) of SPI3, Rate 44100 Hzand then run the output of spidev_test as follows, Stereoyou can see the sending and receiving same data</li>
<span id[[File:pi3b-img265.png]]{| class="wikitable" style="hdmiwidth:800px;" |-audio| orangepi@orangepi:~$ '''sudo spidev_test -playv -test"><D /dev/span>==== HDMI Audio Play Test ====spidev3.0'''
# First use the HDMI to HDMI cable to connect the Orange PI development board to the TV (other HDMI displays need to ensure that the audio can be played)# Then check the sound card serial number of HDMI. From the output below, you can know that the HDMI sound card is '''card 1'''spi mode: 0x0
orangepi@orangepibits per word:~$ '''aplay -l'''8
**** List of PLAYBACK Hardware Devices ****max speed: 500000 Hz (500 KHz)
card 0TX | FF FF FF FF FF FF '''<span style="color: rockchiprk809 [rockchip-rk809], device 0: dailink-multicodecs rk817-hifi-0 [dailink-multicodecs rk817-hifi-0]#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 | ......@.…▒..................▒.
SubdevicesRX | FF FF FF FF FF FF '''<span style="color: 0#FF0000">40 00 00 00 00 95</1span>''' 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"></span>
Subdevice #0: subdevice #0=== 40pin I2C Test ===
'''card 1: rockchiphdmi [rockchip# From the table below,hdmi]the I2C available for Orange Pi 3B is I2C2, device 0: fe400000.i2s-i2s-hifi i2s-hifi-0 [fe400000I2C3, and I2C4 a total of three groups of I2C bus.i2s-i2s-hifi i2s-hifi-0]'''
'''Subdevices: 0/:[[File:pi3b-img266-1'''.png]]
::{| 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'''</big>|} <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 ''Subdevice #0'sudo''' permission</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''sudo orangepi-config'''</p>|}</li><li><p>Then select '''System'''</p><p>[[File:pi3b-1.png]]</p></li><li><p>Then select '''Hardware'''</p><p>[[File:pi3b-2.png]]</p></li><li><p>Then use the arrow keys on the keyboard to navigate to the position shown in the figure below, and then use the '''space''' to select the I2C configuration you want to open</p><p>[[File: subdevice #0pi3b-3-2.png]]</p></li><li><p>Then select '''<Save>'''to save</p><p>[[File:pi3b-4.png]]</p></li><li><p>Then select '''<Back>''Subdevice #0'</p><p>[[File: subdevice #0pi3b-5.png]]</p></li><li><p>Then select '''<Reboot>'''to restart the system to make the configuration take effect</p><p>[[File:pi3b-6.png]]</p></li></ol></li></ol>
<ol start="3" style="list-style-type: decimal;">
<li>Then use the '''aplay''' command to play the audio file that comes with After starting the Linux system. If the HDMI display or television can hear the sound indicates , first confirm that the hardware can be used normallyi2c device node exists under/dev</li><{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~# '''ls /dev/ol>i2c-*'''
orangepi@orangepi:~$ /dev/i2c-0 &nbsp;&nbsp;&nbsp;&nbsp; '''aplay /dev/i2c-D hw:1,0 2''' &nbsp;&nbsp;&nbsp;&nbsp; '''/usrdev/sharei2c-3''' &nbsp;&nbsp;&nbsp;&nbsp; '''/soundsdev/alsa/audio.wavi2c-4'''&nbsp;&nbsp;&nbsp;&nbsp; /dev/i2c-6|}</ol><ol start="4" style="list-style-type: decimal;"><li>Then connect a i2c device on the i2c pin of the 40Pin connector</li>
<span id{| class="wikitable" style="usewidth:800px;text-align: center;"|-||i2c2-m1|i2c3-them0|i2c4-commandm0|-| Sda Pin|Corresponding toNo. 3 pin|Corresponding to No. 27 pin|Corresponding to No. 19 pin|-test| Sck Pin|Corresponding to No. 5 pin|Corresponding to No. 28 pin|Corresponding to No. 23 pin|-the| Vcc Pin|Corresponding to No. 1 pin|Corresponding to No. 1 pin|Corresponding to No. 1 pin|-recording-method">| Gnd Pin|Corresponding to No. 6 pin|Corresponding to No. 6 pin|Corresponding to No. 6 pin|}</spanol><ol start="5" style== Use "list-style-type: decimal;"><li>Then use the '''i2cdetect -y''' command to test if the address of the connected I2C device can be detected, it means that the recording method =I2C can be used normally</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ sudo i2cdetect -y 2 #i2c2 command
orangepi@orangepi:~$ sudo i2cdetect -y 3 # Orange Pi 3B development board does not have MICs, and can only record audio through headphones with MIC function. After inserting the headset with the MIC function into the development board, the i2c3 command below will record a piece of audio through the headset
orangepi@orangepi:~$ '''amixer sudo i2cdetect -c 0 cset name='Capture MIC Path' 'Main Mic''''y 4 #i2c4 command|}
orangepi@orangepi:~$ '''arecord -D hw:0,0 -d 5 -f cd -t wav /tmp/test.wav'''<div class="figure">
<span id="temperature[[File:pi3b-sensor"></span>== Temperature Sensor ==img267.png]]
# The command of the system temperature sensor is: </div></ol><span id="pin-uart-test"></span>
orangepi@orangepi:~$ '''sensors'''=== 40pin UART test ===
soc_thermal-virtual-0# As can be seen from the table below, the uart available for Orange Pi 3B is uart3, uart7, and uart9. There are three sets of uart bus
Adapter: Virtual device:[[File:pi3b-img268-1.png]]
temp1: +41.9°C (crit = +115.0°C) gpu_thermal-virtual-0 Adapter: Virtual device temp1: +43.8°C <ol start{| class="2wikitable" style="listbackground-style-typecolor:#ffffdc;width: decimal800px;"><li><p>The command of the current temperature of the NVMe SSD solid |-state hard disk is: </p><p>orangepi@orangepi:~$ '''sudo smartctl -a /dev/nvme0 | grep &quot;Temperature:&quot;'''</p><pbig>Temperature: '''40 CelsiusAs 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'''</p></li></ol> <span id="pin-interface-pin-explanation"></span>== 40 Pin interface pin explanation == # Orange Pi 3B Development board 40 Pin interface pins, please refer to the figure below <div class="figure"big[[File:pi3b-img254.png|400x124px|C:\Users\orangepi\Desktop\用户手册插图\pi 3b\Orange-Pi-3B-Development-board-40-Pin(1).jpgOrange-Pi-3B-Development-board-40-Pin(1)]]}
</div>
<ol start="2" style="list-style-type: decimal;">
<li><p>The function of In the linux system, the UART in the Orange Pi 3B development board 40 PIN interface pins is shown in the table belowclosed 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>Below is a complete pins of 40pin<p>First run '''orangepi-config''', normal users remember to add sudo permission</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''sudo orangepi-config'''</p>|}</li><li><p>Then select '''System'''</p><p>[[File:pi3b-1.png]]</p></li><li><p>Then select '''Hardware'''</p><p>[[File:pi3b-2.png]]</p></li><li><p>Then use the arrow keys on the keyboard to navigate to the position shown in the figure below, and then use the '''space''' to select the UART configuration you want to open</p><p>[[File:pi3b-3-3.png]]</p></li><li><p>Then select '''<Save>''' to save</p><p>[[File:pi3b-4.png]]</p></li><li><p>Then select '''<Back>'''</p><p>[[File:pi3b-5.png]]</p></li><li><p>Then select '''<Reboot>''' to restart the system to make the configuration take effect</p><p>[[File:pi3b-6.png]]</p></li></ol>
</li></ol>
[[File<ol start="3" style="list-style-type:pi3b-img255.png|575x160px]]decimal;"><li>After entering the Linux system, first confirm whether there is a device node corresponding to uart under/dev</li>
<ol start{| class="2wikitable" style="list-style-typewidth: lower-alpha800px;"><li>The following form is a picture on the left half of the full table above, which can be seen clearly<|-| orangepi@orangepi:~# '''ls /li><dev/ol>ttyS*'''
[[File/dev/ttyS1 &nbsp;&nbsp;&nbsp;&nbsp; '''/dev/ttyS3 &nbsp;&nbsp;&nbsp;&nbsp; /dev/ttyS7 &nbsp;&nbsp;&nbsp;&nbsp; /dev/ttyS9'''|}</ol><ol start="4" style="list-style-type:pi3b-img256.png|478x267px]]decimal;"><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="3wikitable" style="list-stylewidth:800px;text-typealign: lower-alphacenter;"><li>The following form is a picture on |-||uart3|uart7|uart9|-| Tx pin|Corresponding to the right half of 28 pin|Corresponding to the 16 pin|Corresponding to the top table above, which can be seen clearly</li></ol>29 pin|-| Rx Pin|Corresponding to the 27 pin|Corresponding to the 15 pin|Corresponding to the 22 pin|}
[[File:pi3b-img257img269-1.png|479x266px]]</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="3" style="list-style-type[sudo] password for orangepi: decimal;"><li>There are a total of '''28''' GPIO ports in #Enter the 40pin interfacepassword here. The voltage of all GPIO ports is '''3.3v'''</li></ol>
<span id="how-to-install-wiringop"></span>
== How to install Wiringop ==
'''Note that Wiringop has been pre Out: 0: -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.'''&gt; 0
'''The storage path of the compiled Wiringop's Deb is wrapped in OrangepiOut: 1: -Build: '''&gt; 1
'''orangepiOut: 2: -build/external/cache/debs/arm64/wiringpi_x.xx.deb'''&gt; 2
'''After entering the system, you can run the gpio readall command. If you can see the output below, it means that wiringOP is pre Out: 3: -installed and can be used normally.'''&gt; 3
<div class="figure">Out: 4: -&gt; 4
[[FileOut:pi3b5: -&gt; 5^C|}</ol><ol start="2" style="list-style-type: lower-img258.pngalpha;"><li>Test UART7</li>{|575x355pxclass="wikitable" style="width:800px;" |66AC(IBG%N8L-| orangepi@Y7(1BZPS`N]]orangepi:~$ '''sudo gpio serial /dev/ttyS7'''
</div>'''wiringOP is currently adapted to set [sudo] password for orangepi: #Enter the GPIO port input output, set the GPIO port output high and low level, and set the function of pulling and down resistance. It is impossible to use functions like hardware PWMpassword here.'''
# Download the code of Wiringop
orangepi@orangepiOut:~$ '''sudo apt update'''0: -&gt; 0
orangepi@orangepiOut: 1:~$ '''sudo apt install -y git'''&gt; 1
orangepi@orangepiOut:~$ '''git clone https2://github.com/orangepi-xunlong/wiringOP.git -b next'''&gt; 2
'''Note that Orange Pi 3B needs to download the code of the wiringOP next branch, please don't miss the parameter of Out: 3: -b next.'''&gt; 3
'''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 isOut:/usr/src/wiringOP'''4: -&gt; 4
Out: 5: -&gt; 5^C|}</ol><ol start="23" style="list-style-type: decimallower-alpha;"><li>Compile and install wiringOPTest UART9</li><{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo gpio serial /dev/ol>ttyS9'''
orangepi@[sudo] password for orangepi:~$ '''cd wiringOP'''#Enter the password here.
orangepi@orangepi:~/wiringOP$ '''sudo ./build clean'''
orangepi@orangepiOut:~/wiringOP$ '''sudo ./build'''0: -&gt; 0
<ol start="3" style="list-styleOut: 1: -type: decimal&gt;"><li>Test the output of the GPIO Readall command as follows</li></ol>1
<div class="figure">Out: 2: -&gt; 2
[[FileOut: 3:pi3b-img258.png|575x355px|66AC(IBG%N8L@Y7(1BZPS`N]]&gt; 3
</div><span id="pinOut: 4: -interface-gpio-i2c-uart-spi-and-pwm-test"></span>== 40Pin interface GPIO, I2C, UART, SPI, and PWM test ==&gt; 4
'''Note that if you need to set overlays to open multiple configurations at the same time, please use a space to write in one line like the following space.'''Out: 5: -&gt; 5^C|}</ol></li></ol><span id="pwm-test-method"></span>
orangepi@orangepi:~$ '''sudo vim /boot/orangepiEnv.txt'''=== PWM test method ===
'''overlays=spi3-m0-cs0-spidev i2c2-m1 i2c3-m0 uart7-m2 uart9-m2 # From the table below, the pwm11-m1''' <span id="pin-gpio-port-test"></span>=== 40pin GPIO port test === '''The Linux system released by available for 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.''' '''After running the blink_all_gpio program, when using a multimeter to measure the level of the GPIO port, you will find that the GPIO pin will be switched between 0 and 3.3v. Use this program to test whether the GPIO port can work normally''' '''The method of running blink_all_gpio program is shown below: '''3B
orangepi@orangepi3b:~$ '''sudo blink_all_gpio''' #Remember to add Sudo permissions [sudo] password for orangepi: #You need to enter a password here # A total of 28 GPIO ports can be used in the development board 40pin. Below is No. 7 pins -corresponding GPIO as GPIO4_A4 -corresponding WPI serial number 2 -as an example how to set the height of the GPIO port [[File:pi3b-img259img270-1.png|576x120px]]
<ol start="2" style="list-style-type: decimal;">
<li>First set <p>In the linux system, the PWM in the GPIO port 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 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 output mode, arrow keys on the third parameter needs keyboard to navigate to enter the serial number of position shown in the figure below, and then use the wPi corresponding '''space''' to select the pinsPWM configuration you want to open</p><p>[[File:pi3b-3-4.png]]</p></li><li><p>Then select '''<Save>''' to save</p><p>[[File:pi3b-4.png]]</olp></li>root@orangepi<li><p>Then select '''<Back>'''</p><p>[[File:~pi3b-5.png]]</p></wiringOP# li><li><p>Then select '''gpio mode 2 out<Reboot>'''to restart the system to make the configuration take effect</p><p>[[File:pi3b-6.png]]</p></li></ol></li></ol>
<ol start="3" style="list-style-type: decimal;">
<li>Then set the GPIO port to output the low level. After settingopening a pwm, you can use the value of the voltage of the pins with there will be an extra pwmchipX in '''/sys/class/pwm/''' (X is a multimeter. If it is 0vspecific number), for example, after opening pwm11, it means that check the low -electric flat is successfulpwmchipX under '''/sys/class/pwm/''' one becomes two</li></ol>{| class="wikitable" style="width:800px;" |-| rootorangepi@orangepi:~/wiringOP# $ '''gpio write 2 0ls /sys/class/pwm/''' Using GPIO Readall, you can see the value of the No. 7 pin (v) to 0 [[File:pi3b-img260.png|576x120px]]
pwmchip0 pwmchip1
|}
</ol>
<ol start="4" style="list-style-type: decimal;">
<li>Then set <p>Which pwmchip above corresponds to pwm11, let's check the GPIO port output high level. After settingof the '''ls /sys/class/pwm/ -l''' command first, you as shown below:</p></li><li><p>Then it can use be known from the voltage of table below that the voltage base address of the permanent meter to measure the voltage. If it pwm11 register is 3.3Vfe6f0030, it means that and then look at the output of the high'''ls /sys/class/pwm/ -electricity level l''' command, you can see that pwmchip1 is successfullinked to fe6f0030.pwm, so pwm11 corresponds to pwmchip as pwmchip1</lip></olli>
root@orangepi:~/wiringOP# '''gpio write 2 1'''<div class="figure">
Using GPIO Readall, you can see the value of No[[File:pi3b-img271. 7 pin (v) into 1png]]
[[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;" |-img261.png|576x118px]]root@orangepi:~# '''echo 0 &gt; /sys/class/pwm/pwmchip1/export'''
<ol start="5" style="list-style-typeroot@orangepi: decimal~# '''echo 20000000 &gt;"><li>The setting method of other pins is similar. Just modify the serial number of the wPi sequence number as the corresponding serial number corresponding to the pin</li><sys/ol>class/pwm/pwmchip1/pwm0/period'''
<span id="pin-gpio-port--down-and-downward-pull--down-resistance-setting-method"><root@orangepi:~# '''echo 1000000 &gt; /span>=== 40Pin GPIO Port -down and downward pull -down resistance setting method ===sys/class/pwm/pwmchip1/pwm0/duty_cycle'''
root@orangepi:~# '''Note that the 4 GPIO pins below Orange Pi 3B are invalid because there are 3.3V on the outside, so setting drop -down is invalid. Other pins can be set normallyecho 1 &gt; /sys/class/pwm/pwmchip1/pwm0/enable'''|}
[[File:pi3b-img262img272.png|575x353px]]
# Below the No<li>The test method of pwm11 demonstrated above is similar to other pwm test methods. 11 pin—corresponding </li></ol><span id="how-to GPIO 3_C6-corresponding WPI serial number 5—to demonstrate how to set up install-and down pull-down resistance of the GPIO portuse-wiringop-python"></span>
[[File:pi3b== How to install and use wiringOP-img263.png|576x147px]]Python ==
<ol start{| class="2wikitable" style="listbackground-style-typecolor:#ffffdc;width: decimal800px;">|-| <libig>First '''wiringOP-Python is the Python language version of allwiringOP, you need which is used to set operate the hardware resources of the development board, such as GPIO port as , I2C, SPI and UART, in the input modePython program. The third parameter needs to enter the serial number of the wpi corresponding to the pins</li></ol>'''
root@orangepi:~/wiringOP# '''gpio mode 5 in'''
<ol start="3" style="list-style-type: decimal;"><li>After the setting is set to input mode'''In addition, execute please note that all the following command to set commands are operated under the GPIO port as the pull -down moderoot user.'''</li></olbig>|}
root@orangepi:~<span id="wiringop-python-installation-method"></span>=== wiringOP# '''gpio mode 5 up'''-Python installation method ===
<ol start="4" style="list-style-type: decimal;"><li>Then enter # First install the following command to read the level of the GPIO port. If the level is 1, it means that the drawing mode is successful</li></ol>dependency package
::{| class="wikitable" style="width:800px;" |-| root@orangepi:~/wiringOP# '''gpio read 5sudo apt-get update'''
root@orangepi:~# '''1sudo apt-get -y install git swig python3-dev python3-setuptools'''|}
<ol start="52" style="list-style-type: decimal;"><li>Then execute use the following command to set download the GPIO port as the dropsource code of wiringOP-down modePython</li>{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| </olbig>'''Note that the following git clone--recursivee command will automatically download the source code of wiringOP, because wiringOP-Python depends on wiringOP. Please make sure that the download process does not report an error due to network problems.'''
root@orangepi:~/wiringOP# '''gpio mode 5 down'''
'''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'''<ol start/big>|}{| class="6wikitable" style="list-style-typewidth: decimal800px;"><li>Then enter the following command to read the level of the GPIO port|-| root@orangepi:~# '''git clone --recursive https://github. If the level is 0, it means that the drop com/orangepi-down mode is set successfully<xunlong/li></ol>wiringOP-Python -b next'''
root@orangepi:~/wiringOP# '''gpio read 5cd wiringOP-Python'''
root@orangepi:~/wiringOP-Python# '''0git submodule update --init --remote'''|}</ol><span idol start="pin3" style="list-spistyle-testtype: decimal;"><li>Then use the following command to compile wiringOP-Python and install it into the Linux system of the development board</spanli>{| class="wikitable" style== 40pin SPI Test ==="width:800px;" |-| root@orangepi:~# '''cd wiringOP-Python'''
root@orangepi:~/wiringOP-Python# From the schematic diagram of the 40PIN interface, the SPI available for Orange Pi 3B is spi3'''python3 generate-bindings.py &gt; bindings.i'''
[[Fileroot@orangepi:pi3b~/wiringOP-img264Python# '''sudo python3 setup.pngpy install'''|577x193px]]}</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 the help information</li>
{| class="wikitable" style="width:800px;" |-| root@orangepi:~/wiringOP-Python# '''In the Linux system, the SPI3 in 40pin is closed by default, and it needs to be opened manually to use.python3 -c &quot;import wiringpi; help(wiringpi)&quot;'''
'''Add the configuration of the red font part below to the /boot/orangepiEnv.txt, and then restart the Linux system to open the spi3.'''Help on module wiringpi:
orangepi@orangepi:~$ '''sudo vim /boot/orangepiEnv.txt'''
'''overlays=spi3-m0-cs0-spidev'''NAME
<ol start="2" style="list-style-type: decimal;"><li>First check whether there is a '''spidev3.0''' device node in the Linux system. If it exists, it means that the SPI3 has been set. You can use it directly</li></ol>wiringpi
orangepi@orangepi:~$ '''ls /dev/spidev3.0'''
/dev/spidev3.0DESCRIPTION
<ol start="3" style="list-style-type: 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<# This file was automatically generated by SWIG (http:/li></ol>www.swig.org).
orangepi@orangepi:~$ '''sudo spidev_test -v -D /dev/spidev3# Version 4.0'''.2
spi mode: 0x0#
bits per word: 8# Do not make changes to this file unless you know what you are doing--modify
max speed: 500000 Hz # 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'''|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li>Then import the Python module of WiringPi</li>{| class="wikitable" style="width:800px;" |-| &gt;&gt;&gt; '''import wiringpi;'''|}</ol><ol start="3" style="list-style-type: lower-alpha;"><li>Enter the following command to view the help information of wiringOP-Python, and press the '''q''' key to exit the interface of the help information</li>{| class="wikitable" style="width:800px;" |-| &gt;&gt;&gt; '''help(500 KHzwiringpi)'''
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 | ......@.…▒..................▒.Help on module wiringpi:
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 the two pins of the SPI3 MOSI (No. 19 pins in the 40pin interface) and MISO (No. 21 in the 40PIN interface) run the output of SPIDEV_TEST as follows.You can see that sending and receiving data is the same.</li></ol>NAME
[[File:pi3b-img265.png|577x83px]]wiringpi
orangepi@orangepi:~$ '''sudo spidev_test -v -D /dev/spidev3.0'''
spi modeDESCRIPTION : 0x0# This file was automatically generated by SWIG (http://www.swig.org).
bits per word: 8# Version 4.0.2
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 | ......@.…▒..................▒.: # Do not make changes to this file unless you know what you are doing--modify
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 | ......@.…▒..................▒: # the SWIG interface file instead.
<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.CLASSES
[[File:pi3b-img266builtins.png|576x160px]]object
'''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'''::GPIO
'''In the Linux system, the i2c in 40Pin is closed by default, and it needs to be opened manually to use.'''::I2C
'''Add the configuration of the red font part below to the /boot/orangepiEnv.txt, and then restart the Linux system to open the i2c2, i2c3, and i2c4 at the same time. If you only need to open one, then fill in one.'''::Serial
orangepi@orangepi:~$ '''sudo vim /boot/orangepiEnv.txt''':nes
'''overlays=i2c2-m1 i2c3-m0 i2c4-m0'''
<ol start="2" style="list-style-type: decimal;"><li>After starting the Linux system, first confirm that the i2c device node exists under/dev</li></ol>class GPIO(builtins.object)
orangepi@orangepi:~# '''ls /dev/i2c-*'''| GPIO(pinmode=0)
/dev/i2c-0 '''/dev/i2c-2''' '''/dev/i2c-3''' '''/dev/i2c-4''' /dev/i2c-6:|
<ol start="3" style="list-style-type: decimal;">
<li>Then connect a i2c device on the i2c pin of the 40Pin connector</li></ol>
{| class="wikitable"|-||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&gt;&gt;&gt;
|}
</ol>
</li></ol>
<span id="pin-gpio-port-test-1"></span>
<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></ol>= 40pin GPIO port test ===
orangepi@orangepi{| class="wikitable" style="background-color:~$ sudo i2cdetect -y 2 #i2c2 commandffffdc;width:800px;"  orangepi@orangepi:~$ sudo i2cdetect |-y 3 #i2c3 command| orangepi@orangepi:~$ sudo i2cdetect <big>'''wiringOP-y 4 #i2c4 Python is the same as wiringOP, you can also determine which GPIO pin to operate by specifying the wPi number, because there is no commandto check the wPi number in wiringOP-Python, so you can only check the board wPi number and physical Correspondence between pins.'''</big>
<div class="figure">
[[File:pi3b-img267img258.png|476x179px|UN}~]Q}T_70O%Z%RNO8R@YEcenter]]
</div>
<span id="|}# Below the No. 7 pin— corresponding to GPIO4_a4 -uartcorresponding WPI serial number 2 -test"></span>=== 40pin UART test ===to demonstrate how to set the height of the GPIO port
# As can be seen from the table below, the uart available for Orange Pi 3B is uart3, uart7, and uart9::[[File:pi3b-img259. There are three sets of uart buspng]]
[[File<ol start="2" style="list-style-type: decimal;"><li><p>The steps of the command test are shown below directly:pi3b</p><ol style="list-img268style-type: lower-alpha;"><li>First set the GPIO port to the output mode.pngThe 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>{|575x160px]]class="wikitable" style="width:800px;" |-| root@orangepi:~/wiringOP-Python# '''python3 -c &quot;import wiringpi; \'''
'''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 timewiringpi import GPIO; wiringpi.wiringPiSetup() ; \'''
'''In wiringpi.pinMode(<span style="color:#FF0000">2, GPIO.OUTPUT</span>) ; &quot;'''|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li>Then set the Linux systemGPIO port output low level. After setting, you can use the uart in 40pin voltage of the voltage of the universal meter to measure the pins. If it is closed by default0V, and it needs to be opened manually to use.means that the low -power flat is successful</li>{| class="wikitable" style="width:800px;" |-| root@orangepi:~/wiringOP-Python# '''python3 -c &quot;import wiringpi; \'''
'''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.from wiringpi import GPIO; wiringpi.wiringPiSetup() ;\'''
orangepi'''wiringpi.digitalWrite(<span style="color:#FF0000">2, GPIO.LOW</span>)&quot;'''|}</ol><ol start="3" style="list-style-type: lower-alpha;"><li>Then set the GPIO port output high level. After setting, you can use the value of the voltage of the pins with a multimeter. If it is 3.3V, it means that the high -power flat is successful.</li>{| class="wikitable" style="width:800px;" |-| root@orangepi:~$ /wiringOP-Python# '''sudo vim /boot/orangepiEnv.txtpython3 -c &quot;import wiringpi; \'''
'''overlays=uart3-m0 uart7-m2 uart9-m2''' <ol start="2" style="list-style-type: decimalfrom wiringpi import GPIO;"><li>After entering the Linux system, first confirm whether there is a device node corresponding to uart under/dev</li></ol> orangepi@orangepi:~# '''ls /dev/ttyS*''' /dev/ttyS1 '''/dev'''/'''ttyS3 /dev/ttyS7 /dev/ttyS9wiringpi.wiringPiSetup() ;\'''
'''wiringpi.digitalWrite(<span style="color:#FF0000">2, GPIO.HIGH</span>)&quot;'''
|}
</ol>
</li></ol>
<ol start="3" style="list-style-type: decimal;">
<li>Then start <p>The steps of testing in the uart interface, first use the rx and tx command line of the uart interface to be tested by DuPontPython3 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</olli> {| class="wikitable" style="width:800px;"
|-
|root@orangepi:~# '''python3'''|uart3}</ol><ol start="2" style="list-style-type: lower-alpha;">|uart7<li>Then import the Python module of WiringPi</li>{|uart9class="wikitable" style="width:800px;"
|-
| Tx pin&gt;&gt;&gt; '''import wiringpi''' &gt;&gt;&gt; '''from wiringpi import GPIO'''|Corresponding }</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 28 pin|Corresponding to , and the second parameter is the 16 pinGPIO mode.</li>{|Corresponding to the 29 pinclass="wikitable" style="width:800px;"
|-
| Rx Pin|Corresponding to the 27 pin|Corresponding to the 15 pin|Corresponding to the 7 pin|}&gt;&gt;&gt; '''wiringpi.wiringPiSetup()'''
[[File:pi3b-img269.png|545x134px]]0
&gt;&gt;&gt; '''wiringpi.pinMode(<span style="color:#FF0000">2, GPIO.OUTPUT</span>)'''
|}
</ol>
<ol start="4" style="list-style-type: lower-alpha;">
<li>Then set the GPIO port output low level. After setting, you can use the value of the voltage of the pins with a multimeter. If it is 0V, it means that the low -power flat is set.</li>
{| class="wikitable" style="width:800px;"
|-
|
&gt;&gt;&gt; '''wiringpi.digitalWrite(2, <span style="color:#FF0000">GPIO.LOW</span>)'''
|}
</ol>
<ol start="5" style="list-style-type: lower-alpha;">
<li>Then set the GPIO port output high level. After setting, you can use the value of the voltage of the pins with a multimeter. If it is 3.3V, it means that the high -power flat is successful</li>
{| class="wikitable" style="width:800px;"
|-
|
&gt;&gt;&gt; '''wiringpi.digitalWrite(2, <span style="color:#FF0000">GPIO.HIGH</span>)'''
|}
</ol>
</li></ol>
<ol start="4" style="list-style-type: decimal;">
<li><p>Use Wiringop-Python Sets GPIO high and low levels in the Python code. For reference to the '''gpio serialblink.py''' command to test program in Examples, the loop function voltage of the serial port as shown below'''blink. If you can see py''' test program will set up the following printing, it means that voltage of all GPIO ports in the serial communication is normaldevelopment board 40 PIN</pli><ol {| class="wikitable" style="list-style-typewidth: lower-alpha800px;"><li>Test UART3</li></ol>|-| <root@orangepi:~/li></ol>wiringOP-Python# '''cd examples'''
orangepiroot@orangepi:~$ /wiringOP-Python/examples# '''sudo gpio serial /dev/ttyS3ls blink.py'''
[sudo] password for orangepi: #Enter the password here'''blink.py'''
Out: 0root@orangepi: ~/wiringOP-Python/examples'''# python3 blink.py'''|}</ol><span id="pin-spi-test-&gt; 01"></span>
Out: 1: -&gt; 1=== 40pin SPI test ===
Out: 2: -&gt; 2# From the schematic diagram of the 40pin interface, the SPI available for Orange Pi 3B is spi3
Out: 3: [[File:pi3b-&gt; 3img264.png]]
Out: 4: {| class="wikitable" style="background-&gtcolor:#ffffdc;width:800px; 4" |-| <big>'''In the Linux system, the spi3 in 40pin is closed by default, and it needs to be opened manually to use.'''
Out: 5: -&gt; 5^C
<ol start="2" style="list-style-type: lower-alpha;"><li>Test UART7<'''Add the configuration of the red font part below to the /boot/li>orangepiEnv.txt, and then restart the Linux system to open the spi4.'''</olbig>
orangepi@orangepi:~$ '''sudo gpio serial /dev/ttyS7'''
[sudo] password for orangepi@orangepi: #Enter the password here~$ '''sudo vim /boot/orangepiEnv.txt'''
Out: 0'''<span style="color: #FF0000">overlays=spi3-m0-cs0-&gt; 0spidev</span>'''|}
Out<ol start="2" style="list-style-type: 1decimal;"><li>First check whether there is a '''spidev3.0''' device node in the Linux system. If it exists, it means that the SPI3 has been set and can be used directly</li>{| class="wikitable" style="width: 800px;" |-&gt; 1| orangepi@orangepi:~$ '''ls /dev/spidev3.0'''
Out/dev/spidev3.0|}</ol><ol start="3" style="list-style-type: 2decimal;"><li><p>You can then use the spi back function under the '''spidev_test.py''' program in Examples. The '''spidev_test.py''' program needs to specify the following two parameters: </p><ol style="list-&gtstyle-type: lower-alpha; 2"><li><p>'''--channel''': Specify the channel number of SPI</p></li><li><p>'''--port''': Specify the port number of SPI</p></li></ol></li><li><p>Do not pick up the two pins of the SPI3 MOSI and MISO in short, and run the output result of the spidev_test.py as shown below. You can see that the data of TX and RX are inconsistent</p></li>{| class="wikitable" style="width:800px;" |-| root@orangepi:~/wiringOP-Python# '''cd examples'''
Out: 3root@orangepi: ~/wiringOP-&gt; 3Python/examples# '''python3 spidev_test.py \'''
Out: 4: '''-&gt; 4-channel 3 --port 0'''
Outspi mode: 5: -&gt; 5^C0x0
<ol start="3" style="list-style-typemax speed: lower-alpha;"><li>Test UART9</li></ol>500000 Hz (500 KHz)
orangepi@orangepi:~$ '''sudo gpio serial Opening device /dev/ttyS9'''spidev3.0
[sudo] password for orangepiTX | FF FF FF FF FF FF '''<span style="color: #Enter the password hereFF0000">40 00 00 00 00 95</span>''' FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D |......@.......…|
OutRX | FF FF FF FF FF FF '''<span style="color: 0#FF0000">FF FF FF FF FF FF</span>''' FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF |.............….||}</ol><ol start="5" style="list-style-type: decimal;"><li>Then use the TXD (No. 19 pins in the 40Pin interface) and RXD (No. 21 pins in the 40pin interface) of the DuPont line short connection SPI3. Like sending and receiving data, it means that the SPI3 loop test is normal</li>{| class="wikitable" style="width:800px;" |-| root@orangepi: ~/wiringOP-&gt; 0Python# '''cd examples'''
Out: 1root@orangepi: ~/wiringOP-&gt; 1Python/examples# '''python3 spidev_test.py \'''
Out: 2: '''-&gt; 2-channel 3 --port 0'''
Outspi mode: 3: -&gt; 30x0
Outmax speed: 4: -&gt; 4500000 Hz (500 KHz)
Out: 5: -&gt; 5^COpening device /dev/spidev3.0
TX | FF FF FF FF FF FF '''<span idstyle="pwm-test-methodcolor:#FF0000">40 00 00 00 00 95</span>=== PWM test method ===''' FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D |......@.......…|
RX | FF FF FF FF FF FF '''<span style="color:# From the table below, the pwm11 available for Orange Pi 3BFF0000">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>
[[File:pi3b-img270.png|575x160px]]=== 40pin I2C test ===
'''In <ol start="1" style="list-style-type: decimal;"><li>As can be seen from the Linux systemtable below, the pwm in 40pin I2C available for Orange Pi 3B is closed by defaultI2C2, I2C3, and it needs to be opened manually to use..'''I2C4 a total of three groups of I2C bus</li>
'''Add the configuration of the red font part below to the /boot/orangepiEnv[[File:pi3b-img266.txt, and then restart the Linux system to open the pwm11.'''png]]
orangepi@orangepi{| class="wikitable" style="background-color:~$ #ffffdc;width:800px;" |-| <big>'''sudo vim 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'''</boot/orangepiEnvbig>|}{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''In the Linux system, the I2C in 40Pin is closed by default, and it needs to be opened manually to use.txt'''
'''overlays=pwm11-m1'''
<ol start="2" style="list-style-type: decimal;"><li>After opening a pwm, a pwmchipX (X is a specific number) will be available in'''Add the configuration of the red font part below to the/sys/class/pwmboot/orangepiEnv.txt, and then restart the Linux system to open the I2C2, i2C3, and I2C4 at the same time. If you only need to open one, then fill in one.'''</li></olbig>
orangepi@orangepi:~$ '''ls /sys/class/pwm/'''
pwmchip0 pwmchip1 <ol start="3" style="list-style-type: decimal;"><li><p>Which pwmchip corresponds to pwm11 above? Let's first check out the output of '''ls /sys/class/pwm/ -l''' command, as shown below: </p></li><li><p>The base address of the pwm11 register is Fe6F0030. Then see the output of '''ls /sys/class/pwm/ -l''' command, you can see that the fe6f0030.pwm is connected to the pwmchip1, so the PWM11 corresponding pwmchip is pwmchip1</p></li></ol> <div class="figure"> [[File:pi3b-img271.png|576x46px|RCUS$_~VYM{4ZS]_L}DNZQR]] </div><ol start="5" style="list-style-type: decimal;"><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)</li></ol> root@orangepi:~# '''echo 0 &gt; /sys/class/pwm/pwmchip1/export''' root@orangepi:~# $ '''echo 20000000 &gt; /sys/class/pwm/pwmchip1sudo vim /pwm0boot/period''' root@orangepi:~# '''echo 1000000 &gt; /sys/class/pwm/pwmchip1/pwm0/duty_cycle''' root@orangepi:~# '''echo 1 &gt; /sys/class/pwm/pwmchip1/pwm0/enable''' [[File:pi3b-img272.png|575x346px]] <span id="how-to-install-and-use-wiringop-python"></span>== How to install and use Wiringop-Python == '''Wiringop-Python is the library of the Python language version of WiringoporangepiEnv. It is used to operate the development board's GPIO, I2C, SPI and UART hardware resources such as the development board in the Python program.''' '''Please note that all the following command below is operated under the root user.''' <span id="wiringop-python-installation-method"></span>=== Wiringop-Python installation method === # First install the dependency package root@orangepi:~# '''sudo apt-get update''' root@orangepi:~# '''sudo apt-get -y install git swig python3-dev python3-setuptoolstxt'''
'''<span style="color:#FF0000">overlays=i2c2-m1 i2c3-m0 i2c4-m0</span>'''
|}
</ol>
<ol start="2" style="list-style-type: decimal;">
<li>Then use After starting the following command to download Linux system, first confirm the source code of wiringOP-PythonI2C device node under/dev.</li></ol>
{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~# '''Note that the following git clone--recursivee command will automatically download the source code of Wiringop, because Wiringopls /dev/i2c-Python depends on Wiringop. Please make sure that the download process does not report an error due to network problems.*'''
/dev/i2c-0 &nbsp;&nbsp;&nbsp;&nbsp; '''If there is a problem with the download code from GitHub, you can use the Wiringop/dev/i2c-Python source code that comes with the Linux image directly, and the storage location is:2''' &nbsp;&nbsp;&nbsp;&nbsp; '''/dev/usri2c-3''' &nbsp;&nbsp;&nbsp;&nbsp; '''/srcdev/wiringOPi2c-Python4'''&nbsp;&nbsp;&nbsp;&nbsp; /dev/i2c-6|}</ol><ol start="3" 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 module.</li>
root@orangepi{| class="wikitable" style="width:~# '''git clone 800px;text-align: center;"|-recursive https://github||i2c2-m1|i2c3-m0|i2c4-m0|-| Sda Pin|Corresponding to No. 3 pin|Corresponding to No. 27 pin|Corresponding to No.com/orangepi19 pin|-xunlong/wiringOP| Sck Pin|Corresponding to No. 5 pin|Corresponding to No. 28 pin|Corresponding to No. 23 pin|-Python | Vcc Pin|Corresponding to No. 1 pin|Corresponding to No. 1 pin|Corresponding to No. 1 pin|-b next'''| Gnd Pin|Corresponding to No. 6 pin|Corresponding to No. 6 pin|Corresponding to No. 6 pin|}
root@orangepi[[File:pi3b-img273.png]]</ol><ol start="4" style="list-style-type:~# decimal;"><li>Then use the '''cd wiringOPi2cdetect -Pythony'''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
rootorangepi@orangepi:~/wiringOP$ sudo i2cdetect -Pythony 3 # '''git submodule update --init --remote'''i2c3 command
<ol start="3" style="listorangepi@orangepi:~$ sudo i2cdetect -style-type: decimal;">y 4 #i2c4 command<li>Then use the following command to compile wiringOP-Python and install it into the Linux system of the development board</li></ol>|}
root@orangepi:~# '''cd wiringOP-Python'''<div class="figure">
root@orangepi[[File:~/wiringOPpi3b-Python# '''python3 generate-bindings.py &gt; bindingsimg274.i'''png]]
</div></ol><ol start="5" style="list-style-type: decimal;"><li>You can then run the time of the ds '''ds1307.py''' test program in '''examples''' to read the RTC time</li>{| class="wikitable" style="width:800px;" |-| root@orangepi:~/wiringOP-Python# '''sudo python3 setup.py installcd examples'''
<ol start="4" style="list-style-typeroot@orangepi: decimal;"><li>Then enter the following command. If there is a help information output, it means that Wiringop~/wiringOP-Python is successfully installed. Press the /examples# '''qpython3 ds1307.py --device \''' key to exit the interface of the help information</li></ol>
root@orangepi:~/wiringOP-Python# '''python3 -c &quot;import wiringpi; help(wiringpi)/dev/i2c-4&quot;'''
Help on module wiringpiThu 2023-01-05 14:57:55
NAMEThu 2023-01-05 14:57:56
wiringpiThu 2023-01-05 14:57:57
DESCRIPTION^C
# This file was automatically generated by SWIG (http:exit|}</ol><span id="pins-uart-test."></www.swig.org).span>
# Version 4.0.2=== 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
# Do not make changes to this file unless you know what you are doing::[[File:pi3b--modifyimg268.png]]
::{| class="wikitable" style="width:800px;background-color:# ffffdc;" |-| <big>'''As can be seen from the SWIG interface file instead.above table, I2C3_M0 and UART3_M0 are reused by pins, and the two cannot be opened at the same time'''</big>|}
<ol start::{| class="5wikitable" style="list-stylewidth:800px;background-typecolor: decimal#ffffdc;"><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;">| <libig>First use '''In the Linux system, the Python3 command UART in 40pin is closed by default, and it needs to enter the command line mode of Python3</li></ol></li></ol>be opened manually to use.'''
root@orangepi:~# '''python3Add 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'''</big>
<ol start="2" style="list-style-typeorangepi@orangepi: lower-alpha;"><li>Then import the Python module of WiringPi<~$ '''sudo vim /li><boot/ol>orangepiEnv.txt'''
&gt;&gt;&gt; '''import wiringpi;<span style="color:#FF0000">overlays=uart3-m0 uart7-m2 uart9-m2</span>'''|}
<ol start="32" style="list-style-type: lower-alphadecimal;"><li>Enter the following command to view After entering the help information of Wiringop-PythonLinux system, and press the '''q''' key first confirm whether there is a device node corresponding to exit the interface of the help informationUART under/dev</li></ol>
&gt;&gt;&gt{| class="wikitable" style="width:800px; " |-| orangepi@orangepi:~# '''help(wiringpi)ls /dev/ttyS*'''
Help on module wiringpi: NAME wiringpi DESCRIPTION # This file was automatically generated by SWIG (http:/dev/ttyS1 &nbsp;&nbsp;&nbsp;&nbsp; '''/dev/ttyS3 &nbsp;&nbsp;&nbsp;&nbsp; /dev/ttyS7 &nbsp;&nbsp;&nbsp;&nbsp; /dev/www.swig.org).ttyS9'''|}# Version 4.0.2</ol> # # Do not make changes to this file unless you know what you are doing<ol start="3" style="list-style-modifytype: decimal;"> # <li>Then start testing the UART interface, and first use the RX and TX of the SWIG UART interface file instead. CLASSES builtins.object GPIO I2C Serial nes class GPIO(builtins.object) | GPIO(pinmode=0)to be tested by DuPont</li>
{| class="wikitable" style="width:800px;text-align: center;"
|-
|
|uart3
|uart7
|uart9
|-
| Tx Pin
|Corresponding to the 28 pin
|Corresponding to the 16 pin
|Corresponding to the 29 pin
|-
| Rx Pin
|Corresponding to the 27 pin
|Corresponding to the 15 pin
|Corresponding to the 7 pin
|}
</ol>
<ol start="4" style="list-style-type: decimal;">
<li><p>Use the '''serialTest.py''' program in Examples to test the loop function of the serial port. If you can see the printing below, it means that the serial communication is normal</p>
<ol style="list-style-type: lower-alpha;">
<li>Test UART3</li>
{| class="wikitable" style="width:800px;"
|-
|
root@orangepi:~/wiringOP-Python/examples# '''python3 serialTest.py --device \'''
'''&gtquot;/dev/ttyS3&gtquot;&gt; <span id="pin-gpio-port-test-1"></span>=== 40pin GPIO port test ==='''
'''Wiringop-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 Wiringop-Python, you can only check the board WPI number and physical physical physics through the GPIO command in Wiringop. The corresponding relationship of the pin.'''
<div class="figure">Out: 0: -&gt; 0
[[FileOut: 1:pi3b-img258.png|575x355px|66AC(IBG%N8L@Y7(1BZPS`N]]&gt; 1
</div># Below the No. 7 pin — corresponding to GPIO4_a4 Out: 2: -corresponding WPI serial number &gt; 2 -to demonstrate how to set the height of the GPIO port
[[FileOut: 3:pi3b-img259.png|576x120px]]&gt; 3
<ol start="2" style="list-style-typeOut: decimal;"><li><p>The steps of the command test are shown below directly4: </p><ol style="list-style-type: lower-alpha;"><li>First set the GPIO port to the output mode. The first parameter of the '''pinMode''' function is the serial number of the wpi corresponding to the pin, and the second parameter is the GPIO mode</li></ol></li></ol>^C
exit|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li>Test UART7</li>{| class="wikitable" style="width:800px;" |-| root@orangepi:~/wiringOP-Python/examples# '''python3 serialTest.py -c &quot;import wiringpi; -device \'''
'''from wiringpi import GPIO&quot; wiringpi.wiringPiSetup() /dev/ttyS7&quot; \'''
'''wiringpi.pinMode(2, GPIO.OUTPUT) ; &quot;'''
<ol start="2" style="list-style-typeOut: 0: lower-alpha&gt;"><li>Then set the GPIO port output low level. After setting, you can use the voltage of the voltage of the universal meter to measure the pins. If it is 0V, it means that the low -power flat is successful</li></ol>0
root@orangepiOut: 1:~/wiringOP-Python# '''python3 -c &quot;import wiringpigt; \'''1
'''from wiringpi import GPIOOut: 2: -&gt; wiringpi.wiringPiSetup() ;\'''2
'''wiringpi.digitalWrite(2, GPIO.LOW)Out: 3: -&quotgt;'''3
<ol start="3" style="list-style-typeOut: lower-alpha;"><li>Then set the GPIO port output high level. After setting, you can use the value of the voltage of the pins with a multimeter. If it is 3.3V, it means that the high -power flat is successful.</li></ol>4:^C
exit|}</ol><ol start="3" style="list-style-type: lower-alpha;"><li>Test UART9</li>{| class="wikitable" style="width:800px;" |-| root@orangepi:~/wiringOP-Python/examples# '''python3 serialTest.py -c &quot;import wiringpi; -device \'''
'''from wiringpi import GPIO&quot; wiringpi.wiringPiSetup() /dev/ttyS9&quot;\'''
'''wiringpi.digitalWrite(2, GPIO.HIGH)&quot;'''
<ol start="3" style="list-style-type: decimal;"><li><p>The steps of testing in the command line of Python3 are shown belowOut: </p><ol style="list-style-type0: lower-alpha&gt;"><li>First use the Python3 command to enter the command line mode of Python3</li></ol></li></ol>0
root@orangepiOut:~# '''python3'''1: -&gt; 1
<ol start="Out: 2" style="list-style-type: lower-alpha&gt;"><li>Then import the Python module of WiringPi</li></ol>2
Out: 3: -&gt;&gt;&gt; '''import wiringpi'''3
&gt;&gt;&gt; '''from wiringpi import GPIO'''Out: 4:^C
exit|}</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.</liol><span id="hardware-watch-the-door-dog-test"></olspan>
&gt;&gt;&gt; '''wiringpi.wiringPiSetup()'''== Hardware watch the door dog test ==
0The WatchDog_test program is pre -installed in the Linux system released by Orange PI, which can be tested directly.
&gt;&gt;&gt; '''wiringpi.pinMode(2, GPIO.OUTPUT)'''The method of running the WatchDog_test program is shown below:
<ol start="4" style="list-style-type: lower-alpha;"><li>Then set <p>The second parameter 10 indicates the counting time of the GPIO port output low leveldoor. After settingIf there is no dog feeding in this time, you the system will restart.</p></li><li><p>We can use feed the value of dog by pressing any keys on the voltage of keyboard (except ESC). After the pins with a multimeter. If it dog is 0Vfed, it means the program will print a line of Keep Alive to indicate that the low -power flat dog is set.successful</lip></olli>
&gt;&gt;&gt{| class="wikitable" style="width:800px; " |-| orangepi@orangepi:~$ '''wiringpi.digitalWrite(2, GPIO.LOW)sudo watchdog_test 10'''
<ol start="5" style="list-style-type: lower-alpha;"><li>Then set the GPIO port output high level. After setting, you can use the value of the voltage of the pins with a multimeter. If it is 3.3V, it means that the high -power flat is successful</li></ol>open success
&gt;&gt;&gt; '''wiringpi.digitalWrite(2options is 33152, GPIO.HIGH)'''identity is sunxi-wdt
<ol start="4" style="list-style-typeput_usr return,if 0,success: decimal;"><li>Wiringop-Python Sets GPIO high and low levels in the Python code. For reference to the '''blink.py''' test program in Examples, the voltage of the '''blink.py''' test program will set up the voltage of all GPIO ports in the development board 40 PIN</li></ol>0
root@orangepiThe old reset time is:~/wiringOP-Python# '''cd examples'''16
root@orangepireturn ENOTTY,if -1,success:~/wiringOP-Python/examples# '''ls blink.py'''0
'''blink.py'''return ENOTTY,if -1,success:0
root@orangepiput_user return,if 0,success:~/wiringOP-Python/examples'''# python3 blink.py'''0
<span id="pin-spi-test-1"></span>=== 40pin SPI test ===put_usr return,if 0,success:0
# From the schematic diagram of the 40pin interface, the SPI available for Orange Pi 3B is spi3keep alive
[[File:pi3b-img264.png|577x193px]]keep alive
'''In keep alive|}</ol><span id="check-the Linux system, -serial-number-of-the spi3 in 40pin is closed by default, and it needs to be opened manually to use.'''-rk3566-chip"></span>
'''Add == Check the configuration serial number of the red font part below to the /boot/orangepiEnv.txt, and then restart the Linux system to open the spi4.'''RK3566 chip ==
orangepi@orangepi:~$ '''sudo vim /boot/orangepiEnvThe 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.txt'''
{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''overlays=spi3-m0-cs0-spidevcat_serial.sh'''
<ol start="2" style="list-style-typeSerial : decimal;"><li>First check whether there is a '''spidev3.08fa18eaf489041f0''' device node in the Linux system. If it exists, it means that the SPI3 has been set and can be used directly</li></ol>|}
orangepi@orangepi:~$ '''ls <span id="the-method-of-downloading-and-installing-the-balenaetcher-version-of-arm64"></dev/spidev3.0'''span>
/dev/spidev3.0== The method of downloading and installing the balenaEtcher version of arm64 ==
<ol start="3" style="list-style-type: decimal;"><li><p>You can then use the spi back function under the '''spidev_test.py''' program in Examples. The '''spidev_test.py''' program needs to specify the following two parametersdownload 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<p/li>{| class="wikitable" style="width:800px;" |-| '''https://github.com/Itai-Nelken/BalenaEtcher-channel''': Specify the channel number of SPI<arm/releases/download/p><v1.7.9/li><li><p>'''balena-etcher-portelectron_1.7.9+5945ab1f_arm64.deb''': Specify the port number of SPI</p></li>|}</ol></liol start="2" style="list-style-type: lower-alpha;"><li><p>Do not pick up the two pins The download address of the SPI3 MOSI and MISO in short, and run the output result of the spidev_test.py as Appimage version that does not need to be installed is shown below. You can see that the data of TX and RX are inconsistent: </pli><{| class="wikitable" style="width:800px;" |-| '''https://github.com/Itai-Nelken/BalenaEtcher-arm/releases/download/li><v1.7.9/ol>balenaEtcher-1.7.9+5945ab1f-arm64.AppImage'''|}
root@orangepi:~/wiringOP-Python# '''cd examples''' root@orangepi:~/wiringOP-Python/examples# '''python3 spidev_test.py \'''<div class="figure">
'''[[File:pi3b--channel 3 --port 0'''img275.png]]
spi mode</div></ol></li></ol><ol start="2" style="list-style-type: 0x0decimal;"><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 \'''
max speed'''--fix-broken ./balena-etcher-electron_1.7.9+5945ab1f_arm64.deb'''|}</ol><ol start="2" style="list-style-type: 500000 Hz (500 KHz)lower-alpha;"><li>After the deb version of Balenaetcher is installed, it can be opened in the Application</li>
Opening device /dev/spidev3.0<div class="figure">
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 |[[File:pi3b-img89......@.......…|png]]
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 |.............….|</div></ol><ol start="3" style="list-style-type: lower-alpha;"><li>The interface after Balenaetcher is opened is shown below: </li>
<ol startdiv class="5figure" style="list-style-type: decimal;"><li>Then use the TXD (No. 19 pins in the 40Pin interface) and RXD (No. 21 pins in the 40pin interface) of the DuPont line short connection SPI3. Like sending and receiving data, it means that the SPI3 loop test is normal</li></ol>
root@orangepi[[File:~/wiringOPpi3b-Python# '''cd examples'''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:~/wiringOP-Python/examples# Desktop$ '''python3 spidev_testchmod +x balenaEtcher-1.7.9+5945ab1f-arm64.py \AppImage'''|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li>Then select the AppImage version balenaEtcher right -click the mouse, and then click Execute to open balenaEtcher</li>
'''[[File:pi3b-img277.png]]</ol></li></ol><span id="the-channel 3 installation-method-port 0'''of-the-bt-panel-linux-panel"></span>
spi mode: 0x0== The installation method of the Bt-Panel Linux panel ==
max speed{| class="wikitable" style="background-color: 500000 Hz #ffffdc;width:800px;" |-| <big>'''Bt-Panel Linux panel is a server management software that improves operation and maintenance efficiency. It supports more than 100 server management functions such as one -click LAMP/LNMP/cluster/monitoring/website/FTP/database/Java (500 KHzexcerpted from the [https://www.bt.cn/new/index.html official website of the Bt-Panel])'''</big>|}
Opening device # First of all, the size of the'''/devtmp''' space is needed. After setting, you need to '''<span style="color:#FF0000">restart the Linux system of the development board</spidev3.0span>''', and the command is shown below:
TX ::{| FF FF FF FF FF FF class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo sed -i 's/nosuid/&amp;,size=2G/'40 00 00 00 00 95/etc/fstab''' 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 orangepi@orangepi:~$ '''40 00 00 00 00 95sudo reboot''' FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D |......@.......…|}
<span idol start="pin-i2c2" style="list-teststyle-1type: decimal;"><li>After restarting, you can see that the size of the'''/spantmp''' space has become 2G.</li>{| class="wikitable" style== 40pin I2C test ==="width:800px;" |-| orangepi@orangepi:~$ '''df -h | grep &quot;/tmp&quot;'''
tmpfs &nbsp;&nbsp;&nbsp;&nbsp; 2.0G &nbsp;&nbsp;&nbsp;&nbsp; 12K &nbsp;&nbsp;&nbsp;&nbsp; '''<span style="color:#FF0000">2.0G</span>''' &nbsp;&nbsp;&nbsp;&nbsp; 1% /tmp|}</ol><ol start="53" style="list-style-type: decimal;"><li>As can be seen from Then enter the table below, following command in the Linux system to start the I2C available for Orange Pi 3B is I2C2, I2C3, and I2C4 a total installation of three groups of I2C busthe Bt-Panel</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo install_bt_panel.sh'''|}</ol><ol start="4" style="list-style-type: decimal;">[[File:pi3b<li>Then the pagoda installation program reminds whether to install the '''Bt-img266.png|576x160px]] Panel'''It can be seen from to the above table that I2C4_M0 '''/www''' folder, 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 timeenter '''<span style="color:#FF0000">y</span>'''at this time</li>{| class="wikitable" style="width:800px;" |-| +----------------------------------------------------------------------
'''In the Linux system, the I2C in 40Pin is closed by default, and it needs to be opened manually to use.'''<p>| Bt-WebPanel FOR CentOS/Ubuntu/Debian</p>
'''Add the configuration of the red font part below to the/boot/orangepiEnv.txt, and then restart the Linux system to open the I2C2, i2C3, and I2C4 at the same time. If you only need to open one, then fill in one.'''+----------------------------------------------------------------------
orangepi@orangepi<p>| Copyright © 2015-2099 BT-SOFT(http:~$ '''sudo vim /boot/orangepiEnvwww.txt'''bt.cn) All rights reserved.</p>
'''overlays=i2c2+------------------------------------------------------------------m1 i2c3-m0 i2c4-m0''' <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<p>| The WebPanel URL will be http:~# '''ls /dev/i2c-*'''SERVER_IP:8888 when installed.</p>
/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 module.</li></ol>
{| classDo you want to install Bt-Panel to the /www directory now?(y/n): '''<span style="wikitablecolor:#FF0000"|-||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>y</span>'''
|}
</ol>
<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>
[[File:pi3b-img273img278.png|180x153px800px]]</ol><ol start="6" style="list-style-type: decimal;"><li><p>At this time, enter the '''panel address''' displayed above in the browser to open the login interface of the pagoda Linux panel, and then enter the '''username''' and '''password''' displayed in the corresponding position to log in to the Bt-Panel<br />[[File:pi3b-img279.png|1200px]]</p></li><li><p>After successfully logging in to the pagoda, the following welcome interface will pop up. First, please take the intermediate user notice to read to the bottom, and then you can choose &quot;I have agreed and read&quot; User Agreement &quot;, and then click&quot; Enter the panel &quot; You can enter the Bt-Panel</p></li>
[[File:pi3b-img280.png|1200px]]
</ol>
<ol start="8" style="list-style-type: decimal;">
<li>Then use 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 ('i2cdetect -y''https://www.bt.cn''' command If the address of the connected I2C device can be detected, it means that the I2C can be used normally) to register one.</li></ol>
orangepi@orangepi[[File:~$ sudo i2cdetect pi3b-y 2 #i2c2 commandimg281.png|1200px]]</ol><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>
orangepi@orangepi[[File:~$ sudo i2cdetect pi3b-y 3 #i2c3 commandimg282.png|1200px]]</ol><ol start="10" style="list-style-type: decimal;"><li>More functions of the Bt-Panel can refer to the following information to explore by yourself</li>
orangepi@orangepi{| class="wikitable" style="width:~$ sudo i2cdetect 800px;" |-y 4 #i2c4 command| Manual: [http://docs.bt.cn '''http://docs.bt.cn''']
<div class="figure">Forum address: [https://www.bt.cn/bbs '''https://www.bt.cn/bbs''']
[[FileGitHub Link:pi3b-img274'''https://github.png|464x174pxcom/aaPanel/BaoTa'''|V@(61L~0})Q`8VLBCAYEP[2]]</ol><span id="set-the-chinese-environment-and-install-chinese-input-method"></span>
</div><ol start="9" style="list-style-type: decimal;"><li>You can then run Set the time of the ds '''ds1307.py''' test program in '''examples''' to read the RTC time</li></ol>Chinese environment and install Chinese input method ==
root@orangepi{| class="wikitable" style="background-color:#ffffdc;width:~/wiringOP800px;" |-Python# | <big>'''cd examplesNote 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>|}
root@orangepi:~/wiringOP<span id="debian-Python/examples# '''python3 ds1307.py system-installation-device \'''method"></span>=== Debian system installation method ===
<ol style="list-style-type: decimal;"><li><p>First set the default '''&quot;locale''' as Chinese</dev/i2cp><ol style="list-style-type: lower-4&quotalpha;"><li>Enter the command below to start configured '''locale'''</li>
Thu 2023{| class="wikitable" style="width:800px;" |-01| orangepi@orangepi:~$ '''sudo dpkg-05 14reconfigure locales'''|}</ol><ol start="2" style="list-style-type:57:55lower-alpha;"><li>Then select '''zh_CN.UTF-8 UTF-8''' in the pop-up interface (to move up and down through the upper and lower direction buttons on the keyboard, select it through the space key, and finally move the cursor to '''&lt;OK&gt;''' through the TAB key, then press the ENTER key )</li>
Thu 2023[[File:pi3b-01img283.png|1200px]]</ol><ol start="3" style="list-05 14style-type:57:56lower-alpha;"><li>Then set the default '''locale''' as '''zh_CN.UTF-8'''</li>
Thu 2023[[File:pi3b-img284.png|1200px]]</ol><ol start="4" style="list-style-01type: lower-05 14alpha;"><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:57800px;" |-| orangepi@orangepi:57~$ '''sudo dpkg-reconfigure locales'''
^CGenerating locales (this might take a while)...
exit:en_US.UTF-8... done
<span id="pins:zh_CN.UTF-uart-test8..."></span>=== 40pin's UART test ===done
# As can be seen from the table below, the UART available for Orange Pi 3B is UART3, UART7 and UART9Generation complete. There are three sets of UART bus|}</ol></li></ol><ol start="2" style="list-style-type: decimal;"><li>Then open '''Input Method'''</li>
[[File:pi3b-img268img285.png|575x160px]]</ol><ol start="3" style="list-style-type: decimal;"><li>Then select '''OK'''</li>
[[File:pi3b-img286.png]]</ol><ol start="4" style="list-style-type: decimal;"><li>Then select '''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 timeYes'''</li>
[[File:pi3b-img287.png]]</ol><ol start="5" style="list-style-type: decimal;"><li>Then select '''In the Linux system, the UART in 40pin is closed by default, and it needs to be opened manually to use.fcitx'''</li>
[[File:pi3b-img288.png]]</ol><ol start="6" style="list-style-type: decimal;"><li>Then select '''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 oneOK'''</li>
orangepi@orangepi[[File:~$ pi3b-img289.png]]</ol><ol start="7" style="list-style-type: decimal;"><li><p>'''<span style="color:#FF0000">Then restart the Linux system to make the configuration effective</span>'''sudo vim </bootp></orangepiEnv.txtli><li><p>Then open '''Fcitx configuration'''</p></li>
'''overlays[[File:pi3b-img290.png]]</ol><ol start=uart3-m0 uart7"9" style="list-m2 uart9style-m2'''type: decimal;"><li>Then click the + of the position shown in the figure below</li>
[[File:pi3b-img291.png]]</ol><ol start="210" style="list-style-type: decimal;"><li>After entering the Linux system, first confirm whether there is a device node corresponding to UART under/devThen search '''Google Pinyin''' and click '''OK'''</li></ol>
orangepi@orangepi:~# '''ls /dev/ttyS*'''<div class="figure">
/dev/ttyS1 '''/dev'''/'''ttyS3 /dev/ttyS7 /dev/ttyS9'''[[File:pi3b-img292.png]]
</div></ol><ol start="311" style="list-style-type: decimal;"><li>Then start testing the UART interface, and first use the RX and TX of put '''Google Pinyin''' to the UART interface to be tested by DuPontfront</li></ol>
{| class="wikitable"|[[File:pi3b-||uart3|uart7|uart9|-| Tx Pin|Corresponding to the 28 pin|Corresponding to the 16 pin|Corresponding to the 29 pin|-| Rx Pin|Corresponding to the 27 pin|Corresponding to the 15 pin|Corresponding to the 7 pin|}img293.png]]
[[File:pi3b-img294.png]]</ol><ol start="412" style="list-style-type: decimal;"><li><p>Use Then open the '''serialTest.pyGeany''' program in Examples editor to test the loop function of the serial port. If you can see the printing below, it means that the serial communication is normal</p><ol style="list-style-type: lower-alpha;"><li>Test UART3Chinese input method</li></ol></li></ol>
root@orangepi[[File:~/wiringOPpi3b-Pythonimg295.png]]</examples# '''python3 serialTest.py ol><ol start="13" style="list-style-device \'''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 '&quot''/etc/default/locale''' can be set to '''zh_CN.UTF-8'''</p></li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo vim /devetc/ttyS3&quot;default/locale'''
Out: 0: <p># File generated by update-&gt; 0locale</p>
Out: 1LC_MESSAGES='''<span style="color: #FF0000">zh_CN.UTF-&gt; 18</span>'''
Out: 2LANG='''<span style="color: #FF0000">zh_CN.UTF-&gt; 28</span>'''
OutLANGUAGE='''<span style="color: 3#FF0000">zh_CN.UTF-8</span>'''|}</ol><ol start="16" style="list-style-type: -&gtdecimal; 3"><li>Then '''<span style="color:#FF0000">restart the system</span>''' to see the system displayed as Chinese</li>
Out[[File: 4:^Cpi3b-img297.png]]</ol><span id="the-installation-method-of-ubuntu-20.04-system"></span>
exit=== The installation method of Ubuntu 20.04 system ===
<ol start="2" style="list-style-type: lower-alpha;"><li>Test UART7</li></ol># First open '''Language Support'''
root@orangepi:~/wiringOP:[[File:pi3b-Python/examples# '''python3 serialTestimg298.py --device \'''png]]
<ol start="2" style="list-style-type: decimal;"><li>Then find '''&quot;/dev/ttyS7&quot;Chinese (China)'''option</li>
Out[[File: 0pi3b-img299.png]]</ol><ol start="3" style="list-style-type: -&gtdecimal; 0"><li>Then use the left mouse button to select '''Chinese (China)''' and hold it down, and then drag it up to the beginning. The display is shown below: </li>
Out: 1[[File: pi3b-&gt; 1img300.png]]
Out{| class="wikitable" style="background-color: 2#ffffdc;width: 800px;" |-&gt| <big>'''Note that this step is not easy to drag, please try more patiently.'''</big>|}</ol><ol start="4" style="list-style-type: decimal; 2"><li>Then select the '''Apply System-Wide''' to apply the Chinese settings to the entire system</li>
Out[[File: 3pi3b-img301.png]]</ol><ol start="5" style="list-style-type: -&gtdecimal; 3"><li>Then set the '''Keyboard input method system''' to '''fcitx'''</li>
Out[[File: 4pi3b-img302.png]]</ol><ol start="6" style="list-style-type:^Cdecimal;"><li><p>'''<span style="color:#FF0000">Then restart the Linux system to make the configuration effective</span>'''</p></li><li><p>After re -entering the system, please do '''not ask me again''' at the interface below, and then determine whether the standard folder should be updated as Chinese based on your preference.</p></li>
exit[[File:pi3b-img303.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>Test UART9Then we can open the '''Geany''' to test Chinese input method , and the way to open is shown in the figure below</li></ol>
root@orangepi[[File:~pi3b-img305.png]]</wiringOPol><ol start="10" style="list-style-Python/examples# type: decimal;"><li>After opening '''Geany'''python3 serialTest, the default is an English input method.py --device \We can switch into Chinese input method through the '''Ctrl+Space'''shortcut keys, and then we can enter Chinese</li>
'''&quot;[[File:pi3b-img306.png]]</devol><span id="the-installation-method-of-ubuntu-22.04-system"></ttyS9&quot;'''span>
Out: 0: -&gt; 0=== The installation method of ubuntu 22.04 system ===
Out: 1: -&gt; 1# First open '''Language Support'''
Out: 2: [[File:pi3b-&gt; 2img298.png]]
Out: 3<ol start="2" style="list-style-type: -&gtdecimal; 3"><li>Then find '''Chinese (China)''' option</li>
Out[[File: 4pi3b-img307.png]]</ol><ol start="3" style="list-style-type:^Cdecimal;"><li>Then use the left mouse button to select '''Chinese (China)''' and hold it down, and then drag it up to the beginning. The display after dragging is shown in the figure below: </li>
exit[[File:pi3b-img308.png]]
<span id{| class="wikitable" style="hardwarebackground-watchcolor:#ffffdc;width:800px;" |-the| <big>'''Note that this step is not easy to drag, please try more patiently.'''</big>|}</ol><ol start="4" style="list-doorstyle-dog-testtype: decimal;"><li>Then select the '''Apply System-Wide''' to apply the Chinese settings to the entire system</spanli>
[[File:pi3b-img309.png]]</ol><ol start="5" style= Hardware watch "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 door dog test ==system, please '''do not ask me again''' at the interface below, and then determine whether the standard folder should be updated as Chinese based on your preference</p></li>
The WatchDog_test program is pre [[File:pi3b-img303.png]]</ol><ol start="7" style="list-style-installed in type: decimal;"><li>Then you can see that the Linux system released by Orange PI, which can be tested directly.desktop is displayed as Chinese</li>
The method of running [[File:pi3b-img304.png]]</ol><ol start="8" style="list-style-type: decimal;"><li>Then open the WatchDog_test Fcitx5 configuration program is shown below: </li>
[[File:pi3b-img310.png]]</ol><ol start="9" style="list-style-type: lower-alphadecimal;"><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 Then choose to indicate that the dog is successful</p>use Pinyin input method</li></ol>
orangepi@orangepi:~$ '''sudo watchdog_test 10'''<div class="figure">
open success[[File:pi3b-img311.png]]
options </div></ol><ol start="10" style="list-style-type: decimal;"><li>The interface after the selection is 33152shown below,identity is sunxi-wdtthen click OK</li>
put_usr return,if 0[[File:pi3b-img312.png]]</ol><ol start="11" style="list-style-type: decimal;"><li>Then we can open the '''Geany''' to test Chinese input method,success:0and the way to open is shown in the figure below</li>
The old reset time [[File:pi3b-img305.png]]</ol><ol start="12" style="list-style-type: decimal;"><li>After opening '''Geany''', it is: 16still 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>
return ENOTTY,if [[File:pi3b-img313.png]]</ol><span id="how-to-remotely-log-in-to-the-linux-system-1,success:0desktop-method"></span>
return ENOTTY,if -1,success:0== How to remotely log in to the Linux system desktop method ==
put_user return,if 0,success{| class="wikitable" style="background-color:0#ffffdc;width:800px;" |-| <big>'''Ubuntu Gnome Wayland image does not support Nomachine and VNCs introduced here to remotely log in to the desktop.'''</big>|}
put_usr return,if 0,success:0<span id="use-nomachine-remote-login"></span>=== Use nomachine remote login ===
keep alive{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''Make sure the Ubuntu or Debian system installed on the development board is a <span style="color:#FF0000">desktop version</span>. In addition, nomachine also provides detailed documents. It is strongly recommended to read this document to be familiar with the use of nomachine. The document links are shown below: '''
keep alive'''https://knowledgebase.nomachine.com/DT10R00166'''</big>|}{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''Nomachine supports Windows, Mac, Linux, iOS, and Android platforms, so we can remotely log in to control Orange PI development boards through Nomachine on multiple devices. The following demonstrates the Linux system desktop of the Orange PI development board through Nomachine in Windows. For installation methods for other platforms, please refer to the official documentation of Nomachine.'''</big>|}{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''Before operation, please ensure that the Windwos computer and the development board are in the same local area network, and can log in to the Ubuntu or Debian system that can log in to the development board normally.'''</big>|}
keep alive<ol style="list-style-type: decimal;"><li><p>First download the nomachine software Linux '''<span style="color:#FF0000">ARM64</span>''' DEB version of the installation package, and then install it in the Linux system of the development board</p><ol style="list-style-type: lower-alpha;"><li>Since RK3566 is a SOC of the ARMV8 architecture, the system we use is Ubuntu or Debian, so you need to download '''NoMachine for ARM ARMv8 DEB''' installation package here. The download link is shown below: </li>{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''Note that this download link may change, please recognize the DEB package of the ARMV8/ARM64 version.'''</big>|}{| class="wikitable" style="width:800px;" |-| [https://www.nomachine.com/download/download&id=112&s=ARM '''https://downloads.nomachine.com/download/?id=118&amp;distro=ARM''']|}
[[File:pi3b-img314.png]]<span id/ol><ol start="check-the2" style="list-serialstyle-numbertype: lower-of-the-rk3566-chipalpha;"></spanli>== Check In addition, you can also download the serial number of installation package to '''NoMachine''' in the RK3566 chip =='''official tools'''.</li>
The commands of the RK3566 chip serial number are shown below. The serial number of each chip is different, so you can use the serial number to distinguish multiple development boards[[File:pi3b-img315.png]]
orangepi@orangepi:~$ First enter the '''cat_serial.shremote login software-Nomachine'''folder
Serial [[File: '''8fa18eaf489041f0'''pi3b-img316.png]]
<span id="Then download the-method-of-downloading-and-installing-the-balenaetcher-ARM64 version-of-arm64"></span>== The method of downloading and installing the balenaEtcher version of arm64 ==DEB installation package
[[File:pi3b-img317.png]]</ol ><ol start="3" style="list-style-type: decimallower-alpha;"><li><p>The download address Then upload the downloaded '''nomachine_x.x.x_x_arm64.deb''' to the Linux system of Balenaetcher ARM64 version is: the development board.</p><ol style="list-style-type: lower-alpha;"/li><li>The download address <p>Then use the following command to install '''NoMachine''' in the Linux system of the Deb installation package is shown below, and it needs to be installed to usedevelopment 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'''
|}
https[[File://githubpi3b-img318.compng]]</Itaiol><ol start="3" style="list-Nelkenstyle-type: decimal;"><li><p>Then install nomachine in Windows. '''Please restart the computer after installation'''</BalenaEtcher-armp></releasesli><li><p>Then open '''NoMachine''' in Window</downloadp></v1.7li> [[File:pi3b-img319.9png]]</balenaol><ol start="5" style="list-etcherstyle-electron_1type: decimal;"><li>After Nomachine starts, it will automatically scan other devices installed in the local area network.7After 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.9+5945ab1f_arm64.debStart log in to the Linux system desktop of the development board</li>
[[File:pi3b-img320.png]]</ol><ol start="26" style="list-style-type: lower-alphadecimal;"><li>The download address of the Appimage version that does not need to be installed is shown below: Then click '''OK'''</li></ol>
https[[File://githubpi3b-img321.compng]]</Itaiol><ol start="7" style="list-Nelken/BalenaEtcherstyle-arm/releases/download/v1.7.9type: 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</balenaEtcher-1.7.9+5945ab1f-arm64.AppImageli>
<div class="figure">
[[File:pi3b-img275img322.png|527x211px|IMG_256]]
</div></ol><ol start="28" style="list-style-type: decimal;"><li><p>How to install and use Then click OK in the deb version of Balenaetcher: next interface</p><ol style="list-style-type: lower-alpha;"/li><li>deb version <p>Finally, you can see the desktop of Balenaetcher installation commands as shown below: the development board Linux system</lip><p>[[File:pi3b-img323.png]]</olp></li></ol>
orangepi@orangepi:~$ '''sudo apt install <span id="use-y \'''vnc-remote-login"></span>
'''--fix-broken ./balena-etcher-electron_1.7.9+5945ab1f_arm64.deb'''=== Use VNC remote login ===
<ol start{| class="2wikitable" style="listbackground-style-typecolor:#ffffdc;width: lower-alpha800px;">|-| <libig>After '''Before operation, please ensure that the deb version of Balenaetcher is installedWindwos computer and the development board are in the same local area network, it and you can be opened log in to the Ubuntu or Debian system of the Application</li></ol>development board normally.'''
'''<div classspan style="figurecolor:#FF0000">Ubuntu 20.04 tests many problems with VNC, please do not use this method.</span>'''</big>|}
[[File# First run the '''set_vnc.sh''' script settings, and '''<span style="color:pi3b-img89.png|507x249px|IMG_256]]#FF0000">remember to add Sudo permissions</span>'''
</div><ol start::{| class="3wikitable" style="list-style-typewidth: lower-alpha800px;"><li>The interface after Balenaetcher is opened is shown below|-| orangepi@orangepi: </li></ol>~$ '''sudo set_vnc.sh'''
<div class="figure">You will require a password to access your desktops.
[[File:pi3b-img276.png|429x263px|IMG_256]]
Password: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '''</div><ol start="3" span style="list-style-typecolor: decimal;#FF0000"><li><p>How to use #Set the AppImage version of balenaEtcher: </p><ol style="list-style-type: lowerVNC password here, 8 -alpha;"><li>First add permissions to Balenaetcher</li></ol></li>bit characters</olspan>'''
orangepi@orangepiVerify:~/Desktop$ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '''chmod +x balenaEtcher<span style="color:#FF0000">#Set the VNC password here, 8 -1.7.9+5945ab1f-arm64.AppImagebit characters</span>'''
Would you like to enter a view-only password (y/n)? '''<ol start="2" span style="list-style-typecolor: lower-alpha;#FF0000"><li>Then select the AppImage version balenaEtcher right -click the mouse, and then click Execute to open balenaEtcher</li>n</olspan>'''
[[Filexauth:pi3b-img277file /root/.png|145x118px]]Xauthority does not exist
<span id="the-installation-method-of-the-bt-panel-linux-panel"></span>
== The installation method of the Bt-Panel Linux panel ==
New 'X''Bt-Panel Linux panel desktop is a server management software that improves operation and maintenance efficiency. It supports more than 100 server management functions such as one -click LAMP/LNMP/cluster/monitoring/website/FTP/database/Java (excerpted from the [httpsorangepi3b://www.bt.cn/new/index.html official website of the Bt-Panel])'''1
# First of all, the size of the'''/tmp''' space is needed. After setting, you need to '''restart the Linux system of the development board''', and the command is shown below:
orangepi@orangepi:~$ '''sudo sed -i 'sCreating default startup script /nosuidroot/&amp;,size=2G.vnc/' /etc/fstab'''xstartup
orangepi@orangepi:~$ '''sudo reboot'''Starting applications specified in /root/.vnc/xstartup
<ol start="2" style="list-style-type: decimal;"><li>After restarting, you can see that the size of the'''Log file is /root/tmp''' space has become 2G.<vnc/li></ol>orangepi3b:1.log
orangepi@orangepi:~$ '''df -h | grep &quot;/tmp&quot;'''
tmpfs 2.0G 12K '''2.0G''' 1% /tmpKilling Xtightvnc process ID 3047
<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></ol>
orangepi@orangepi:~$ '''sudo install_bt_panel.sh'New 'X'desktop is orangepi3b:1
<ol start="4" style="list-style-type: decimal;">
<li>Then the pagoda installation program reminds whether to install the '''Bt-Panel''' to the'''/www''' folder, and enter y at this time</li></ol>
+----------------------------------------------------------------------Starting applications specified in /root/.vnc/xstartup
| Bt-WebPanel FOR CentOSLog file is /root/Ubuntu.vnc/Debianorangepi3b:1.log|}
+-----------------------------------------------------------------<ol start="2" style="list-style-type: decimal;"><li><p>The steps of using MobaxTerm software to connect the development board Linux system desktop are shown below: </p><ol style="list-style-type: lower-alpha;"><li>First click Session, then select VNC, then fill in the IP address and port of the development board, and finally click OK to confirm</li>
| Copyright © 2015-2099 BT-SOFT(http://www.bt.cn) All rights reserved.<div class="figure">
+---------------------------------------------------------------------[[File:pi3b-img324.png]]
| The WebPanel URL will be http:</div></SERVER_IPol><ol start="2" style="list-style-type:8888 when installed.lower-alpha;"><li>Then enter the password of the previously set VNC</li>
+-----------------------------------------------------------------[[File:pi3b-img325.png]]</ol><ol start="3" style="list-style-type: lower-alpha;"><li><p>The interface after the login is shown as shown in the figure below, and then the desktop of the Linux system can be remotely operated</p><p>[[File:pi3b-img326.png]]</p></li></ol></li></ol>
Do you want to install Bt<span id="some-Panel to the /www directory now?(yprogramming-language-tests-supported-by-linux-system"></n): '''y'''span>
<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>Some programming language tests supported by Linux system ==
[[File:pi3b<span id="debian-img278.png|576x233px]]bullseye-system"></span>=== Debian Bullseye system ===
<ol start="6" style="list-style-type: decimal;"><li><p>At this timeDebian Bullseye is equipped with a gcc compilation tool chain by default, enter which can directly compile the '''panel address''' displayed above C language program in the browser to open the login interface Linux system of the pagoda Linux panel, and then enter the '''username''' and '''password''' displayed in the corresponding position to log in to the Bt-Paneldevelopment board<br /p>[[File<ol style="list-style-type:pi3blower-img279.png|575x281px]]</p></lialpha;"><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 version of the bottom, and then you can choose &quot;I have agreed and read&quot; User Agreement &quot;, and then click&quot; Enter the panel &quot; You can enter the Bt-Panel</p>gcc is shown below</li></ol>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''gcc --version'''
[[File:pi3bgcc (Debian 10.2.1-img2806) 10.2.png|575x317px]]1 20210110
<ol start="8" style="list-style-type: decimal;"><li>After entering the Bt-Panel, you will first prompt that you need to bind the account of the Bt-Panel official website. If you do n’t have an account, you can go to the pagoda's official website Copyright ('''https://www.bt.cn'''C) to register one2020 Free Software Foundation, Inc.</li></ol>
[[File:pi3b-img281This is free software; see the source for copying conditions.png|576x300px]]There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.|}</ol><ol start="92" style="list-style-type: decimallower-alpha;"><li>The final display interface is shown in the figure belowWrite C language of '''Hello_world. You can intuitively see some status information of the development board Linux system, such as load state, CPU usage, memory usage and storage space usagec''' program</li></ol>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''vim hello_world.c'''
[[File:pi3b-img282.png|575x306px]]
<ol start="10" style="list-style-type: decimalp>#include &lt;stdio.h&gt;"><li>More functions of the Bt-Panel can refer to the following information to explore by yourself</li></olp>
Manual: [http://docs.bt.cn '''http://docs.bt.cn''']int main(void)
Forum address: [https://www.bt.cn/bbs '''https://www.bt.cn/bbs''']{
GitHub Link: '''https://github.com/aaPanel/BaoTa'''printf(&quot;Hello World!\n&quot;);
<span id="set-the-chinese-environment-and-install-chinese-input-method"></span>
== Set the Chinese environment and install Chinese input method ==
'''Note that before installing the Chinese input method, please make sure that the Linux system used in the development board is the desktop version system.''':return 0;
}|}<span id/ol><ol start="debian3" style="list-systemstyle-installationtype: lower-methodalpha;"><li>Then compile and run '''hello_world.c'''</spanli>{| class="wikitable" style== Debian system installation method ==="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>First set the default '''locale''' as ChineseDebian BullSeye Default with Python3</p>
<ol style="list-style-type: lower-alpha;">
<li>Enter the command The specific version of Python is shown below to start configured </li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''python3''' '''localePython 3.9.2'''</li></ol>(default, Feb 28 2021, 17:03:44) </li></ol>[GCC 10.2.1 20210110] on linux
orangepi@orangepi:~$ '''sudo dpkg-reconfigure locales'''Type &quot;help&quot;, &quot;copyright&quot;, &quot;credits&quot; or &quot;license&quot; for more information.
&gt;&gt;&gt;
|}
</ol>
<ol start="2" style="list-style-type: lower-alpha;">
<li>Then select '''zh_CNhello_world.UTF-8 UTF-8py''' program in the pop-up interface (to move up and down through the upper and lower direction buttons on the keyboard, select it through the space key, and finally move the cursor to '''&lt;OK&gt;''' through the TAB key, then press the ENTER key )Python language</li></ol>{| class="wikitable" style="width:800px;" |-| [[Fileorangepi@orangepi:pi3b-img283~$ '''vim hello_world.png|575x296px]]py'''
print('Hello World!')
|}
</ol>
<ol start="3" style="list-style-type: lower-alpha;">
<li>Then set the default '''locale''' as The results of running '''zh_CNhello_world.UTF-8py'''are shown below</li></ol> [[File:pi3b-img284.png{|575x160px]] <ol startclass="4wikitable" style="list-style-typewidth: lower-alpha800px;"><li>After exiting the interface, the '''locale''' settings will be started. The output displayed by the command line is shown below</li></ol>|-| orangepi@orangepi:~$ '''sudo dpkg-reconfigure locales''' Generating locales (this might take a while)python3 hello_world... en_US.UTF-8... done zh_CN.UTF-8... done Generation complete. <ol start="2" style="list-style-type: decimal;"><li>Then open py'''Input Method'''</li></ol> [[File:pi3b-img285.png|575x361px]]
Hello World!
|}
</ol>
</li></ol>
<ol start="3" style="list-style-type: decimal;">
<li>Then select <p>Debian Bullseye's compilation tool and operating environment that is not installed in Java by default</p><ol style="list-style-type: lower-alpha;"><li>You can use the following command to install OpenJDK. The latest version in Debian Bullseye is openjdk-17</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ ''OK'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</olli>{| class="wikitable" style="width:800px;" [[File|-| orangepi@orangepi:pi3b~$ '''java --img286.pngversion'''|295x212px]]}</ol><ol start="43" style="list-style-type: decimallower-alpha;"><li>Then select Edit the '''Yeshello_world.java'''of the Jave version</li></ol>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''vim hello_world.java'''
[[File:pi3b-img287.png|303x192px]]public class hello_world
<ol start="5" style="list-style-type: decimal;"><li>Then select '''fcitx'''</li></ol>{
:public static void main(String[[File:pi3b-img288.png|307x220px]]args)
<ol start="6" style="list-style-type: decimal;"><li>Then select '''OK'''</li></ol>{
[[File:pi3b-img289:System.out.png|305x216px]]println(&quot;Hello World!&quot;);
<ol start="7" style="list-style-type: decimal;"><li><p>'''Then restart the Linux system to make the configuration effective'''</p></li><li><p>Then open '''Fcitx configuration'''</p></li></ol>}
[[File}|}</ol><ol start="4" style="list-style-type:pi3blower-img290alpha;"><li>Then compile and run '''hello_world.pngjava'''</li>{|575x376px]]class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''javac hello_world.java'''
<ol start="9" style="list-style-typeorangepi@orangepi: decimal;"><li>Then click the + of the position shown in the figure below</li></ol>~$ '''java hello_world'''
[[File:pi3bHello World!|}</ol></li></ol><span id="ubuntu-img291.png|280x187px]]focal-system"></span>
<ol start="10" style="list-style-type: decimal;"><li>Then search '''Google Pinyin''' and click '''OK'''</li></ol>= Ubuntu Focal system ===
<div ol style="list-style-type: decimal;"><li><p>Ubuntu Focal has the GCC compilation tool chain by default, which can compile the C language program directly in the Linux system of the development board.</p><ol style="list-style-type: lower-alpha;"><li>The version of the gcc is shown below</li>{| class="figurewikitable" style="width:800px;">|-| orangepi@orangepi:~$ '''gcc --version'''
[[File:pi3bgcc (Ubuntu 9.4.0-img2921ubuntu1~20.04.1) 9.png|291x196px|C:\Users\orangepi\Desktop\用户手册插图\Pi5 Plus\未标题-104.jpg未标题-10]]0
</div><ol start="11" style="list-style-type: decimal;"><li>Then put '''Google Pinyin''' to the front</li></ol>Copyright (C) 2019 Free Software Foundation, Inc.
[[File:pi3b-img293This is free software; see the source for copying conditions.png|299x202px]]There is NO
[[Filewarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.|}</ol><ol start="2" style="list-style-type:pi3blower-img294alpha;"><li>'''hello_world.pngc''' program to write C language</li>{| class="wikitable" style="width:800px;" |300x202px]]-| orangepi@orangepi:~$ '''vim hello_world.c'''
<ol start="12" style="list-style-type: decimalp>#include &lt;stdio.h&gt;"><li>Then open the '''Geany''' editor to test the Chinese input method</li></olp>
[[File:pi3b-img295.png|349x212px]]
<ol start="13" style="list-style-type: decimal;"><li>The Chinese input method test is shown below</li></ol>int main(void)
[[File:pi3b-img296.png|575x325px]] <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></ol>{
orangepi@orangepi:~$ '''sudo vim /etc/default/locale'''printf(&quot;Hello World!\n&quot;);
# File generated by update-locale
LC_MESSAGES='''zh_CN.UTF-8''':return 0;
LANG}|}</ol><ol start="3" style="list-style-type: lower-alpha;"><li>Then compile and run '''zh_CNhello_world.UTFc'''</li>{| class="wikitable" style="width:800px;" |-8| orangepi@orangepi:~$ '''gcc -o hello_world hello_world.c'''
LANGUAGE='''zh_CN.UTF-8''' <ol start="16" style="list-style-typeorangepi@orangepi: decimal;"><li>Then '''restart the system~$ ''' to see the system displayed as Chinese</li></ol> [[File:pi3b-img297.png|576x356px]] <span id="the-installation-method-of-ubuntu-20.04-system"></span>=== The installation method of Ubuntu 20.04 system === # First open 'hello_world''Language Support''' [[File:pi3b-img298.png|575x351px]]
Hello World!
|}
</ol>
</li></ol>
<ol start="2" style="list-style-type: decimal;">
<li>Then find '''Chinese (China)''' option<p>Ubuntu Focal defaults to install Python3</p><ol style="list-style-type: lower-alpha;"><li>Python3 specific version is shown below</olli>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''python3'''
[[FilePython 3.8.10 (default, Nov 14 2022, 12:59:pi3b-img299.png|318x311px]]47)
<ol start="3" style="list-style-type: decimal;"><li>Then use the left mouse button to select '''Chinese (China)''' and hold it down, and then drag it up to the beginning[GCC 9. The display is shown below: </li></ol>4.0] on linux
[[File:pi3b-img300Type &quot;help&quot;, &quot;copyright&quot;, &quot;credits&quot; or &quot;license&quot; for more information.png|324x320px]]
&gt;&gt;&gt;|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li>'''Note that this step is not easy to drag, please try more patientlyhello_world.py''' program in Python language</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''vim hello_world.py'''
print('Hello World!')|}</ol><ol start="43" style="list-style-type: decimallower-alpha;"><li>Then select the The results of running '''Apply System-Widehello_world.py''' to apply the Chinese settings to the entire systemare shown below</li></ol>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''python3 hello_world.py'''
[[FileHello World!|}</ol></li></ol><ol start="3" style="list-style-type: decimal;"><li><p>Ubuntu Focal's compilation tool and operating environment without the installation of Java default</p><ol style="list-style-type: lower-alpha;"><li>You can use the following command to install '''openjdk-17'''</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo apt install -y openjdk-17-jdk'''|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li>After installation, you can check the version of Java</li>{| class="wikitable" style="width:pi3b800px;" |-img301.png|321x316px]]orangepi@orangepi:~$ '''java --version'''
<ol start="5" style="listopenjdk 17.0.2 2022-style01-type: decimal;"><li>Then set the '''Keyboard input method system''' to '''fcitx'''</li></ol>18
[[File:pi3bOpenJDK Runtime Environment (build 17.0.2+8-Ubuntu-img302120.png|327x320px]]04)
OpenJDK 64-Bit Server VM (build 17.0.2+8-Ubuntu-120.04, mixed mode, sharing)|}</ol><ol start="63" style="list-style-type: decimallower-alpha;"><li><p>Edit the '''hen restart the Linux system to make the configuration effectivehello_world.java'''</p>of Jave version</li><li><p>After re {| class="wikitable" style="width:800px;" |-entering the system, please do | orangepi@orangepi:~$ '''not ask me againvim hello_world.java''' at the interface below, and then determine whether the standard folder should be updated as Chinese based on your preference.</p></li></ol>
[[File:pi3b-img303.png|303x247px]]public class hello_world
<ol start="8" style="list-style-type: decimal;"><li>Then you can see that the desktop is displayed as Chinese</li></ol>{
:public static void main(String[[File:pi3b-img304.png|575x383px]]args)
<ol start="9" style="list-style-type: decimal;"><li>Then we can open the '''Geany''' to test Chinese input method , and the way to open is shown in the figure below</li></ol>{
[[File:pi3b-img305:System.out.png|576x292px]]println(&quot;Hello World!&quot;);
<ol start="10" style="list-style-type: decimal;"><li>After opening '''Geany''', the default is an English input method. We can switch into Chinese input method through the '''Ctrl+Space''' shortcut keys, and then we can enter Chinese</li></ol>}
[[File}|}</ol><ol start="4" style="list-style-type:pi3blower-img306alpha;"><li>Then compile and run '''hello_world.pngjava'''</li>{|575x308px]]class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''javac hello_world.java'''
<span id="the-installation-method-of-ubuntu-22.04-system"></span>=== The installation method of ubuntu 22.04 system ===orangepi@orangepi:~$ '''java hello_world'''
# First open '''Language Support'''Hello World!|}</ol></li></ol><span id="ubuntu-jammy-system"></span>
[[File:pi3b-img298.png|575x351px]]=== Ubuntu jammy system ===
<ol startstyle="2list-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: decimallower-alpha;"><li>Then find The version of the gcc is shown below</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''Chinese (China)gcc --version''' option</li></ol>
[[File:pi3bgcc (Ubuntu 11.2.0-img30719ubuntu1) '''11.2.png|335x326px]]0'''
<ol start="3" style="list-style-type: decimal;"><li>Then use the left mouse button to select '''Chinese Copyright (ChinaC)''' and hold it down2021 Free Software Foundation, and then drag it up to the beginningInc. The display after dragging is shown in the figure below: </li></ol>
[[File:pi3b-img308This is free software; see the source for copying conditions.png|337x331px]]There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li>Write the '''hello_world.c'''Note that this step is not easy to drag, please try more patientlyprogram of c language</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''vim hello_world.c'''
<ol start="4" style="list-style-type: decimalp>#include &lt;stdio.h&gt;"><li>Then select the '''Apply System-Wide''' to apply the Chinese settings to the entire system</li></olp>
[[File:pi3b-img309.png|336x330px]]
<ol start="5" style="list-style-type: decimal;"><li><p>'''Then restart the Linux system to make the configuration effective'''</p></li><li><p>After re -entering the system, please '''do not ask me again''' at the interface below, and then determine whether the standard folder should be updated as Chinese based on your preference</p></li></ol>int main(void)
[[File:pi3b-img303.png|303x247px]]{
<ol start="7" style="list-style-type: decimalprintf(&quot;Hello World!\n&quot;);"><li>Then you can see that the desktop is displayed as Chinese</li></ol>
[[File:pi3b-img304.png|575x383px]]
<ol start="8" style="list-style-type: decimalreturn 0;"><li>Then open the Fcitx5 configuration program</li></ol>
[[File}|}</ol><ol start="3" style="list-style-type:pi3blower-img310alpha;"><li>Then compile and run '''hello_world.pngc'''</li>{| class="wikitable" style="width:800px;" |-|575x349px]]orangepi@orangepi:~$ '''gcc -o hello_world hello_world.c'''
<ol start="9" style="list-style-typeorangepi@orangepi: decimal;"><li>Then choose to use Pinyin input method<~$ '''./li></ol>hello_world'''
Hello World!|}<div class="figure"/ol></li></ol>
[[File<ol start="2" style="list-style-type:pi3bdecimal;"><li><p>Ubuntu jammy is installed with Python3 by default</p><ol style="list-style-img311.pngtype: lower-alpha;"><li>Python3 specific version is shown below</li>{|338x267pxclass="wikitable" style="width:800px;" |C-| orangepi@orangepi:\Users\orangepi\Desktop\用户手册插图\Pi5 Plus\未标题-11.jpg未标题-11]]~$ '''python3'''
</div><ol start="Python '''3.10" style="list-style-type.4''' (main, Apr 2 2022, 09:04: decimal;"><li>The interface after the selection is shown below, then click OK</li></ol>19) [GCC 11.2.0] on linux
[[File:pi3b-img312Type &quot;help&quot;, &quot;copyright&quot;, &quot;credits&quot; or &quot;license&quot; for more information.png|366x290px]]
&gt;&gt;&gt;|}</ol><ol start="112" style="list-style-type: decimallower-alpha;"><li>Then we can open the Edit '''Geanyhello_world.py''' to test Chinese input method, and the way to open is shown program in the figure belowPython language</li></ol>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''vim hello_world.py'''
[[Fileprint('Hello World!')|}</ol><ol start="3" style="list-style-type:pi3blower-img305alpha;"><li>The results of running '''hello_world.pngpy''' are shown below</li>{|576x292px]]class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''python3 hello_world.py'''
Hello World!|}</ol></li></ol><ol start="123" style="list-style-type: decimal;"><li>After opening <p>Ubuntu jammy defaults to compile tools and operating environments that are not installed in Java</p><ol style="list-style-type: lower-alpha;"><li>You can use the following command to install openjdk-18</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''Geanysudo apt install -y openjdk-18-jdk'''|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li>After installation, it is still an English input method by default. We you can switch into Chinese input methods through check the version of Java</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''Ctrl+Spacejava --version''' shortcut keys, and then we can enter Chinese</li></ol>
[[File:pi3bopenjdk 18-img313.png|576x408px]]ea 2022-03-22
<span id="howOpenJDK Runtime Environment (build 18-toea+36-remotelyUbuntu-log-in-to-the-linux-system-desktop-method"></span>== How to remotely log in to the Linux system desktop method ==1)
OpenJDK 64-Bit Server VM (build 18-ea+36-Ubuntu-1, mixed mode, sharing)|}</ol><ol start="3" style="list-style-type: lower-alpha;"><li>Edit the '''hello_world.java'''Ubuntu Gnome Wayland image does not support Nomachine and VNCs introduced here to remotely log in to of the desktopJave version</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''vim hello_world.java'''
<span id="use-nomachine-remote-login"></span>=== Use nomachine remote login ===public class hello_world
'''Make sure the Ubuntu or Debian system installed on the development board is a desktop version. In addition, nomachine also provides detailed documents. It is strongly recommended to read this document to be familiar with the use of nomachine. The document links are shown below: '''{
'''https://knowledgebase.nomachine.com/DT10R00166'''public static void main(String[] args)
'''Nomachine supports Windows, Mac, Linux, iOS, and Android platforms, so we can remotely log in to control Orange PI development boards through Nomachine on multiple devices. The following demonstrates the Linux system desktop of the Orange PI development board through Nomachine in Windows. For installation methods for other platforms, please refer to the official documentation of Nomachine.''':{
'''Before operation, please ensure that the Windwos computer and the development board are in the same local area network, and can log in to the Ubuntu or Debian system that can log in to the development board normally::System.'''out.println(&quot;Hello World!&quot;);
<ol style="list-style-type: decimal;"><li><p>First download the nomachine software Linux '''ARM64''' DEB version of the installation package, and then install it in the Linux system of the development board</p><ol style="list-style-type: lower-alpha;"><li>Since RK3566 is a SOC of the ARMV8 architecture, the system we use is Ubuntu or Debian, so you need to download '''NoMachine for ARM ARMv8 DEB''' installation package here. The download link is shown below: </li></ol></li></ol>}
}|}</ol><ol start="4" style="list-style-type: lower-alpha;"><li>Then compile and run '''Note that this download link may change, please recognize the DEB package of the ARMV8/ARM64 versionhello_world.java'''</li>{| class="wikitable" style="width:800px;" |-| [httpsorangepi@orangepi://www.nomachine.com/download/download&id=112&s=ARM ~$ '''https://downloads.nomachinejavac hello_world.com/download/?id=118&amp;distro=ARMjava''']
[[Fileorangepi@orangepi:pi3b-img314.png|575x227px]]~$ '''java hello_world'''
Hello World!|}</ol start="2" style="list-style-type: lower-alpha;"></li>In addition, you can also download the installation package to '''NoMachine''' in the '''official tools'''.</liol><span id="qt-installation-method"></olspan>
[[File:pi3b-img315.png|66x102px]]== QT installation method ==
<blockquote>First enter # Use the '''remote login software-Nomachine''' folder</blockquote>[[File:pi3b-img316.png|271x43px]]following script to install QT5 and QT Creator
<blockquote>Then download the ARM64 version of the DEB installation package</blockquote>[[File:pi3b-img317.png:{|180x109px]] <ol startclass="3wikitable" style="list-style-typewidth: lower-alpha800px;"><li><p>Then upload the downloaded '''nomachine_x.x.x_x_arm64.deb''' to the Linux system of the development board.</p></li><li><p>Then use the following command to install '''NoMachine''' in the Linux system of the development board</p></li></ol>|-| orangepi@orangepi:~$ '''sudo dpkg -i nomachine_xinstall_qt.x.x_x_arm64_arm64.debsh'''|}
<ol start="2" style="list-style-type: decimal;">
<li>Then download the nomachine software Windows <p>The QT version of the number will be automatically printed after installation package, the download address is shown below</p><ol style="list-style-type: lower-alpha;"><li>Ubuntu20.04 comes with QT version '''5.12.8'''</olli>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''install_qt.sh'''
'''Note that this download link may change.'''.....
'''https://downloadsQMake version 3.nomachine.com/download/?id=9'''1
[[FileUsing Qt version '''<span style="color:pi3b#FF0000">5.12.8</span>''' in /usr/lib/aarch64-linux-gnu|}</ol><ol start="2" style="list-style-type: lower-img318alpha;"><li>Ubuntu22.04 comes with QT version '''5.15.png3'''</li>{| class="wikitable" style="width:800px;" |-|575x163px]]orangepi@orangepi:~$ '''install_qt.sh'''
<ol start="3" style="list-style-type: decimal;"><li><p>Then install nomachine in Windows. '''Please restart the computer after installation'''</p></li><li><p>Then open '''NoMachine''' in Window</p></li></ol>.....
[[File:pi3b-img319QMake version 3.png|76x66px]]1
Using Qt version '''<span style="color:#FF0000">5.15.3</span>''' in /usr/lib/aarch64-linux-gnu|}</ol><ol start="53" style="list-style-type: decimallower-alpha;"><li>After Nomachine starts, it will automatically scan other devices installed in the local area networkDebian11 comes with QT version '''5. 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 below15. Start log in to the Linux system desktop of the development board2'''</li></ol>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''install_qt.sh'''
[[File:pi3b-img320.png|321x92px]].....
<ol start="6" style="list-style-type: decimal;"><li>Then click '''OK'''</li></ol>QMake version 3.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-img321alpha;"><li>Debian12 comes with QT version '''5.png15.8'''</li>{| class="wikitable" style="width:800px;" |402x275px]]-| orangepi@orangepi:~$ '''install_qt.sh'''
<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 '''OK''' to start logging in</li></ol>......
<div class="figure">QMake version 3.1
[[FileUsing Qt version '''<span style="color:pi3b#FF0000">5.15.8</span>''' in /usr/lib/aarch64-linux-img322.png|303x204pxgnu|C:\Users\orangepi\Desktop\用户手册插图\Pi5 Plus\未标题}</ol></li></ol><ol start="3" style="list-12.jpg未标题style-12]]type: decimal;"><li>Then you can see the QT Creator launch icon in '''Applications'''</li>
</div><ol start="8" style="list-style-type: decimal;"><li><p>Then click OK in the next interface</p></li><li><p>Finally, you can see the desktop of the development board Linux system</p><p>[[File:pi3b-img323img327.png|411x246px]]</p></li></ol>
<span idQT Creator can also be opened using the following command{| class="wikitable" style="usewidth:800px;" |-vnc| orangepi@orangepi:~$ '''qtcreator'''|}{| class="wikitable" style="background-remotecolor:#ffffdc;width:800px;" |-login">| </spanbig>=== Use VNC remote login ==='''During the startup of QT and QT applications, if the following error is displayed, ignore it. This error has no impact on application running.'''
'''Before operation, please ensure that the Windwos computer and the development board are in the same local area network, and you can log in to the Ubuntu or Debian system of the development board normally.'''
'''Ubuntu 20.04 tests many problems with VNC, please do not use this method.libGL error: failed to create dri screen'''
# First run the '''set_vnc.sh''' script settings, and '''remember libGL error: failed to add Sudo permissionsload driver: rockchip'''
orangepi@orangepi:~$ '''sudo set_vnc.shlibGL error: failed to create dri screen'''
You will require a password '''libGL error: failed to access your desktops.load driver: rockchip'''</big>|}</ol><ol start="4" style="list-style-type: decimal;"><li>The interface after QT Creator is opened is as follows</li>
Password[[File: pi3b-img328.png]]</ol><ol start="5" style="list-style-type: decimal;"><li><p>The QT Creator version is shown below</p><ol style="list-style-type: lower-alpha;"><li>The default version of QT Creator in '''#Set the VNC password here, 8 -bit charactersUbuntu20.04'''is as follows</li>
Verify[[File: pi3b-img329.png]]</ol><ol start="2" style="list-style-type: lower-alpha;"><li>The default version of QT Creator in '''#Set the VNC password here, 8 -bit charactersUbuntu22.04'''is as follows</li>
Would you like to enter a view[[File:pi3b-only password (yimg330.png]]</n)? ol><ol start="3" style="list-style-type: lower-alpha;"><li>The default version of QT Creator in '''nDebian11'''is as follows</li>
xauth[[File: file pi3b-img331.png]]</rootol><ol start="4" style="list-style-type: lower-alpha;"><li>The default version of QT Creator in '''Debian12''' is as follows</.Xauthority does not existli>
New [[File:pi3b-img332.png]]</ol></li></ol><ol start="6" style="list-style-type: decimal;"><li><p>Then set QT</p><ol style="list-style-type: lower-alpha;"><li>First open '''Help'''-&gt;'''About Plugins...'''</li> [[File:pi3b-img333.png]]</ol><ol start="2" style="list-style-type: lower-alpha;"><li>Then remove the check box for '''ClangCodeModel''X' desktop is orangepi3b</li> [[File:pi3b-img334.png]]</ol><ol start="3" style="list-style-type:1lower-alpha;"><li><p>'''<span style="color:#FF0000">Restart QT Creator after the Settings are complete</span>'''</p></li>Creating <li><p>Then make sure that QT Creator uses the GCC compiler, if the default startup script is Clang, change it to GCC</rootp></li>{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''Debian12 Please skip this step.vnc'''</xstartupbig>|}
Starting applications specified in /root/[[File:pi3b-img335.vnc/xstartuppng]]
Log file is [[File:pi3b-img336.png]]</rootol></.vncli></orangepi3bol><ol start="7" style="list-style-type:1.logdecimal;"><li>You can then open a sample code</li>
Killing Xtightvnc process ID 3047[[File:pi3b-img337.png]]</ol><ol start="8" style="list-style-type: decimal;"><li>Clicking on the example code will automatically open the corresponding instruction document, you can carefully read the instructions</li>
New [[File:pi3b-img338.png]]</ol><ol start="9" style="list-style-type: decimal;"><li>Then click ''X' desktop is orangepi3b:1Configure Project'''</li>
Starting applications specified [[File:pi3b-img339.png]]</ol><ol start="10" style="list-style-type: decimal;"><li>Then click the green triangle in the lower left corner to compile and run the sample code</root/.vnc/xstartupli>
Log file is /root/[[File:pi3b-img340.vncpng]]</orangepi3bol><ol start="11" style="list-style-type:1.logdecimal;"><li>After waiting for a period of time, the interface shown in the following figure will pop up, which indicates that QT can compile and run normally</li>
[[File:pi3b-img341.png]]</ol><ol start="212" style="list-style-type: decimal;"><li><p>The steps of using MobaxTerm software to connect the development board Linux system desktop are shown below: Reference documents</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><|-| '''https:/ol></li><wiki.qt.io/ol>Install_Qt_5_on_Ubuntu'''
<div class="figure">'''https://download.qt.io/archive/qtcreator'''
[[File'''https:pi3b-img324//download.qt.pngio/archive/qt'''|490x349px|图片1208]]}</ol><span id="ros-installation-method"></span>
</div><ol start="2" style="list-style-type: lower-alpha;"><li>Then enter the password of the previously set VNC</li></ol>ROS Installation Method ==
[[File:pi3b<span id="how-img325to-install-ros-1-noetic-on-ubuntu-20.04"></span>=== How to install ROS 1 Noetic on Ubuntu 20.png|274x131px]]04 ===
<ol start="3" style="list-style-type: lower-alpha;"><li><p># The interface after the login current active version of ROS 1 is shown as shown in the figure belowfollows, and then the desktop of the Linux system can be remotely operated</p><p>[[File:pi3b-img326.png|405x293px]]</p></li></ol>recommended version is '''Noetic Ninjemys'''
<span id="some::[[File:pi3b-programming-language-tests-supported-by-linux-system"></span>== Some programming language tests supported by Linux system ==img342.png|800px]]
<span id="debian::[[File:pi3b-bullseye-system"></span>=== Debian Bullseye system ===img343.png|800px]]
<ol style::{| class="list-style-type: decimal;wikitable"><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-typewidth: lower-alpha800px;"><li>The version of the gcc is shown below<|-| [http:/li></ol><docs.ros.org/ '''http:/li></ol>docs.ros.org''']
orangepi@orangepi:~$ '''gcc --versionhttps://wiki.ros.org/Distributions'''|}
gcc (Debian 10<ol start="2" style="list-style-type: decimal;"><li>The official installation document link of ROS 1 '''Noetic Ninjemys''' is as follows:</li>{| class="wikitable" style="width:800px;" |-| [http://wiki.ros.org/noetic/Installation/Ubuntu '''http://wiki.2ros.org/noetic/Installation/Ubuntu''']|}</ol><ol start="3" style="list-style-type: decimal;"><li>In the official installation document of ROS '''Noetic Ninjemys''', Ubuntu recommends using Ubuntu20.04, so please make sure that the system used by the development board is '''<span style="color:#FF0000">Ubuntu20.104 desktop system</span>'''</li>{| class="wikitable" style="width:800px;" |-6) 10| http://wiki.2ros.1 20210110org/noetic/Installation|}
Copyright (C) 2020 Free Software Foundation[[File:pi3b-img344.png]]</ol><ol start="4" style="list-style-type: decimal;"><li>Then use the script below to install ros1</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi3b:~$ '''install_ros.sh ros1'''|}</ol><ol start="5" style="list-style-type: decimal;"><li>Before using the ROS tool, you first need to initialize rosdep, and then you can quickly install some system dependencies and some core components in ROS when compiling the source code</li>{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''Note that running the following command needs to ensure that the development board can access github normally, Incotherwise an error will be reported due to network problems.'''
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE'''The install_ros.sh script will try to modify /etc/hosts and automatically run the following commands. However, this method cannot guarantee normal access to github every time. If the following error is displayed after installing ros1 in install_ros.sh, please find other ways to allow the Linux system of the development board to access github normally, and then manually run the following Order.'''
<ol start="2" style="list-style-type: lower-alpha;">
<li>Write C language of '''Hello_world.c''' program</li></ol>
orangepi@orangepi:~$ '''vim hello_worldhttps://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.cyaml'''
#include &lt;stdio'''Hit https://raw.h&gt;githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml'''
int main(void)'''ERROR: error loading sources list:'''
:'''The read operation timed out'''</big>|}{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''source /opt/ros/noetic/setup.bash'''
printf(&quot;Hello World!\n&quot;);orangepi@orangepi:~$ '''sudo rosdep init'''
return 0;Wrote /etc/ros/rosdep/sources.list.d/20-default.list
}Recommended: please run
<ol start="3" style="list-style-type: lower-alpha;">
<li>Then compile and run '''hello_world.c'''</li></ol>
orangepi@orangepi:~$ '''gcc -o hello_world hello_world.c''':rosdep update
orangepi@orangepi:~$ '''./hello_worldrosdep update'''
Hello World!reading in sources list data from /etc/ros/rosdep/sources.list.d
<ol start="2" style="list-style-typeHit https: decimal;"><li><p>Debian BullSeye Default with Python3</p><ol style="list-style-type: lower-alpha;"><li>The specific version of Python is shown below</li><raw.githubusercontent.com/ros/rosdistro/ol><master/li><rosdep/ol>osx-homebrew.yaml
orangepi@orangepiHit https:~$ '''python3'''//raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml
'''Python 3Hit https://raw.githubusercontent.9com/ros/rosdistro/master/rosdep/python.2''' (default, Feb 28 2021, 17:03:44)yaml
[GCC 10Hit https://raw.2githubusercontent.1 20210110] on linuxcom/ros/rosdistro/master/rosdep/ruby.yaml
Type &quot;help&quot;, &quot;copyright&quot;, &quot;credits&quot; or &quot;license&quot; for more informationHit https://raw.githubusercontent.com/ros/rosdistro/master/releases/fuerte.yaml
&gt;&gt;&gt;Query rosdistro index https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml
<ol start="2" style="listSkip end-styleof-type: lower-alphalife distro &quot;ardent&quot;"><li>'''hello_world.py''' program in Python language</li></ol>
orangepi@orangepi:~$ '''vim hello_world.py'''Skip end-of-life distro &quot;bouncy&quot;
print('Hello World!')Skip end-of-life distro &quot;crystal&quot;
<ol start="3" style="listSkip end-styleof-type: lower-alphalife distro &quot;dashing&quot;"><li>The results of running '''hello_world.py''' are shown below</li></ol>
orangepi@orangepi:~$ '''python3 hello_world.py'''Skip end-of-life distro &quot;eloquent&quot;
Hello World!Add distro &quot;foxy&quot;
<ol start="3" style="list-style-type: decimalAdd distro &quot;"><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-alphagalactic&quot;"><li>You can use the following command to install OpenJDK. The latest version in Debian Bullseye is openjdk-17</li></ol></li></ol>
orangepi@orangepi:~$ '''sudo apt install Skip end-y openjdkof-17-jdk'''life distro &quot;groovy&quot;
<ol start="2" style="list-style-type: lower-alphaAdd distro &quot;humble&quot;"><li>After installation, you can check the version of Java</li></ol>
orangepi@orangepi:~$ '''java Skip end-of-version'''life distro &quot;hydro&quot;
<ol start="3" style="listSkip end-styleof-type: lower-alphalife distro &quot;indigo&quot;"><li>Edit the '''hello_world.java''' of the Jave version</li></ol>
orangepi@orangepi:~$ '''vim hello_world.java'''Skip end-of-life distro &quot;jade&quot;
public class hello_worldSkip end-of-life distro &quot;kinetic&quot;
{Skip end-of-life distro &quot;lunar&quot;
public static void main(String[] args)Add distro &quot;melodic&quot;
{Add distro &quot;noetic&quot;
System.out.println(Add distro &quot;Hello World!rolling&quot;);
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 desktop, and then use the test_ros.sh script to start a small turtle routine to test whether ROS can be used normally</p></li>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''test_ros.sh'''</p>|}<li><p>After running the '''test_ros.sh''' script, a little turtle as shown in the figure below will pop up</p></li>
}<div class="figure">
<ol start="4" style="list-style-type[[File: lowerpi3b-alpha;"><li>Then compile and run '''hello_worldimg345.java'''</li></ol>png]]
orangepi@orangepi</div></ol><ol start="8" style="list-style-type:~$ '''javac hello_world.java'''decimal;"><li>Then please keep the terminal window just opened at the top</li>
orangepi@orangepi:~$ '''java hello_world'''<div class="figure">
Hello World![[File:pi3b-img346.png]]
<span id/div></ol><ol start="9" style="ubuntulist-focalstyle-systemtype: decimal;"><li>At this time, press the direction keys on the keyboard to control the little turtle to move up, down, left, and right</spanli>=== Ubuntu Focal system ===
<ol style="list[[File:pi3b-style-type: decimal;">img347.png]]<li><p>Ubuntu Focal has the GCC compilation tool chain by default, which can compile the C language program directly in the Linux system of the development board.</pol><ol stylespan id="listhow-styleto-type: lowerinstall-ros-2-galactic-on-ubuntu-alpha;20.04"><li>The version of the gcc is shown below</li></ol></li></olspan>
orangepi@orangepi:~$ '''gcc --version'''=== How to install ROS 2 Galactic on Ubuntu 20.04 ===
gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0# The current active version of ROS 2 is as follows, the recommended version is '''Galactic Geochelone'''
Copyright (C) 2019 Free Software Foundation, Inc::[[File:pi3b-img348.png]]
This is free software; see the source for copying conditions::[[File:pi3b-img349. There is NOpng]]
warranty::{| class="wikitable" style="width:800px; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE" |-| [http://docs.ros.org/ '''http://docs.ros.org''']
<ol start="2" style="list-style-type: lower-alpha;"><li>'''hello_worldhttp://docs.cros.org/en/galactic/Releases.html''' program to write C language</li></ol>|}
orangepi@orangepi<ol start="2" style="list-style-type:~$ decimal;"><li>The link to the official ROS 2 '''vim hello_worldGalactic Geochelone''' installation documentation is as follows:</li>{| class="wikitable" style="width:800px;" |-| '''docs.ros.org/en/galactic/Installation.chtml'''
'''http://docs.ros.org/en/galactic/Installation/Ubuntu-Install-Debians.html'''|}</ol><ol start="3" style="list-style-type: decimal;"><li><p>It is recommended to use Ubuntu20.04 in the official installation document of ROS 2 '''Galactic Geochelone''', so please ensure that the system used by the development board is '''<span style="color:#include &ltFF0000">Ubuntu20.04 desktop version</span>'''. There are several ways to install ROS 2. The following shows how to install ROS 2 '''Galactic Geochelone''' using '''Debian packages'''</p></li><li><p>Use the '''install_ros.sh''' script to install ros2</p></li>{| class="wikitable" style="width:800px;stdio" |-| orangepi@orangepi:~$ '''install_ros.h&gt;sh ros2'''|}</ol>int main(void)<ol start="5" style="list-style-type: decimal;"><li>The '''install_ros.sh''' script will automatically run the '''ros2 -h''' command after installing ros2. If you can see the following print, it means that the ros2 installation is complete</li>{| class="wikitable" style="width:800px;" |-| printf(usage: ros2 [-h] Call `ros2 &quotlt;Hello World!\ncommand&quot;)gt;-h` for more detailed usage. ...
return 0;
}ros2 is an extensible command-line tool for ROS 2.
<ol start="3" style="list-style-type: lower-alpha;">
<li>Then compile and run '''hello_world.c'''</li></ol>
orangepi@orangepioptional arguments:~$ '''gcc -o hello_world hello_world.c'''
orangepi@orangepi:~$ '''./hello_world'''-h, --help show this help message and exit
Hello World!
<ol start="2" style="list-style-typeCommands: decimal;"><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'''action Various action related sub-commands
Python 3.8.10 (default, Nov 14 2022, 12:59:47)bag Various rosbag related sub-commands
[GCC 9.4.0] on linux:component Various component related sub-commands
Type &quot;help&quot;, &quot;copyright&quot;, &quot;credits&quot; or &quot;license&quot; for more information.:daemon Various daemon related sub-commands
&gt;&gt;&gt;:doctor Check ROS setup and other potential issues
<ol start="2" style="list-style-type: lower-alpha;"><li>'''hello_world.py''' program in Python language</li></ol>interface Show information about ROS interfaces
orangepi@orangepi:~$ '''vim hello_world.py'''launch Run a launch file
print('Hello World!'):lifecycle Various lifecycle related sub-commands
<ol start="3" style="list-style-type: lowermulticast Various multicast related sub-alpha;"><li>The results of running '''hello_world.py''' are shown below</li></ol>commands
orangepi@orangepi:~$ '''python3 hello_world.py'''node Various node related sub-commands
Hello World!:param Various param related sub-commands
<ol start="3" style="list-style-type: decimal;"><li><p>Ubuntu Focal's compilation tool and operating environment without the installation of Java default</p><ol style="list-style-type: lower-alpha;"><li>You can use the following command to install '''openjdkpkg Various package related sub-17'''</li></ol></li></ol>commands
orangepi@orangepi:~$ '''sudo apt install -y openjdk-17-jdk'''run Run a package specific executable
<ol start="2" style="list-style-type: lowersecurity Various security related sub-alpha;"><li>After installation, you can check the version of Java</li></ol>commands
orangepi@orangepi:~$ '''java service Various service related sub--version'''commands
openjdk 17.0.2 2022:topic Various topic related sub-01-18commands
OpenJDK Runtime Environment (build 17.0.2+8-Ubuntu-120.04):wtf Use `wtf` as alias to `doctor`
OpenJDK 64-Bit Server VM (build 17.0.2+8-Ubuntu-120.04, mixed mode, sharing)
:Call `ros2 &lt;command&gt; -h` for more detailed usage.|}</ol><ol start="36" style="list-style-type: lower-alphadecimal;"><li>Edit Then you can use the '''hello_worldtest_ros.javash''' of Jave versionscript to test whether ROS 2 is installed successfully. If you can see the following print, it means that ROS 2 can run normally</li></ol>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi3b:~$ '''test_ros.sh'''
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(&quot;204019965] [listener]: I heard: [Hello World!&quot: 3]|}</ol><ol start="7" style="list-style-type: decimal;)"><li>Run the following command to open rviz2</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''source /opt/ros/galactic/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_worldimg350.java'''</li></ol>png]]
orangepi@orangepi</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;" |-| '''javac hello_worldhttp://docs.javaros.org/en/galactic/Tutorials.html'''|}</ol><span id="how-to-install-ros-2-humble-on-ubuntu-22.04"></span>
orangepi@orangepi:~$ '''java hello_world'''=== How to install ROS 2 Humble on Ubuntu 22.04 ===
Hello World!# Use the '''install_ros.sh''' script to install ros2
<span id::{| class="ubuntuwikitable" style="width:800px;" |-jammy-system"></span>=== Ubuntu jammy system ===| orangepi@orangepi:~$ '''install_ros.sh ros2'''|}
<ol start="2" style="list-style-type: decimal;"><li><p>Ubuntu Jammy is installed with The '''install_ros.sh''' script will automatically run the GCC compilation tool chain by default, which '''ros2 -h''' command after installing ros2. If you can directly compile see the C language program in the Linux system of the development board</p><ol style="list-style-type: lower-alpha;"><li>The version of following print, it means that the gcc ros2 installation is shown belowcomplete</li></ol></li></ol>
orangepi@orangepi{| class="wikitable" style="width:~$ '''gcc 800px;" |-| usage: ros2 [-h] Call `ros2 &lt;command&gt; -version'''h` for more detailed usage. ...
gcc (Ubuntu 11.2.0-19ubuntu1) '''11.2.0'''
Copyright (C) 2021 Free Software Foundation, Incros2 is an extensible command-line tool for ROS 2.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.optional arguments:
<ol start="2" style="list:-styleh, -type: lower-alpha;"><li>Write the '''hello_world.c''' program of c language</li></ol>help show this help message and exit
orangepi@orangepi:~$ '''vim hello_world.c'''
#include &lt;stdio.h&gt;Commands:
int main(void):action Various action related sub-commands
{:bag Various rosbag related sub-commands
printf(&quot;Hello World!\n&quot;);:component Various component related sub-commands
return 0;:daemon Various daemon related sub-commands
}:doctor Check ROS setup and other potential issues
<ol start="3" style="list-style-type: lower-alpha;"><li>Then compile and run '''hello_world.c'''</li></ol>interface Show information about ROS interfaces
orangepi@orangepi:~$ '''gcc -o hello_world hello_world.c'''launch Run a launch file
orangepi@orangepi:~$ '''./hello_world'''lifecycle Various lifecycle related sub-commands
Hello World!:multicast Various multicast related sub-commands
<ol start="2" style="list-style-type: decimal;"><li><p>Ubuntu jammy is installed with Python3 by default</p><ol style="list-style-type: lowernode Various node related sub-alpha;"><li>Python3 specific version is shown below</li></ol></li></ol>commands
orangepi@orangepi:~$ '''python3'''param Various param related sub-commands
Python '''3.10.4''' (main, Apr 2 2022, 09:04:19) [GCC 11.2.0] on linuxpkg Various package related sub-commands
Type &quot;help&quot;, &quot;copyright&quot;, &quot;credits&quot; or &quot;license&quot; for more information.:run Run a package specific executable
&gt;&gt;&gt;:security Various security related sub-commands
<ol start="2" style="list-style-type: lowerservice Various service related sub-alpha;"><li>Edit '''hello_world.py''' program in Python language</li></ol>commands
orangepi@orangepi:~$ '''vim hello_world.py'''topic Various topic related sub-commands
print('Hello World!'):wtf Use `wtf` as alias to `doctor`
<ol start="3" style="list-style-type: lower-alpha;">
<li>The results of running '''hello_world.py''' are shown below</li></ol>
orangepi@orangepi:~$ Call `ros2 &lt;command&gt; -h` for more detailed usage.|}</ol><ol start="3" style="list-style-type: decimal;"><li>Then you can use the '''python3 hello_worldtest_ros.pysh'''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>
Hello World!{| class="wikitable" style="width:800px;" |-| orangepi@orangepi3b:~$ '''test_ros.sh'''
<ol start="3" style="list-style-type[INFO] [1671174101.200091527] [talker]: decimal;"><li><p>Ubuntu jammy defaults to compile tools and operating environments that are not installed in Java</p><ol style="list-style-typePublishing: lower-alpha;"><li>You can use the following command to install openjdk-18</li></ol></li></ol>'Hello World: 1'
orangepi@orangepi[INFO] [1671174101.235661048] [listener]:~$ '''sudo apt install -y openjdk-18-jdk'''I heard: [Hello World: 1]
<ol start="[INFO] [1671174102.199572327] [talker]: Publishing: 'Hello World: 2" style="list-style-type: lower-alpha;"><li>After installation, you can check the version of Java</li></ol>'
orangepi@orangepi[INFO] [1671174102.204196299] [listener]:~$ '''java --version'''I heard: [Hello World: 2]
openjdk 18-ea 2022-03-22[INFO] [1671174103.199580322] [talker]: Publishing: 'Hello World: 3'
OpenJDK Runtime Environment (build 18[INFO] [1671174103.204019965] [listener]: I heard: [Hello World: 3]|}</ol><ol start="4" style="list-ea+36style-Ubuntutype: decimal;"><li>Run the following command to open rviz2</li>{| class="wikitable" style="width:800px;" |-1)| orangepi@orangepi:~$ '''source /opt/ros/humble/setup.bash'''
OpenJDK 64-Bit Server VM (build 18-ea+36-Ubuntu-1, mixed mode, sharing)orangepi@orangepi:~$ '''ros2 run rviz2 rviz2'''|}
<ol startdiv class="3figure" style="list-style-type: lower-alpha;"><li>Edit the '''hello_world.java''' of the Jave version</li></ol>
orangepi@orangepi[[File:~$ '''vim hello_worldpi3b-img351.java'''png]]
public </div></ol><ol start="5" style="list-style-type: decimal;"><li>Reference documents</li>{| class hello_world="wikitable" style="width:800px;" |-| '''http://docs.ros.org/en/humble/index.html'''
{[http://docs.ros.org/en/galactic/Tutorials.html '''http://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html''']|}</ol><span id="how-to-install-kernel-header-files"></span>
public static void main(String[] args)== How to install kernel header files ==
{# The Linux image released by OPi comes with the deb package of the kernel header file by default, and the storage location is '''/opt/'''
System.out.println(&quot;Hello World!&quot;)::{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''ls /opt/linux-headers*'''
/opt/linux-headers-legacy-rockchip-rk356x_x.x.x_arm64.deb|}
<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.'''</big>|}{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo dpkg -i /opt/linux-headers-legacy-rockchip-rk356x_1.x.x_arm64.deb'''|}</ol><ol start="3" style="list-style-type: decimal;"><li>After installation, you can see the folder where the kernel header files are located under '''/usr/src'''</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''ls /usr/src'''
linux-headers-5.10.160-rockchip-rk356x|}</ol><ol start="4" style="list-style-type: decimal;"><li><p>Then you can write a hello kernel module to test the kernel header file</p><ol style="list-style-type: lower-alpha;"><li>Then compile and run First write the code of the hello kernel module, as follows:</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''hello_worldvim hello.javac'''</li></ol>
orangepi@orangepi:~$ '''javac hello_world<p>#include &lt;linux/init.java'''h&gt;</p>
orangepi@orangepi:~$ '''java hello_world'''<p>#include &lt;linux/module.h&gt;</p>
Hello World!
<span id="qt-installation-method"></span>== QT installation method ==static int hello_init(void)
# Use the following script to install QT5 and QT Creator{
orangepi@orangepi:~$ '''install_qt.sh'''printk(&quot;Hello Orange Pi -- init\n&quot;);
<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></ol>
</li></ol>
orangepi@orangepi:~$ '''install_qt.sh'''return 0;
......}
QMake version 3.1static void hello_exit(void)
Using Qt version '''5.12.8''' in /usr/lib/aarch64-linux-gnu{
<ol start="2" style="list:printk(&quot;Hello Orange Pi -style-type: lower-alphaexit\n&quot;);"><li>Ubuntu22.04 comes with QT version '''5.15.3'''</li></ol>
orangepi@orangepi:~$ '''install_qt.sh'''
......:return;
QMake version 3.1}
Using Qt version '''5.15.3''' in /usr/lib/aarch64-linux-gnu
<ol start="3" style="list-style-type: lower-alphamodule_init(hello_init);"><li>Debian11 comes with QT version '''5.15.2'''</li></ol>
orangepi@orangepi:~$ '''install_qt.sh'''module_exit(hello_exit);
......
QMake version 3.1MODULE_LICENSE(&quot;GPL&quot;);|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li>Then write the Makefile for compiling the hello kernel module, as follows:</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''vim Makefile'''
Using Qt version '''5.15.2''' in /usr/lib/aarch64-linux-gnuifneq ($(KERNELRELEASE),)
<ol start="4" style="list-styleobj-typem: lower-alpha;"><li>Debian12 comes with QT version '''5.15=hello.8'''</li></ol>o
orangepi@orangepi:~$ '''install_qt.sh'''else
......KDIR :=/lib/modules/$(shell uname -r)/build
QMake version 3.1PWD :=$(shell pwd)
Using Qt version '''5.15.8''' in /usr/lib/aarch64-linux-gnuall:
<ol start="3" style:make -C $(KDIR) M="list-style-type: decimal;"><li>Then you can see the QT Creator launch icon in '''Applications'''</li></ol>$(PWD) modules
[[Fileclean:pi3b-img327.png|576x270px]]
QT Creator can also be opened using the following command:rm -f *.ko *.o *.mod.o *.mod *.symvers *.cmd *.mod.c *.order
orangepi@orangepiendif|}</ol><ol start="3" style="list-style-type:~$ lower-alpha;"><li>Then use the make command to compile the hello kernel module. The output of the compilation process is as follows:</li>{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''qtcreatorIf 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.'''</big>
'''During the startup of QT and QT applications, if the following error is displayed, ignore it[[File:pi3b-img352. This error has no impact on application running.'''png|center]]|}{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''libGL error: failed to create dri screenmake'''
'''libGL error: failed to load driver: make -C /lib/modules/5.10.160-rockchip'''-35xx/build M=/home/orangepi modules
'''libGL errormake[1]: failed to create dri screen'Entering directory '/usr/src/linux-headers-5.10.160-rockchip-rk35xx'
'''libGL error: failed to load driver: rockchip'''CC [M] /home/orangepi/hello.o
<ol start="4" style="list-style-type: decimal;"><li>The interface after QT Creator is opened is as follows<MODPOST /li><home/ol>orangepi/Module.symvers
:CC [[File:pi3b-img328M] /home/orangepi/hello.mod.png|418x222px]]o
<ol start="5" style="list-style-type: decimal;"><li><p>The QT Creator version is shown below<LD [M] /p><ol style="list-style-type: lower-alpha;"><li>The default version of QT Creator in '''Ubuntu20.04''' is as follows<home/li><orangepi/ol></li></ol>hello.ko
make[[File1]: Leaving directory '/usr/src/linux-headers-5.10.160-rockchip-rk35xx'|}</ol><ol start="4" style="list-style-type:pi3blower-img329alpha;"><li>After compiling, the '''hello.pngko''' kernel module will be generated</li>{| class="wikitable" style="width:800px;" |-|419x224px]]orangepi@orangepi:~$ '''ls *.ko'''
hello.ko|}</ol><ol start="25" style="list-style-type: lower-alpha;"><li>The default version of QT Creator in Use the '''insmod''' command to insert the '''Ubuntu22hello.04ko''' is as followskernel module into the kernel</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo insmod hello.ko'''|}</ol><ol start="6" style="list-style-type: lower-alpha;"><li>Then use the '''demsg''' command to view the output of the '''hello.ko''' kernel module. If you can see the output below, it means that the '''hello.ko''' kernel module is loaded correctly.</li>
[[File{| class="wikitable" style="width:pi3b800px;" |-img330.png| orangepi@orangepi:~$ '''dmesg |443x237px]]grep &quot;Hello&quot;'''
[ 2871.893988] '''Hello Orange Pi -- init'''|}</ol><ol start="37" style="list-style-type: lower-alpha;"><li>The default version of QT Creator in Use the '''rmmod'Debian11''command to uninstall the ' is as follows''hello.ko''' kernel module</li></ol>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo rmmod hello'''
[[Fileorangepi@orangepi:pi3b-img331.png~$ '''dmesg |444x238px]]grep &quot;Hello&quot;'''
<ol start="4" style="list[ 2871.893988] Hello Orange Pi -style-type: lower-alpha;"><li>The default version of QT Creator in '''Debian12''' is as follows</li></ol>init
[[File:pi3b3173.800892] '''Hello Orange Pi --img332.pngexit'''|449x277px]]}</ol></li></ol><span id="use-of-the-raspberry-pis-5-inch-screen"></span>
== Use of the Raspberry PI's 5-inch screen == <ol startspan id="6assembly-method-of-raspberry-pi-5-inch-screen" ></span>=== Assembly method of Raspberry PI 5-inch screen === <ol style="list-style-type: decimal;"><li><p>Then set QTFirst prepare the required accessories</p>
<ol style="list-style-type: lower-alpha;">
<li>First open '''Help'''Raspberry PI 5-&gt;'''About Plugins...'''inch MIPI LCD display + touch screen</li></ol></li></ol> [[File:pi3b-img333.png|573x164px]]
[[File:pi3b-img353.png]]
</ol>
<ol start="2" style="list-style-type: lower-alpha;">
<li>Then remove the check box for '''ClangCodeModel'''15pin MIPI cable</li></ol>
[[File:pi3b-img334img354.png|408x254px]]</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>
[[File:pi3b-img355.png]]</ol><ol start="3" style="list-style-type: lower-alphadecimal;"><li><p>'''Restart QT Creator after the Settings are complete'''</p></li><li><p>Then make sure that QT Creator uses Finally connect to the GCC compiler, if LCD interface of the default is Clang, change it to GCC</p>Orange Pi 3B development board</li></ol>
'''Debian12 Please skip this step[[File:pi3b-img356.'''png]]</ol><span id="open-the-raspberry-pi-5-inch-screen-configuration-method"></span>
[[File:pi3b=== Open the Raspberry PI 5-img335.png|576x315px]]inch screen configuration method ===
[[File<ol style="list-style-type:pi3bdecimal;"><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-img336inch screen of the Raspberry PI, you need to open it manually.png</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>{|575x307px]]class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo orangepi-config'''|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li>Then select '''System'''</li>
[[File:pi3b-img357.png]]</ol><ol start="73" style="list-style-type: decimallower-alpha;"><li>You can then open a sample codeThen select '''Hardware'''</li></ol>
[[File:pi3b-img337img358.png|575x312px]]</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>
[[File:pi3b-img359.png]]</ol><ol start="85" style="list-style-type: decimallower-alpha;"><li>Clicking on the example code will automatically open the corresponding instruction document, you can carefully read the instructionsThen select '''&lt;Save&gt;''' to save</li></ol>
[[File:pi3b-img338img360.png|576x218px]]</ol><ol start="6" style="list-style-type: lower-alpha;"><li>Then select '''&lt;Back&gt;'''</li>
[[File:pi3b-img361.png]]</ol><ol start="97" style="list-style-type: decimallower-alpha;"><li>Then click select '''Configure Project&lt;Reboot&gt;'''to restart the system for the configuration to take effect</li></ol>
[[File:pi3b-img339img362.png|575x304px]]
<ol start{| class="10wikitable" style="listbackground-style-typecolor:#ffffdc;width: decimal800px;">|-| <libig>Then click the green triangle in the lower left corner to compile and run '''The above settings will eventually add the sample codeconfiguration of </lispan style="color:#FF0000">overlays=raspi-7inch-touchscreen</olspan>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.'''
[[File'''If you find it troublesome to use orangepi-config, you can also use the vim editor to open /boot/orangepiEnv.txt, and then add the configuration of <span style="color:pi3b#FF0000">overlays=raspi-7inch-img340touchscreen</span> is also possible.png|575x312px]]'''</big>
<ol start="11" style="list-style-type: decimal;">
<li>After waiting for a period of time, the interface shown in the following figure will pop up, which indicates that QT can compile and run normally</li></ol>
[[Fileorangepi@orangepi:pi3b-img341~$ '''cat /boot/orangepiEnv.pngtxt |576x308px]]grep "raspi"'''
'''<span style="color:#FF0000">overlays=raspi-7inch-touchscreen #Sample configuration</span>'''|}</ol></li></ol><ol start="123" style="list-style-type: decimal;"><li>Reference documentsAfter startup, you can see the lcd screen display as follows:</li></ol>
https[[File:pi3b-img363.png]]</ol><span id="the-method-of-server-version-image-rotation-display-direction"></wiki.qt.io/Install_Qt_5_on_Ubuntuspan>
https://download.qt.io/archive/qtcreator=== The method of server version image rotation display direction ===
https<ol start="1" style="list-style-type:decimal;"><li><p>Add '''extraargs=fbcon=rotate:the direction to rotate''' in '''/boot/downloadorangepiEnv.qt.iotxt''' 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:</archivep></qtli>
<span idol style="roslist-installationstyle-methodtype: 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></spanli><li><p>3: Turn clockwise 270 degrees</p></li>{| class="wikitable" style= ROS Installation Method =="width:800px;" |-| orangepi@orangepi:~$ '''sudo vim /boot/orangepiEnv.txt'''
<span id="how-to-install-ros-1-noetic-on-ubuntu-20.04"></span>=== How to install ROS 1 Noetic on Ubuntu 20.04 ==overlays=lcd1
'''<span style="color:#FF0000">extraargs=cma=64M fbcon=rotate:3</span>'''|}{| class="wikitable" style="background-color:# The current active version of ROS 1 ffffdc;width:800px;" |-| <big>'''Note that if there is as followsthe line extraargs=cma=64M in /boot/orangepiEnv.txt by default, the recommended version is configuration fbcon=rotate:3 can be added after extraargs=cma=64M (separated by spaces).'''</big>|}</ol></li></ol><ol start="2" style="list-style-type: decimal;"><li>Then ''Noetic Ninjemys'<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>
[[File:pi3b<span id="method-img342.png|345x235px]]of-rotating-display-and-touch-direction-of-desktop-version-image"></span>
[[File:pi3b-img343.png|576x210px]]=== Method of rotating display and touch direction of desktop version image ===
[http://docs.ros.org/ http://docs.ros.org]# First open '''Display''' Settings in Linux
'''https://wiki.ros:[[File:pi3b-img364.org/Distributions'''png]]
<ol start="2" style="list-style-type: decimal;">
<li>The official installation document link of ROS 1 <p>Then select the direction you want to rotate in '''Noetic NinjemysRotation''' is as follows:</lip></olstyle="list-style-type: lower-alpha;"[http<li><p>'''None''':no rotation</p></wiki.ros.orgli><li><p>'''Left''': rotate left 90 degrees</noeticp></Installation/Ubuntu li><li><p>'''Inverted'''http:Flip up and down, which is equivalent to rotating 180 degrees</p></wiki.ros.org/noetic/Installation/Ubuntuli><li><p>'''Right''']: rotate right 90 degrees</p></li>
[[File:pi3b-img365.png]]
</ol>
</li></ol>
<ol start="3" style="list-style-type: decimal;">
<li>In the official installation document of ROS Then click '''Noetic Ninjemys''', Ubuntu recommends using Ubuntu20.04, so please make sure that the system used by the development board is '''Ubuntu20.04 desktop systemApply'''</li></ol> http://wiki.ros.org/noetic/Installation [[File:pi3b-img344.png|312x176px]]
[[File:pi3b-img366.png]]
</ol>
<ol start="4" style="list-style-type: decimal;">
<li>Then use the script below to install ros1</li></ol> orangepi@orangepi3b:~$ select '''install_ros.sh ros1Keep this configuration'''</li>
[[File:pi3b-img367.png]]
</ol>
<ol start="5" style="list-style-type: decimal;">
<li>Before using <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 ROS tooldisplay direction, you first need and will not rotate the direction of the touch. Use the '''set_lcd_rotate.sh''' script to initialize rosdeprotate the direction of the touch. After the script is set, it will automatically restart, and then you can quickly install some system dependencies and some core components in ROS when compiling test whether the source codetouch 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>'''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.Left''': rotate left 90 degrees</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''The install_rosset_lcd_rotate.sh script will try to modify left'''|}</etc/hosts ol><ol start="3" style="list-style-type: lower-alpha;"><li>'''Inverted''': Flip up and automatically run the following commands. Howeverdown, this method cannot guarantee normal access which is equivalent to github every time. If the following error is displayed after installing ros1 in install_rosrotating 180 degrees</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''set_lcd_rotate.sh, please find other ways to allow the Linux system of the development board to access github normally, and then manually run the following Order.inverted'''|}</ol><ol start="4" style="list-style-type: lower-alpha;"><li>'''Right'''https:rotate right 90 degrees<//rawli>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''set_lcd_rotate.githubusercontent.com/ros/rosdistro/master/rosdep/osxsh right'''|}{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-homebrew| <big>'''The set_lcd_rotate.yamlsh script mainly does four things:'''
'''Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml'''
'''ERROR: error loading sources list:1. Rotate the direction displayed by the framebuffer'''
'''The read operation timed out2. Rotate the direction of the touch'''
orangepi@orangepi:~$ '''source /opt/ros/noetic/setup3.bashTurn off the boot logo'''
orangepi@orangepi:~$ '''sudo rosdep init4. Restart the system'''
Wrote /etc/ros/rosdep/sources.list.d/20-default.list
Recommended'''Rotating the touch direction is achieved by adding the line Option &quot;TransformationMatrix&quot; &quot;x x x x x x x x x&quot; to /usr/share/X11/xorg.conf.d/40-libinput.conf Where &quot;x x x x x x x x x&quot; is configured differently for different directions.'''</big>|}</ol></li></ol><ol start="7" style="list-style-type: please rundecimal;"><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>
rosdep update== Instructions for using the switch logo ==
orangepi@orangepi:~$ # By default, the switch logo will only be displayed in the desktop version of the system# Set the '''rosdep updatebootlogo'''variable to '''false''' in '''/boot/orangepiEnv.txt''' to turn off the switch logo
reading in sources list data from ::{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''vim /etcboot/ros/rosdep/sources.listorangepiEnv.dtxt'''
Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yamlverbosity=1
Hit https'''<span style="color:#FF0000">bootlogo=false<//raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yamlspan>'''|}
Hit https<ol start="3" style="list-style-type:decimal;"><li>Set the '''bootlogo''' variable to '''true''' in '''/boot/raworangepiEnv.githubusercontent.com/ros/rosdistro/mastertxt''' to enable the switch logo</rosdep/python.yamlli>
Hit https{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''vim /boot/raw.githubusercontent.com/ros/rosdistro/master/rosdep/rubyorangepiEnv.yamltxt'''
Hit https://raw.githubusercontent.com/ros/rosdistro/master/releases/fuerte.yamlverbosity=1
Query rosdistro index https'''<span style="color:#FF0000">bootlogo=true</span>'''|}</rawol><ol start="4" style="list-style-type: decimal;"><li>The location of the boot logo image in the Linux system is</li>{| class="wikitable" style="width:800px;" |-| '''/usr/share/plymouth/themes/orangepi/watermark.githubusercontent.compng'''|}</rosol><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</rosdistroli>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo update-initramfs -u'''|}</masterol><span id="how-to-use-the-zfs-file-system"></index-v4.yamlspan>
Skip end-of-life distro &quot;ardent&quot;== How to use the ZFS file system ==
Skip end{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''The latest version ofUbuntu20.04, Ubuntu22.04, Debian11 and Debian12 <span style="color:#FF0000">desktop version systems</span> have pre-life distro &quot;bouncy&quot;installed zfs, you can use it directly.'''
Skip end'''The pre-of-life distro &quot;crystal&quot;installed zfs version in Ubuntu20.04 and Ubuntu22.04 desktop systems is 2.1.6.'''
Skip end'''The pre-of-life distro &quot;dashing&quot;installed zfs version in Debian11 and Debian12 desktop systems is 2.1.11.'''
Skip end'''After the system starts, please first confirm whether the zfs kernel module has been loaded. If you can see zfs-ofrelated content using the lsmod command, it means that the system has pre-life distro &quot;eloquent&quot;installed zfs.'''</big>
Add distro orangepi@orangepi:~$ '''lsmod | grep &quot;foxyzfs&quot;'''
Add distro zfs &quotnbsp;galactic&quotnbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2801664 &nbsp;&nbsp;&nbsp; 0
Skip end-of-life distro zunicode &quotnbsp;groovy&quotnbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 327680 &nbsp;&nbsp;&nbsp; 1 &nbsp; zfs
Add distro zzstd &quotnbsp;humble&quotnbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; 471040 &nbsp;&nbsp;&nbsp; 1 &nbsp; zfs
Skip end-of-life distro zlua &quotnbsp;hydro&quotnbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; 139264 &nbsp;&nbsp;&nbsp; 1 &nbsp; zfs
Skip end-of-life distro zcommon &quotnbsp;indigo&quotnbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 69632 &nbsp;&nbsp;&nbsp; 1 &nbsp; zfs
Skip end-of-life distro znvpair &quotnbsp;jade&quotnbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 61440 &nbsp;&nbsp;&nbsp; 2 &nbsp; zfs,zcommon
Skip end-of-life distro zavl &quotnbsp;kinetic&quotnbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 16384 &nbsp;&nbsp;&nbsp; 1 &nbsp; zfs
Skip end-of-life distro icp &quotnbsp;lunar&quotnbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 221184 &nbsp;&nbsp;&nbsp; 1 &nbsp; zfs
Add distro spl &quotnbsp;melodic&quotnbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 77824 &nbsp;&nbsp;&nbsp; 6 &nbsp; zfs,icp,zzstd,znvpair,zcommon,zavl|}
Add distro &quot;noetic&quot;<span id="how-to-install-zfs"></span>=== How to install ZFS ===
Add distro &quot{| class="wikitable" style="background-color:#ffffdc;rolling&quotwidth:800px;" |-| <big>'''Before installing zfs, please make sure that the Linux image used is the latest version. In addition, if zfs is already installed in the system, it needs to be installed again.'''</big>|}
updated cache 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 /home/orangepi/.ros/rosdep/sourcesthe [[Orange Pi 3B#How to install kernel header files|'''section on the method of installing the kernel header file''']].cache
<ol start="6" style="list-style-type: decimal;"><li><p>Then open a command line terminal window on the desktopIn Ubuntu20.04, Ubuntu22.04 and then use Debian11 systems, zfs cannot be installed directly through apt, because the test_rosdefault apt source zfs version is lower than 2.sh script to start 1.6, and there is a small turtle routine to test whether ROS can be used normallyorangepi@orangepi:~$ '''test_rosproblem of incompatibility with rk Linux5.sh'''</p></li><li><p>After running the '''test_ros10 kernel.sh''' script, a little turtle as shown This problem is fixed in the figure below will pop up</p></li></ol>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 '''<div span class="figuremark">official tool</span>''', and enter the '''<span class="mark">zfs-related deb package folders used by Ubuntu and Debian systems</span>'''. You can see three types of deb packages: Ubuntu20.04, Ubuntu22.04 and Debian11. Please download the required version.
[[File:pi3b-img345img368.png|575x275px|图片4]]
</div><ol start="8" style="list-style-type: decimal;"><li>Then 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 keep refer to '''[[Orange Pi 3B#The method of uploading files to the Linux system of the development board|the description in the section of the method of uploading files to the terminal window just opened at Linux system of the top</li></ol>development board]].'''
<div class="figure">After the upload is complete, use the '''cd''' command in the command line of the development board Linux system to enter the directory of the deb package, and then use the following command to install the deb package of zfs.
[[File{| class="wikitable" style="width:pi3b800px;" |-img346| orangepi@orangepi:~$ '''sudo apt install .png|576x275px/*.deb'''|图片5]]}
</div><ol start="9" style="list-style-type: decimal;"><li>At this timeAfter the installation is complete, press use the direction keys on the keyboard following command to control see the little turtle to move up, down, left, and right</li></ol>zfs-related kernel modules:
[[File{| class="wikitable" style="width:pi3b800px;" |-img347| orangepi@orangepi:~$ '''ls /lib/modules/5.10.png|575x296px]]160-rockchip-rk356x/updates/dkms/'''
<span id="how-to-install-ros-2-galactic-on-ubuntu-20'''icp.04"></span>ko spl.ko zavl.ko zcommon.ko zfs.ko zlua.ko znvpair.ko zunicode.ko zzstd.ko'''=== How to install ROS 2 Galactic on Ubuntu 20.04 ===|}
# The current active version of ROS 2 is as follows, Then restart the recommended version is '''Galactic Geochelone'''Linux system to see that the zfs kernel module will be automatically loaded:
[[File{| class="wikitable" style="width:pi3b800px;" |-img348.png| orangepi@orangepi:~$ '''lsmod |576x271px]]grep "zfs"'''
[[File:pi3b-img349.png|575x265px]]zfs &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2801664 &nbsp;&nbsp;&nbsp; 0
[http://docs.ros.org/ http://docs.ros.org]zunicode &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 327680 &nbsp;&nbsp;&nbsp; 1 &nbsp; zfs
'''http://docs.ros.org/en/galactic/Releases.html'''zzstd &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; 471040 &nbsp;&nbsp;&nbsp; 1 &nbsp; zfs
<ol start="2" style="list-style-type: decimalzlua &nbsp;"><li>The link to the official ROS 2 '''Galactic Geochelone''' installation documentation is as follows:</li></ol>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; 139264 &nbsp;&nbsp;&nbsp; 1 &nbsp; zfs
'''docs.ros.org/en/galactic/Installation.html'''zcommon &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 69632 &nbsp;&nbsp;&nbsp; 1 &nbsp; zfs
'''http://docs.ros.org/en/galactic/Installation/Ubuntu-Install-Debians.html'''znvpair &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 61440 &nbsp;&nbsp;&nbsp; 2 &nbsp; zfs,zcommon
<ol start="3" style="list-style-type: decimalzavl &nbsp;"><li><p>It is recommended to use Ubuntu20.04 in the official installation document of ROS 2 '''Galactic Geochelone''', so please ensure that the system used by the development board is '''Ubuntu20.04 desktop version'''. There are several ways to install ROS 2. The following shows how to install ROS 2 '''Galactic Geochelone''' using '''Debian packages'''</p></li><li><p>Use the '''install_ros.sh''' script to install ros2</p></li></ol>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 16384 &nbsp;&nbsp;&nbsp; 1 &nbsp; zfs
orangepi@orangepi:~$ '''install_ros.sh ros2'''icp &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 221184 &nbsp;&nbsp;&nbsp; 1 &nbsp; zfs
<ol start="5" style="list-style-type: decimalspl &nbsp;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 77824 &nbsp;&nbsp;&nbsp; 6 &nbsp; zfs,icp,zzstd,znvpair,zcommon,zavl<li>The '''install_ros.sh''' script will automatically run the '''ros2 -h''' command after installing ros2. If you can see the following print, it means that the ros2 installation is complete</li></ol>|}
usage: ros2 [-h] Call `ros2 &lt;command&gt; -h` for more detailed usageIn 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.
ros2 is an extensible command{| class="wikitable" style="width:800px;" |-line tool for ROS 2.| orangepi@orangepi:~$ '''sudo apt install -y zfsutils-linux zfs-dkms'''|}
optional arguments:<span id="methods-of-creating-zfs-pools"></span>
-h, --help show this help message and exit=== Methods of creating ZFS pools ===
Commands{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <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.'''
action Various action related sub-commands'''The following content is demonstrated based on the development board connected to an NVMe SSD and a USB flash drive.'''</big>|}
bag Various rosbag related sub-commands# 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:
component Various component related sub::[[File:pi3b-commandsimg369.png]]
daemon Various daemon related sub<ol start="2" style="list-commandsstyle-type: decimal;"><li>Then enter the following command to create a ZFS pool, including two storage devices, NVMe SSD and U disk</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo zpool create -f pool1 /dev/nvme0n1 /dev/sda'''|}</ol><ol start="3" style="list-style-type: decimal;"><li>Then use the '''zpool list''' command to see that the system has created a ZFS pool named '''pool1''', and the size of the ZFS pool pool1 is the size of the NVME SSD plus the size of the U disk</li>
doctor Check ROS setup and other potential issues[[File:pi3b-img370.png]]</ol><ol start="4" style="list-style-type: decimal;"><li>Then execute '''df -h''' to see that '''pool1''' is mounted to the '''/pool1''' directory</li>{| class="wikitable" style="width:800px;" |-|orangepi@orangepi:~$ '''df -h''' <br>
interface Show information about ROS interfacesFilesystem &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Size &nbsp;&nbsp;&nbsp; Used Avail Use% Mounted on
launch Run a launch filetmpfs &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.6G &nbsp;&nbsp;&nbsp; 18M 1.6G 2% /run <br>
lifecycle Various lifecycle related sub-commands/dev/mmcblk0p2 &nbsp;&nbsp;&nbsp; 29G &nbsp;&nbsp;&nbsp; 6.0G 22G 22% / <br>
multicast Various multicast related sub-commandstmpfs &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7.7G &nbsp;&nbsp;&nbsp; 46M 7.7G 1% /dev/shm <br>
node Various node related sub-commandstmpfs &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5.0M &nbsp;&nbsp;&nbsp; 4.0K 5.0M 1% /run/lock <br>
param Various param related sub-commandstmpfs &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7.7G &nbsp;&nbsp;&nbsp; 944K 7.7G 1% /tmp <br>
pkg Various package related sub-commands/dev/mmcblk0p1 &nbsp;&nbsp;&nbsp; 1022M &nbsp;&nbsp;&nbsp; 115M 908M 12% /boot <br>
run Run a package specific executable/dev/zram1 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 188M &nbsp;&nbsp;&nbsp; 4.5M 169M 3% /var/log <br>
security Various security related sub-commandstmpfs &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.6G &nbsp;&nbsp;&nbsp; 80K 1.6G 1% /run/user/1000 <br>
service Various service related sub'''pool1 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 489G &nbsp;&nbsp;&nbsp; 9.3M 489G 1% <span style="color:#FF0000">/pool1</span>''' <br>|}</ol><ol start="5" style="list-commandsstyle-type: decimal;"><li>Use the following command to see that the file system type of pool1 is zfs</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''mount | grep pool1'''
topic Various topic related subpool1 on /pool1 type '''<span style="color:#FF0000">zfs</span>''' (rw,xattr,noacl)|}</ol><ol start="6" style="list-commandsstyle-type: decimal;"><li>Then we can test copying a file to the ZFS pool</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo cp -v /usr/local/test.mp4 /pool1/'''
wtf Use `wtf` as alias to `doctor`'/usr/local/test.mp4' -&gt; '/pool1/test.mp4'|}</ol><span id="test-the-data-deduplication-function-of-zfs"></span>
Call `ros2 &lt;command&gt; -h` for more detailed usage.=== Test the data deduplication function of ZFS ===
<ol start# The data deduplication function of ZFS is disabled by default, we need to execute the following command to enable it::{| class="6wikitable" style="list-style-typewidth: decimal800px;"><li>Then you can use the |-| orangepi@orangepi:~$ '''test_ros.shsudo zfs set dedup=on pool1''' 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>|}
<ol start="2" style="list-style-type: decimal;"><li>Then do a simple test, first enter pool1, and then execute the following command to generate a random file with a size of 1G</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi3borangepi:~$ '''test_ros.shcd /pool1/'''
[INFO] [1671174101root@orangepi:/pool1$ '''sudo dd if=/dev/urandom of=test.200091527] [talker]: Publishing: 1g bs=1M count=1024''Hello World: 1'
[INFO] [1671174101.235661048] [listener]: I heard: [Hello World: 1]1024+0 records in
[INFO] [1671174102.199572327] [talker]: Publishing: 'Hello World: 2'1024+0 records out
[INFO] [16711741021073741824 bytes (1.204196299] [listener]1 GB, 1.0 GiB) copied, 5.04367 s, 213 MB/s|}</ol><ol start="3" style="list-style-type: decimal;"><li>Then use the following command to copy 1000 random files of size 1G</li>{| class="wikitable" style="width:800px;" |-| root@orangepi:/pool1$ '''for ((i=0; i&lt;1000; i++)); do sudo cp test.1g $i.test.1g; done'''|}</ol><ol start="4" style="list-style-type: I hearddecimal;"><li>Then use '''du -lh''' to see that there are currently 1002G of data in the pool, but in fact the size of the ZFS pool is only '''504GB''' (the total capacity of SSD+U disk), which cannot hold such a large amount of data</li>{| class="wikitable" style="width: [Hello World800px;" |-| root@orangepi: 2]/pool1$ '''du -lh'''
[INFO] [1671174103.199580322] [talker]: Publishing1002G|}</ol><ol start="5" style="list-style-type: decimal;"><li>Then use the '''zpool list''Hello World: 3'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>
[INFO] [1671174103File:pi3b-img371.204019965] [listenerpng]: I heard: [Hello World: 3]</ol><span id="test-the-data-compression-function-of-zfs"></span>
<ol start="7" style="list-style-type: decimal;"><li>Run = Test the following command to open rviz2</li></ol>data compression function of ZFS ===
orangepi@orangepi:~$ # 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 '''source /optvar/roslog/galactic''' and '''/etc/setup.bash'''directories into a tarball
::{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''ros2 run rviz2 rviz2cd /pool1/'''
<div class="figure"> [[Fileroot@orangepi:pi3b/pool1$ '''sudo tar -img350cf text.png|576x324px|1]] <tar /div><ol start="8" style="list-style-type: decimal;"><li>For the usage of ROS, please refer to the documentation of ROS 2</li><var/ol> http:log//docs.ros.orgetc/en/galactic/Tutorials.html <span id="how-to-install-ros-2-humble-on-ubuntu-22.04"></span>=== How to install ROS 2 Humble on Ubuntu 22.04 === # Use the '''install_ros.sh''' script to install ros2 orangepi@orangepi:~$ '''install_ros.sh ros2'''|}
<ol start="2" style="list-style-type: decimal;">
<li>The Then the file size that can be seen through the '''install_ros.shls -lh''' script will automatically run command and the space occupied in the ZFS pool are both '''ros2 -h27M''' command after installing ros2. If you can see the following print, it means that the ros2 installation is complete</li></ol>
usage[[File: ros2 [pi3b-himg372.png] Call `ros2 &lt]</ol><ol start="3" style="list-style-type: decimal;"><li>Then we enable compression in the ZFS pool pool1</li>{| class="wikitable" style="width:800px;" |-| root@orangepi:/pool1$ '''sudo zfs set compression=lz4 pool1'''|}</ol><ol start="4" style="list-style-type: decimal;"><li>Then execute the following command&gtagain to package the '''/var/log/''' and '''/etc/''' directories into a tar package</li>{| class="wikitable" style="width:800px; " |-| root@orangepi:/pool1$ '''sudo tar -h` for more detailed usage. ..cf text.tar /var/log/ /etc/'''|}</ol><ol start="5" style="list-style-type: decimal;">ros2 <li>At this time, you can see that the size of the '''text.tar''' file is an extensible command-line tool for ROS 2still 27M, but it only occupies 9.47M in the ZFS pool, indicating that the file is compressed</li>
optional arguments[[File:pi3b-img373.png]]</ol><span id="how-to-shut-down-and-restart-the-development-board"></span>
-h, --help show this help message == How to shut down and exitrestart the development board ==
Commands:# 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.
action Various action related sub::{| class="wikitable" style="width:800px;" |-commands| orangepi@orangepi:~$ '''sudo poweroff'''|}
bag Various rosbag related sub<ol start="2" style="list-commandsstyle-type: decimal;"><li>In addition, the development board is equipped with a switch button, and you can also '''short press''' the switch button on the development board to shut down.</li>
component Various component related sub[[File:pi3b-commandsimg374.png]]
daemon Various daemon related sub{| class="wikitable" style="background-commandscolor:#ffffdc;width:800px;" |-| <big>'''Note that the Linux desktop version system will pop up a confirmation box as shown in the figure below after pressing the switch button, and the system will shut down only after clicking the Shut Down option.'''</big>
doctor Check ROS setup and other potential issues[[File:pi3b-img375.png|center]]|}</ol><ol start="3" style="list-style-type: decimal;"><li>Short press the switch button on the development board after shutting down to start up.</li>
interface Show information about ROS interfaces[[File:pi3b-img374.png]]</ol><ol start="4" style="list-style-type: decimal;"><li>The command to restart the Linux system is</li>{| class="wikitable" style="width:800px;" |-| orangepi@orangepi:~$ '''sudo''' '''reboot'''|}</ol><span id="linux-sdkorangepi-build-instructions"></span>
launch Run a launch file= '''Linux SDK——orangepi-build instructions''' =
lifecycle Various lifecycle related sub<span id="compilation-commandssystem-requirements"></span>== Compilation system requirements ==
multicast Various multicast related sub{| class="wikitable" style="background-commandscolor:#ffffdc;width:800px;" |-| <big>'''We can cross-compile the Linux image of the development board on the x64 computer, or compile the Linux image of the development board on the Ubuntu22.04 system of the development board, please choose one according to your preference.'''
node Various node related sub-commands
param Various param related sub'''If you use orangepi-commandsbuild to compile the Linux image in the Ubuntu22.04 system of the development board, please do a good job of cooling (especially when the SSD starts). If the heat dissipation is not done well, it is prone to the error of file system runaway.'''</big>|}
pkg Various package related sub<span id="compile-commandswith-the-ubuntu22.04-system-of-the-development-board"></span>=== Compile with the Ubuntu22.04 system of the development board ===
run Run a package specific executable# The Linux SDK, namely '''orangepi-build''', supports running on the '''Ubuntu 22.04''' of the development board (other systems have not been tested), so before downloading orangepi-build, please first ensure that the Ubuntu version installed on the development board is Ubuntu 22.04. The command to check the Ubuntu version installed on the development board is as follows. If the Release field does not display '''22.04''', it means that the current Ubuntu version does not meet the requirements. Please replace the system before performing the following operations.
security Various security related sub::{| class="wikitable" style="width:800px;" |-commands| orangepi@orangepi:~$ '''lsb_release -a'''
service Various service related sub-commandsNo LSB modules are available.
topic Various topic related sub-commandsDistributor ID: Ubuntu
wtf Use `wtf` as alias to `doctor`Description: Ubuntu 22.04.1 LTS
Call `ros2 &lt;command&gt; -h` for more detailed usageRelease: '''<span style="color:#FF0000">22.04</span>'''
<ol start="3" style="list-style-typeCodename: decimal;">jammy<li>Then you can use the '''test_ros.sh''' script to test whether ROS 2 is installed successfully. If you can see the following print, it means that ROS 2 can run normally</li></ol>|}
orangepi@orangepi3b<ol start="2" style="list-style-type:~$ decimal;"><li>'''test_ros<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.sh</span>'''</li></ol>
[INFO] [1671174101<span id="compile-with-x64-ubuntu22.200091527] [talker]: Publishing: 'Hello World: 1'04-computer"></span>
[INFO] [1671174101=== Compile with x64 Ubuntu22.235661048] [listener]: I heard: [Hello World: 1]04 computer ===
[INFO] [1671174102# 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.199572327] [talker]: Publishing: If the Release field does not display 'Hello World: 2''22.04''', it means that the current Ubuntu version does not meet the requirements. Please replace the system before performing the following operations.
[INFO] [1671174102.204196299] [listener]: I heard: [Hello World{| class="wikitable" style="width: 2]800px;" |-| test@test:~$ '''lsb_release -a'''
[INFO] [1671174103No LSB modules are available.199580322] [talker]: Publishing: 'Hello World: 3'
[INFO] [1671174103.204019965] [listener]Distributor ID: I heard: [Hello World: 3]Ubuntu
<ol start="4" style="list-style-typeDescription: decimal;"><li>Run the following command to open rviz2</li></ol>Ubuntu 22.04 LTS
orangepi@orangepiRelease:~$ '''source /opt/ros<span style="color:#FF0000">22.04</humble/setup.bashspan>'''
orangepi@orangepiCodename:~$ '''ros2 run rviz2 rviz2'''jammy|}
<div classol start="figure2"style="list-style-type: decimal;"><li><p>If the computer is installed with Windows system and there is no computer with Ubuntu 22.04 installed, you can consider using '''VirtualBox''' or '''VMware''' to install an Ubuntu 22.04 virtual machine in the Windows system. But please be careful not to compile orangepi-build on the WSL virtual machine, because orangepi-build has not been tested in the WSL virtual machine, so it cannot be guaranteed that orangepi-build can be used normally in WSL.</p></li><li><p>The download address of the installation image of Ubuntu 22.04 '''<span style="color:#FF0000">amd64</span>''' version is:</p></li>
{| class="wikitable" style="width:800px;" |-| [[Filehttps://repo.huaweicloud.com/ubuntu-releases/21.04/ubuntu-21.04-desktop-amd64.iso '''https:pi3b//mirrors.tuna.tsinghua.edu.cn/ubuntu-img351releases/22.png|576x324px|1]04/ubuntu-22.04-desktop-amd64.iso''']
</div><ol start="5" style="list-style-type: decimal;"><li>Reference documents</li></ol>Or
'''httphttps://docsrepo.roshuaweicloud.orgcom/enubuntu-releases/humble22.04/indexubuntu-22.html04.1-desktop-amd64.iso'''|}</ol><ol start="4" style="list-style-type: decimal;"><li><p>After installing Ubuntu 22.04 on the computer or virtual machine, please set the software source of Ubuntu 22.04 to Tsinghua source, otherwise it is easy to make mistakes due to network reasons when installing the software later</p><ol style="list-style-type: lower-alpha;"><li>For the method of replacing Tsinghua source, please refer to the instructions on this web page</li>
[http{| class="wikitable" style="width://docs.ros.org/en/galactic/Tutorials.html 800px;" |-| '''httphttps://docsmirrors.tuna.tsinghua.rosedu.orgcn/enhelp/humbleubuntu/Installation'''|}</Ubuntuol><ol start="2" style="list-Installstyle-Debianstype: lower-alpha;"><li>Note that the Ubuntu version needs to be switched to 22.html''']04</li>
[[File:pi3b-img376.png]]<span id/ol><ol start="how-to3" style="list-installstyle-kerneltype: lower-header-filesalpha;"><li>The content of the '''/etc/apt/sources.list''' file that needs to be replaced is</spanli>== How to install kernel header files ==
# The Linux image released by OPi comes with the deb package of the kernel header file by default, and the storage location is {| class="wikitable" style="width:800px;" |-| test@test:~$ '''sudo mv /optetc/apt/sources.list /etc/apt/sources.list.bak'''
orangepitest@orangepitest:~$ '''ls sudo vim /optetc/linux-headers*apt/sources.list'''
<p># By default, the source image is commented to improve the speed of apt update, you can uncomment it yourself if necessary</opt/linux-headers-legacy-rockchip-rk356x_x.x.x_arm64.debp>
<ol start="2" style="list-style-typedeb https: decimal;"><li>Use the following command to install the deb package of the kernel header file</li></ol>mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
'''The name of the kernel header file <p># deb package needs to be replaced with the actual name, please do not copy it-src https://mirrors.'''tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse</p>
orangepi@orangepideb https:~$ '''sudo dpkg -i /opt/linux-headers-legacy-rockchip-rk356x_1mirrors.tuna.xtsinghua.x_arm64edu.deb'''cn/ubuntu/ jammy-updates main restricted universe multiverse
<ol start="3" style="listp># deb-style-typesrc https: decimal;"><li>After installation, you can see the folder where the kernel header files are located under '''/usr/src'''<mirrors.tuna.tsinghua.edu.cn/ubuntu/li>jammy-updates main restricted universe multiverse</olp>
orangepi@orangepideb https:~$ '''ls /usr/src'''mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
linux<p># deb-headers-5src https://mirrors.tuna.tsinghua.10edu.160-rockchipcn/ubuntu/ jammy-rk356xbackports main restricted universe multiverse</p>
<ol start="4" style="list-style-typedeb https: 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><mirrors.tuna.tsinghua.edu.cn/ol><ubuntu/li></ol>jammy-security main restricted universe multiverse
orangepi@orangepi<p># deb-src https:~$ '''vim hello//mirrors.c'''tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse</p>
#include &lt;linux/init.h&gt;
<p>#include &lt;linuxPre-release software source, not recommended to enable</module.h&gt;p>
static int hello_init(void)<p># deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse</p>
<p># deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse</p>|}</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-alpha;"><li>'''<span style="color:#FF0000">In addition, since the source codes such as the kernel and U-boot are stored on GitHub, it is very important to ensure that the computer can download codes from GitHub normally when compiling the image.</span>'''</li></ol></li></ol><span id="get-the-source-code-of-linux-sdk"></span>
printk(&quot;Hello Orange Pi -- init\n&quot;);== Get the source code of Linux sdk ==
return 0;<span id="download-orangepi-build-from-github"></span>=== Download orangepi-build from github ===
}# The Linux sdk actually refers to the code of orangepi-build. orangepi-build is modified based on the armbian build system. Using orangepi-build, multiple versions of Linux images can be compiled. First download the code of orangepi-build, the command is as follows:
static void hello_exit(void)::{| class="wikitable" style="width:800px;" |-| test@test:~$ '''sudo apt-get update'''
{test@test:~$ '''sudo apt-get install -y git'''
printk(&quottest@test:~$ '''git clone https://github.com/orangepi-xunlong/orangepi-build.git -b next'''|}::{| class="wikitable" style="background-color:#ffffdc;width:800px;Hello " |-| <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- exit\n&quot;);build source code as next.'''</big>
return;<div class="figure">
}[[File:pi3b-img377.png|center]]
module_init(hello_init)</div>|}::{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| module_exit<big>'''Downloading the orangepi-build code through the git clone command does not require entering the user name and password of the github account (hello_exitthe 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>|}
MODULE_LICENSE(&quot;GPL&quot;)<ol start="2" style="list-style-type: decimal;"><li>The u-boot and Linux kernel versions currently used by the development board are as follows</li>
<ol start{| class="2wikitable" style="listwidth:800px;text-align: center;"|-|'''branch'''|'''u-boot version'''|'''Linux Kernel version'''|-|'''legacy'''|'''u-boot 2017.09'''|'''Linux5.10'''|}{| class="wikitable" style="background-typecolor:#ffffdc;width: lower-alpha800px;">|-| <libig>Then write '''The branch mentioned here is not the Makefile for compiling same thing as the hello branch of the orangepi-build source code, please do not confuse it. This branch is mainly used to distinguish different kernel module, as follows:</li></ol>source code versions.'''
'''Currently, the Linux5.10 bsp kernel provided by RK is defined as the legacy branch. If the mainline kernel is supported in the future, a current branch will be added.'''</big>|}</ol><ol start="3" style="list-style-type: decimal;"><li><p>orangepi-build will contain the following files and folders after downloading</p><ol style="list-style-type: lower-alpha;"><li><p>'''build.sh''': Compile the startup script</p></li><li><p>'''external''': Contains the configuration files needed to compile the image, specific scripts, and the source code of some programs, etc.</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@orangepitest:~/orangepi-build$ '''vim Makefilels'''
ifneq '''build.sh &nbsp;&nbsp;&nbsp;&nbsp; external &nbsp;&nbsp;&nbsp;&nbsp; LICENSE &nbsp;&nbsp;&nbsp;&nbsp; README.md &nbsp;&nbsp;&nbsp;&nbsp; scripts'''|}{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''If you downloaded the code of orangepi-build from github, after downloading, you may find that orangepi-build does not contain the source code of u-boot and Linux kernel, nor does u-boot and Linux kernel need to use cross-compilation tools Chain, this is normal, because these things are stored in other separate github warehouses or some servers ($(KERNELRELEASEthe 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>
obj=== Download the cross-m:compilation toolchain ===hello.o
else{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big>'''The cross-compilation toolchain will only be downloaded when the orangepi-build compilation image is used on an x64 computer. Compiling the Linux image of the development board in the Ubuntu22.04 of the development board will not download the cross-compilation toolchain. At this time, orangepi-build/toolchains will be an empty folder.'''</big>|}
KDIR :=/lib/modules/$(shell uname # When orangepi-r)/buildruns 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.
PWD :<div class=$(shell pwd)"figure">
all::[[File:pi3b-img378.png]]
make </div><ol start="2" style="list-style-type: decimal;"><li>The image URL of the cross-compilation toolchain in China is the open source software image site of Tsinghua University</li>{| class="wikitable" style="width:800px;" |-| '''https://mirrors.tuna.tsinghua.edu.cn/armbian-releases/_toolchain/'''|}</ol><ol start="3" style="list-style-type: decimal;"><li>After '''toolchains''' is downloaded, it will contain multiple versions of cross-C $(KDIR) Mcompilation toolchains, and the development board will only use two of them</li>{| class="wikitable" style=$(PWD) modules"width:800px;" |-| cleantest@test:~/orangepi-build$ '''ls toolchains/'''
rm gcc-f *arm-11.ko *2-2022.o *.mod.o *.mod *.symvers *.cmd *.mod.c *.order02-x86_64-aarch64-none-linux-gnu
endifgcc-arm-11.2-2022.02-x86_64-arm-none-linux-gnueabihf
<ol start="3" style="listgcc-stylearm-type: lower9.2-alpha;"><li>Then use the make command to compile the hello kernel module2019. The output of the compilation process is as follows:</li></ol>12-x86_64-aarch64-none-linux-gnu
'''If there is a problem with compiling the code you copied here, please go to the official tool to download the source code and upload it to the Linux system of the development board for testinggcc-arm-9.'''2-2019.12-x86_64-arm-none-linux-gnueabihf
[[File:pi3bgcc-img352linaro-4.9.4-2017.png|337x52px]]01-x86_64_arm-linux-gnueabi
orangepi@orangepi:~$ '''make'''gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabihf
make gcc-C /lib/modules/5linaro-7.4.101-2019.16002-x86_64_aarch64-rockchiplinux-35xx/build M=/home/orangepi modulesgnu
make[1]: Entering directory '/usr/src/linuxgcc-headerslinaro-57.104.1601-rockchip2019.02-x86_64_arm-linux-rk35xx'gnueabi
CC [M] /home/orangepi/hellogcc-linaro-aarch64-none-elf-4.o8-2013.11_linux
MODPOST /home/orangepi/Modulegcc-linaro-arm-linux-gnueabihf-4.symvers8-2014.04_linux
CC [M] gcc-linaro-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></homeol><ol start="5" style="list-style-type: decimal;"><li><p>The cross-compilation tool chain used to compile the u-boot source code is</orangepip><ol style="list-style-type: lower-alpha;"><li>v2017.09</helloli>{| class="wikitable" style="width:800px;" |-| '''gcc-linaro-7.mod4.o1-2019.02-x86_64_aarch64-linux-gnu'''|}</ol></li></ol><span id="orangepi-build-complete-directory-structure-description"></span>
LD [M] /home/=== orangepi/hello.ko-build complete directory structure description ===
make[1]<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: Leaving directory lower-alpha;"><li>The git repository where the Linux kernel source code is stored is as follows:</li>{| class="wikitable" style="width:800px;" |-| '''https://usrgithub.com/srcorangepi-xunlong/linux-headersorangepi/tree/orange-pi-5.10.160-rockchip-rk35xx'''|}</ol><ol start="42" 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 compilinga Linux image, the files and folders that can be seen in orangepi-build are:</p>:<p>a. '''hellobuild.kosh''' : 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 module source code will be generatedre-downloaded when the compilation system is running</p>:<p>d. '''LICENSE''': GPL 2 license file</p>:<p>e. '''README'''.md: orangepi-build documentation</p>:<p>f. '''output''': Store compiled deb packages such as u-boot and Linux, compilation logs, and compiled images and other files</p>:<p>g. '''scripts''': general scripts for compiling Linux images</p>:<p>h. '''toolchains''': store cross-compilation toolchain</p>:<p>i. '''u-boot''': stores the source code of u-boot, the folder named v2017.09-rk3588 stores the u-boot source code of the legacy branch of the RK3588/RK3588S/RK3566 series development boards, the name of the folder of the u-boot source code Please do not modify it manually, if it is modified, the u-boot source code will be re-downloaded when the compiling system is running</p>:<p>j. '''userpatches''': Store configuration files needed to compile scripts</p></li>:{| class="wikitable" style="width:800px;" |-| <p>test@test:~/orangepi-build$ '''ls'''</p><p>'''build.sh &nbsp;&nbsp;&nbsp; external &nbsp;&nbsp;&nbsp; kernel &nbsp;&nbsp;&nbsp; LICENSE &nbsp;&nbsp;&nbsp; output &nbsp;&nbsp;&nbsp; README.md &nbsp;&nbsp;&nbsp; scripts &nbsp;&nbsp;&nbsp; toolchains &nbsp;&nbsp;&nbsp; u-boot &nbsp;&nbsp;&nbsp; userpatches'''</p>|}</ol><span id="compile-u-boot"></span>
orangepi@orangepi:~$ '''ls *.ko'''== Compile u-boot ==
hello# Run the build.kosh script, remember to add sudo permission
<ol start::{| class="5wikitable" style="list-style-typewidth: lower-alpha800px;"><li>Use the |-| test@test:~/orangepi-build$ '''insmod''' command to insert the '''hellosudo ./build.kosh''' kernel module into the kernel</li></ol>|}
orangepi@orangepi<ol start="2" style="list-style-type:~$ decimal;"><li>Select '''sudo insmod hello.koU-boot package''', then enter</li>
<ol startdiv class="6figure" style="list-style-type: lower-alpha;"><li>Then use the '''demsg''' command to view the output of the '''hello.ko''' kernel module. If you can see the output below, it means that the '''hello.ko''' kernel module is loaded correctly.</li></ol>
orangepi@orangepi[[File:~$ '''dmesg | grep &quot;Hello&quot;'''pi3b-img379.png]]
[ 2871.893988] '''Hello Orange Pi </div></ol><ol start="3" style="list-style- init'''type: decimal;"><li>Then select the model of the development board</li>
<ol startdiv class="7figure" style="list-style-type: lower-alpha;"><li>Use the '''rmmod''' command to uninstall the '''hello.ko''' kernel module</li></ol>
orangepi@orangepi[[File:~$ '''sudo rmmod hello'''pi3b-img380.png]]
orangepi@orangepi:~$ '''dmesg | grep &quot;Hello&quot;''' [ 2871.893988] Hello Orange Pi -- init [ 3173.800892] '''Hello Orange Pi -- exit''' <span id="use-of-the-raspberry-pis-5-inch-screen"/div></spanol>== Use of the Raspberry PI's 5-inch screen == <span idol start="assembly-method-of-raspberry-pi-5-inch-screen4"></span>=== Assembly method of Raspberry PI 5-inch screen === <ol style="list-style-type: decimal;"><li><p>First prepare the required accessoriesThen 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>Raspberry PI 5u-inch MIPI LCD display + touch screenboot source code version</li></ol></li></ol>{| class="wikitable" style="width:800px;" |-| <blockquote>[o.k. ] Compiling u-boot [File:pi3b-img353'''v2017.png09''' ]|306x219px]]}</blockquoteol>
<ol start="2" style="list-style-type: lower-alpha;">
<li>15pin MIPI cable</li></ol> <blockquote>[[File:pi3b-img354.png|276x111px]]</blockquote><ol start="2" style="list-style-type: decimal;"><li>Then connect the 15pin MIPI cable to The version of the Raspberry PI 5cross-inch screen in the way shown below (note the orientation of the insulation surface)compilation toolchain</li></ol> [[File:pi3b-img355.png{|294x160px]] <ol startclass="3wikitable" style="list-style-typewidth: decimal800px;"><li>Finally connect to the LCD interface of the Orange Pi 3B development board</li></ol> [[File:pi3b-img356.png|333x199px]] <span id="open-the-raspberry-pi-5-inch-screen-configuration-method"></span>=== Open the Raspberry PI 5-inch screen configuration method ===|  <ol style="list-style-type: decimal;"><li><p>The Linux image does not open the 5-inch screen of the Raspberry PI by default[ o. If you need to use the 5-inch screen of the Raspberry PI, you need to open it manuallyk.</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 ] Compiler version [ '''orangepiaarch64-linux-config''', ordinary users remember to add '''sudo''' permission</li></ol></li></ol> orangepi@orangepi:~$ '''sudo orangepignu-configgcc 7.4.1''']|}<ol start="2" style="list-style-type: lower-alpha;"><li>Then select '''System'''</li></ol> [[File:pi3b-img357.png|575x272px]] 
<ol start="3" style="list-style-type: lower-alpha;">
<li>Then select '''Hardware'''Path to the generated u-boot deb package</li></ol>{| class="wikitable" style="width:800px;" |-| [o.k. ] Target directory [File:pi3b'''orangepi-build/output/debs/u-img358.pngboot''' ]|576x266px]]}</ol>
<ol start="4" style="list-style-type: lower-alpha;">
<li>Then use the arrow keys on the keyboard to locate The package name of the Raspgenerated u-7inch-touchscreen, and then use the space button to checkboot deb package</li>{| class="wikitable" style="width:800px;" |-| [ o.k. ] File name [ '''linux-u-boot-legacy-orangepi3b_1.0.0_arm64.deb''' ]|}</ol><ol start="5" style="list-style-type: lower-alpha;">[[File<li>Compilation time</li>{| class="wikitable" style="width:pi3b800px;" |-img359| [ o.k.png|408x310px]Runtime [ '''1 min''' ]|}</ol><ol start="56" style="list-style-type: lower-alpha;"><li>Then select 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 [ '''&ltsudo ./build.sh BOARD=orangepi3b BRANCH=legacy BUILD_OPT=u-boot KERNEL_CONFIGURE=no''' ]|}</ol></li></ol><ol start="5" style="list-style-type: decimal;Save&gt"><li>View the u-boot deb package generated by compilation</li>{| class="wikitable" style="width:800px;" |-| test@test:~/orangepi-build$ '''ls output/debs/u-boot/''' to save linux-u-boot-legacy-orangepi3b_1.0.0_arm64.deb|}</ol><ol start="6" style="list-style-type: decimal;"><li><p>The files contained in the generated u-boot deb package are as follows</p><olstyle="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$ '''cd output/debs/u-boot''' test@test:~/orangepi_build/output/debs/u-boot$ $ '''dpkg -x''' \
[[File:pi3b'''linux-img360u-boot-legacy-orangepi3b_1.0.0_arm64.deb . (Note that there is a &quot;.png|404x133px]]&quot; at the end of the command)'''
<ol start="6" style="list-style-typetest@test: lower~/orangepi_build/output/debs/u-alpha;"><li>Then select boot$ '''&lt;Back&gt;ls'''</li></ol>
[[Filelinux-u-boot-legacy-orangepi3b_1.0.0_arm64.deb '''usr'''|}</ol><ol start="2" style="list-style-type:pi3blower-img361.pngalpha;"><li>The decompressed file is as follows</li>{| class="wikitable" style="width:800px;" |-|397x151px]]test@test:~/orangepi-build/output/debs/u-boot$ '''tree usr'''
<ol start="7" style="list-style-type: lower-alpha;"><li>Then select '''&lt;Reboot&gt;''' to restart the system for the configuration to take effect</li></ol>usr
[[File:pi3b-img362.png|331x154px]]└── lib
'''The above settings will eventually add the configuration of overlays=raspi:├── linux-7inchu-touchscreen to /boot/orangepiEnv.txt. After setting, you can check it first-legacy-orangepi3b_1. If this configuration does not exist, then there is a problem with the settings0.'''0_arm64
'''If you find it troublesome to use orangepi-config, you can also use the vim editor to open /boot/orangepiEnv:│   ├── idbloader.txt, and then add the configuration of overlays=raspi-7inch-touchscreen is also possible.'''img
orangepi@orangepi:~$ '''cat /boot/orangepiEnv│   ├── rkspi_loader.txt | grep "raspi"'''img
'''overlays=raspi:│   └── u-7inch-touchscreen #Sample configuration'''boot.itb
<ol start="3" style="list-style:└── u-type: decimal;"><li>After startup, you can see the lcd screen display as follows:</li></ol>boot
[[File:pi3b-img363.png|381x262px]]:├── LICENSE
<span id="the::├── orangepi-method3b-of-server-version-image-rotation-display-direction"></span>=== The method of server version image rotation display direction ===rk3566_defconfig
# Add '''extraargs=fbcon=rotate:the direction to rotate''' in '''/boot/orangepiEnv:└── platform_install.txt''' This line configuration can set the direction displayed by the server version of the Linux system, where the number after '''fbcon=rotate:''' can be set as:sh
<!-- -->
<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></ol>
orangepi@orangepi:~$ '''sudo vim /boot/orangepiEnv.txt''' overlays=lcd1 '''extraargs=cma=64M fbcon=rotate:3''' '''Note that if there is the line extraargs=cma=64M in /boot/orangepiEnv.txt by defaultdirectories, the configuration fbcon=rotate:3 can be added after extraargs=cma=64M (separated by spaces).''' <ol start="2" style="list-style-type: decimal;"><li>Then '''restart''' the Linux system and you can see that the direction displayed on the LCD screen has been rotated</li></ol> <span id="method-of-rotating-display-and-touch-direction-of-desktop-version-image"></span>=== Method of rotating display and touch direction of desktop version image === # First open '''Display''' Settings in Linux6 files[[File:pi3b-img364.png|298x206px]] <ol start="2" 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>
<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>
[[File:pi3bSet the IGNORE_UPDATES variable in userpatches/config-img365default.png|286x180px]]conf to &quot;yes&quot;
<ol start{| class="3wikitable" style="list-style-typewidth: decimal800px;"><li>Then click |-| test@test:~/orangepi-build$ '''Applyvim userpatches/config-default.conf'''</li></ol>
[[File:pi3b-img366.png|330x207px]] IGNORE_UPDATES=&quot;'''<ol start="4" span style="list-style-typecolor: decimal;#FF0000">yes<li/span>Then select '''Keep this configuration'''</li>&quot;|}</ol> [[File:pi3b-img367.png|374x210px]] <ol start="58" style="list-style-type: decimal;"><li><p>At this pointWhen debugging u-boot code, you can use 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 following method to rotate the direction of the touch. After the script is set, it will automatically restart, and then you can test whether update u-boot in the touch has been used normally.Linux image for testing</p>
<ol style="list-style-type: lower-alpha;">
<li>'''None''': no rotationUpload the compiled u-boot deb package to the Linux system of the development board</li><{| class="wikitable" style="width:800px;" |-| test@test:~/ol><orangepi-build$ '''cd output/li><debs/ol>u-boot'''
orangepitest@orangepitest:~/orangepi_build/output/debs/u-boot$ '''set_lcd_rotate.sh nonescp \'''
'''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>'''Left''': rotate left 90 degreesThen log in to the development board and uninstall the deb package of u-boot installed</li></ol>{| class="wikitable" style="width:800px;" |-| orangepiroot@orangepi:~$ # '''set_lcd_rotate.sh leftapt purge -y linux-u-boot-orangepi3b-legacy'''|}</ol>
<ol start="3" style="list-style-type: lower-alpha;">
<li>'''Inverted''': Flip up and down, which is equivalent to rotating 180 degreesInstall the new u-boot deb package just uploaded</li></ol>{| class="wikitable" style="width:800px;" |-| orangepiroot@orangepi:~$ # '''dpkg -i''' '''set_lcd_rotatelinux-u-boot-legacy-orangepi3b_1.0.0_arm64.sh inverteddeb'''|}</ol>
<ol start="4" style="list-style-type: lower-alpha;">
<li>Then run the nand-sata-install script</li>{| class="wikitable" style="width:800px;" |-| root@orangepi:~# '''Rightnand-sata-install'''|}</ol><ol start="5" style="list-style-type: rotate right 90 degreeslower-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</olli>
orangepi@orangepi[[File:~$ '''set_lcd_rotatepi3b-img381.sh right'''png]]</ol><ol start="6" style="list-style-type: lower-alpha;"><li>After pressing the Enter key, a Warning will pop up first</li>
'''The set_lcd_rotate[[File:pi3b-img382.sh script mainly does four thingspng]]</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'''1]|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li>In the u-boot 2017. Rotate 09 source code, the direction displayed dts file used by the framebufferdevelopment 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>
'''2. Rotate == Compile the direction of the touch'''Linux kernel ==
'''3# Run the build. Turn off the boot logo'''sh script, remember to add sudo permission
::{| class="wikitable" style="width:800px;" |-| test@test:~/orangepi-build$ '''4sudo . Restart the system/build.sh'''|}
<ol start="2" style="list-style-type: decimal;"><li>Select '''Rotating the touch direction is achieved by adding the line Option &quot;TransformationMatrix&quot; &quot;x x x x x x x x x&quot; to /usr/share/X11/xorg.conf.d/40-libinput.conf Where &quot;x x x x x x x x x&quot; is configured differently for different directions.Kernel package''', then enter</li>
<ol startdiv class="7figure" style="list-style-type: decimal;"><li>Touch rotation reference</li></ol>
https[[File://wiki.ubuntu.com/X/InputCoordinateTransformation <span id="instructions-for-using-the-switchpi3b-logo"></span>== Instructions for using the switch logo == # By default, the switch logo will only be displayed in the desktop version of the system# Set the '''bootlogo''' variable to '''false''' in '''/boot/orangepiEnv.txt''' to turn off the switch logo orangepi@orangepi:~$ '''vim /boot/orangepiEnvimg384.txt''' verbosity=1 '''bootlogo=false'''png]]
</div></ol>
<ol start="3" style="list-style-type: decimal;">
<li>Set Then select the '''bootlogo''' variable to '''true''' in '''/boot/orangepiEnv.txt''' to enable model of the switch logodevelopment board</li></ol>
orangepi@orangepi:~$ '''vim /boot/orangepiEnv.txt''' verbosity<div class=1"figure">
'''bootlogo=true'''[[File:pi3b-img380.png]]
</div></ol>
<ol start="4" style="list-style-type: decimal;">
<li>The location of Then it will prompt whether to display the boot logo image in 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 Linux system issecond one.</li></ol> '''/usr/share/plymouth/themes/orangepi/watermark.png'''
[[File:pi3b-img385.png]]
</ol>
<ol start="5" style="list-style-type: decimal;">
<li>After replacing If you choose to display the kernel configuration menu (the boot logo picturesecond option) in step 4), the kernel configuration interface opened by '''make menuconfig''' will pop up. At this time, you need to run can directly modify the kernel configuration, save and exit after modification. Yes, after exiting, the following command to take effectkernel source code will be compiled</li></ol>
orangepi@orangepi[[File:~$ '''sudo updatepi3b-initramfs -u'''img386.png]]
<span idol style="howlist-style-type: lower-alpha;"><li>If you do not need tomodify the configuration options of the kernel, when running the build.sh script, pass in '''KERNEL_CONFIGURE=no''' to temporarily block the pop-useup kernel configuration interface</li>{| class="wikitable" style="width:800px;" |-| test@test:~/orangepi-build$ '''sudo ./build.sh KERNEL_CONFIGURE=no'''|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li><p>You can also set '''KERNEL_CONFIGURE=no''' in the'''orangepi-zfsbuild/userpatches/config-default.conf''' configuration file-system", which can permanently disable this function</p></spanli>== How <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 use display the '''make menuconfig''' interface. Please maximize the terminal of the Ubuntu PC and run the ZFS file system ==build.sh 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 latest version of Ubuntu20the cross-compilation toolchain used</li>{| class="wikitable" style="width:800px;" |-| [ o.04, Ubuntu22k.04, Debian11 and Debian12 desktop ] Compiler version systems have pre[ '''aarch64-installed zfs, you can use it directlynone-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 prepath of the deb package related to the kernel generated by compiling</li>{| class="wikitable" style="width:800px;" |-installed zfs version in Ubuntu20| [ o.04 and Ubuntu22.04 desktop systems is 2.1.6k.] Target directory [ '''orangepi-build/output/debs/''']|}</ol><ol start="5" style="list-style-type: lower-alpha;"><li>The package name of the compiled kernel image deb package</li>{| class="wikitable" style="width:800px;" |-| [ o.k. ] File name [ '''The prelinux-image-legacy-rockchip-installed zfs version in Debian11 and Debian12 desktop systems is 2rk356x_1.10.110_arm64.deb''']|}</ol><ol start="6" style="list-style-type: lower-alpha;"><li>The time used for compilation</li>{| class="wikitable" style="width:800px;" |-| [ o.k. ] Runtime [ '''5 min'''After ]|}</ol><ol start="7" style="list-style-type: lower-alpha;"><li>Finally, the system starts, please first confirm whether compilation command to repeatedly compile the zfs kernel module has been loadedselected last time will be displayed. If you can see zfs-related content using Use the lsmod following command, it means that to start compiling the kernel source code directly without selecting through the system has pregraphical interface</li>{| class="wikitable" style="width:800px;" |-installed zfs| [ o.k. ] Repeat Build Options [ '''sudo ./build.sh BOARD=orangepi3b BRANCH=legacy BUILD_OPT=kernel KERNEL_CONFIGURE=no''']|}</ol></li></ol><ol start="7" style="list-style-type: decimal;">orangepi@orangepi<li><p>View the deb package related to the kernel generated by compilation</p><ol style="list-style-type:~$ lower-alpha;"><li><p>'''lsmod | grep &quot;zfs&quot;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>zfs 2801664 <li><p>'''linux-image-legacy-rockchip-rk356x_1.0.0_arm64.deb''' Contains kernel images and kernel modules</p></li>{| class="wikitable" style="width:800px;" |-zunicode 327680 1 zfs| test@test:~/orangepi-build$ '''ls output/debs/linux-*'''
zzstd 471040 1 zfsoutput/debs/linux-dtb-legacy-rockchip-rk356x_1.0.0_arm64.deb output/debs/linux-image-legacy-rockchip-rk356x_1.0.0_arm64.deb
zlua 139264 1 zfsoutput/debs/linux-headers-legacy-rockchip-rk356x_1.0.0_arm64.deb|}</ol></li></ol><ol start="8" style="list-style-type: decimal;"><li><p>The files contained in the generated Linux-image deb package are as follows</p><ol style="list-style-type: lower-alpha;"><li>Use the following command to decompress the deb package</li>{| class="wikitable" style="width:800px;" |-| test@test:~/orangepi-build$ '''cd output/debs'''
zcommon 69632 1 zfstest@test:~/orangepi_build/output/debs$ '''mkdir test'''
znvpair 61440 2 zfs,zcommontest@test:~/orangepi_build/output/debs$ '''cp \'''
zavl 16384 1 zfs'''linux-image-legacy-rockchip-rk356x_1.0.0_arm64.deb test/'''
icp 221184 1 zfstest@test:~/orangepi_build/output/debs$ '''cd test'''
spl 77824 6 zfs,icp,zzstd,znvpair,zcommon,zavltest@test:~/orangepi_build/output/debs/test$ '''dpkg -x \'''
<span id="how'''linux-toimage-installlegacy-zfs"></span>=== How to install ZFS ===rockchip-rk356x_1.0.0_arm64.deb .'''
test@test:~/orangepi_build/output/debs/test$ '''Before installing zfs, please make sure that the Linux image used is the latest version. In addition, if zfs is already installed in the system, it needs to be installed again.ls'''
Before installing zfs, you need to install the kernel header file first'''boot etc lib''' linux-image-legacy-rockchip-rk356x_1.0.0_arm64. For the method of installing the kernel header deb '''usr'''|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li>The decompressed file, please refer to the instructions in the [[\lis as follows</li>{|class="wikitable" style="width:800px;" |-| test@test:~/orangepi-build/output/debs/test$ '''section on the method of installing the kernel header filetree -L 2''']].
In Ubuntu20.04, Ubuntu22.04 and Debian11 systems, zfs cannot be installed directly through apt, because the default apt source zfs version is lower than 2.1.6, and there is a problem of incompatibility with rk Linux5.10 kernel. This problem is fixed in zfs version 2.1.6 and later.
To solve this problem, we provide a zfs deb package that can be installed normally, which can be downloaded from the [http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-3B.html '''official tool'''] of the development board. Open the '''<span class="mark">official tool</span>''', and enter the '''<span class="mark">zfs-related deb package folders used by Ubuntu and Debian systems</span>'''. You can see three types of deb packages: Ubuntu20.04, Ubuntu22.04 and Debian11. Please download the required version.├── boot
[[File:pi3b│   ├── config-img3685.png|230x93px]]10.160-rockchip-rk356x
After downloading the zfs deb packages of the corresponding version, please upload them to the Linux system of the development board│   ├── System. For the upload method, please refer to '''[[\l|the description in the section of the method of uploading files to the Linux system of the development board]]map-5.'''10.160-rockchip-rk356x
After the upload is complete, use the '''cd''' command in the command line of the development board Linux system to enter the directory of the deb package, and then use the following command to install the deb package of zfs│   └── vmlinuz-5.10.160-rockchip-rk356x
orangepi@orangepi:~$ '''sudo apt install ./*.deb'''├── etc
After the installation is complete, use the following command to see the zfs-related │   └── kernel modules:
orangepi@orangepi:~$ '''ls /├── lib/modules/5.10.160-rockchip-rk356x/updates/dkms/'''
'''icp.ko spl.ko zavl.ko zcommon.ko zfs.ko zlua.ko znvpair.ko zunicode.ko zzstd.ko'''│   └── modules
Then restart the Linux system to see that the zfs kernel module will be automatically loaded:├── linux-image-legacy-rockchip-rk356x_1.0.0_arm64.deb
orangepi@orangepi:~$ '''lsmod | grep &quot;zfs&quot;'''└── usr
zfs 2801664 0:├── lib
zunicode 327680 1 zfs:└── share|}</ol></li></ol><ol start="9" style="list-style-type: decimal;"><li>The orangepi-bulid compilation system will first synchronize the Linux kernel source code with the Linux kernel source code of the github server when compiling the Linux kernel source code, so if you want to modify the Linux kernel source code, you first need to turn off the update function of the source code '''(you need to compile it once This function can only be turned off after the Linux kernel source code, otherwise it will prompt that the source code of the Linux kernel cannot be found. If the source code compressed package downloaded from Google cloud disk, there is no such problem, because the source code of Linux has been cached)''', otherwise the The changes made will be reverted as follows:</li>
zzstd 471040 1 zfsSet the IGNORE_UPDATES variable in '''userpatches/config-default.conf''' to &quot;yes&quot;
zlua 139264 1 zfs{| class="wikitable" style="width:800px;" |-| test@test:~/orangepi-build$ '''vim userpatches/config-default.conf'''
zcommon 69632 1 zfsIGNORE_UPDATES=&quot;'''<span style="color:#FF0000">yes</span>'''&quot;|}</ol><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>{| class="wikitable" style="width:800px;" |-| test@test:~/orangepi-build$ '''cd output/debs'''
znvpair 61440 2 zfs,zcommontest@test:~/orangepi-build/output/debs$ '''scp \'''
zavl 16384 '''linux-image-legacy-rockchip-rk356x_1.0.0_arm64.deb root@192.168.1 zfs.xxx:/root'''|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li>Then log in to the development board and uninstall the deb package of the installed Linux kernel</li>{| class="wikitable" style="width:800px;" |-| root@orangepi:~# '''apt purge -y linux-image-legacy-rockchip-rk356x'''|}</ol><ol start="3" style="list-style-type: lower-alpha;"><li>Install the deb package of the new Linux kernel just uploaded</li>{| class="wikitable" style="width:800px;" |-| root@orangepi:~# '''dpkg -i linux-image-legacy-rockchip-rk356x_1.0.0_arm64.deb'''|}</ol><ol start="4" style="list-style-type: lower-alpha;"><li>Then restart the development board, and then check whether the kernel-related modifications have taken effect</li>{| class="wikitable" style="width:800px;" |-| root@orangepi:~# '''reboot'''|}</ol></li></ol><ol start="11" style="list-style-type: decimal;"><li><p>Other useful information</p><ol style="list-style-type: lower-alpha;"><li>The storage location of the kernel configuration file is as follows, please do not go to the kernel source code to find the kernel configuration file used by the development board</li>{| class="wikitable" style="width:800px;" |-| [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>
icp 221184 1 zfs== Compile rootfs ==
spl 77824 6 zfs# Run the build.sh script,icp,zzstd,znvpair,zcommon,zavlremember to add sudo permission
In Debian12, the default version of zfs is 2.1.11, so we can install zfs directly through the following command. Again, please make sure that the system has installed the deb package of the kernel header file before installation.::{| class="wikitable" style="width:800px;" |-| orangepitest@orangepitest:~/orangepi-build$ '''sudo apt install -y zfsutils-linux zfs-dkms./build.sh'''|}
<span idol start="methods-of-creating2" style="list-zfsstyle-poolstype: decimal;"><li>Select '''Rootfs and all deb packages''', then enter</spanli>=== Methods of creating ZFS pools ===
'''ZFS is based on storage pools, we can add multiple physical storage devices to the pool, and then allocate storage space from this pool.'''<div class="figure">
'''The following content is demonstrated based on the development board connected to an NVMe SSD and a USB flash drive[[File:pi3b-img388.'''png]]
# First, we can use </div></ol><ol start="3" style="list-style-type: decimal;"><li>Then select the '''lsblk''' command to view all storage devices on model of the development board. The current development board is connected to an NVMe SSD and a U disk. The output is as follows:</li>
[[File:pi3b-img369.png|379x227px]] <ol startdiv class="2figure" style="list-style-type: decimal;"><li>Then enter the following command to create a ZFS pool, including two storage devices, NVMe SSD and U disk</li></ol>
orangepi@orangepi:~$ '''sudo zpool create -f pool1 /dev/nvme0n1 /dev/sda''' <ol start="3" style="list-style-type: decimal;"><li>Then use the '''zpool list''' command to see that the system has created a ZFS pool named '''pool1''', and the size of the ZFS pool pool1 is the size of the NVME SSD plus the size of the U disk</li></ol> [[File:pi3b-img370img380.png|576x37px]]
</div></ol>
<ol start="4" style="list-style-type: decimal;">
<li>Then execute '''df -h''' to see that '''pool1''' is mounted to select the '''/pool1''' directorytype of rootfs</li></ol> orangepi@orangepi:~$ '''df -h''' Filesystem Size Used Avail Use% Mounted on tmpfs 1.6G 18M 1.6G 2% /run /dev/mmcblk0p2 29G 6.0G 22G 22% / tmpfs 7.7G 46M 7.7G 1% /dev/shm tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 7.7G 944K 7.7G 1% /tmp /dev/mmcblk0p1 1022M 115M 908M 12% /boot /dev/zram1 188M 4.5M 169M 3% /var/log tmpfs 1.6G 80K 1.6G 1% /run/user/1000 '''pool1 489G 9.3M 489G 1% /pool1'''
[[File:pi3b-img389.png]]
</ol>
<ol start="5" style="list-style-type: decimal;">
<li>Use <p>Then select the following command to see that type of image</p><ol style="list-style-type: lower-alpha;"><li><p>'''Image with console interface (server)''' Indicates the file system type image of pool1 the server version, which is zfsrelatively small</p></li><li><p>'''Image with desktop environment''' Indicates a image with a desktop, which is relatively large</p></olli>
orangepi@orangepi:~$ '''mount | grep pool1'''<div class="figure">
pool1 on /pool1 type '''zfs''' (rw,xattr,noacl)[[File:pi3b-img390.png]]
</div></ol>
</li></ol>
<ol start="6" style="list-style-type: decimal;">
<li>Then we If you are compiling the image of the server version, you can test copying a file 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 ZFS poolMinimal version if there is no special requirement, because many things are not pre-installed by default. Some functions may not be available)'''</li></ol>
orangepi@orangepi:~$ '''sudo cp -v /usr/local/test.mp4 /pool1/'''<div class="figure">
'/usr/local/test.mp4' [[File:pi3b-&gt; '/pool1/testimg391.mp4'png]]
<span id/div></ol><ol start="7" style="test-the-data-deduplication-functionlist-ofstyle-zfstype: decimal;"></spanli>=== Test If you are compiling the image of the desktop version, you also need to select the data deduplication function type of ZFS ===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>
# The data deduplication function of ZFS is disabled by default, we need to execute the following command to enable it<div class="figure">
orangepi@orangepi[[File:~$ '''sudo zfs set dedup=on pool1'''pi3b-img392.png]]
<ol start="2" style="list-style-type: decimal;"/div><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>[[File:pi3b-img393.png]]
orangepi@orangepi:~$ '''cd /pool1/'''You can then select additional packages that need to be installed. Please press the Enter key to skip directly here.
root@orangepi[[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</pool1$ li>{| class="wikitable" style="width:800px;" |-| [ o.k. ] File name [ '''jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4'''sudo dd if]|}</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''' ]|}</devol></urandom 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 ofeach field of the name is</p><ol style=test"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.1g bslist''' lists the package names of all packages installed by rootfs</p></li>{| class=1M count"wikitable" style=1024"width:800px;" |-| test@test:~/orangepi-build$ '''ls external/cache/rootfs/'''
1024+0 records in'''jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4'''
1024+0 records outjammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4.current
1073741824 bytes (1jammy-xfce-arm64.1 GBf930ff6ebbac1a72108a2e100762b18f.tar.lz4.list|}</ol></li></ol><ol start="10" style="list-style-type: decimal;"><li>If the required rootfs already exists under '''external/cache/rootfs''', 1then compiling rootfs again will directly skip the compilation process and will not restart the compilation.0 GiB) copiedWhen 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, 5use it directly, which can save a lot of download and compilation time.04367 s, 213 MB</li></sol>
<ol startspan id="3" style="listcompile-stylelinux-type: decimal;image"><li>Then use the following command to copy 1000 random files of size 1G</li></olspan>
root@orangepi:/pool1$ '''for ((i=0; i&lt;1000; i++)); do sudo cp test.1g $i.test.1g; done'''= Compile Linux image ==
<ol start="4" style="list-style-type: decimal;"><li>Then use '''du -lh''' to see that there are currently 1002G of data in # Run the poolbuild.sh script, 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>remember to add sudo permission
root::{| class="wikitable" style="width:800px;" |-| test@orangepitest:~/pool1orangepi-build$ '''du -lhsudo ./build.sh'''|}
1002G<ol start="2" style="list-style-type: decimal;"><li>Select '''Full OS image for flashing''', then enter</li>
<ol startdiv class="5figure" style="list-style-type: decimal;"><li>Then use the '''zpool list''' command to see that only 1.01G is actually occupied, because these 1001 files are all duplicates, indicating that the data deduplication function is effective.</li></ol>
[[File:pi3b-img371img395.png|576x36px]]
<span id/div></ol><ol start="test-the3" style="list-datastyle-compression-function-of-zfstype: decimal;"></spanli>=== Test Then select the data compression function model of ZFS ===the development board</li>
# Because the stored data is different, the disk space saved by compression will also be different, so we choose to compress relatively large plain text files for compression testing, and execute the following commands to pack the '''/var/log/''' and '''/etc/''' directories into a tarball<div class="figure">
orangepi@orangepi:~$ '''cd /pool1/''' root@orangepi:/pool1$ '''sudo tar -cf text.tar /var/log/ /etc/''' <ol start="2" style="list-style-type: decimal;"><li>Then the file size that can be seen through the '''ls -lh''' command and the space occupied in the ZFS pool are both '''27M'''</li></ol> [[File:pi3b-img372img380.png|576x90px]] <ol start="3" style="list-style-type: decimal;"><li>Then we enable compression in the ZFS pool pool1</li></ol> root@orangepi:/pool1$ '''sudo zfs set compression=lz4 pool1'''
</div></ol>
<ol start="4" style="list-style-type: decimal;">
<li>Then execute select the following command again to package the '''/var/log/''' and '''/etc/''' directories into a tar packagetype of rootfs</li></ol> root@orangepi:/pool1$ '''sudo tar -cf text.tar /var/log/ /etc/'''
[[File:pi3b-img389.png]]
</ol>
<ol start="5" style="list-style-type: decimal;">
<li>At this time, you can see that <p>Then select the size type of the image</p><ol style="list-style-type: lower-alpha;"><li><p>'''text.tarImage with console interface (server)''' file is still 27M, but it only occupies 9.47M in Indicates the image of the ZFS poolserver version, indicating that the file which is compressedrelatively small</p></li><li><p>'''Image with desktop environment''' Indicates a image with a desktop, which is relatively large</p></olli>
[[File:pi3b-img373.png|576x79px]]<div class="figure">
<span id="how[[File:pi3b-to-shut-down-and-restart-the-development-board"></span>== How to shut down and restart the development board ==img390.png]]
# During </div></ol></li></ol><ol start="6" style="list-style-type: decimal;"><li>If you are compiling the running image of the Linux systemserver version, if you can also choose to compile the Standard version or the TypeMinimal version. The pre-C power supply is directly unplugged, some data may installed software of the Minimal version will be lost or damaged in the file system, so please use much less than that of the Standard version '''poweroff(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)''' command to shut down the Linux system of the development board before powering off. Then unplug the power again.</li>
orangepi@orangepi:~$ '''sudo poweroff'''<div class="figure">
<ol start="2" style="list[[File:pi3b-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 downimg391.</li></ol>png]]
[[File</div></ol><ol start="7" style="list-style-type:pi3b-img374decimal;"><li>If you are compiling the image of the desktop version, you also need to select the type of desktop environment.png|294x80px]]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>
'''Note that the Linux desktop version system will pop up a confirmation box as shown in the <div class="figure below after pressing the switch button, and the system will shut down only after clicking the Shut Down option.'''">
[[File:pi3b-img375img392.png|207x193px]]
<ol start="3" style="list-style-type: decimal;"/div><li>Short press the switch button on the development board after shutting down to start up[[File:pi3b-img393.</li></ol>png]]
[[File:pi3b-img374You can then select additional packages that need to be installed. Please press the Enter key to skip directly here.png|294x80px]]
[[File:pi3b-img394.png]]</ol><ol start="48" style="list-style-type: decimal;"><li><p>Then it will start to compile the Linux image. The command to restart general process of compilation is as follows</p><ol style="list-style-type: lower-alpha;"><li><p>Initialize the compilation environment of Ubuntu PC and install the software packages required for the compilation process</p></li><li><p>Download the source code of u-boot and Linux kernel (if cached, only update the code)</p></li><li><p>Compile u-boot source code and generate u-boot deb package</p></li><li><p>Compile the Linux source code and generate Linux-related deb packages</p></li><li><p>Make the deb package of Linux firmware</p></li><li><p>Make the deb package of the orangepi-config tool</p></li><li><p>Create a deb package supported by the board</p></li><li><p>If you are compiling the desktop image, you will also create desktop-related deb packages</p></li><li><p>Check whether the rootfs has been cached, if not, recreate the rootfs, if it has been cached, directly decompress and use</p></li><li><p>Install the previously generated deb package into rootfs</p></li><li><p>Make some specific settings for different development boards and different types of images, such as pre-installing additional software packages, modifying system configuration, etc.</p></li><li><p>Then make an image file and format the partition, the default type isext4</p></li><li><p>Then copy the configured rootfs to the mirrored partition</p></li><li><p>Then update initramfs</p></li><li><p>Finally, write the bin file of u-boot into the image through the dd command</p></li></ol></li><li><p>After 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>{| class="wikitable" style="width:800px;" |-| [ o.k. ] Done building [ '''output/images/Orangepi3b_1.0.0_debian_bullseye_desktop_xfce_linux5.10.160/Orangepi3b_1.0.0_debian_bullseye_desktop_xfce_linux5.10.160.img''' ]|}</ol><ol start="2" style="list-style-type: lower-alpha;"><li>Compilation time</li>orangepi@orangepi{| class="wikitable" style="width:~$ 800px;" |-| '''sudo[ o.k. ] Runtime [ 19 min ]''' |}</ol><ol start="3" style="list-style-type: lower-alpha;"><li>Repeat the command to compile the image, and use the following command to start compiling the image directly without selecting through the graphical interface</li>{| class="wikitable" style="width:800px;" |-| [ o.k. ] Repeat Build Options [ '''rebootsudo ./build.sh 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>
<span id="linux-sdkorangepi-build-'''Android 11 operating system instructions"></span>''' =
<span id= '''Linux SDK——orangepi"supported-build instructions''' android-versions"></span>== Supported Android versions ==
<span id{| class="compilationwikitable" style="width:800px;text-align: center;"|-system|'''Android version'''|'''Kernel version'''|-requirements"></span>== Compilation system requirements ==|'''Android 11'''|'''Linux4.19'''|}
'''We can cross<span id="android-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.'''function-adaptation"></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.'''== Android Function Adaptation ==
<span id{| class="compilewikitable" style="width:800px;text-withalign: center;"|-the|'''Functions'''|'''Android 11'''|-ubuntu22|'''USB2.040x3'''|'''OK'''|-system|'''USB3.0x1'''|'''OK'''|-of-the-development-board"></span>=== Compile with the Ubuntu22|'''M.04 system of the development board ===2 NVMe SSD boot'''|'''OK'''|-# The Linux SDK, namely |'''orangepiWIFI'''|'''OK'''|-build|'''Bluetooth''', supports running on the |'''Ubuntu 22.04OK''' 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 |'''GPIO(40pin)'''|'''22.04OK''', it means that the current Ubuntu version does not meet the requirements. Please replace the system before performing the following operations.|-|'''UART(40pin)'''orangepi@orangepi:~$ |'''OK'''lsb_release |-a|'''SPI(40pin)'''|'''OK'''|-No LSB modules are available.|'''I2C(40pin)'''|'''OK'''|-Distributor ID: Ubuntu|'''PWM(40pin)'''|'''OK'''Description: Ubuntu 22.04.1 LTS|-|'''PWM fan interface'''Release: |'''22.04OK'''|-Codename: jammy|'''3pin Debugging serial port'''|'''OK'''<ol start="2" style="list|-style|'''EMMC'''|'''OK'''|-type: decimal;"><li>|'''Since the source codes such as the kernel and U-TF card boot are stored on GitHub, it is very important to ensure that the development board can download codes from GitHub normally when compiling the image.'''</li></ol>|'''OK'''<span id="compile|-with|'''HDMI video'''|'''OK'''|-x64-ubuntu22.04-computer"></span>=== Compile with x64 Ubuntu22.04 computer ===|'''HDMI Audio'''|'''OK'''|-# The Linux SDK, |'''orangepi-buildLCD''', supports running on computers with |'''Ubuntu 22.04OK''' 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 |'''eDP display '''22.04|'''OK''', it means that the current Ubuntu version does not meet the requirements. Please replace the system before performing the following operations.|-test@test:~$ |'''Gigabit network port'''|'''OK'''lsb_release |-a|'''Network port status indicator'''|'''OK'''No LSB modules are available.|-|'''Headphone playback'''|'''OK'''|-Distributor ID: Ubuntu|'''Headphone recording'''|'''OK'''Description: Ubuntu 22.04 LTS|-|'''LED Light'''Release: |'''22.04OK'''|-Codename: jammy|'''GPU'''|'''OK'''<ol start="2" style="list|-style|'''NPU'''|'''OK'''|-type: decimal;"><li><p>If the computer is installed with Windows system and there is no computer with Ubuntu 22.04 installed, you can consider using |'''VirtualBoxVPU''' or |'''VMwareOK''' to install an Ubuntu 22.04 virtual machine in the Windows system. But please be careful not to compile orangepi|-build on the WSL virtual machine, because orangepi-build has not been tested in the WSL virtual machine, so it cannot be guaranteed that orangepi-build can be used normally in WSL.</p></li><li><p>The download address of the installation image of Ubuntu 22.04 |'''RTC'''|'''amd64OK''' version is:</p></li></ol>|}
[https://repo.huaweicloud.com/ubuntu-releases/21.04/ubuntu-21.04<span id="wifi-desktopconnection-amd64.iso '''https://mirrors.tuna.tsinghua.edu.cn/ubuntutest-releasesmethod"></22.04/ubuntu-22.04-desktop-amd64.iso''']span>
Or== WIFI connection test method ==
# First click enter '''https://repo.huaweicloud.com/ubuntu-releases/22.04/ubuntu-22.04.1-desktop-amd64.isoSetting'''
<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[[File:pi3b-alpha;"><li>For the method of replacing Tsinghua source, please refer to the instructions on this web page</li></ol></li></ol>img396.png]]
https<ol start="2" style="list-style-type:decimal;"><li>Then select '''Network &amp; internet'''<//mirrors.tuna.tsinghua.edu.cn/help/ubuntu/li>
[[File:pi3b-img397.png]]</ol><ol start="23" style="list-style-type: lower-alphadecimal;"><li>Note that the Ubuntu version needs to be switched to 22.04Then select '''Wi-Fi'''</li></ol>
[[File:pi3b-img376img398.png|576x241px]]</ol><ol start="4" style="list-style-type: decimal;"><li>Then turn on the '''Wi-Fi''' switch</li>
[[File:pi3b-img399.png]]</ol><ol start="35" style="list-style-type: lower-alphadecimal;"><li>The content of the After turning on '''/etc/apt/sources.listWi-Fi''' file that needs to be replaced , if everything isnormal, you can scan for nearby Wi-Fi hotspots</li></ol>
test@test[[File:~$ '''sudo mv pi3b-img400.png]]</etc/apt/sources.ol><ol start="6" style="list -style-type: decimal;"><li>Then select the Wi-Fi you want to connect to, and the password input interface shown in the figure below will pop up</etc/apt/sources.list.bak'''li>
test@test[[File:~$ '''sudo vim pi3b-img401.png]]</etc/aptol><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</sources.list'''li>
# By default[[File:pi3b-img402.png]]</ol><ol start="8" style="list-style-type: decimal;"><li>After the Wi-Fi connection is successful, the source image display is commented to improve as shown in the speed of apt update, you can uncomment it yourself if necessaryfigure below:</li>
deb https[[File://mirrors.tuna.tsinghua.edupi3b-img403.cnpng]]</ubuntuol><span id="how-to-use-wi-fi-hotspot"></ jammy main restricted universe multiversespan>
# deb== How to use Wi-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverseFi hotspot ==
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse# First, please make sure that the Ethernet port is connected to the network cable and can access the Internet normally# Then select '''Settings'''
# deb::[[File:pi3b-src https://mirrors.tuna.tsinghua.eduimg396.cn/ubuntu/ jammy-updates main restricted universe multiversepng]]
deb https<ol start="3" style="list-style-type:decimal;"><li>Then select '''Network &amp; internet'''<//mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverseli>
# deb[[File:pi3b-src https://mirrorsimg397.tuna.tsinghua.edu.cnpng]]</ubuntuol><ol start="4" style="list-style-type: decimal;"><li>Then select '''Hotspot &amp; tethering'''</ jammy-backports main restricted universe multiverseli>
deb https[[File://mirrors.tunapi3b-img404.tsinghua.edu.cnpng]]</ubuntuol><ol start="5" style="list-style-type: decimal;"><li>Then select '''Wi-Fi hotspot'''</ jammy-security main restricted universe multiverseli>
# deb[[File:pi3b-img405.png]]</ol><ol start="6" style="list-style-type: decimal;"><li>Then turn on the '''Wi-src httpsFi 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>)</mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverseli>
# Pre[[File:pi3b-release software sourceimg406.png]]</ol><ol start="7" style="list-style-type: decimal;"><li>At this time, you can take out your mobile phone. If everything is normal, not recommended 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 enableconnect to the hotspot, and the password can be seen under the '''Hotspot password''' in the above picture</li>
# deb https[[File:pi3b-img407.png]]<//mirrorsol><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).tunaAt this point, you can open a webpage on your mobile phone to see if you can access the Internet.tsinghuaIf you can open the webpage normally, it means that the '''WI-FI Hotspot''' of the development board can be used normally.edu.cn</ubuntu/ jammy-proposed main restricted universe multiverseli>
# deb[[File:pi3b-src https://mirrors.tuna.tsinghuaimg408.edu.cnpng]]</ubuntuol><span id="bluetooth-test-method"></ jammy-proposed main restricted universe multiversespan>
<ol start="4" style="list-style-type: lower-alpha;"><li>After the replacement, you need to update the package information and make sure there is no error</li></ol>Bluetooth test method ==
test@test:~$ # First click enter '''sudo apt updateSetting'''
<ol start="5" style="list-style-type: lower-alpha;"><li>'''In addition, since the source codes such as the kernel and U:[[File:pi3b-boot are stored on GitHub, it is very important to ensure that the computer can download codes from GitHub normally when compiling the imageimg396.'''</li></ol>png]]
<span idol start="get-the-source-code-of2" style="list-linuxstyle-sdktype: decimal;"><li>Then select '''Connected devices'''</spanli>== Get the source code of Linux sdk ==
[[File:pi3b-img409.png]]</ol><span idol start="download3" style="list-orangepistyle-build-from-githubtype: decimal;"><li>Then click '''Pair new device''' to turn on Bluetooth and start scanning the surrounding Bluetooth devices</li> [[File:pi3b-img410.png]]</spanol><ol start="4" style== Download orangepi"list-style-build from github ===type: decimal;"><li>The searched Bluetooth devices will be displayed under '''Available devices'''</li>
# The Linux sdk actually refers to the code of orangepi[[File:pi3b-buildimg411. orangepipng]]</ol><ol start="5" style="list-build is modified based on style-type: decimal;"><li>Then click the armbian build systemBluetooth device you want to connect to start pairing. Using orangepi-buildWhen the following interface pops up, multiple versions of Linux images can be compiled. First download please use the code of orangepi-build, mouse to select the command is as follows:'''Pair''' option</li>
test@test[[File:~$ '''sudo aptpi3b-img412.png]]</ol><ol start="6" style="list-style-get update'''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>
test@test[[File:~$ '''sudo aptpi3b-get install img413.png]]</ol><ol start="7" style="list-y git'''style-type: decimal;"><li>After the pairing is completed, you can see the paired Bluetooth device as shown in the figure below</li>
test@test[[File:~$ '''git clone https://githubpi3b-img414.compng]]</orangepiol><ol start="8" style="list-xunlong/orangepistyle-buildtype: decimal;"><li>At this time, you can use the Bluetooth of your mobile phone to send a picture to the development board.git -b nextAfter sending, you can see the following confirmation interface in the Android system of the development board, and then click '''Accept'''to start receiving the picture sent by the mobile phone.</li>
[[File:pi3b-img415.png]]</ol><ol start="9" style="list-style-type: decimal;"><li>You can open the '''Download''Note that ' directory in the Orange Pi 3B development board needs file manager to download view the source code of pictures received by the next branch Android system Bluetooth of orangepi-build. The above git clone command needs to specify the branch of the orangepi-build source code as next.'''development board</li>
[[File:pi3b-img416.png]]<div class/ol><span id="figurehow-to-use-raspberry-pi-5-inch-screen"></span>
[[File:pi3b== How to use Raspberry Pi 5-img377.png|576x298px|图片6]]inch screen ==
{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| </divbig>'''Downloading Please make sure that the orangepi-build code through the git clone command does not require entering the user name and password of the github account (the same image used 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 following two versions of the github account.image:'''
<ol start="2" style="list-style-type: decimal;"><li>The u-boot and Linux kernel versions currently used by the development board are as follows</li></ol>'''OrangePi3B_RK3566_Android11_lcd_v1.x.x.img'''
{| class="wikitable"|-|'''branch'''|'''uOrangePi3B_RK3566_Android11_spi-boot version'''|'''Linux Kernel version'''|-|'''legacy'''|'''u-boot 2017nvme_lcd_v1.x.09'''|'''Linux5x.10img'''</big>
|}
# The screen needs to be assembled first, please refer to [[Orange Pi 3B#Use of the Raspberry PI's 5-inch screen|'''The branch mentioned here is not the same thing as the branch assembly method of the orangepiRaspberry Pi 5-build source code, please do not confuse it. This branch is mainly used to distinguish different kernel source code versions.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
'''Currently, the Linux5::[[File:pi3b-img417.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.'''png]]
<ol startspan id="3" style="listpin-interface-gpio-styleuart-type: decimal;"><li><p>orangepispi-build will contain the following files and folders after downloading</p><ol style="list-style-type: lowerpwm-alpha;test"><li><p>'''build.sh''': Compile the startup script</p></li><li><p>'''external''': Contains the configuration files needed to compile the image, specific scripts, and the source code of some programs, etc.</p></li><li><p>'''LICENSE''': GPL 2 license file</p></li><li><p>README.md: orangepi-build documentation</p></li><li><p>'''scripts''': General script for compiling Linux images</p></li></ol></li></olspan>
== 40pin interface GPIO, UART, SPI and PWM test@test:~/orangepi-build$ '''ls'''==
'''build.sh external LICENSE''' README.md '''scripts'''<span id="pin-gpio-port-test-2"></span>=== 40pin GPIO port test ===
'''If you downloaded # First click on 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 wiringOP icon to open the corresponding place to download them.'''wiringOP APP
<span id="download::[[File:pi3b-the-cross-compilation-toolchain"></span>=== Download the cross-compilation toolchain ===img418.png]]
'''The cross<ol start="2" style="list-compilation toolchain will only be downloaded when the orangepistyle-build compilation image type: decimal;"><li>The main interface of wiringOP APP is used on an x64 computer. Compiling the Linux image of the development board displayed as shown in the Ubuntu22.04 of figure below, and then click the development board will not download the cross-compilation toolchain. At this time, orangepi-build/toolchains will be an empty folder.'''GPIO_TEST''' button to open the GPIO test interface</li>
# When orangepi[[File:pi3b-img419.png]]</ol><ol start="3" style="list-build runs for the first time, it will automatically download the crossstyle-compilation toolchain and put it type: decimal;"><li>The GPIO test interface is shown in the figure below. The two rows of '''toolchainsCheckBox''' folderbuttons on the left are in one-to-one correspondence with the 40pin pins. Every time after running When the build.sh script of orangepi-build'''CheckBox''' button is checked, it the corresponding GPIO pin will check whether the cross-compilation toolchain in be set to '''toolchainsOUT''' exists mode, if it does not existand the pin level will be set to high level; when the checkbox is unchecked, the download GPIO pin level will be restartedset to low level; When the '''GPIO READALL''' button is pressed, information such as wPi number, if it existsGPIO mode, it will and pin level can be used directlyobtained; when the '''BLINK ALL GPIO''' button is clicked, and the download program will not be repeatedcontrol the 28 GPIO ports to continuously switch between high and low levels</li> [[File:pi3b-img420.png]]</ol><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>
[[File:pi3b-img421.png]]<div class/ol><ol start="5" style="figurelist-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>
[[File:pi3b-img378img422.png|575x278px|选区_396]]</ol><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>
[[File:pi3b-img423.png]]</divol><ol start="27" style="list-style-type: decimal;"><li>The image URL 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 cross-compilation toolchain in China pin. If it is '''0v''', it means that the open source software image site of Tsinghua Universitylow level is set successfully.</li></ol>
https[[File://mirrorspi3b-img424.tuna.tsinghua.edu.cnpng]]</armbianol><ol start="8" style="list-style-releases/_toolchaintype: 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>
[[File:pi3b-img425.png]]</ol start><span id="3" style="listpin-uart-styletest-type: decimal;1"><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></olspan>
=== 40pin UART test@test:~/orangepi-build$ '''ls toolchains/'''===
gcc-arm-11# UART7 and UART9 are enabled by default in Android.2-2022.02-x86_64-aarch64-none-linux-gnuThe position of the 40pin is shown in the figure below, and the corresponding device nodes are '''/dev/ttyS7''' and '''/dev/ttyS9''' respectively
gcc::[[File:pi3b-arm-11.2-2022img269.02-x86_64-arm-none-linux-gnueabihfpng]]
gcc-arm-9.<ol start="2" style="list-2019.12-x86_64-aarch64-none-linuxstyle-gnutype: decimal;"><li>First click on the wiringOP icon to open the wiringOP APP</li>
gcc[[File:pi3b-arm-9.2-2019img418.12-x86_64-arm-nonepng]]</ol><ol start="3" style="list-linuxstyle-gnueabihftype: 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>
gcc[[File:pi3b-linaro-4.9img426.png]]</ol><ol start="4" style="list-2017.01-x86_64_arm-linuxstyle-gnueabitype: decimal;"><li>The serial port test interface of the APP is shown in the figure below</li>
gcc[[File:pi3b-linaro-5img427.png]]</ol><ol start="5.0" style="list-style-2017type: 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.10-x86_64_arm-linux-gnueabihfAfter the opening is successful, the '''OPEN''' button becomes unselectable, and the '''CLOSE''' button and '''SEND''' button become selectable</li>
gcc[[File:pi3b-linaro-7img428.4.1-2019.02-x86_64_aarch64png]]</ol><ol start="6" style="list-linuxstyle-gnutype: decimal;"><li>Then use Dupont wire to short the RXD and TXD pins of uart7</li>
gcc-linaro[[File:pi3b-img429.png]]</ol><ol start="7.4.1-2019.02-x86_64_arm" style="list-linuxstyle-gnueabitype: decimal;"><li>Then you can enter a character in the send edit box below, and click the '''SEND''' button to start sending</li>
gcc[[File:pi3b-linaro-aarch64-none-elf-4img430.png]]</ol><ol start="8" style="list-2013.11_linuxstyle-type: decimal;"><li>If everything is normal, the received string will be displayed in the receiving box</li>
gcc[[File:pi3b-linaroimg431.png]]</ol><span id="pin-armspi-linuxtest-gnueabihf-4.8-2014.04_linux2"></span>
gcc-linaro-arm-none-eabi-4.8-2014.04_linux=== 40pin SPI test ===
<ol start="4" style="list-style-type: decimal;"><li><p>The cross-compilation toolchain used # According to compile the Linux kernel source code schematic diagram of the 40pin interface, the spi available for Orange Pi 3B is</p><ol style="list-style-type: lower-alpha;"><li>Linux5.10</li></ol></li></ol>spi3
'''gcc::[[File:pi3b-arm-11.2-2022img264.02-x86_64-aarch64-none-linux-gnu'''png]]
<ol start="52" style="list-style-type: decimal;"><li><p>The cross-compilation tool chain used to compile Here, the u-boot source code SPI interface is</p><ol style="list-style-type: lower-alpha;"><li>v2017tested through the w25q64 module.09First, the w25q64 device is connected to the SPI3 interface</li></ol></li></ol>
'''gcc[[File:pi3b-linaro-7img432.4.1-2019.02-x86_64_aarch64png]]</ol><ol start="3" style="list-linuxstyle-gnu'''type: decimal;"><li>Then click the wiringOP icon to open the wiringOP APP</li>
[[File:pi3b-img418.png]]</ol><span idol start="4" style="orangepi-buildlist-completestyle-directory-structure-descriptiontype: 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</spanli>=== orangepi-build complete directory structure description ===
<ol style="list-style-type[[File: decimal;"><li><p>The orangepi-build repository does not contain the source code of the Linux kernel, u-boot, and crosspi3b-compilation toolchain after downloadingimg433. The source code of the Linux kernel and u-boot is stored in an independent git repositorypng]]</pol><ol start="5" style="list-style-type: lower-alphadecimal;"><li>The git repository where Then click the '''OPEN''' button to initialize the Linux kernel source code is stored is as follows:</li></ol>SPI</li></ol>
'''https[[File://githubpi3b-img434.compng]]</orangepiol><ol start="6" style="list-xunlong/linuxstyle-orangepi/tree/orange-pi-5.10-rk35xxtype: 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>
[[File:pi3b-img435.png]]</ol><ol start="27" style="list-style-type: lower-alphadecimal;"><li>The git warehouse where Finally, the b.u-boot source code is stored is as follows:APP will display the read ID information</li></ol>
'''https[[File://githubpi3b-img436.compng]]</orangepiol><ol start="8" style="list-xunlong/ustyle-boot-orangepi/treetype: 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)</v2017.09-rk3588'''li>
<ol start="2" style="list-style-type[[File: decimal;"><li><p>When orangepi-build runs for the first time, it will download the cross-compilation toolchain, upi3b-boot and Linux kernel source codeimg437. After successfully compiling a Linux image, the files and folders that can be seen in orangepi-build are:</p>png]]<p>a. '''build.sh''': compile startup script</pol><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 orangespan id="pin-pipwm-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><ptest">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></olspan>
=== 40pin PWM test@test:~/orangepi-build$ '''ls'''===
# Android enables '''build.sh external kernel LICENSE outputPWM11''' README.md '''scripts toolchains u-boot userpatches''' <span id="compile-u-boot"></span>== Compile u-boot ==by default, and the corresponding pin is located at 40pin as shown in the figure below
# Run the build.sh script, remember to add sudo permission test@test:~/orangepi:[[File:pi3b-build$ '''sudo ./buildimg438.sh'''png]]
<ol start="2" style="list-style-type: decimal;">
<li>Select '''U-boot package''',then enterFirst click on the wiringOP icon to open the wiringOP APP</li></ol>
[[File:pi3b-img418.png]]<div class/ol><ol start="3" style="figurelist-style-type: decimal;"><li>Then click the '''PWM_TEST''' button on the main interface of wiringOP to enter the PWM test interface</li>
[[File:pi3b-img379img439.png|576x132px|选区_238]]</ol><ol start="4" style="list-style-type: decimal;"><li>The base address corresponding to PWM11 is '''fe6f0030''', here pwmchip0 shows '''fdd70020.pwm''' on the right, then you need to click the drop-down option to select other pwmchips until '''febf0030.pwm''' is displayed on the right</li>
[[File:pi3b-img440.png]]</divol><ol start="35" style="list-style-type: decimal;"><li>Then select When the drop-down option selects '''pwmchip3''', the model corresponding base address of PWM11 is '''fe6f0030''' on the development boardright</li></ol>
[[File:pi3b-img441.png]]<div class/ol><ol start="6" style="figurelist-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>
[[File:pi3b-img380img442.png|576x197px|}4$_5F06}}0R4GU8]OVO}4E]]</ol><ol start="7" style="list-style-type: decimal;"><li>Then drag the drag bar below to change the PWM duty cycle, and then check Enable to output the PWM waveform</li>
[[File:pi3b-img443.png]]</divol><ol start="48" style="list-style-type: decimal;"><li><p>Then it will start use an oscilloscope to compile u-bootmeasure the No. 32 pin in the 40pin of the development board, 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>you can see the following waveform</li></ol>
[ o.k[File:pi3b-img444. png]] Compiling u</ol><span id="how-boot [ '''v2017.09''' ]to-use-adb"></span>
<ol start="2" style="list-style-type: lower-alpha;"><li>The version of the cross-compilation toolchain</li></ol>How to use ADB ==
[ o.k. ] Compiler version [ '''aarch64<span id="use-linuxnetwork-gnuconnection-gcc 7.4.1''' ]adb-debugging"></span>=== Use network connection adb debugging ===
<ol start{| class="3wikitable" style="listbackground-style-typecolor:#ffffdc;width: lower-alpha800px;">|-| <libig>Path '''Using the network adb does not require a data cable to connect the generated u-boot deb packagecomputer 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.'''</li></olbig>|}
[ o.k. ] Target directory [ # Make sure that the '''orangepi-build/output/debs/u-bootservice.adb.tcp.port''' ]of the Android system is set to port number 5555
<ol start::{| class="4wikitable" style="list-style-typewidth: lower-alpha800px;"><li>The package name of the generated u|-boot deb package<| console:/li></ol># '''getprop | grep &quot;adb.tcp&quot;'''
[ oservice.kadb. tcp.port] File name : [ '''linux-u-boot-legacy-orangepi3b_1.0.0_arm64.deb5555''' ]|}
<ol start="52" style="list-style-type: lower-alphadecimal;"><li>Compilation timeIf '''service.adb.tcp.port''' is not set, you can use the following command to set the port number of network adb</li></ol>
[ o.k. ] Runtime [ {| class="wikitable" style="width:800px;" |-| console:/ # '''1 minsetprop service.adb.tcp.port 5555''' ]
<ol start="6" style="list-style-typeconsole: 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># '''stop adbd'''
[ o.k. ] Repeat Build Options [ console:/ # '''start adbd'''sudo .|}</build.sh BOARDol><ol start=orangepi3b BRANCH"3" style=legacy BUILD_OPT=u"list-style-boot KERNEL_CONFIGURE=no''' ]type: decimal;"><li>Install adb tool on Ubuntu PC</li>
<ol start{| class="5wikitable" style="list-style-typewidth: decimal800px;"><li>View the u|-boot deb package generated by compilation</li></ol>| test@test:~$ '''sudo apt update'''
test@test:~/orangepi-build$ '''ls output/debs/usudo apt install -boot/y adb'''|}</ol><ol start="4" style="list-style-type: decimal;"><li>Then connect network adb on Ubuntu PC</li>
linux-u-boot-legacy-orangepi3b_1.0.0_arm64.deb <ol start{| class="6wikitable" style="list-style-typewidth: decimal800px;"><li><p>The files contained in the generated u|-boot deb package are as follows</p><ol style="list-style-type| test@test: lower-alpha;"><li>Use ~$ '''adb connect 192.168.1.xxx''' '''(The IP address needs to be changed to the following command to decompress IP address of the deb package</li></ol></li></ol>development board)'''
test@test<p>* daemon not running; starting now at tcp:~5037</orangepi-build$ '''cd output/debs/u-boot'''p>
test@test:~<p>* daemon started successfully</orangepi_build/output/debs/u-boot$ $ '''dpkg -x''' \p>
'''linux-u-boot-legacy-orangepi3b_1connected to 192.0168.0_arm641.deb . (Note that there is a &quot;.&quot; at the end of the command)'''xxx:5555
test@test:~/orangepi_build/output/debs/u-boot$ '''ls'''
linux-u-boot-legacy-orangepi3b_1.0.0_arm64.deb test@test:~$ '''usradb devices'''
<ol start="2" style="list-style-type: lower-alpha;"><li>The decompressed file is as follows</li></ol>List of devices attached
test@test192.168.1.xxx:~5555 device|}</orangepiol><ol start="5" style="list-buildstyle-type: decimal;"><li>Then you can log in to the android system through the adb shell on the Ubuntu PC</output/debs/u-boot$ '''tree usr'''li>
usr{| class="wikitable" style="width:800px;" |-| test@test:~$ '''adb shell'''
└── libconsole:/ #|}</ol><span id="appendix"></span>
├── linux-u-boot-legacy-orangepi3b_1.0.0_arm64= '''Appendix''' =
│   ├── idbloader.img<span id="user-manual-update-history"></span>== User Manual Update History ==
│   ├── rkspi_loader{| class="wikitable" style="width:800px;text-align: center;"|-|'''Version'''|'''Date'''|'''Update Notes'''|-|v0.img1|2023-07-19|initial version|}
│   └── u<span id="image-boot.itbupdate-history"></span>== Image Update History ==
└── u{| class="wikitable" style="width:800px;"|-boot| style="text-align: center;" | '''Date'''| style="text-align: center;" | '''Update Notes'''|-| style="text-align: center;" | 2023-07-19|Orangepi3b_1.0.0_debian_bullseye_desktop_xfce_linux5.10.160.7z
├── LICENSEOrangepi3b_1.0.0_ubuntu_jammy_desktop_xfce_linux5.10.160.7z
├── orangepi-3b-rk3566_defconfigOrangepi3b_1.0.0_ubuntu_focal_desktop_xfce_linux5.10.160.7z
└── platform_installOrangePi3B_RK3566_Android11_v1.sh0.0.tar.gz
3 directories, 6 filesOrangePi3B_RK3566_Android11_lcd_v1.0.0.tar.gz
<ol start="7" style="list-style-type: decimal;"><li>When the orangepi-bulid compilation system compiles the u-boot source code, it will first synchronize the u-boot source code with the u-boot source code of the github server, so if you want to modify the u-boot source code, you first need to turn off the download and update function of the source code '''(This function needs to be fully compiled once u-boot, otherwise it will prompt that the source code of u-boot cannot be found. If the source code compressed package is downloaded from Google cloud disk, there is no such problem, because the source code of u-boot have been cached)''', otherwise the changes made will be reverted, the method is as follows:</li></ol> <blockquote>Set the IGNORE_UPDATES variable in userpatches/config-default.conf to &quot;yes&quot;</blockquote>test@test:~/orangepi-build$ '''vim userpatches/config-default.conf''' IGNORE_UPDATES=&quot;'''yes'''&quot; <ol start="8" style="list-style-type: decimal;"><li><p>When debugging u-boot code, you can use the following method to update u-boot in the Linux image for testing</p><ol style="list-style-type: lower-alpha;"><li>Upload the compiled u-boot deb package to the Linux system of the development board</li></ol></li></ol> test@test:~/orangepi-build$ '''cd output/debs/u-boot''' test@test:~/orangepi_build/output/debs/u-boot$ '''scp \''' '''linux-u-boot-legacy-orangepi3b_1.0.0_arm64.deb''' [mailto:root@192.168.1.xxx:/root root@192.168.1.xxx:/root] <ol start="2" style="list-style-type: lower-alpha;"><li>Then log in to the development board and uninstall the deb package of u-boot installed</li></ol> root@orangepi:~# '''apt purge -y linux-u-boot-orangepi3b-legacy''' <ol start="3" style="list-style-type: lower-alpha;"><li>Install the new u-boot deb package just uploaded</li></ol> root@orangepi:~# '''dpkg -i''' '''linux-u-boot-legacy-orangepi3b_1.0.0_arm64.deb''' <ol start="4" style="list-style-type: lower-alpha;"><li>Then run the nand-sata-install script</li></ol> root@orangepi:~# '''nand-sata-install''' <ol start="5" style="list-style-type: lower-alpha;"><li>Then select '''5 Install/Update the bootloader on SD/eMM''' to update the u-boot in the TF card or '''7 Install/Update the bootloader on SPI Flash''' to update the u-boot in the SPI Flash</li></ol> [[File:pi3b-img381.png|312x152px]] <ol start="6" style="list-style-type: lower-alpha;"><li>After pressing the Enter key, a Warning will pop up first</li></ol> [[File:pi3b-img382.png|309x168px]] <ol start="7" style="list-style-type: lower-alpha;"><li>Press the Enter key again to start updating u-boot, and the following information will be displayed after the update is completed</li></ol> [[File:pi3b-img383.png|244x137px]] <ol start="8" style="list-style-type: lower-alpha;"><li>Then you can restart the development board to test whether the modification of u-boot takes effect</li></ol> <!-- --><ol start="9" style="list-style-type: decimal;"><li><p>Other useful information</p><ol style="list-style-type: lower-alpha;"><li>In the u-boot 2017.09 source code, the defconfig configuration file used by the development board is</li></ol></li></ol> [https://github.com/orangepi-xunlong/u-boot-orangepi/blob/v2017.09-rk3588/configs/orangepi_5_defconfig '''orangepi-build/u-boot/v2017.09-rk3588/configs/orangepi-3b-rk3566_defconfig'''] <ol start="2" style="list-style-type: lower-alpha;"><li>In the u-boot 2017.09 source code, the dts file used by the development board is</li></ol> [https://github.com/orangepi-xunlong/u-boot-orangepi/blob/v2017.09-rk3588/arch/arm/dts/rk3588s-orangepi-5.dts orangepi-build/u-boot/v2017.09-rk3588/arch/arm/dts/rk3566-orangepi-3b.dts] <span id="compile-the-linux-kernel"></span>== Compile the Linux kernel == # Run the build.sh script, remember to add sudo permission test@test:~/orangepi-build$ '''sudo ./build.sh''' <ol start="2" style="list-style-type: decimal;"><li>Select '''Kernel package''',then enter</li></ol> <div class="figure"> [[File:pi3b-img384.png|575x116px|选区_240]] </div><ol start="3" style="list-style-type: decimal;"><li>Then select the model of the development board</li></ol> <div class="figure"> [[File:pi3b-img380.png|576x197px|}4$_5F06}}0R4GU8]OVO}4E]] </div><ol start="4" style="list-style-type: decimal;"><li>Then it will prompt whether to display the kernel configuration interface. If you do not need to modify the kernel configuration, select the first one. If you need to modify the kernel configuration, select the second one.</li></ol> [[File:pi3b-img385.png|576x87px]] <ol start="5" style="list-style-type: decimal;"><li>If you choose to display the kernel configuration menu (the second option) in step 4), the kernel configuration interface opened by '''make menuconfig''' will pop up. At this time, you can directly modify the kernel configuration, save and exit after modification. Yes, after exiting, the kernel source code will be compiled</li></ol> [[File:pi3b-img386.png|462x322px]] <ol style="list-style-type: lower-alpha;"><li>If you do not need to modify the configuration options of the kernel, when running the build.sh script, pass in '''KERNEL_CONFIGURE=no''' to temporarily block the pop-up kernel configuration interface</li></ol> test@test:~/orangepi-build$ '''sudo ./build.sh KERNEL_CONFIGURE=no''' <ol start="2" style="list-style-type: lower-alpha;"><li><p>You can also set '''KERNEL_CONFIGURE=no''' in the '''orangepi-build/userpatches/config-default.conf''' configuration file, which can permanently disable this function</p></li><li><p>If the following error is displayed when compiling the kernel, it is because the terminal interface of the Ubuntu PC is too small to display the '''make menuconfig''' interface. Please maximize the terminal of the Ubuntu PC and run the build.sh script again</p></li></ol> [[File:pi3b-img387.png|574x234px]] <ol start="6" style="list-style-type: decimal;"><li><p>Part of the information prompted when compiling the kernel source code is as follows</p><ol style="list-style-type: lower-alpha;"><li>The version of the Linux kernel source code</li></ol></li></ol> [ o.k. ] Compiling current kernel [ '''5.10.160''' ] <ol start="2" style="list-style-type: lower-alpha;"><li>The version of the cross-compilation toolchain used</li></ol> [ o.k. ] Compiler version [ '''aarch64-none-linux-gnu-gcc 11.2.1''' ] <ol start="3" style="list-style-type: lower-alpha;"><li>The configuration file used by the kernel by default and the path where it is stored</li></ol> [ o.k. ] Using kernel config file [ '''config/kernel/linux-rockchip-rk356x-legacy.config''' ] <ol start="4" style="list-style-type: lower-alpha;"><li>The path of the deb package related to the kernel generated by compiling</li></ol> [ o.k. ] Target directory [ '''orangepi-build/output/debs/''' ] <ol start="5" style="list-style-type: lower-alpha;"><li>The package name of the compiled kernel image deb package</li></ol> [ o.k. ] File name [ '''linux-image-legacy-rockchip-rk356x_1.0.0_arm64.deb''' ] <ol start="6" style="list-style-type: lower-alpha;"><li>The time used for compilation</li></ol> [ o.k. ] Runtime [ '''5 min''' ] <ol start="7" style="list-style-type: lower-alpha;"><li>Finally, the compilation command to repeatedly compile the kernel selected last time will be displayed. Use the following command to start compiling the kernel source code directly without selecting through the graphical interface</li></ol> [ o.k. ] Repeat Build Options [ '''sudo ./build.sh BOARD=orangepi3b BRANCH=legacy BUILD_OPT=kernel KERNEL_CONFIGURE=no''' ] <ol start="7" style="list-style-type: decimal;"><li><p>View the deb package related to the kernel generated by compilation</p><ol style="list-style-type: lower-alpha;"><li><p>'''linux-dtb-legacy-rockchip-rk356x_1.0.0_arm64.deb''' Contains dtb files used by the kernel</p></li><li><p>'''linux-headers-legacy-rockchip-rk356x_1.0.0_arm64.deb''' Include kernel header files</p></li><li><p>'''linux-image-legacy-rockchip-rk356x_1.0.0_arm64.deb''' Contains kernel images and kernel modules</p></li></ol></li></ol> test@test:~/orangepi-build$ '''ls output/debs/linux-*''' output/debs/linux-dtb-legacy-rockchip-rk356x_1.0.0_arm64.deb output/debs/linux-image-legacy-rockchip-rk356x_1.0.0_arm64.deb output/debs/linux-headers-legacy-rockchip-rk356x_1.0.0_arm64.deb <ol start="8" style="list-style-type: decimal;"><li><p>The files contained in the generated Linux-image deb package are as follows</p><ol style="list-style-type: lower-alpha;"><li>Use the following command to decompress the deb package</li></ol></li></ol> test@test:~/orangepi-build$ '''cd output/debs''' test@test:~/orangepi_build/output/debs$ '''mkdir test''' test@test:~/orangepi_build/output/debs$ '''cp \''' '''linux-image-legacy-rockchip-rk356x_1.0.0_arm64.deb test/''' test@test:~/orangepi_build/output/debs$ '''cd test''' test@test:~/orangepi_build/output/debs/test$ '''dpkg -x \''' '''linux-image-legacy-rockchip-rk356x_1.0.0_arm64.deb .''' test@test:~/orangepi_build/output/debs/test$ '''ls''' '''boot etc lib''' linux-image-legacy-rockchip-rk356x_1.0.0_arm64.deb '''usr''' <ol start="2" style="list-style-type: lower-alpha;"><li>The decompressed file is as follows</li></ol> test@test:~/orangepi-build/output/debs/test$ '''tree -L 2''' . ├── boot │   ├── config-5.10.160-rockchip-rk356x │   ├── System.map-5.10.160-rockchip-rk356x │   └── vmlinuz-5.10.160-rockchip-rk356x ├── etc │   └── kernel ├── lib │   └── modules ├── linux-image-legacy-rockchip-rk356x_1.0.0_arm64.deb └── usr ├── lib └── share <ol start="9" style="list-style-type: decimal;"><li>The orangepi-bulid compilation system will first synchronize the Linux kernel source code with the Linux kernel source code of the github server when compiling the Linux kernel source code, so if you want to modify the Linux kernel source code, you first need to turn off the update function of the source code '''(you need to compile it once This function can only be turned off after the Linux kernel source code, otherwise it will prompt that the source code of the Linux kernel cannot be found. If the source code compressed package downloaded from Google cloud disk, there is no such problem, because the source code of Linux has been cached)''', otherwise the The changes made will be reverted as follows:</li></ol> <blockquote>Set the IGNORE_UPDATES variable in '''userpatches/config-default.conf''' to &quot;yes&quot;</blockquote>test@test:~/orangepi-build$ '''vim userpatches/config-default.conf''' IGNORE_UPDATES=&quot;'''yes'''&quot; <ol start="10" style="list-style-type: decimal;"><li><p>If the kernel has been modified, the following method can be used to update the kernel and kernel modules of the development board Linux system</p><ol style="list-style-type: lower-alpha;"><li>Upload the deb package of the compiled Linux kernel to the Linux system of the development board</li></ol></li></ol> test@test:~/orangepi-build$ '''cd output/debs''' test@test:~/orangepi-build/output/debs$ '''scp \''' '''linux-image-legacy-rockchip-rk356x_1.0.0_arm64.deb root@192.168.1.xxx:/root''' <ol start="2" style="list-style-type: lower-alpha;"><li>Then log in to the development board and uninstall the deb package of the installed Linux kernel</li></ol> root@orangepi:~# '''apt purge -y linux-image-legacy-rockchip-rk356x''' <ol start="3" style="list-style-type: lower-alpha;"><li>Install the deb package of the new Linux kernel just uploaded</li></ol> root@orangepi:~# '''dpkg -i linux-image-legacy-rockchip-rk356x_1.0.0_arm64.deb''' <ol start="4" style="list-style-type: lower-alpha;"><li>Then restart the development board, and then check whether the kernel-related modifications have taken effect</li></ol> root@orangepi:~# '''reboot''' <ol start="11" style="list-style-type: decimal;"><li><p>Other useful information</p><ol style="list-style-type: lower-alpha;"><li>The storage location of the kernel configuration file is as follows, please do not go to the kernel source code to find the kernel configuration file used by the development board</li></ol></li></ol> [https://github.com/orangepi-xunlong/orangepi-build/blob/next/external/config/kernel/linux-rockchip-rk3588-legacy.config orangepi-build/external/config/kernel/linux-rockchip-rk356x-legacy.config] <ol start="2" style="list-style-type: lower-alpha;"><li>The location of the dts file used by the development board is</li></ol> [https://github.com/orangepi-xunlong/linux-orangepi/blob/orange-pi-5.10-rk3588/arch/arm64/boot/dts/rockchip/rk3588s-orangepi-5.dts orangepi-build/kernel/orange-pi-5.10-rk35xx/arch/arm64/boot/dts/rockchip/rk3566-orangepi-3b.dts] <span id="compile-rootfs"></span>== Compile rootfs == # Run the build.sh script, remember to add sudo permission test@test:~/orangepi-build$ '''sudo ./build.sh''' <ol start="2" style="list-style-type: decimal;"><li>Select '''Rootfs and all deb packages''',then enter</li></ol> <div class="figure"> [[File:pi3b-img388.png|576x119px|选区_241]] </div><ol start="3" style="list-style-type: decimal;"><li>Then select the model of the development board</li></ol> <div class="figure"> [[File:pi3b-img380.png|576x197px|}4$_5F06}}0R4GU8]OVO}4E]] </div><ol start="4" style="list-style-type: decimal;"><li>Then select the type of rootfs</li></ol> [[File:pi3b-img389.png|575x86px]] <ol start="5" style="list-style-type: decimal;"><li><p>Then select the type of image</p><ol style="list-style-type: lower-alpha;"><li><p>'''Image with console interface (server)''' Indicates the image of the server version, which is relatively small</p></li><li><p>'''Image with desktop environment''' Indicates a image with a desktop, which is relatively large</p></li></ol></li></ol> <div class="figure"> [[File:pi3b-img390.png|576x75px|选区_245]] </div><ol start="6" style="list-style-type: decimal;"><li>If you are compiling the image of the server version, you can also choose to compile the Standard version or the Minimal version. The pre-installed software of the Minimal version will be much less than that of the Standard version '''(please do not choose the Minimal version if there is no special requirement, because many things are not pre-installed by default. Some functions may not be available)'''</li></ol> <div class="figure"> [[File:pi3b-img391.png|576x78px|选区_397]] </div><ol start="7" style="list-style-type: decimal;"><li>If you are compiling the image of the desktop version, you also need to select the type of desktop environment. Currently, Ubuntu Jammy mainly maintains XFCE and Gnome desktops, Ubuntu Focal only maintains XFCE desktops, and Debian Bullseye mainly maintains XFCE and KDE desktops</li></ol> <div class="figure"> [[File:pi3b-img392.png|575x99px|Selection_001]] </div>[[File:pi3b-img393.png|576x74px]] You can then select additional packages that need to be installed. Please press the Enter key to skip directly here. [[File:pi3b-img394.png|575x264px]] <ol start="8" style="list-style-type: decimal;"><li><p>Then it will start to compile rootfs, and some of the information prompted during compilation are as follows</p><ol style="list-style-type: lower-alpha;"><li>The type of rootfs</li></ol></li></ol> [ o.k. ] local not found [ Creating new rootfs cache for '''jammy'''] <ol start="2" style="list-style-type: lower-alpha;"><li>The storage path of the compiled rootfs compressed package</li></ol> [ o.k. ] Target directory [ '''external/cache/rootfs''' ] <ol start="3" style="list-style-type: lower-alpha;"><li>The name of the rootfs compressed package generated by compilation</li></ol> [ o.k. ] File name [ '''jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4''' ] <ol start="4" style="list-style-type: lower-alpha;"><li>The time used for compilation</li></ol> [ o.k. ] Runtime [ '''13 min''' ] <ol start="9" style="list-style-type: decimal;"><li><p>View the rootfs compressed package generated by compilation</p><ol style="list-style-type: lower-alpha;"><li><p>'''jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4''' is the rootfs compressed package, the meaning of each field of the name is</p><ol style="list-style-type: lower-alpha;"><li><p>'''jammy''' indicates the type of Linux distribution of rootfs</p></li><li><p>'''xfce''' means rootfs is the type of desktop version, if it is '''cli''', it means the type of server version</p></li><li><p>'''arm64''' represents the architecture type of rootfs</p></li><li><p>'''f930ff6ebbac1a72108a2e100762b18f''' is the MD5 hash value generated by the package names of all software packages installed by rootfs. As long as the list of software packages installed by rootfs is not modified, this value will not change. The compilation script will use this MD5 hash value to generate Determine whether rootfs needs to be recompiled</p></li></ol></li><li><p>'''jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4.list''' lists the package names of all packages installed by rootfs</p></li></ol></li></ol> test@test:~/orangepi-build$ '''ls external/cache/rootfs/''' '''jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4''' jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4.current jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4.list <ol start="10" style="list-style-type: decimal;"><li>If the required rootfs already exists under '''external/cache/rootfs''', then compiling rootfs again will directly skip the compilation process and will not restart the compilation. When compiling the image, it will also go to '''external/cache/rootfs''' to find out whether it has If there is rootfs available in the cache, use it directly, which can save a lot of download and compilation time.</li></ol> <span id="compile-linux-image"></span>== Compile Linux image == # Run the build.sh script, remember to add sudo permission test@test:~/orangepi-build$ '''sudo ./build.sh''' <ol start="2" style="list-style-type: decimal;"><li>Select '''Full OS image for flashing''',then enter</li></ol> <div class="figure"> [[File:pi3b-img395.png|576x128px|选区_242]] </div><ol start="3" style="list-style-type: decimal;"><li>Then select the model of the development board</li></ol> <div class="figure"> [[File:pi3b-img380.png|576x197px|}4$_5F06}}0R4GU8]OVO}4E]] </div><ol start="4" style="list-style-type: decimal;"><li>Then select the type of rootfs</li></ol> [[File:pi3b-img389.png|575x86px]] <ol start="5" style="list-style-type: decimal;"><li><p>Then select the type of image</p><ol style="list-style-type: lower-alpha;"><li><p>'''Image with console interface (server)''' Indicates the image of the server version, which is relatively small</p></li><li><p>'''Image with desktop environment''' Indicates a image with a desktop, which is relatively large</p></li></ol></li></ol> <div class="figure"> [[File:pi3b-img390.png|576x75px|选区_245]] </div><ol start="6" style="list-style-type: decimal;"><li>If you are compiling the image of the server version, you can also choose to compile the Standard version or the Minimal version. The pre-installed software of the Minimal version will be much less than that of the Standard version '''(please do not choose the Minimal version if there is no special requirement, because many things are not pre-installed by default. Some functions may not be available)'''</li></ol> <div class="figure"> [[File:pi3b-img391.png|569x77px|选区_397]] </div><ol start="7" style="list-style-type: decimal;"><li>If you are compiling the image of the desktop version, you also need to select the type of desktop environment. Currently, Ubuntu Jammy mainly maintains XFCE and Gnome desktops, Ubuntu Focal only maintains XFCE desktops, and Debian Bullseye mainly maintains XFCE and KDE desktops</li></ol> <div class="figure"> [[File:pi3b-img392.png|575x99px|Selection_001]] </div>[[File:pi3b-img393.png|576x74px]] You can then select additional packages that need to be installed. Please press the Enter key to skip directly here. [[File:pi3b-img394.png|575x264px]] <ol start="8" style="list-style-type: decimal;"><li><p>Then it will start to compile the Linux image. The general process of compilation is as follows</p><p>a. Initialize the compilation environment of Ubuntu PC and install the software packages required for the compilation process</p><p>b. Download the source code of u-boot and Linux kernel (if cached, only update the code)</p><p>c. Compile u-boot source code and generate u-boot deb package</p><p>d. Compile the Linux source code and generate Linux-related deb packages</p><p>e. Make the deb package of Linux firmware</p><p>f. Make the deb package of the orangepi-config tool</p><p>g. Create a deb package supported by the board</p><p>h. If you are compiling the desktop image, you will also create desktop-related deb packages</p><p>i. Check whether the rootfs has been cached, if not, recreate the rootfs, if it has been cached, directly decompress and use</p><p>j. Install the previously generated deb package into rootfs</p><p>k. Make some specific settings for different development boards and different types of images, such as pre-installing additional software packages, modifying system configuration, etc.</p><p>l. Then make an image file and format the partition, the default type is ext4</p><p>m. Then copy the configured rootfs to the mirrored partition</p><p>n. Then update initramfs</p><p>o. Finally, write the bin file of u-boot into the image through the dd command</p></li><li><p>After compiling the image, the following information will be prompted</p><ol style="list-style-type: lower-alpha;"><li>The storage path of the compiled image</li></ol></li></ol> [ o.k. ] Done building [ '''output/images/Orangepi3b_1.0.0_debian_bullseye_desktop_xfce_linux5.10.160/Orangepi3b_1.0.0_debian_bullseye_desktop_xfce_linux5.10.160.img''' ] <ol start="2" style="list-style-type: lower-alpha;"><li>Compilation time</li></ol> '''[ o.k. ] Runtime [ 19 min ]''' <ol style="list-style-type: lower-alpha;"><li>Repeat the command to compile the image, and use the following command to start compiling the image directly without selecting through the graphical interface</li></ol> [ o.k. ] Repeat Build Options [ '''sudo ./build.sh BOARD=orangepi3b BRANCH=legacy BUILD_OPT=image RELEASE=bullseye BUILD_MINIMAL=no BUILD_DESKTOP=no KERNEL_CONFIGURE=yes''' ] <span id="android-11-operating-system-instructions"></span> = '''Android 11 operating system instructions''' = <span id="supported-android-versions"></span>== Supported Android versions == {| class="wikitable"|-|'''Android version'''|'''Kernel version'''|-|'''Android 11'''|'''Linux4.19'''|} <span id="android-function-adaptation"></span>== Android Function Adaptation == {| class="wikitable"|-|'''Functions'''|'''Android 11'''|-|'''USB2.0x3'''|'''OK'''|-|'''USB3.0x1'''|'''OK'''|-|'''M.2 NVMe SSD boot'''|'''OK'''|-|'''WIFI'''|'''OK'''|-|'''Bluetooth'''|'''OK'''|-|'''GPIO(40pin)'''|'''OK'''|-|'''UART(40pin)'''|'''OK'''|-|'''SPI(40pin)'''|'''OK'''|-|'''I2C(40pin)'''|'''OK'''|-|'''PWM(40pin)'''|'''OK'''|-|'''PWM fan interface'''|'''OK'''|-|'''3pin Debugging serial port'''|'''OK'''|-|'''EMMC'''|'''OK'''|-|'''TF card boot'''|'''OK'''|-|'''HDMI video'''|'''OK'''|-|'''HDMI Audio'''|'''OK'''|-|'''LCD'''|'''OK'''|-|'''eDP display'''|'''OK'''|-|'''Gigabit network port'''|'''OK'''|-|'''Network port status indicator'''|'''OK'''|-|'''Headphone playback'''|'''OK'''|-|'''Headphone recording'''|'''OK'''|-|'''LED Light'''|'''OK'''|-|'''GPU'''|'''OK'''|-|'''NPU'''|'''OK'''|-|'''VPU'''|'''OK'''|-|'''RTC'''|'''OK'''|} <span id="wifi-connection-test-method"></span>== WIFI connection test method == # First click enter '''Setting''' [[File:pi3b-img396.png|549x228px]] <ol start="2" style="list-style-type: decimal;"><li>Then select '''Network &amp; internet'''</li></ol> [[File:pi3b-img397.png|565x120px]] <ol start="3" style="list-style-type: decimal;"><li>Then select '''Wi-Fi'''</li></ol> [[File:pi3b-img398.png|561x99px]] <ol start="4" style="list-style-type: decimal;"><li>Then turn on the '''Wi-Fi''' switch</li></ol> [[File:pi3b-img399.png|560x167px]] <ol start="5" style="list-style-type: decimal;"><li>After turning on '''Wi-Fi''', if everything is normal, you can scan for nearby Wi-Fi hotspots</li></ol> [[File:pi3b-img400.png|561x166px]] <ol start="6" style="list-style-type: decimal;"><li>Then select the Wi-Fi you want to connect to, and the password input interface shown in the figure below will pop up</li></ol> [[File:pi3b-img401.png|553x237px]] <ol start="7" style="list-style-type: decimal;"><li>Then use the keyboard to enter the password corresponding to Wi-Fi, and then use the mouse to click the Enter button in the virtual keyboard to start connecting to Wi-Fi</li></ol> [[File:pi3b-img402.png|553x232px]] <ol start="8" style="list-style-type: decimal;"><li>After the Wi-Fi connection is successful, the display is as shown in the figure below:</li></ol> [[File:pi3b-img403.png|558x102px]] <span id="how-to-use-wi-fi-hotspot"></span>== How to use Wi-Fi hotspot == # First, please make sure that the Ethernet port is connected to the network cable and can access the Internet normally# Then select '''Settings''' [[File:pi3b-img396.png|549x228px]] <ol start="3" style="list-style-type: decimal;"><li>Then select '''Network &amp; internet'''</li></ol> [[File:pi3b-img397.png|565x120px]] <ol start="4" style="list-style-type: decimal;"><li>Then select '''Hotspot &amp; tethering'''</li></ol> [[File:pi3b-img404.png|549x173px]] <ol start="5" style="list-style-type: decimal;"><li>Then select '''Wi-Fi hotspot'''</li></ol> [[File:pi3b-img405.png|548x104px]] <ol start="6" style="list-style-type: decimal;"><li>Then turn on the '''Wi-Fi hotspot''', you can also see the name and password of the generated hotspot in the figure below, remember them, and use them when connecting to the hotspot (if you need to modify the name and password of the hotspot, you need to turn off the Wi-Fi first -Fi hotspot before modification)</li></ol> [[File:pi3b-img406.png|551x158px]] <ol start="7" style="list-style-type: decimal;"><li>At this time, you can take out your mobile phone. If everything is normal, you can find the WIFI hotspot with the same name ('''here AndroidAP_6953''') displayed under the '''Hotspot name''' in the above picture in the WI-FI list searched by the mobile phone. Then you can click '''AndroidAP_6953''' to connect to the hotspot, and the password can be seen under the '''Hotspot password''' in the above picture</li></ol> [[File:pi3b-img407.png|313x238px]] <ol start="8" style="list-style-type: decimal;"><li>After the connection is successful, it will be displayed as shown in the figure below (the interface of different mobile phones will be different, the specific interface is subject to the display of your mobile phone). At this point, you can open a webpage on your mobile phone to see if you can access the Internet. If you can open the webpage normally, it means that the '''WI-FI Hotspot''' of the development board can be used normally.</li></ol> [[File:pi3b-img408.png|327x165px]] <span id="bluetooth-test-method"></span>== Bluetooth test method == # First click enter '''Setting''' [[File:pi3b-img396.png|549x228px]] <ol start="2" style="list-style-type: decimal;"><li>Then select '''Connected devices'''</li></ol> [[File:pi3b-img409.png|547x115px]] <ol start="3" style="list-style-type: decimal;"><li>Then click '''Pair new device''' to turn on Bluetooth and start scanning the surrounding Bluetooth devices</li></ol> [[File:pi3b-img410.png|547x126px]] <ol start="4" style="list-style-type: decimal;"><li>The searched Bluetooth devices will be displayed under '''Available devices'''</li></ol> [[File:pi3b-img411.png|559x279px]] <ol start="5" style="list-style-type: decimal;"><li>Then click the Bluetooth device you want to connect to start pairing. When the following interface pops up, please use the mouse to select the '''Pair''' option</li></ol> [[File:pi3b-img412.png|522x212px]] <ol start="6" style="list-style-type: decimal;"><li>The test here is the configuration process of the development board and the Bluetooth of the Android mobile phone. At this time, the following confirmation interface will pop up on the mobile phone. After clicking the pairing button on the mobile phone, the pairing process will start</li></ol> [[File:pi3b-img413.png|236x273px]] <ol start="7" style="list-style-type: decimal;"><li>After the pairing is completed, you can see the paired Bluetooth device as shown in the figure below</li></ol> [[File:pi3b-img414.png|545x178px]] <ol start="8" style="list-style-type: decimal;"><li>At this time, you can use the Bluetooth of your mobile phone to send a picture to the development board. After sending, you can see the following confirmation interface in the Android system of the development board, and then click '''Accept''' to start receiving the picture sent by the mobile phone.</li></ol> [[File:pi3b-img415.png|559x238px]] <ol start="9" style="list-style-type: decimal;"><li>You can open the '''Download''' directory in the file manager to view the pictures received by the Android system Bluetooth of the development board</li></ol> [[File:pi3b-img416.png|573x97px]] <span id="how-to-use-raspberry-pi-5-inch-screen"></span>== How to use Raspberry Pi 5-inch screen == '''Please make sure that the image used is the following two versions of the image:''' '''OrangePi3B_RK3566_Android11_lcd_v1.x.x.img''' '''OrangePi3B_RK3566_Android11_spi-nvme_lcd_v1.x.x.img''' # The screen needs to be assembled first, please refer to [[\l|'''the assembly method of the Raspberry Pi 5-inch screen''']]# Connect the Type-C power supply to the board and power it on. After the system starts, you can see the screen display as shown in the figure below [[File:pi3b-img417.png|516x332px]] <span id="pin-interface-gpio-uart-spi-and-pwm-test"></span>== 40pin interface GPIO, UART, SPI and PWM test == <span id="pin-gpio-port-test-2"></span>=== 40pin GPIO port test === # First click on the wiringOP icon to open the wiringOP APP [[File:pi3b-img418.png|576x210px]] <ol start="2" style="list-style-type: decimal;"><li>The main interface of wiringOP APP is displayed as shown in the figure below, and then click the '''GPIO_TEST''' button to open the GPIO test interface</li></ol> [[File:pi3b-img419.png|575x148px]] <ol start="3" style="list-style-type: decimal;"><li>The GPIO test interface is shown in the figure below. The two rows of '''CheckBox''' buttons on the left are in one-to-one correspondence with the 40pin pins. When the '''CheckBox''' button is checked, the corresponding GPIO pin will be set to '''OUT''' mode, and the pin level will be set to high level; when the checkbox is unchecked, the GPIO pin level will be set to low level; When the '''GPIO READALL''' button is pressed, information such as wPi number, GPIO mode, and pin level can be obtained; when the '''BLINK ALL GPIO''' button is clicked, the program will control the 28 GPIO ports to continuously switch between high and low levels</li></ol> [[File:pi3b-img420.png|576x303px]] <ol start="4" style="list-style-type: decimal;"><li>Then click the '''GPIO READALL''' button, the output information is as shown in the figure below:</li></ol> [[File:pi3b-img421.png|575x323px]] <ol start="5" style="list-style-type: decimal;"><li>There are a total of 28 GPIO ports in the 40pins of the development board that can be used. The following uses pin 7—the corresponding GPIO is GPIO4_A4—the corresponding wPi serial number is 2—as an example to demonstrate how to set the high and low levels of the GPIO port. First click the '''CheckBox''' button corresponding to pin 7. When the button is selected, pin 7 will be set to high level. After setting, you can use a multimeter to measure the voltage value of the pin. If it is 3.3v, it means setting high level success</li></ol> [[File:pi3b-img422.png|241x326px]] <ol start="6" style="list-style-type: decimal;"><li>Then click the '''GPIO READALL''' button, you can see that the current pin 7 mode is '''OUT''', and the pin level is high</li></ol> [[File:pi3b-img423.png|574x301px]] <ol start="7" style="list-style-type: decimal;"><li>Click the '''CheckBox''' button in the figure below again to cancel the check status. Pin 7 will be set to low level. After setting, you can use a multimeter to measure the voltage value of the pin. If it is '''0v''', it means that the low level is set successfully.</li></ol> [[File:pi3b-img424.png|250x345px]] <ol start="8" style="list-style-type: decimal;"><li>Then click the '''GPIO READALL''' button, you can see that the current pin 7 mode is OUT, and the pin level is low</li></ol> [[File:pi3b-img425.png|576x300px]] <span id="pin-uart-test-1"></span>=== 40pin UART test === # UART7 and UART9 are enabled by default in Android. The position of the 40pin is shown in the figure below, and the corresponding device nodes are '''/dev/ttyS7''' and '''/dev/ttyS9''' respectively [[File:pi3b-img269.png|376x92px]] <ol start="2" style="list-style-type: decimal;"><li>First click on the wiringOP icon to open the wiringOP APP</li></ol> [[File:pi3b-img418.png|576x210px]] <ol start="3" style="list-style-type: decimal;"><li>The main interface of wiringOP APP is displayed as shown in the figure below, and then click the '''UART_TEST''' button to open the UART test interface</li></ol> [[File:pi3b-img426.png|575x156px]] <ol start="4" style="list-style-type: decimal;"><li>The serial port test interface of the APP is shown in the figure below</li></ol> [[File:pi3b-img427.png|576x324px]] <ol start="5" style="list-style-type: decimal;"><li>Take the test of '''UART7''' as an example below, select the '''/dev/ttyS7''' node in the selection box, enter the baud rate you want to set in the edit box, and then click the '''OPEN''' button to open the /dev/ttyS7 node. After the opening is successful, the '''OPEN''' button becomes unselectable, and the '''CLOSE''' button and '''SEND''' button become selectable</li></ol> [[File:pi3b-img428.png|574x166px]] <ol start="6" style="list-style-type: decimal;"><li>Then use Dupont wire to short the RXD and TXD pins of uart7</li></ol> [[File:pi3b-img429.png|418x103px]] <ol start="7" style="list-style-type: decimal;"><li>Then you can enter a character in the send edit box below, and click the '''SEND''' button to start sending</li></ol> [[File:pi3b-img430.png|575x161px]] <ol start="8" style="list-style-type: decimal;"><li>If everything is normal, the received string will be displayed in the receiving box</li></ol> [[File:pi3b-img431.png|574x164px]] <span id="pin-spi-test-2"></span>=== 40pin SPI test === # According to the schematic diagram of the 40pin interface, the spi available for Orange Pi 3B is spi3 [[File:pi3b-img264.png|577x193px]] <ol start="2" style="list-style-type: decimal;"><li>Here, the SPI interface is tested through the w25q64 module. First, the w25q64 device is connected to the SPI3 interface</li></ol> [[File:pi3b-img432.png|373x215px]] <ol start="3" style="list-style-type: decimal;"><li>Then click the wiringOP icon to open the wiringOP APP</li></ol> [[File:pi3b-img418.png|576x210px]] <ol start="4" style="list-style-type: decimal;"><li>The main interface of wiringOP APP is displayed as shown in the figure below, click the SPI_TEST button to open the SPI test interface</li></ol> [[File:pi3b-img433.png|574x149px]] <ol start="5" style="list-style-type: decimal;"><li>Then click the '''OPEN''' button to initialize the SPI</li></ol> [[File:pi3b-img434.png|576x241px]] <ol start="6" style="list-style-type: decimal;"><li>Then fill in the bytes that need to be sent, such as reading the ID information of w25q64, fill in the address 0x9f in data[0], and then click the '''TRANSFER''' button</li></ol> [[File:pi3b-img435.png|572x216px]] <ol start="7" style="list-style-type: decimal;"><li>Finally, the APP will display the read ID information</li></ol> [[File:pi3b-img436.png|575x296px]] <ol start="8" style="list-style-type: decimal;"><li>The MANUFACTURER ID of the w25q64 module is EFh, and the Device ID is 4017h, corresponding to the value read above (h stands for hexadecimal)</li></ol> [[File:pi3b-img437.png|374x126px]] <span id="pin-pwm-test"></span>=== 40pin PWM test === # Android enables '''PWM11''' by default, and the corresponding pin is located at 40pin as shown in the figure below [[File:pi3b-img438.png|334x107px]] <ol start="2" style="list-style-type: decimal;"><li>First click on the wiringOP icon to open the wiringOP APP</li></ol> [[File:pi3b-img418.png|576x210px]] <ol start="3" style="list-style-type: decimal;"><li>Then click the '''PWM_TEST''' button on the main interface of wiringOP to enter the PWM test interface</li></ol> [[File:pi3b-img439.png|575x150px]] <ol start="4" style="list-style-type: decimal;"><li>The base address corresponding to PWM11 is '''fe6f0030''', here pwmchip0 shows '''fdd70020.pwm''' on the right, then you need to click the drop-down option to select other pwmchips until '''febf0030.pwm''' is displayed on the right</li></ol> [[File:pi3b-img440.png|576x178px]] <ol start="5" style="list-style-type: decimal;"><li>When the drop-down option selects '''pwmchip3''', the corresponding base address of PWM11 is '''fe6f0030''' on the right</li></ol> [[File:pi3b-img441.png|574x161px]] <ol start="6" style="list-style-type: decimal;"><li>Then confirm the PWM channel, the default is channel 0, and confirm the PWM cycle, the default configuration is '''50000ns''', converted to PWM frequency is '''20KHz''', you can modify it yourself, click the '''EXPORT''' button to export '''PWM11'''</li></ol> [[File:pi3b-img442.png|575x160px]] <ol start="7" style="list-style-type: decimal;"><li>Then drag the drag bar below to change the PWM duty cycle, and then check Enable to output the PWM waveform</li></ol> [[File:pi3b-img443.png|575x167px]] <ol start="8" style="list-style-type: decimal;"><li>Then use an oscilloscope to measure the No. 32 pin in the 40pin of the development board, and you can see the following waveform</li></ol> [[File:pi3b-img444.png|460x276px]] <span id="how-to-use-adb"></span>== How to use ADB == <span id="use-network-connection-adb-debugging"></span>=== Use network connection adb debugging === '''Using the network adb does not require a data cable to connect the computer and the development board, but to communicate through the network, so first make sure that the wired or wireless network of the development board is connected, and then obtain the IP address of the development board, which will be used later.''' # Make sure that the '''service.adb.tcp.port''' of the Android system is set to port number 5555 console:/ # '''getprop | grep &quot;adb.tcp&quot;''' [service.adb.tcp.port]: ['''5555'''] <ol start="2" style="list-style-type: decimal;"><li>If '''service.adb.tcp.port''' is not set, you can use the following command to set the port number of network adb</li></ol> console:/ # '''setprop service.adb.tcp.port 5555''' console:/ # '''stop adbd''' console:/ # '''start adbd''' <ol start="3" style="list-style-type: decimal;"><li>Install adb tool on Ubuntu PC</li></ol> test@test:~$ '''sudo apt update''' test@test:~$ '''sudo apt install -y adb''' <ol start="4" style="list-style-type: decimal;"><li>Then connect network adb on Ubuntu PC</li></ol> test@test:~$ '''adb connect 192.168.1.xxx''' '''(The IP address needs to be changed to the IP address of the development board)''' * daemon not running; starting now at tcp:5037 * daemon started successfully connected to 192.168.1.xxx:5555 test@test:~$ '''adb devices''' List of devices attached 192.168.1.xxx:5555 device <ol start="5" style="list-style-type: decimal;"><li>Then you can log in to the android system through the adb shell on the Ubuntu PC</li></ol> test@test:~$ '''adb shell''' console:/ # <span id="appendix"></span> = '''Appendix''' = <span id="user-manual-update-history"></span>== User Manual Update History == {| class="wikitable"|-|'''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_v1nvme_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>
|}

Navigation menu