Orange Pi 3B的基本特性
什么是 Orange Pi 3B
Orange Pi 3B采用了瑞芯微RK3566四核64位Cortex-A55处理器,采用的22nm工艺,主频最高可达1.8GHz,集成ARM Mali-G52 GPU,内嵌高性能2D图像加速模块,内置0.8Tops算力的AI加速器NPU,可选2GB、4GB或者8GB内存,具有高达4K显示处理能力。
Orange Pi 3B引出了相当丰富的接口,包括HDMI输出、M.2 PCIe2.0x1、千兆网口、USB2.0、USB3.0接口和40pin扩展排针等。可广泛适用于高端平板、边缘计算、人工智能、云计算、AR/VR、智能安防、智能家居等领域,覆盖 AIoT各个行业。
Orange Pi 3B支持Android11、Ubuntu22.04、Ubuntu20.04、Debian11、Debian12、开源鸿蒙4.0 Beta1、Orange Pi OS(Arch)、基于开源鸿蒙的Orange Pi OS(OH)等操作系统。
Orange Pi 3B的用途
我们可以用它实现:
- 一台Linux桌面计算机
- 一台Linux网络服务器
- Android平板
- Android游戏机等
当然还有其他更多的功能,依托强大的生态系统以及各式各样的扩展配件,Orange Pi可以帮助用户轻松实现从创意到原型再到批量生产的交付,是创客、梦想家、业余爱好者的理想创意平台。 |
Orange Pi 3B的硬件规格
硬件规格参数
| |
主控芯片 |
Rockchip RK3566 |
CPU |
四核 64 位 Cortex-A55 处理器,22nm 先进工艺,主频最高 1.8GHz |
GPU |
• ARM Mali G52 2EE图形处理器 • 支持OpenGL ES 1.1/2.0/3.2,OpenCL 2.0,Vulkan 1.1 • 内嵌高性能2D加速硬件 |
NPU |
• 集成 RKNN NPU AI 加速器,0.8Tops@INT8 性能 • 支持 C affe/TensorFlow/TFLite/ONNX/PyTorch/Keras/Darknet 架构模型一键转换 |
VPU |
• 4K@60fps H.265/H.264/VP9 视频解码 • 1080P@100fps H.265 视频编码 • 1080P@60fpsH.264 视频编码 |
PMU |
Rockchip RK809-5 |
内存 |
2GB/4GB/8GB (LPDDR4/4x) |
存储 |
• 支持eMMC模块:16GB/32GB/64GB/128GB • SPI Flash: 16MB/32MB • M.2 M-KEY插槽:SATA3 或者 PCIe2.0 NVME SSD • TF卡槽 |
Wi-Fi+蓝牙 |
Wi-Fi 5+BT 5.0,BLE(20U5622) |
以太网收发器 |
10/100/1000Mbps以太网(板载PHY芯片:YT8531C) |
显示 |
• 1x HDMI TX 2.0,最大支持4K@60FPS • 1xMIPI DSI 2 Lane • eDP1.3 |
摄像头 |
1xMIPI CSI 2 Lane摄像头接口 |
USB |
• 1xUSB 2.0 支持Device或HOST模式 • 1xUSB 3.0 HOST • 2xUSB 2.0 HOST |
音频 |
3.5mm耳机孔音频输入/输出 |
按键 |
1x MaskROM键,1xRESET键,1 xPOWER键 |
FAN |
2Pin 1.25mm规格的5V风扇接口 |
RTC |
2Pin 1.25mm规格的备用电池接口 |
40Pin |
40Pin功能扩展接口,支持以下接口类型: GPIO、UART、I2C、SPI、PWM |
电源 |
Type-C 5V3A |
支持的操作系统 |
Android11、Ubuntu22 .04、Ubuntu20.04、Debian11、Debian12、开源鸿蒙4.0 Beta1、Orange Pi OS(Arch)、基于开源鸿蒙的Orange Pi OS(OH)等操作系统。 |
外观规格介绍
| |
PCB尺寸 |
85mm x 56mm x 17mm |
重量 |
49g |
Orange Pi 3B的顶层视图和底层视图
顶层视图:
底层视图:
Orange Pi 3B的接口详情图
四个定位孔的直径都是3.0mm,M.2 PICE设备固定孔直径为3.5mm。 |
开发板使用介绍
准备需要的配件
TF卡,最小16GB容量(推荐32GB或以上)的class10级或以上的高速闪迪卡
TF卡读卡器,用于将镜像烧录到TF卡中
HDMI接口的显示器
HDMI转HDMI连接线,用于将开发板连接到HDMI显示器或者电视进行显示
注意,如果想接4K显示器,请确保HDMI线支持4K视频输出。
电源适配器,Orange Pi 3B建议使用5V/3A或者5V/4A的Type-C电源供电
USB接口的鼠标和键盘,只要是标准USB接口的鼠标和键盘都可以,鼠标和键盘可以用来控制Orange Pi开发板
USB摄像头
5V的散热风扇。如下图所示,开发板上有用于接散热风扇的接口,接口规格为2pin 1.25mm间距
开发板上的风扇可以通过PWM来调节转速和开关。
百兆或者千兆网线,用于将开发板连接到因特网
USB2.0公对公数据线,用于烧录镜像到eMMC、NVMe SSD等功能
3.3V的USB转TTL模块和杜邦线,使用串口调试功能时,需要USB转TTL模块和杜邦线来连接开发板和电脑
安装有Ubuntu和Windows操作系统的个人电脑
1 Ubuntu22.04 PC 可选,用于编译Linux源码
2 Windows PC 用于烧录Android和Linux镜像
下载开发板的镜像和相关的资料
- 中文版资料的下载网址为:
英文版资料的下载网址为:
资料主要包含
Android源码:保存在百度云盘和谷歌网盘上
Linux源码:保存在Github上
用户手册和原理图:保存在百度云盘和谷歌网盘上
官方工具:主要包括开发板使用过程中需要用到的软件
Android镜像:保存在百度云盘和谷歌网盘上
Ubuntu镜像:保存在百度云盘和谷歌网盘上
Debian镜像:保存在百度云盘和谷歌网盘上
Orange Pi OS镜像:保存在百度云盘和谷歌网盘上
OpenHarmony镜像:保存在百度云盘和谷歌网盘上
基于Windows PC将Linux镜像烧写到TF卡的方法
注意,这里说的Linux镜像具体指的是从Orange Pi资料下载页面下载的Debian、Ubuntu这样的Linux发行版镜像。 |
使用balenaEtcher烧录Linux镜像的方法
- 首先准备一张16GB或更大容量的TF卡,TF卡的传输速度必须为class10级或class10级以上,建议使用闪迪等品牌的TF卡
- 然后使用读卡器把TF卡插入电脑
- 从Orange Pi的资料下载页面下载想要烧录的Linux操作系统镜像文件压缩包,然后使用解压软件解压,解压后的文件中,以”.img”结尾的文件就是操作系统的镜像文件,大小一般都在2GB以上。
- 然后下载Linux镜像的烧录软件——balenaEtcher,下载地址为:
进入balenaEtcher下载页面后,点击绿色的下载按钮会跳到软件下载的地方
然后可以选择下载balenaEtcher的Portable版本的软件,Portable版本无需安装,双击打开就可以使用
如果下载的是需要安装版本的balenaEtcher,请先安装再使用。如果下载的Portable版本balenaEtcher,直接双击打开即可,打开后的balenaEtcher界面如下图所示:
打开balenaEtcher时如果提示下面的错误:
请选择balenaEtcher后点击右键,然后选择以管理员身份运行。
使用balenaEtcher烧录Linux镜像的具体步骤如下所示
balenaEtcher烧录Linux镜像的过程显示的界面如下图所示,另外进度条显示紫色表示正在烧录Linux镜像到TF卡中
Linux镜像烧录完后,balenaEtcher默认还会对烧录到TF卡中的镜像进行校验,确保烧录过程没有出问题。如下图所示,显示绿色的进度条就表示镜像已经烧录完成,balenaEtcher正在对烧录完成的镜像进行校验
成功烧录完成后balenaEtcher的显示界面如下图所示,如果显示绿色的指示图标说明镜像烧录成功,此时就可以退出balenaEtcher,然后拔出TF卡插入到开发板的TF卡槽中使用了
使用RKDevTool烧录Linux镜像到TF卡中的方法
首先需要准备一根品质良好的USB2.0公对公数据线
还需要准备一张16GB或更大容量的TF卡,TF卡的传输速度必须为class10级或class10级以上,建议使用闪迪等品牌的TF卡
然后从Orange Pi的资料下载页面下载瑞芯微驱动DriverAssitant_v5.12.zip和MiniLoader以及烧录工具RKDevTool_Release_v3.15.zip
在Orange Pi的资料下载页面首先选择官方工具,然后进入下面的文件夹中
然后下载下面的所有文件
注意,“MiniLoader-烧录Linux镜像才需要用到的东西”文件夹下文简称为MiniLoader文件夹。
然后从Orange Pi的资料下载页面下载想要烧录的Linux操作系统镜像文件压缩包,然后使用解压软件解压,解压后的文件中,以”.img”结尾的文件就是操作系统的镜像文件,大小一般都在2GB以上
然后用解压软件解压DriverAssitant_v5.12.zip,再在解压后的文件夹中找到DriverInstall.exe可执行文件并打开即可
打开DriverInstall.exe后安装瑞芯微驱动的步骤如下所示
然后解压RKDevTool_Release_v3.15.zip,此软件无需安装,在解压后的文件夹中找到RKDevTool打开即可
打开RKDevTool 烧录工具后,因为电脑此时还没有通过USB2.0公对公数据线连接上开发板,所以左下角会提示”没有发现设备”
然后开始烧录Linux镜像到TF卡中
首先通过USB2.0公对公数据线连接好开发板与Windows电脑,开发板USB2.0烧录口的位置如下图所示
确保TF卡插槽没有插入TF卡
然后按住开发板的MaskROM按键不放,MaskROM按键在开发板的位置如下图所示:
然后给开发板接上Type-C接口的电源,并上电,然后就可以松开MaskROM按键了
如果前面的步骤顺利,此时开发板会进入MASKROM模式,在烧录工具的界面上会提示”发现一个MASKROM设备”
此时请在TF卡插槽中插入TF卡
然后将鼠标光标放在下面的这片区域中
然后点击鼠标右键会弹出下图所示的选择界面
然后选择导入配置选项
然后选择前面下载的MiniLoader文件夹中的rk3588_linux_tfcard.cfg配置文件,再点击打开
然后点击确定
然后点击下图所示的位置
再选择前面下载的MiniLoader文件夹中rk3566_MiniLoaderAll.bin,再点击打开
然后点击下图所示的位置
然后选择想要烧录的Linux镜像的路径,再点击打开
在烧录镜像前,建议将要烧录的Linux镜像重命名为orangepi.img或者其它比较短的名字,这样在烧录镜像的时候就能看到烧录进度的百分比数值。
然后请勾选上强制按地址写选项
再点击执行按钮就会开始烧录Linux镜像到开发板的tf卡中
Linux镜像烧录完后的显示log如下图所示
烧录完Linux镜像到tf卡中后,Linux系统会自动启动。
使用Win32Diskimager烧录Linux镜像的方法
首先准备一张16GB或更大容量的TF卡,TF卡的传输速度必须为class10级或class10级以上,建议使用闪迪等品牌的TF卡
然后使用读卡器把TF卡插入电脑
接着格式化TF卡
- 可以使用SD Card Formatter这个软件格式化TF卡,其下载地址为
https://www.sdcard.org/downloads/formatter/eula_windows/SDCardFormatterv5_WinEN.zip
下载完后直接解压安装即可,然后打开软件
如果电脑只插入了TF卡,则”Select card”一栏中会显示TF卡的盘符,如果电脑插入了多个USB存储设备,可以通过下拉框选择TF卡对应的盘符
然后点击”Format”,格式化前会弹出一个警告框,选择”是(Y)”后就会开始格式化
- 可以使用SD Card Formatter这个软件格式化TF卡,其下载地址为
从Orange Pi的资料下载页面下载想要烧录的Linux操作系统镜像文件压缩包,然后使用解压软件解压,解压后的文件中,以”.img”结尾的文件就是操作系统的镜像文件,大小一般都在2GB以上
使用Win32Diskimager烧录Linux镜像到TF卡
- Win32Diskimager的下载页面为
http://sourceforge.net/projects/win32diskimager/files/Archive/
基于Ubuntu PC将Linux镜像烧写到TF卡的方法
注意,这里说的Linux镜像具体指的是从Orange Pi资料下载页面下载的Debian、Ubuntu这样的Linux发行版镜像,Ubuntu PC指的是安装了Ubuntu系统的个人电脑。 |
- 首先准备一张16GB或更大容量的TF卡,TF卡的传输速度必须为class10级或class10级以上,建议使用闪迪等品牌的TF卡
- 然后使用读卡器把TF卡插入电脑
- 下载balenaEtcher软件,下载地址为
进入balenaEtcher下载页面后,点击绿色的下载按钮会跳到软件下载的地方
然后选择下载Linux版本的软件即可
从Orange Pi的资料下载页面下载想要烧录的Linux操作系统镜像文件压缩包,然后使用解压软件解压,解压后的文件中,以”.img”结尾的文件就是操作系统的镜像文件,大小一般都在2GB以上
7z结尾的压缩包的解压命令如下所示
test@test:~$ 7z x Orangepi3b_1.0.0_debian_bullseye_desktop_xfce_linux5.10.160.7z
test@test:~$ ls Orangepi3b_1.0.0_debian_bullseye_desktop_xfce_linux5.10.160.*
Orangepi3b_1.0.0_debian_bullseye_desktop_xfce_linux5.10.160.7z Orangepi3b_1.0.0_debian_bullseye_desktop_xfce_linux5.10.160.sha #校验和文件
Orangepi3b_1.0.0_debian_bullseye_desktop_xfce_linux5.10.160.img #镜像文件
解压镜像后可以先用sha256sum -c *.sha命令计算下校验和是否正确,如果提示成功说明下载的镜像没有错,可以放心的烧录到TF卡,如果提示校验和不匹配说明下载的镜像有问题,请尝试重新下载
test@test:~$ sha256sum -c *.sha
Orangepi3b_1.0.0_debian_bullseye_desktop_xfce_linux5.10.160.img: OK
然后在Ubuntu PC的图形界面双击balenaEtcher-1.5.109-x64.AppImage即可打开balenaEtcher(无需安装),balenaEtcher打开后的界面显示如下图所示
使用balenaEtcher烧录Linux镜像的具体步骤如下所示
balenaEtcher烧录Linux镜像的过程显示的界面如下图所示,另外进度条显示紫色表示正在烧录Linux镜像到TF卡中
Linux镜像烧录完后,balenaEtcher默认还会对烧录到TF卡中的镜像进行校验,确保烧录过程没有出问题。如下图所示,显示绿色的进度条就表示镜像已经烧录完成,balenaEtcher正在对烧录完成的镜像进行校验
成功烧录完成后balenaEtcher的显示界面如下图所示,如果显示绿色的指示图标说明镜像烧录成功,此时就可以退出balenaEtcher,然后拔出TF卡插入到开发板的TF卡槽中使用了
烧录Linux镜像到eMMC中的方法
使用RKDevTool烧录Linux镜像到eMMC中的方法
注意,下面所有的操作都是在Windows电脑中进行的。 |
注意,这里说的Linux镜像具体指的是从Orange Pi资料下载页面下载的Debian、Ubuntu这样的Linux发行版镜像。 |
开发板预留了eMMC模块的扩展接口,烧录系统到eMMC前,首先需要购买一个与开发板eMMC接口相匹配的eMMC模块。然后将eMMC模块安装到开发板上。eMMC模块和插入开发板的方法如下所示:
还需要准备一根品质良好的USB2.0公对公数据线
然后从Orange Pi的资料下载页面下载瑞芯微驱动DriverAssitant_v5.12.zip和MiniLoader以及烧录工具RKDevTool_Release_v3.15.zip
在Orange Pi的资料下载页面首先选择官方工具,然后进入下面的文件夹中
然后下载下面的所有文件
注意,“MiniLoader-烧录Linux镜像才需要用到的东西”文件夹下文简称为MiniLoader文件夹。
然后从Orange Pi的资料下载页面下载想要烧录的Linux操作系统镜像文件压缩包,然后使用解压软件解压,解压后的文件中,以”.img”结尾的文件就是操作系统的镜像文件,大小一般都在2GB以上
然后用解压软件解压DriverAssitant_v5.12.zip,再在解压后的文件夹中找到DriverInstall.exe可执行文件并打开即可
打开DriverInstall.exe后安装瑞芯微驱动的步骤如下所示
然后解压RKDevTool_Release_v3.15.zip,此软件无需安装,在解压后的文件夹中找到 RKDevTool打开即可
打开RKDevTool 烧录工具后,因为电脑此时还没有通过USB2.0公对公数据线连接上开发板,所以左下角会提示”没有发现设备”
然后开始烧录Linux镜像到eMMC中
首先通过USB2.0公对公数据线连接好开发板与Windows电脑,开发板USB2.0烧录口的位置如下图所示
确保开发板没有插入TF卡,没有连接电源
然后按住开发板的MaskROM按键不放,MaskROM按键在开发板的位置如下图所示:
然后给开发板接上Type-C接口的电源,并上电,然后就可以松开MaskROM按键了
如果前面的步骤顺利,此时开发板会进入MASKROM模式,在烧录工具的界面上会提示”发现一个MASKROM设备”
然后将鼠标光标放在下面的这片区域中
然后点击鼠标右键会弹出下图所示的选择界面
然后选择导入配置选项
然后选择前面下载的MiniLoader文件夹中的rk3588_linux_emmc.cfg配置文件,再点击打开
然后点击确定
然后点击下图所示的位置
再选择前面下载的MiniLoader文件夹中rk3566_MiniLoaderAll.bin,再点击打开
然后点击下图所示的位置
然后选择想要烧录的Linux镜像的路径,再点击打开
在烧录镜像前,建议将要烧录的Linux镜像重命名为orangepi.img或者其它比较短的名字,这样在烧录镜像的时候就能看到烧录进度的百分比数值。
然后请勾选上强制按地址写选项
再点击执行按钮就会开始烧录Linux镜像到开发板的eMMC中
Linux镜像烧录完后的显示log如下图所示
烧录完Linux镜像到eMMC中后,Linux系统会自动启动。
注意,烧录镜像到eMMC中后如果测试发现启动不了,请清空下SPI Flash后再启动试下。清空SPI Flash的方法请参考使用RKDevTool清空SPIFlash的方法小节的内容。
使用dd命令烧录Linux镜像到eMMC中的方法
注意,这里说的Linux镜像具体指的是从Orange Pi资料下载页面下载的Debian、Ubuntu或者OPi OS Arch这样的Linux发行版镜像。 |
开发板预留了eMMC模块的扩展接口,烧录系统到eMMC前,首先需要购买一个与开发板eMMC接口相匹配的eMMC模块。然后将eMMC模块安装到开发板上。eMMC模块和插入开发板的方法如下所示:
使用dd命令烧录Linux镜像到eMMC中需要借助TF卡来完成,所以首先需要将Linux镜像烧录到TF卡上,然后使用TF卡启动开发板进入Linux系统。烧录Linux镜像到TF卡的方法请见基于Windows PC将Linux镜像烧录到TF卡的方法和基于Ubuntu PC将Linux镜像烧录到TF卡的方法两小节的说明。
使用TF卡启动Linux系统后,我们首先将解压后的Linux镜像文件(从官网下载的Debian、Ubuntu镜像或者OPi Arch镜像)上传到TF卡中。上传Linux镜像文件到开发板中的方法请参考上传文件到开发板Linux系统中的方法小节的说明。
上传完镜像到开发板的Linux系统中后,我们再在开发板Linux系统的命令行中进入镜像文件的存放路径,比如,我将开发板的Linux镜像存放在/home/orangepi/Desktop目录下了,然后进入/home/orangepi/Desktop目录就能看到上传的镜像文件了。
orangepi@orangepi:~$ cd /home/orangepi/Desktop
orangepi@orangepi:~/Desktop$ ls
Orangepi3b_x.x.x_debian_bullseye_desktop_xfce_linux5.10.160.img
怎么进入开发板Linux系统的命令行?
1. 使用串口登录终端的方法请参考调试串口的使用方法一小节的说明。
2. 使用ssh远程登录Linux系统请参考SSH远程登录开发板一小节的说明。
3. 如果接了HDMI、LCD等显示屏幕,可以在桌面中打开一个命令行终端。
接下来,我们先使用下面的命令确认下eMMC的设备节点
orangepi@orangepi:~/Desktop$ ls /dev/mmcblk*boot0 | cut -c1-12
/dev/mmcblk0
然后我们可以使用dd命令清空下eMMC,注意of=参数后面请填入上面命令输出的结果
orangepi@orangepi:~/Desktop$ sudo dd bs=1M if=/dev/zero of=/dev/mmcblk0 count=1000 status=progress
orangepi@orangepi:~/Desktop$ sudo sync
然后就可以使用dd命令烧录开发板的Linux镜像到eMMC中
下面的命令中 if= 参数后面是要填写Linux镜像存放的完整路径+Linux镜像的名字(比如/home/orangepi/Desktop/Linux镜像的名字)。因为上面我们已经进入Linux镜像的路径下了,所以只需要填写Linux镜像的名字的即可。
下面命令中的Linux镜像名请不要照抄,要替换为实际的镜像名(因为镜像的版本号可能会更新)。
sudo dd bs=1M if=Orangepi3b_x.x.x_debian_bullseye_desktop_xfce_linux5.10.160.img of=/dev/mmcblk0 status=progress
sudo sync
注意,如果上传的是 .7z或者.xz 结尾Linux镜像压缩文件,使用dd命令烧录前请记得先解压。
dd命令的所有参数的详细说明和更多用法可以在Linux系统中执行man dd命令来查看。
当成功烧录开发板的Linux镜像到eMMC后,此时就可以使用poweroff命令关机了。然后请拔出TF卡,再短按电源按键开机,此时就会启动eMMC中的Linux系统了。
注意,烧录镜像到eMMC中后如果测试发现启动不了,请清空下SPI Flash后再启动试下。清空SPI Flash的方法请参考使用RKDevTool清空SPIFlash的方法小节的内容。
烧写Linux镜像到SPIFlash+NVMe SSD中的方法
注意,这里说的Linux镜像具体指的是从Orange Pi资料下载页面下载的Debian、Ubuntu这样的Linux发行版镜像。 |
注意,下面所有的操作都是在Windows电脑中进行的。 |
使用RKDevTool烧录的方法
首先需要准备一个NVMe SSD固态硬盘,开发板M.2插槽支持的PCIe为PCIe2.0x1,理论最高速度为500MB/s。PCIe3.0和PCIe4.0的NVMe SSD也是可以用的,只是速度最高只有PCIe2.0x1的速度。
然后把NVMe SSD插入开发板的M.2 PCIe接口,并固定好
SPI Flash在开发板上的位置如下图所示,开始烧录前无需其他设置
然后需要准备一根品质良好的USB2.0公对公数据线
然后从Orange Pi的资料下载页面下载瑞芯微驱动DriverAssitant_v5.12.zip和MiniLoader以及烧录工具RKDevTool_Release_v3.15.zip
在Orange Pi的资料下载页面首先选择官方工具,然后进入下面的文件夹中
然后下载下面的所有文件
注意,“MiniLoader-烧录Linux镜像才需要用到的东西”文件夹下文简称为MiniLoader文件夹。
然后从Orange Pi的资料下载页面下载想要烧录的Linux操作系统镜像文件压缩包,然后使用解压软件解压,解压后的文件中,以”.img”结尾的文件就是操作系统的镜像文件,大小一般都在2GB以上
然后用解压软件解压DriverAssitant_v5.12.zip,再在解压后的文件夹中找到DriverInstall.exe可执行文件并打开即可
打开DriverInstall.exe后安装瑞芯微驱动的步骤如下所示
然后解压RKDevTool_Release_v3.15.zip,此软件无需安装,在解压后的文件夹中找到 RKDevTool打开即可
打开RKDevTool 烧录工具后,因为电脑此时还没有通过USB2.0公对公数据线连接上开发板,所以左下角会提示”没有发现设备”
然后开始烧录Linux镜像到SSD中
首先通过USB2.0公对公数据线连接好开发板与Windows电脑,开发板USB2.0烧录接口的位置如下图所示
确保开发板没有连接电源和插入TF卡以及eMMC
然后按住开发板的MaskROM按键不放,MaskROM按键在开发板的位置如下图所示:
然后给开发板接上Type-C接口的电源,并上电,然后就可以松开MaskROM按键了
如果前面的步骤顺利,此时开发板会进入MASKROM模式,在烧录工具的界面上会提示”发现一个MASKROM设备”
然后将鼠标光标放在下面的这片区域中
然后点击鼠标右键会弹出下图所示的选择界面
然后选择导入配置选项
然后进入前面下载的MiniLoader文件夹中,然后选择rk3588_linux_pcie.cfg配置文件,再点击打开
然后点击确定
然后点击下图所示的位置
再选择前面下载的MiniLoader文件夹中rk3566_MiniLoaderAll.bin,再点击打开
然后点击下图所示的位置
然后进入前面下载的MiniLoader文件夹中,再选择rk3566_rkspi_loader.img,再点击打开
然后点击下图所示的位置
然后选择想要烧录的Linux镜像的路径,再点击打开
在烧录镜像前,建议将要烧录的Linux镜像重命名为orangepi.img或者其它比较短的名字,这样在烧录镜像的时候就能看到烧录进度的百分比数值。
然后请勾选上强制按地址写选项
再点击执行按钮就会开始烧录Linux镜像到SSD中
Linux镜像烧录完后的显示log如下图所示
如果烧录有问题,请先清空下SPI Flash然后再烧录试下。清空SPI Flash的方法请参考下使用RKDevTool清空SPIFlash的方法一小节的说明。
镜像烧录完后会自动启动SPIFlash+PCIe SSD中的Linux系统,如果没有正常启动,请重新上电试下。
使用dd命令烧录的方法
首先需要准备一个NVMe SSD固态硬盘,开发板M.2插槽支持的PCIe为PCIe2.0x1,理论最高速度为500MB/s。PCIe3.0和PCIe4.0的NVMe SSD也是可以用的,只是速度最高只有PCIe2.0x1的速度。
然后把NVMe SSD插入开发板的M.2 PCIe接口,并固定好
SPI Flash在开发板上的位置如下图所示,开始烧录前无需其他设置
烧录Linux镜像到SPIFlash+NVMe SSD中需要借助TF卡来完成,所以首先需要将Linux镜像烧录到TF卡上,然后使用TF卡启动开发板进入Linux系统。烧录Linux镜像到TF卡的方法请见基于Windows PC将Linux镜像烧写到TF卡的方法和基于Ubuntu PC将Linux镜像烧写到TF卡的方法两小节的说明。
使用TF卡启动Linux系统后,我们首先烧录u-boot镜像到SPI Flash中
先运行下nand-sata-install,普通用户记得加sudo权限
orangepi@orangepi:~$ sudo nand-sata-install
然后选择7 Install/Update ther bootloader on SPI Flash
- 然后选择<Yes>
- 然后请耐心等待烧录完成,烧录完成后显示如下所示(左下角会显示一个Done):
然后将Linux镜像文件(从官网下载的Debian或者Ubuntu镜像)上传到TF卡中。上传Linux镜像文件到开发板中的方法请参考上传文件到开发板Linux系统中的方法小节的说明。
上传完镜像到开发板的Linux系统中后,我们再在开发板Linux系统的命令行中进入镜像文件的存放路径,比如,我将开发板的Linux镜像存放在/home/orangepi/Desktop目录下了,然后进入/home/orangepi/Desktop目录就能看到上传的镜像文件了。
orangepi@orangepi:~$ cd /home/orangepi/Desktop
orangepi@orangepi:~/Desktop$ ls
Orangepi3b_x.x.x_debian_bullseye_desktop_xfce_linux5.10.160.img
怎么进入开发板Linux系统的命令行?
使用串口登录终端的方法请参考调试串口的使用方法一小节的说明。
使用ssh远程登录Linux系统请参考SSH远程登录开发板一小节的说明。
如果接了HDMI、LCD等显示屏幕,可以在桌面中打开一个命令行终端。
接下来,我们先确认下NVMe SSD已经被开发板的Linux正常识别了。如果NVMe SSD正常识别了的话,使用sudo fdisk -l命令就能看到nvme相关的信息
orangepi@orangepi:~/Desktop$ sudo fdisk -l | grep "nvme0n1"
Disk /dev/nvme0n1: 1.86 TiB, 2048408248320 bytes, 4000797360 sectors
使用lspci命令可以看到一个NVMe相关的PCI设备
orangepi@orangepi:~/Desktop$ lspci
00:00.0 PCI bridge: Fuzhou Rockchip Electronics Co., Ltd Device 3566 (rev 01)
01:00.0 Non-Volatile memory controller: Realtek Semiconductor Co., Ltd. Device 5765 (rev 01)
然后我们可以使用dd命令清空下NVMe SSD(可选)
orangepi@orangepi3b:~/Desktop$ sudo dd bs=1M if=/dev/zero of=/dev/nvme0n1 count=2000 status=progress
orangepi@orangepi3b:~/Desktop$ sudo sync
然后就可以使用dd命令烧录开发板的Linux镜像到NVMe SSD中
下面的命令中 if= 参数后面是要填写Linux镜像存放的完整路径+Linux镜像的名字(比如/home/orangepi/Desktop/Linux镜像的名字)。因为上面我们已经进入Linux镜像的路径下了,所以只需要填写Linux镜像的名字的即可。
下面命令中的Linux镜像名请不要照抄,要替换为实际的镜像名(因为镜像的版本号可能会更新)。
sudo dd bs=1M if=Orangepi3b_x.x.x_debian_bullseye_desktop_xfce_linux5.10.160.img of=/dev/nvme0n1 status=progress
sudo sync
注意,如果上传的是 .7z或者.xz 或者.gz结尾Linux镜像压缩文件,使用dd命令烧录前请记得先解压。
dd命令的所有参数的详细说明和更多用法可以在Linux系统中执行man dd命令来查看。
当成功烧录开发板的Linux镜像到NVMe SSD后,此时就可以使用poweroff命令关机了。然后请拔出TF卡,再短按电源按键开机,此时就会启动SPIFlash+NVMe SSD中的Linux系统了。
启动NVMe SSD中的系统后,使用df -h命令可以看到实际的硬盘容量
128GB NVMe SSD
orangepi@orangepi:~$ df -h
Filesystem Size Used AvailUse% Mounted on
udev3.8G 8.0K 3.8G 1% /dev
tmpfs 769M 1.4M 768M 1% /run
/dev/nvme0n1p2118G 5.8G 111G 5% /
tmpfs 3.8G 03.8G 0% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 3.8G 16K 3.8G 1% /tmp
/dev/nvme0n1p1256M 90M 166M 36% /boot
/dev/zram1194M 9.9M 170M 6% /var/log
tmpfs 769M 60K 769M 1% /run/user/1000
tmpfs 769M 48K 769M 1% /run/user/0
2TB NVMe SSD
orangepi@orangepi:~$ df -h
Filesystem Size Used AvailUse% Mounted on
udev3.8G 8.0K 3.8G 1% /dev
tmpfs 769M 1.4M 768M 1% /run
/dev/nvme0n1p21.9T 4.1G 1.8T 1% /
tmpfs 3.8G 03.8G 0% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
/dev/zram23.7G 76K 3.5G 1% /tmp
/dev/nvme0n1p1256M 90M 166M 36% /boot
/dev/zram1194M 9.9M 170M 6% /var/log
tmpfs 769M 60K 769M 1% /run/user/1000
tmpfs 769M 48K 769M 1% /run/user/0
当TF卡和NVMe SSD中烧录了一模一样的系统,如果TF卡和NVMe SSD都插在了开发板中,此时上电启动开发板,u-boot会优先启动TF卡中的系统。但由于TF卡和NVMe SSD中的系统一模一样,所以两个存储设备中的/boot分区和rootfs分区的UUID也一样,这样会导致TF卡启动的时候有可能会加载了NVMe SSD中的分区。运行下面的脚本可以解决这个问题。
orangepi@orangepi:~$ sudo fix_mmc_ssd.sh
一模一样的系统是指镜像名一字不差的意思。就算都是Debian11系统,版本不同也是不同的。
使用balenaEtcher软件烧录的方法
首先需要准备一个NVMe SSD固态硬盘,开发板M.2插槽支持的PCIe为PCIe2.0x1,理论最高速度为500MB/s。PCIe3.0和PCIe4.0的NVMe SSD也是可以用的,只是速度最高只有PCIe2.0x1的速度。
然后把NVMe SSD插入开发板的M.2 PCIe接口,并固定好
SPI Flash在开发板上的位置如下图所示,开始烧录前无需其他设置
烧录Linux镜像到SPIFlash+NVMe SSD中需要借助TF卡来完成,所以首先需要将Linux镜像烧录到TF卡上,然后使用TF卡启动开发板进入Linux系统。烧录Linux镜像到TF卡的方法请见基于Windows PC将Linux镜像烧写到TF卡的方法和基于Ubuntu PC将Linux镜像烧写到TF卡的方法两小节的说明。
启动进入TF卡中的Linux系统后,请先确认下NVMe SSD已经被开发板的Linux正常识别了。如果NVMe SSD正常识别了的话,使用sudo fdisk -l命令就能看到nvme相关的信息
orangepi@orangepi:~/Desktop$ sudo fdisk -l | grep "nvme0n1"
Disk /dev/nvme0n1: 1.86 TiB, 2048408248320 bytes, 4000797360 sectors
使用lspci命令可以看到一个NVMe相关的PCI设备
orangepi@orangepi:~/Desktop$ lspci
00:00.0 PCI bridge: Fuzhou Rockchip Electronics Co., Ltd Device 3566 (rev 01)
01:00.0 Non-Volatile memory controller: Realtek Semiconductor Co., Ltd. Device 5765 (rev 01)
Linux镜像中已经预装了balenaEtcher,打开方法如下所示:
如果没有预装,balenaEtcher arm64版本的下载安装方法请参考下载安装arm64版本balenaEtcher的方法小节的说明。
- balenaEtcher打开后的界面如下所示:
使用balenaEtcher烧录u-boot到开发板SPI Flash中的方法如下所示:
- 首先点击Flash from file
- 然后进入/usr/lib/linux-u-boot-legacy-orangepi3b_1.x.x_arm64目录,再选择rkspi_loader.img,再点击Open打开
- 然后点击Show 2 hidden打开更多存储设备的选项
- 然后选择SPI Flash的设备名/dev/mtdblock0,然后点击Select
- 然后点击Flash
- 然后点击Yes, I’m sure
- 然后输入开发板Linux系统的密码orangepi,就会开始烧录u-boot镜像到SPI Flash中
- 烧录过程的显示如下所示:
- 烧录完成后的显示如下所示:
烧录TF卡中的Linux系统到NVMe SSD中的方法(此方法相当于将TF卡中的系统克隆到NVMe SSD)
- 首先点击Clone drive
- 然后选择TF卡的设备名/dev/mmcblk1
- 打开TF卡后的界面如下所示:
- 然后点击Select target
- 然后点击Show 2 hidden打开更多存储设备的选项
- 然后点击Flash
- 然后点击Yes, I’m sure
- 然后输入开发板Linux系统的密码orangepi,就会开始烧录Linux镜像到SSD中
然后需要扩容下NVMe SSD中rootfs分区的容量,步骤如下所示:
a) 首先打开GParted,如果系统没有预装Gparted,请使用apt命令安装下
orangepi@orangepi:~$ sudo apt-get install -y gparted
- e) 选择NVMe SSD后的显示界面如下所所示:
- f) 然后选择/dev/nvme0n1p2分区,再击点击右键,再选择Resize/Move
- 此时就可以使用sudo poweroff命令关机了。然后请拔出TF卡,再短按电源按键开机,此时就会启动SPIFlash+NVMe SSD中的Linux系统了。
第 9 步是克隆TF卡中的系统到NMVe SSD中,我们还可以直接烧录Linux镜像文件到NVMe SSD中,这里大概说下步骤:
烧录Android镜像到TF卡中的方法
通过USB2.0烧录口将Android 镜像烧录到TF卡中的方法
首先准备一张8GB或更大容量的TF卡,TF卡的传输速度必须为class10或以上,建议使用闪迪等品牌的TF卡
还需要准备一根品质良好的USB2.0公对公数据线
然后从Orange Pi的资料下载页面下载瑞芯微驱动DriverAssitant_v5.12.zip和烧录工具RKDevTool_Release_v3.15.zip
在Orange Pi的资料下载页面首先选择官方工具,然后进入下面的文件夹中
然后下载下面的所有文件
然后从Orange Pi的资料下载页面下载Android的镜像。
然后使用解压软件解压下载的Android镜像的压缩包,解压后的文件中,以”.img” 结尾的文件就是Android镜像文件,大小在1GB以上
然后用解压软件解压DriverAssitant_v5.12.zip,再在解压后的文件夹中找到DriverInstall.exe可执行文件并打开即可
打开DriverInstall.exe后安装瑞芯微驱动的步骤如下所示
然后解压RKDevTool_Release_v3.15.zip,此软件无需安装,在解压后的文件夹中找到 RKDevTool打开即可
打开RKDevTool 烧录工具后,因为电脑此时还没有通过USB2.0公对公数据线连接上开发板,所以左下角会提示”没有发现设备”
然后开始烧录Android镜像到TF卡中
首先通过USB2.0公对公数据线连接好开发板与Windows电脑,开发板USB2.0烧录接口的位置如下图所示
然后确保开发板没有插入TF卡,没有连接电源
然后按住开发板的MaskROM按键不放,MaskROM按键在开发板的位置如下图所示:
然后给开发板接上Type-C接口的电源,并上电
如果前面的步骤顺利,此时开发板会进入MASKROM模式,在烧录工具的界面上会提示”发现一个MASKROM设备”
然后再插入TF卡到开发板
然后请选择高级功能
然后点击下图所示的位置
再选择前面下载的MiniLoader文件夹中的rk3566_MiniLoaderAll.bin,再点击打开
然后点击下载
下载完rk3566_MiniLoaderAll.bin后的显示如下图所示
然后选择存储设备为SD,再点击切换存储
切换成功的显示如下图所示
然后点击烧录工具的”升级固件”一栏
接着点击”固件”按钮选择需要烧录的Android镜像的路径
最后点击”升级”按钮就会开始烧录,烧录过程中的log如下图所示。烧录完成后Android系统会自动启动。
使用SDDiskTool工具将Android镜像烧到TF卡的方法
首先准备一张8GB或更大容量的TF卡,TF卡的传输速度必须为class10或以上,建议使用闪迪等品牌的TF卡
然后使用读卡器把TF卡插入电脑
然后从Orange Pi的资料下载页面下载SDDiskTool烧写工具,请确保SDDiskTool工具的版本为最新的v1.72
然后从Orange Pi的资料下载页面下载Android11的镜像
然后使用解压软件解压下载的Android镜像的压缩包,解压后的文件中,以”.img” 结尾的文件就是Android镜像文件,大小在1GB以上
然后使用解压软件解压SDDiskTool_v1.72.zip,此软件无需安装,在解压后的文件夹中找到SD_Firmware_Tool.exe打开即可
打开SDDiskTool后,如果TF卡识别正常,会在”选择可移动磁盘设备”一栏中显示插入的磁盘设备,请务必确认显示的磁盘设备和你想烧录的TF卡的盘符是一致的,如果没有显示可以尝试拔插下TF卡
确认完盘符后,可以先格式化下TF卡,点击SDDiskTool中的恢复磁盘按钮即可,也可使用前面提到的SD Card Formatter进行TF卡的格式化
然后开始将Android镜像写入TF卡
烧录完后即可退出SDDiskTool软件,然后就可以把TF卡从电脑中拔出来插到开发板中启动了
烧录Android镜像到eMMC中的方法
注意,烧录镜像到eMMC中后如果测试发现启动不了,请清空下SPI Flash后再启动试下。清空SPI Flash的方法请参考使用RKDevTool清空SPIFlash的方法小节的内容。
通过USB2.0烧录口将Android 镜像烧录到eMMC中的方法
注意,下面所有的操作都是在Windows电脑中进行的。
开发板预留了eMMC的扩展接口,烧录系统到eMMC前,首先需要购买一个与开发板eMMC接口相匹配的eMMC模块。然后将eMMC模块安装到开发板上。
eMMC模块和插入开发板的方法如下所示:
还需要准备一根品质良好的USB2.0公对公数据线
然后从Orange Pi的资料下载页面下载瑞芯微驱动DriverAssitant_v5.12.zip和烧录工具RKDevTool_Release_v3.15.zip
然后从Orange Pi的资料下载页面下载Android的镜像。
然后使用解压软件解压下载的Android镜像的压缩包,解压后的文件中,以”.img” 结尾的文件就是Android镜像文件,大小在1GB以上
然后用解压软件解压DriverAssitant_v5.12.zip,再在解压后的文件夹中找到DriverInstall.exe可执行文件并打开即可
打开DriverInstall.exe后安装瑞芯微驱动的步骤如下所示
然后解压RKDevTool_Release_v3.15.zip,此软件无需安装,在解压后的文件夹中找到 RKDevTool打开即可
打开RKDevTool 烧录工具后,因为电脑此时还没有通过USB2.0公对公数据线连接上开发板,所以左下角会提示”没有发现设备”
然后开始烧录Android镜像到eMMC中
首先通过USB2.0公对公数据线连接好开发板与Windows电脑,开发板USB2.0烧录接口的位置如下图所示
然后确保开发板没有插入TF卡,没有连接电源
然后按住开发板的MaskROM按键不放,MaskROM按键在开发板的位置如下图所示:
然后给开发板接上Type-C接口的电源,并上电
如果前面的步骤顺利,此时开发板会进入MASKROM模式,在烧录工具的界面上会提示”发现一个MASKROM设备”
然后请选择高级功能
然后点击下图所示的位置
再选择前面下载的MiniLoader文件夹中的rk3566_MiniLoaderAll.bin,再点击打开
然后点击下载
下载完MiniLoaderAll.bin后的显示如下图所示
然后选择存储设备为EMMC,再点击切换存储
切换成功的显示如下图所示
通过TF卡将Android 11镜像烧录到eMMC中的方法
注意,下面所有的操作都是在Windows电脑中进行的。
开发板预留了eMMC的扩展接口,烧录系统到eMMC前,首先需要购买一个与开发板eMMC接口相匹配的eMMC模块。然后将eMMC模块安装到开发板上。eMMC模块和插入开发板的方法如下所示:
还需要准备一张8GB或更大容量的TF卡,TF卡的传输速度必须为class10或以上,建议使用闪迪等品牌的TF卡
然后使用读卡器把TF卡插入电脑
然后从Orange Pi的资料下载页面下载SDDiskTool烧写工具,请确保SDDiskTool工具的版本为最新的v1.72
然后从Orange Pi的资料下载页面下载Android的镜像
然后使用解压软件解压下载的Android镜像的压缩包,解压后的文件中,以”.img” 结尾的文件就是Android镜像文件,大小在1GB以上
然后使用解压软件解压SDDiskTool_v1.72.zip,此软件无需安装,在解压后的文件夹中找到SD_Firmware_Tool.exe打开即可
打开SDDiskTool后,如果TF卡识别正常,会在”选择可移动磁盘设备”一栏中显示插入的磁盘设备,请务必确认显示的磁盘设备和你想烧录的TF卡的盘符是一致的,如果没有显示可以尝试拔插下TF卡
确认完盘符后,可以先格式化下TF卡,点击SDDiskTool中的恢复磁盘按钮即可,也可使用前面提到的SD Card Formatter进行TF卡的格式化
然后开始将Android镜像写入TF卡
烧录完成后的显示如下图所示,然后就可以退出SDDiskTool
然后把TF卡从电脑中拔出来插到开发板中,开发板上电启动后就会自动开始将TF卡中的Android镜像烧录到开发板的eMMC中
如果开发板连接了HDMI显示器,还可以从HDMI显示器中看到烧录Android镜像到eMMC中的进度条
当HDMI显示器显示如下信息时,说明烧录Android镜像到eMMC中已完成,此时就可以拔出TF卡,然后eMMC中的安卓系统就会开始启动。
烧录Android镜像到SPIFlash+NVMe SSD中的方法
注意,下面所有的操作都是在Windows电脑中进行的。
首先需要准备一个NVMe SSD固态硬盘
然后把NVMe SSD插入开发板的M.2 PCIe接口,并固定好
SPI Flash在开发板上的位置如下图所示,开始烧录前无需其他设置
还需要准备一根品质良好的USB2.0公对公数据线
然后从Orange Pi的资料下载页面下载瑞芯微驱动DriverAssitant_v5.12.zip和烧录工具RKDevTool_Release_v3.15.zip
然后下载Android11的镜像
然后用解压软件解压DriverAssitant_v5.12.zip,再在解压后的文件夹中找到DriverInstall.exe可执行文件并打开即可
打开DriverInstall.exe后安装瑞芯微驱动的步骤如下所示
然后解压RKDevTool_Release_v3.15.zip,此软件无需安装,在解压后的文件夹中找到 RKDevTool打开即可
打开RKDevTool 烧录工具后,因为电脑此时还没有通过USB2.0公对公数据线连接上开发板,所以左下角会提示”没有发现设备”
然后开始烧录Android镜像到SPIFlash+NVMe SSD中
首先通过USB2.0公对公数据线连接好开发板与Windows电脑,开发板USB2.0烧录口的位置如下图所示
确保开发板没有插入TF卡,没有连接电源
然后按住开发板的MaskROM按键不放,MaskROM按键在开发板的位置如下图所示:
然后给开发板接上Type-C接口的电源,并上电,然后就可以松开MaskROM按键了
如果前面的步骤顺利,此时开发板会进入MASKROM模式,在烧录工具的界面上会提示”发现一个MASKROM设备”
然后点击烧录工具的”升级固件”一栏
接着点击”固件”按钮选择需要烧录的Android镜像
最后点击”升级”按钮就会开始烧录,烧录的过程如下图所示,可以看到,首先会烧录固件到SPIFlash中,然后烧录固件到PCIE中。烧录完成后Android系统会自动启动。
使用RKDevTool清空SPIFlash的方法
SPI Flash在开发板上的位置如下图所示
首先需要准备一根品质良好的USB2.0公对公数据线
然后从Orange Pi的资料下载页面下载瑞芯微驱动DriverAssitant_v5.12.zip和MiniLoader以及烧录工具RKDevTool_Release_v3.15.zip
在Orange Pi的资料下载页面首先选择官方工具,然后进入下面的文件夹中
然后下载下面的所有文件
注意,“MiniLoader-烧录Linux镜像才需要用到的东西”文件夹下文简称为MiniLoader文件夹。
然后用解压软件解压DriverAssitant_v5.12.zip,再在解压后的文件夹中找到DriverInstall.exe可执行文件并打开即可
打开DriverInstall.exe后安装瑞芯微驱动的步骤如下所示
然后解压RKDevTool_Release_v3.15.zip,此软件无需安装,在解压后的文件夹中找到 RKDevTool打开即可
打开RKDevTool 烧录工具后,因为电脑此时还没有通过USB2.0公对公数据线连接上开发板,所以左下角会提示”没有发现设备”
然后就可以开始清空SPI FLASH中的内容
首先通过USB2.0公对公数据线连接好开发板与Windows电脑,开发板USB2.0烧录口的位置如下图所示
确保开发板没有插入TF卡,没有连接电源
然后按住开发板的MaskROM按键不放,MaskROM按键在开发板的位置如下图所示:
然后给开发板接上Type-C接口的电源,并上电,然后就可以松开MaskROM按键了
如果前面的步骤顺利,此时开发板会进入MASKROM模式,在烧录工具的界面上会提示”发现一个MASKROM设备”
然后请选择高级功能
然后点击下图所示的位置
再选择前面下载的MiniLoader文件夹中的rk3566_MiniLoaderAll.bin,再点击打开
然后点击下载
下载完rk3566_MiniLoaderAll.bin后的显示如下图所示
然后选择存储设备为SPINOR
然后点击切换存储
然后点击擦除所有就会开始擦除SPIFlash了
擦除SPIFlash后的显示log如下图所示
启动香橙派开发板
- 将烧录好镜像的TF卡插入香橙派开发板的TF卡插槽中。如果SPIFlash+NVMe SSD已经烧录好镜像了,那么就不需要插入TF卡了,只需确保NVMe SSD正常插入到开发板中即可。
- 开发板有HDMI接口,可以通过HDMI转HDMI连接线把开发板连接到电视或者HDMI显示器。如果有购买LCD屏幕,也可以使用LCD屏幕来显示开发板的系统界面。如果有Type-C转HDMI的线,也可以通过Type-C接口来显示开发板的系统界面。
- 接上USB鼠标和键盘,用于控制香橙派开发板。
- 开发板有以太网口,可以插入网线用来上网。
- 连接一个5V/3A的USB Type-C接口的高品质的电源适配。
切记不要插入电压输出大于5V的电源适配器,会烧坏开发板。
系统上电启动过程中很多不稳定的现象基本都是供电有问题导致的,所以一个靠谱的电源适配器很重要。如果启动过程中发现有不断重启的现象,请更换下电源或者Type-C数据线再试下。
Type-C电源接口是不支持PD协商的。
另外请不要接到电脑的USB接口来给开发板供电。
然后打开电源适配器的开关,如果一切正常,此时HDMI显示器或者LCD屏幕就能看到系统的启动画面了。
如果想通过调试串口查看系统的输出信息,请使用串口线将开发板连接到电脑,串口的连接方法请参看调试串口的使用方法一节。
调试串口的使用方法
调试串口的连接说明
- 首先需要准备一个3.3V的USB转TTL模块,然后将USB转TTL模块的USB接口一端插入到电脑的USB接口中。
为了更好的兼容性,推荐使用CH340 USB转TTL模块,请不要使用CP2102、PL2303类型的USB转TTL模块。
购买USB转TTL模块前,请确认模块支持1500000速率的波特率。
开发板的调试串口GND、RXD和TXD引脚的对应关系如下图所示
USB转TTL模块GND、TXD和RXD引脚需要通过杜邦线连接到开发板的调试串口上
USB转TTL模块的GND接到开发板的GND上
USB转TTL模块的RX接到开发板的TX上
USB转TTL模块的TX接到开发板的RX上
USB转TTL模块连接电脑和Orange Pi开发板的示意图如下所示
串口的TX和RX是需要交叉连接的,如果不想仔细区分TX和RX的顺序,可以把串口的TX和RX先随便接上,如果测试没有输出再交换下TX和RX的顺序,这样就总有一种顺序是对的
Ubuntu平台调试串口的使用方法
Linux下可以使用的串口调试软件有很多,如putty、minicom等,下面演示putty的使用方法。
首先将USB转TTL模块插入Ubuntu电脑的USB接口,如果USB转TTL模块连接识别正常,在Ubuntu PC的/dev下就可以看到对应的设备节点名,记住这个节点名,后面设置串口软件时会用到
test@test:~$ ls /dev/ttyUSB*
/dev/ttyUSB0
然后使用下面的命令在Ubuntu PC上安装下putty
test@test:~$ sudo apt-get update
test@test:~$ sudo apt-get install -y putty
然后运行putty,记得加sudo权限
test@test:~$ sudo putty
执行putty命令后会弹出下面的界面
首先选择串口的设置界面
然后设置串口的参数
在串口的设置界面设置完后,再回到Session界面
启动开发板后,就能从打开的串口终端中看到系统输出的Log信息了
Windows平台调试串口的使用方法
Windows下可以使用的串口调试软件有很多,如SecureCRT、MobaXterm等,下面演示MobaXterm的使用方法,这款软件有免费版本,无需购买序列号即可使用。
下载MobaXterm
下载MobaXterm网址如下
进入MobaXterm下载网页后点击GET XOBATERM NOW!
然后选择下载Home版本
然后选择Portable便携式版本,下载完后无需安装,直接打开就可以使用
下载完后使用解压缩软件解压下载的压缩包,即可得到MobaXterm的可执软件,然后双击打开
打开软件后,设置串口连接的步骤如下
打开会话的设置界面
选择串口类型
选择串口的端口号(根据实际的情况选择对应的端口号),如果看不到端口号,请使用360驱动大师扫描安装USB转TTL串口芯片的驱动
选择串口的波特率为1500000
最后点击”OK”按钮完成设置
使用开发板40pin接口中的5v引脚供电说明
我们推荐的开发板的供电方式是使用5V/3A的Type C接口的电源线插到开发板的Type-C电源接口来供电的。如果需要使用40pin接口中的5V引脚来给开发板供电,请确保使用的电源线和电源适配器能满足开发板的供电需求。如果有使用不稳定的情况,请换回Type-C电源供电。
首先需要准备一根下图所示的电源线
上图所示的电源线在淘宝可以买到,请自行搜索购买。
使用40pin接口中的5V引脚来给开发板供电,电源线的接法如下所示
Ubuntu/Debian Server和Xfce桌面系统使用说明
本章内容是基于Linux服务器版本的镜像和xfce桌面版本镜像编写的。
已支持的Linux镜像类型和内核版本
Linux镜像类型 内核版本 服务器版 桌面版 Debian 11 - Bullseye Linux5.10 支持 支持 Ubuntu 20.04 - Focal Linux5.10 支持 支持 Ubuntu 22.04 - Jammy Linux5.10 支持 支持 Debian12 Linux5.10 支持 支持 Linux系统适配情况
功能 Debian11 Ubuntu20.04 Ubuntu22.04 USB2.0x3 OK OK OK USB3.0x1 OK OK OK M.2 NVMe SSD启动 OK OK OK WIFI OK OK OK 蓝牙 OK OK OK GPIO(40pin) OK OK OK UART(40pin) OK OK OK SPI(40pin) OK OK OK I2C(40pin) OK OK OK PWM(40pin) OK OK OK PWM风扇接口 OK OK OK 3pin调试串口 OK OK OK EMMC OK OK OK TF卡启动 OK OK OK HDMI 视频 OK OK OK HDMI 音频 OK OK OK Camera OK OK OK LCD OK OK OK eDP显示 OK OK OK 千兆网口 OK OK OK 网口状态灯 OK OK OK 耳机播放 OK OK OK 耳机录音 OK OK OK LED灯 OK OK OK RTC OK OK OK GPU OK OK OK NPU OK OK OK VPU OK OK OK 看门狗测试 OK OK OK Chromium硬解视频 OK OK OK 本手册Linux命令格式说明
本手册中所有需要在Linux系统中输入的命令都会使用下面的方框框起来
如下所示,黄色方框里内容表示需要特别注意的内容,这里面的命令除外。
命令前面的提示符类型说明
命令前面提示符指的是下面方框内红色部分的内容,这部分内容不是Linux命令的一部分,所以在Linux系统中输入命令时,请不要把红色字体部分的内容也输入进去。
orangepi@orangepi:~$ sudo apt update
root@orangepi:~# vim /boot/boot.cmd
test@test:~$ ssh root@192.168.1.xxx
root@test:~# ls
root@orangepi:~$ 提示符表示这个命令是在开发板的Linux系统中输入的, 提示符最后的 $ 表示系统当前用户为普通用户,当执行特权命令时,需要加上sudo
root@orangepi:~# 提示符表示这个命令是在开发板的Linux系统中输入的, 提示符最后的 # 表示系统当前用户为root用户,可以执行任何想要执行的命令
test@test:~$ 提示符表示这个命令是在Ubuntu PC或者Ubuntu虚拟机中输入的,而不是开发板的Linux系统中。提示符最后的 $ 表示系统当前用户为普通用户,当执行特权命令时,需要加上sudo
root@test:~# 提示符表示这个命令是在Ubuntu PC或者Ubuntu虚拟机中输入的,而不是开发板的Linux系统中。提示符最后的 # 表示系统当前用户为root用户,可以执行任何想要执行的命令
哪些是需要输入的命令?
如下所示,黑色加粗部分是需要输入的命令,命令下面的是输出的内容(有些命令有输出,有些可能没有输出),这部分内容是不需要输入的
root@orangepi:~# cat /boot/orangepiEnv.txt
verbosity=7
bootlogo=false
console=serial
如下所示,有些命令一行写不下会放到下一行,只要黑色加粗的部分就都是需要输入的命令。当这些命令输入到一行的时候,每行最后的”\”是需要去掉的,这个不是命令的一部分。另外命令的不同部分都是有空格的,请别漏了
orangepi@orangepi:~$ echo \
"deb [arch=$(dpkg --print-architecture) \
signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] \
https://download.docker.com/linux/debian \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Linux系统登录说明
Linux系统默认登录账号和密码
账号 密码 root orangepi orangepi orangepi 注意,输入密码的时候,屏幕上是不会显示输入的密码的具体内容的,请不要以为是有什么故障,输入完后直接回车即可。
当输入密码提示错误,或者ssh连接有问题,请注意,只要使用的是Orange Pi提供的Linux镜像,就请不要怀疑上面的密码不对,而是要找其它的原因。
设置Linux系统终端自动登录的方法
Linux系统默认就是自动登录终端的,默认登录的用户名是orangepi
使用下面的命令可以设置root用户自动登录终端
orangepi@orangepi:~$ sudo auto_login_cli.sh root
使用下面的命令可以禁止自动登录终端
orangepi@orangepi:~$ sudo auto_login_cli.sh -d
使用下面的命令可以再次设置orangepi用户自动登录终端
orangepi@orangepi:~$ sudo auto_login_cli.sh orangepi
Linux桌面版系统自动登录说明
桌面版系统启动后会自动登录进入桌面,无需输入密码
运行下面的命令可以禁止桌面版系统自动登录桌面
orangepi@orangepi:~$ sudo disable_desktop_autologin.sh
然后重启系统就会出现登录对话框,此时需要输入密码才能进入系统
Linux桌面版系统root用户自动登录的设置方法
执行下面的命令可以设置桌面版系统使用root用户自动登录
orangepi@orangepi:~$ sudo desktop_login.sh root
然后重启系统,就会自动使用root用户登录桌面了
注意,如果使用root用户登录桌面系统,是无法使用右上角的pulseaudio来管理音频设备的。
另外请注意这并不是一个bug,因为pulseaudio本来就不允许在root用户下运行。
执行下面的命令可以再次设置桌面版系统使用orangepi用户自动登录
orangepi@orangepi:~$ sudo desktop_login.sh orangepi
Linux桌面版系统禁用桌面的方法
首先在命令行中输入下面的命令,请记得加sudo权限
orangepi@orangepi:~$ sudo systemctl disable lightdm.service
然后重启Linux系统就会发现不会显示桌面了
orangepi@orangepi:~$ sudo reboot
重新打开桌面的步骤如下所示:
首先在命令行中输入下面的命令,请记得加sudo权限
orangepi@orangepi:~$ sudo systemctl start lightdm.service
命令执行完成后就会显示桌面了
板载LED灯测试说明
开发板上有三个LED灯,一个绿灯,一个红灯,一个PCIe指示灯,所在位置如下图所示:
只要开发板打开了电源,红色的LED灯就会常亮,这是由硬件控制的,软件无法关闭。
绿色的LED灯在内核启动后会一直闪烁,这是由软件控制的。
PCIe指示灯在PCIe接口有数据传输时会闪烁。
设置绿灯亮灭和闪烁的方法如下所示
注意,下面的操作请在root用户下进行。
首先进入绿灯的设置目录
root@orangepi:~# cd /sys/class/leds/status_led
设置绿灯停止闪烁的命令如下
root@orangepi:/sys/class/leds/status_led# echo none > trigger
设置绿灯常亮的命令如下
root@orangepi:/sys/class/leds/status_led# echo default-on > trigger
设置绿灯闪烁的命令如下
root@orangepi:/sys/class/leds/status_led# echo heartbeat > trigger
网络连接测试
以太网口测试
首先将网线的一端插入开发板的以太网接口,网线的另一端接入路由器,并确保网络是畅通的
系统启动后会通过DHCP自动给以太网卡分配IP地址,不需要其他任何配置
在开发板的Linux系统中查看IP地址的命令如下所示
orangepi@orangepi:~$ ip addr show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 4a:fe:2b:3d:17:1c brd ff:ff:ff:ff:ff:ff
inet 192.168.1.150/24 brd 192.168.1.255 scope global dynamic noprefixroute eth0
valid_lft 43150sec preferred_lft 43150sec
inet6 fe80::9a04:3703:faed:23be/64 scope link noprefixroute
valid_lft forever preferred_lft forever
当使用ifconfig查看IP地址时,如果提示下面的信息,是因为没有加sudo导致的,正确的命令是:sudo ifconfig
orangepi@orangepi:~$ ifconfig
Command 'ifconfig' is available in the following places
* /sbin/ifconfig
* /usr/sbin/ifconfig
The command could not be located because '/sbin:/usr/sbin' is not included in the PATH environment variable.
This is most likely caused by the lack of administrative privileges associated with your user account.
ifconfig: command not found
开发板启动后查看IP地址有三种方法:
1. 接HDMI显示器,然后登录系统使用ip addr show eth0命令查看IP地址
2. 在调试串口终端输入ip addr show eth0命令来查看IP地址
3. 如果没有调试串口,也没有HDMI显示器,还可以通过路由器的管理界面来查看开发板网口的IP地址。不过这种方法经常有人会无法正常看到开发板的IP地址。如果看不到,调试方法如下所示:
首先检查Linux系统是否已经正常启动,如果开发板的绿灯在闪烁了,一般是正常启动了,如果只亮红灯,说明系统都没正常启动;
检查网线有没有插紧,或者换根网线试下;
换个路由器试下(路由器的问题有遇到过很多,比如路由器无法正常分配IP地址,或者已正常分配IP地址但在路由器中看不到);
如果没有路由器可换就只能连接HDMI显示器或者使用调试串口来查看IP地址。
另外需要注意的是开发板DHCP自动分配IP地址是不需要任何设置的。
测试网络连通性的命令如下,ping命令可以通过Ctrl+C快捷键来中断运行
orangepi@orangepi:~$ ping www.baidu.com -I eth0
PING www.a.shifen.com (14.215.177.38) from 192.168.1.12 eth0: 56(84) bytes of data.
64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=1 ttl=56 time=6.74 ms
64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=2 ttl=56 time=6.80 ms
64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=3 ttl=56 time=6.26 ms
64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=4 ttl=56 time=7.27 ms
^C
--- www.a.shifen.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3002ms
rtt min/avg/max/mdev = 6.260/6.770/7.275/0.373 ms
WIFI连接测试
请不要通过修改/etc/network/interfaces配置文件的方式来连接WIFI,通过这种方式连接WIFI网络使用会有问题。
服务器版镜像通过命令连接WIFI
当开发板没有连接以太网,没有连接HDMI显示器,只连接了串口时,推荐使用此小节演示的命令来连接WIFI网络。因为nmtui在某些串口软件(如minicom)中只能显示字符,无法正常显示图形界面。当然,如果开发板连接了以太网或者HDMI显示屏,也可以使用此小节演示的命令来连接WIFI网络的。
先登录Linux系统,有下面三种方式
- 如果开发板连接了网线,可以通过ssh远程登录Linux系统
如果开发板连接好了调试串口,可以使用串口终端登录Linux系统
如果连接了开发板到HDMI显示器,可以通过HDMI显示的终端登录到Linux系统
首先使用nmcli dev wifi命令扫描周围的WIFI热点
orangepi@orangepi:~$ nmcli dev wifi
然后使用nmcli 命令连接扫描到的WIFI热点,其中:
wifi_name需要换成想连接的WIFI热点的名字
wifi_passwd需要换成想连接的WIFI热点的密码
orangepi@orangepi:~$ nmcli dev wifi connect wifi_name password wifi_passwd
Device 'wlan0' successfully activated with 'cf937f88-ca1e-4411-bb50-61f402eef293'.
通过ip addr show wlan0命令可以查看wifi的IP地址
orangepi@orangepi:~$ ip addr show wlan0
11: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 23:8c:d6:ae:76:bb brd ff:ff:ff:ff:ff:ff
inet 192.168.1.11/24 brd 192.168.1.255 scope global dynamic noprefixroute wlan0
valid_lft 259192sec preferred_lft 259192sec
inet6 240e:3b7:3240:c3a0:c401:a445:5002:ccdd/64 scope global dynamic noprefixroute
valid_lft 259192sec preferred_lft 172792sec
inet6 fe80::42f1:6019:a80e:4c31/64 scope link noprefixroute
valid_lft forever preferred_lft forever
使用ping命令可以测试wifi网络的连通性,ping命令可以通过Ctrl+C快捷键来中断运行
orangepi@orangepi:~$ ping www.orangepi.org -I wlan0 (-I是大写的I不是小写的L)
PING www.orangepi.org (182.92.236.130) from 192.168.1.49 wlan0: 56(84) bytes of data.
64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=1 ttl=52 time=43.5 ms
64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=2 ttl=52 time=41.3 ms
64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=3 ttl=52 time=44.9 ms
64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=4 ttl=52 time=45.6 ms
64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=5 ttl=52 time=48.8 ms
^C
--- www.orangepi.org ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4006ms
rtt min/avg/max/mdev = 41.321/44.864/48.834/2.484 ms
服务器版镜像通过图形化方式连接WIFI
先登录Linux系统,有下面三种方式
如果开发板连接了网线,可以通过ssh远程登录Linux系统
如果开发板连接好了调试串口,可以使用串口终端登录Linux系统(串口软件请使用MobaXterm,使用minicom无法显示图形界面)
如果连接了开发板到HDMI显示器,可以通过HDMI显示的终端登录到Linux系统
然后在命令行中输入nmtui命令打开wifi连接的界面
orangepi@orangepi:~$ nmtui
输入nmtui命令打开的界面如下所示
选择Activate a connect后回车
然后就能看到所有搜索到的WIFI热点
选择想要连接的WIFI热点后再使用Tab键将光标定位到Activate后回车
然后会弹出输入密码的对话框,在Password内输入对应的密码然后回车就会开始连接WIFI
WIFI连接成功后会在已连接的WIFI名称前显示一个”*”
通过ip addr show wlan0命令可以查看wifi的IP地址
orangepi@orangepi:~$ ip addr show wlan0
11: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 24:8c:d3:aa:76:bb brd ff:ff:ff:ff:ff:ff
inet 192.168.1.11/24 brd 192.168.1.255 scope global dynamic noprefixroute wlan0
valid_lft 259069sec preferred_lft 259069sec
inet6 240e:3b7:3240:c4a0:c401:a445:5002:ccdd/64 scope global dynamic noprefixroute
valid_lft 259071sec preferred_lft 172671sec
inet6 fe80::42f1:6019:a80e:4c31/64 scope link noprefixroute
valid_lft forever preferred_lft forever
使用ping命令可以测试wifi网络的连通性,ping命令可以通过Ctrl+C快捷键来中断运行
orangepi@orangepi:~$ ping www.orangepi.org -I wlan0 (-I是大写的I不是小写的L)
PING www.orangepi.org (182.92.236.130) from 192.168.1.49 wlan0: 56(84) bytes of data.
64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=1 ttl=52 time=43.5 ms
64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=2 ttl=52 time=41.3 ms
64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=3 ttl=52 time=44.9 ms
64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=4 ttl=52 time=45.6 ms
64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=5 ttl=52 time=48.8 ms
^C
--- www.orangepi.org ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4006ms
rtt min/avg/max/mdev = 41.321/44.864/48.834/2.484 ms
桌面版镜像的测试方法
点击桌面右上角的网络配置图标(测试WIFI时请不要连接网线)
在弹出的下拉框中点击More networks可以看到所有扫描到的WIFI热点,然后选择想要连接的WIFI热点
然后输入WIFI热点的密码,再点击Connect就会开始连接WIFI
连接好WIFI后,可以打开浏览器查看是否能上网,浏览器的入口如下图所示
打开浏览器后如果能打开其他网页说明WIFI连接正常
设置静态IP地址的方法
请不要通过修改/etc/network/interfaces配置文件的方式来设置静态IP地址。
使用nmtui命令来设置静态IP地址
首先运行nmtui命令
orangepi@orangepi:~$ nmtui
然后选择Edit a connection并按下回车键
然后选择需要设置静态IP地址的网络接口,比如设置Ethernet接口的静态IP地址选择Wired connection 1就可以了
然后通过Tab键选择Edit并按下回车键
然后通过Tab键将光标移动到下图所示的<Automatic>位置进行IPv4的配置
然后回车,通过上下方向键选择Manual,然后回车确定
选择完后的显示如下图所示
然后通过Tab键将光标移动到<Show>
然后回车,回车后会弹出下面的设置界面
然后就可以在下图所示的位置设置IP地址(Addresses)、网关(Gateway)和DNS服务器的地址(里面还有很多其他设置选项,请自行探索),请根据自己的具体需求来设置,下图中设置的值只是一个示例
设置完后将光标移动到右下角的<OK>,然后回车确认
然后点击<Back>回退到上一级选择界面
然后选择Activate a connection,再将光标移动到<OK>,最后点击回车
然后选择需要设置的网络接口,比如Wired connection 1,然后将光标移动到<Deactivate>,再按下回车键禁用Wired connection 1
然后请不要移动光标,再按下回车键重新使能Wired connection 1,这样前面设置的静态IP地址就会生效了
然后通过<Back>和Quit按钮就可以退出nmtui
然后通过ip addr show eth0就能看到网口的IP地址已经变成前面设置的静态IP地址了
orangepi@orangepi:~$ ip addr show eth0
3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 5e:ac:14:a5:92:b3 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.177/24 brd 192.168.1.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet6 241e:3b8:3240:c3a0:e269:8305:dc08:135e/64 scope global dynamic noprefixroute
valid_lft 259149sec preferred_lft 172749sec
inet6 fe80::957d:bbbe:4928:3604/64 scope link noprefixroute
valid_lft forever preferred_lft forever
然后就可以测试网络的连通性来检查IP地址是否配置OK了,ping命令可以通过Ctrl+C快捷键来中断运行
orangepi@orangepi:~$ ping 192.168.1.47 -I eth0
PING 192.168.1.47 (192.168.1.47) from 192.168.1.188 eth0: 56(84) bytes of data.
64 bytes from 192.168.1.47: icmp_seq=1 ttl=64 time=0.233 ms
64 bytes from 192.168.1.47: icmp_seq=2 ttl=64 time=0.263 ms
64 bytes from 192.168.1.47: icmp_seq=3 ttl=64 time=0.273 ms
64 bytes from 192.168.1.47: icmp_seq=4 ttl=64 time=0.269 ms
64 bytes from 192.168.1.47: icmp_seq=5 ttl=64 time=0.275 ms
^C
--- 192.168.1.47 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4042ms
rtt min/avg/max/mdev = 0.233/0.262/0.275/0.015 ms
使用nmcli命令来设置静态IP地址
如果要设置网口的静态IP地址,请先将网线插入开发板,如果需要设置WIFI的静态IP地址,请先连接好WIFI,然后再开始设置静态IP地址
然后通过nmcli con show命令可以查看网络设备的名字,如下所示
orangepi为WIFI网络接口的名字(名字不一定相同)
Wired connection 1为以太网接口的名字
orangepi@orangepi:~$ nmcli con show
NAMEUUID TYPE DEVICE
orangepicfc4f922-ae48-46f1-84e1-2f19e9ec5e2awifi wlan0
Wired connection 19db058b7-7701-37b8-9411-efc2ae8bfa30ethernet eth0
然后输入下面的命令,其中
"Wired connection 1" 表示设置以太网口的静态IP地址,如果需要设置WIFI的静态IP地址,请修改为WIFI网络接口对应的名字(通过nmcli con show命令可以获取到)
ipv4.addresses后面是要设置的静态IP地址,可以修改为自己想要设置的值
ipv4.gateway 表示网关的地址
orangepi@orangepi:~$ nmcli con mod "Wired connection 1" \
ipv4.addresses "192.168.1.110" \
ipv4.gateway "192.168.1.1" \
ipv4.dns "8.8.8.8" \
ipv4.method "manual"
然后重启Linux系统
orangepi@orangepi:~$ sudo reboot
然后重新进入Linux系统使用ip addr show eth0命令就可以看到IP地址已经设置为想要的值了
orangepi@orangepi:~$ ip addr show eth0
3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 5e:ae:14:a5:91:b3 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.110/32 brd 192.168.1.110 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet6 240e:3b7:3240:c3a0:97de:1d01:b290:fe3a/64 scope global dynamic noprefixroute
valid_lft 259183sec preferred_lft 172783sec
inet6 fe80::3312:861a:a589:d3c/64 scope link noprefixroute
valid_lft forever preferred_lft forever
SSH远程登录开发板
Linux系统默认都开启了ssh远程登录,并且允许root用户登录系统。ssh登录前首先需要确保以太网或者wifi网络已连接,然后使用ip addr命令或者通过查看路由器的方式获取开发板的IP地址。
Ubuntu下SSH远程登录开发板
- 获取开发板的IP地址
- 然后就可以通过ssh命令远程登录Linux系统
test@test:~$ ssh root@192.168.1.xxx (需要替换为开发板的IP地址)
root@192.168.1.xx's password: (在这里输入密码,默认密码为orangepi)
注意,输入密码的时候,屏幕上是不会显示输入的密码的具体内容的,请不要以为是有什么故障,输入完后直接回车即可。
如果提示拒绝连接,只要使用的是Orange Pi提供的镜像,就请不要怀疑orangepi这个密码是不是不对,而是要找其他原因。
成功登录系统后的显示如下图所示
如果ssh无法正常登陆Linux系统,首先请检查下开发板的IP地址是否能ping通,如果ping通没问题的话,可以通过串口或者HDMI显示器登录Linux系统然后在开发板上输入下面的命令后再尝试是否能连接:
root@orangepi:~# reset_ssh.sh
如果还不行,请重烧系统试下。
Windows下SSH远程登录开发板
首先获取开发板的IP地址
在windows下可以使用MobaXterm远程登录开发板,首先新建一个ssh会话
然后会提示输入密码,默认root和orangepi用户的密码都为orangepi
注意,输入密码的时候,屏幕上是不会显示输入的密码的具体内容的,请不要以为是有什么故障,输入完后直接回车即可。
上传文件到开发板Linux系统中的方法
在Ubuntu PC中上传文件到开发板Linux系统中的方法
使用scp命令上传文件的方法
使用scp命令可以在Ubuntu PC中上传文件到开发板的Linux系统中,具体命令如下所示
file_path:需要替换为要上传文件的路径
orangepi:为开发板Linux系统的用户名,也可以替换成其它的,比如root
192.168.xx.xx: 为开发板的IP地址,请根据实际情况进行修改
/home/orangepi: 开发板Linux系统中的路径,也可以修改为其它的路径
test@test:~$ scp file_path orangepi@192.168.xx.xx:/home/orangepi/
如果要上传文件夹,需要加上-r参数
test@test:~$ scp -r dir_path orangepi@192.168.xx.xx:/home/orangepi/
scp还有更多的用法,请使用下面的命令查看man手册
test@test:~$ man scp
使用filezilla上传文件的方法
首先在Ubuntu PC中安装filezilla
test@test:~$ sudo apt install -y filezilla
然后使用下面的命令打开filezilla
test@test:~$ filezilla
filezilla打开后的界面如下所示,此时右边远程站点下面显示的是空的
连接开发板的方法如下图所示
- 连接成功后在filezilla软件的右边就可以看到开发板Linux文件系统的目录结构了
- 然后在filezilla软件的右边选择要上传到开发板中的路径,再在filezilla软件的左边选中Ubuntu PC中要上传的文件,再点击鼠标右键,再点击上传选项就会开始上传文件到开发板中了。
上传完成后就可以去开发板Linux系统中的对应路径中查看上传的文件了
上传文件夹的方法和上传文件的方法是一样的,这里就不再赘述了
在Windows PC中上传文件到开发板Linux系统中的方法
使用filezilla上传文件的方法
- 首先下载filezilla软件Windows版本的安装文件,下载链接如下所示
下载的安装包如下所示,然后双击直接安装即可
FileZilla_Server_1.5.1_win64-setup.exe
安装过程中,下面的安装界面请选择Decline,然后再选择Next>
- filezilla打开后的界面如下所示,此时右边远程站点下面显示的是空的
- 连接开发板的方法如下图所示:
- 然后选择保存密码,再点击确定
- 然后选择总是信任该主机,再点击确定
- 连接成功后在filezilla软件的右边就可以看到开发板Linux文件系统的目录结构了
- 然后在filezilla软件的右边选择要上传到开发板中的路径,再在filezilla软件的左边选中Windows PC中要上传的文件,再点击鼠标右键,再点击上传选项就会开始上传文件到开发板中了
上传完成后就可以去开发板Linux系统中的对应路径中查看上传的文件了
上传文件夹的方法和上传文件的方法是一样的,这里就不再赘述了
HDMI测试
HDMI显示测试
使用HDMI转HDMI线连接Orange Pi开发板和HDMI显示器
启动Linux系统后如果HDMI显示器有图像输出说明HDMI接口使用正常
注意,很多笔记本电脑虽然带有HDMI接口,但是笔记本的HDMI接口一般只有输出功能,并没有HDMI in的功能,也就是说并不能将其他设备的HDMI输出显示到笔记本的屏幕上。
当想把开发板的HDMI接到笔记本电脑HDMI接口时,请先确认清楚您的笔记本是支持HDMI in的功能。
当HDMI没有显示的时候,请先检查下HDMI线有没有插紧,确认接线没问题后,可以换一个不同的屏幕试下有没有显示。
HDMI转VGA显示测试
首先需要准备下面的配件
HDMI转VGA显示测试如下所示
使用HDMI转VGA显示时,开发板以及开发板的Linux系统是不需要做任何设置的,只需要开发板HDMI接口能正常显示就可以了。所以如果测试有问题,请检查HDMI转VGA转换器、VGA线以及显示器是否有问题。
HDMI分辨率设置方法
首先在Settings中打开Display
然后就能看到系统当前的分辨率
点击Resolution(分辨率)的下拉框,就可以看到显示器当前支持的所有分辨率
然后选择想要设置的分辨率,再点击Apply
等新的分辨率设置完后再选择Keep the configuration即可
蓝牙使用方法
桌面版镜像的测试方法
点击桌面右上角的蓝牙图标
然后选择适配器
如果有提示下面的界面,请选择Yes
然后在蓝牙的适配器设置界面中设置Visibility Setting为Always visible,然后关闭即可
然后打开蓝牙设备的配置界面
点击Search即可开始扫描周围的蓝牙设备
然后选择想要连接的蓝牙设备,再点击鼠标右键就会弹出对此蓝牙设备的操作界面,选择Pair即可开始配对,这里演示的是和Android手机配对
配对时,桌面的右上角会弹出配对确认框,选择Confirm确认即可,此时手机上也同样需要进行确认
和手机配对完后,可以选择已配对的蓝牙设备,然后右键选择Send a File即可开始给手机发送一张图片
发送图片的界面如下所示
USB接口测试
USB接口是可以接USB hub来扩展USB接口的数量的。
连接USB鼠标或键盘测试
- 将USB接口的键盘插入Orange Pi开发板的USB接口中
- 连接Orange Pi开发板到HDMI显示器
- 如果鼠标或键盘能正常操作系统说明USB接口使用正常(鼠标只有在桌面版的系统中才能使用)
连接USB存储设备测试
- 首先将U盘或者USB移动硬盘插入Orange Pi开发板的USB接口中
- 执行下面的命令如果能看到sdX的输出说明U盘识别成功
orangepi@orangepi:~$ cat /proc/partitions | grep "sd*"
major minor #blocksname
8030044160 sda
8130043119 sda1
- 使用mount命令可以将U盘挂载到/mnt中,然后就能查看U盘中的文件了
orangepi@orangepi:~$ sudo mount /dev/sda1 /mnt/
orangepi@orangepi:~$ ls /mnt/
test.txt
- 挂载完后通过df -h命令就能查看U盘的容量使用情况和挂载点
orangepi@orangepi:~$ df -h | grep "sd"
/dev/sda1 29G 208K 29G 1% /mnt
USB无线网卡测试
目前测试过的能用的USB无线网卡如下所示,其他型号的USB无线网卡请自行测试,如果无法使用就需要移植对应的USB无线网卡驱动
序号 型号 1 RTL8723BU 支持2.4G WIFI+BT4.0
2 RTL8811 支持2.4G +5G WIFI
3 RTL8821CU 支持2.4G +5G WIFI
支持BT 4.2
RTL8723BU测试
首先将RTL8723BU无线网卡模块插入开发板的USB接口中
然后Linux系统会自动加载RTL8723BU蓝牙和WIFI相关的内核模块,通过lsmod命令可以看到下面内核模块已自动加载
orangepi@orangepi:~$ lsmod
Module Size Used by
rfcomm 5734416
rtl8xxxu 1064960
rtk_btusb 614400
通过dmesg命令可以看到RTL8723BU模块的加载信息
orangepi@orangepi:~$ dmesg
......
[ 83.438901] usb 2-1: new high-speed USB device number 2 using ehci-platform
[ 83.588375] usb 2-1: New USB device found, idVendor=0bda, idProduct=b720, bcdDevice= 2.00
[ 83.588403] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 83.588422] usb 2-1: Product: 802.11n WLAN Adapter
[ 83.588443] usb 2-1: Manufacturer: Realtek
[ 83.588460] usb 2-1: SerialNumber: 00e04c000001
[ 83.601974] Bluetooth: hci0: RTL: examining hci_ver=06 hci_rev=000b lmp_ver=06 lmp_subver=8723
[ 83.603894] Bluetooth: hci0: RTL: rom_version status=0 version=1
[ 83.603920] Bluetooth: hci0: RTL: loading rtl_bt/rtl8723b_fw.bin
[ 83.610108] Bluetooth: hci0: RTL: loading rtl_bt/rtl8723b_config.bin
[ 83.611274] Bluetooth: hci0: RTL: cfg_sz 68, total sz 22564
[ 83.658494] rtk_btusb: Realtek Bluetooth USB driver ver 3.1.6d45ddf.20220519-142432
[ 83.658651] usbcore: registered new interface driver rtk_btusb
[ 83.667124] usb 2-1: This Realtek USB WiFi dongle (0x0bda:0xb720) is untested!
[ 83.667137] usb 2-1: Please report results to Jes.Sorensen@gmail.com
[ 83.890140] usb 2-1: Vendor: Realtek
[ 83.890153] usb 2-1: Product: 802.11n WLAN Adapter
[ 83.890159] usb 2-1: rtl8723bu_parse_efuse: dumping efuse (0x200 bytes):
......
[ 83.890412] usb 2-1: RTL8723BU rev E (SMIC) 1T1R, TX queues 3, WiFi=1, BT=1, GPS=0, HI PA=0
[ 83.890417] usb 2-1: RTL8723BU MAC: 00:13:ef:f4:58:ae
[ 83.890421] usb 2-1: rtl8xxxu: Loading firmware rtlwifi/rtl8723bu_nic.bin
[ 83.895289] usb 2-1: Firmware revision 35.0 (signature 0x5301)
[ 84.050893] Bluetooth: hci0: RTL: fw version 0x0e2f9f73
[ 84.266905] Bluetooth: RFCOMM TTY layer initialized
[ 84.266949] Bluetooth: RFCOMM socket layer initialized
[ 84.266999] Bluetooth: RFCOMM ver 1.11
[ 84.884270] usbcore: registered new interface driver rtl8xxxu
[ 84.912046] rtl8xxxu 2-1:1.2 wlx0013eff458ae: renamed from wlan0
然后通过sudo ifconfig命令可以看到RTL8723BU WIFI的设备节点,WIFI的连接和测试方法请参看WIFI连接测试一节,这里不再赘述
orangepi@orangepi:~$ sudo ifconfig wlx0013eff458ae
wlx0013eff458ae: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether 00:13:ef:f4:58:ae txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
然后通过hciconfig命令可以看到USB的蓝牙设备
orangepi@orangepi:~$ sudo apt update && sudo apt install bluez
orangepi@orangepi:~$ hciconfig
hci0: Type: Primary Bus: USB
BD Address: 00:13:EF:F4:58:AE ACL MTU: 820:8 SCO MTU: 255:16
DOWN
RX bytes:1252 acl:0 sco:0 events:125 errors:0
TX bytes:23307 acl:0 sco:0 commands:125 errors:0
在桌面中也可以看到出现了蓝牙图标,此时蓝牙还未打开,所以会显示一个红色的x
点击Turn Bluetooth On可以打开蓝牙
打开蓝牙后的显示如下所示
蓝牙的测试方法请参看蓝牙使用方法一节,这里不再赘述
RTL8811测试
首先将RTL8811无线网卡模块插入开发板的USB接口中
然后Linux系统会自动加载RTL8811 WIFI相关的内核模块,通过lsmod命令可以看到下面内核模块已自动加载
orangepi@orangepi:~$ lsmod
Module Size Used by
8821cu 1839104 0
通过dmesg命令可以看到RTL8811模块的加载信息
orangepi@orangepi:~$ dmesg
[ 118.618194] usb 2-1: new high-speed USB device number 2 using ehci-platform
[ 118.767152] usb 2-1: New USB device found, idVendor=0bda, idProduct=c811, bcdDevice= 2.00
[ 118.767181] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 118.767199] usb 2-1: Product: 802.11ac NIC
[ 118.767219] usb 2-1: Manufacturer: Realtek
[ 118.767235] usb 2-1: SerialNumber: 123456
[ 119.500530] usbcore: registered new interface driver rtl8821cu
[ 119.525498] rtl8821cu 2-1:1.0 wlx1cbfced9d260: renamed from wlan0
然后通过sudo ifconfig命令可以看到WIFI的设备节点,WIFI的连接和测试方法请参看WIFI连接测试一节,这里不再赘述
orangepi@orangepi:~$ sudo ifconfig wlx1cbfced9d260
wlx1cbfced9d260: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether 1c:bf:ce:d9:d2:60 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
RTL8821CU测试
首先将rtl8821cu 无线网卡模块插入开发板的usb 接口中
然后使用lsusb命令就可以看到rtl8821cu usb wifi模块的设备信息,请确保USB模块没有处于Driver CDROM Mode
orangepi@orangepi:~$ lsusb | grep "Realtek"
Bus 002 Device 003: ID 0bda:c820 Realtek Semiconductor Corp. 802.11ac NIC
orangepi@orangepi:~$ lsusb | grep "Realtek"
Bus 002 Device 002: ID 0bda:1a2b Realtek Semiconductor Corp. RTL8188GU 802.11n WLAN Adapter (Driver CDROM Mode)
如果lsusb命令看到的USB WIFI模块处于Driver CDROM Mode,请重新拔插下USB WIFI模块。如果还不行,请手动执行下面的命令切换下模式:
orangepi@orangepi:~$ sudo usb_modeswitch -KW -v 0bda -p 1a2b
Linux系统会自动加载rtl8821cu蓝牙和wifi相关的内核模块,通过lsmod命令可以看到下面内核模块已自动加载
orangepi@orangepi:~$ lsmod
Module Size Used by
8821cu 1839104 0
rtk_btusb 614400
通过dmesg命令可以看到rtl8821cu模块的加载信息
orangepi@orangepi:~$ dmesg
......
[ 57.083693] usb 2-1: new high-speed USB device number 2 using ehci-platform
[ 57.231888] usb 2-1: New USB device found, idVendor=0bda, idProduct=1a2b, bcdDevice= 2.00
[ 57.231916] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 57.231937] usb 2-1: Product: DISK
[ 57.231956] usb 2-1: Manufacturer: Realtek
[ 57.242594] usb-storage 2-1:1.0: USB Mass Storage device detected
[ 57.245674] scsi host0: usb-storage 2-1:1.0
[ 58.069172] usb 2-1: USB disconnect, device number 2
[ 58.440025] usb 2-1: new high-speed USB device number 3 using ehci-platform
[ 58.587819] usb 2-1: New USB device found, idVendor=0bda, idProduct=c820, bcdDevice= 2.00
[ 58.587827] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 58.587833] usb 2-1: Product: 802.11ac NIC
[ 58.587838] usb 2-1: Manufacturer: Realtek
[ 58.587844] usb 2-1: SerialNumber: 123456
[ 58.610463] rtk_btusb: Realtek Bluetooth USB driver ver 3.1.6d45ddf.20220519-142432
[ 58.610656] usbcore: registered new interface driver rtk_btusb
[ 58.634631] Bluetooth: hci0: RTL: examining hci_ver=08 hci_rev=000c lmp_ver=08 lmp_subver=8821
[ 58.636729] Bluetooth: hci0: RTL: rom_version status=0 version=1
[ 58.636740] Bluetooth: hci0: RTL: loading rtl_bt/rtl8821c_fw.bin
[ 58.664190] Bluetooth: hci0: RTL: loading rtl_bt/rtl8821c_config.bin
[ 58.664746] Bluetooth: hci0: RTL: cfg_sz 10, total sz 31990
[ 59.122471] Bluetooth: hci0: RTL: fw version 0x829a7644
[ 59.265513] usbcore: registered new interface driver rtl8821cu
[ 59.280119] rtl8821cu 2-1:1.2 wlx90de80521825: renamed from wlan0
然后通过sudo ifconfig命令可以看到rtl8821cu wifi的设备节点,wifi的连接和测试方法请参看WIFI连接测试一节,这里不再赘述
orangepi@orangepi:~$ sudo ifconfig wlx90de80521825
wlx90de80521825: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether 00:13:ef:f4:58:ae txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
然后通过hciconfig命令可以看到USB的蓝牙设备
orangepi@orangepi:~$ sudo apt-get update && sudo apt-get install -y bluez
orangepi@orangepi:~$ hciconfig
hci0: Type: Primary Bus: USB
BD Address: 00:13:EF:F4:58:AE ACL MTU: 820:8 SCO MTU: 255:16
DOWN
RX bytes:1252 acl:0 sco:0 events:125 errors:0
TX bytes:23307 acl:0 sco:0 commands:125 errors:0
在桌面中也可以看到出现了蓝牙图标,此时蓝牙还未打开,所以会显示一个红色的x
点击Turn Bluetooth On可以打开蓝牙
打开蓝牙后的显示如下所示
蓝牙的测试方法请参看蓝牙使用方法一节,这里不再赘述
USB摄像头测试
首先需要准备一个下图所示的或者类似的支持UVC协议的USB摄像头,然后将USB摄像头插入到Orange Pi开发板的USB接口中
通过v4l2-ctl命令可以看到USB摄像头的设备节点信息为/dev/video0
orangepi@orangepi:~$ v4l2-ctl --list-devices
Q8 HD Webcam: Q8 HD Webcam (usb-fc880000.usb-1):
/dev/video0
/dev/video1
/dev/media0
注意v4l2中的l是小写字母l,不是数字1。
另外video的序号不一定都是video0,请以实际看到的为准。
在桌面系统中可以使用Cheese直接打开USB摄像头,Cheese打开方法如下图所示:
Cheese打开USB摄像头后的界面如下图所示:
使用fswebcam测试USB摄像头的方法
安装fswebcam
orangepi@orangepi:~$ sudo apt update
orangepi@orangepi:~$ sudo apt-get install -y fswebcam
安装完fswebcam后可以使用下面的命令来拍照
a) -d 选项用于指定USB摄像头的设备节点
b) --no-banner用于去除照片的水印
c) -r 选项用于指定照片的分辨率
d) -S 选项用于设置跳过前面的帧数
e) ./image.jpg 用于设置生成的照片的名字和路径
orangepi@orangepi:~$ sudo fswebcam -d /dev/video0 \
--no-banner -r 1280x720 -S 5 ./image.jpg
在服务器版的Linux系统中,拍完照后可以使用scp命令将拍好的图片传到Ubuntu PC上镜像观看
orangepi@orangepi:~$ scp image.jpg test@192.168.1.55:/home/test (根据实际情况修改IP地址和路径)
在桌面版的Linux系统中,可以通过HDMI显示器直接查看拍摄的图片
音频测试
在桌面系统中测试音频方法
首先打开文件管理器
然后找到下面这个文件(如果系统中没有这个音频文件,可以自己上传一个音频文件到系统中)
然后选中audio.wav文件,右键选择使用vlc打开就可以开始播放
切换HDMI播放和耳机播放等不同音频设备的方法
使用命令播放音频的方法
耳机接口播放音频测试
首先将耳机插入开发板的耳机孔中
然后可以通过aplay -l命令可以查看下Linux系统支持的声卡设备,从下面的输出可知,card 0为rk809的声卡设备,也就是耳机的声卡设备
orangepi@orangepi:~$ aplay -l (-I是大写的I不是小写的L)
**** List of PLAYBACK Hardware Devices ****
card 0: rockchiprk809 [rockchip-rk809], device 0: dailink-multicodecs rk817-hifi-0 [dailink-multicodecs rk817-hifi-0]
Subdevices: 0/1
Subdevice #0: subdevice #0
card 1: rockchiphdmi [rockchip,hdmi], device 0: fe400000.i2s-i2s-hifi i2s-hifi-0 [fe400000.i2s-i2s-hifi i2s-hifi-0]
Subdevices: 0/1
Subdevice #0: subdevice #0
Subdevice #0: subdevice #0
然后使用aplay命令播放下系统自带的音频文件,如果耳机能听到声音说明硬件能正常使用
orangepi@orangepi:~$ aplay -D hw:0,0 /usr/share/sounds/alsa/audio.wav
Playing WAVE 'audio.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
HDMI音频播放测试
首先使用HDMI 转HDMI线将Orange Pi开发板连接到电视机上(其他的HDMI显示器需要确保可以播放音频)
然后查看下HDMI的声卡序号,从下面的输出可以知道HDMI的声卡为card 1
orangepi@orangepi:~$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: rockchiprk809 [rockchip-rk809], device 0: dailink-multicodecs rk817-hifi-0 [dailink-multicodecs rk817-hifi-0]
Subdevices: 0/1
Subdevice #0: subdevice #0
card 1: rockchiphdmi [rockchip,hdmi], device 0: fe400000.i2s-i2s-hifi i2s-hifi-0 [fe400000.i2s-i2s-hifi i2s-hifi-0]
Subdevices: 0/1
Subdevice #0: subdevice #0
Subdevice #0: subdevice #0
然后使用aplay命令播放下系统自带的音频文件,如果HDMI显示器或者电视能听到声音说明硬件能正常使用
orangepi@orangepi:~$ aplay -D hw:1,0 /usr/share/sounds/alsa/audio.wav
使用命令测试录音的方法
Orange Pi 3B开发板没有板载MIC,只能通过带MIC功能的耳机来录制音频。将带MIC功能的耳机插入开发板后,运行下面的命令会通过耳机录制一段音频
orangepi@orangepi:~$ amixer -c 0 cset name='Capture MIC Path' 'Main Mic'
orangepi@orangepi:~$ arecord -D hw:0,0 -d 5 -f cd -t wav /tmp/test.wav
温度传感器
- 查看系统温度传感器的命令为:
orangepi@orangepi:~$ sensors
soc_thermal-virtual-0
Adapter: Virtual device
temp1: +41.9°C (crit = +115.0°C)
gpu_thermal-virtual-0Adapter: Virtual device
temp1: +43.8°C
查看nvme ssd固态硬盘当前温度的命令为:
orangepi@orangepi:~$ sudo smartctl -a /dev/nvme0 | grep "Temperature:"
Temperature: 40 Celsius
40 Pin接口引脚说明
Orange Pi 3B开发板40 pin接口引脚的顺序请参考下图
Orange Pi 3B开发板40 pin接口引脚的功能如下表所示
40pin接口中总共有28个GPIO口,所有GPIO口的电压都是3.3v
安装wiringOP的方法
注意,Orange Pi发布的Linux镜像中已经预装了wiringOP,除非wiringOP的代码有更新,否则无需重新下载编译安装,直接使用即可。
编译好的wiringOP的deb包在orangepi-build中的存放路径为:
orangepi-build/external/cache/debs/arm64/wiringpi_x.xx.deb
进入系统后可以运行下gpio readall命令,如果能看到下面的输出,说明wiringOP已经预装并且能正常使用。
wiringOP目前主要适配了设置GPIO口输入输出,设置GPIO口输出高低电平以及设置上下拉电阻的功能,像硬件PWM这样的功能是用不了的。
下载wiringOP的代码
orangepi@orangepi:~$ sudo apt update
orangepi@orangepi:~$ sudo apt install -y git
orangepi@orangepi:~$ git clone https://github.com/orangepi-xunlong/wiringOP.git -b next
注意,Orange Pi 3B需要下载wiringOP next分支的代码,请别漏了-b next这个参数。
如果从GitHub下载代码有问题,可以直接使用Linux镜像中自带的wiringOP源码,存放位置为:/usr/src/wiringOP。
编译安装wiringOP
orangepi@orangepi:~$ cd wiringOP
orangepi@orangepi:~/wiringOP$ sudo ./build clean
orangepi@orangepi:~/wiringOP$ sudo ./build
测试gpio readall命令的输出如下
40pin接口GPIO、I2C、UART、SPI和PWM测试
注意,如果需要设置overlays同时打开多个配置,请像下面这样使用空格隔开写在一行即可。
orangepi@orangepi:~$ sudo vim /boot/orangepiEnv.txt
overlays=spi3-m0-cs0-spidev i2c2-m1 i2c3-m0 uart7-m2 uart9-m2 pwm11-m1
40pin GPIO口测试
Orange Pi发布的Linux系统中有预装一个blink_all_gpio程序,这个程序会设置40pin中的所有28个GPIO口不停的切换高低电平。
运行blink_all_gpio程序后,当用万用表去测量GPIO口的电平时,会发现GPIO引脚会在0和3.3v之间不停的切换。使用这个程序我们可以来测试GPIO口是否能正常工作。
运行blink_all_gpio程序的方式如下所示:orangepi@orangepi3b:~$ sudo blink_all_gpio #记得加sudo权限
[sudo] password for orangepi: #在这里需要输入密码
开发板40pin中总共有28个GPIO口可以使用,下面以7号引脚——对应GPIO为GPIO4_C3 ——对应wPi序号为2——为例演示如何设置GPIO口的高低电平
首先设置GPIO口为输出模式,其中第三个参数需要输入引脚对应的wPi的序号
root@orangepi:~/wiringOP# gpio mode 2 out
然后设置GPIO口输出低电平,设置完后可以使用万用表测量引脚的电压的数值,如果为0v,说明设置低电平成功
root@orangepi:~/wiringOP# gpio write 2 0
使用gpio readall可以看到7号引脚的值(V)变为了0
然后设置GPIO口输出高电平,设置完后可以使用万用表测量引脚的电压的数值,如果为3.3v,说明设置高电平成功
root@orangepi:~/wiringOP# gpio write 2 1
使用gpio readall可以看到7号引脚的值(V)变为了1
其他引脚的设置方法类似,只需修改wPi的序号为引脚对应的序号即可
40pin GPIO口上下拉电阻的设置方法
注意,Orange Pi 3B下面4个GPIO引脚因为外部有3.3V上拉,所以设置下拉是无效的,其它的引脚可以正常设置上下拉电阻功能
下面以11号引脚——对应GPIO为GPIO3_C6 ——对应wPi序号为5——为例演示如何设置GPIO口的上下拉电阻
首先需要设置GPIO口为输入模式,其中第三个参数需要输入引脚对应的wPi的序号
root@orangepi:~/wiringOP# gpio mode 5 in
设置为输入模式后,执行下面的命令可以设置GPIO口为上拉模式
root@orangepi:~/wiringOP# gpio mode 5 up
然后输入下面的命令读取GPIO口的电平,如果电平为1,说明上拉模式设置成功
root@orangepi:~/wiringOP# gpio read 5
1
然后执行下面的命令可以设置GPIO口为下拉模式
root@orangepi:~/wiringOP# gpio mode 5 down
然后输入下面的命令读取GPIO口的电平,如果电平为0,说明下拉模式设置成功
root@orangepi:~/wiringOP# gpio read 5
0
40pin SPI测试
由40pin接口的原理图可知,Orange Pi 3B可用的spi为spi3
在linux系统中,40 pin中的SPI默认都是关闭的,需要手动打开才能使用。详细步骤如下所示:
重启后进入系统先查看下Linux系统中是否存在spidev3.0的设备节点,如果存在,说明SPI3已经设置好了,可以直接使用
orangepi@orangepi:~$ ls /dev/spidev3.0
/dev/spidev3.0
先不短接SPI3的mosi和miso两个引脚,运行spidev_test的输出结果如下所示,可以看到TX和RX的数据不一致
orangepi@orangepi:~$ sudo spidev_test -v -D /dev/spidev3.0
spi mode: 0x0
bits per word: 8
max speed: 500000 Hz (500 KHz)
TX | FF FF FF FF FF FF 40 00 00 00 00 95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D | ......@.…▒..................▒.
RX | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ............................….
然后短接SPI3的mosi(40pin接口中的第19号引脚)和miso(40pin接口中的第21号引脚)两个引脚再运行spidev_test的输出如下,可以看到发送和接收的数据一样
orangepi@orangepi:~$ sudo spidev_test -v -D /dev/spidev3.0
spi mode: 0x0
bits per word: 8
max speed: 500000 Hz (500 KHz)
TX | FF FF FF FF FF FF 40 00 00 00 00 95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D | ......@.…▒..................▒.
RX | FF FF FF FF FF FF 40 00 00 00 00 95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D | ......@.…▒..................▒.
40pin I2C测试
由下表可知,Orange Pi 3B可用的i2c为i2c2、i2c3和i2c4共三组 i2c总线
从上表中可以看到,i2c4_m0和spi3_m0是引脚复用的,两者不能同时打开,i2c3_m0和uart3_m0也是引脚复用的,两者不能同时打开
在linux系统中,40 pin中的I2C总线默认都是关闭的,需要手动打开才能使用。详细步骤如下所示:
启动Linux系统后,先确认下/dev下存在i2c的设备节点
orangepi@orangepi:~# ls /dev/i2c-*
/dev/i2c-0 /dev/i2c-2 /dev/i2c-3 /dev/i2c-4 /dev/i2c-6
然后在40pin接头的i2c引脚上接一个i2c设备
i2c2-m1 i2c3-m0 i2c4-m0 sda引脚 对应3号引脚 对应27号引脚 对应19号引脚 sck引脚 对应5号引脚 对应28号引脚 对应23号引脚 vcc引脚 对应1号引脚 对应1号引脚 对应1号引脚 gnd引脚 对应6号引脚 对应6号引脚 对应6号引脚 然后使用i2cdetect -y命令如果能检测到连接的i2c设备的地址,就说明i2c能正常使用
orangepi@orangepi:~$ sudo i2cdetect -y 2 #i2c2的命令
orangepi@orangepi:~$ sudo i2cdetect -y 3 #i2c3的命令
orangepi@orangepi:~$ sudo i2cdetect -y 4 #i2c4的命令
40pin的UART测试
由下表可知,Orange Pi 3B可用的uart为uart3、uart7和uart9共三组uart总线
从上表中可以看到,i2c3_m0和uart3_m0是引脚复用的,两者不能同时打开
在linux系统中,40 pin中的UART默认都是关闭的,需要手动打开才能使用。详细步骤如下所示:
进入Linux系统后,先确认下/dev下是否存在对应uart的设备节点
orangepi@orangepi:~# ls /dev/ttyS*
/dev/ttyS1 /dev/ttyS3 /dev/ttyS7 /dev/ttyS9
然后开始测试uart接口,先使用杜邦线短接要测试的uart接口的rx和tx
uart3 uart7 uart9 tx引脚 对应28号引脚 对应16号引脚 对应29号引脚 rx引脚 对应27号引脚 对应15号引脚 对应22号引脚 使用gpio serial命令测试串口的回环功能如下所示,如果能看到下面的打印,说明串口通信正常
测试UART3
orangepi@orangepi:~$ sudo gpio serial /dev/ttyS3
[sudo] password for orangepi: #在这里输入密码
Out: 0: -> 0
Out: 1: -> 1
Out: 2: -> 2
Out: 3: -> 3
Out: 4: -> 4
Out: 5: -> 5^C
测试UART7
orangepi@orangepi:~$ sudo gpio serial /dev/ttyS7
[sudo] password for orangepi: #在这里输入密码
Out: 0: -> 0
Out: 1: -> 1
Out: 2: -> 2
Out: 3: -> 3
Out: 4: -> 4
Out: 5: -> 5^C
测试UART9
orangepi@orangepi:~$ sudo gpio serial /dev/ttyS9
[sudo] password for orangepi: #在这里输入密码
Out: 0: -> 0
Out: 1: -> 1
Out: 2: -> 2
Out: 3: -> 3
Out: 4: -> 4
Out: 5: -> 5^C
PWM的测试方法
由下表可知,Orange Pi 3B可用的pwm11和pwm15共两路pwm
在linux系统中,40 pin中的PWM默认都是关闭的,需要手动打开才能使用。详细步骤如下所示:
当打开一个pwm后,在/sys/class/pwm/中就会多出一个pwmchipX(X为具体的的数字),比如打开pwm11后,查看/sys/class/pwm/下的pwmchipX会由一个变成了两个
orangepi@orangepi:~$ ls /sys/class/pwm/
pwmchip0 pwmchip1
上面哪个pwmchip对应pwm11呢,我们先查看下 ls /sys/class/pwm/ -l命令的输出,如下所示:
然后由下表可知,pwm11寄存器的基地址为fe6f0030,再看 ls /sys/class/pwm/ -l命令的输出,可以看到pwmchip1中链接到了fe6f0030.pwm,所以pwm11对应pwmchip为pwmchip1
然后使用下面的命令可以让pwm11输出一个50Hz的方波(请先切换到root用户,再执行下面的命令)
上面演示的pwm11的测试方法,其他pwm测试方法都是类似的。
root@orangepi:~# echo 0 > /sys/class/pwm/pwmchip1/export
root@orangepi:~# echo 20000000 > /sys/class/pwm/pwmchip1/pwm0/period
root@orangepi:~# echo 1000000 > /sys/class/pwm/pwmchip1/pwm0/duty_cycle
root@orangepi:~# echo 1 > /sys/class/pwm/pwmchip1/pwm0/enable
wiringOP-Python的安装使用方法
wiringOP-Python是wiringOP的Python语言版本的库,用于在Python程序中操作开发板的GPIO、I2C、SPI和UART等硬件资源。
另外请注意下面所有的命令都是在root用户下操作的。wiringOP-Python的安装方法
首先安装依赖包
root@orangepi:~# sudo apt-get update
root@orangepi:~# sudo apt-get -y install git swig python3-dev python3-setuptools
然后使用下面的命令下载wiringOP-Python的源码
注意,下面的git clone--recursive命令会自动下载wiringOP的源码,因为wiringOP-Python是依赖wiringOP的。请确保下载过程没有因为网络问题而报错。
如果从GitHub下载代码有问题,可以直接使用Linux镜像中自带的wiringOP-Python源码,存放位置为:/usr/src/wiringOP-Python。root@orangepi:~# git clone --recursive https://github.com/orangepi-xunlong/wiringOP-Python -b next
root@orangepi:~# cd wiringOP-Python
root@orangepi:~/wiringOP-Python# git submodule update --init --remote
然后使用下面的命令编译wiringOP-Python并将其安装到开发板的Linux系统中
root@orangepi:~# cd wiringOP-Python
root@orangepi:~/wiringOP-Python# python3 generate-bindings.py > bindings.i
root@orangepi:~/wiringOP-Python# sudo python3 setup.py install
然后输入下面的命令,如果有帮助信息输出,说明wiringOP-Python安装成功,按下q键可以退出帮助信息的界面
- wiringpi
- # This file was automatically generated by SWIG (http://www.swig.org).
- # Version 4.0.2
- #
- # Do not make changes to this file unless you know what you are doing--modify
- # the SWIG interface file instead.
root@orangepi:~/wiringOP-Python# python3 -c "import wiringpi; help(wiringpi)"
Help on module wiringpi:
NAME
DESCRIPTION在python命令行下测试wiringOP-Python是否安装成功的步骤如下所示:
- 首先使用python3命令进入python3的命令行模式
root@orangepi:~# python3
- 然后导入wiringpi的python模块
>>> import wiringpi;
- 最后输入下面的命令可以查看下wiringOP-Python的帮助信息,按下q键可以退出帮助信息的界面
- wiringpi
- # This file was automatically generated by SWIG (http://www.swig.org).
- # Version 4.0.2
- #
- # Do not make changes to this file unless you know what you are doing--modify
- # the SWIG interface file instead.
- builtins.object
- GPIO
- I2C
- Serial
- nes
- class GPIO(builtins.object)
- | GPIO(pinmode=0)
- |
>>> help(wiringpi)
Help on module wiringpi:
NAME
DESCRIPTION
CLASSES
>>>
40pin GPIO口测试
wiringOP-Python跟wiringOP一样,也是可以通过指定wPi号来确定操作哪一个GPIO引脚,因为wiringOP-Python中没有查看wPi号的命令,所以只能通过wiringOP中的gpio命令来查看板子wPi号与物理引脚的对应关系。
下面以7号引脚——对应GPIO为GPIO4_A4 ——对应wPi序号为2——为例演示如何设置GPIO口的高低电平
直接用命令测试的步骤如下所示:
首先设置GPIO口为输出模式,其中pinMode函数的第一个参数是引脚对应的wPi的序号,第二个参数是GPIO的模式
root@orangepi:~/wiringOP-Python# python3 -c "import wiringpi; \
from wiringpi import GPIO; wiringpi.wiringPiSetup() ; \
wiringpi.pinMode(2, GPIO.OUTPUT) ; "
然后设置GPIO口输出低电平,设置完后可以使用万用表测量引脚的电压的数值,如果为0v,说明设置低电平成功
root@orangepi:~/wiringOP-Python# python3 -c "import wiringpi; \
from wiringpi import GPIO; wiringpi.wiringPiSetup() ;\
wiringpi.digitalWrite(2, GPIO.LOW)"
然后设置GPIO口输出高电平,设置完后可以使用万用表测量引脚的电压的数值,如果为3.3v,说明设置高电平成功
root@orangepi:~/wiringOP-Python# python3 -c "import wiringpi; \
from wiringpi import GPIO; wiringpi.wiringPiSetup() ;\
wiringpi.digitalWrite(2, GPIO.HIGH)"
在python3的命令行中测试的步骤如下所示:
首先使用python3命令进入python3的命令行模式
root@orangepi:~# python3
然后导入wiringpi的python模块
>>> import wiringpi
>>> from wiringpi import GPIO
然后设置GPIO口为输出模式,其中pinMode函数的第一个参数是引脚对应的wPi的序号,第二个参数是GPIO的模式
>>> wiringpi.wiringPiSetup()
0
>>> wiringpi.pinMode(2, GPIO.OUTPUT)
然后设置GPIO口输出低电平,设置完后可以使用万用表测量引脚的电压的数值,如果为0v,说明设置低电平成功
>>> wiringpi.digitalWrite(2, GPIO.LOW)
然后设置GPIO口输出高电平,设置完后可以使用万用表测量引脚的电压的数值,如果为3.3v,说明设置高电平成功
>>> wiringpi.digitalWrite(2, GPIO.HIGH)
wiringOP-Python在python代码中设置GPIO高低电平的方法可以参考下examples中的blink.py测试程序,blink.py测试程序会设置开发板40 pin中所有的GPIO口的电压不断的高低变化
root@orangepi:~/wiringOP-Python# cd examples
root@orangepi:~/wiringOP-Python/examples# ls blink.py
blink.py
root@orangepi:~/wiringOP-Python/examples# python3 blink.py
40pin SPI测试
由40pin接口的原理图可知,Orange Pi 3B可用的spi为spi3
在linux系统中,40 pin中的SPI默认都是关闭的,需要手动打开才能使用。详细步骤如下所示:
先查看下Linux系统中是否存在spidev3.0的设备节点,如果存在,说明SPI3已经设置好了,可以直接使用
orangepi@orangepi:~$ ls /dev/spidev3.0
/dev/spidev3.0
然后可以使用examples中的spidev_test.py程序测试下SPI的回环功能,spidev_test.py程序需要指定下面的两个参数:
--channel:指定SPI的通道号
--port:指定SPI的端口号
先不短接 SPI3 的 mosi 和 miso 两个引脚,运行 spidev_test.py 的输出结果如下所示,可以看到 TX 和 RX 的数据不一致
root@orangepi:~/wiringOP-Python# cd examples
root@orangepi:~/wiringOP-Python/examples# python3 spidev_test.py \
--channel 3 --port 0
spi mode: 0x0
max speed: 500000 Hz (500 KHz)
Opening device /dev/spidev3.0
TX | FF FF FF FF FF FF 40 00 00 00 00 95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D |......@.......…|
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 |.............….|
然后使用杜邦线短接SPI3的txd(40pin接口中的第19号引脚)和rxd(40pin接口中的第21号引脚)两个引脚再运行spidev_test.py的输出如下,可以看到发送和接收的数据一样,说明SPI3回环测试正常
root@orangepi:~/wiringOP-Python# cd examples
root@orangepi:~/wiringOP-Python/examples# python3 spidev_test.py \
--channel 3 --port 0
spi mode: 0x0
max speed: 500000 Hz (500 KHz)
Opening device /dev/spidev3.0
TX | FF FF FF FF FF FF 40 00 00 00 00 95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D |......@.......…|
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 |......@.......…|
40pin I2C测试
由下表可知,Orange Pi 3B可用的i2c为i2c2、i2c3和i2c4共三组 i2c总线
从上表中可以看到,i2c4_m0和spi3_m0是引脚复用的,两者不能同时打开,i2c3_m0和uart3_m0也是引脚复用的,两者不能同时打开
在linux系统中,40 pin中的I2C总线默认都是关闭的,需要手动打开才能使用。详细步骤如下所示:
启动Linux系统后,先确认下/dev下存在i2c的设备节点
orangepi@orangepi:~# ls /dev/i2c-*
/dev/i2c-0 /dev/i2c-2 /dev/i2c-3 /dev/i2c-4 /dev/i2c-6
然后在40pin接头的i2c引脚上接一个i2c设备,这里以ds1307 RTC模块为例
i2c2-m1 i2c3-m0 i2c4-m0 sda引脚 对应3号引脚 对应27号引脚 对应19号引脚 sck引脚 对应5号引脚 对应28号引脚 对应23号引脚 vcc引脚 对应1号引脚 对应1号引脚 对应1号引脚 gnd引脚 对应6号引脚 对应6号引脚 对应6号引脚 然后使用i2cdetect -y命令如果能检测到连接的i2c设备的地址,就说明i2c能正常使用
orangepi@orangepi:~$ sudo i2cdetect -y 2 #i2c2的命令
orangepi@orangepi:~$ sudo i2cdetect -y 3 #i2c3的命令
orangepi@orangepi:~$ sudo i2cdetect -y 4 #i2c4的命令
然后可以运行examples中的ds1307.py测试程序读取RTC的时间
root@orangepi:~/wiringOP-Python# cd examples
root@orangepi:~/wiringOP-Python/examples# python3 ds1307.py --device \
"/dev/i2c-4"
Thu 2023-01-05 14:57:55
Thu 2023-01-05 14:57:56
Thu 2023-01-05 14:57:57
^C
exit
40pin的UART测试
由下表可知,Orange Pi 3B可用的uart为uart3、uart7和uart9共三组uart总线
从上表中可以看到,i2c3_m0和uart3_m0是引脚复用的,两者不能同时打开
在linux系统中,40 pin中的UART默认都是关闭的,需要手动打开才能使用。详细步骤如下所示:
进入Linux系统后,先确认下/dev下是否存在对应uart的设备节点
orangepi@orangepi:~# ls /dev/ttyS*
/dev/ttyS1 /dev/ttyS3 /dev/ttyS7 /dev/ttyS9
然后开始测试uart接口,先使用杜邦线短接要测试的uart接口的rx和tx
uart3 uart7 uart9 tx引脚 对应28号引脚 对应16号引脚 对应29号引脚 rx引脚 对应27号引脚 对应15号引脚 对应22号引脚 使用examples中的serialTest.py程序测试串口的回环功能如下所示,如果能看到下面的打印,说明串口通信正常
测试UART3
root@orangepi:~/wiringOP-Python/examples# python3 serialTest.py --device \
"/dev/ttyS3"
Out: 0: -> 0
Out: 1: -> 1
Out: 2: -> 2
Out: 3: -> 3
Out: 4:^C
exit
测试UART7
root@orangepi:~/wiringOP-Python/examples# python3 serialTest.py --device \
"/dev/ttyS7"
Out: 0: -> 0
Out: 1: -> 1
Out: 2: -> 2
Out: 3: -> 3
Out: 4:^C
exit
测试UART9
root@orangepi:~/wiringOP-Python/examples# python3 serialTest.py --device \
"/dev/ttyS9"
Out: 0: -> 0
Out: 1: -> 1
Out: 2: -> 2
Out: 3: -> 3
Out: 4:^C
exit
硬件看门狗测试
Orange Pi发布的Linux系统中预装了watchdog_test程序,可以直接测试。
运行watchdog_test程序的方法如下所示:
第二个参数10表示看门狗的计数时间,如果这个时间内没有喂狗,系统会重启
我们可以通过按下键盘上的任意键(ESC除外)来喂狗,喂狗后,程序会打印一行keep alive表示喂狗成功
orangepi@orangepi:~$ sudo watchdog_test 10
open success
options is 33152,identity is sunxi-wdt
put_usr return,if 0,success:0
The old reset time is: 16
return ENOTTY,if -1,success:0
return ENOTTY,if -1,success:0
put_user return,if 0,success:0
put_usr return,if 0,success:0
keep alive
keep alive
keep alive
查看RK3566芯片的序列号
查看RK3566芯片序列号的命令如下所示,每个芯片的序列号都是不同的,所以可以使用序列号来区分多个开发板。
orangepi@orangepi:~$ cat_serial.sh
Serial : 8fa18eaf489041f0
下载安装arm64版本balenaEtcher的方法
balenaEtcher arm64版本的下载地址为:
deb版本balenaEtcher的安装使用方法:
deb版本的balenaEtcher安装命令如下所示:
orangepi@orangepi:~$ sudo apt install -y \
--fix-broken ./balena-etcher-electron_1.7.9+5945ab1f_arm64.deb
deb版本的balenaEtcher安装完成后,在Application中就可以打开了
balenaEtcher打开后的界面如下所示:
AppImage版本的balenaEtcher的使用方法:
宝塔Linux面板的安装方法
宝塔Linux面板是提升运维效率的服务器管理软件,支持一键LAMP/LNMP/集群/监控/网站/FTP/数据库/JAVA等100多项服务器管理功能(摘抄自宝塔官网)
首先需要扩展下/tmp空间的大小,设置完后需要重启下开发板的Linux系统,命令如下所示:
orangepi@orangepi:~$ sudo sed -i 's/nosuid/&,size=2G/' /etc/fstab
orangepi@orangepi:~$ sudo reboot
重启后,可以看到/tmp空间的大小变为2G了
orangepi@orangepi:~$ df -h | grep "/tmp"
tmpfs 2.0G 12K 2.0G1% /tmp
然后在Linux系统中输入下面的命令就可以开始宝塔的安装
orangepi@orangepi:~$ sudo install_bt_panel.sh
然后宝塔安装程序会提醒是否安装Bt-Panel到/www文件夹,此时输入y即可
+----------------------------------------------------------------------
| Bt-WebPanel FOR CentOS/Ubuntu/Debian
+----------------------------------------------------------------------
| Copyright © 2015-2099 BT-SOFT(http://www.bt.cn) All rights reserved.
+----------------------------------------------------------------------
| The WebPanel URL will be http://SERVER_IP:8888 when installed.
+----------------------------------------------------------------------
Do you want to install Bt-Panel to the /www directory now?(y/n): y
然后要做的就是耐心等待,当看到终端输出下面的打印信息时,说明宝塔已经安装完成,整个安装过程大约耗时34分钟,根据网络速度的不同可能会有一些差别
此时在浏览器中输入上面显示的面板地址就可以打开宝塔Linux面板的登录界面,然后在对应的位置输入上图显示的username和password就可以登录进宝塔
成功登录宝塔后的会弹出下面的欢迎界面,首先请将中间的用户须知阅读完拖到最下面,然后就可以选择”我已同意并阅读《用户协议》“,接着点击”进入面板”就可以进入宝塔了
进入宝塔后首先会提示需要绑定宝塔官网的账号,如果没有账号可以去宝塔的官网(https://www.bt.cn)注册一个
最终显示的界面如下图所示,可以很直观的看到开发板Linux系统的一些状态信息,比如负载状态、CPU的使用率、内存使用率和存储空间的使用情况等
宝塔的更多功能可以参考下面资料自行探索
使用手册:http://docs.bt.cn
GitHub链接:https://github.com/aaPanel/BaoTa
设置中文环境以及安装中文输入法
注意,安装中文输入法前请确保开发板使用的Linux系统为桌面版系统。
Debian系统的安装方法
首先设置默认locale为中文
输入下面的命令可以开始配置locale
orangepi@orangepi:~$ sudo dpkg-reconfigure locales
然后在弹出的界面中选择zh_CN.UTF-8 UTF-8(通过键盘上的上下方向按键来上下移动,通过空格键来选择,最后通过Tab键可以将光标移动到<OK>,然后回车即可)
然后设置默认locale为zh_CN.UTF-8
退出界面后就会开始locale的设置,命令行显示的输出如下所示
orangepi@orangepi:~$ sudo dpkg-reconfigure locales
Generating locales (this might take a while)...
en_US.UTF-8... done
zh_CN.UTF-8... done
Generation complete.
然后打开Input Method
然后选择OK
然后选择Yes
然后选择fcitx
然后选择OK
然后重启Linux系统才能使配置生效
然后打开Fcitx configuration
然后点击下图所示位置的+号
然后搜索Google Pinyin再点击OK
然后将Google Pinyin放到最前面
然后打开Geany这个编辑器测试下中文输入法
中文输入法测试如下所示
通过Ctrl+Space快捷键可以切换中英文输入法
如果需要整个系统都显示为中文,可以将/etc/default/locale中的变量都设置为zh_CN.UTF-8
orangepi@orangepi:~$ sudo vim /etc/default/locale
# File generated by update-locale
LC_MESSAGES=zh_CN.UTF-8
LANG=zh_CN.UTF-8
LANGUAGE=zh_CN.UTF-8
然后重启系统就能看到系统显示为中文了
Ubuntu 20.04系统的安装方法
首先打开Language Support
然后找到汉语(中国)选项
然后请使用鼠标左键选中汉语(中国)并按住不动,然后往上将其拖到最开始的位置,拖完后的显示如下图所示:
注意,这一步不是很好拖动的,请耐心多试几次。
然后选择Apply System-Wide将中文设置应用到整个系统
然后设置Keyboard input method system为fcitx
然后重启Linux系统使配置生效
重新进入系统后,在下面的界面请选择不要再次询问我,然后请根据自己的喜好决定标准文件夹是否也要更新为中文
然后可以看到桌面都显示为中文了
然后我们可以打开Geany测试下中文输入法,打开方式如下图所示
打开Geany后,默认还是英文输入法,我们可以通过Ctrl+Space快捷键来切换成中文输入法,然后就能输入中文了
Ubuntu 22.04系统的安装方法
首先打开Language Support
然后找到汉语(中国)选项
然后请使用鼠标左键选中汉语(中国)并按住不动,然后往上将其拖到最开始的位置,拖完后的显示如下图所示:
注意,这一步不是很好拖动的,请耐心多试几次。
然后选择Apply System-Wide将中文设置应用到整个系统
然后重启Linux系统使配置生效
重新进入系统后,在下面的界面请选择不要再次询问我,然后请根据自己的喜好决定标准文件夹是否也要更新为中文
然后可以看到桌面都显示为中文了
然后打开Fcitx5配置程序
然后选择使用拼音输入法
选择后的界面如下所示,再点击确定即可
然后我们可以打开Geany测试下中文输入法,打开方式如下图所示
打开Geany后,默认还是英文输入法,我们可以通过Ctrl+Space快捷键来切换成中文输入法,然后就能输入中文了
远程登录Linux系统桌面的方法
Ubuntu Gnome Wayland镜像不支持使用此处介绍的Nomachine和VNC来远程登录桌面。
使用NoMachine远程登录
请确保开发板安装的Ubuntu或者Debian系统为桌面版本的系统。另外NoMachine也提供了详细的使用文档,强烈建议通读此文档来熟悉NoMachine的使用,文档链接如下所示:
NoMachine支持Windows、Mac、Linux、iOS和安卓平台,所以我们可以在多种设备上通过NoMachine来远程登录控制Orange Pi开发板。下面演示下在Windows中通过NoMachine来远程登录Orange Pi开发板的Linux系统桌面。其他平台的安装方法请参考下NoMachine的官方文档。
操作前请先确保Windwos电脑和开发板在同一局域网内,并且能正常ssh登录开发板的Ubuntu或者Debian系统。
首先下载NoMachine软件Linux arm64 deb版本的安装包,然后安装到开发板的Linux系统中
- 由于RK3566是ARMv8架构的SOC,我们使用的系统为Ubuntu或者Debian,所以这里需要下载NoMachine for ARM ARMv8 DEB安装包,下载链接如下所示:
注意,这个下载链接可能会变,请认准Armv8/Arm64版本的deb包。
- 然后下载NoMachine软件Windows版本的安装包,下载地址如下所示
注意,这个下载链接可能会变。
然后在Windows中安装NoMachine,安装完后请重启下电脑
然后在Window中打开NoMachine
NoMachine启动后会自动扫描局域网内其他安装有NoMachine的设备,进入NoMachine的主界面后就可以看到开发板已经在可连接的设备列表里了,然后点击下图红色方框所示的位置即可开始登录开发板的Linux系统桌面
然后点击OK
然后在下图对应的位置输入开发板Linux系统的用户名和密码,再点击OK开始登陆
然后在接下来的界面中都点击OK
最后就能看到开发板Linux系统的桌面了
使用VNC远程登录
操作前请先确保Windwos电脑和开发板在同一局域网内,并且能正常ssh登录开发板的Ubuntu或者Debian系统。
Ubuntu20.04测试VNC很多问题,请不要使用这种方法。
首先运行set_vnc.sh脚本设置下vnc,记得加sudo权限
orangepi@orangepi:~$ sudo set_vnc.sh
You will require a password to access your desktops.
Password: #在这里设置vnc的密码,8位字符
Verify: #在这里设置vnc的密码,8位字符
Would you like to enter a view-only password (y/n)? n
xauth: file /root/.Xauthority does not exist
New 'X' desktop is orangepi3b:1
Creating default startup script /root/.vnc/xstartup
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/orangepi3b:1.log
Killing Xtightvnc process ID 3047
New 'X' desktop is orangepi3b:1
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/orangepi3b:1.log
使用MobaXterm软件连接开发板linux系统桌面的步骤如下所示:
Linux系统支持的部分编程语言测试
Debian Bullseye系统
Debian Bullseye默认安装有gcc编译工具链,可以直接在开发板的Linux系统中编译C语言的程序
gcc的版本如下所示
orangepi@orangepi:~$ gcc --version
gcc (Debian 10.2.1-6) 10.2.1 20210110
Copyright (C) 2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
编写C语言的hello_world.c程序
orangepi@orangepi:~$ vim hello_world.c
#include <stdio.h>
int main(void)
{
printf("Hello World!\n");
return 0;
}
然后编译运行hello_world.c
orangepi@orangepi:~$ gcc -o hello_world hello_world.c
orangepi@orangepi:~$ ./hello_world
Hello World!
Debian Bullseye默认安装有Python3
Python具体版本如下所示
orangepi@orangepi:~$ python3
Python 3.9.2 (default, Feb 28 2021, 17:03:44)
[GCC 10.2.1 20210110] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
编写Python语言的hello_world.py程序
orangepi@orangepi:~$ vim hello_world.py
print('Hello World!')
运行hello_world.py的结果如下所示
orangepi@orangepi:~$ python3 hello_world.py
Hello World!
Debian Bullseye默认没有安装Java的编译工具和运行环境
可以使用下面的命令安装openjdk,Debian > Bullseye中最新版本为openjdk-17
orangepi@orangepi:~$ sudo apt install -y openjdk-17-jdk
安装完后可以查看下Java的版本
orangepi@orangepi:~$ java --version
编写Java版本的hello_world.java
orangepi@orangepi:~$ vim hello_world.java
public class hello_world
{
public static void main(String[] args)
{
System.out.println("Hello World!");
}
}
然后编译运行hello_world.java
orangepi@orangepi:~$ javac hello_world.java
orangepi@orangepi:~$ java hello_world
Hello World!
Ubuntu Focal系统
Ubuntu Focal默认安装有gcc编译工具链,可以直接在开发板的Linux系统中编译C语言的程序
gcc的版本如下所示
orangepi@orangepi:~$ gcc --version
gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
编写C语言的hello_world.c程序
orangepi@orangepi:~$ vim hello_world.c
#include <stdio.h>
int main(void)
{
printf("Hello World!\n");
return 0;
}
然后编译运行hello_world.c
orangepi@orangepi:~$ gcc -o hello_world hello_world.c
orangepi@orangepi:~$ ./hello_world
Hello World!
Ubuntu Focal默认安装有Python3
Python3具体版本如下所示
orangepi@orangepi:~$ python3
Python 3.8.10 (default, Nov 14 2022, 12:59:47)
[GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
编写Python语言的hello_world.py程序
orangepi@orangepi:~$ vim hello_world.py
print('Hello World!')
运行hello_world.py的结果如下所示
orangepi@orangepi:~$ python3 hello_world.py
Hello World!
Ubuntu Focal默认没有安装Java的编译工具和运行环境
可以使用下面的命令安装openjdk-17
orangepi@orangepi:~$ sudo apt install -y openjdk-17-jdk
安装完后可以查看下Java的版本
orangepi@orangepi:~$ java --version
openjdk 17.0.2 2022-01-18
OpenJDK Runtime Environment (build 17.0.2+8-Ubuntu-120.04)
OpenJDK 64-Bit Server VM (build 17.0.2+8-Ubuntu-120.04, mixed mode, sharing)
编写Java版本的hello_world.java
orangepi@orangepi:~$ vim hello_world.java
public class hello_world
{
public static void main(String[] args)
{
System.out.println("Hello World!");
}
}
然后编译运行hello_world.java
orangepi@orangepi:~$ javac hello_world.java
orangepi@orangepi:~$ java hello_world
Hello World!
Ubuntu Jammy系统
Ubuntu Jammy默认安装有gcc编译工具链,可以直接在开发板的Linux系统中编译C语言的程序
gcc的版本如下所示
orangepi@orangepi:~$ gcc --version
gcc (Ubuntu 11.2.0-19ubuntu1) 11.2.0
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
编写C语言的hello_world.c程序
orangepi@orangepi:~$ vim hello_world.c
#include <stdio.h>
int main(void)
{
printf("Hello World!\n");
return 0;
}
然后编译运行hello_world.c
orangepi@orangepi:~$ gcc -o hello_world hello_world.c
orangepi@orangepi:~$ ./hello_world
Hello World!
Ubuntu Jammy默认安装有Python3
Python3具体版本如下所示
orangepi@orangepi:~$ python3
Python 3.10.4 (main, Apr 2 2022, 09:04:19) [GCC 11.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
编写Python语言的hello_world.py程序
orangepi@orangepi:~$ vim hello_world.py
print('Hello World!')
运行hello_world.py的结果如下所示
orangepi@orangepi:~$ python3 hello_world.py
Hello World!
Ubuntu Jammy默认没有安装Java的编译工具和运行环境
可以使用下面的命令安装openjdk-18
orangepi@orangepi:~$ sudo apt install -y openjdk-18-jdk
安装完后可以查看下Java的版本
orangepi@orangepi:~$ java --version
openjdk 18-ea 2022-03-22
OpenJDK Runtime Environment (build 18-ea+36-Ubuntu-1)
OpenJDK 64-Bit Server VM (build 18-ea+36-Ubuntu-1, mixed mode, sharing)
编写Java版本的hello_world.java
orangepi@orangepi:~$ vim hello_world.java
public class hello_world
{
public static void main(String[] args)
{
System.out.println("Hello World!");
}
}
然后编译运行hello_world.java
orangepi@orangepi:~$ javac hello_world.java
orangepi@orangepi:~$ java hello_world
Hello World!
QT的安装方法
使用下面的脚本可以安装QT5和QT Creator
orangepi@orangepi:~$ install_qt.sh
安装完后会自动打印QT的版本号
Ubuntu20.04自带的qt版本为5.12.8
orangepi@orangepi:~$ install_qt.sh
......
QMake version 3.1
Using Qt version 5.12.8 in /usr/lib/aarch64-linux-gnu
Ubuntu22.04自带的QT版本为5.15.3
orangepi@orangepi:~$ install_qt.sh
......
QMake version 3.1
Using Qt version 5.15.3 in /usr/lib/aarch64-linux-gnu
Debian11自带的QT版本为5.15.2
orangepi@orangepi:~$ install_qt.sh
......
QMake version 3.1
Using Qt version 5.15.2 in /usr/lib/aarch64-linux-gnu
Debian12自带的QT版本为5.15.8
orangepi@orangepi:~$ install_qt.sh
......
QMake version 3.1
Using Qt version 5.15.8 in /usr/lib/aarch64-linux-gnu
然后在Applications中就可以看到QT Creator的启动图标
也可以使用下面的命令打开QT Creator
orangepi@orangepi:~$ qtcreator
在QT和QT应用的启动过程中,如果提示下面的错误,请直接忽略,此错误对应用的运行不会有影响。
libGL error: failed to create dri screen
libGL error: failed to load driver: rockchip
libGL error: failed to create dri screen
libGL error: failed to load driver: rockchip
QT Creator打开后的界面如下所示
QT Creator的版本如下所示
然后设置下QT
然后就可以打开一个示例代码
点击示例代码后会自动打开对应的说明文档,可以仔细看下其中的使用说明
然后点击下Configure Project
然后点击左下角的绿色三角形编译运行下示例代码
等待一段时间后,会弹出下图所示的界面,此时就说明QT能正常编译运行
参考资料
https://wiki.qt.io/Install_Qt_5_on_Ubuntu
ROS安装方法
Ubuntu20.04安装ROS 1 Noetic的方法
- ROS 1当前活跃的版本如下所示,推荐版本为Noetic Ninjemys
ROS 1 Noetic Ninjemys官方安装文档链接如下所示:
ROS Noetic Ninjemys官方安装文档中Ubuntu推荐使用Ubuntu20.04,所以请确保开发板使用的系统为Ubuntu20.04桌面版系统
然后使用下面的脚本安装ros1
orangepi@orangepi3b:~$ install_ros.sh ros1
使用ROS工具前,首先需要初始化下rosdep,然后编译源码时就能快速的安装一些系统依赖和一些ROS中的核心组件
- The read operation timed out
- rosdep update
注意,运行下面的命令需要确保开发板能正常访问github,否则会由于网络问题而报错。
install_ros.sh脚本会尝试修改/etc/hosts并自动运行下面的命令。但是这种方法无法保证每次都能正常访问github,如果install_ros.sh安装完ros1后有提示下面的错误,请自己想其它办法让开发板的Linux系统能正常访问github,然后再手动运行下面的命令。
https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yamlHit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml
ERROR: error loading sources list:
orangepi@orangepi:~$ source /opt/ros/noetic/setup.bash
orangepi@orangepi:~$ sudo rosdep init
Wrote /etc/ros/rosdep/sources.list.d/20-default.list
Recommended: please run
orangepi@orangepi:~$ rosdep update
reading in sources list data from /etc/ros/rosdep/sources.list.d
Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml
Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml
Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml
Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/ruby.yaml
Hit https://raw.githubusercontent.com/ros/rosdistro/master/releases/fuerte.yaml
Query rosdistro index https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml
Skip end-of-life distro "ardent"
Skip end-of-life distro "bouncy"
Skip end-of-life distro "crystal"
Skip end-of-life distro "dashing"
Skip end-of-life distro "eloquent"
Add distro "foxy"
Add distro "galactic"
Skip end-of-life distro "groovy"
Add distro "humble"
Skip end-of-life distro "hydro"
Skip end-of-life distro "indigo"
Skip end-of-life distro "jade"
Skip end-of-life distro "kinetic"
Skip end-of-life distro "lunar"
Add distro "melodic"
Add distro "noetic"
Add distro "rolling"
updated cache in /home/orangepi/.ros/rosdep/sources.cache
然后在桌面中打开一个命令行终端窗口,再使用test_ros.sh脚本可以启动一个小海龟的例程来测试下ROS是否能正常使用
orangepi@orangepi:~$ test_ros.sh
运行完test_ros.sh脚本后,会弹出下图所示的一个小海龟
然后请保持刚才打开终端窗口在最上面
Ubuntu20.04安装ROS 2 Galactic的方法
ROS 2当前活跃的版本如下所示,推荐版本为Galactic Geochelone
ROS 2 Galactic Geochelone官方安装文档链接如下所示:
docs.ros.org/en/galactic/Installation.html
http://docs.ros.org/en/galactic/Installation/Ubuntu-Install-Debians.html
ROS 2 Galactic Geochelone官方安装文档中Ubuntu Linux推荐使用Ubuntu20.04,所以请确保开发板使用的系统为Ubuntu20.04桌面版系统。安装ROS 2有几种方法,下面演示下通过Debian packages的方式来安装ROS 2 Galactic Geochelone
使用install_ros.sh脚本可以安装ros2
orangepi@orangepi:~$ install_ros.sh ros2
install_ros.sh脚本安装完ros2后会自动运行下ros2 -h命令,如果能看到下面的打印,说明ros2安装完成
usage: ros2 [-h] Call `ros2 <command> -h` for more detailed usage. ...
ros2 is an extensible command-line tool for ROS 2.
optional arguments:
-h, --help show this help message and exit
Commands:
action Various action related sub-commands
bag Various rosbag related sub-commands
component Various component related sub-commands
daemon Various daemon related sub-commands
doctor Check ROS setup and other potential issues
interface Show information about ROS interfaces
launch Run a launch file
lifecycle Various lifecycle related sub-commands
multicast Various multicast related sub-commands
node Various node related sub-commands
param Various param related sub-commands
pkg Various package related sub-commands
run Run a package specific executable
security Various security related sub-commands
service Various service related sub-commands
topic Various topic related sub-commands
wtf Use `wtf` as alias to `doctor`
Call `ros2 <command> -h` for more detailed usage.
然后可以使用 test_ros.sh脚本测试下ROS 2是否安装成功,如果能看到下面的打印,说明ROS 2能正常运行
orangepi@orangepi3b:~$ test_ros.sh
[INFO] [1671174101.200091527] [talker]: Publishing: 'Hello World: 1'
[INFO] [1671174101.235661048] [listener]: I heard: [Hello World: 1]
[INFO] [1671174102.199572327] [talker]: Publishing: 'Hello World: 2'
[INFO] [1671174102.204196299] [listener]: I heard: [Hello World: 2]
[INFO] [1671174103.199580322] [talker]: Publishing: 'Hello World: 3'
[INFO] [1671174103.204019965] [listener]: I heard: [Hello World: 3]
运行下面的命令可以打开rviz2
orangepi@orangepi:~$ source /opt/ros/galactic/setup.bash
orangepi@orangepi:~$ ros2 run rviz2 rviz2
ROS的使用方法请参考下ROS 2的文档
Ubuntu22.04安装ROS 2 Humble的方法
使用install_ros.sh脚本可以安装ros2
orangepi@orangepi:~$ install_ros.sh ros2
install_ros.sh脚本安装完ros2后会自动运行下ros2 -h命令,如果能看到下面的打印,说明ros2安装完成
usage: ros2 [-h] Call `ros2 <command> -h` for more detailed usage. ...
ros2 is an extensible command-line tool for ROS 2.
optional arguments:
-h, --help show this help message and exit
Commands:
action Various action related sub-commands
bag Various rosbag related sub-commands
component Various component related sub-commands
daemon Various daemon related sub-commands
doctor Check ROS setup and other potential issues
interface Show information about ROS interfaces
launch Run a launch file
lifecycle Various lifecycle related sub-commands
multicast Various multicast related sub-commands
node Various node related sub-commands
param Various param related sub-commands
pkg Various package related sub-commands
run Run a package specific executable
security Various security related sub-commands
service Various service related sub-commands
topic Various topic related sub-commands
wtf Use `wtf` as alias to `doctor`
Call `ros2 <command> -h` for more detailed usage.
然后可以使用 test_ros.sh脚本测试下ROS 2是否安装成功,如果能看到下面的打印,说明ROS 2能正常运行
orangepi@orangepi3b:~$ test_ros.sh
[INFO] [1671174101.200091527] [talker]: Publishing: 'Hello World: 1'
[INFO] [1671174101.235661048] [listener]: I heard: [Hello World: 1]
[INFO] [1671174102.199572327] [talker]: Publishing: 'Hello World: 2'
[INFO] [1671174102.204196299] [listener]: I heard: [Hello World: 2]
[INFO] [1671174103.199580322] [talker]: Publishing: 'Hello World: 3'
[INFO] [1671174103.204019965] [listener]: I heard: [Hello World: 3]
运行下面的命令可以打开rviz2
orangepi@orangepi:~$ source /opt/ros/humble/setup.bash
orangepi@orangepi:~$ ros2 run rviz2 rviz2
参考文档
http://docs.ros.org/en/humble/index.html
http://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html
安装内核头文件的方法
OPi发布的Linux镜像默认自带了内核头文件的deb包,存放的位置为/opt/
orangepi@orangepi:~$ ls /opt/linux-headers*
/opt/linux-headers-legacy-rockchip-rk356x_x.x.x_arm64.deb
使用下面的命令可以安装内核头文件的deb包
内核头文件deb包的名字需要替换为实际的名字,请不要照抄。
orangepi@orangepi:~$ sudo dpkg -i /opt/linux-headers-legacy-rockchip-rk356x_1.x.x_arm64.deb
安装完后在/usr/src下就能看到内核头文件所在的文件夹
orangepi@orangepi:~$ ls /usr/src
linux-headers-5.10.160-rockchip-rk356x
然后可以编写一个hello内核模块测试下内核头文件
首先编写hello内核模块的代码,如下所示:
orangepi@orangepi:~$ vim hello.c
#include <linux/init.h>
#include <linux/module.h>
static int hello_init(void)
{
printk("Hello Orange Pi -- init\n");
return 0;
}
static void hello_exit(void)
{
printk("Hello Orange Pi -- exit\n");
return;
}
module_init(hello_init);
module_exit(hello_exit);
MODULE_LICENSE("GPL");
然后编写编译hello内核模块的Makefile文件,如下所示:
orangepi@orangepi:~$ vim Makefile
ifneq ($(KERNELRELEASE),)
obj-m:=hello.o
else
KDIR :=/lib/modules/$(shell uname -r)/build
PWD :=$(shell pwd)
all:
make -C $(KDIR) M=$(PWD) modules
clean:
rm -f *.ko *.o *.mod.o *.mod *.symvers *.cmd *.mod.c *.order
endif
然后使用make命令编译hello内核模块,编译过程的输出如下所示:
如果自己复制的代码这里编译如果有问题,请去官方工具中下载源码然后上传到开发板的Linux系统中测试。
orangepi@orangepi:~$ make
make -C /lib/modules/5.10.160-rockchip-35xx/build M=/home/orangepi modules
make[1]: Entering directory '/usr/src/linux-headers-5.10.160-rockchip-rk35xx'
CC [M] /home/orangepi/hello.o
MODPOST /home/orangepi/Module.symvers
CC [M] /home/orangepi/hello.mod.o
LD [M] /home/orangepi/hello.ko
make[1]: Leaving directory '/usr/src/linux-headers-5.10.160-rockchip-rk35xx'
编译完后会生成hello.ko内核模块
orangepi@orangepi:~$ ls *.ko
hello.ko
使用insmod命令可以将hello.ko内核模块插入内核中
orangepi@orangepi:~$ sudo insmod hello.ko
然后使用demsg命令可以查看下hello.ko内核模块的输出,如果能看到下面的输出说明hello.ko内核模块加载正确
orangepi@orangepi:~$ dmesg | grep "Hello"
[ 2871.893988] Hello Orange Pi -- init
使用rmmod命令可以卸载hello.ko内核模块
orangepi@orangepi:~$ sudo rmmod hello
orangepi@orangepi:~$ dmesg | grep "Hello"
[ 2871.893988] Hello Orange Pi -- init
[ 3173.800892] Hello Orange Pi -- exit
树莓派5寸屏幕的使用
树莓派5寸屏幕的组装方法
首先准备需要的配件
然后将15pin MIPI排线按照下图所示的方式连接到树莓派5寸屏幕上(注意绝缘面的朝向)
最后连接到Orange Pi 3B开发板的LCD接口上
打开树莓派5寸屏幕配置的方法
Linux镜像默认是没有打开树莓派5寸屏幕的配置的,如果需要使用树莓派5寸屏幕,需要手动打开才行。
打开mipi lcd配置的步骤如下所示:
首先运行下orangepi-config,普通用户记得加sudo权限
orangepi@orangepi:~$ sudo orangepi-config
然后选择System
然后选择Hardware
然后使用键盘的方向键定位到raspi-7inch-touchscreen,再使用空格选中
然后选择<Save>保存
然后选择<Back>
然后选择<Reboot>重启系统使配置生效
上面的设置最终会在/boot/orangepiEnv.txt中加入overlays=raspi-7inch-touchscreen这句配置。设置完后可以先检查下。如果不存在这句配置,那么设置就是有问题。
如果觉得使用orangepi-config比较麻烦,也可以使用vim编辑器打开/boot/orangepiEnv.txt,然后加入overlays=raspi-7inch-touchscreen 这句配置也是可以。
orangepi@orangepi:~$ cat /boot/orangepiEnv.txt | grep "raspi"
overlays=raspi-7inch-touchscreen #示例配置
启动后可以看到lcd屏幕的显示如下所示:
服务器版镜像旋转显示方向的方法
在/boot/orangepiEnv.txt中加入extraargs=fbcon=rotate:要旋转的方向这行配置就可以设置服务器版本的Linux系统显示的方向,其中fbcon=rotate:后面的数字可以设置为:
0: 正常屏(默认为横屏)
1: 顺时钟转90度
2: 翻转180度
3: 顺时钟转270度
orangepi@orangepi:~$ sudo vim /boot/orangepiEnv.txt
overlays=lcd1
extraargs=cma=64M fbcon=rotate:3
注意,/boot/orangepiEnv.txt中如果默认有extraargs=cma=64M这行配置,fbcon=rotate:3这个配置添加到extraargs=cma=64M的后面即可(需要用空格隔开)。
然后重启Linux系统就能看到lcd屏幕显示的方向已经旋转了
桌面版镜像旋转显示和触摸方向的方法
首先在Linux系统中打开Display设置
然后在Rotation中选择想要旋转的方向
然后点击Apply
然后选择Keep this configuration
此时屏幕显示就已旋转完成,然后关闭掉Display程序即可
上面的步骤只会选择显示方向,并不会旋转触摸的方向,使用set_lcd_rotate.sh脚本可以旋转下触摸的方向,此脚本设置完后会自动重启,然后就可以测试触摸是否已经能正常使用了
None: 不旋转
orangepi@orangepi:~$ set_lcd_rotate.sh none
Left: 向左旋转90度
orangepi@orangepi:~$ set_lcd_rotate.sh left
Inverted: 上下翻转,相当于旋转180度
orangepi@orangepi:~$ set_lcd_rotate.sh inverted
Right: 向右旋转90度
orangepi@orangepi:~$ set_lcd_rotate.sh right
set_lcd_rotate.sh脚本主要做四件事:
旋转framebuffer显示的方向
旋转触摸的方向
关闭开机logo
重启系统
旋转触摸的方向是通过在/usr/share/X11/xorg.conf.d/40-libinput.conf中加入Option "TransformationMatrix" "x x x x x x x x x"这行配置来实现的。其中"x x x x x x x x x"不同的方向配置不同。
eDP屏幕的使用方法
eDP屏幕的组装方法
打开eDP屏幕配置的方法
Linux镜像默认是没有打开eDP屏幕的配置的,如果需要使用eDP屏幕,需要手动打开才行。
打开eDP屏配置的步骤如下所示:
首先运行下orangepi-config,普通用户记得加sudo权限
orangepi@orangepi:~$ sudo orangepi-config
然后选择System
然后选择Hardware
然后使用键盘的方向键定位到edp,再使用空格选中
然后选择<Save>保存
然后选择<Back>
然后选择<Reboot>重启系统使配置生效
上面的设置最终会在/boot/orangepiEnv.txt中加入overlays=edp这句配置。设置完后可以先检查下。如果不存在这句配置,那么设置就是有问题。
如果觉得使用orangepi-config比较麻烦,也可以使用vim编辑器打开/boot/orangepiEnv.txt,然后加入overlays=edp 这句配置也是可以。
orangepi@orangepi:~$ cat /boot/orangepiEnv.txt | grep "edp"
overlays=edp #示例配置
用30pin单头同向排线连接好屏幕的30pin eDP接口和开发板的eDP接口
开关机logo使用说明
开关机logo默认只在桌面版的系统中才会显示
在/boot/orangepiEnv.txt中设置bootlogo变量为false可以关闭开关机logo
orangepi@orangepi:~$ vim /boot/orangepiEnv.txt
verbosity=1
bootlogo=false
在/boot/orangepiEnv.txt中设置bootlogo变量为true可以开启开关机logo
orangepi@orangepi:~$ vim /boot/orangepiEnv.txt
verbosity=1
bootlogo=true
开机logo图片在Linux系统中的位置为
/usr/share/plymouth/themes/orangepi/watermark.png
替换开机logo图片后需要运行下命令才能生效
orangepi@orangepi:~$ sudo update-initramfs -u
ZFS文件系统的使用方法
安装ZFS的方法
安装zfs前,请先确保使用的Linux镜像为最新版本。另外,如果系统中已经安装了zfs,就无需重复安装了。
安装zfs前首先需要安装内核头文件,安装内核头文件的方法请参考安装内核头文件的方法小节的说明。
在Ubuntu20.04、Ubuntu22.04和Debian11系统中,zfs是无法通过apt直接安装的,这是因为默认的apt源中zfs版本低于2.1.6,存在和rk Linux5.10内核不兼容的问题,这个问题在zfs的2.1.6及以后的版本中得到了修复。
为了解决这个问题,我们提供了能正常安装的zfs的deb包,可以从开发板的官方工具中下载到。打开官方工具,然后进入Ubuntu和Debian系统使用的zfs相关的deb包文件夹后,可以看到Ubuntu20.04、Ubuntu22.04和Debian11三种类型的deb包,请下载需要的版本。
下载完对应版本的zfs deb包后,请将它们上传到开发板的Linux系统中。上传方法请参考上传文件到开发板Linux系统中的方法小节的说明。
上传完成后,再在开发板Linux系统的命令行中使用cd命令进入deb包的目录,然后使用下面的命令就可以安装zfs的deb包。
orangepi@orangepi:~$ sudo apt install ./*.deb
安装完成后,使用下面的命令可以看到zfs相关的内核模块:
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
然后重启下Linux系统就能看到zfs内核模块会自动加载了:
orangepi@orangepi:~$ lsmod | grep "zfs"
zfs 2801664 0
zunicode 327680 1 zfs
zzstd 471040 1 zfs
zlua 139264 1 zfs
zcommon 69632 1 zfs
znvpair 61440 2 zfs,zcommon
zavl 16384 1 zfs
icp 221184 1 zfs
spl 77824 6 zfs,icp,zzstd,znvpair,zcommon,zavl
在Debian12中,zfs的默认版本为2.1.11,所以我们可以通过下面的命令直接安装zfs,再次提醒下,安装前需要确保系统已安装内核头文件的deb包。
orangepi@orangepi:~$ sudo apt install -y zfsutils-linux zfs-dkms
创建ZFS池的方法
ZFS是基于存储池的,我们可以将多个物理存储设备添加到池中,然后从这个池中分配存储空间。
下面的内容是基于开发板接了一个NVMe SSD和一个U盘来演示的。
首先我们可以通过lsblk命令查看下开发板所有的存储设备,当前开发板接了一个NVMe SSD以及一个U盘,输出如下所示:
然后输入下面的命令可以创建一个ZFS池,包含NVMe SSD和U盘两个存储设备
orangepi@orangepi:~$ sudo zpool create -f pool1 /dev/nvme0n1 /dev/sda
然后使用zpool list命令可以看到系统已经创建了一个名为pool1的ZFS池,并且ZFS池pool1的大小是NVME SSD的大小加上U盘的大小
然后执行df -h可以看到pool1被挂载到了/pool1目录
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
使用下面的命令可以看到pool1的文件系统类型为zfs
orangepi@orangepi:~$ mount | grep pool1
pool1 on /pool1 type zfs (rw,xattr,noacl)
然后我们可以测试下拷贝一个文件到ZFS池中
orangepi@orangepi:~$ sudo cp -v /usr/local/test.mp4 /pool1/
'/usr/local/test.mp4' -> '/pool1/test.mp4'
测试ZFS的数据去重功能
ZFS的数据去重功能默认是关闭的,我们需要执行下面的命令打开
orangepi@orangepi:~$ sudo zfs set dedup=on pool1
然后做一个简单的测试,首先进入pool1中,再执行下面的命令生成1个1G大小的随机文件
orangepi@orangepi:~$ cd /pool1/
root@orangepi:/pool1$ sudo dd if=/dev/urandom of=test.1g bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 5.04367 s, 213 MB/s
然后使用下面的命令将1G大小的随机文件拷贝1000份
root@orangepi:/pool1$ for ((i=0; i<1000; i++)); do sudo cp test.1g $i.test.1g; done
- 然后用du -lh可以看到目前池中总共有1002G的数据,但实际上ZFS池的大小只有504GB(SSD+U盘的总容量),是装不下那么大的数据的
root@orangepi:/pool1$ du -lh
1002G
测试ZFS的数据压缩功能
- 因为存储的数据不同,压缩节省的磁盘空间也会有所不同,所以我们选择压缩比较大的纯文本文件来进行压缩测试,执行下面的命令将/var/log/和/etc/目录打包成tar包
orangepi@orangepi:~$ cd /pool1/
root@orangepi:/pool1$ sudo tar -cf text.tar /var/log/ /etc/
然后通过ls -lh命令可以看到的文件大小以及在ZFS池中占用的空间都是27M
然后我们在ZFS池pool1中启用压缩功能
root@orangepi:/pool1$ sudo zfs set compression=lz4 pool1
然后再次执行下面的命令将/var/log/和/etc/目录打包成tar包
root@orangepi:/pool1$ sudo tar -cf text.tar /var/log/ /etc/
关机和重启开发板的方法
在Linux系统运行的过程中,如果直接拔掉Type-C电源断电,可能会导致文件系统丢失某些数据或者损坏,所以在断电前请先使用poweroff命令关闭开发板的Linux系统,然后再拔掉电源。
orangepi@orangepi:~$ sudo poweroff
另外开发板配有开关机按键,还可以短按开发板上的开关机按键来关机。
注意,Linux桌面版系统按下开关机按键后会弹出下图所示的确认框,需要点击Shut Down选项后才会关机。
Linux SDK——orangepi-build使用说明
编译系统需求
我们可以在x64的电脑中交叉编译开发板的Linux镜像,也可以在开发板的Ubuntu22.04系统中来编译开发板的Linux镜像,请根据自己的喜好二选一。
如果是在开发板的Ubuntu22.04系统中使用orangepi-build来编译Linux镜像,请做好散热(尤其是SSD启动时)。如果散热没做好,容易出现文件系统跑飞的错误。使用开发板的Ubuntu22.04系统编译
Linux SDK,即orangepi-build,支持在开发板的Ubuntu 22.04的上运行(其它系统没有测试过),所以下载orangepi-build前,请首先确保开发板已安装的Ubuntu版本是Ubuntu 22.04。查看开发板已安装的Ubuntu版本的命令如下所示,如果Release字段显示的不是22.04,说明当前使用的Ubuntu版本不符合要求,请更换系统后再进行下面的操作。
orangepi@orangepi:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.1 LTS
Release: 22.04
Codename: jammy
由于内核和U-boot等源码都是存放在GitHub上的,所以编译镜像的时候请确保开发板能正常从GitHub下载代码,这点是非常重要的。
使用x64的Ubuntu22.04电脑编译
Linux SDK,即orangepi-build,支持在安装有Ubuntu 22.04的电脑上运行,所以下载orangepi-build前,请首先确保自己电脑已安装的Ubuntu版本是Ubuntu 22.04。查看电脑已安装的Ubuntu版本的命令如下所示,如果Release字段显示的不是22.04,说明当前使用的Ubuntu版本不符合要求,请更换系统后再进行下面的操作。
test@test:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04 LTS
Release: 22.04
Codename: jammy
如果电脑安装的是Windows系统,没有安装有Ubuntu 22.04的电脑,可以考虑使用VirtualBox或者VMware来在Windows系统中安装一个Ubuntu 22.04虚拟机。但是请注意,不要在WSL虚拟机上编译orangepi-build,因为orangepi-build没有在WSL虚拟机中测试过,所以无法确保能正常在WSL中使用orangepi-build。
Ubuntu 22.04 amd64版本的安装镜像下载地址为:
https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/22.04/ubuntu-22.04-desktop-amd64.iso
或者
https://repo.huaweicloud.com/ubuntu-releases/22.04/ubuntu-22.04.1-desktop-amd64.iso
在电脑中或者虚拟机中安装完Ubuntu 22.04后,请先设置Ubuntu 22.04的软件源为清华源,不然后面安装软件的时候很容易由于网络原因而出错
- 替换清华源的方法参考这个网页的说明即可
注意Ubuntu版本需要切换到22.04
需要替换的/etc/apt/sources.list文件的内容为
test@test:~$ sudo mv /etc/apt/sources.list /etc/apt/sources.list.bak
test@test:~$ sudo vim /etc/apt/sources.list
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
替换完后需要更新下包信息,并确保没有报错
test@test:~$ sudo apt update
另外,由于内核和U-boot等源码都是存放在GitHub上的,所以编译镜像的时候请确保电脑能正常从GitHub下载代码,这点是非常重要的。
获取Linux sdk的源码
从github下载orangepi-build
- Linux sdk其实指的就是orangepi-build这套代码,orangepi-build是基于armbian build编译系统修改而来的,使用orangepi-build可以编译出多个版本的Linux镜像。首先下载orangepi-build的代码,命令如下所示:
test@test:~$ sudo apt-get update
test@test:~$ sudo apt-get install -y git
test@test:~$ git clone https://github.com/orangepi-xunlong/orangepi-build.git -b next
注意,Orange Pi 3B开发板是需要下载orangepi-build的next分支源码的,上面的git clone命令需要指定orangepi-build源码的分支为next。
通过git clone命令下载orangepi-build的代码是不需要输入github账号的用户名和密码的(下载本手册中的其他代码也是一样的),如果如输入git clone命令后Ubuntu PC提示需要输入github账号的用户名和密码,一般都是git clone后面的orangepi-build仓库的地址输入错误了,请仔细检查命令拼写是否有错误,而不是以为我们这里忘了提供github账号的用户名和密码。
- 开发板当前使用的u-boot和Linux内核版本如下所示
分支 u-boot版本 Linux内核版本 legacy u-boot 2017.09 Linux5.10 这里所说的分支和orangepi-build源代码的分支不是同一个东西,请不要搞混了。此分支主要是用来区分不同内核源码版本的。
目前RK提供的Linux5.10 bsp内核我们定义为legacy分支。如果以后支持主线内核了,就会添加一个current分支。
orangepi-build下载完后会包含下面的文件和文件夹
build.sh: 编译启动脚本
external: 包含编译镜像需要用的配置文件、特定的脚本以及部分程序的源码等
LICENSE: GPL 2许可证文件
README.md: orangepi-build说明文件
scripts: 编译linux镜像的通用脚本
test@test:~/orangepi-build$ ls
build.sh external LICENSE README.md scripts
如果是从github下载的orangepi-build的代码,下载完后你可能会发现orangepi-build中并没有包含u-boot和Linux内核的源码,也没有编译u-boot和Linux内核需要用到交叉编译工具链,这是正常的,因为这些东西都存放在其它单独的github仓库或者某些服务器上了(下文会详述其地址)。orangepi-build在脚本和配置文件中会指定u-boot、Linux内核和交叉编译工具链的地址,运行orangepi-build时,当其发现本地没有这些东西,会自动去相应的地方下载的。
下载交叉编译工具链
只有在x64的电脑中使用orangepi-build编译镜像才会下载交叉编译工具链。在开发板的Ubuntu22.04中编译开发板的Linux镜像是不会下载交叉编译工具链的,此时orangepi-build/toolchains会是一个空文件夹。
orangepi-build第一次运行的时候会自动下载交叉编译工具链放在toolchains文件夹中,每次运行orangepi-build的build.sh脚本后,都会检查toolchains中的交叉编译工具链是否都存在,如果不存在则会重新开始下载,如果存在则直接使用,不会重复下载。
交叉编译工具链在中国境内的镜像网址为清华大学的开源软件镜像站
https://mirrors.tuna.tsinghua.edu.cn/armbian-releases/_toolchain/
toolchains下载完后会包含多个版本的交叉编译工具链,开发板只会使用其中的两个
test@test:~/orangepi-build$ ls toolchains/
gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu
gcc-arm-11.2-2022.02-x86_64-arm-none-linux-gnueabihf
gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu
gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabihf
gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi
gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabihf
gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu
gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabi
gcc-linaro-aarch64-none-elf-4.8-2013.11_linux
gcc-linaro-arm-linux-gnueabihf-4.8-2014.04_linux
gcc-linaro-arm-none-eabi-4.8-2014.04_linux
编译Linux内核源码使用的交叉编译工具链为
linux5.10
gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu
编译u-boot源码使用的交叉编译工具链为
v2017.09
gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu
orangepi-build完整目录结构说明
orangepi-build仓库下载完后并不包含Linux内核、u-boot的源码以及交叉编译工具链,Linux内核和u-boot的源码存放在独立的git仓库中
Linux内核源码存放的git仓库如下所示:
https://github.com/orangepi-xunlong/linux-orangepi/tree/orange-pi-5.10-rk35xx
u-boot源码存放的git仓库如下所示:
https://github.com/orangepi-xunlong/u-boot-orangepi/tree/v2017.09-rk3588
orangepi-build第一次运行的时候会去下载交叉编译工具链、u-boot和Linux内核源码,成功编译完一次Linux镜像后在orangepi-build中可以看到的文件和文件夹有
build.sh: 编译启动脚本
external: 包含编译镜像需要用的配置文件、特定功能的脚本以及部分程序的源码,编译镜像过程中缓存的rootfs压缩包也存放在external中
kernel: 存放Linux内核的源码,里面名为orange-pi-5.10-rk35xx的文件夹存放的就是RK3588/RK3588S/RK3566系列开发板legacy分支的内核源码,内核源码的文件夹的名字请不要手动修改,如果修改了,编译系统运行时会重新下载内核源码
LICENSE: GPL 2许可证文件
README.md: orangepi-build说明文件
output: 存放编译生成的u-boot、Linux等deb包、编译日志以及编译生成的镜像等文件
scripts: 编译Linux镜像的通用脚本
toolchains: 存放交叉编译工具链
u-boot: 存放u-boot的源码,里面名为v2017.09-rk3588的文件夹存放的就是RK3588/RK3588S/RK3566系列开发板legacy分支的u-boot源码,u-boot源码的文件夹的名字请不要手动修改,如果修改了,编译系统运行时会重新下载u-boot源码
userpatches: 存放编译脚本需要用到的配置文件
test@test:~/orangepi-build$ ls
build.sh external kernel LICENSE output README.md scripts toolchains u-boot userpatches
编译u-boot
运行build.sh脚本,记得加sudo权限
test@test:~/orangepi-build$ sudo ./build.sh
选择U-boot package,然后回车
接着选择开发板的型号
然后就会开始编译u-boot,编译时提示的部分信息说明如下
u-boot源码的版本
[ o.k. ] Compiling u-boot [ v2017.09 ]
交叉编译工具链的版本
[ o.k. ] Compiler version [ aarch64-linux-gnu-gcc 7.4.1 ]
编译生成的u-boot deb包的路径
[ o.k. ] Target directory [ orangepi-build/output/debs/u-boot ]
编译生成的u-boot deb包的包名
[ o.k. ] File name [ linux-u-boot-legacy-orangepi3b_1.0.0_arm64.deb ]
编译使用的时间
[ o.k. ] Runtime [ 1 min ]
重复编译u-boot的命令,使用下面的命令无需通过图形界面选择,可以直接开始编译u-boot
[ o.k. ] Repeat Build Options [ sudo ./build.sh BOARD=orangepi3b BRANCH=legacy BUILD_OPT=u-boot KERNEL_CONFIGURE=no ]
查看编译生成的u-boot deb包
test@test:~/orangepi-build$ ls output/debs/u-boot/
linux-u-boot-legacy-orangepi3b_1.0.0_arm64.deb
生成的u-boot的deb包包含的文件如下所示
使用下面的命令可以解压deb包
test@test:~/orangepi-build$ cd output/debs/u-boot
test@test:~/orangepi_build/output/debs/u-boot$ $ dpkg -x \
linux-u-boot-legacy-orangepi3b_1.0.0_arm64.deb . (注意命令最后有个”.”)
test@test:~/orangepi_build/output/debs/u-boot$ ls
linux-u-boot-legacy-orangepi3b_1.0.0_arm64.deb usr
解压后的文件如下所示
test@test:~/orangepi-build/output/debs/u-boot$ tree usr
usr
└── lib
├── linux-u-boot-legacy-orangepi3b_1.0.0_arm64
│ ├── idbloader.img
│ ├── rkspi_loader.img
│ └── u-boot.itb
└── u-boot
├── LICENSE
├── orangepi-3b-rk3566_defconfig
└── platform_install.sh
3 directories, 6 files
orangepi-bulid编译系统编译u-boot源码时首先会将u-boot的源码和github服务器的u-boot源码进行同步,所以如果想修改u-boot的源码,首先需要关闭源码的下载更新功能(需要完整编译过一次u-boot后才能关闭这个功能,否则会提示找不到u-boot的源码,如果是从百度云盘下载的源码压缩包,则没有这个问题,因为u-boot的源码都已缓存好了),否则所作的修改都会被还原,方法如下:
设置userpatches/config-default.conf中的IGNORE_UPDATES变量为”yes”
test@test:~/orangepi-build$ vim userpatches/config-default.conf
IGNORE_UPDATES="yes"
调试u-boot代码时,可以使用下面的方法来更新Linux镜像中的u-boot进行测试
将编译好的u-boot的deb包上传到开发板的Linux系统中
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 root@192.168.1.xxx:/root
然后登录到开发板,卸载已安装的u-boot的deb包
root@orangepi:~# apt purge -y linux-u-boot-orangepi3b-legacy
再安装刚才上传的新的u-boot的deb包
root@orangepi:~# dpkg -i linux-u-boot-legacy-orangepi3b_1.0.0_arm64.deb
然后运行 nand-sata-install脚本
root@orangepi:~# nand-sata-install
然后选择5 Install/Update the bootloader on SD/eMM来更新TF卡中的u-boot或者7 Install/Update the bootloader on SPI Flash来更新SPI Flash中的u-boot
按下回车键后首先会弹出一个Warning
再按下回车键就会开始更新u-boot,更新完后会显示下面的信息
然后就可以重启开发板来测试u-boot的修改是否生效了
其它有用的信息
u-boot 2017.09源码中,开发板使用的defconfig配置文件为
orangepi-build/u-boot/v2017.09-rk3588/configs/orangepi-3b-rk3566_defconfig
u-boot 2017.09源码中,开发板使用dts文件为
orangepi-build/u-boot/v2017.09-rk3588/arch/arm/dts/rk3566-orangepi-3b.dts
编译Linux内核
运行build.sh脚本,记得加sudo权限
test@test:~/orangepi-build$ sudo ./build.sh
选择Kernel package,然后回车
接着选择开发板的型号
然后会提示是否需要显示内核配置界面,如果不需要修改内核配置,则选择第一个即可,如果需要修改内核配置,则选择第二个
如果第4) 步选择了需要显示内核配置菜单(第二个选项),则会弹出通过make menuconfig打开的内核配置的界面,此时可以直接修改内核的配置,修改完后再保存退出即可,退出后会开始编译内核源码
如果不需要修改内核的配置选项,在运行build.sh脚本时,传入KERNEL_CONFIGURE=no就可临时屏蔽弹出内核的配置界面了
test@test:~/orangepi-build$ sudo ./build.sh KERNEL_CONFIGURE=no
也可以设置orangepi-build/userpatches/config-default.conf配置文件中的KERNEL_CONFIGURE=no,这样可以永久禁用这个功能
编译内核的时候如果提示下面的错误,这是由于Ubuntu PC的终端界面太小,导致make menuconfig的界面无法显示,请把Ubuntu PC的终端调到最大,然后重新运行build.sh脚本
编译内核源码时提示的部分信息说明如下
Linux内核源码的版本
[ o.k. ] Compiling current kernel [ 5.10.160 ]
使用的交叉编译工具链的版本
[ o.k. ] Compiler version [ aarch64-none-linux-gnu-gcc 11.2.1 ]
内核默认使用的配置文件以及它存放的路径
[ o.k. ] Using kernel config file [ config/kernel/linux-rockchip-rk356x-legacy.config ]
编译生成的内核相关的deb包的路径
[ o.k. ] Target directory [ orangepi-build/output/debs/ ]
编译生成的内核镜像deb包的包名
[ o.k. ] File name [ linux-image-legacy-rockchip-rk356x_1.0.0_arm64.deb ]
编译使用的时间
[ o.k. ] Runtime [ 5 min ]
最后会显示重复编译上一次选择的内核的编译命令,使用下面的命令无需通过图形界面选择,可以直接开始编译内核源码
[ o.k. ] Repeat Build Options [ sudo ./build.sh BOARD=orangepi3b BRANCH=legacy BUILD_OPT=kernel KERNEL_CONFIGURE=no ]
查看编译生成的内核相关的deb包
linux-dtb-legacy-rockchip-rk356x_1.0.0_arm64.deb包含内核使用的dtb文件
linux-headers-legacy-rockchip-rk356x_1.0.0_arm64.deb包含内核头文件
linux-image-legacy-rockchip-rk356x_1.0.0_arm64.deb包含内核镜像和内核模块
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
生成的linux-image的deb包包含的文件如下所示
使用下面的命令可以解压deb包
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
解压后的文件如下所示
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
orangepi-bulid编译系统编译Linux内核源码时首先会将Linux内核源码和github服务器的Linux内核源码进行同步,所以如果想修改Linux内核的源码,首先需要关闭源码的更新功能(需要完整编译过一次Linux内核源码后才能关闭这个功能,否则会提示找不到Linux内核的源码,如果是从百度云盘下载的源码压缩包,则没有这个问题,因为Linux的源码都已缓存好了),否则所作的修改都会被还原,方法如下:
设置userpatches/config-default.conf中的IGNORE_UPDATES变量为”yes”
test@test:~/orangepi-build$ vim userpatches/config-default.conf
IGNORE_UPDATES="yes"
如果对内核做了修改,可以使用下面的方法来更新开发板Linux系统的内核和内核模块
将编译好的Linux内核的deb包上传到开发板的Linux系统中
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
然后登录到开发板,卸载已安装的Linux内核的deb包
root@orangepi:~# apt purge -y linux-image-legacy-rockchip-rk356x
再安装刚才上传的新的Linux内核的deb包
root@orangepi:~# dpkg -i linux-image-legacy-rockchip-rk356x_1.0.0_arm64.deb
然后重启开发板,再查看内核相关的修改是否已生效
root@orangepi:~# reboot
其它有用的信息
内核配置文件存放位置如下所示,请不要到内核源码中去找开发板所使用的内核配置文件
开发板使用的dts文件所在的位置为
orangepi-build/external/config/kernel/linux-rockchip-rk356x-legacy.config
orangepi-build/kernel/orange-pi-5.10-rk35xx/arch/arm64/boot/dts/rockchip/rk3566-orangepi-3b.dts
编译rootfs
运行build.sh脚本,记得加sudo权限
test@test:~/orangepi-build$ sudo ./build.sh
选择Rootfs and all deb packages,然后回车
接着选择开发板的型号
然后选择rootfs的类型
然后选择镜像的类型
Image with console interface (server)表示服务器版的镜像,体积比较小
Image with desktop environment表示带桌面的镜像,体积比较大
如果是编译服务器版的镜像,还可以选择编译Standard版本或者Minimal版本,Minimal版本预装的软件会比Standard版本少很多(没特殊需求请不要选择Minimal版本,因为很多东西默认没有预装,部分功能可能用不了)
如果是编译桌面版本的镜像还需要选择桌面环境的类型,目前Ubuntu Jammy主要维护XFCE和Gnome两种桌面,Ubuntu Focal只维护XFCE桌面,Debian Bullseye主要维护XFCE和KDE桌面
然后可以选择需要安装的额外的软件包。这里请按下回车键直接跳过。
然后就会开始编译rootfs,编译时提示的部分信息说明如下所示
rootfs的类型
[ o.k. ] local not found [ Creating new rootfs cache for jammy]
编译生成的rootfs压缩包的存放路径
[ o.k. ] Target directory [ external/cache/rootfs ]
编译生成的rootfs压缩包的名字
[ o.k. ] File name [ jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4 ]
编译使用的时间
[ o.k. ] Runtime [ 13 min ]
查看编译生成的rootfs压缩包
jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4是rootfs的压缩包,名字各字段的含义为
a) jammy表示rootfs的Linux发行版的类型
b) xfce表示rootfs为桌面版的类型,如果为cli则表示服务器版类型
c) arm64表示rootfs的架构类型
d) f930ff6ebbac1a72108a2e100762b18f是由rootfs安装的所有软件包的包名生成的MD5哈希值,只要没有修改rootfs安装的软件包的列表,那么这个值就不会变,编译脚本会通过这个MD5哈希值来判断是否需要重新编译rootfs
jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4.list列出了rootfs安装的所有软件包的包名
test@test:~/orangepi-build$ ls external/cache/rootfs/
jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4
jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4.current
jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4.list
如果需要的rootfs在external/cache/rootfs下已经存在,那么再次编译rootfs就会直接跳过编译过程,不会重新开始编译,编译镜像的时候也会去external/cache/rootfs下查找是否已经有缓存可用的rootfs,如果有就直接使用,这样可以节省大量的下载编译时间。
编译Linux镜像
运行build.sh脚本,记得加sudo权限
test@test:~/orangepi-build$ sudo ./build.sh
选择Full OS image for flashing,然后回车
然后选择开发板的型号
然后选择rootfs的类型
然后选择镜像的类型
Image with console interface > (server)表示服务器版的镜像,体积比较小
Image with desktop environment表示带桌面的镜像,体积比较大
如果是编译服务器版的镜像,还可以选择编译Standard版本或者Minimal版本,Minimal版本预装的软件会比Standard版本少很多(没特殊需求请不要选择Minimal版本,因为很多东西默认没有预装,部分功能可能用不了)
如果是编译桌面版本的镜像还需要选择桌面环境的类型,目前Ubuntu Jammy主要维护XFCE和Gnome两种桌面,Ubuntu Focal只维护XFCE桌面,Debian Bullseye主要维护XFCE和KDE桌面
然后可以选择需要安装的额外的软件包。这里请按下回车键直接跳过。
然后就会开始编译Linux镜像,编译的大致流程如下
初始化Ubuntu PC的编译环境,安装编译过程需要的软件包
下载u-boot和Linux内核的源码(如果已经缓存,则只更新代码)
编译u-boot源码,生成u-boot的deb包
编译Linux源码,生成Linux相关的deb包
制作Linux firmware的deb包
制作orangepi-config工具的deb包
制作板级支持的deb包
如果是编译desktop版镜像,还会制作desktop相关的deb包
检查rootfs是否已经缓存,如果没有缓存,则重新制作rootfs,如果已经缓存,则直接解压使用
安装前面生成的deb包到rootfs中
对不同的开发板和不同类型镜像做一些特定的设置,如预装额外的软件包,修改系统配置等
然后制作镜像文件,并格式化分区,默认类型为ext4
再将配置好的rootfs拷贝到镜像的分区中
然后更新initramfs
最后将u-boot的bin文件通过dd命令写入到镜像中
编译完镜像后会提示下面的信息
编译生成的镜像的存放路径
[ 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 ]
编译使用的时间
[ o.k. ] Runtime [ 19 min ]
重复编译镜像的命令,使用下面的命令无需通过图形界面选择,可以直接开始编译镜像
[ 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 ]
Android 11系统的使用说明
已支持的Android版本
Android版本 内核版本 Android 11 Linux4.19 Android 功能适配情况
功能 Android 11 USB2.0x3 OK USB3.0x1 OK M.2 NVMe SSD启动 OK WIFI OK 蓝牙 OK GPIO(40pin) OK UART(40pin) OK SPI(40pin) OK I2C(40pin) OK PWM(40pin) OK PWM风扇接口 OK 3pin调试串口 OK EMMC OK TF卡启动 OK HDMI 视频 OK HDMI 音频 OK LCD OK eDP显示 OK 千兆网口 OK 网口状态灯 OK 耳机播放 OK 耳机录音 OK LED灯 OK GPU OK NPU OK VPU OK RTC OK WIFI的连接测试方法
- 首先点击进入Setting
打开Wi-Fi后如果一切正常,就可以扫描到附近的Wi-Fi热点了
然后选择想连接的Wi-Fi后会弹出下图所示的密码输入界面
然后使用键盘输入Wi-Fi对应的密码,再使用鼠标点击虚拟键盘中的回车按钮就会开始连接Wi-Fi了
Wi-Fi连接成功后的显示如下图所示:
Wi-Fi hotspot的使用方法
首先请确保以太网口已连接网线,并且能正常上网
然后选择Settings
然后选择Network & internet
然后选择Hotspot & tethering
然后选择Wi-Fi hotspot
然后打开Wi-Fi hotspot,下图中还可以看到生成的热点的名字和密码,记住它们,在连接热点的时候要用到(如果需要修改热点的名字和密码,需要先关闭Wi-Fi hotspot,然后才能修改)
此时可以拿出你的手机,如果一切正常,在手机搜索到的WI-FI列表中就能找到上图Hotspot name下面显示的同名(这里为 AndroidAP_6953)的WIFI热点了。然后可以点击AndroidAP_6953连接热点,密码在上图的Hotspot password 下面可以看到
蓝牙的测试方法
首先点击进入Setting
然后选择Connected devices
然后点击Pair new device打开蓝牙并开始扫描周围的蓝牙设备
搜索到的蓝牙设备会在Available devices下面显示出来
然后点击想要连接的蓝牙设备就可以开始配对了,当弹出下面的界面时,请使用鼠标选择Pair选项
这里测试的是开发板和安卓手机蓝牙的配置过程,此时在手机上会弹出下面的确认界面,在手机上也点击配对按钮后就会开始配对过程
配对完成后,可以看到如下图所示的已配对的蓝牙设备
此时可以使用手机蓝牙给开发板发送一张图片,发送后,在开发板的安卓系统中可以看到下面的确认界面,然后点击Accept就可以开始接收手机发过来的图片了
开发板Android系统蓝牙接收到的图片可以在文件管理器中打开Download目录查看
树莓派5寸屏幕的使用方法
请确保使用的镜像为下面的两个版本的镜像:
OrangePi3B_RK3566_Android11_lcd_v1.x.x.img
OrangePi3B_RK3566_Android11_spi-nvme_lcd_v1.x.x.img
首先需要组装好屏幕,请参考树莓派5寸屏幕的组装方法
给板子接通Type-C电源,并上电,系统启动后,就可以看到屏幕显示如下图所示
eDP屏幕的使用方法
目前仅适配了一款eDP屏幕,包含如下配件:
用30pin单头同向排线连接好屏幕的30pin eDP接口和开发板的eDP接口
给板子接通Type-C电源,并上电,系统启动后,就可以看到屏幕显示如下图所示
40pin 接口 GPIO、UART、SPI 和 PWM 测试
40pin GPIO 口测试
首先点击wiringOP图标打开wiringOP APP
wiringOP APP的主界面显示如下图所示,然后点击GPIO_TEST按钮打开GPIO测试界面
GPIO测试界面如下图所示,左边的两排CheckBox按钮跟40pin引脚是一一对应的关系。当勾选CheckBox按钮时,对应的GPIO引脚会被设置为OUT模式,引脚电平设置为高电平;当取消勾选时,GPIO引脚电平设置为低电平;当点击右边的GPIO READALL按钮时,可以获取到wPi号、GPIO模式、引脚电平等信息;当点击BLINK ALL GPIO按钮时,程序会控制28个GPIO口不停的切换高低电平
然后点击GPIO READALL按钮,输出信息如下图所示:
开发板40pin中总共有28个GPIO口可以使用,下面以7号引脚——对应GPIO为GPIO4_A4 ——对应wPi序号为2——为例演示如何设置GPIO口的高低电平。首先点击7号引脚对应的CheckBox按钮,当按钮为选中状态时,7号引脚会设置为高电平,设置完后可以使用万用表测量引脚的电压的数值,如果为3.3v,说明设置高电平成功
然后点击GPIO READALL按钮,可以看到当前的7号引脚模式为OUT,引脚电平为高电平
再次点击下图的CheckBox按钮取消勾选状态,7号引脚会设置为低电平,设置完后可以使用万用表测量引脚的电压的数值,如果为0v,说明设置低电平成功
然后点击GPIO READALL按钮,可以看到当前的7号引脚模式为OUT,引脚电平为低电平
40pin的UART测试
Android中默认打开了UART7和UART9,在40pin的位置如下图所示,对应的设备节点分别是/dev/ttyS7和/dev/ttyS9
首先点击wiringOP图标打开wiringOP APP
wiringOP APP的主界面显示如下图所示,然后点击UART_TEST按钮打开UART测试界面
APP的串口测试界面如下图所示
- 下面以测试UART7为例,在选择框中选择/dev/ttyS7节点,在编辑框中输入想要设置的波特率,然后点击OPEN按钮打开/dev/ttyS7节点,打开成功后,OPEN按钮变为不可选中状态,CLOSE按钮和SEND按钮变为可选中状态
40pin的SPI测试
由 40pin 接口的原理图可知,Orange Pi 3B可用的 spi 为 spi3
这里通过w25q64模块来测试SPI接口,首先在SPI3接口接入w25q64设备
然后点击wiringOP图标打开wiringOP APP
wiringOP APP的主界面显示如下图所示,点击SPI_TEST按钮打开SPI的测试界面
然后点击OPEN按钮初始化SPI
40pin的PWM测试
Android默认开启了PWM11,对应的引脚在40pin的所在位置如下图所示
首先点击wiringOP图标打开wiringOP APP
然后在wiringOP的主界面点击PWM_TEST按钮进入PWM的测试界面
PWM11对应的基地址是fe6f0030,这里pwmchip0右边显示是fdd70020.pwm, 这时需要点击下拉选项选择其它的pwmchip,直到右边显示fe6f0030.pwm为止
当下拉选项选择pwmchip3时,右边对应的就是PWM11对应的基地址fe6f0030
然后确认PWM的通道,默认是0通道,并确认PWM的周期,默认的配置是50000ns,转换为PWM频率是20KHz,可自行修改,点击EXPORT按钮导出PWM11
然后拖动下面的拖动条,就可以改变PWM的占空比,然后勾选Enable就可以输出PWM波形了
ADB的使用方法
使用网络连接adb调试
使用网络adb无需数据线来连接电脑和开发板,而是通过网络来通信,所以首先请确保开发板的有线或者无线网络已经连接好了,然后获取开发板的IP地址,后面要用到。
确保Android系统的service.adb.tcp.port设置为5555端口号
console:/ # getprop | grep "adb.tcp"
[service.adb.tcp.port]: [5555]
如果service.adb.tcp.port没有设置,可以使用下面的命令设置网络adb的端口号
console:/ # setprop service.adb.tcp.port 5555
console:/ # stop adbd
console:/ # start adbd
在Ubuntu PC上安装adb工具
test@test:~$ sudo apt update
test@test:~$ sudo apt install -y adb
然后在Ubuntu PC上连接网络adb
test@test:~$ adb connect 192.168.1.xxx (IP地址需要修改为开发板的IP地址)
* 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
然后在Ubuntu PC上通过adb shell就可以登录到android系统
test@test:~$ adb shell
console:/ #
附录
用户手册更新历史
版本 日期 更新说明 v0.1 2023-07-19 初始版本 镜像更新历史
日期 更新说明 2023-07-19 Orangepi3b_1.0.0_debian_bullseye_desktop_xfce_linux5.10.160.7z
Orangepi3b_1.0.0_ubuntu_jammy_desktop_xfce_linux5.10.160.7z
Orangepi3b_1.0.0_ubuntu_focal_desktop_xfce_linux5.10.160.7z
OrangePi3B_RK3566_Android11_v1.0.0.tar.gz
OrangePi3B_RK3566_Android11_lcd_v1.0.0.tar.gz
OrangePi3B_RK3566_Android11_spi-nvme_v1.0.0.tar.gz
OrangePi3B_RK3566_Android11_lcd_spi-nvme_v1.0.0.tar.gz
- 初始版本