Orange Pi Zero 3

来自Wiki-Orange Pi
跳转至: 导航搜索

目录

Orange Pi Zero 3的基本特性

什么是 Orange Pi Zero 3

香橙派是一款开源的单板卡片电脑,新一代的arm64开发板,它可以运行Android TV 12、Ubuntu和Debian 等操作系统。香橙派开发板(Orange Pi Zero 3)使用全志H618系统级芯片,同时拥有 1GB 或 1.5GB 或 2GB 或 4GB LPDDR4 内存。

Orange Pi Zero 3的用途

我们可以用它实现:

  • 一台小型的Linux桌面计算机
  • 一台小型的Linux网络服务器
  • 安装Klipper上位机控制3D打印机
  • Android TV电视盒子

当然还有其他更多的功能,依托强大的生态系统以及各式各样的扩展配件,Orange Pi可以帮助用户轻松实现从创意到原型再到批量生产的交付,是创客、梦想家、业余爱好者的理想创意平台。

Orange Pi Zero 3是为谁设计的

Orange Pi 开发板不仅仅是一款消费品,同时也是给任何想用技术来进行创作创新的人设计的。它是一款简单、有趣、实用的工具,你可以用它去打造你身边的世界。

Orange Pi Zero 3的硬件特性

硬件特性介绍
CPU 全志H618四核64位1.5GHz高性能Cortex-A53处理器
GPU Mali G31 MP2

Supports OpenGL ES 1.0/2.0/3.2、OpenCL 2.0

内存 1GB/1.5GB/2GB/4GB LPDDR4 (与GPU共享)
板载存储 TF卡插槽、16MB SPI Flash
以太网 支持10/100M/1000M以太网
WIFI+蓝牙 • 5622芯片、支持IEEE 802.11 a/b/g/n/ac、BT5.0
视频输出 • Micro HDMI 2.0a

• TV CVBS output, 支持PAL/NTSC(通过13pin扩展板)

音频输出 • Micro HDMI输出

• 3.5mm音频口(通过13pin扩展板)

电源 USB Type C接口输入
USB 2.0 端口 3个USB 2.0 HOST(其中两个通过13pin扩展板)
26pin接头 带有I2Cx1、SPIx1、UARTx1以及多个GPIO口
13pin接头 带有USB 2.0 HOSTx2、TV-OUT、LINE OUT、IR-RX、以及3个GPIO口
调试串口 UART-TX、UART-RX以及GND
LED灯 电源指示灯和状态指示灯
红外接收 支持红外遥控器(通过13pin扩展板)
支持的操作系统 Android12 TV、Ubuntu、Debian等
外观规格介绍
产品尺寸 85mm×56mm
重量 30g

Orange Pi Zero 3的顶层视图和底层视图

顶层视图:

Zero3-img3-1.png

底层视图:

Zero3-img4-1.png

Orange Pi Zero 3的接口详情图

Zero3-img5-1.png

Zero3-img6.png

四个定位孔的直径都是3.0mm。

开发板使用介绍

准备需要的配件

  1. TF卡,最小8GB容量的class10级或以上的高速闪迪卡

    Zero3-img7.png

    使用其他品牌的TF卡(非闪迪的TF卡),如下图所示(包含但不仅限这些卡),已经有朋友反馈系统启动过程中会出现问题,比如系统启动到一半卡住不动,或者reboot命令无法正常使用,最后都是换了闪迪牌的TF卡后才解决的。所以如果您使用的是非闪迪牌的TF卡发现系统启动或者使用过程有问题,请更换闪迪牌的TF卡后再测试。

    Zero3-img8-1.pngZero3-img9-1.pngZero3-img10-1.pngZero3-img11-1.png

    目前反馈在Orange Pi Zero 3上启动有问题的部分TF卡

    另外,在其他型号的开发板上能正常使用的TF卡并不能保证在Orange Pi Zero 3上也一定能正常启动,这点请特别注意。

  2. TF卡读卡器,用于读写TF卡

    Zero3-img12.png

  3. Micro HDMI转HDMI连接线,用于将开发板连接到HDMI显示器或者电视进行显示

    Zero3-img13.png

    注意,请不要使用下图所示的这种比较宽的Micro HDMI转接头,由于开发板的Micro HDMI接口和Type-C电源接口之间的间距比较小,可能会导致两者无法同时插入到开发板。

    Zero3-img14.png

  4. 电源,如果有5V/2A或5V/3A的电源头那就只需要准备一根下面左边图片所示的USB转Type C接口的数据线,另外也可以使用类似下面右边图片所示的线和电源头一体的5V/2A或者5V/3A的高品质USB Typc C接口电源适配器。

    Zero3-img15.png Zero3-img16.png

  5. 13pin扩展板

    1. 扩展板实物如下所示

      Zero3-img17.png

    2. 扩展板插入开发板的方式如下所示,切记不要插反了

      Zero3-img18.png

    3. Orange Pi Zero 3开发板上的13pin排针可以接上扩展板来扩展开发板上没有的功能,扩展板可以使用的功能有

      1 麦克风(Mic) 不支持,不支持,不支持!!!


      13pin扩展板是一个通用型号的扩展板,适用于Orange Pi多款开发板,但是Orange Pi Zero3的13pin接口是没有Mic功能的,所以13pin扩展板上虽然有Mic,但是在Orange Pi Zero 3上是不能用的,13pin扩展板在Orange Pi Zero 3上主要用来扩展除Mic以外的其他功能。

      2 模拟音视频输出接口 支持,可用于接耳机播放音乐,或者通过AV线接电视输出模拟音视频信号(仅安卓系统)。
      3 USB 2.0 Host x 2 支持,用于接USB键盘、鼠标以及USB存储设备。
      4 红外接收功能 支持,通过红外遥控可以控制Android系统。
    1. Orange Pi Zero 3开发板13pin排针的原理图如下所示

      Zero3-img19.png

  1. USB接口的鼠标和键盘,只要是标准USB接口的鼠标和键盘都可以,鼠标和键盘可以用来控制Orange Pi开发板

  2. 红外遥控器,主要用于控制安卓TV系统

    Zero3-img20.png

    注意,空调的遥控或者电视机的遥控是无法控制Orange Pi开发板的,默认只有Orange Pi提供的遥控才可以。

  3. 百兆或者千兆网线,用于将开发板连接到因特网

  4. AV视频线,如果希望通过AV接口而不是HDMI接口来显示视频,那么就需要通过AV视频线将开发板连接到电视

    Zero3-img21.png

  5. 散热片,如果担心开发板的温度过高,可以加个散热片,散热片贴在H618芯片上即可

    Zero3-img22.png Zero3-img23-1.png

  6. 5V的散热风扇,如下图所示,开发板的26pin和13pin接口上都有5V和GND引脚可以接散热风扇,26pin和13pin排针的间距为2.54mm,散热风扇的电源接口参照这个规格去购买即可。

    注意,开发板插上电源后5V引脚就可以直接使用,无需其他设置,另外5V引脚输出的电压是无法通过软件调节和关闭的。

    Zero3-img24-1.png

  7. 配套外壳(待添加图片)

  8. USB转TTL模块和杜邦线,使用串口调试功能时,需要USB转TTL模块和杜邦线来连接开发板和电脑

    Zero3-img25.png Zero3-img26.png

    注意,开发板使用的TTL电平是3.3v的,除了上图所示的USB转TTL模块外,其他类似的3.3v的USB转TTL模块一般也都是可以的。

  9. 安装有Ubuntu和Windows操作系统的X64电脑

    1 Ubuntu22.04 PC 可选,用于编译Android和Linux源码
    2 Windows PC 用于烧录Android和Linux镜像

下载开发板的镜像和相关的资料

  1. 中文版资料的下载网址为

http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-Zero-3.html

  1. 英文版资料的下载网址为

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

  2. 资料主要包含

    1. Android源码:保存在百度云盘和谷歌网盘上

    2. Linux源码:保存在Github上

    3. Android镜像:保存在百度云盘和谷歌网盘上

    4. Ubuntu镜像:保存在百度云盘和谷歌网盘上

    5. Debian镜像:保存在百度云盘和谷歌网盘上

    6. 用户手册和原理图:芯片相关的数据手册也会放在这里

    7. 官方工具:主要包括开发板使用过程中需要用到的软件

基于Windows PC将Linux镜像烧写到TF卡的方法

注意,这里说的Linux镜像具体指的是从Orange Pi资料下载页面下载的Debian或者Ubuntu这样的Linux发行版镜像。

使用balenaEtcher烧录Linux镜像的方法

  1. 首先准备一张8GB或更大容量的TF卡,TF卡的传输速度必须为class10级或class10级以上,建议使用闪迪等品牌的TF卡
  2. 然后使用读卡器把TF卡插入电脑
  3. Orange Pi的资料下载页面下载想要烧录的Linux操作系统镜像文件压缩包,然后使用解压软件解压,解压后的文件中,以”.img”结尾的文件就是操作系统的镜像文件,大小一般都在1GB以上
  4. 然后下载Linux镜像的烧录软件——balenaEtcher,下载地址为

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

  1. 进入balenaEtcher下载页面后,点击绿色的下载按钮会跳到软件下载的地方

    Zero3-img27.png

  2. 然后可以选择下载balenaEtcher的Portable版本的软件,Portable版本无需安装,双击打开就可以使用

    Zero3-img28.png

  3. 如果下载的是需要安装版本的balenaEtcher,请先安装再使用。如果下载的Portable版本balenaEtcher,直接双击打开即可,打开后的balenaEtcher界面如下图所示

    Zero3-img29.png

    打开balenaEtcher时如果提示下面的错误:

    Zero3-img30.png

    请选择balenaEtcher后点击右键,然后选择以管理员身份运行。

    Zero3-img31.png
  1. 使用balenaEtcher烧录Linux镜像的具体步骤如下所示

    1. 首先选择要烧录的Linux镜像文件的路径

    2. 然后选择TF卡的盘符

    3. 最后点击Flash就会开始烧录Linux镜像到TF卡中

      Zero3-img32.png

  2. balenaEtcher烧录Linux镜像的过程显示的界面如下图所示,另外进度条显示紫色表示正在烧录Linux镜像到TF卡中

    Zero3-img33.png

  3. Linux镜像烧录完后,balenaEtcher默认还会对烧录到TF卡中的镜像进行校验,确保烧录过程没有出问题。如下图所示,显示绿色的进度条就表示镜像已经烧录完成,balenaEtcher正在对烧录完成的镜像进行校验

    Zero3-img34.png

  4. 成功烧录完成后balenaEtcher的显示界面如下图所示,如果显示绿色的指示图标说明镜像烧录成功,此时就可以退出balenaEtcher,然后拔出TF卡插入到开发板的TF卡槽中使用了

    Zero3-img35.png

使用Win32Diskimager烧录Linux镜像的方法

  1. 首先准备一张8GB或更大容量的TF卡,TF卡的传输速度必须为class10级或class10级以上,建议使用闪迪等品牌的TF卡

  2. 然后使用读卡器把TF卡插入电脑

  3. 接着格式化TF卡

    1. 可以使用SD Card Formatter这个软件格式化TF卡,其下载地址为
    2. https://www.sdcard.org/downloads/formatter/eula_windows/SDCardFormatterv5_WinEN.zip

    1. 下载完后直接解压安装即可,然后打开软件

    2. 如果电脑只插入了TF卡,则”Select card”一栏中会显示TF卡的盘符,如果电脑插入了多个USB存储设备,可以通过下拉框选择TF卡对应的盘符

      Zero3-img36.png

    3. 然后点击”Format”,格式化前会弹出一个警告框,选择”是(Y)”后就会开始格式化

    4. Zero3-img37.png

    1. 格式化完TF卡后会弹出下图所示的信息,点击确定即可

      Zero3-img38.png

  1. Orange Pi的资料下载页面下载想要烧录的Linux操作系统镜像文件压缩包,然后使用解压软件解压,解压后的文件中,以”.img”结尾的文件就是操作系统的镜像文件,大小一般都在1GB以上

  2. 使用Win32Diskimager烧录Linux镜像到TF卡

    1. Win32Diskimager的下载页面为
    2. http://sourceforge.net/projects/win32diskimager/files/Archive/

    1. 下载完后直接安装即可,Win32Diskimager界面如下所示

      1. a) 首先选择镜像文件的路径

      2. b) 然后确认下TF卡的盘符和”设备”一栏中显示的一致

      3. c) 最后点击”写入”即可开始烧录

        Zero3-img39.png

    2. 镜像写入完成后,点击”退出”按钮退出即可,然后就可以拔出TF卡插到开发板中启动

基于Ubuntu PC将Linux镜像烧写到TF卡的方法

注意,这里说的Linux镜像具体指的是从Orange Pi资料下载页面下载的Debian或者Ubuntu这样的Linux发行版镜像,Ubuntu PC指的是安装了Ubuntu系统的个人电脑。

  1. 首先准备一张8GB或更大容量的TF卡,TF卡的传输速度必须为class10级或class10级以上,建议使用闪迪等品牌的TF卡
  2. 然后使用读卡器把TF卡插入电脑
  3. 下载balenaEtcher软件,下载地址为

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

  1. 进入balenaEtcher下载页面后,点击绿色的下载按钮会跳到软件下载的地方

    Zero3-img27.png

  2. 然后选择下载Linux版本的软件即可

    Zero3-img40.png

  3. Orange Pi的资料下载页面下载想要烧录的Linux操作系统镜像文件压缩包,然后使用解压软件解压,解压后的文件中,以”.img”结尾的文件就是操作系统的镜像文件,大小一般都在1GB以上。7z结尾的压缩包的解压命令如下所示:

    test@test:~$ 7z x orangepizero3_1.0.0_ubuntu_focal_desktop_linux6.1.31.7z

    test@test:~$ ls orangepizero3_1.0.0_ubuntu_focal_desktop_linux6.1.31.*

    orangepizero3_1.0.0_ubuntu_focal_desktop_linux6.1.31.7z

    orangepizero3_1.0.0_ubuntu_focal_desktop_linux6.1.31.sha #校验和文件

    orangepizero3_1.0.0_ubuntu_focal_desktop_linux6.1.31.img #镜像文件

  4. 解压镜像后可以先用sha256sum -c *.sha命令计算下校验和是否正确,如果提示成功说明下载的镜像没有错,可以放心的烧录到TF卡,如果提示校验和不匹配说明下载的镜像有问题,请尝试重新下载

    test@test:~$ sha256sum -c *.sha

    orangepizero3_1.0.0_ubuntu_focal_desktop_linux6.1.31.img: 成功

  5. 然后在Ubuntu PC的图形界面双击balenaEtcher-1.14.3-x64.AppImage即可打开balenaEtcher(无需安装),balenaEtcher打开后的界面显示如下图所示

    Zero3-img41.png

  6. 使用balenaEtcher烧录Linux镜像的具体步骤如下所示

    1. 首先选择要烧录的Linux镜像文件的路径

    2. 然后选择TF卡的盘符

    3. 最后点击Flash就会开始烧录Linux镜像到TF卡中

      Zero3-img42.png

  7. balenaEtcher烧录Linux镜像的过程显示的界面如下图所示,另外进度条显示紫色表示正在烧录Linux镜像到TF卡中

    Zero3-img43.png

  1. Linux镜像烧录完后,balenaEtcher默认还会对烧录到TF卡中的镜像进行校验,确保烧录过程没有出问题。如下图所示,显示绿色的进度条就表示镜像已经烧录完成,balenaEtcher正在对烧录完成的镜像进行校验

    Zero3-img44.png

  2. 成功烧录完成后balenaEtcher的显示界面如下图所示,如果显示绿色的指示图标说明镜像烧录成功,此时就可以退出balenaEtcher,然后拔出TF卡插入到开发板的TF卡槽中使用了

    Zero3-img45.png

烧写Android镜像到TF卡的方法

开发板的Android镜像只能在Windows平台下使用PhoenixCard软件烧录到TF卡中,PhoenixCard软件的版本必须为PhonixCard-4.2.8

请不要用烧录Linux镜像的软件,如Win32Diskimager或者balenaEtcher来烧录安卓镜像。

另外PhoenixCard这款软件没有Linux和Mac平台的版本,所以在Linux和Mac平台下是无法烧录安卓镜像到TF卡中的。

  1. 首先请确保Windows系统已经安装了Microsoft Visual C++ 2008 Redistrbutable - x86

    Zero3-img46.png

  2. 如果没有安装Microsoft Visual C++ 2008 Redistrbutable - x86,使用PhoenixCard格式化TF卡或者烧录Android镜像会提示下面的错误

    Zero3-img47.png

  3. Microsoft Visual C++ 2008 Redistrbutable - x86的安装包可以从Orange Pi Zero 3的官方工具中下载到,也可以去微软官网下载

    Zero3-img48.png Zero3-img49.png

  4. 然后准备一张8GB或更大容量的TF卡,TF卡的传输速度必须为class10级或class10级以上,建议使用闪迪等品牌的TF卡

  5. 然后使用读卡器把TF卡插入电脑

  6. Orange Pi的资料下载页面下载Android镜像和PhoenixCard烧写工具,请确保PhonenixCrad工具的版本为PhonixCard-4.2.8,请不要用低于4.2.8版本的PhonixCard软件来烧录Android镜像,低于这个版本的PhonixCard工具烧写的Android镜像可能会有问题

    Zero3-img50.png

  7. 然后使用解压软件解压下载的Android镜像的压缩包,解压后的文件中,以”.img” 结尾的文件就是Android镜像文件,大小在1GB以上。如果不知道怎么解压Android镜像的压缩包,可以安装一个360压缩软件来解压镜像。

    Zero3-img51.png

  8. 然后使用解压软件解压PhonixCard4.2.8.zip,此软件无需安装,在解压后的文件夹中找到PhoenixCard打开即可

    Zero3-img52.png

  9. 打开PhoenixCard后,如果TF卡识别正常,会在中间的列表中显示TF卡的盘符和容量,请务必确认显示的盘符和你想烧录的TF卡的盘符是一致的,如果没有显示可以尝试拔插下TF卡,或者点击PhoenixCard中的”刷新盘符”按钮

  10. Zero3-img53-1.png

  1. 确认完盘符后,先格式化TF卡,点击PhoenixCard中”恢复卡”按钮即可(如果”恢复卡”按钮为灰色的无法按下,可以先点击下”刷新盘符”按钮)

    Zero3-img54-1.png

    如果格式化有问题,请尝试拔插下TF卡后再测试,如果重新拔插TF卡后还是有问题,可以重启下Window电脑或者换一台电脑再试下。

  2. 然后开始将Android镜像写入TF卡

    1. 首先在”固件”一栏中选择Android镜像的路径

    2. 在”制作卡的种类”中选择”启动卡

    3. 然后点击”烧卡”按钮就会开始烧录

      Zero3-img55-1.png

  3. 烧录完后PhoenixCard的显示如下图所示,此时点击”关闭”按钮即可退出PhoenixCard,然后就可以把TF卡从电脑中拔出来插到开发板中启动了

    Zero3-img56-1.png

    烧录完Android系统后在Windows中TF卡只能看到一个128 MB的分区,显示的分区如下图所示(有些电脑可能会弹出二十几个磁盘分区,但也只能打开128 MB的那个分区),请注意,这是正常的,请不要以为TF卡烧坏了。之所以这样,是因为安卓系统总共有二十几个分区,但大部分分区在Windows系统中是无法正常识别的。此时,请放心的拔下TF卡然后插入开发板中启动即可。

    Zero3-img57.png

    安卓系统启动后,使用下面的命令可以看到TF卡中的这二十几个分区:

    Zero3-img58.png

    使用df -h命令可以看到16GB的TF卡烧录完安卓系统后大概还有11 GB的空间可以用使用(二十几个分区并不会都挂载到安卓系统中,重点关注这些能看到的分区即可)。

    Zero3-img59.png

板载SPI Flash中的微型linux系统使用说明

开发板上有一个16MB大小的SPI Flash,其所在位置如下图所示:

Zero3-img60-1.png

SPI Flash中默认烧录有一个微型的linux系统,此系统主要用于证明开发板是能正常启动的。当拿到开发板后,不用烧录系统到TF卡中,只需要给开发板接上Type-C电源就能启动SPI Flash中的微型linux系统。此系统的主要功能有:

  1. u-boot启动阶段会点亮红色的led灯,进入内核后,会关闭红色的led灯并设置绿色的led灯闪烁;

  2. 如果开发板接了HDMI屏幕,系统启动完成后,在HDMI屏幕中能看到微型linux系统的命令行界面;

  3. 如果开发板接了USB键盘,在命令行中能运行一些简单的linux命令,如ls,cd等。

由于SPI Flash中微型的linux系统功能有限,所以如果想正常使用开发板的所有功能,请烧录linux镜像或者安卓镜像烧录到TF卡中,然后再使用。

启动香橙派开发板

  1. 将烧录好镜像的TF卡插入香橙派开发板的TF卡插槽中
  2. 开发板有Micro HDMI接口,可以通过Micro HDMI转HDMI连接线把开发板连接到电视或者HDMI显示器
  3. 如果购买了13pin的扩展板,可以将13pin的扩展板插到开发板的13pin接口中
  4. 接上USB鼠标和键盘,用于控制香橙派开发板
  5. 开发板有以太网口,可以插入网线用来上网
  6. 连接一个5V/2A(5V/3A的也可以)的USB Type C接口的高品质的电源适配

切记不要插入电压输出大于5V的电源适配器,会烧坏开发板。

系统上电启动过程中很多不稳定的现象基本都是供电有问题导致的,所以一个靠谱的电源适配器很重要。如果启动过程中发现有不断重启的现象,请更换下电源或者Type C数据线再试下。

  1. 然后打开电源适配器的开关,如果一切正常,此时HDMI显示器就能看到系统的启动画面了

  2. 如果想通过调试串口查看系统的输出信息,请使用串口线将开发板连接到电脑,串口的连接方法请参看调试串口的使用方法一节

调试串口的使用方法

调试串口的连接说明

  1. 首先需要准备一个3.3v的USB转TTL模块,然后将USB转TTL模块的USB接口一端插入到电脑的USB接口中

    Zero3-img61.png

  2. 开发板的调试串口GND、TX和RX引脚的对应关系如下图所示

    Zero3-img62-1.png

  3. USB转TTL模块GND、TX和RX引脚需要通过杜邦线连接到开发板的调试串口上

    1. USB转TTL模块的GND接到开发板的GND上

    2. USB转TTL模块的RX接到开发板的TX上

    3. USB转TTL模块的TX接到开发板的RX上

  4. USB转TTL模块连接电脑和Orange Pi开发板的示意图如下所示

    Zero3-img63.png

    串口的TX和RX是需要交叉连接的,如果不想仔细区分TX和RX的顺序,可以把串口的TX和RX先随便接上,如果测试串口没有输出再交换下TX和RX的顺序,这样就总有一种顺序是对的。

Ubuntu平台调试串口的使用方法

Linux下可以使用的串口调试软件有很多,如putty、minicom等,下面演示下putty的使用方法。

  1. 首先将USB转TTL模块插入Ubuntu电脑的USB接口,如果USB转TTL模块连接识别正常,在Ubuntu PC的/dev下就可以看到对应的设备节点名,记住这个节点名,后面设置串口软件时会用到

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

    /dev/ttyUSB0

  2. 然后使用下面的命令在Ubuntu PC上安装下putty

    test@test:~$ sudo apt update

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

  3. 然后运行putty,记得加sudo权限

    test@test:~$ sudo putty

  4. 执行putty命令后会弹出下面的界面

    Zero3-img64.png

  5. 首先选择串口的设置界面

    Zero3-img65.png

  6. 然后设置串口的参数

    1. 设置Serial line to connect to/dev/ttyUSB0(修改为对应的节点名,一般为/dev/ttyUSB0

    2. 设置Speed(baud)115200(串口的波特率)

    3. 设置Flow controlNone

      Zero3-img66.png

  7. 在串口的设置界面设置完后,再回到Session界面

    1. 首先选择Connection typeSerial

    2. 然后点击Open按钮连接串口

      Zero3-img67.png

  8. 然后启动开发板,就能从打开的串口终端中看到系统输出的Log信息了

    Zero3-img68.png

Windows平台调试串口的使用方法

Windows下可以使用的串口调试软件有很多,如SecureCRT、MobaXterm等,下面演示MobaXterm的使用方法,这款软件有免费版本,无需购买序列号即可使用。

  1. 下载MobaXterm

    1. 下载MobaXterm网址如下

      https://mobaxterm.mobatek.net/

    2. 进入MobaXterm下载网页后点击GET XOBATERM NOW!

      Zero3-img69.png

    3. 然后选择下载Home版本

      Zero3-img70.png

    4. 然后选择Portable便携式版本,下载完后无需安装,直接打开就可以使用

      Zero3-img71.png

  2. 下载完后使用解压缩软件解压下载的压缩包,即可得到MobaXterm的可执软件,然后双击打开

    Zero3-img72.png

  3. 打开软件后,设置串口连接的步骤如下

    1. 打开会话的设置界面

    2. 选择串口类型

    3. 选择串口的端口号(根据实际的情况选择对应的端口号),如果看不到端口号,请使用360驱动大师扫描安装USB转TTL串口芯片的驱动

    4. 选择串口的波特率为115200

    5. 最后点击”OK”按钮完成设置

    6. Zero3-img73.png
  1. 点击”OK”按钮后会进入下面的界面,此时启动开发板就能看到串口的输出信息了

    Zero3-img74.png

使用开发板26pin或13pin接口中的5v引脚供电说明

我们推荐的开发板的供电方式是使用5V/2A或者5V/3A的Type C接口的电源线插到开发板的Type C电源接口来供电的。如果需要使用26pin或者13pin接口中的5V引脚来给开发板供电,请确保使用的电源线能满足开发板的供电需求。如果有使用不稳定的情况,请换回Type C电源供电。

  1. 首先需要准备一根下图所示的电源线

    Zero3-img75.png

    上图所示的电源线在淘宝可以买到,请自行搜索购买。

  2. 使用26pin或者13pin接口中的5V引脚来给开发板供电,电源线的接法如下所示

    1. 上图所示的电源线USB A口需要插到5V/2A或者5V/3A的电源适配器接头上(不建议插到电脑的USB接口来供电,如果开发板接的外设过多,使用会不稳定

    2. 红色的杜邦线需要插到开发板26pin或者13pin接口的5V引脚上

    3. 黑色的杜邦线需要插到26pin或者13pin接口的GND引脚上

    4. 26pin和13pin接口5V引脚和GND引脚在开发板中的位置如下图所示,切记不要接反了

      Zero3-img24-1.png

使用开发板13pin接口扩展USB接口的方法

  1. 如果有购买Orange Pi的13pin扩展板,将扩展板插入开发板的13pin接口中,就可以扩展2个USB接口

    Zero3-img18.png

  2. 如果没有13pin扩展板,可以使用4pin 2.54mm杜邦转USB2.0母头的线来扩展USB接口,具体方法如下所示:

    1. 首先需要准备一根4pin 2.54mm杜邦转USB2.0母头的线(这种线在淘宝可以买到,请自行搜索购买),如下图所示:

      Zero3-img76.png Zero3-img77.png

    2. 13pin接口的原理图如下所示

      Zero3-img19.png Zero3-img78.png

    3. USB2的接线如下所示

      Zero3-img79.png

    4. USB3的接线如下所示

      Zero3-img80.png

    5. 如果需要在13pin接口上同时接两个USB设备,会发现13pin接口上的5V和GND引脚不够用,此时其中一个USB设备可以使用26pin接口中的5V和GND引脚,位置如下图所示:

      Zero3-img24-1.png

Debian/Ubuntu Server和Xfce桌面系统使用说明

已支持的linux镜像类型和内核版本

Linux镜像类型 内核版本 服务器版 桌面版
Ubuntu 20.04 - Focal Linux5.4 支持 支持
Ubuntu 22.04 - Jammy Linux5.4 支持 支持
Debian 11 - Bullseye Linux5.4 支持 支持
Ubuntu 22.04 - Jammy Linux6.1 支持 支持
Debian 11 - Bullseye Linux6.1 支持 支持
Debian 12 - Bookworm Linux6.1 支持 支持

Orange Pi的资料下载页面进入对应开发板的下载页面后可以看到下面的下载选项,在下文的描述中,Ubuntu镜像和Debian镜像一般统称为Linux镜像

Zero3-img81.png

Linux镜像的命名规则为:

开发板型号_版本号_Linux发行版类型_发行版代号_服务器或桌面_内核版本

  1. 开发板的型号:都是orangepizero3。不同开发板的型号名一般都是不同的,烧录镜像前,请确保所选择镜像的这个型号名和开发板是匹配的。

  2. 版本号:如1.x.x,这个版本号会随着镜像功能的更新而递增,另外开发板Linux镜像的版本号最后一个数字都是偶数。

  3. Linux发行版的类型:目前支持UbuntuDebian。由于Ubuntu源自Debian,所以两个系统在使用上来说总体区别不大。但部分软件的默认配置和命令的使用上还是有些许区别的,另外Ubuntu和Debian都各自有维护所支持的软件仓库,在支持的可安装的软件包上也是有些许差异的。这些需要亲自去使用体验才会有比较深刻的认识。有关更多的细节,可以参考下Ubuntu和Debian官方提供的文档。

  4. 发行版代号:用来区分Ubuntu或者Debian这样具体的Linux发行版的不同版本。其中focaljammy都是Ubuntu发行版,focal表示Ubuntu20.04,jammy表示Ubuntu22.04,不同版本的最大的区别是新版本的Ubuntu系统维护的软件仓库的中的软件很多都比旧版本的Ubuntu系统中的要新,比如Python和GCC编译工具链等。bullseye是Debian的具体版本代号,bullseye表示Debian11,bookworm表示Debian12。

  5. 服务器或桌面:用来表示系统是否带桌面环境,如果为server就表示系统没有安装桌面环境,镜像占用的存储空间和资源比较小,主要使用命令行来操作控制系统。如果为desktop_xfce就表示系统默认安装有XFCE桌面环境,镜像占用的存储空间和资源比较大,可以接显示器和鼠标键盘通过界面来操作系统。当然desktop版本的系统也可以像server版本的系统一样通过命令行来操作。

  6. 内核版本:用来表示linux内核的版本号,目前支持linux5.4linux6.1

linux内核驱动适配情况

功能 Linux5.4 Linux6.1
HDMI视频 OK OK
HDMI音频 OK OK
USB2.0 x 3 OK OK
TF卡启动 OK OK
千兆网卡 OK OK
红外接收 OK OK
WIFI OK OK
蓝牙 OK OK
耳机音频 OK OK
USB摄像头 OK OK
LED灯 OK OK
26pin GPIO OK OK
26pin I2C OK OK
26pin SPI1 OK OK
26pin UART OK OK
PWM OK OK
温度传感器 OK OK
硬件看门狗 OK OK
Mali GPU NO NO
视频编解码 NO NO
TV-OUT NO NO

本手册linux命令格式说明

  1. 本手册中所有需要在Linux系统中输入的命令都会使用下面的方框框起来

    如下所示,黄色方框里内容表示需要特别注意的内容,这里面的命令除外。

  2. 命令前面的提示符类型说明

    1. 命令前面提示符指的是下面方框内红色部分的内容,这部分内容不是linux命令的一部分,所以在linux系统中输入命令时,请不要把红色字体部分的内容也输入进去。

      orangepi@orangepi:~$ sudo apt update

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

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

      root@test:~# ls

    2. root@orangepi:~$ 提示符表示这个命令是在开发板的linux系统中输入的, 提示符最后的 $ 表示系统当前用户为普通用户,当执行特权命令时,需要加上sudo

    3. root@orangepi:~# 提示符表示这个命令是在开发板的linux系统中输入的, 提示符最后的 # 表示系统当前用户为root用户,可以执行任何想要执行的命令

    4. test@test:~$ 提示符表示这个命令是在Ubuntu PC或者Ubuntu虚拟机中输入的,而不是开发板的linux系统中。提示符最后的 $ 表示系统当前用户为普通用户,当执行特权命令时,需要加上sudo

    5. root@test:~# 提示符表示这个命令是在Ubuntu PC或者Ubuntu虚拟机中输入的,而不是开发板的linux系统中。提示符最后的 # 表示系统当前用户为root用户,可以执行任何想要执行的命令

  3. 哪些是需要输入的命令?

    1. 如下所示,黑色加粗部分是需要输入的命令,命令下面的是输出的内容(有些命令有输出,有些可能没有输出),这部分内容是不需要输入的

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

      verbosity=7

      bootlogo=false

      console=serial

    2. 如下所示,有些命令一行写不下会放到下一行,只要黑色加粗的部分就都是需要输入的命令。当这些命令输入到一行的时候,每行最后的”\”是需要去掉的,这个不是命令的一部分。另外命令的不同部分都是有空格的,请别漏了

      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系统终端自动登录的方法

  1. linux系统默认就是自动登录终端的,默认登录的用户名是orangepi

    Zero3-img82.png

  2. 使用下面的命令可以设置root用户自动登录终端

    orangepi@orangepi:~$ sudo auto_login_cli.sh root

  3. 使用下面的命令可以禁止自动登录终端

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

  4. 使用下面的命令可以再次设置orangepi用户自动登录终端

    orangepi@orangepi:~$ sudo auto_login_cli.sh orangepi

linux桌面版系统自动登录说明

  1. 桌面版系统启动后会自动登录进入桌面,无需输入密码

    Zero3-img83.png

  2. 运行下面的命令可以禁止桌面版系统自动登录桌面

    orangepi@orangepi:~$ sudo disable_desktop_autologin.sh

  3. 然后重启系统就会出现登录对话框,此时需要输入密码才能进入系统

    Zero3-img84.png

Linux桌面版系统root用户自动登录的设置方法

  1. 执行下面的命令可以设置桌面版系统使用root用户自动登录

    orangepi@orangepi:~$ sudo desktop_login.sh root

  2. 然后重启系统,就会自动使用root用户登录桌面了

    Zero3-img85.png

    注意,如果使用root用户登录桌面系统,是无法使用右上角的pulseaudio来管理音频设备的。

    另外请注意这并不是一个bug,因为pulseaudio本来就不允许在root用户下运行。

  3. 执行下面的命令可以再次设置桌面版系统使用orangepi用户自动登录

    orangepi@orangepi:~$ sudo desktop_login.sh orangepi

Linux桌面版系统禁用桌面的方法

  1. 首先在命令行中输入下面的命令,请记得加sudo权限

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

  2. 然后重启Linux系统就会发现不会显示桌面了

    orangepi@orangepi:~$ sudo reboot

  3. 重新打开桌面的命令如下所示,请记得加sudo权限

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

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

板载LED灯测试说明

  1. 开发板上有两个LED灯,一个绿灯,一个红灯,系统启动时LED灯默认显示情况如下所示:
绿灯 红灯
u-boot启动阶段
内核启动到进入系统 闪烁
GPIO口 PC13 PC12

开发板上的两个LED灯都是通过软件来控制的。

当拿到开发板后,您可能会发现开发板上就算没有插入烧录有系统的TF卡,给开发板接上电源后,这两个LED灯也会亮,这是因为开发板上的16MB SPI Flash出厂默认会烧录一个微型的linux系统,此系统在u-boot启动阶段会点亮红灯,进入内核后会关闭红灯,设置绿灯闪烁。

如果SPI Flash中的linux系统被清空了,那么不插入烧录有系统的TF卡,接通电源后,开发板上的两个LED灯就不会亮了。

  1. 设置绿灯亮灭和闪烁的方法如下所示:

    注意,下面的操作请在root用户下进行。

    1. 首先进入绿灯的设置目录

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

    2. 设置绿灯停止闪烁的命令如下

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

    3. 设置绿灯常亮的命令如下

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

    4. 设置绿灯闪烁的命令如下

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

  2. 设置红灯亮灭和闪烁的方法如下所示:

    注意,下面的操作请在root用户下进行。

    1. 首先进入红灯的设置目录

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

    2. 设置红灯常亮的命令如下

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

    3. 设置红灯闪烁的命令如下

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

    4. 设置红灯停止闪烁的命令如下

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

  3. 如果开机后不需要LED灯闪烁,可以使用下面的方法来关闭绿灯闪烁

    1. 首先运行下orangepi-config,普通用户记得加sudo权限

      orangepi@orangepi:~$ sudo orangepi-config

    2. 然后选择System

      Zero3-img86.png

    3. 然后选择Hardware

      Zero3-img87.png

    4. 然后使用键盘的方向键定位到下图所示的位置,再使用空格选中disable-leds

      Zero3-img88.png

    5. 然后选择<Save>保存

      Zero3-img89.png

    6. 然后选择<Back>

      Zero3-img90.png

    7. 然后选择<Reboot>重启系统使配置生效

      Zero3-img91.png

    8. 重启后完全进入系统就可以看到开发板上的两个LED灯都不会亮了

TF卡中linux系统rootfs分区容量操作说明

第一次启动会自动扩容TF卡中rootfs分区的容量

  1. 将开发板的Linux镜像烧录到TF卡中后,可以在Ubuntu电脑中查看下TF卡容量的使用情况,步骤如下所示:

    注意,这一步不操作是不影响开发板的Linux系统自动扩容的。这里只是想说明TF卡烧录完Linux镜像后,怎么查看TF卡容量的方法。

    1. 首先在Ubuntu电脑中安装下gparted这个软件

      test@test:~$ sudo apt install -y gparted

    2. 然后打开gparted

      test@test:~$ sudo gparted

    3. 打开gparted后在右上角可以选择TF卡,然后就可以看到TF卡容量的使用情况

      Zero3-img92.png

    4. 上图显示的是烧录完Linux桌面版系统后TF卡的情况,可以看到,虽然TF卡的总容量是16GB的(在GParted中显示为14.84GiB),但是rootfs分区(/dev/sdc1)实际只分配了4.05GiB,还剩下10.79GiB未分配

  2. 然后可以将烧录好Linux系统的TF卡插入开发板中启动,TF卡第一次启动linux系统时会通过orangepi-resize-filesystem.service这个systemd服务来调用orangepi-resize-filesystem脚本自动进行rootfs分区的扩容,所以无需再手动扩容

  3. 登录系统后可以通过df -h命令来查看rootfs的大小,如果和TF卡的实际容量一致,说明自动扩容运行正确

    orangepi@orangepi:~$ df -h

    Filesystem Size Used AvailUse% Mounted on
    udev430M0430M 0% /dev
    tmpfs 100M 5.6M 95M 6% /run
    /dev/mmcblk0p115G915M14G7% /
    tmpfs 500M 0500M 0% /dev/shm

  1. 第一次启动完Linux系统后,我们还可以将TF卡从开发板中取下来重新插入Ubuntu电脑,然后再次使用gparted查看下TF卡的情况,如下图所示,rootfs分区(/dev/sdc1)的容量已经扩展到了14.69GiB了

    Zero3-img93.png

    需要注意的是,linux系统只有一个ext4格式的分区,没有使用单独的BOOT分区来存放内核镜像等文件,所以也就不存在BOOT分区扩容的问题。

禁止自动扩容TF卡中rootfs分区容量的方法

  1. 首先在Ubuntu电脑(Windows不行)中将开发板的linux镜像烧录到TF卡中,然后重新拔插下TF卡

  2. 然后Ubuntu电脑一般会自动挂载TF卡的分区,如果自动挂载正常,使用ls命令可以看到下面的输出

    test@test:~$ ls /media/test/opi_root/

    bin    boot    dev    etc    home    lib    lost+found    media    mnt    opt    proc    root    run
    sbin    selinux    srv    sys    tmp    usr    var

  3. 然后在Ubuntu电脑中将当前用户切换成root用户

    test@test:~$ sudo -i

    [sudo] test 的密码:

    root@test:~#

  4. 然后进入TF卡中的linux系统的root目录下新建一个名为.no_rootfs_resize的文件

    root@test:~# cd /media/test/opi_root/

    root@test:/media/test/opi_root/# cd root

    root@test:/media/test/opi_root/root# touch .no_rootfs_resize

    root@test:/media/test/opi_root/root# ls .no_rootfs*

    .no_rootfs_resize

  5. 然后就可以卸载TF卡,再拔出TF卡插到开发板中启动,linux系统启动时,当检测到/root目录下有.no_rootfs_resize这个文件就不会再自动扩容rootfs了

  6. 禁止rootfs自动扩容后进入Linux系统可以看到rootfs分区的总容量只有4GB(这里测试的是桌面版本的镜像),远小于TF卡的实际容量,说明禁止rootfs自动扩容成功

    orangepi@orangepi:~$ df -h

    Filesystem Size Used AvailUse% Mounted on
    udev925M 0925M 0% /dev
    tmpfs 199M 3.2M 196M 2% /run
    /dev/mmcblk0p14.0G 3.2G 686M 83% /

  7. 如果需要重新扩容TF卡中rootfs分区的容量,只需要执行下面的命令,然后重新启动开发板的Linux系统即可

    注意,请在root用户下执行下面的命令。

    root@orangepi:~# rm /root/.no_rootfs_resize

    root@orangepi:~# systemctl enable orangepi-resize-filesystem.service

    root@orangepi:~# sudo reboot

    重启后再次进入开发板的Linux系统就可以看到rootfs分区已经扩展为TF卡的实际容量了

    root@orangepi:~$ df -h

    Filesystem Size Used AvailUse% Mounted on
    udev925M 0925M 0% /dev
    tmpfs 199M 3.2M 196M 2% /run
    /dev/mmcblk0p115G3.2G 12G 23% /

手动扩容TF卡中rootfs分区容量的方法

如果TF卡的总容量很大,比如为128GB,不想Linux系统rootfs分区使用TF卡所有的容量,只想分配一部分容量,比如16GB,给Linux系统使用,然后TF卡的剩余容量就可以用作其他用途。那么可以使用此小节介绍的内容来手动扩容TF中rootfs分区的容量。

  1. 首先在Ubuntu电脑(Windows不行)中将开发板的linux镜像烧录到TF卡中,然后重新拔插下TF卡

  2. 然后Ubuntu电脑一般会自动挂载TF卡的分区,如果自动挂载正常,使用ls命令可以看到下面的输出

    test@test:~$ ls /media/test/opi_root/

    bin    boot    dev    etc    home    lib    lost+found    media    mnt    opt    proc    root    run
    sbin    selinux    srv    sys    tmp    usr    var

  3. 然后在Ubuntu电脑中将当前用户切换成root用户

    test@test:~$ sudo -i

    [sudo] test 的密码:

    root@test:~#

  4. 然后进入TF卡中的linux系统的root目录下新建一个名为.no_rootfs_resize的文件

    root@test:~# cd /media/test/opi_root/

    root@test:/media/test/opi_root/# cd root

    root@test:/media/test/opi_root/root# touch .no_rootfs_resize

    root@test:/media/test/opi_root/root# ls .no_rootfs*

    .no_rootfs_resize

  1. 然后在Ubuntu电脑中安装下gparted这个软件

    test@test:~$ sudo apt install -y gparted

  2. 然后打开gparted

    test@test:~$ sudo gparted

  3. 打开gparted后在右上角可以选择TF卡,然后就可以看到TF卡容量的使用情况。下图显示的是烧录完Linux桌面版系统后TF卡的情况,可以看到,虽然TF卡的总容量是16GB的(在GParted中显示为14.84GiB),但是rootfs分区(/dev/sdc1)实际只分配了4.05GiB,还剩下10.79GiB未分配

    Zero3-img92.png

  4. 然后选中rootfs分区(/dev/sdc1)

    Zero3-img94.png

  5. 再点击鼠标右键就可以看到下图所示的操作选项,如果TF卡已经挂载了,首先需要Umount掉TF卡的rootfs分区

    Zero3-img95.png

  6. 然后再次选中rootfs分区,再点击鼠标右键,然后选择Resize/Move开始扩容rootfs分区的大小

    Zero3-img96.png

  7. Resize/Move选项打开后会弹出下面的设置界面

    Zero3-img97.png

  8. 然后可以直接拖动下图所示的位置来设置容量的大小,也可以通过设置New size(MiB)中的数字来设置rootfs分区的大小

    Zero3-img98.png

  9. 设置好容量后,再点击右下角的Resize/Move即可

    Zero3-img99.png

  10. 最后确认无误后,再点击下图所示的绿色

    Zero3-img100.png

  11. 然后选择Apply,就会正式开始扩容rootfs分区的容量

    Zero3-img101.png

  12. 扩容完成后点击Close关闭即可

    Zero3-img102.png

  13. 然后就可以把TF卡拔下来,再插到开发板中启动,进入开发板的Linux系统中后如果使用df -h命令可以看到rootfs分区的大小和前面设置的大小一致的话就说明手动扩容成功

    root@orangepi:~# df -h

    Filesystem Size Used AvailUse% Mounted on
    udev925M 0925M 0% /dev
    tmpfs 199M 3.2M 196M 2% /run
    /dev/mmcblk0p17.7G 3.2G 4.4G 42% /

缩小TF卡中rootfs分区容量的方法

在TF卡的Linux系统中配置好应用程序或者其他的开发环境后,如果想备份下TF卡中的Linux系统,可以使用此小节的方法先缩小下rootfs分区的大小,然后再开始备份。

  1. 首先在Ubuntu电脑(Windows不行)中插入想要操作的TF卡

  2. 然后在Ubuntu电脑中安装下gparted这个软件

    test@test:~$ sudo apt install -y gparted

  3. 然后打开gparted

    test@test:~$ sudo gparted

  4. 打开gparted后在右上角可以选择TF卡,然后就可以看到TF卡容量的使用情况

    Zero3-img103.png

  5. 然后选中rootfs分区(/dev/sdc1)

    Zero3-img104.png

  6. 再点击鼠标右键就可以看到下图所示的操作选项,如果TF卡已经挂载了,首先需要Umount掉TF卡的rootfs分区

    Zero3-img105.png

  7. 然后再次选中rootfs分区,再点击鼠标右键,然后选择Resize/Move开始设置rootfs分区的大小

    Zero3-img106.png

  8. Resize/Move选项打开后会弹出下面的设置界面

    Zero3-img107.png

  9. 然后可以直接拖动下图所示的位置来设置容量的大小,也可以通过设置New size(MiB)中的数字来设置rootfs分区的大小

    Zero3-img98.png

  1. 设置好容量后,再点击右下角的Resize/Move即可

    Zero3-img99.png

  2. 最后确认无误后,再点击下图所示的绿色

    Zero3-img100.png

  3. 然后选择Apply,就会正式开始扩容rootfs分区的容量

    Zero3-img101.png

  4. 扩容完成后点击Close关闭即可

    Zero3-img102.png

  5. 然后就可以把TF卡拔下来,再插到开发板中启动,进入开发板的Linux系统中后如果使用df -h命令可以看到rootfs分区的大小和前面设置的大小一致的话就说明缩小容量成功

    root@orangepi:~# df -h

    Filesystem Size Used AvailUse% Mounted on
    udev925M 0925M 0% /dev
    tmpfs 199M 3.2M 196M 2% /run
    /dev/mmcblk0p17.7G 3.2G 4.4G 42% /

网络连接测试

以太网口测试

  1. 首先将网线的一端插入开发板的以太网接口,网线的另一端接入路由器,并确保网络是畅通的

  2. 系统启动后会通过DHCP自动给以太网卡分配IP地址,不需要其他任何配置

  3. 在开发板的Linux系统中查看IP地址的命令如下所示:

    下面的命令请不要照抄,比如debian12中的网络节点名为end0,下面的命令就需要修改为ip a s end0。

    orangepi@orangepi:~$ ip a s 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:93:b3 brd ff:ff:ff:ff:ff:ff

    inet 192.168.1.16/24 brd 192.168.1.255 scope global dynamic noprefixroute eth0

    valid_lft 259174sec preferred_lft 259174sec

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

    valid_lft 259176sec preferred_lft 172776sec

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

    valid_lft forever preferred_lft forever

    开发板启动后查看IP地址有三种方法:

    1. 接HDMI显示器,然后登录系统使用ip a s eth0命令查看IP地址
    2. 在调试串口终端输入ip a s eth0命令来查看IP地址
    3. 如果没有调试串口,也没有HDMI显示器,还可以通过路由器的管理界面来查看开发板网口的IP地址。不过这种方法经常有人会无法正常看到开发板的IP地址。如果看不到,调试方法如下所示:
    1. 首先检查Linux系统是否已经正常启动,如果开发板的绿灯闪烁了,一般是正常启动了,如果只亮红灯,或者红灯绿灯都没亮,说明系统都没正常启动;

    2. 检查网线有没有插紧,或者换根网线试下;

    3. 换个路由器试下(路由器的问题有遇到过很多,比如路由器无法正常分配IP地址,或者已正常分配IP地址但在路由器中看不到);

    4. 如果没有路由器可换就只能连接HDMI显示器或者使用调试串口来查看IP地址。

    另外需要注意的是开发板DHCP自动分配IP地址是不需要任何设置的。

  1. 测试网络连通性的命令如下,ping命令可以通过Ctrl+C快捷键来中断运行

    下面的命令请不要照抄,比如debian12中的网络节点名为end0,下面的命令就需要修改为ping www.baidu.com -I end0。(这里是大写的字母I,不是小写的字母L)

    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网络的。

  1. 先登录linux系统,有下面三种方式

    1. 如果开发板连接了网线,可以通过ssh远程登录linux系统
    1. 如果开发板连接好了调试串口,可以使用串口终端登录linux系统

    2. 如果连接了开发板到HDMI显示器,可以通过HDMI显示的终端登录到linux系统

  1. 首先使用nmcli dev wifi命令扫描周围的WIFI热点

    orangepi@orangepi:~$ nmcli dev wifi

    Zero3-img108.png

  2. 然后使用nmcli 命令连接扫描到的WIFI热点,其中:

    1. wifi_name需要换成想连接的WIFI热点的名字

    2. wifi_passwd需要换成想连接的WIFI热点的密码

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

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

  3. 通过ip addr show wlan0命令可以查看wifi的IP地址

    orangepi@orangepi:~$ ip a s 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

  4. 使用ping命令可以测试wifi网络的连通性,ping命令可以通过Ctrl+C快捷键来中断运行

    orangepi@orangepi:~$ ping www.orangepi.org -I wlan0    (这里是大写的字母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

  1. 先登录linux系统,有下面三种方式

    1. 如果开发板连接了网线,可以通过ssh远程登录linux系统

    2. 如果开发板连接好了调试串口,可以使用串口终端登录linux系统(串口软件请使用MobaXterm,使用minicom无法显示图形界面)

    3. 如果连接了开发板到HDMI显示器,可以通过HDMI显示的终端登录到linux系统

  2. 然后在命令行中输入nmtui命令打开wifi连接的界面

    orangepi@orangepi:~$ sudo nmtui

  3. 输入nmtui命令打开的界面如下所示

    Zero3-img109.png

  4. 选择Activate a connect后回车

    Zero3-img110.png

  5. 然后就能看到所有搜索到的WIFI热点

    Zero3-img111.png

  6. 选择想要连接的WIFI热点后再使用Tab键将光标定位到Activate后回车

    Zero3-img112.png

  7. 然后会弹出输入密码的对话框,在Pssword内输入对应的密码然后回车就会开始连接WIFI

    Zero3-img113.png

  8. WIFI连接成功后会在已连接的WIFI名称前显示一个”*”

    Zero3-img114.png

  9. 通过ip a s wlan0命令可以查看wifi的IP地址

    orangepi@orangepi:~$ ip a s wlan0

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

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

    inet 192.168.1.11/24 brd 192.168.1.255 scope global dynamic noprefixroute wlan0

    valid_lft 259069sec preferred_lft 259069sec

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

    valid_lft 259071sec preferred_lft 172671sec

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

    valid_lft forever preferred_lft forever

  10. 使用ping命令可以测试wifi网络的连通性,ping命令可以通过Ctrl+C快捷键来中断运行

    orangepi@orangepi:~$ ping www.orangepi.org -I wlan0    (这里是大写的字母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

桌面版镜像的测试方法

  1. 点击桌面右上角的网络配置图标(测试WIFI时请不要连接网线)

    Zero3-img115.png

  2. 在弹出的下拉框中点击More networks可以看到所有扫描到的WIFI热点,然后选择想要连接的WIFI热点

    Zero3-img116.png

  3. 然后输入WIFI热点的密码,再点击Connect就会开始连接WIFI

    Zero3-img117.png

  4. 连接好WIFI后,可以打开浏览器查看是否能上网,浏览器的入口如下图所示

    Zero3-img118.png

  5. 打开浏览器后如果能打开其他网页说明WIFI连接正常

    Zero3-img119.png

通过create_ap创建WIFI热点的方法

create_ap是一个帮助快速创建Linux上的WIFI热点的脚本,并且支持bridge和NAT模式,能够自动结合hostapd, dnsmasq和iptables完成WIFI热点的设置,避免了用户进行复杂的配置,github地址如下:

https://github.com/oblique/create_ap

OPi发布的Linux镜像已经预装了create_ap脚本,可以通过create_ap命令来创建WIFI热点,create_ap的基本命令格式如下所示:

create_ap [options] <wifi-interface> [<interface-with-internet>] [<access-point-name> [<passphrase>]]

* options:可以通过该参数指定加密方式、WIFI热点的频段、频宽模式、网络共享方式等,具体可以通过create_ap -h获取到有哪些option

* wifi-interface:无线网卡的名称

* interface-with-internet:可以联网的网卡名称,一般是eth0

* access-point-name:热点名称

* passphrase:热点的密码

create_ap以NAT模式创建WIFI热点的方法

  1. 输入下面的命令以NAT模式创建名称为orangepi、密码为orangepi的WIFI热点

    注意,下面的命令中,Debian12需要修改eth0为end0。

    orangepi@orangepi:~$ sudo create_ap -m nat wlan0 eth0 orangepi orangepi --no-virt

  1. 如果有下面的信息输出,说明WIFI热点创建成功

    orangepi@orangepi:~$ sudo create_ap -m nat wlan0 eth0 orangepi orangepi --no-virt

    Config dir: /tmp/create_ap.wlan0.conf.TQkJtsz1

    PID: 26139

    Network Manager found, set wlan0 as unmanaged device... DONE

    Sharing Internet using method: nat

    hostapd command-line interface: hostapd_cli -p /tmp/create_ap.wlan0.conf.TQkJtsz1/hostapd_ctrl

    wlan0: interface state UNINITIALIZED->ENABLED

    wlan0: AP-ENABLED

    wlan0: STA ce:bd:9a:dd:a5:86 IEEE 802.11: associated

    wlan0: AP-STA-CONNECTED ce:bd:9a:dd:a5:86

    wlan0: STA ce:bd:9a:dd:a5:86 RADIUS: starting accounting session D4FBF7E5C604F169

    wlan0: STA ce:bd:9a:dd:a5:86 WPA: pairwise key handshake completed (RSN)

    wlan0: EAPOL-4WAY-HS-COMPLETED ce:bd:9a:dd:a5:86

  2. 此时拿出手机,在搜索到的WIFI列表中就能找到开发板创建的名为orangepi的WIFI热点,然后可以点击 orangepi连接热点,密码就是上面设置的orangepi

    Zero3-img120.png

  3. 连接成功后的显示如下图所示

    Zero3-img121.png

  4. 在NAT模式下,连接到开发板热点的无线设备是向开发板的DHCP服务请求IP地址的,所以会有两个不同的网段,如这里开发板的IP是192.168.1.X

    注意,下面的命令中,Debian12需要修改eth0为end0。

    orangepi@orangepi:~$ sudo ifconfig eth0

    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500

    inet 192.168.1.150 netmask 255.255.255.0 broadcast 192.168.1.255

    inet6 fe80::938f:8776:5783:afa2 prefixlen 64 scopeid 0x20<link>

    ether 4a:a0:c8:25:42:82 txqueuelen 1000 (Ethernet)

    RX packets 25370 bytes 2709590 (2.7 MB)

    RX errors 0 dropped 50 overruns 0 frame 0

    TX packets 3798 bytes 1519493 (1.5 MB)

    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

    device interrupt 83

    而开发板的DHCP服务默认会给接入热点的设备分配192.168.12.0/24的IP地址,这时点击已经连接的WIFI热点orangepi,然后就可以看到手机的IP地址是192.168.12.X

    Zero3-img121.png

    Zero3-img122-1.png

  5. 如果想要为接入的设备指定不同的网段,可以通过-g参数指定,如通过-g参数指定接入点AP的网段为192.168.2.1

    注意,下面的命令中,Debian12需要修改eth0为end0。

    orangepi@orangepi:~$ sudo create_ap -m nat wlan0 eth0 orangepi orangepi -g 192.168.2.1 --no-virt

    此时通过手机连接到热点后,点击已经连接的WIFI热点orangepi,然后可以看到手机的IP地址是192.168.2.X

    Zero3-img121.png

    Zero3-img123.png

  1. 在不指定--freq-band参数的情况下,默认创建的热点是2.4G频段的,如果想要创建5G频段的热点可以通过--freq-band 5参数指定,具体命令如下

    注意,下面的命令中,Debian12需要修改eth0为end0。

    orangepi@orangepi:~$ sudo create_ap -m nat wlan0 eth0 orangepi orangepi --freq-band 5 --no-virt

  1. 如果需要隐藏SSID,可以指定--hidden参数,具体命令如下

    注意,下面的命令中,Debian12需要修改eth0为end0。

    orangepi@orangepi:~$ sudo create_ap -m nat wlan0 eth0 orangepi orangepi --hidden --no-virt

    此时手机是搜索不到WIFI热点的,需要手动指定WIFI热点名称,并输入密码来连接WIFI热点

    Zero3-img124.png

create_ap以bridge模式创建WIFI热点的方法

  1. 输入下面的命令以bridge模式创建名称为orangepi、密码为orangepi的WIFI热点

    注意,下面的命令中,Debian12需要修改eth0为end0。

    orangepi@orangepi:~$ sudo create_ap -m bridge wlan0 eth0 orangepi orangepi --no-virt

  1. 如果有下面的信息输出,说明WIFI热点创建成功

    orangepi@orangepi:~$ sudo create_ap -m bridge wlan0 eth0 orangepi orangepi --no-virt

    Config dir: /tmp/create_ap.wlan0.conf.zAcFlYTx

    PID: 27707

    Network Manager found, set wlan0 as unmanaged device... DONE

    Sharing Internet using method: bridge

    Create a bridge interface... br0 created.

    hostapd command-line interface: hostapd_cli -p /tmp/create_ap.wlan0.conf.zAcFlYTx/hostapd_ctrl

    wlan0: interface state UNINITIALIZED->ENABLED

    wlan0: AP-ENABLED

    wlan0: STA ce:bd:9a:dd:a5:86 IEEE 802.11: associated

    wlan0: AP-STA-CONNECTED ce:bd:9a:dd:a5:86

    wlan0: STA ce:bd:9a:dd:a5:86 RADIUS: starting accounting session 937BF40E51897A7B

    wlan0: STA ce:bd:9a:dd:a5:86 WPA: pairwise key handshake completed (RSN)

    wlan0: EAPOL-4WAY-HS-COMPLETED ce:bd:9a:dd:a5:86

  2. 此时拿出手机,在搜索到的WIFI列表中就能找到开发板创建的名为orangepi的WIFI热点,然后可以点击orangepi连接热点,密码就是上面设置的orangepi

    Zero3-img120.png

  3. 连接成功后的显示如下图所示

    Zero3-img121.png

  4. 在bridge模式下,连接到开发板热点的无线设备也是向主路由(开发板连接的路由器)的DHCP服务请求IP地址的,如这里开发板的IP是192.168.1.X

    orangepi@orangepi:~$ sudo ifconfig eth0

    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500

    inet 192.168.1.150 netmask 255.255.255.0 broadcast 192.168.1.255

    inet6 fe80::938f:8776:5783:afa2 prefixlen 64 scopeid 0x20<link>

    ether 4a:a0:c8:25:42:82 txqueuelen 1000 (Ethernet)

    RX packets 25370 bytes 2709590 (2.7 MB)

    RX errors 0 dropped 50 overruns 0 frame 0

    TX packets 3798 bytes 1519493 (1.5 MB)

    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

    device interrupt 83

    而接入WIFI热点的设备的IP也是由主路由分配的,所以连接WIFI热点的手机和开发板处于相同的网段,这时点击已经连接的WIFI热点orangepi,然后就可以看到手机的IP地址也是192.168.1.X

    Zero3-img121.png

    Zero3-img125.png

  5. 在不指定--freq-band参数的情况下,默认创建的热点是2.4G频段的,如果想要创建5G频段的热点可以通过--freq-band 5参数指定,具体命令如下

    注意,下面的命令中,Debian12需要修改eth0为end0。

    orangepi@orangepi:~$ sudo create_ap -m bridge wlan0 eth0 orangepi orangepi --freq-band 5 --no-virt

  1. 如果需要隐藏SSID,可以指定--hidden参数,具体命令如下

    注意,下面的命令中,Debian12需要修改eth0为end0。

    orangepi@orangepi:~$ sudo create_ap -m bridge wlan0 eth0 orangepi orangepi --hidden --no-virt

    此时手机是搜索不到WIFI热点的,需要手动指定WIFI热点名称,并输入密码来连接WIFI热点

    Zero3-img124.png

设置静态IP地址的方法

请不要通过修改/etc/network/interfaces配置文件的方式来设置静态IP地址。

使用nmtui命令来设置静态IP地址

  1. 首先运行nmtui命令

    orangepi@orangepi:~$ sudo nmtui

  2. 然后选择Edit a connection并按下回车键

    Zero3-img126.png

  3. 然后选择需要设置静态IP地址的网络接口,比如设置Ethernet接口的静态IP地址选择Wired connection 1就可以了

    Zero3-img127.png

  4. 然后通过Tab键选择Edit并按下回车键

    Zero3-img128.png

  5. 然后通过Tab键将光标移动到下图所示的<Automatic>位置进行IPv4的配置

    Zero3-img129.png

  6. 然后回车,通过上下方向键选择Manual,然后回车确定

    Zero3-img130.png

  7. 选择完后的显示如下图所示

    Zero3-img131.png

  8. 然后通过Tab键将光标移动到<Show>

    Zero3-img132.png

  9. 然后回车,回车后会弹出下面的设置界面

    Zero3-img133.png

  10. 然后就可以在下图所示的位置设置IP地址(Addresses)、网关(Gateway)和DNS服务器的地址(里面还有很多其他设置选项,请自行探索),请根据自己的具体需求来设置,下图中设置的值只是一个示例

    Zero3-img134-1.png

  11. 设置完后将光标移动到右下角的<OK>,然后回车确认

    Zero3-img135.png

  12. 然后点击<Back>回退到上一级选择界面

    Zero3-img136.png

  13. 然后选择Activate a connection,再将光标移动到<OK>,最后点击回车

    Zero3-img137.png

  14. 然后选择需要设置的网络接口,比如Wired connection 1,然后将光标移动到<Deactivate>,再按下回车键禁用Wired connection 1

    Zero3-img138.png

  15. 然后请不要移动光标,再按下回车键重新使能Wired connection 1,这样前面设置的静态IP地址就会生效了

    Zero3-img139.png

  16. 然后通过<Back>Quit按钮就可以退出nmtui

    Zero3-img140.png Zero3-img141.png

  17. 然后通过ip a s eth0就能看到网口的IP地址已经变成前面设置的静态IP地址了

    注意,下面的命令中,Debian12需要修改eth0为end0。

    orangepi@orangepi:~$ ip a s 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

  18. 然后就可以测试网络的连通性来检查IP地址是否配置OK了,ping命令可以通过Ctrl+C快捷键来中断运行

    注意,下面的命令中,Debian12需要修改eth0为end0。

    orangepi@orangepi:~$ ping 192.168.1.177 -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地址

  1. 如果要设置网口的静态IP地址,请先将网线插入开发板,如果需要设置WIFI的静态IP地址,请先连接好WIFI,然后再开始设置静态IP地址

  2. 然后通过nmcli con show命令可以查看网络设备的名字,如下所示

    1. orangepi为WIFI网络接口的名字(名字不一定相同)

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

  3. 然后输入下面的命令,其中

    1. "Wired connection 1" 表示设置以太网口的静态IP地址,如果需要设置WIFI的静态IP地址,请修改为WIFI网络接口对应的名字(通过nmcli con show命令可以获取到)

    2. ipv4.addresses后面是要设置的静态IP地址,可以修改为自己想要设置的值

    3. ipv4.gateway 表示网关的地址

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

      ipv4.addresses "192.168.1.110" \

      ipv4.gateway "192.168.1.1" \

      ipv4.dns "8.8.8.8" \

      ipv4.method "manual"

  4. 然后重启linux系统

    orangepi@orangepi:~$ sudo reboot

  5. 然后重新进入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

设置Linux系统第一次启动自动连接网络的方法

开发板有以太网口,如果想通过以太网口来远程登录开发板的Linux系统,只需要给以太网口插上能正常上网的网线,在启动完Linux系统后会自动通过DHCP给以太网口分配一个IP地址,然后我们通过HDMI屏幕、串口或者查看路由器后台的方式就可以获取以太网口的IP地址,然后就能远程登录Linux系统。

开发板也有无线WIFI,如果想通过WIFI来远程登录开发板的Linux系统,则需要通过以太网口的IP地址ssh远程登录Linux系统后通过命令来连接WIFI,或者在HDMI屏幕或串口中通过命令来连接WIFI。

但如果HDMI屏幕和串口模块都没有,虽然有网线,但无法通过路由器后台查看到开发板的IP地址。或者HDMI屏幕、串口模块和网线都没有,只有WIFI可以连接,则可以使用此小节介绍的方法来自动连接WIFI并且还能设置WIFI的静态IP地址或者自动设置以太网口的静态IP地址。

要使用此小节的方法,首先需要准备一台Linux系统的机器。比如一台安装有Ubuntu系统的电脑或者虚拟机。

为什么需要Linux系统的机器,因为TF卡中烧录的开发板Linux系统的根文件系统是ext4格式的,Linux系统的机器可以正常的挂载它,然后对其中的配置文件进行修改。

如果想要在Windows系统中来修改,可以使用Paragon ExtFS for Windows这款软件,由于此软件需要付费,而目前又没有比较好用的类似的免费软件,这里就不具体演示了。

另外如果尝试Paragon ExtFS for Windows这款软件使用有问题请自行解决,我们不答疑。

  1. 首先烧录想使用的开发板的Linux镜像到TF卡中,然后使用读卡器,将烧录好开发板Linux镜像的TF卡插入安装有Linux系统的机器中(比如安装有Ubuntu系统的电脑,下面都以Ubuntu电脑为例来演示)

  2. 当TF卡插入Ubuntu电脑后,Ubuntu电脑一般会自动挂载TF卡中的Linux根文件系统的分区,由下面的命令可以知道,/media/test/opi_root即为TF卡中的Linux根文件系统挂载的路径

    test@test:~$ df -h | grep "media"

    /dev/sdd1    1.4G    1.2G    167M    88% /media/test/opi_root

    test@test:~$ ls /media/test/opi_root

    bin    boot    dev    etc    home    lib    lost+found    media    mnt    opt    proc    root    run
    sbin    selinux    srv    sys    tmp    usr    var

  3. 然后进入TF卡中烧录的Linux系统的/boot目录中

    test@test:~$ cd /media/test/opi_root/boot/

  4. 然后将其中的orangepi_first_run.txt.template复制为orangepi_first_run.txt,通过orangepi_first_run.txt配置文件可以设置开发板Linux系统第一次启动时自动连接某个WIFI热点,也可以设置WIFI或者以太网口的静态IP地址

    test@test:/media/test/opi_root/boot$ sudo cp orangepi_first_run.txt.template orangepi_first_run.txt

  5. 通过下面的命令可以打开orangepi_first_run.txt文件,然后就可以查看修改其中的内容

    test@test:/media/test/opi_root/boot$ sudo vim orangepi_first_run.txt

  6. orangepi_first_run.txt文件中的变量使用说明

    1. FR_general_delete_this_file_after_completion变量用来设置第一次启动完后是否删除orangepi_first_run.txt这个文件,默认为1,也就是删除,如果设置为0,第一次启动后会将orangepi_first_run.txt重命名为orangepi_first_run.txt.old,一般保持默认值即可

    2. FR_net_change_defaults变量用于设置是否改变默认网络设置,这个必须要设置为1,否则所有的网络设置都不会生效

    3. FR_net_ethernet_enabled变量用来控制是否使能以太网口的配置,如果需要设置以太网口的静态IP地址,请设置为1

    4. FR_net_wifi_enabled变量用来控制是否使能WIFI的配置,如果需要设置开发板自动连接WIFI热点,则必须将其设置为1,另外请注意,如果此变量设置为1,则以太网口的设置就会失效。也就是说WIFI和以太网口不能同时设置(为什么,因为没必要...)

    5. FR_net_wifi_ssid变量用于设置想要连接的WIFI热点的名字

    6. FR_net_wifi_key变量用于设置想要连接的WIFI热点的密码

    7. FR_net_use_static变量用于设置是否需要设置WIFI或者以太网口的静态IP地址

    8. FR_net_static_ip变量用于设置静态IP的地址,请根据自己的实际情况设置

    9. FR_net_static_gateway变量用于设置网关,请根据自己的实际情况设置

  7. 下面演示几个具体的设置示例:

    1. 比如想要开发板的Linux系统第一次启动后自动连接WIFI热点,可以这样设置:

      1. a) 设置FR_net_change_defaults1

      2. b) 设置FR_net_wifi_enabled1

      3. c) 设置FR_net_wifi_ssid为想要连接的WIFI热点的名字

      4. d) 设置FR_net_wifi_key为想要连接的WIFI热点的密码

    2. 比如想要开发板的Linux系统第一次启动后自动连接WIFI热点,并且设置WIFI的IP地址为特定的静态IP地址(这样当Linux系统启动后,可以直接使用设置的静态IP地址ssh远程登录开发板,无需通过路由器后台来查看开发板的IP地址),可以这样设置:

      1. a) 设置FR_net_change_defaults1

      2. b) 设置FR_net_wifi_enabled1

      3. c) 设置FR_net_wifi_ssid为想要连接的WIFI热点的名字

      4. d) 设置FR_net_wifi_key为想要连接的WIFI热点的密码

      5. e) 设置FR_net_use_static1

      6. f) 设置FR_net_static_ip为想要的IP地址

      7. g) 设置FR_net_static_gateway为对应的网关地址

    3. 比如想要开发板的Linux系统第一次启动后自动设置以太网口的IP地址为想要的静态IP地址,可以这样设置:

      1. a) 设置FR_net_change_defaults1

      2. b) 设置FR_net_ethernet_enabled1

      3. c) 设置FR_net_use_static1

      4. d) 设置FR_net_static_ip为想要的IP地址

      5. e) 设置FR_net_static_gateway为对应的网关地址

  8. 修改完orangepi_first_run.txt文件后,就可以退出TF卡中开发板Linux系统的/boot目录,再卸载TF卡,然后就可以将TF卡插入开发板中启动了

  9. 如果没有设置静态IP地址,则还是需要通过路由器后台来查看IP地址,如果设置了静态IP地址,则可以在电脑上ping下设置的静态IP地址,如果能ping说明系统已经正常启动,并且网络也已设置正确,然后就可以使用设置的IP地址ssh远程登录开发板的Linux系统了

    开发板的Linux系统第一次启动完后,orangepi_first_run.txt会被删除或者重命名为orangepi_first_run.txt.old,此时就算重新设置orangepi_first_run.txt配置文件,然后重新启动开发板的Linux系统,orangepi_first_run.txt中的配置也不会再次生效,因为此配置只在烧录完Linux系统后第一次启动才会有作用,这点请特别注意。

SSH远程登录开发板

Linux系统默认都开启了ssh远程登录,并且允许root用户登录系统。ssh登录前首先需要确保以太网或者wifi网络已连接,然后使用ip addr命令或者通过查看路由器的方式获取开发板的IP地址。

Ubuntu下SSH远程登录开发板

  1. 获取开发板的IP地址
  2. 然后就可以通过ssh命令远程登录linux系统

test@test:~$ ssh orangepi@192.168.1.xxx (需要替换为开发板的IP地址)

orangepi@192.168.1.xx's password: (在这里输入密码,默认密码为orangepi)

注意,输入密码的时候,屏幕上是不会显示输入的密码的具体内容的,请不要以为是有什么故障,输入完后直接回车即可。

如果提示拒绝连接,只要使用的是Orange Pi提供的镜像,就请不要怀疑orangepi这个密码是不是不对,而是要找其他原因。

  1. 成功登录系统后的显示如下图所示

    Zero3-img142.png

    如果ssh无法正常登陆linux系统,首先请检查下开发板的IP地址是否能ping通,如果ping通没问题的话,可以通过串口或者HDMI显示器登录linux系统然后在开发板上输入下面的命令后再尝试是否能连接:


    root@orangepi:~# reset_ssh.sh


    如果还不行,请重烧系统试下。

Windows下SSH远程登录开发板

  1. 首先获取开发板的IP地址

  2. 在windows下可以使用MobaXterm远程登录开发板,首先新建一个ssh会话

    1. 打开Session

    2. 然后在Session Setting中选择SSH

    3. 然后在Remote host中输入开发板的IP地址

    4. 然后在Specify username中输入linux系统的用户名rootorangepi

    5. 最后点击OK即可

      Zero3-img143.png

  3. 然后会提示输入密码,默认root和orangepi用户的密码都为orangepi

    注意,输入密码的时候,屏幕上是不会显示输入的密码的具体内容的,请不要以为是有什么故障,输入完后直接回车即可。

    Zero3-img144.png

  4. 成功登录系统后的显示如下图所示

    Zero3-img145.png

HDMI测试

HDMI显示测试

  1. 使用Micro HDMI转HDMI线连接Orange Pi开发板和HDMI显示器

    Zero3-img13.png

  2. 启动linux系统后如果HDMI显示器有图像输出说明HDMI接口使用正常

    注意,很多笔记本电脑虽然带有HDMI接口,但是笔记本的HDMI接口一般只有输出功能,并没有HDMI in的功能,也就是说并不能将其他设备的HDMI输出显示到笔记本的屏幕上。

    当想把开发板的HDMI接到笔记本电脑HDMI接口时,请先确认清楚您的笔记本是支持HDMI in的功能。

    当HDMI没有显示的时候,请先检查下HDMI线有没有插紧,确认接线没问题后,可以换一个不同的屏幕试下有没有显示。

HDMI转VGA显示测试

  1. 首先需要准备下面的配件

    1. HDMI转VGA转换器

      Zero3-img146.png

    2. 一根VGA线和一根Micro HDMI公转HDMI母转接线

      Zero3-img147.png Zero3-img148.png

    3. 一个支持VGA接口的显示器或者电视

  2. HDMI转VGA显示测试如下所示

    Zero3-img149.png

    使用HDMI转VGA显示时,开发板以及开发板的Linux系统是不需要做任何设置的,只需要开发板Micro HDMI接口能正常显示就可以了。所以如果测试有问题,请检查HDMI转VGA转换器、VGA线以及显示器是否有问题。

Linux5.4系统HDMI分辨率设置的方法

注意: 此方法只适用于linux5.4内核的系统。

  1. 在linux系统的/boot/orangepiEnv.txt中有个disp_mode变量,可以通过它来设置HDMI输出的分辨率,linux系统默认设置的分辨率为1080p60

    orangepi@orangepi:~$ sudo vim /boot/orangepiEnv.txt

    verbosity=1

    console=both

    disp_mode=1080p60

    fb0_width=1920

    fb0_height=1080

  2. disp_mode变量支持设置的值如下表所示

  3. disp_mode支持的值 HDMI分辨率 HDMI刷新率
    480i 720x480 60
    576i 720x480 50
    480p 720x480 60
    576p 720x576 60
    720p50 1280x720 50
    720p60 1280x720 60
    1080i50 1920x1080 50
    1080i60 1920x1080 60
    1080p24 1920x1080 24
    1080p50 1920x1080 50
    1080p60 1920x1080 60

    注意:Linux系统目前不支持4K分辨率。

  1. 将disp_mode变量的值修改为想要输出的分辨率,然后重启系统,HDMI就会输出所设置的分辨率了

  2. 查看HDMI输出分辨率的方法如下所示,如果显示的分辨率和设置的分辨率一样,说明开发板这端的设置正确

    orangepi@orangepi:~$ sudo cat /sys/class/disp/disp/attr/sys

    Zero3-img150.png

Linux5.4系统Framebuffer宽度和高度的修改方法

注意: 此方法只适用于linux5.4内核的系统。

在linux系统的/boot/orangepiEnv.txt中有fb0_width和fb0_height两个变量,可以通过它们来设置Framebuffer的宽度和高度,linux系统默认设置fb0_width=1920、fb0_height=1080。

orangepi@orangepi:~$ sudo vim /boot/orangepiEnv.txt

verbosity=1

console=both

disp_mode=1080p60

fb0_width=1920

fb0_height=1080

fb0_width和fb0_height不同分辨率对应的参考值如下所示:

HDMI分辨率 fb0_width fb0_height
480p 720 480
576p 720 576
720p 1280 720
1080p 1920 1080

在相同的HDMI分辨下,当fb0_width和fb0_height设置的值越大时,屏幕显示的文字就越小,当fb0_width和fb0_height设置的值越小时,屏幕显示的文字就越大。

Framebuffer光标设置

  1. Framebuffer使用的softcursor,设置光标闪烁或者不闪烁的方法如下所示

    root@orangepi:~# echo 1 > /sys/class/graphics/fbcon/cursor_blink #光标闪烁

    root@orangepi:~# echo 0 > /sys/class/graphics/fbcon/cursor_blink #光标不闪烁

  2. 如果需要隐藏光标,可以在/boot/orangepiEnv.txtextraargs变量(extraargs的值会赋值给bootargs环境变量最终传递给内核)中加入vt.global_cursor_default=0(如果vt.global_cursor_default=1则是显示光标),然后重启系统就能看到光标已经消失

    orangepi@orangepi:~$ sudo vim /boot/orangepiEnv.txt

    verbosity=1

    console=both

    disp_mode=1080p60

    fb0_width=1920

    fb0_height=1080

    extraargs=vt.global_cursor_default=0

蓝牙使用方法

桌面版镜像的测试方法

  1. 点击桌面右上角的蓝牙图标

    Zero3-img151.png

  2. 然后选择适配器

    Zero3-img152.png

  3. 如果有提示下面的界面,请选择Yes

    Zero3-img153.png

  4. 然后在蓝牙的适配器设置界面中设置Visibility SettingAlways visible,然后关闭即可

    Zero3-img154.png

  5. 然后打开蓝牙设备的配置界面

    Zero3-img155.png

  6. 点击Search即可开始扫描周围的蓝牙设备

    Zero3-img156.png

  7. 然后选择想要连接的蓝牙设备,再点击鼠标右键就会弹出对此蓝牙设备的操作界面,选择Pair即可开始配对,这里演示的是和Android手机配对

    Zero3-img157.png

  8. 配对时,桌面的右上角会弹出配对确认框,选择Confirm确认即可,此时手机上也同样需要进行确认

    Zero3-img158.png

  9. 和手机配对完后,可以选择已配对的蓝牙设备,然后右键选择Send a File即可开始给手机发送一张图片

    Zero3-img159.png

  10. 发送图片的界面如下所示

    Zero3-img160.png

服务器版镜像的使用方法

  1. 进入系统后首先可以通过hciconfig命令来查看是否存在蓝牙的设备节点,如果存在,说明蓝牙初始化正常

    orangepi@orangepi:~$ sudo apt update && sudo apt install -y bluez

    orangepi@orangepi:~$ hciconfig -a

    hci0: Type: Primary Bus: UART

    BD Address: 3E:61:3D:19:0E:52 ACL MTU: 1021:8 SCO MTU: 240:3

    UP RUNNING

    RX bytes:925 acl:0 sco:0 events:72 errors:0

    TX bytes:5498 acl:0 sco:0 commands:72 errors:0

    Features: 0xbf 0xff 0x8d 0xfe 0xdb 0x3d 0x7b 0xc7

    Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3

    Link policy: RSWITCH SNIFF

    Link mode: SLAVE ACCEPT

    Name: 'orangepi'

    Class: 0x3c0000

    Service Classes: Rendering, Capturing, Object Transfer, Audio

    Device Class: Miscellaneous,

    HCI Version: 5.0 (0x9) Revision: 0x400

    LMP Version: 5.0 (0x9) Subversion: 0x400

    Manufacturer: Spreadtrum Communications Shanghai Ltd (492)

  2. 使用bluetoothctl扫描蓝牙设备

    orangepi@orangepi:~$ sudo bluetoothctl

    [NEW] Controller 10:11:12:13:14:15 orangepizero3 [default]

    Agent registered

    [bluetooth]# power on #使能控制器

    Changing power on succeeded

    [bluetooth]# discoverable on #设置控制器为可被发现的

    Changing discoverable on succeeded

    [CHG] Controller 10:11:12:13:14:15 Discoverable: yes

    [bluetooth]# pairable on #设置控制器为可配对的

    Changing pairable on succeeded

    [bluetooth]# scan on #开始扫描周围的蓝牙设备

    Discovery started

    [CHG] Controller 10:11:12:13:14:15 Discovering: yes

    [NEW] Device 76:60:79:29:B9:31 76-60-79-29-B9-31

    [NEW] Device 9C:2E:A1:42:71:11 小米手机

    [NEW] Device DC:72:9B:4C:F4:CF orangepi

    [bluetooth]# scan off #扫描到想连接的蓝牙设备后就可以关闭扫描了,然后记下蓝牙设备的MAC地址,这里测试的蓝牙设备为Android手机,蓝牙的名字为orangepi,对应的MAC地址为DC:72:9B:4C:F4:CF

    Discovery stopped

    [CHG] Controller 10:11:12:13:14:15 Discovering: no

    [CHG] Device DC:72:9B:4C:F4:CF RSSI is nil

  3. 扫描到想配对的设备后就可以进行配对了,配对需要使用设备的MAC地址

    [bluetooth]# pair DC:72:9B:4C:F4:CF #使用扫描到的蓝牙设备的MAC地址进行配对

    Attempting to pair with DC:72:9B:4C:F4:CF

    [CHG] Device DC:72:9B:4C:F4:CF Connected: yes

    Request confirmation

    [leeb1m[agent] Confirm passkey 764475 (yes/no): yes #在这里输入yes,在手机上也需要确认

    [CHG] Device DC:72:9B:4C:F4:CF Modalias: bluetooth:v010Fp107Ed1436

    [CHG] Device DC:72:9B:4C:F4:CF UUIDs: 0000046a-0000-1000-8000-00805f9b34fb

    [CHG] Device DC:72:9B:4C:F4:CF ServicesResolved: yes

    [CHG] Device DC:72:9B:4C:F4:CF Paired: yes

    Pairing successful #提示配对成功

    [CHG] Device DC:72:9B:4C:F4:CF ServicesResolved: no

    [CHG] Device DC:72:9B:4C:F4:CF Connected: no

  4. 配对成功后,手机蓝牙界面的显示如下所示

    Zero3-img161.png

  5. 连接蓝牙设备需要安装 pulseaudio-module-bluetooth软件包,然后再启动pulseaudio 服务

    orangepi@orangepi:~$ sudo apt update

    orangepi@orangepi:~$ sudo apt -y install pulseaudio-module-bluetooth

    orangepi@orangepi:~$ pulseaudio --start

  6. 连接蓝牙设备的方法

    orangepi@orangepi:~$ sudo bluetoothctl

    Agent registered

    [bluetooth]# paired-devices          #查看已配对的蓝牙设备的MAC地址

    Device DC:72:9B:4C:F4:CF orangepi

    [bluetooth]# connect DC:72:9B:4C:F4:CF          #使用MAC地址连接蓝牙设备

    Attempting to connect to DC:72:9B:4C:F4:CF

    [CHG] Device DC:72:9B:4C:F4:CF Connected: yes

    Connection successful

    [CHG] Device DC:72:9B:4C:F4:CF ServicesResolved: yes

    [CHG] Controller 10:11:12:13:14:15 Discoverable: no

    [orangepi]#          #出现这个提示符说明连接成功

  7. 连接完蓝牙设备后,Android手机的蓝牙配置界面就可以看到已连接用于通话和媒体的音频的提示

    Zero3-img162.png

USB接口测试

USB接口是可以接USB hub来扩展USB接口的数量的。

连接USB鼠标或键盘测试

  1. 将USB接口的键盘插入Orange Pi开发板的USB接口中
  2. 连接Orange Pi开发板到HDMI显示器
  3. 如果鼠标或键盘能正常操作系统说明USB接口使用正常(鼠标只有在桌面版的系统中才能使用)

连接USB存储设备测试

  1. 首先将U盘或者USB移动硬盘插入Orange Pi开发板的USB接口中
  2. 执行下面的命令如果能看到sdX的输出说明U盘识别成功

orangepi@orangepi:~$ cat /proc/partitions | grep "sd*"
major minor #blocksname
8030044160 sda
8130043119 sda1

  1. 使用mount命令可以将U盘挂载到/mnt中,然后就能查看U盘中的文件了
  2. orangepi@orangepi:~$ sudo mount /dev/sda1 /mnt/

    orangepi@orangepi:~$ ls /mnt/

    test.txt

  1. 挂载完后通过df -h命令就能查看U盘的容量使用情况和挂载点
  2. orangepi@orangepi:~$ df -h | grep "sd"

    /dev/sda1     29G    208K    29G    1% /mnt

USB以太网卡测试

  1. 目前测试过能用的USB以太网卡如下所示,其中RTL8153 USB千兆网卡插入开发板的USB 2.0 Host接口中测试可以正常使用,但是速率是达不到千兆的,这点请注意
序号 型号
1 RTL8152B USB百兆网卡
2 RTL8153 USB千兆网卡
  1. 首先将USB网卡插入开发板的USB接口中,然后在USB网卡中插入网线,确保网线能正常上网,如果通过dmesg命令可以看到下面的log信息,说明USB网卡识别正常

    orangepi@orangepi:~$ dmesg | tail

    [ 121.985016] usb 3-1: USB disconnect, device number 2

    [ 126.873772] sunxi-ehci 5311000.ehci3-controller: ehci_irq: highspeed device connect

    [ 127.094054] usb 3-1: new high-speed USB device number 3 using sunxi-ehci

    [ 127.357472] usb 3-1: reset high-speed USB device number 3 using sunxi-ehci

    [ 127.557960] r8152 3-1:1.0 eth1: v1.08.9

    [ 127.602642] r8152 3-1:1.0 enx00e04c362017: renamed from eth1

    [ 127.731874] IPv6: ADDRCONF(NETDEV_UP): enx00e04c362017: link is not ready

    [ 127.763031] IPv6: ADDRCONF(NETDEV_UP): enx00e04c362017: link is not ready

    [ 129.892465] r8152 3-1:1.0 enx00e04c362017: carrier on

    [ 129.892583] IPv6: ADDRCONF(NETDEV_CHANGE): enx00e04c362017: link becomes ready

  2. 然后通过ifconfig命令可以看到USB网卡的设备节点,以及自动分配的IP地址

    orangepi@orangepi:~$ sudo ifconfig

    enx00e04c362017: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500

    inet 192.168.1.177 netmask 255.255.255.0 broadcast 192.168.1.255

    inet6 fe80::681f:d293:4bc5:e9fd prefixlen 64 scopeid 0x20<link>

    ether 00:e0:4c:36:20:17 txqueuelen 1000 (Ethernet)

    RX packets 1849 bytes 134590 (134.5 KB)

    RX errors 0 dropped 125 overruns 0 frame 0

    TX packets 33 bytes 2834 (2.8 KB)

    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

  3. 测试网络连通性的命令如下

    orangepi@orangepi:~$ ping www.baidu.com -I enx00e04c362017

    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

USB摄像头测试

  1. 首先将USB摄像头插入到Orange Pi开发板的USB接口中

  2. 然后通过lsmod命令可以看到内核自动加载了下面的模块

    orangepi@orangepi:~$ lsmod

    Module Size Used by
    uvcvideo 106496 0

  3. 通过v4l2-ctl命令可以看到USB摄像头的设备节点信息为/dev/video0

    orangepi@orangepi:~$ sudo apt update

    orangepi@orangepi:~$ sudo apt install -y v4l-utils

    orangepi@orangepi:~$ v4l2-ctl --list-devices

    USB 2.0 Camera (usb-sunxi-ehci-1):

    /dev/video0

    注意v4l2中的l是小写字母l,不是数字1。

    另外video的序号不一定都是video0,请以实际看到的为准。

  4. 使用fswebcam测试USB摄像头

    1. 安装fswebcam

      orangepi@orangepi:~$ sudo apt update

      orangepi@orangepi:~$ sudo apt-get install -y fswebcam

    2. 安装完fswebcam后可以使用下面的命令来拍照

      1. a) -d 选项用于指定USB摄像头的设备节点

      2. b) --no-banner用于去除照片的水印

      3. c) -r 选项用于指定照片的分辨率

      4. d) -S 选项用设置于跳过前面的帧数

      5. e) ./image.jpg 用于设置生成的照片的名字和路径

        orangepi@orangepi:~$ sudo fswebcam -d /dev/video0 \

        --no-banner -r 1280x720 -S 5 ./image.jpg

    3. 在服务器版的linux系统中,拍完照后可以使用scp命令将拍好的图片传到Ubuntu > PC上镜像观看

      orangepi@orangepi:~$ scp image.jpg test@192.168.1.55:/home/test (根据实际情况修改IP地址和路径)

    4. 在桌面版的linux系统中,可以通过HDMI显示器直接查看拍摄的图片

  5. 使用mjpg-streamer测试USB摄像头

    1. 下载mjpg-streamer

      1. a) Github的下载地址:

        orangepi@orangepi:~$ git clone https://github.com/jacksonliam/mjpg-streamer

      2. b) Gitee的镜像下载地址为:

        orangepi@orangepi:~$ git clone https://gitee.com/leeboby/mjpg-streamer

    2. 安装依赖的软件包

      1. a) Ubuntu系统

        orangepi@orangepi:~$ sudo apt-get install -y cmake libjpeg8-dev

      2. b) Debian系统

        orangepi@orangepi:~$ sudo apt-get install -y cmake libjpeg62-turbo-dev

    3. 编译安装mjpg-streamer

      orangepi@orangepi:~$ cd mjpg-streamer/mjpg-streamer-experimental

      orangepi@orangepi:~/mjpg-streamer/mjpg-streamer-experimental$ make -j4

      orangepi@orangepi:~/mjpg-streamer/mjpg-streamer-experimental$ sudo make install

    4. 然后输入下面的命令启动mjpg_streamer

      注意,video的序号不一定都是video0,请以实际看到的为准。

      orangepi@orangepi:~/mjpg-streamer/mjpg-streamer-experimental$ export LD_LIBRARY_PATH=.

      orangepi@orangepi:~/mjpg-streamer/mjpg-streamer-experimental$ sudo ./mjpg_streamer -i "./input_uvc.so -d \

      /dev/video0 -u -f 30" -o "./output_http.so -w ./www"

    5. 然后在和开发板同一局域网的Ubuntu PC或者Windows > PC或者手机的浏览器中输入【开发板的IP地址:8080】就能看到摄像头输出的视频了

      Zero3-img163.png

音频测试

使用命令行播放音频的方法

耳机接口播放音频测试

  1. 首先需要将13pin扩展板插入到Orange Pi开发板的13pin接口中,然后在音频接口中插入耳机

    Zero3-img164.png

  2. 通过aplay -l命令可以查看linux系统支持的声卡设备

    1. linux5.4系统的输出如下所示,其中card 0: audiocodec就是耳机播放需要的声卡设备

      root@orangepi:~# aplay -l

      **** List of PLAYBACK Hardware Devices ****

      card 0: audiocodec [audiocodec], device 0: SUNXI-CODEC sun50iw9-codec-0 []

      Subdevices: 1/1

      Subdevice #0: subdevice #0

    2. linux6.1系统的输出如下所示,其中audiocodec就是耳机播放需要的声卡设备

      root@orangepi:~# aplay -l

      **** List of PLAYBACK Hardware Devices ****

      card 0: audiocodec [audiocodec], device 0: CDC PCM Codec-0 [CDC PCM Codec-0]

      Subdevices: 1/1

      Subdevice #0: subdevice #0

  3. 然后使用aplay命令播放音频,耳机就能听到声音了

    root@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音频播放测试

  1. 首先使用Micro HDMI 转HDMI线将Orange Pi开发板连接到电视机上(其他的HDMI显示器需要确保可以播放音频)

  2. HDMI音频播放无需其他设置,直接使用aplay命令播放即可

    root@orangepi:~# aplay -D hw:2,0 /usr/share/sounds/alsa/audio.wav

在桌面系统中测试音频方法

  1. 首先打开文件管理器

    Zero3-img165.png

  2. 然后找到下面这个文件(如果系统中没有这个音频文件,可以自己上传一个音频文件到系统中)

    Zero3-img166.png

  3. 然后选中audio.wav文件,右键选择使用vlc打开就可以开始播放

    Zero3-img167.png

  4. 切换HDMI播放和耳机播放等不同音频设备的方法

    1. 首先打开音量控制界面

      Zero3-img168.png

    2. 播放音频的时候,在Playback中会显示播放软件可以使用的音频设备选项,如下图所示,在这里可以设置需要播放到哪个音频设备

      Zero3-img169.png

红外接收测试

  1. 首先需要将13pin扩展板插入到Orange Pi开发板的13pin接口中,插入扩展板后,开发板才能使用红外接收功能

    Zero3-img164.png

  2. 安装ir-keytable 红外测试软件

    orangepi@orangepi:~$ sudo apt update

    orangepi@orangepi:~$ sudo apt-get install -y ir-keytable

  1. 然后执行ir-keytable可以查看红外设备的信息

    1. linux5.4系统输出如下所示
    2. orangepi@orangepi:~$ ir-keytable

      Found /sys/class/rc/rc0/ (/dev/input/event1) with:

      Driver: sunxi-rc-recv, table: rc_map_sunxi
      lirc device: /dev/lirc0
      Supported protocols: lirc nec
      Enabled protocols: lirc nec
      Name: sunxi_ir_recv
      bus: 25, vendor/product: 0001:0001, version: 0x0100
      Repeat delay = 500 ms, repeat period = 125 ms
    1. linux6.1系统的输出如下所示

      orangepi@orangepi:~$ ir-keytable

      Found /sys/class/rc/rc0/ with:

      Name: sunxi-ir

      Driver: sunxi-ir

      Default keymap: rc-empty

      Input device: /dev/input/event5

      LIRC device: /dev/lirc0

      Attached BPF protocols: Operation not permitted

      Supported kernel protocols: lirc rc-5 rc-5-sz jvc sony nec sanyo mce_kbd rc-6 sharp xmp imon rc-mm

      Enabled kernel protocols: lirc

      bus: 25, vendor/product: 0001:0001, version: 0x0100

      Repeat delay = 500 ms, repeat period = 125 ms

  1. 测试红外接收功能前需要准备一个Orange Pi专用的红外遥控器,其他遥控器不支持

    Zero3-img170.png

  2. 然后在终端中输入ir-keytable -t命令,再使用红外遥控器对着Orange Pi开发板的红外接收头按下按键就能在终端中看到接收到的按键编码了

    1. linux5.4系统输出如下所示
    2. orangepi@orangepi:~$ sudo ir-keytable -t

      Testing events. Please, press CTRL-C to abort.

      1598339152.260376: event type EV_MSC(0x04): scancode = 0xfb0413

      1598339152.260376: event type EV_SYN(0x00).

      1598339152.914715: event type EV_MSC(0x04): scancode = 0xfb0410

    1. linux6.1系统输出如下所示

      orangepi@orangepi:~$ sudo ir-keytable -c -p NEC -t

      Old keytable cleared

      Protocols changed to nec

      Testing events. Please, press CTRL-C to abort.

      202.063219: lirc protocol(nec): scancode = 0x45c

      202.063249: event type EV_MSC(0x04): scancode = 0x45c

      202.063249: event type EV_SYN(0x00).

温度传感器

linux5.4系统查看温度的方法

  1. H618总共有4个温度传感器,查看温度的命令如下所示:

显示的温度值需要除以1000,单位才是摄氏度。

  1. sensor0:CPU的温度传感器,第一条命令用于查看温度传感器的类型,第二条命令用于查看温度传感器的数值
  2. orangepi@orangepi:~$ cat /sys/class/thermal/thermal_zone0/type

    cpu_thermal_zone

    orangepi@orangepi:~$ cat /sys/class/thermal/thermal_zone0/temp

    57734

  1. sensor1:DDR的温度传感器,第一条命令用于查看温度传感器的类型,第二条命令用于查看温度传感器的数值

    orangepi@orangepi:~$ cat /sys/class/thermal/thermal_zone1/type

    ddr_thermal_zone

    orangepi@orangepi:~$ cat /sys/class/thermal/thermal_zone1/temp

    57410

  2. sensor2:GPU的温度传感器,第一条命令用于查看温度传感器的类型,第二条命令用于查看温度传感器的数值

    orangepi@orangepi:~$ cat /sys/class/thermal/thermal_zone2/type

    gpu_thermal_zone

    orangepi@orangepi:~$ cat /sys/class/thermal/thermal_zone2/temp

    59273

  3. sensor3:VE的温度传感器,第一条命令用于查看温度传感器的类型,第二条命令用于查看温度传感器的数值

    orangepi@orangepi:~$ cat /sys/class/thermal/thermal_zone3/type

    ve_thermal_zone

    orangepi@orangepi:~$ cat /sys/class/thermal/thermal_zone3/temp

    58949

linux6.1系统查看温度的方法

orangepi@orangepi:~$ sensors

cpu_thermal-virtual-0

Adapter: Virtual device

temp1:      +47.4°C    (crit = +110.0°C)

gpu_thermal-virtual-0

Adapter: Virtual device

temp1:      +48.7°C    (crit = +110.0°C)

ddr_thermal-virtual-0

Adapter: Virtual device

temp1:      +47.8°C    (crit = +110.0°C)

ve_thermal-virtual-0

Adapter: Virtual device

temp1:      +47.2°C    (crit = +110.0°C)

13 Pin扩展板接口引脚说明

  1. 开发板13 pin扩展板接口引脚的顺序请参考下图

    Zero3-img78.png

  2. 开发板13pin接口的原理图如下所示

    Zero3-img19.png

  3. 开发板13 pin扩展板接口引脚的功能说明如下

    1. 13pin引脚接扩展板时,可以额外提供

      1. a) 2个USB 2.0 Host

      2. b) 耳机左右声道音频输出

      3. c) TV-OUT视频输出

      4. d) 红外接收功能

      5. e) 接了扩展板后13pin接口的10、11和12号引脚就无法使用了

      6. f) 另外需要注意13pin扩展板上的MIC在Orange Pi Zero 3上是无法使用的

    2. 13pin引脚不接扩展板时,10、11、12和13号引脚可当作普通GPIO口来使用

    3. GPIO序号 功能 引脚
      5V 1
      GND 2
      USB2-DM 3
      USB2-DP 4
      USB3-DM 5
      USB3-DP 6
      LINEOUTR 7
      LINEOUTL 8
      TV-OUT 9
      65 PC1 10
      272 PI16 11
      262 PI6 12
      234 IR-RX/PH10 13

26 Pin接口引脚说明

  1. Orange Pi Zero 3开发板26 pin接口引脚的顺序请参开发板上的丝印图

    Zero3-img171-1.png

  2. 开发板26 pin接口引脚的功能如下表所示

  3. GPIO序号 GPIO 功能 引脚
    3.3V 1
    229 PH5 TWI3-SDA 3
    228 PH4 TWI3-SCK 5
    73 PC9 PC9 7
    GND 9
    70 PC6 PC6 11
    69 PC5 PC5 13
    72 PC8 PC8 15
    3.3V 17
    231 PH7 SPI1_MOSI 19
    232 PH8 SPI1_MISO 21
    230 PH6 SPI1_CLK 23
    GND 25
    引脚 功能 GPIO GPIO序号
    2 5V
    4 5V
    6 GND
    8 UART5_TX PH2 226
    10 UART5_RX PH3 227
    12 PC11 PC11 75
    14 GND
    16 PC15 PC15 79
    18 PC14 PC14 78
    20 GND
    22 PC7 PC7 71
    24 SPI1_CS PH9 233
    26 PC10 PC10 74
  1. 26pin接口中总共有17个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已经预装并且能正常使用。

Zero3-img172.png

wiringOP目前主要适配了设置GPIO口输入输出,设置GPIO口输出高低电平以及设置上下拉电阻的功能,像硬件PWM这样的功能是用不了的。

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

    注意,源码需要下载wiringOP next分支的代码,请别漏了-b next这个参数。

    如果从GitHub下载代码有问题,可以直接使用Linux镜像中自带的wiringOP源码,存放位置为:/usr/src/wiringOP。

  2. 编译安装wiringOP

    orangepi@orangepi:~$ cd wiringOP

    orangepi@orangepi:~/wiringOP$ sudo ./build clean

    orangepi@orangepi:~/wiringOP$ sudo ./build

  3. 测试gpio readall命令的输出如下

    1. 其中1到26号引脚与开发板上的26 Pin引脚是一一对应的

    2. 27号引脚对应开发板上13pin的10号引脚

    3. 29号引脚对应开发板上13pin的11号引脚

    4. 31号引脚对应开发板上13pin的12号引脚

    5. 33号引脚对应开发板上13pin的13号引脚

    6. 28、30、32、34号引脚为空,请直接忽略

      Zero3-img172.png

26pin接口GPIO、I2C、UART、SPI和PWM测试

26pin GPIO口测试

  1. 下面以7号引脚——对应GPIO为PC9——对应wPi序号为2——为例演示如何设置GPIO口的高低电平

    Zero3-img173.png

  2. 首先设置GPIO口为输出模式,其中第三个参数需要输入引脚对应的wPi的序号

    root@orangepi:~/wiringOP# gpio mode 2 out

  3. 然后设置GPIO口输出低电平,设置完后可以使用万用表测量引脚的电压的数值,如果为0v,说明设置低电平成功

    root@orangepi:~/wiringOP# gpio write 2 0

    使用gpio readall可以看到7号引脚的值(V)变为了0

    Zero3-img174.png

  4. 然后设置GPIO口输出高电平,设置完后可以使用万用表测量引脚的电压的数值,如果为3.3v,说明设置高电平成功

    root@orangepi:~/wiringOP# gpio write 2 1

    使用gpio readall可以看到7号引脚的值(V)变为了1

    Zero3-img175.png

  5. 其他引脚的设置方法类似,只需修改wPi的序号为引脚对应的序号即可

26 pin GPIO口上下拉电阻的设置方法

  1. 下面以7号引脚——对应GPIO为PC9——对应wPi序号为2——为例演示如何设置GPIO口的上下拉电阻

    Zero3-img173.png

  2. 首先需要设置GPIO口为输入模式,其中第三个参数需要输入引脚对应的wPi的序号

    root@orangepi:~/wiringOP# gpio mode 2 in

  3. 设置为输入模式后,执行下面的命令可以设置GPIO口为上拉模式

    root@orangepi:~/wiringOP# gpio mode 2 up

  4. 然后输入下面的命令读取GPIO口的电平,如果电平为1,说明上拉模式设置成功

    root@orangepi:~/wiringOP# gpio read 2

    1

  5. 然后执行下面的命令可以设置GPIO口为下拉模式

    root@orangepi:~/wiringOP# gpio mode 2 down

  6. 然后输入下面的命令读取GPIO口的电平,如果电平为0,说明下拉模式设置成功

    root@orangepi:~/wiringOP# gpio read 2

    0

26pin SPI测试

  1. 由26pin接口的原理图可知,可用的spi为spi1

    Zero3-img176.png

  2. Linux系统中spi1默认是关闭的,需要手动打开才能使用。打开步骤如下所示:

    1. 首先运行下orangepi-config,普通用户记得加sudo权限

      orangepi@orangepi:~$ sudo orangepi-config

    2. 然后选择System

      Zero3-img86.png

    3. 然后选择Hardware

      Zero3-img87.png

    4. 然后使用键盘的方向键定位到下图所示的位置,再使用空格选中spi1-cs1-spidev

      Zero3-img177.png

    5. 然后选择<Save>保存

      Zero3-img89.png

    6. 然后选择<Back>

      Zero3-img90.png

    7. 然后选择<Reboot>重启系统使配置生效

      Zero3-img91.png

  3. 然后查看下linux系统中是否存在spidev1.1的设备节点,如果存在,说明SPI1的配置已经生效了

    orangepi@orangepi:~$ ls /dev/spidev1*

    /dev/spidev1.1

  4. 先不短接SPI1的mosi和miso两个引脚,运行spidev_test的输出结果如下所示,可以看到TX和RX的数据不一致

    orangepi@orangepi:~$ sudo spidev_test -v -D /dev/spidev1.1

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

  5. 然后短接SPI1的mosi(26pin接口中的第19号引脚)和miso(26pin接口中的第21号引脚)两个引脚再运行spidev_test的输出如下,可以看到发送和接收的数据一样

    orangepi@orangepi:~$ sudo spidev_test -v -D /dev/spidev1.1

    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 | ......@.…▒..................▒.

26pin I2C测试

  1. 由26pin的原理图可知,可用的i2c为i2c3

    Zero3-img178.png

  2. Linux系统中i2c3默认是关闭的,需要手动打开才能使用。打开步骤如下所示:

    1. 首先运行下orangepi-config,普通用户记得加sudo权限

      orangepi@orangepi:~$ sudo orangepi-config

    2. 然后选择System

      Zero3-img86.png

    3. 然后选择Hardware

      Zero3-img87.png

    4. 然后使用键盘的方向键定位到下图所示的位置,再使用空格选中ph-i2c3

      Zero3-img179.png

    5. 然后选择<Save>保存

      Zero3-img89.png

    6. 然后选择<Back>

      Zero3-img90.png

    7. 然后选择<Reboot>重启系统使配置生效

      Zero3-img91.png

  3. 启动linux系统后,先确认下/dev下存在i2c3的设备节点

    orangepi@orangepi:~$ ls /dev/i2c-3

    /dev/i2c-3

  4. 然后开始测试i2c,首先安装i2c-tools

    orangepi@orangepi:~$ sudo apt-get update

    orangepi@orangepi:~$ sudo apt-get install -y i2c-tools

  5. 然后在26pin接头的i2c3引脚上接一个i2c设备

    5V和3.3V引脚请根据具体的i2c设备进行选择,不同的i2c设备需要的电压值可能不同。

    sda引脚 对应26pin中3号引脚
    sck引脚 对应26pin中5号引脚
    5v引脚 对应26pin中2号引脚
    3.3v引脚 对应26pin中1号引脚
    gnd引脚 对应26pin中6号引脚
  1. 然后使用i2cdetect -y 3命令如果能检测到连接的i2c设备的地址,就说明i2c能正常使用

    不同的i2c设备地址是不同的,下图0x50地址只是一个示例。请以实际看到的为准。

    Zero3-img180.png

26pin的UART测试

  1. 由26pin接口的原理图可知,可用的uart为uart5

    Zero3-img181.png

  2. Linux系统中uart5默认是关闭的,需要手动打开才能使用。打开步骤如下所示:

    1. 首先运行下orangepi-config,普通用户记得加sudo权限

      orangepi@orangepi:~$ sudo orangepi-config

    2. 然后选择System

      Zero3-img86.png

    3. 然后选择Hardware

      Zero3-img87.png

    4. 然后使用键盘的方向键定位到下图所示的位置,再使用空格选中ph-uart5

      Zero3-img182.png

    5. 然后选择<Save>保存

      Zero3-img89.png

    6. 然后选择<Back>

      Zero3-img90.png

    7. 然后选择<Reboot>重启系统使配置生效

      Zero3-img91.png

  3. 进入linux系统后,先确认下/dev下是否存在uart5的设备节点

    注意,linux5.4系统为/dev/ttyAS5。

    orangepi@orangepi:~$ ls /dev/ttyS5

    /dev/ttyS5

  4. 然后开始测试uart5接口,先使用杜邦线短接要测试的uart5接口的rx和tx

  5. uart5
    tx引脚 对应26pin的8号引脚
    rx引脚 对应26pin的10号引脚
  1. 使用wiringOP中的gpio命令测试串口的回环功能如下所示,如果能看到下面的打印,说明串口通信正常

    orangepi@orangepi:~$ gpio serial /dev/ttyS5 # linux-6.1测试命令

    orangepi@orangepi:~$ gpio serial /dev/ttyAS5 # linux-5.4测试命令


    Out: 0: -> 0

    Out: 1: -> 1

    Out: 2: -> 2

    Out: 3: -> 3^C

PWM的测试方法

开发板最多可以使用4通道PWM,它们所在引脚的位置如下图所示:

Zero3-img183.png
  1. Linux系统中pwm默认是关闭的,需要手动打开才能使用。打开步骤如下所示:

    1. 首先运行下orangepi-config,普通用户记得加sudo权限

      orangepi@orangepi:~$ sudo orangepi-config

    2. 然后选择System

      Zero3-img86.png

    3. 然后选择Hardware

      Zero3-img87.png

    4. 然后使用键盘的方向键定位到下图所示的位置,再使用空格选中pwm对应的配置

      由于PWM1、PWM2和26pin接口中UART5的RX、TX引脚是复用的,所以打开PWM1和PWM2(需要选择ph-pwm12)时请确保没有选择UART5的配置(不要勾选ph-uart5)。

      PWM3、PWM4和调试串口中的TX、RX引脚是复用的,所以使用PWM3和PWM4(需要选择ph-pwm34)时请将UART0的配置关掉(需要选择disable-uart0),关掉UART0后调试串口就无法使用了。

      Zero3-img184.png

    5. 然后选择<Save>保存

      Zero3-img89.png

    6. 然后选择<Back>

      Zero3-img90.png

    7. 然后选择<Reboot>重启系统使配置生效

      Zero3-img91.png

  2. 重启后就可以开始PWM的测试

    下面的命令请在root用户下执行。

    1. 在命令行中输入下面的命令可以让pwm1输出一个50Hz的方波

      root@orangepi:~# echo 1 > /sys/class/pwm/pwmchip0/export

      root@orangepi:~# echo 20000000 > /sys/class/pwm/pwmchip0/pwm1/period

      root@orangepi:~# echo 1000000 > /sys/class/pwm/pwmchip0/pwm1/duty_cycle

      root@orangepi:~# echo 1 > /sys/class/pwm/pwmchip0/pwm1/enable

    2. 在命令行中输入下面的命令可以让pwm2输出一个50Hz的方波

    3. root@orangepi:~# echo 2 > /sys/class/pwm/pwmchip0/export

      root@orangepi:~# echo 20000000 > /sys/class/pwm/pwmchip0/pwm2/period

      root@orangepi:~# echo 1000000 > /sys/class/pwm/pwmchip0/pwm2/duty_cycle

      root@orangepi:~# echo 1 > /sys/class/pwm/pwmchip0/pwm2/enable

    1. 在命令行中输入下面的命令可以让pwm3输出一个50Hz的方波
    2. root@orangepi:~# echo 3 > /sys/class/pwm/pwmchip0/export

      root@orangepi:~# echo 20000000 > /sys/class/pwm/pwmchip0/pwm3/period

      root@orangepi:~# echo 1000000 > /sys/class/pwm/pwmchip0/pwm3/duty_cycle

      root@orangepi:~# echo 1 > /sys/class/pwm/pwmchip0/pwm3/enable

    1. 在命令行中输入下面的命令可以让pwm4输出一个50Hz的方波
    2. root@orangepi:~# echo 4 > /sys/class/pwm/pwmchip0/export

      root@orangepi:~# echo 20000000 > /sys/class/pwm/pwmchip0/pwm4/period

      root@orangepi:~# echo 1000000 > /sys/class/pwm/pwmchip0/pwm4/duty_cycle

      root@orangepi:~# echo 1 > /sys/class/pwm/pwmchip0/pwm4/enable

      Zero3-img185.png

wiringOP-Python的安装使用方法

wiringOP-Python是wiringOP的Python语言版本的库,用于在Python程序中操作开发板的GPIO、I2C、SPI和UART等硬件资源。


另外请注意下面所有的命令都是在root用户下操作的。

wiringOP-Python的安装方法

  1. 首先安装依赖包

    root@orangepi:~# sudo apt-get update

    root@orangepi:~# sudo apt-get -y install git swig python3-dev python3-setuptools

  2. 然后使用下面的命令下载wiringOP-Python的源码

  3. 注意,下面的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

  1. 然后使用下面的命令编译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

  2. 然后输入下面的命令,如果有帮助信息输出,说明wiringOP-Python安装成功,按下q键可以退出帮助信息的界面

  3. root@orangepi:~/wiringOP-Python# python3 -c "import wiringpi; help(wiringpi)"

    Help on module wiringpi:


    NAME

    wiringpi


    DESCRIPTION

    # This file was automatically generated by SWIG (http://www.swig.org).
    # Version 4.0.2
    #
    # Do not make changes to this file unless you know what you are doing--modify
    # the SWIG interface file instead.
  1. 在python命令行下测试wiringOP-Python是否安装成功的步骤如下所示:

    1. 首先使用python3命令进入python3的命令行模式
    2. root@orangepi:~# python3

    1. 然后导入wiringpi的python模块
    2. >>> import wiringpi;

    1. 最后输入下面的命令可以查看下wiringOP-Python的帮助信息,按下q键可以退出帮助信息的界面
    2. >>> help(wiringpi)

      Help on module wiringpi:


      NAME

      wiringpi


      DESCRIPTION

      # This file was automatically generated by SWIG (http://www.swig.org).
      # Version 4.0.2
      #
      # Do not make changes to this file unless you know what you are doing--modify
      # the SWIG interface file instead.


      CLASSES

      builtins.object
      GPIO
      I2C
      Serial
      nes


      class GPIO(builtins.object)
      | GPIO(pinmode=0)
      |


      >>>

26pin GPIO口测试

wiringOP-Python跟wiringOP一样,也是可以通过指定wPi号来确定操作哪一个GPIO引脚,因为wiringOP-Python中没有查看wPi号的命令,所以只能通过wiringOP中的gpio命令来查看板子wPi号与物理引脚的对应关系。

Zero3-img172.png

  1. 下面以7号引脚——对应GPIO为PC9 ——对应wPi序号为2——为例演示如何设置GPIO口的高低电平

    Zero3-img173.png

  2. 直接用命令测试的步骤如下所示:

    1. 首先设置GPIO口为输出模式,其中pinMode函数的第一个参数是引脚对应的wPi的序号,第二个参数是GPIO的模式

      root@orangepi:~/wiringOP-Python# python3 -c "import wiringpi; \

      from wiringpi import GPIO; wiringpi.wiringPiSetup() ; \

      wiringpi.pinMode(2, GPIO.OUTPUT) ; "

    2. 然后设置GPIO口输出低电平,设置完后可以使用万用表测量引脚的电压的数值,如果为0v,说明设置低电平成功

      root@orangepi:~/wiringOP-Python# python3 -c "import wiringpi; \

      from wiringpi import GPIO; wiringpi.wiringPiSetup() ;\

      wiringpi.digitalWrite(2, GPIO.LOW)"

    3. 然后设置GPIO口输出高电平,设置完后可以使用万用表测量引脚的电压的数值,如果为3.3v,说明设置高电平成功

      root@orangepi:~/wiringOP-Python# python3 -c "import wiringpi; \

      from wiringpi import GPIO; wiringpi.wiringPiSetup() ;\

      wiringpi.digitalWrite(2, GPIO.HIGH)"

  3. 在python3的命令行中测试的步骤如下所示:

    1. 首先使用python3命令进入python3的命令行模式

      root@orangepi:~# python3

    2. 然后导入wiringpi的python模块

      >>> import wiringpi

      >>> from wiringpi import GPIO

    3. 然后设置GPIO口为输出模式,其中pinMode函数的第一个参数是引脚对应的wPi的序号,第二个参数是GPIO的模式

      >>> wiringpi.wiringPiSetup()

      0

      >>> wiringpi.pinMode(2, GPIO.OUTPUT)

    4. 然后设置GPIO口输出低电平,设置完后可以使用万用表测量引脚的电压的数值,如果为0v,说明设置低电平成功

      >>> wiringpi.digitalWrite(2, GPIO.LOW)

    5. 然后设置GPIO口输出高电平,设置完后可以使用万用表测量引脚的电压的数值,如果为3.3v,说明设置高电平成功

      >>> wiringpi.digitalWrite(2, GPIO.HIGH)

  4. wiringOP-Python在python代码中设置GPIO高低电平的方法可以参考下examples中的blink.py测试程序,blink.py测试程序会设置开发板26 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

26pin SPI测试

  1. 由26pin接口的原理图可知,可用的spi为spi1

    Zero3-img176.png

  2. Linux系统中spi1默认是关闭的,需要手动打开才能使用。打开步骤如下所示:

    1. 首先运行下orangepi-config,普通用户记得加sudo权限

      orangepi@orangepi:~$ sudo orangepi-config

    2. 然后选择System

      Zero3-img86.png

    3. 然后选择Hardware

      Zero3-img87.png

    4. 然后使用键盘的方向键定位到下图所示的位置,再使用空格选中spi1-cs1-spidev

      Zero3-img177.png

    5. 然后选择<Save>保存

      Zero3-img89.png

    6. 然后选择<Back>

      Zero3-img90.png

    7. 然后选择<Reboot>重启系统使配置生效

      Zero3-img91.png

  3. 然后查看下linux系统中是否存在spidev1.1的设备节点,如果存在,说明SPI1的配置已经生效了

    orangepi@orangepi:~$ ls /dev/spidev1*

    /dev/spidev1.1

  4. 然后可以使用examples中的spidev_test.py程序测试下SPI的回环功能,spidev_test.py程序需要指定下面的两个参数:

    1. --channel:指定SPI的通道号

    2. --port:指定SPI的端口号

  5. 先不短接 SPI1 的 mosi 和 miso 两个引脚,运行spidev_test.py的输出结果如下所示,可以看到 TX 和 RX 的数据不一致

    root@orangepi:~/wiringOP-Python# cd examples

    root@orangepi:~/wiringOP-Python/examples# python3 spidev_test.py \

    --channel 1 --port 1

    spi mode: 0x0

    max speed: 500000 Hz (500 KHz)

    Opening device /dev/spidev1.1

    TX | FF FF FF FF FF FF 40 00 00 00 00 95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D |......@.......…|

    RX | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF |.............….|

  1. 然后使用杜邦线短接SPI1的txd(26pin接口中的第19号引脚)和rxd(26pin接口中的第21号引脚)两个引脚再运行spidev_test.py的输出如下,可以看到发送和接收的数据一样,说明SPI1回环测试正常

    root@orangepi:~/wiringOP-Python# cd examples

    root@orangepi:~/wiringOP-Python/examples# python3 spidev_test.py \

    --channel 1 --port 1

    spi mode: 0x0

    max speed: 500000 Hz (500 KHz)

    Opening device /dev/spidev1.1

    TX | FF FF FF FF FF FF 40 00 00 00 00 95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D |......@.......…|

    RX | FF FF FF FF FF FF 40 00 00 00 00 95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D |......@.......…|

26pin I2C测试

  1. 由26pin的原理图可知,可用的i2c为i2c3

    Zero3-img178.png

  2. Linux系统中i2c3默认是关闭的,需要手动打开才能使用。打开步骤如下所示:

    1. 首先运行下orangepi-config,普通用户记得加sudo权限

      orangepi@orangepi:~$ sudo orangepi-config

    2. 然后选择System

      Zero3-img86.png

    3. 然后选择Hardware

      Zero3-img87.png

    4. 然后使用键盘的方向键定位到下图所示的位置,再使用空格选中ph-i2c3

      Zero3-img179.png

    5. 然后选择<Save>保存

      Zero3-img89.png

    6. 然后选择<Back>

      Zero3-img90.png

    7. 然后选择<Reboot>重启系统使配置生效

      Zero3-img91.png

  3. 启动linux系统后,先确认下/dev下存在i2c3的设备节点

    orangepi@orangepi:~$ ls /dev/i2c-3

    /dev/i2c-3

  4. 然后开始测试i2c,首先安装下i2c-tools

    orangepi@orangepi:~$ sudo apt-get update

    orangepi@orangepi:~$ sudo apt-get install -y i2c-tools

  5. 然后在26pin接头的i2c3引脚上接一个i2c设备,这里以DS1307 RTC模块为例

    Zero3-img186.png

  6. RTC模块的引脚 开发板26pin对应的引脚
    5V 2号引脚
    GND 6号引脚
    SDA 3号引脚
    SCL 5号引脚
  1. 然后使用i2cdetect -y 3命令如果能检测到连接的i2c设备的地址,就说明i2c设备连接正确
  2. Zero3-img187.png

  1. 然后可以运行examples中的ds1307.py测试程序读取RTC的时间

    root@orangepi:~/wiringOP-Python# cd examples

    root@orangepi:~/wiringOP-Python/examples# python3 ds1307.py --device \

    "/dev/i2c-3"

    Thu 2022-06-16 04:35:46

    Thu 2022-06-16 04:35:47

    Thu 2022-06-16 04:35:48

    ^C

    exit

26pin的UART测试

  1. 由26pin接口的原理图可知,可用的uart为uart5

    Zero3-img181.png

  2. Linux系统中uart5默认是关闭的,需要手动打开才能使用。打开步骤如下所示:

    1. 首先运行下orangepi-config,普通用户记得加sudo权限

      orangepi@orangepi:~$ sudo orangepi-config

    2. 然后选择System

      Zero3-img86.png

    3. 然后选择Hardware

      Zero3-img87.png

    4. 然后使用键盘的方向键定位到下图所示的位置,再使用空格选中ph-uart5

      Zero3-img182.png

    5. 然后选择<Save>保存

      Zero3-img89.png

    6. 然后选择<Back>

      Zero3-img90.png

    7. 然后选择<Reboot>重启系统使配置生效

      Zero3-img91.png

  3. 进入linux系统后,先确认下/dev下是否存在uart5的设备节点

    注意,linux5.4系统为/dev/ttyAS5。

    orangepi@orangepi:~$ ls /dev/ttyS5

    /dev/ttyS5

  4. 然后开始测试uart5接口,先使用杜邦线短接要测试的uart5接口的rx和tx

  5. uart5
    tx引脚 对应26pin中的8号引脚
    rx引脚 对应26pin中的10号引脚
  1. 最后可以运行examples中的serialTest.py程序来测试下串口的回环功能,如果能看到下面的打印,说明串口回环测试正常

    root@orangepi:~/wiringOP-Python# cd examples

    root@orangepi:~/wiringOP-Python/examples# python3 serialTest.py --device "/dev/ttyS5" # linux6.1使用

    root@orangepi:~/wiringOP-Python/examples# python3 serialTest.py --device "/dev/ttyAS5" # linux5.4使用


    Out: 0: -> 0

    Out: 1: -> 1

    Out: 2: -> 2

    Out: 3: -> 3

    Out: 4:^C

    exit

硬件看门狗测试

Orange Pi发布的linux系统中预装了watchdog_test程序,可以直接测试。

运行watchdog_test程序的方法如下所示:

  1. 第二个参数10表示看门狗的计数时间,如果这个时间内没有喂狗,系统会重启

  2. 我们可以通过按下键盘上的任意键(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

查看H618芯片的chipid

查看H618芯片chipid的命令如下所示,每个芯片的chipid都是不同的,所以可以使用chipid来区分多个开发板。

orangepi@orangepi:~$ cat /sys/class/sunxi_info/sys_info | grep "chipid"

sunxi_chipid : 338020004c0048080147478824681ed1

Python相关说明

Python源码编译安装的方法

如果使用的Ubuntu或者Debian系统软件仓库中的Python版本不符合开发的要求,想要使用最新版本的Python,可以使用下面的方法下载Python的源码包来编译安装最新版本的Python。

下面演示的是编译安装Python3.9的最新版本,如果要编译安装其他的版本的Python,方法也是一样的(需要下载想要安装的Python对应的源码)。

  1. 首先安装编译Python需要的依赖包

    orangepi@orangepi:~$ sudo apt-get update

    orangepi@orangepi:~$ sudo apt-get install -y build-essential zlib1g-dev \

    libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libsqlite3-dev \

    libreadline-dev libffi-dev curl libbz2-dev

  2. 然后下载最新版本的Python3.9源码并解压

    orangepi@orangepi:~$ wget \

    https://www.python.org/ftp/python/3.9.10/Python-3.9.10.tgz

    orangepi@orangepi:~$ tar xvf Python-3.9.10.tgz

  3. 然后运行配置命令

    orangepi@orangepi:~$ cd Python-3.9.10

    orangepi@orangepi:~$ ./configure --enable-optimizations

  4. 然后编译安装Python3.9,编译时间大概需要半个小时左右

    orangepi@orangepi:~$ make -j4

    orangepi@orangepi:~$ sudo make altinstall

  5. 安装完后可以使用下面的命令查看下刚安装的Python的版本号

    orangepi@orangepi:~$ python3.9 --version

    Python 3.9.10

  6. 然后更新下pip

    orangepi@orangepi:~$ /usr/local/bin/python3.9 -m pip install --upgrade pip

Python更换pip源的方法

Linux系统pip默认使用的源为Python官方的源,但是国内访问Python官方的源速度是很慢的,并且经常会由于网络原因导致Python软件包安装失败。所以在使用pip安装Python库时,请记得更换下pip源。

  1. 首先安装下python3-pip

    orangepi@orangepi:~$ sudo apt-get update

    orangepi@orangepi:~$ sudo apt-get install -y python3-pip

  2. Linux下永久更换pip源的方法

    1. 先新建~/.pip目录,然后添加pip.conf配置文件,并在其中设置pip的源为清华源

      orangepi@orangepi:~$ mkdir -p ~/.pip

      orangepi@orangepi:~$ cat <<EOF > ~/.pip/pip.conf

      [global]

      timeout = 6000

      index-url = https://pypi.tuna.tsinghua.edu.cn/simple

      trusted-host = pypi.tuna.tsinghua.edu.cn

      EOF

    2. 然后使用pip3安装Python库速度就会很快了

  3. Linux下临时更换pip源的方法,其中的<packagename>需要替换为具体的包名

    orangepi@orangepi:~$ pip3 install <packagename> -i \

    https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn

安装Docker的方法

Orange Pi提供的linux镜像已经预装了Docker,只是Docker服务默认没有打开。使用enable_docker.sh脚本可以使能docker服务,然后就可以开始使用docker命令了,并且在下次启动系统时也会自动启动docker服务。

orangepi@orangepi:~$ enable_docker.sh

可以使用下面的命令测试下docker,如果能运行hello-world说明docker能正常使用了。

orangepi@orangepi:~$ docker run hello-world

Unable to find image 'hello-world:latest' locally

latest: Pulling from library/hello-world

256ab8fe8778: Pull complete

Digest: sha256:7f0a9f93b4aa3022c3a4c147a449ef11e0941a1fd0bf4a8e6c9408b2600777c5

Status: Downloaded newer image for hello-world:latest


Hello from Docker!

This message shows that your installation appears to be working correctly.

.….

使用docker命令时,如果提示permission denied,请将当前用户加入到docker用户组,这样不需要sudo就能运行docker命令了。

orangepi@orangepi:~$ sudo usermod -aG docker $USER

注意:需要退出重新登录系统才能生效,重启系统也可以。

Home Assistant的安装方法

注意,这里只会提供在Ubuntu或者Debian系统中安装Home Assistant的方法,Home Assistant详细的使用方法请参考官方文档或者相应的书籍。

通过docker安装

  1. 首先请安装好docker,并确保docker能正常运行。docker的安装步骤请参考安装Docker的方法一节的说明。

  2. 然后可以搜索下Home Assistant的docker镜像

    orangepi@orangepi:~$ docker search homeassistant

  3. 然后使用下面的命令下载Home Assistant的docker镜像到本地,镜像大小大概有1GB多,下载时间会比较长,请耐心等待下载完成

    orangepi@orangepi:~$ docker pull homeassistant/home-assistant

    Using default tag: latest

    latest: Pulling from homeassistant/home-assistant

    be307f383ecc: Downloading

    5fbc4c07ac88: Download complete

    ...... (省略部分输出)

    3cc6a1510c9f: Pull complete

    7a4e4d5b979f: Pull complete

    Digest: sha256:81d381f5008c082a37da97d8b08dd8b358dae7ecf49e62ce3ef1eeaefc4381bb

    Status: Downloaded newer image for homeassistant/home-assistant:latest

    docker.io/homeassistant/home-assistant:latest

  4. 然后可以使用下面的命令查看下刚下载的Home Assistant的docker镜像

    orangepi@orangepi:~$ docker images homeassistant/home-assistant

    REPOSITORY                                    TAG       IMAGE       ID       CREATED       SIZE

    homeassistant/home-assistant       latest       bfa0ab9e1cf5       2 months ago       1.17GB

  5. 此时就可以运行Home Assistant的docker容器了

    orangepi@orangepi:~$ docker run -d \

    --name homeassistant \

    --privileged \

    --restart=unless-stopped \

    -e TZ=Asia/Shanghai \

    -v /home/orangepi/home-assistant:/config \

    --network=host \

    homeassistant/home-assistant:latest

  6. 然后在浏览器中输入【开发板的IP地址:8123】就能看到Home Assistant的界面

    Home Assistant容器的启动需要一段时间,如果下面的界面没有正常显示,请等待几秒钟再刷新。如果等待一分钟以上还没有正常显示下面的界面说明Home Assistant安装有问题,此时需要去检查前面的安装设置过程是否有问题了。

    Zero3-img188.png

  7. 然后输入姓名、用户名密码再点击创建账号

    Zero3-img189.png

  8. 然后按照界面提示根据自己的喜好设置,再点击下一步

    Zero3-img190.png

  9. 然后点击下一步

    Zero3-img191.png

  10. 然后点击完成

    Zero3-img192.png

  11. Home Assistant最终显示的主界面如下图所示

    Zero3-img193.png

  12. 停止Home Assistant容器的方法

    1. 查看docker容器的命令如下所示

      orangepi@orangepi:~$ docker ps -a

    2. 停止Home Assistant容器的命令如下所示

      orangepi@orangepi:~$ docker stop homeassistant

    3. 删除Home Assistant容器的命令如下所示

      orangepi@orangepi:~$ docker rm homeassistant

通过python安装

安装前请先更换下pip的源为国内源,加快Python包的安装速度,配置方法见Python更换pip源的方法一节的说明。

  1. 首先安装依赖包

    orangepi@orangepi:~$ sudo apt-get update

    orangepi@orangepi:~$ sudo apt-get install -y python3 python3-dev python3-venv \

    python3-pip libffi-dev libssl-dev libjpeg-dev zlib1g-dev autoconf build-essential \

    libopenjp2-7 libtiff5 libturbojpeg0-dev tzdata

    如果是debian12请使用下面的命令:

    orangepi@orangepi:~$ sudo apt-get update

    orangepi@orangepi:~$ sudo apt-get install -y python3 python3-dev python3-venv \

    python3-pip libffi-dev libssl-dev libjpeg-dev zlib1g-dev autoconf build-essential \

    libopenjp2-7 libturbojpeg0-dev tzdata

  2. 然后需要编译安装Python3.9,方法请参考Python源码编译安装的方法一节

    Debian Bullseye默认的Python版本就是Python3.9,所以无需编译安装。

    Ubuntu Jammy默认的Python版本就是Python3.10,所以也无需编译安装。

    Debian Bookworm默认的Python版本就是Python3.11,所以也无需编译安装。

  3. 然后创建Python虚拟环境

    Debian Bookworm中是python3.11,请记得替换对应的命令。

    orangepi@orangepi:~$ sudo mkdir /srv/homeassistant

    orangepi@orangepi:~$ sudo chown orangepi:orangepi /srv/homeassistant

    orangepi@orangepi:~$ cd /srv/homeassistant

    orangepi@orangepi:~$ python3.9 -m venv .

    orangepi@orangepi:~$ source bin/activate

    (homeassistant) orangepi@orangepi:/srv/homeassistant$

  4. 然后安装需要的Python包

    (homeassistant) orangepi@orangepi:/srv/homeassistant$ python3 -m pip install wheel

  5. 然后就可以安装Home Assistant Core

    (homeassistant) orangepi@orangepi:/srv/homeassistant$ pip3 install homeassistant

  6. 然后输入下面的命令就可以运行Home Assistant Core

    (homeassistant) orangepi@orangepi:/srv/homeassistant$ hass

  7. 然后在浏览器中输入【开发板的IP地址:8123】就能看到Home Assistant的界面

    第一次运行hass命令时,会下载安装和缓存一些运行必须的库和依赖包。这个过程可能会花费几分钟的时间。注意,此时在浏览器中是无法看到Home Assistant的界面的,请等待一段时间后再刷新下。

    Zero3-img194.png

OpenCV的安装方法

使用apt来安装OpenCV

  1. 安装命令如下所示

    orangepi@orangepi:~$ sudo apt-get update

    orangepi@orangepi:~$ sudo apt-get install -y libopencv-dev python3-opencv

  2. 然后使用下面的命令打印OpenCV的版本号输出正常,说明OpenCV安装成功

    1. Ubuntu22.04中OpenCV的版本如下所示:

      orangepi@orangepi:~$ python3 -c "import cv2; print(cv2.__version__)"

      4.5.4

    2. Ubuntu20.04中OpenCV的版本如下所示:

      orangepi@orangepi:~$ python3 -c "import cv2; print(cv2.__version__)"

      4.2.0

    3. Debian11中OpenCV的版本如下所示:

      orangepi@orangepi:~$ python3 -c "import cv2; print(cv2.__version__)"

      4.5.1

    4. Debian12中OpenCV的版本如下所示:

      orangepi@orangepi:~$ python3 -c "import cv2; print(cv2.__version__)"

      4.6.0

宝塔Linux面板的安装方法

宝塔Linux面板是提升运维效率的服务器管理软件,支持一键LAMP/LNMP/集群/监控/网站/FTP/数据库/JAVA等100多项服务器管理功能(摘抄自宝塔官网

  1. 首先需要扩展下/tmp空间的大小,设置完后需要重启下开发板的linux系统,命令如下所示:

    orangepi@orangepi:~$ sudo sed -i 's/nosuid/&,size=2G/' /etc/fstab

    orangepi@orangepi:~$ sudo reboot

  2. 重启后,可以看到/tmp空间的大小变为2G了

    orangepi@orangepi:~$ df -h | grep "/tmp"

    tmpfs 2.0G 12K 2.0G 1% /tmp

  3. 然后在linux系统中输入下面的命令就可以开始宝塔的安装

    orangepi@orangepi:~$ sudo install_bt_panel.sh

  4. 然后宝塔安装程序会提醒是否安装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

  5. 然后要做的就是耐心等待,当看到终端输出下面的打印信息时,说明宝塔已经安装完成,整个安装过程大约耗时34分钟,根据网络速度的不同可能会有一些差别

    Zero3-img195.png

  6. 此时在浏览器中输入上面显示的面板地址就可以打开宝塔Linux面板的登录界面,然后在对应的位置输入上图显示的usernamepassword就可以登录进宝塔
    Zero3-img196.png

  7. 成功登录宝塔后的会弹出下面的欢迎界面,首先请将中间的用户须知阅读完拖到最下面,然后就可以选择”我已同意并阅读《用户协议》“,接着点击”进入面板”就可以进入宝塔了

    Zero3-img197.png

  8. 进入宝塔后首先会提示需要绑定宝塔官网的账号,如果没有账号可以去宝塔的官网(https://www.bt.cn)注册一个

    Zero3-img198.png

  9. 最终显示的界面如下图所示,可以很直观的看到开发板Linux系统的一些状态信息,比如负载状态、CPU的使用率、内存使用率和存储空间的使用情况等

    Zero3-img199.png

  10. 宝塔的更多功能可以参考下面资料自行探索

    使用手册:http://docs.bt.cn

    论坛地址:https://www.bt.cn/bbs

    GitHub链接:https://github.com/aaPanel/BaoTa

face_recognition人脸识别库的安装和测试方法

注意,此小节的内容都是在桌面版本的Linux系统中测试的,所以请确保开发板使用的系统为桌面版本的系统。

另外下面的安装测试都是在orangepi用户下进行的,请保持环境一致。


Debian12目前没有适配。

face_recognition源码仓库的地址为:

https://github.com/ageitgey/face_recognition

face_recognition中文版本的说明文档为:

https://github.com/ageitgey/face_recognition/blob/master/README_Simplified_Chinese.md

使用脚本自动安装face_recognition的方法

  1. 首先在桌面中打开一个终端,然后下载face_recognition_install.sh

    orangepi@orangepi:~/Desktop$ wget \

    https://gitee.com/leeboby/face_recognition_install/raw/master/face_recognition_install.sh

  2. 然后执行下面的命令开始安装face_recognition

    orangepi@orangepi:~/Desktop$ bash face_recognition_install.sh

  3. face_recognition安装完后会自动下载face_recognition的源码,然后自动运行face_recognition中的一些示例,如果最后能看到桌面上弹出了下面的这些图片就说明face_recognition安装测试成功了

    Zero3-img200.png

手动安装face_recognition的方法

  1. 首先新建~/.pip目录,再添加pip.conf配置文件,并在其中设置pip的镜像源为清华源,需要执行的命令如下所示:

    orangepi@orangepi:~$ mkdir -p ~/.pip

    orangepi@orangepi:~$ cat <<EOF > ~/.pip/pip.conf

    [global]

    timeout = 6000

    index-url = https://pypi.tuna.tsinghua.edu.cn/simple

    trusted-host = pypi.tuna.tsinghua.edu.cn

    EOF

  2. 然后安装依赖包

    orangepi@orangepi:~$ sudo apt update

    orangepi@orangepi:~$ sudo apt install -y python3-pip libopencv-dev \

    python3-opencv imagemagick python3-scipy python3-setuptools python3-wheel \

    python3-dev cmake python3-testresources

  3. 然后更新下pip3

    orangepi@orangepi:~$ python3 -m pip install -U pip setuptools wheel

  4. 安装face_recognition前首先需要安装下dlib这个库,由于dlib这个库在开发板上编译安装比较慢,所以我在gitee上保存了一份编译好的dlib whl文件,下载后直接安装就可以了。dlib whl文件下载地址如下所示:

    https://gitee.com/leeboby/python_whl

    1. 首先将python_whl仓库下载到开发板的Linux系统中

      orangepi@orangepi:~$ git clone --depth=1 https://gitee.com/leeboby/python_whl

    2. 在python_whl文件夹中可以看到有多个版本的dlib安装包dlib不同版本对应的Linux系统如下所示:

    3. Ubuntu20.04 dlib-19.24.0-cp38-cp38-linux_aarch64.whl
      Ubuntu22.04 dlib-19.24.0-cp310-cp310-linux_aarch64.whl
      Debian11 dlib-19.24.0-cp39-cp39-linux_aarch64.whl
    1. 然后就可以开始安装dlib,命令如下所示

      1. a) Ubuntu20.04

        orangepi@orangepi:~$ cd python_whl

        orangepi@orangepi:~/python_whl$ python3 -m pip install dlib-19.24.0-cp38-cp38-linux_aarch64.whl

      2. b) Ubuntu22.04

        orangepi@orangepi:~$ cd python_whl

        orangepi@orangepi:~/python_whl$ python3 -m pip install dlib-19.24.0-cp310-cp310-linux_aarch64.whl

      3. c) Debian11

        orangepi@orangepi:~$ cd python_whl

        orangepi@orangepi:~/python_whl$ python3 -m pip install dlib-19.24.0-cp39-cp39-linux_aarch64.whl

    2. 安装完后如果使用下面的命令能正常打印dlib的版本号,就说明dlib安装正确

      orangepi@orangepi:~/python_whl$ python3 -c "import dlib; print(dlib.__version__)"

      19.24.0

  1. 然后安装下face_recognition_models-0.3.0-py2.py3-none-any.whl

    orangepi@orangepi:~/python_whl$ python3 -m pip install face_recognition_models-0.3.0-py2.py3-none-any.whl

  2. 然后安装face_recognition

    orangepi@orangepi:~$ python3 -m pip install face_recognition

  3. 然后需要重新打开一个终端,才能找到并运行face_detectionface_recognition这两个命令

    1. face_recognition命令用来在单张图片或一个图片文件夹中识别是谁的脸

    2. face_detection命令用来在单张图片或一个图片文件夹中定位人脸的位置

      orangepi@orangepi:~$ which face_detection

      /usr/local/bin/face_detection

      orangepi@orangepi:~$ which face_recognition

      /usr/local/bin/face_recognition

    如果重新打开终端找不到上面的两个命令,请试下手动导入环境变量,然后再测试下。

    orangepi@orangepi:~$ export PATH=/home/orangepi/.local/bin:$PATH

face_recognition的测试方法

注意,下面的操作都是在桌面中演示的,所以首先请连接好HDMI显示器,或者使用NoMachine/VNC远程登录Linux桌面来测试。

  1. face_recognition的源码中有一些示例代码,我们可以直接用来测试,face_recognition源码的下载地址如下所示:

    1. GitHub官方的下载地址

      orangepi@orangepi:~$ git clone https://github.com/ageitgey/face_recognition.git

    2. Gitee镜像下载地址

      orangepi@orangepi:~$ git clone https://gitee.com/leeboby/face_recognition.git

  2. face_recognition示例代码的路径如下所示

    face_recognition/examples

  3. face_recognition的中文说明文档链接如下所示,使用face_recognition前请仔细阅读下

    https://github.com/ageitgey/face_recognition/blob/master/README_Simplified_Chinese.md

  4. find_faces_in_picture.py用来在图片中定位人脸的位置,测试步骤如下所示

    1. 在桌面中打开一个终端,然后进入face_recognition/examples目录,再执行下面的命令

      orangepi@orangepi:~$ cd face_recognition/examples

      orangepi@orangepi:~/face_recognition/examples$ python3 find_faces_in_picture.py

      I found 1 face(s) in this photograph.

      A face is located at pixel location Top: 241, Left: 419, Bottom: 562, Right: 740

    2. 等待一段时间会弹出下面的图片,这就是在测试图片中定位到的人脸

      Zero3-img201.png

  5. find_facial_features_in_picture.py用来识别单张图片中人脸的关键点,测试步骤如下所示

    1. 在桌面中打开一个终端,然后进入face_recognition/examples目录,再执行下面的命令

      orangepi@orangepi:~$ cd face_recognition/examples

      orangepi@orangepi:~/face_recognition/examples$ python3 find_facial_features_in_picture.py

    2. 等待一段时间会弹出下面的图片,可以看到将人脸轮廓都标注出来了

      Zero3-img202.png

  6. identify_and_draw_boxes_on_faces.py用来识别人脸并使用方框标注,测试步骤如下所示

    1. 在桌面中打开一个终端,然后进入face_recognition/examples目录,再执行下面的命令

      orangepi@orangepi:~$ cd face_recognition/examples

      orangepi@orangepi:~/face_recognition/examples$ python3 identify_and_draw_boxes_on_faces.py

    2. 等待一段时间会弹出下面的图片,可以看到将图片中的人脸都使用方框标注出来了,并且正确显示了人物的名字

      Zero3-img203.png

  7. face_distance.py用来在不同精度上比较两个人脸是否属于一个人,首先打开一个终端,然后进入face_recognition/examples目录,再执行下面的命令就可以看到测试的输出结果

    orangepi@orangepi:~$ cd face_recognition/examples

    orangepi@orangepi:~/face_recognition/examples$ python3 face_distance.py

    The test image has a distance of 0.35 from known image #0

    - With a normal cutoff of 0.6, would the test image match the known image? True

    - With a very strict cutoff of 0.5, would the test image match the known image? True


    The test image has a distance of 0.82 from known image #1

    - With a normal cutoff of 0.6, would the test image match the known image? False

    - With a very strict cutoff of 0.5, would the test image match the known image? False

  8. recognize_faces_in_pictures.py用来识别未知图片中的人脸是谁。首先打开一个终端,然后进入face_recognition/examples目录,再执行下面的命令,等待一端时间后就能看到测试结果

    orangepi@orangepi:~$ cd face_recognition/examples

    orangepi@orangepi:~/face_recognition/examples$ python3 recognize_faces_in_pictures.py

    Is the unknown face a picture of Biden? False

    Is the unknown face a picture of Obama? True

    Is the unknown face a new person that we've never seen before? False

  9. facerec_from_webcam_faster.py用来识别USB摄像头中的人脸,测试步骤如下所示:

    1. 首先请将USB摄像头插入开发板的USB接口中,然后通过v4l2-ctl注意v4l2中的l是小写字母l,不是数字1)命令查看下USB摄像头的设备节点的序号

      orangepi@orangepi:~$ sudo apt update

      orangepi@orangepi:~$ sudo apt install -y v4l-utils

      orangepi@orangepi:~$ v4l2-ctl --list-devices

      cedrus (platform:cedrus):

      /dev/video0


      USB2.0 UVC PC Camera: USB2.0 UV (usb-5311000.usb-1):

      /dev/video1

      /dev/video2

    2. 然后在桌面中打开一个终端,进入face_recognition/examples目录后,首先修改下facerec_from_webcam_faster.py中使用的摄像头的设备序号。比如上面通过v4l2-ctl --list-devices命令查看到USB摄像头为/dev/video1,那就修改cv2.VideoCapture(0)中的01

      orangepi@orangepi:~$ cd face_recognition/examples

      orangepi@orangepi:~/face_recognition/examples$ vim facerec_from_webcam_faster.py

      video_capture = cv2.VideoCapture(1)

    3. 然后执行下面的命令运行facerec_from_webcam_faster.py

      orangepi@orangepi:~/face_recognition/examples$ python3 facerec_from_webcam_faster.py

    4. 等待一段时间会弹出摄像头的显示画面

      Zero3-img204.png

    5. 此时可以将摄像头对准自己,当摄像头检测到人脸时,会将检测到的人脸使用方框框起来。注意,检测人脸时,摄像头显示的画面会比较卡顿,请不要移动过快

    6. 还可以打开一张奥巴马的图片,然后使用摄像头对准打开的图片,可以看到不仅能将人脸标注出来,还能正确显示检测到的人脸的名字。注意,检测人脸时,摄像头显示的画面会比较卡顿,请不要移动过快

      Zero3-img205.png

  10. web_service_example.py是一个非常简单的使用Web服务上传图片运行人脸识别的案例,后端服务器会识别这张图片是不是奥巴马,并把识别结果以json键值对输出,测试步骤如下所示:

    1. 在桌面中打开一个终端,然后进入face_recognition/examples目录,再执行下面的命令(如果是使用脚本自动安装的face_recognition,那么就不需要安装flask了

      orangepi@orangepi:~$ python3 -m pip install flask

      orangepi@orangepi:~$ cd face_recognition/examples

      root@orangepi:~/face_recognition/examples$ python3 web_service_example.py

      * Serving Flask app 'web_service_example' (lazy loading)

      * Environment: production

      WARNING: This is a development server. Do not use it in a production deployment.

      Use a production WSGI server instead.

      * Debug mode: on

      * Running on all addresses (0.0.0.0)

      WARNING: This is a development server. Do not use it in a production deployment.

      * Running on http://127.0.0.1:5001

      * Running on http://192.168.1.79:5001 (Press CTRL+C to quit)

      * Restarting with stat

      * Debugger is active!

      * Debugger PIN: 500-161-390

    2. 然后另外打开一个终端,再运行下面的命令就可以返回图片识别的结果(注意,下面的命令执行路径为face_recognition/examples

      orangepi@orangepi:~/face_recognition/examples$ curl -XPOST -F \

      "file=@obama2.jpg" http://127.0.0.1:5001

      {

      "face_found_in_image": true,

      "is_picture_of_obama": true

      }

    3. 我们也可以将face_recognition/examples/obama2.jpg这张图片拷贝到其他的Linux电脑中,当然也可以自己准备一张名为obama2.jpg的图片,然后在Linux电脑中可以使用下面的命令远程通过开发板运行的服务来识别人脸(注意命令中的IP地址需要替换为开发板的IP地址,file后的文件名需要替换为想要测试的图片的名字

      test@test:~$ curl -XPOST -F "file=@obama2.jpg" http://192.168.1.79:5001

      {

      "face_found_in_image": true,

      "is_picture_of_obama": true

      }

    4. 使用浏览器测试的方法如下所示:

      1. a) 首先打开浏览器,然后在浏览器的地址栏输入开发板的IP地址:5001,然后就能看到下面的页面

        Zero3-img206.png

      2. b) 然后将obama2.jpg复制到桌面

        orangepi@orangepi:~/face_recognition/examples$ cp obama2.jpg /home/orangepi/Desktop/

      3. c) 然后在浏览器中选择刚才复制的图片

        Zero3-img207.png

      4. d) 然后点击Upload上传刚才选择的图片进行人脸识别

        Zero3-img208.png

      5. e) 等待一段时间后就会显示检测的结果

        Zero3-img209.png

  11. face_detection命令测试示例

    1. face_detection命令行工具可以在单张图片或一个图片文件夹中定位人脸位置(输出像素点坐标)。使用face_detection --help可以查看下face_detection命令的帮助信息

      orangepi@orangepi:~$ face_detection --help

      Usage: face_detection [OPTIONS] IMAGE_TO_CHECK


      Options:

      --cpus INTEGER number of CPU cores to use in parallel. -1 means "use all in system"


      --model TEXT Which face detection model to use. Options are "hog" or "cnn".


      --help Show this message and exit.

    2. 检测单张图片的示例如下所示:

      orangepi@orangepi:~$ cd face_recognition/examples

      orangepi@orangepi:~/face_recognition/examples$ face_detection obama2.jpg

      obama2.jpg,302,474,611,164

    3. 使用多核并行检测多张图片的示例如下所示:

      1. a) 首先进入face_recognition/examples文件夹

      2. b) 然后新建一个test文件夹

      3. c) 然后将jpg图片都拷贝到test文件夹中

      4. d) 然后使用所有的cpu并行运行face_detection来检查test文件夹中的图片,其中--cpus -1表示使用所有的cpu

        orangepi@orangepi:~$ cd face_recognition/examples

        orangepi@orangepi:~/face_recognition/examples$ mkdir test

        orangepi@orangepi:~/face_recognition/examples$ cp *.jpg test

        orangepi@orangepi:~/face_recognition/examples$ face_detection --cpus -1 test

        test/obama-240p.jpg,29,261,101,189

        test/obama_small.jpg,65,215,169,112

        test/obama2.jpg,302,474,611,164

        test/two_people.jpg,62,394,211,244

        test/two_people.jpg,95,941,244,792

        test/obama.jpg,136,624,394,366

        test/obama-480p.jpg,65,507,189,383

        test/obama-720p.jpg,94,751,273,572

        test/obama-1080p.jpg,136,1140,394,882

        test/biden.jpg,233,749,542,439

  12. face_recognition命令测试示例

    1. face_recognition命令行工具可以在单张图片或者一个图片文件夹中认出是谁的脸。使用face_recognition --help可以查看下face_recognition命令的帮助信息

      orangepi@orangepi:~$ face_recognition --help

      Usage: face_recognition [OPTIONS] KNOWN_PEOPLE_FOLDER IMAGE_TO_CHECK

      Options:

      --cpus INTEGER            number of CPU cores to use in parallel (can speed up processing lots of images). -1 means "use all in system"


      --tolerance FLOAT          Tolerance for face comparisons. Default is 0.6. Lower this if you get multiple matches for the same person.


      --show-distance BOOLEAN    Output face distance. Useful for tweaking tolerance setting.


      --help                  Show this message and exit.

    2. 首先新建一个已知名字的人脸图片文件夹known_people,然后复制两张图片到known_people中,然后将obama2.jpg复制为unkown.jpg,也就是我们要识别的图片

      orangepi@orangepi:~$ cd face_recognition/examples

      orangepi@orangepi:~/face_recognition/examples$ mkdir known_people

      orangepi@orangepi:~/face_recognition/examples$ cp biden.jpg obama.jpg known_people

      orangepi@orangepi:~/face_recognition/examples$ cp obama2.jpg unkown.jpg

    3. 然后就可以使用下面的命令识别下unkown.jpg图片中人物的名字,可以看到识别到unkown.jpg图片为obama

      orangepi@orangepi:~/face_recognition/examples$ face_recognition known_people \

      unkown.jpg

      unkown.jpg,obama

    4. 如果我们识别一张不相关的图片,就会显示unknown_person

      root@orangepi:~/face_recognition/examples$ face_recognition known_people \

      alex-lacamoire.png

      alex-lacamoire.png,unknown_person

    5. 我们还可以新建一个test文件夹,然后在其中放入多张图片,然后就可以使用所有的CPU来并行识别所有的图片

      orangepi@orangepi:~/face_recognition/examples$ mkdir test

      orangepi@orangepi:~/face_recognition/examples$ cp *.jpg *.png test

      orangepi@orangepi:~/face_recognition/examples$ face_recognition --cpus -1 \

      known_people test

      test/obama-240p.jpg,obama

      test/alex-lacamoire.png,unknown_person

      test/obama_small.jpg,obama

      test/unkown.jpg,obama

      test/obama2.jpg,obama

      test/lin-manuel-miranda.png,unknown_person

      test/two_people.jpg,biden

      test/two_people.jpg,obama

      test/obama-720p.jpg,obama

      test/obama.jpg,obama

      test/obama-480p.jpg,obama

      test/biden.jpg,biden

      test/obama-1080p.jpg,obama

设置中文环境以及安装中文输入法

注意,安装中文输入法前请确保开发板使用的Linux系统为桌面版系统。

Debian 系统的安装方法

  1. 首先设置默认locale为中文

    1. 输入下面的命令可以开始配置locale

      orangepi@orangepi:~$ sudo dpkg-reconfigure locales

    2. 然后在弹出的界面中选择zh_CN.UTF-8 > UTF-8(通过键盘上的上下方向按键来上下移动,通过空格键来选择,最后通过Tab键可以将光标移动到<OK>,然后回车即可)

      Zero3-img210.png

    3. 然后设置默认localezh_CN.UTF-8

      Zero3-img211.png

    4. 退出界面后就会开始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.

  2. 然后打开Input Method

    Zero3-img212.png

  3. 然后选择OK

    Zero3-img213.png

  4. 然后选择Yes

    Zero3-img214.png

  5. 然后选择fcitx

    Zero3-img215.png

  6. 然后选择OK

    Zero3-img216.png

  7. 然后重启Linux系统才能使配置生效

  8. 然后打开Fcitx configuration

    Zero3-img217.png

  9. 然后点击下图所示位置的+

    Zero3-img218.png

  10. 然后搜索Google Pinyin再点击OK

    Zero3-img219.png

  11. 然后将Google Pinyin放到最前面

    Zero3-img220.png

    Zero3-img221.png

  12. 然后打开Geany这个编辑器测试下中文输入法

    Zero3-img222.png

  13. 中文输入法测试如下所示

    Zero3-img223.png

  14. 通过Ctrl+Space快捷键可以切换中英文输入法

  15. 如果需要整个系统都显示为中文,可以将/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

  16. 然后重启系统就能看到系统显示为中文了

    Zero3-img224.png

Ubuntu 20.04系统的安装方法

  1. 首先打开Language Support

    Zero3-img225.png

  2. 然后找到汉语(中国)选项

    Zero3-img226.png

  3. 然后请使用鼠标左键选中汉语(中国)并按住不动,然后往上将其拖到最开始的位置,拖完后的显示如下图所示:

    Zero3-img227.png

  4. 注意,这一步不是很好拖动的,请耐心多试几次。

  1. 然后选择Apply System-Wide将中文设置应用到整个系统

    Zero3-img228.png

  2. 然后设置Keyboard input method systemfcitx

    Zero3-img229.png

  3. 然后重启Linux系统使配置生效

  4. 重新进入系统后,在下面的界面请选择不要再次询问我,然后请根据自己的喜好决定标准文件夹是否也要更新为中文

    Zero3-img230.png

  5. 然后可以看到桌面都显示为中文了

    Zero3-img231.png

  6. 然后我们可以打开Geany测试下中文输入法,打开方式如下图所示

    Zero3-img232.png

  7. 打开Geany后,默认还是英文输入法,我们可以通过Ctrl+Space快捷键来切换成中文输入法,然后就能输入中文了

    Zero3-img233.png

Ubuntu 22.04系统的安装方法

  1. 首先打开Language Support

    Zero3-img225.png

  2. 然后找到汉语(中国)选项

    Zero3-img234.png

  3. 然后请使用鼠标左键选中汉语(中国)并按住不动,然后往上将其拖到最开始的位置,拖完后的显示如下图所示:

    Zero3-img235.png

  4. 注意,这一步不是很好拖动的,请耐心多试几次。

  1. 然后选择Apply System-Wide将中文设置应用到整个系统

    Zero3-img236.png

  2. 然后重启Linux系统使配置生效

  3. 重新进入系统后,在下面的界面请选择不要再次询问我,然后请根据自己的喜好决定标准文件夹是否也要更新为中文

    Zero3-img230.png

  4. 然后可以看到桌面都显示为中文了

    Zero3-img231.png

  5. 然后打开Fcitx5配置程序

    Zero3-img237.png

  6. 然后选择使用拼音输入法

    Zero3-img238.png

  7. 选择后的界面如下所示,再点击确定即可

    Zero3-img239.png

  8. 然后我们可以打开Geany测试下中文输入法,打开方式如下图所示

    Zero3-img232.png

  9. 打开Geany后,默认还是英文输入法,我们可以通过Ctrl+Space快捷键来切换成中文输入法,然后就能输入中文了

    Zero3-img240.png

远程登录Linux系统桌面的方法

使用NoMachine远程登录

请确保开发板安装的Ubuntu或者Debian系统为桌面版本的系统。另外NoMachine也提供了详细的使用文档,强烈建议通读此文档来熟悉NoMachine的使用,文档链接如下所示:

https://knowledgebase.nomachine.com/DT10R00166

NoMachine支持Windows、Mac、Linux、iOS和安卓平台,所以我们可以在多种设备上通过NoMachine来远程登录控制Orange Pi开发板。下面演示下在Windows中通过NoMachine来远程登录Orange Pi开发板的Linux系统桌面。其他平台的安装方法请参考下NoMachine的官方文档。

操作前请先确保Windwos电脑和开发板在同一局域网内,并且能正常ssh登录开发板的Ubuntu或者Debian系统。

  1. 首先下载NoMachine软件Linux arm64 deb版本的安装包,然后安装到开发板的Linux系统中

    1. 由于H618是ARMv8架构的SOC,我们使用的系统为Ubuntu或者Debian,所以这里需要下载NoMachine > for ARM ARMv8 DEB安装包,下载链接如下所示:

      注意,这个下载链接可能会变,请认准Armv8/Arm64版本的deb包。

      https://downloads.nomachine.com/download/?id=118&distro=ARM

      Zero3-img241.png

    1. 另外在官方工具中也可以下载到NoMachine的安装包

      Zero3-img242.png

      先进入远程登录软件-NoMachine文件夹

      Zero3-img243.png

      然后下载arm64版本的deb安装包

      Zero3-img244.png

    2. 然后将下载的nomachine_x.x.x_x_arm64.deb上传到开发板的Linux系统中

    3. 然后使用下面的命令在开发板的Linux系统中安装NoMachine

      orangepi@orangepi:~$ sudo dpkg -i nomachine_x.x.x_x_arm64_arm64.deb

  1. 然后下载NoMachine软件Windows版本的安装包,下载地址如下所示
  2. 注意,这个下载链接可能会变。

    https://downloads.nomachine.com/download/?id=9

    Zero3-img245.png

  1. 然后在Windows中安装NoMachine,安装完后请重启下电脑

  2. 然后在Window中打开NoMachine

    Zero3-img246.png

  3. NoMachine启动后会自动扫描局域网内其他安装有NoMachine的设备,进入NoMachine的主界面后就可以看到开发板已经在可连接的设备列表里了,然后点击下图红色方框所示的位置即可开始登录开发板的Linux系统桌面

    Zero3-img247.png

  4. 然后点击OK

    Zero3-img248.png

  5. 然后在下图对应的位置输入开发板Linux系统的用户名和密码,再点击OK开始登陆

    Zero3-img249.png

  6. 然后在接下来的界面中都点击OK

  7. 最后就能看到开发板Linux系统的桌面了

    Zero3-img250.png

使用VNC远程登录

操作前请先确保Windwos电脑和开发板在同一局域网内,并且能正常ssh登录开发板的Ubuntu或者Debian系统。

Ubuntu20.04测试VNC很多问题,请不要使用这种方法。

  1. 首先运行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 orangepi:1


    Creating default startup script /root/.vnc/xstartup

    Starting applications specified in /root/.vnc/xstartup

    Log file is /root/.vnc/orangepi:1.log


    Killing Xtightvnc process ID 3047


    New 'X' desktop is orangepi:1


    Starting applications specified in /root/.vnc/xstartup

    Log file is /root/.vnc/orangepi:1.log

  2. 使用MobaXterm软件连接开发板linux系统桌面的步骤如下所示:

    1. 首先点击Session,然后选择VNC,再填写开发板的IP地址和端口,最后点击OK确认
    2. Zero3-img251.png

    1. 然后输入前面设置的VNC的密码

      Zero3-img252.png

    2. 登录成功后的界面显示如下图所示,然后就可以远程操作开发板linux系统的桌面了

    3. Zero3-img253.png

QT的安装方法

  1. 使用下面的脚本可以安装QT5和QT Creator

    orangepi@orangepi:~$ install_qt.sh

  2. 安装完后会自动打印QT的版本号

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

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

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

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

  3. 然后在Applications中就可以看到QT Creator的启动图标

    Zero3-img254.png

    也可以使用下面的命令打开QT Creator

    orangepi@orangepi:~$ qtcreator

  4. QT Creator打开后的界面如下所示

    Zero3-img255.png

  5. QT Creator的版本如下所示

    1. QT Creator在Ubuntu20.04中的默认版本如下所示

      Zero3-img256.png

    2. QT Creator在Ubuntu22.04中的默认版本如下所示

      Zero3-img257.png

    3. QT Creator在Debian11中的默认版本如下所示

      Zero3-img258.png

    4. QT Creator在Debian12中的默认版本如下所示

      Zero3-img259.png

  6. 然后设置下QT

    1. 首先打开Help->About Plugins...

      Zero3-img260.png

    2. 然后去掉ClangCodeModel的那个勾

      Zero3-img261.png

    3. 设置完后需要重启下QT Creator

    4. 然后确保QT Creator使用的GCC编译器,如果默认为Clang,请修改为GCC

      Debian12请跳过这步。

      Zero3-img262.png

      Zero3-img263.png

  7. 然后就可以打开一个示例代码

    Zero3-img264.png

  8. 点击示例代码后会自动打开对应的说明文档,可以仔细看下其中的使用说明

    Zero3-img265.png

  9. 然后点击下Configure Project

    Zero3-img266.png

  10. 然后点击左下角的绿色三角形编译运行下示例代码

    Zero3-img267.png

  11. 等待一段时间后,会弹出下图所示的界面,此时就说明QT能正常编译运行

    Zero3-img268.png

  12. 参考资料

    https://wiki.qt.io/Install_Qt_5_on_Ubuntu

    https://download.qt.io/archive/qtcreator

    https://download.qt.io/archive/qt

ROS安装方法

Ubuntu20.04安装ROS 1 Noetic的方法

  1. ROS 1当前活跃的版本如下所示,推荐版本为Noetic Ninjemys
Zero3-img269.png
Zero3-img270.png

http://docs.ros.org

https://wiki.ros.org/Distributions

  1. ROS 1 Noetic Ninjemys官方安装文档链接如下所示:

    http://wiki.ros.org/noetic/Installation/Ubuntu

  2. ROS Noetic Ninjemys官方安装文档中Ubuntu推荐使用Ubuntu20.04,所以请确保开发板使用的系统为Ubuntu20.04桌面版系统

    http://wiki.ros.org/noetic/Installation

    Zero3-img271.png

  3. 然后使用下面的脚本安装ros1

    orangepi@orangepi:~$ install_ros.sh ros1

  4. 使用ROS工具前,首先需要初始化下rosdep,然后编译源码时就能快速的安装一些系统依赖和一些ROS中的核心组件

  5. 注意,运行下面的命令需要确保开发板能正常访问github,否则会由于网络问题而报错。


    install_ros.sh脚本会尝试修改/etc/hosts并自动运行下面的命令。但是这种方法无法保证每次都能正常访问github,如果install_ros.sh安装完ros1后有提示下面的错误,请自己想其它办法让开发板的linux系统能正常访问github,然后再手动运行下面的命令。


    https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml

    Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml

    ERROR: error loading sources list:

    The read operation timed out

    orangepi@orangepi:~$ source /opt/ros/noetic/setup.bash

    orangepi@orangepi:~$ sudo rosdep init

    Wrote /etc/ros/rosdep/sources.list.d/20-default.list

    Recommended: please run


    rosdep update

    orangepi@orangepi:~$ rosdep update

    reading in sources list data from /etc/ros/rosdep/sources.list.d

    Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml

    Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml

    Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml

    Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/ruby.yaml

    Hit https://raw.githubusercontent.com/ros/rosdistro/master/releases/fuerte.yaml

    Query rosdistro index https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml

    Skip end-of-life distro "ardent"

    Skip end-of-life distro "bouncy"

    Skip end-of-life distro "crystal"

    Skip end-of-life distro "dashing"

    Skip end-of-life distro "eloquent"

    Add distro "foxy"

    Add distro "galactic"

    Skip end-of-life distro "groovy"

    Add distro "humble"

    Skip end-of-life distro "hydro"

    Skip end-of-life distro "indigo"

    Skip end-of-life distro "jade"

    Skip end-of-life distro "kinetic"

    Skip end-of-life distro "lunar"

    Add distro "melodic"

    Add distro "noetic"

    Add distro "rolling"

    updated cache in /home/orangepi/.ros/rosdep/sources.cache

  1. 然后在桌面中打开一个命令行终端窗口,再使用test_ros.sh脚本可以启动一个小海龟的例程来测试下ROS是否能正常使用

    orangepi@orangepi:~$ test_ros.sh

  2. 运行完test_ros.sh脚本后,会弹出下图所示的一个小海龟

    Zero3-img272.png

  3. 然后请保持刚才打开终端窗口在最上面

  4. Zero3-img273.png

  1. 此时按下键盘上的方向按键就可以控制小海龟上下左右移动了

    Zero3-img274.png

Ubuntu20.04安装ROS 2 Galactic的方法

  1. ROS 2当前活跃的版本如下所示,推荐版本为Galactic Geochelone

    Zero3-img275.png

    Zero3-img276.png

    http://docs.ros.org

    http://docs.ros.org/en/galactic/Releases.html

  2. ROS 2 Galactic Geochelone官方安装文档链接如下所示:

    docs.ros.org/en/galactic/Installation.html

    http://docs.ros.org/en/galactic/Installation/Ubuntu-Install-Debians.html

  3. ROS 2 Galactic Geochelone官方安装文档中Ubuntu Linux推荐使用Ubuntu20.04,所以请确保开发板使用的系统为Ubuntu20.04桌面版系统。安装ROS 2有几种方法,下面演示下通过Debian packages的方式来安装ROS 2 Galactic Geochelone

  4. 使用install_ros.sh脚本可以安装ros2

    orangepi@orangepi:~$ install_ros.sh ros2

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

  6. 然后可以使用 test_ros.sh脚本测试下ROS 2是否安装成功,如果能看到下面的打印,说明ROS 2能正常运行

    orangepi@orangepi:~$ test_ros.sh

    [INFO] [1671174101.200091527] [talker]: Publishing: 'Hello World: 1'

    [INFO] [1671174101.235661048] [listener]: I heard: [Hello World: 1]

    [INFO] [1671174102.199572327] [talker]: Publishing: 'Hello World: 2'

    [INFO] [1671174102.204196299] [listener]: I heard: [Hello World: 2]

    [INFO] [1671174103.199580322] [talker]: Publishing: 'Hello World: 3'

    [INFO] [1671174103.204019965] [listener]: I heard: [Hello World: 3]

  7. 运行下面的命令可以打开rviz2

    orangepi@orangepi:~$ source /opt/ros/galactic/setup.bash

    orangepi@orangepi:~$ ros2 run rviz2 rviz2

    Zero3-img277.png

  8. ROS的使用方法请参考下ROS 2的文档

    http://docs.ros.org/en/galactic/Tutorials.html

Ubuntu22.04安装ROS 2 Humble的方法

  1. 使用install_ros.sh脚本可以安装ros2

    orangepi@orangepi:~$ install_ros.sh ros2

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

  3. 然后可以使用 test_ros.sh脚本测试下ROS 2是否安装成功,如果能看到下面的打印,说明ROS 2能正常运行

    orangepi@orangepi:~$ test_ros.sh

    [INFO] [1671174101.200091527] [talker]: Publishing: 'Hello World: 1'

    [INFO] [1671174101.235661048] [listener]: I heard: [Hello World: 1]

    [INFO] [1671174102.199572327] [talker]: Publishing: 'Hello World: 2'

    [INFO] [1671174102.204196299] [listener]: I heard: [Hello World: 2]

    [INFO] [1671174103.199580322] [talker]: Publishing: 'Hello World: 3'

    [INFO] [1671174103.204019965] [listener]: I heard: [Hello World: 3]

  4. 运行下面的命令可以打开rviz2

    orangepi@orangepi:~$ source /opt/ros/humble/setup.bash

    orangepi@orangepi:~$ ros2 run rviz2 rviz2

    Zero3-img278.png

  5. 参考文档

    http://docs.ros.org/en/humble/index.html

    http://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html

安装内核头文件的方法

Linux6.1内核的Debian11系统编译内核模块时会报GCC的错误。所以如果要编译内核模块请使用Debian12或者Ubuntu22.04。

  1. OPi发布的Linux镜像默认自带了内核头文件的deb包,存放的位置为/opt/

    orangepi@orangepi:~$ ls /opt/linux-headers*

    /opt/linux-headers-xxx-sun50iw9_x.x.x_arm64.deb

  2. 使用下面的命令可以安装内核头文件的deb包

    orangepi@orangepi:~$ sudo dpkg -i /opt/linux-headers*.deb

  3. 安装完后在/usr/src下就能看到内核头文件所在的文件夹

    orangepi@orangepi:~$ ls /usr/src

    linux-headers-x.x.x

  4. 然后可以编译下Linux镜像中自带的hello内核模块的源码,hello模块的源码在/usr/src/hello中,进入此目录后,然后使用make命令编译即可。

    orangepi@orangepi:~$ cd /usr/src/hello/

    orangepi@orangepi:/usr/src/hello$ sudo make

    make -C /lib/modules/5.4.125/build M=/usr/src/hello modules

    make[1]: Entering directory '/usr/src/linux-headers-5.4.125'

    CC [M] /usr/src/hello/hello.o

    Building modules, stage 2.

    MODPOST 1 modules

    CC [M] /usr/src/hello/hello.mod.o

    LD [M] /usr/src/hello/hello.ko

    make[1]: Leaving directory '/usr/src/linux-headers-5.4.125'

  5. 编译完后会生成hello.ko内核模块

    orangepi@orangepi:/usr/src/hello$ ls *.ko

    hello.ko

  6. 使用insmod命令可以将hello.ko内核模块插入内核中

    orangepi@orangepi:/usr/src/hello$ sudo insmod hello.ko

  7. 然后使用demsg命令可以查看下hello.ko内核模块的输出,如果能看到下面的输出说明hello.ko内核模块加载正确

    orangepi@orangepi:/usr/src/hello$ dmesg | grep "Hello"

    [ 2871.893988] Hello Orange Pi -- init

  8. 使用rmmod命令可以卸载hello.ko内核模块

    orangepi@orangepi:/usr/src/hello$ sudo rmmod hello

    orangepi@orangepi:/usr/src/hello$ dmesg | grep "Hello"

    [ 2871.893988] Hello Orange Pi -- init

    [ 3173.800892] Hello Orange Pi -- exit

Linux系统支持的部分编程语言测试

Debian Bullseye系统

  1. Debian Bullseye默认安装有gcc编译工具链,可以直接在开发板的Linux系统中编译C语言的程序

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

    2. 编写C语言的hello_world.c程序

      orangepi@orangepi:~$ vim hello_world.c

      #include <stdio.h>


      int main(void)

      {

      printf("Hello World!\n");


      return 0;

      }

    3. 然后编译运行hello_world.c

      orangepi@orangepi:~$ gcc -o hello_world hello_world.c

      orangepi@orangepi:~$ ./hello_world

      Hello World!

  2. Debian Bullseye默认安装有Python3

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

      >>>

      使用Ctrl+D快捷键可退出python的交互模式。

    2. 编写Python语言的hello_world.py程序

      orangepi@orangepi:~$ vim hello_world.py

      print('Hello World!')

    3. 运行hello_world.py的结果如下所示

      orangepi@orangepi:~$ python3 hello_world.py

      Hello World!

  3. Debian Bullseye默认没有安装Java的编译工具和运行环境

    1. 可以使用下面的命令安装openjdk,Debian Bullseye中最新版本为openjdk-17

      orangepi@orangepi:~$ sudo apt install -y openjdk-17-jdk

    2. 安装完后可以查看下Java的版本

      orangepi@orangepi:~$ java --version

    3. 编写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!");

      }

      }

    4. 然后编译运行hello_world.java

      orangepi@orangepi:~$ javac hello_world.java

      orangepi@orangepi:~$ java hello_world

      Hello World!

Debian Bookworm系统

  1. Debian Bookworm默认安装有gcc编译工具链,可以直接在开发板的Linux系统中编译C语言的程序

    1. gcc的版本如下所示

      orangepi@orangepi:~$ gcc --version

      gcc (Debian 12.2.0-14) 12.2.0

      Copyright (C) 2022 Free Software Foundation, Inc.

      This is free software; see the source for copying conditions. There is NO

      warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

    2. 编写C语言的hello_world.c程序

      orangepi@orangepi:~$ vim hello_world.c

      #include <stdio.h>


      int main(void)

      {

      printf("Hello World!\n");


      return 0;

      }

    3. 然后编译运行hello_world.c

      orangepi@orangepi:~$ gcc -o hello_world hello_world.c

      orangepi@orangepi:~$ ./hello_world

      Hello World!

  2. Debian Bookworm默认安装有Python3

    1. Python具体版本如下所示

      orangepi@orangepi:~$ python3

      Python 3.11.2 (main, Mar 13 2023, 12:18:29) [GCC 12.2.0] on linux

      Type "help", "copyright", "credits" or "license" for more information.

      >>>

      使用Ctrl+D快捷键可退出python的交互模式。

    2. 编写Python语言的hello_world.py程序

      orangepi@orangepi:~$ vim hello_world.py

      print('Hello World!')

    3. 运行hello_world.py的结果如下所示

      orangepi@orangepi:~$ python3 hello_world.py

      Hello World!

  3. Debian Bookworm默认没有安装Java的编译工具和运行环境

    1. 可以使用下面的命令安装openjdk,Debian Bookworm中最新版本为openjdk-17

      orangepi@orangepi:~$ sudo apt install -y openjdk-17-jdk

    2. 安装完后可以查看下Java的版本

      orangepi@orangepi:~$ java --version

    3. 编写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!");

      }

      }

    4. 然后编译运行hello_world.java

      orangepi@orangepi:~$ javac hello_world.java

      orangepi@orangepi:~$ java hello_world

      Hello World!

Ubuntu Focal系统

  1. Ubuntu Focal默认安装有gcc编译工具链,可以直接在开发板的Linux系统中编译C语言的程序

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

    2. 编写C语言的hello_world.c程序

      orangepi@orangepi:~$ vim hello_world.c

      #include <stdio.h>


      int main(void)

      {

      printf("Hello World!\n");


      return 0;

      }

    3. 然后编译运行hello_world.c

      orangepi@orangepi:~$ gcc -o hello_world hello_world.c

      orangepi@orangepi:~$ ./hello_world

      Hello World!

  2. Ubuntu Focal默认安装有Python3

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

      >>>

      使用Ctrl+D快捷键可退出python的交互模式。

    2. 编写Python语言的hello_world.py程序

      orangepi@orangepi:~$ vim hello_world.py

      print('Hello World!')

    3. 运行hello_world.py的结果如下所示

      orangepi@orangepi:~$ python3 hello_world.py

      Hello World!

  3. Ubuntu Focal默认没有安装Java的编译工具和运行环境

    1. 可以使用下面的命令安装openjdk-17

      orangepi@orangepi:~$ sudo apt install -y openjdk-17-jdk

    2. 安装完后可以查看下Java的版本

      orangepi@orangepi:~$ java --version

      openjdk 17.0.2 2022-01-18

      OpenJDK Runtime Environment (build 17.0.2+8-Ubuntu-120.04)

      OpenJDK 64-Bit Server VM (build 17.0.2+8-Ubuntu-120.04, mixed mode, sharing)

    3. 编写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!");

      }

      }

    4. 然后编译运行hello_world.java

      orangepi@orangepi:~$ javac hello_world.java

      orangepi@orangepi:~$ java hello_world

      Hello World!

Ubuntu Jammy系统

  1. Ubuntu Jammy默认安装有gcc编译工具链,可以直接在开发板的Linux系统中编译C语言的程序

    1. gcc的版本如下所示

      orangepi@orangepi:~$ gcc --version

      gcc (Ubuntu 11.3.0-1ubuntu1~22.04.1) 11.3.0

      Copyright (C) 2021 Free Software Foundation, Inc.

      This is free software; see the source for copying conditions. There is NO

      warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

    2. 编写C语言的hello_world.c程序

      orangepi@orangepi:~$ vim hello_world.c

      #include <stdio.h>


      int main(void)

      {

      printf("Hello World!\n");


      return 0;

      }

    3. 然后编译运行hello_world.c

      orangepi@orangepi:~$ gcc -o hello_world hello_world.c

      orangepi@orangepi:~$ ./hello_world

      Hello World!

  2. Ubuntu Jammy默认安装有Python3

    1. Python3具体版本如下所示

      orangepi@orangepi:~$ python3

      Python 3.10.6 (main, May 29 2023, 11:10:38) [GCC 11.3.0] on linux

      Type "help", "copyright", "credits" or "license" for more information.

      >>>

      使用Ctrl+D快捷键可退出python的交互模式。

    2. 编写Python语言的hello_world.py程序

      orangepi@orangepi:~$ vim hello_world.py

      print('Hello World!')

    3. 运行hello_world.py的结果如下所示

      orangepi@orangepi:~$ python3 hello_world.py

      Hello World!

  3. Ubuntu Jammy默认没有安装Java的编译工具和运行环境

    1. 可以使用下面的命令安装openjdk-18

      orangepi@orangepi:~$ sudo apt install -y openjdk-18-jdk

    2. 安装完后可以查看下Java的版本

      orangepi@orangepi:~$ java --version

      openjdk 18.0.2-ea 2022-07-19

      OpenJDK Runtime Environment (build 18.0.2-ea+9-Ubuntu-222.04)

      OpenJDK 64-Bit Server VM (build 18.0.2-ea+9-Ubuntu-222.04, mixed mode, sharing)

    3. 编写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!");

      }

      }

    4. 然后编译运行hello_world.java

      orangepi@orangepi:~$ javac hello_world.java

      orangepi@orangepi:~$ java hello_world

      Hello World!

上传文件到开发板Linux系统中的方法

在Ubuntu PC中上传文件到开发板Linux系统中的方法

使用scp命令上传文件的方法

  1. 使用scp命令可以在Ubuntu PC中上传文件到开发板的Linux系统中,具体命令如下所示

    1. file_path:需要替换为要上传文件的路径

    2. orangepi:为开发板linux系统的用户名,也可以替换成其它的,比如root

    3. 192.168.xx.xx: 为开发板的IP地址,请根据实际情况进行修改

    4. /home/orangepi: 开发板linux系统中的路径,也可以修改为其它的路径

      test@test:~$ scp file_path orangepi@192.168.xx.xx:/home/orangepi/

  2. 如果要上传文件夹,需要加上-r参数

    test@test:~$ scp -r dir_path orangepi@192.168.xx.xx:/home/orangepi/

  3. scp还有更多的用法,请使用下面的命令查看man手册

    test@test:~$ man scp

使用filezilla上传文件的方法

  1. 首先在Ubuntu PC中安装filezilla

    test@test:~$ sudo apt install -y filezilla

  2. 然后使用下面的命令打开filezilla

    test@test:~$ filezilla

  3. filezilla打开后的界面如下所示,此时右边远程站点下面显示的是空的

    Zero3-img279.png

  4. 连接开发板的方法如下图所示

    Zero3-img280.png

  1. 然后选择保存密码,再点击确定

    Zero3-img281.png

  2. 然后选择总是信任该主机,再点击确定

    Zero3-img282.png

  1. 连接成功后在filezilla软件的右边就可以看到开发板linux文件系统的目录结构了
  2. Zero3-img283.png

  1. 然后在filezilla软件的右边选择要上传到开发板中的路径,再在filezilla软件的左边选中Ubuntu PC中要上传的文件,再点击鼠标右键,再点击上传选项就会开始上传文件到开发板中了。
  2. Zero3-img284.png

  1. 上传完成后就可以去开发板linux系统中的对应路径中查看上传的文件了

  2. 上传文件夹的方法和上传文件的方法是一样的,这里就不再赘述了

在Windows PC中上传文件到开发板Linux系统中的方法

使用filezilla上传文件的方法

  1. 首先下载filezilla软件Windows版本的安装文件,下载链接如下所示

https://filezilla-project.org/download.php?type=client

Zero3-img285.png
Zero3-img286.png
  1. 下载的安装包如下所示,然后双击直接安装即可

    FileZilla_Server_1.5.1_win64-setup.exe

    安装过程中,下面的安装界面请选择Decline,然后再选择Next>

    Zero3-img287.png

  1. filezilla打开后的界面如下所示,此时右边远程站点下面显示的是空的

    Zero3-img288.png

  1. 连接开发板的方法如下图所示:

    Zero3-img289.png

  1. 然后选择保存密码,再点击确定

    Zero3-img290.png

  1. 然后选择总是信任该主机,再点击确定

    Zero3-img291.png

  1. 连接成功后在filezilla软件的右边就可以看到开发板linux文件系统的目录结构了

    Zero3-img292.png

  1. 然后在filezilla软件的右边选择要上传到开发板中的路径,再在filezilla软件的左边选中Windows PC中要上传的文件,再点击鼠标右键,再点击上传选项就会开始上传文件到开发板中了

    Zero3-img293.png

  1. 上传完成后就可以去开发板linux系统中的对应路径中查看上传的文件了

  2. 上传文件夹的方法和上传文件的方法是一样的,这里就不再赘述了

开关机logo使用说明

  1. 开关机logo默认只在桌面版的系统中才会显示

  2. /boot/orangepiEnv.txt中设置bootlogo变量为false可以关闭开关机logo

    orangepi@orangepi:~$ sudo vim /boot/orangepiEnv.txt

    verbosity=1

    bootlogo=false

  3. /boot/orangepiEnv.txt中设置bootlogo变量为true可以开启开关机logo

    orangepi@orangepi:~$ sudo vim /boot/orangepiEnv.txt

    verbosity=1

    bootlogo=true

  4. 开机logo图片在linux系统中的位置为

    /usr/share/plymouth/themes/orangepi/watermark.png

  5. 替换开机logo图片后需要运行下命令才能生效

    orangepi@orangepi:~$ sudo update-initramfs -u

关机和重启开发板的方法

  1. 在Linux系统运行的过程中,如果直接拔掉电源断电,可能会导致文件系统丢失某些数据,建议断电前先使用poweroff命令关闭开发板的Linux系统,然后再拔掉电源

    orangepi@orangepi:~$ sudo poweroff

    注意,关闭开发板后需要重新拔插电源才能开机。

  2. 使用reboot命令即可重启开发板中的Linux系统

    orangepi@orangepi:~$ sudo reboot

Linux SDK——orangepi-build使用说明

编译系统需求

Linux SDK,即orangepi-build,只支持在安装有Ubuntu 22.04的X64电脑上运行,所以下载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,另外请不要在开发板的Linux系统中使用orangepi-build。Ubuntu 22.04 amd64版本的安装镜像下载地址为:

https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/22.04/ubuntu-22.04-desktop-amd64.iso

在电脑中或者虚拟机中安装完Ubuntu 22.04后,请先设置Ubuntu 22.04的软件源为清华源(或者其它你觉得速度快的国内源),不然后面安装软件的时候很容易由于网络原因而出错。替换清华源的步骤如下所示:

  1. 替换清华源的方法参考这个网页的说明即可。

    https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/

  1. 注意Ubuntu版本需要切换到22.04。

    Zero3-img294.png

  2. 需要替换的/etc/apt/sources.list文件的内容为:

    test@test:~$ sudo mv /etc/apt/sources.list cat /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

  3. 替换完后需要更新下包信息,并确保没有报错。

    test@test:~$ sudo apt-get update

  4. 另外,由于内核和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

注意,使用H618 Soc的开发板是需要下载orangepi-build的next分支源码的,上面的git clone命令需要指定orangepi-build源码的分支为next。

Zero3-img295.png

通过git clone命令下载orangepi-build的代码是不需要输入github账号的用户名和密码的(下载本手册中的其他代码也是一样的),如果如输入git clone命令后Ubuntu PC提示需要输入github账号的用户名和密码,一般都是git clone后面的orangepi-build仓库的地址输入错误了,请仔细检查命令拼写是否有错误,而不是以为我们这里忘了提供github账号的用户名和密码。

H618系列开发板当前使用的u-boot和linux内核版本如下所示:

分支 u-boot版本 linux内核版本
current u-boot v2018.05 linux5.4
next u-boot v2021.07 linux6.1

这里所说的分支和orangepi-build源代码的分支不是同一个东西,请不要搞混了。此分支主要是用来区分不同内核源码版本的。

目前全志提供的linux5.4 bsp内核我们定义为current分支。最新的linux6.1 LTS内核定义为next分支。

orangepi-build下载完后会包含下面的文件和文件夹:

  1. build.sh: 编译启动脚本

  2. external: 包含编译镜像需要用的配置文件、特定的脚本以及部分程序的源码等

  3. LICENSE: GPL 2许可证文件

  4. README.md: orangepi-build说明文件

  5. 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时,当其发现本地没有这些东西,会自动去相应的地方下载的。

下载交叉编译工具链

orangepi-build第一次运行的时候会自动下载交叉编译工具链放在toolchains文件夹中,每次运行orangepi-build的build.sh脚本后,都会检查toolchains中的交叉编译工具链是否都存在,如果不存在则会重新开始下载,如果存在则直接使用,不会重复下载。

Zero3-img296.png

交叉编译工具链在中国境内的镜像网址为清华大学的开源软件镜像站:

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-linaro-4.9.4-2017.01-x86_64_aarch64-linux-gnu

gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabi

gcc-arm-11.2-2022.02-x86_64-arm-none-linux-gnueabihf

gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi

gcc-linaro-aarch64-none-elf-4.8-2013.11_linux

gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu

gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabihf

gcc-linaro-arm-linux-gnueabihf-4.8-2014.04_linux

gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabihf

gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu

gcc-linaro-arm-none-eabi-4.8-2014.04_linux

编译H618 Linux内核源码使用的交叉编译工具链为:

  1. linux5.4

    gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu

  2. linux6.1

    gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu

编译H618 u-boot源码使用的交叉编译工具链为:

  1. v2018.05

    gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabi

  2. v2021.07

    gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu

orangepi-build完整目录结构说明

  1. orangepi-build仓库下载完后并不包含linux内核、u-boot的源码以及交叉编译工具链,linux内核和u-boot的源码存放在独立的git仓库中

    1. linux内核源码存放的git仓库如下,注意切换linux-orangepi仓库的分支为

      1. a) Linux5.4

        https://github.com/orangepi-xunlong/linux-orangepi/tree/orange-pi-5.4-sun50iw9

      2. b) Linux6.1

        https://github.com/orangepi-xunlong/linux-orangepi/tree/orange-pi-6.1-sun50iw9

    2. u-boot源码存放的git仓库如下,注意切换u-boot-orangepi仓库的分支为

      1. a) v2018.05

        https://github.com/orangepi-xunlong/u-boot-orangepi/tree/v2018.05-h618

      2. b) v2021.07

        https://github.com/orangepi-xunlong/u-boot-orangepi/tree/v2021.07-sunxi

  1. orangepi-build第一次运行的时候会去下载交叉编译工具链、u-boot和linux内核源码,成功编译完一次linux镜像后在orangepi-build中可以看到的文件和文件夹有

    1. build.sh: 编译启动脚本

    2. external: 包含编译镜像需要用的配置文件、特定功能的脚本以及部分程序的源码,编译镜像过程中缓存的rootfs压缩包也存放在external中

    3. kernel: 存放linux内核的源码

    4. LICENSE: GPL 2许可证文件

    5. README.md: orangepi-build说明文件

    6. output: 存放编译生成的u-boot、linux等deb包、编译日志以及编译生成的镜像等文件

    7. scripts: 编译linux镜像的通用脚本

    8. toolchains: 存放交叉编译工具链

    9. u-boot: 存放u-boot的源码

    10. userpatches: 存放编译脚本需要用到的配置文件

      test@test:~/orangepi-build$ ls

      build.sh    external    kernel    LICENSE    output    README.md    scripts    toolchains    u-boot    userpatches

编译u-boot

  1. 运行build.sh脚本,记得加sudo权限

    test@test:~/orangepi-build$ sudo ./build.sh

  2. 选择U-boot package,然后回车

    Zero3-img297.png

  3. 接着选择开发板的型号

    Zero3-img298.png

  4. 然后选择u-boot的分支类型

    1. current分支会编译linux5.4镜像需要使用的u-boot v2018.05版本的代码

    2. next分支会编译linux6.1镜像需要使用的u-boot v2021.07版本的代码

      Zero3-img299.png

  5. 如果选择的next分支还会提示需要选择内存的大小,current分支不需要选择

    1. 如果购买的开发板为1.5GB内存大小的,请选择第一项

    2. 如果购买的开发板为1GB或2GB或4GB内存大小的,请选择第二项

      Zero3-img299-1.png

  6. 然后就会开始编译u-boot,编译next分支时提示的部分信息说明如下所示:

    1. u-boot源码的版本

      [ o.k. ] Compiling u-boot [ v2021.07 ]

    2. 交叉编译工具链的版本

      [ o.k. ] Compiler version [ aarch64-linux-gnu-gcc 11 ]

    3. 编译生成的u-boot deb包的路径

      [ o.k. ] Target directory [ orangepi-build/output/debs/u-boot ]

    4. 编译生成的u-boot deb包的包名

      [ o.k. ] File name [ linux-u-boot-next-orangepizero3_x.x.x_arm64.deb ]

    5. 编译使用的时间

      [ o.k. ] Runtime [ 1 min ]

    6. 重复编译u-boot的命令,使用下面的命令无需通过图形界面选择,可以直接开始编译u-boot

      [ o.k. ] Repeat Build Options [ sudo ./build.sh BOARD=orangepizero3 BRANCH=next BUILD_OPT=u-boot ]

  7. 查看编译生成的u-boot deb包

    test@test:~/orangepi-build$ ls output/debs/u-boot/

    linux-u-boot-next-orangepizero3_x.x.x_arm64.deb

  8. orangepi-bulid编译系统编译u-boot源码时首先会将u-boot的源码和github服务器的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"

    ......

  9. 调试u-boot代码时,可以使用下面的方法来更新linux镜像中的u-boot进行测试

    1. 首先将编译好的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-next-orangepizero3_x.x.x_arm64.deb root@192.168.1.xxx:/root

    2. 再安装刚才上传的新的u-boot的deb包

      orangepi@orangepi:~$ sudo dpkg -i linux-u-boot-next-orangepizero3_x.x.x_arm64.deb

    3. 然后运行 nand-sata-install脚本

      orangepi@orangepi:~$ sudo nand-sata-install

    4. 然后选择5 Install/Update the bootloader on SD/eMMC

      Zero3-img300.png

    5. 按下回车键后首先会弹出一个Warning

      Zero3-img301.png

    6. 再按下回车键就会开始更新u-boot,更新完后会显示下面的信息

      Zero3-img302.png

    7. 然后就可以重启开发板来测试u-boot的修改是否生效了

编译linux内核

  1. 运行build.sh脚本,记得加sudo权限

    test@test:~/orangepi-build$ sudo ./build.sh

  2. 选择Kernel package,然后回车

    Zero3-img303.png

  3. 然后会提示是否需要显示内核配置界面,如果不需要修改内核配置,则选择第一个即可,如果需要修改内核配置,则选择第二个

    Zero3-img304.png

  4. 接着选择开发板的型号

    Zero3-img298.png

  5. 然后选择内核源码的分支类型

    1. current分支会编译linux5.4内核源码

    2. next分支会编译linux6.1内核源码

      Zero3-img299.png

  6. 如果第3)步选择了需要显示内核配置菜单(第二个选项),则会弹出通过make menuconfig打开的内核配置的界面,此时可以直接修改内核的配置,修改完后再保存退出即可,退出后会开始编译内核源码。

    Zero3-img305.png

  1. 如果不需要修改内核的配置选项,在运行build.sh脚本时,传入KERNEL_CONFIGURE=no就可临时屏蔽弹出内核的配置界面了

    test@test:~/orangepi-build$ sudo ./build.sh KERNEL_CONFIGURE=no

  2. 也可以设置orangepi-build/userpatches/config-default.conf配置文件中的KERNEL_CONFIGURE=no,这样可以永久禁用这个功能

  3. 编译内核的时候如果提示下面的错误,这是由于Ubuntu > PC的终端界面太小,导致make menuconfig的界面无法显示,请把Ubuntu > PC的终端调到最大,然后重新运行build.sh脚本

    Zero3-img306.png

  1. 编译next分支内核源码时提示的部分信息说明如下:

    1. linux内核源码的版本

      [ o.k. ] Compiling current kernel [ 6.1.31 ]

    2. 使用的交叉编译工具链的版本

      [ o.k. ] Compiler version [ aarch64-linux-gnu-gcc 11 ]

    3. 内核默认使用的配置文件以及它存放的路径如下所示

      [ o.k. ] Using kernel config file [ orangepi-build/external/config/kernel/linux-6.1-sun50iw9-next.config ]

    4. 编译生成的内核相关的deb包的路径

      [ o.k. ] Target directory [ output/debs/ ]

    5. 编译生成的内核镜像deb包的包名

      [ o.k. ] File name [ linux-image-next-sun50iw9_x.x.x_arm64.deb ]

    6. 编译使用的时间

      [ o.k. ] Runtime [ 10 min ]

    7. 最后会显示重复编译上一次选择的内核的编译命令,使用下面的命令无需通过图形界面选择,可以直接开始编译内核源码

      [ o.k. ] Repeat Build Options [ sudo ./build.sh BOARD=orangepizero3 BRANCH=next BUILD_OPT=kernel KERNEL_CONFIGURE=no ]

  2. 查看编译生成的内核相关的deb包

    1. linux-dtb-next-sun50iw9_x.x.x_arm64.deb包含有内核使用的dtb文件

    2. linux-headers-next-sun50iw9_x.x.x_arm64.deb包含内核头文件

    3. linux-image-next-sun50iw9_x.x.x_arm64.deb包含内核镜像和内核模块

      test@test:~/orangepi-build$ ls output/debs/linux-*

      output/debs/linux-dtb-next-sun50iw9_x.x.x_arm64.deb

      output/debs/linux-headers-next-sun50iw9_x.x.x_arm64.deb

      output/debs/linux-image-next-sun50iw9_x.x.x_arm64.deb

  3. orangepi-bulid编译系统编译linux内核源码时首先会将linux内核源码和github服务器的linux内核源码进行同步,所以如果想修改linux内核的源码,首先需要关闭源码的更新功能(需要完整编译过一次linux内核源码后才能关闭这个功能,否则会提示找不到linux内核的源码),否则所作的修改都会被还原,方法如下:

    设置userpatches/config-default.conf中的IGNORE_UPDATES变量为”yes”

    test@test:~/orangepi-build$ vim userpatches/config-default.conf

    IGNORE_UPDATES="yes"

  4. 如果对内核做了修改,可以使用下面的方法来更新开发板linux系统的内核和内核模块

    1. 将编译好的linux内核的deb包上传到开发板的linux系统中

      test@test:~/orangepi-build$ cd output/debs

      test@test:~/orangepi-build/output/debs$ scp \

      linux-image-next-sun50iw9_x.x.x_arm64.deb root@192.168.1.xxx:/root

    2. 再安装刚才上传的新的linux内核的deb包

      orangepi@orangepi:~$ sudo dpkg -i linux-image-next-sun50iw9_x.x.x_arm64.deb

    3. 然后重启开发板,再查看内核相关的修改是否已生效

      orangepi@orangepi:~$ sudo reboot

编译rootfs

  1. 运行build.sh脚本,记得加sudo权限

    test@test:~/orangepi-build$ sudo ./build.sh

  2. 选择Rootfs and all deb packages,然后回车

  3. Zero3-img307.png

  1. 接着选择开发板的型号

    Zero3-img298.png

  2. 然后选择内核源码的分支类型,不同版本的内核源码维护的rootfs类型有区别

    1. current分支可以看到debian11、ubuntu20.04、ubuntu22.04三个选项

    2. next分支可以看到debian11、debian12、ubuntu22.04三个选项

      Zero3-img299.png

  3. 然后选择rootfs的类型

    Zero3-img308.png

  4. 然后选择镜像的类型

    1. Image with console interface (server)表示服务器版的镜像,体积比较小

    2. Image with desktop environment表示带桌面的镜像,体积比较大

      Zero3-img309.png

  5. 如果是编译服务器版的镜像,还可以选择编译Standard版本或者Minimal版本,Minimal版本预装的软件会比Standard版本少很多(没特殊需求请不要选择Minimal版本,因为很多东西默认没有预装,部分功能可能用不了

    Zero3-img310.png

  6. 如果是编译桌面版本的镜像还需要选择桌面环境的类型,目前只维护XFCE,所以请选择XFCE类型的桌面

    Zero3-img311.png

    Zero3-img312.png

    然后可以选择需要安装的额外的软件包。这里请按下回车键直接跳过。

    Zero3-img313.png

  7. 然后就会开始编译rootfs,编译时提示的部分信息说明如下

    1. rootfs的类型

      [ o.k. ] local not found [ Creating new rootfs cache for bullseye ]

    2. 编译生成的rootfs压缩包的存放路径

      [ o.k. ] Target directory [ orangepi-build/external/cache/rootfs ]

    3. 编译生成的rootfs压缩包的名字

      [ o.k. ] File name [ bullseye-xfce-arm64.5250ec7002de9e81a41de169f1f89721.tar.lz4 ]

  8. 查看编译生成的rootfs压缩包

    1. bullseye-xfce-arm64.5250ec7002de9e81a41de169f1f89721.tar.lz4是rootfs的压缩包,名字各字段的含义为

      1. a) bullseye表示rootfs的linux发行版的类型

      2. b) xfce表示rootfs为桌面版的类型,如果为cli则表示服务器版类型

      3. c) arm64表示rootfs的架构类型

      4. d) 25250ec7002de9e81a41de169f1f89721是由rootfs安装的所有软件包的包名生成的MD5哈希值,只要没有修改rootfs安装的软件包的列表,那么这个值就不会变,编译脚本会通过这个MD5哈希值来判断是否需要重新编译rootfs

    2. bullseye-xfce-arm64.5250ec7002de9e81a41de169f1f89721.tar.lz4.list列出了rootfs安装的所有软件包的包名

      test@test:~/orangepi-build$ ls external/cache/rootfs/

      bullseye-xfce-arm64.5250ec7002de9e81a41de169f1f89721.tar.lz4

      bullseye-xfce-arm64.5250ec7002de9e81a41de169f1f89721.tar.lz4.current

      bullseye-xfce-arm64.5250ec7002de9e81a41de169f1f89721.tar.lz4.list

  9. 如果需要的rootfs在external/cache/rootfs下已经存在,那么再次编译rootfs就会直接跳过编译过程,不会重新开始编译,编译镜像的时候也会去external/cache/rootfs下查找是否已经有缓存可用的rootfs,如果有就直接使用,这样可以节省大量的下载编译时间

编译linux镜像

  1. 运行build.sh脚本,记得加sudo权限

    test@test:~/orangepi-build$ sudo ./build.sh

  2. 选择Full OS image for flashing,然后回车

  3. Zero3-img314.png

  1. 然后选择开发板的型号

    Zero3-img298.png

  2. 然后选择内核源码的分支类型,不同版本的内核源码维护的rootfs类型有区别

    1. current分支可以看到debian11、ubuntu20.04、ubuntu22.04三个选项

    2. next分支可以看到debian11、debian12、ubuntu22.04三个选项

      Zero3-img299.png

  3. 如果选择的next分支还会提示需要选择内存的大小,current分支不需要选择

    1. 如果购买的开发板为1.5GB内存大小的,请选择第一项

    2. 如果购买的开发板为1GB或2GB或4GB内存大小的,请选择第二项

      Zero3-img299-1.png

  4. 然后选择rootfs的类型

    Zero3-img308.png

  5. 然后选择镜像的类型

    1. Image with console interface (server)表示服务器版的镜像,体积比较小

    2. Image with desktop environment表示带桌面的镜像,体积比较大

      Zero3-img309.png

  6. 如果是编译服务器版的镜像,还可以选择编译Standard版本或者Minimal版本,Minimal版本预装的软件会比Standard版本少很多(没特殊需求请不要选择Minimal版本,因为很多东西默认没有预装,部分功能可能用不了

    Zero3-img310.png

  1. 如果是编译桌面版本的镜像还需要选择桌面环境的类型,目前只维护XFCE,所以请选择XFCE类型的桌面

    Zero3-img311.png

    Zero3-img312.png

    然后可以选择需要安装的额外的软件包。这里请按下回车键直接跳过。

    Zero3-img313.png

  1. 然后就会开始编译linux镜像,编译的大致流程如下

    1. 初始化Ubuntu PC的编译环境,安装编译过程需要的软件包

    2. 下载u-boot和linux内核的源码(如果已经缓存,则只更新代码)

    3. 编译u-boot源码,生成u-boot的deb包

    4. 编译linux源码,生成linux相关的deb包

    5. 制作linux firmware的deb包

    6. 制作orangepi-config工具的deb包

    7. 制作板级支持的deb包

    8. 如果是编译desktop版镜像,还会制作desktop相关的deb包

    9. 检查rootfs是否已经缓存,如果没有缓存,则重新制作rootfs,如果已经缓存,则直接解压使用

    10. 安装前面生成的deb包到rootfs中

    11. 对不同的开发板和不同类型镜像做一些特定的设置,如预装额外的软件包,修改系统配置等

    12. 然后制作镜像文件,并格式化分区,默认类型为ext4

    13. 再将配置好的rootfs拷贝到镜像的分区中

    14. 然后更新initramfs

    15. 最后将u-boot的bin文件通过dd命令写入到镜像中

  2. 编译完镜像后会提示下面的信息

    1. 编译生成的镜像的存放路径

      [ o.k. ] Done building [ output/images/orangepizero3_x.x.x_debian_bullseye_linux6.1.xx_xfce_desktop/orangepizero3_x.x.x_debian_bullseye_linux6.1.xx_xfce_desktop.img ]

    2. 编译使用的时间

    3. [ o.k. ] Runtime [ 19 min ]

    4. 重复编译镜像的命令,使用下面的命令无需通过图形界面选择,可以直接开始编译镜像

      [ o.k. ] Repeat Build Options [ sudo ./build.sh BOARD=orangepizero3 BRANCH=next BUILD_OPT=image RELEASE=bullseye BUILD_MINIMAL=no BUILD_DESKTOP=no KERNEL_CONFIGURE=yes ]

Android 12 TV系统使用说明

已支持的Android版本

Android版本 内核版本
Android 12 TV版 linux5.4

Android 12 TV功能适配情况

功能 Android12
HDMI视频 OK
HDMI音频 OK
USB2.0 x 3 OK
TF卡启动 OK
网卡 OK
红外 OK
WIFI OK
WIFI hotsport OK
蓝牙 OK
BLE蓝牙 OK
耳机音频 OK
TV-OUT OK
USB摄像头 OK
LED灯 OK
温度传感器 OK
Mali GPU OK
视频编解码 OK

板载LED灯显示说明

绿灯 红灯
u-boot启动阶段
内核启动到进入系统

Android返回上一级界面的方法

  1. 我们一般都是使用鼠标和键盘来控制开发板的安卓系统,当进入某些界面,需要返回上一级界面或者桌面时,只能通过鼠标右键来返回,键盘是无法返回的

  2. 如果有购买开发板配套的红外遥控(其他遥控不行)和扩展板,将扩展板插入开发板后,还可以通过遥控中的返回键来返回上一级菜单,返回键的位置如下图所示

    Zero3-img315.png

ADB的使用方法

使用网络连接adb调试

使用网络adb无需USB Typc C接口的数据线来连接电脑和开发板,而是通过网络来通信,所以首先请确保开发板的有线或者无线网络已经连接好了,然后获取开发板的IP地址,后面要用到。

  1. 确保Android系统的service.adb.tcp.port设置为5555端口号

    apollo-p2:/ # getprop | grep "adb.tcp"

    [service.adb.tcp.port]: [5555]

  2. 如果service.adb.tcp.port没有设置,可以在串口中使用下面的命令设置网络adb的端口号

    apollo-p2:/ # setprop service.adb.tcp.port 5555

    apollo-p2:/ # stop adbd

    apollo-p2:/ # start adbd

  1. 在Ubuntu PC上安装adb工具

    test@test:~$ sudo apt-get update

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

  2. 然后在Ubuntu PC上连接网络adb

    test@test:~$ adb connect 192.168.1.xxx:5555 (需要修改为开发板的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

  3. 然后在Ubuntu PC上通过adb shell就可以登录android系统

    test@test:~$ adb shell

    apollo-p2:/ #

使用数据线连接adb调试

  1. 准备一根USB Typc C接口的数据线, USB接口一端插入电脑的USB接口中,USB Type C接口一端插入开发板的电源接口中。在这种情况下是由电脑的USB接口给开发板供电,所以请确保电脑的USB接口能提供最够的功率驱动开发板

    Zero3-img15.png

  2. 在Ubuntu PC上安装adb工具

    test@test:~$ sudo apt-get update

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

  3. 查看识别到ADB设备

    test@test:~$ adb devices

    List of devices attached

    4c00146473c28651dd0 device

  4. 然后在Ubuntu PC上通过adb shell就可以登录android系统

    test@test:~$ adb shell

    apollo-p2:/ $

查看设置HDMI显示分辨率的方法

  1. 首先进入Settings

    Zero3-img316.png

  2. 然后选择Device Preferences

    Zero3-img317.png

  3. 然后选择Display & Sound

    Zero3-img318.png

  4. 然后选择Advanced display settings

    Zero3-img319.png

  5. 然后选择HDMI output mode

    Zero3-img320.png

  6. 然后就能看到显示器支持的分辨率列表了。此时点击对应的选项就会切换到对应的分辨率。请注意,不同显示器支持的分辨率可能是不同的,如果接到电视上,一般会看到比下图更多的分辨率选项。

    Zero3-img321.png

  7. 开发板的HDMI输出是支持4K显示的,当接到4K电视时就可以看到4K分辨率的选项

    Zero3-img322.png

HDMI转VGA显示测试

  1. 首先需要准备下面的配件

    1. HDMI转VGA转换器

      Zero3-img146.png

    2. 一根VGA线和一根Micro HDMI公转HDMI母转接线

      Zero3-img147.png Zero3-img148.png

    3. 一个支持VGA接口的显示器或者电视

  2. HDMI转VGA显示测试如下所示

    Zero3-img323.png

    使用HDMI转VGA显示时,开发板以及开发板的Android系统是不需要做任何设置的,只需要开发板Micro HDMI接口能正常显示就可以了。所以如果测试有问题,请检查HDMI转VGA转换器、VGA线以及显示器是否有问题。

WI-FI的连接方法

  1. 首先选择Settings

    Zero3-img316.png

  2. 然后选择Network & Internet

    Zero3-img324.png

  3. 然后打开WI-FI

    Zero3-img325.png

  4. 打开WI-FI后在Available networks下面就可以看到搜索到的信号

    Zero3-img326.png

  5. 选择想连接的WI-FI后会弹出下图所示的密码输入界面

    Zero3-img327.png

  6. 然后使用键盘输入WI-FI对应的密码,再使用鼠标点击虚拟键盘中的回车按钮就会开始连接WI-FI了

    Zero3-img328.png

  7. WI-FI连接成功后的显示如下图所示

    Zero3-img329.png

WI-FI hotspot的使用方法

  1. 首先请确保以太网口已连接网线,并且能正常上网

  2. 然后选择Settings

    Zero3-img316.png

  3. 然后选择Network & Internet

    Zero3-img324.png

  4. 然后选择WIFI hotspot

    Zero3-img330.png

  5. 然后打开Hotspot Enable,下图中还可以看到生成的热点的名字和密码,记住它们,在连接热点的时候要用到(如果需要修改热点的名字和密码,需要先关闭Hotspot Enable,然后才能修改)

    Zero3-img331.png

  6. 此时可以拿出你的手机,如果一切正常,在手机搜索到的WI-FI列表中就能找到上图Hotspot name下面显示的同名(这里为AndroidAP_7132)的WIFI热点了。然后可以点击AndroidAP_7132连接热点,密码在上图的Hotspot password下面可以看到

    Zero3-img332.png

  7. 连接成功后显示如下图所示(不同手机界面会有区别,具体界面以你手机显示的为准)。此时就可以在手机上打开一个网页看下能否上网了,如果能正常打开网页,说明开发板的WI-FI Hotspot能正常使用

    Zero3-img333.png

查看以太网口IP地址的方法

  1. 首先请确保开发板的千兆网口连接到了路由器或者交换机

  2. 然后打开Settings

    Zero3-img334.png

  3. 然后选择Network & Internet

    Zero3-img335.png

  4. 然后在下图所示的位置就能看到开发板有线网口的IP地址了

    Zero3-img336.png

蓝牙的连接方法

  1. 首先选择Settings

    Zero3-img316.png

  2. 然后选择Bluetooth

    Zero3-img337.png

  3. 然后打开Bluetooth Enable

    Zero3-img338.png

  4. 然后点击Pair new device开始扫描周围的蓝牙设备

    Zero3-img339.png

  5. 搜索到的蓝牙设备会在Available devices下面显示出来

    Zero3-img340.png

  6. 然后点击想要连接的蓝牙设备就可以开始配对了,当弹出下面的界面时,请使用鼠标选择Pair选项

    Zero3-img341.png

  7. 这里测试的是开发板和安卓手机蓝牙的配置过程,此时在手机上会弹出下面的确认界面,在手机上也点击配对按钮后就会开始配对过程

    Zero3-img342.png

  8. 配对完成后,再打开Paired devices下面就可以看到已配对的蓝牙设备

    Zero3-img343.png

  9. 此时可以使用手机蓝牙给开发板发送一张图片,发送后,在开发板的安卓系统中可以看到下面的确认界面,然后点击Accept就可以开始接收手机发过来的图片了

    Zero3-img344.png

  10. 开发板Android系统蓝牙接收到的图片可以打开Received files中查看

    Zero3-img345.png

USB摄像头使用方法

  1. 首先在开发板的USB接口中插入USB(UVC协议)摄像头

  2. USB摄像头如果识别正常,在/dev下会生成相应的video设备节点

    console:/ # ls /dev/video0

    /dev/video0

  3. 然后确保Ubuntu PC和开发板的adb连接正常,adb的使用方法请参考ADB的使用方法一小节的说明

  4. 在开发板资料下载页面的官方工具中下载USB摄像头测试APP

    Zero3-img346.png

    Zero3-img347.png

  5. 然后使用adb命令安装USB摄像头测试APP到Android系统中,当然也可以使用U盘拷贝的方式进行安装

    test@test:~$ adb install usbcamera.apk

  6. 安装完后在Android的桌面可以看到USB摄像头的启动图标

    Zero3-img348.png

  7. 然后双击打开USB摄像头APP就可以看到USB摄像头的输出视频了

Android系统ROOT说明

Orange Pi发布的Android系统已经ROOT,可以使用下面的方法来测试。

  1. 在开发板资料下载页面的官方工具中下载rootcheck.apk

    Zero3-img346.png

    Zero3-img349.png

  2. 然后确保Ubuntu PC和开发板的adb连接正常,adb的使用方法请参考ADB的使用方法一小节的说明

  3. 然后使用adb命令安装rootcheck.apk到Android系统中,当然也可以使用U盘拷贝的方式进行安装

    test@test:~$ adb install rootcheck.apk

  4. 安装完后在Android的桌面可以看到ROOT测试工具的启动图标

    Zero3-img350.png

  5. 第一次打开ROOT测试工具后的显示界面如下图所示

    Zero3-img351.png

  6. 然后就可以点击CHECK NOW开始Android系统的ROOT状态的检查,检查完后的显示如下所示,可以看到Android系统已取得ROOT权限

    Zero3-img352.png

使用MiracastReceiver将手机屏幕投屏到开发板的方法

  1. 首先请确保开发板和手机都连接了同一个WIFI热点,开发板连接WIFI的方法请参考WI-FI的连接方法一小节的说明

  2. 然后打开开发板安卓系统中的MiracastReceiver应用

    Zero3-img353.png

  3. MiracastReceiver打开后的界面如下所示

    Zero3-img354.png

  4. 然后在手机设置中找到投屏功能,这里以小米12S Pro手机为例,其他品牌的手机请自行研究下,如下图所示,点击红色方框位置的按钮即可打开手机的投屏功能

    Zero3-img355.png

  5. 等待一段时间后在手机上就能看到搜索到的可连接的设备,然后我们选择开发板对应的设备连接即可

    Zero3-img356.png

  6. 然后在开发板的MiracastReceiver应用界面会弹出下图所示的选择框,这里我们选择Accept即可

    Zero3-img357.png

  7. 然后就能在开发板连接的HDMI屏幕上看到手机屏幕的内容了

    Zero3-img358-1.png

26pin 接口 GPIO、UART、SPI 测试

26pin的GPIO口测试方法

  1. 首先在桌面中打开wiringOP APP

    Zero3-img359.png

  2. 然后点击GPIO_TEST按钮打开GPIO测试界面

    Zero3-img360.png

  3. GPIO测试界面如下图所示,左边的两排CheckBox按钮跟26pin引脚(左下角的PC1/PI16/PI6/PH10是13pin引脚中的GPIO口)是一一对应的关系。当勾选CheckBox按钮时,对应的GPIO引脚会被设置为OUT模式,引脚电平设置为高电平;当取消勾选时,GPIO引脚电平设置为低电平;当点击右边的GPIO READALL按钮时,可以获取到wPi号、GPIO模式、引脚电平等信息。

    Zero3-img361.png

  4. 然后点击GPIO READALL按钮,输出信息如下图所示:

    Zero3-img362.png

  5. 开发板26pin中总共有17个GPIO口可以使用(如果加上13pin中的4个GPIO口,那么总共就是有21个),下面以7号引脚——对应GPIO为PC9 ——对应wPi序号为2——为例演示如何设置GPIO口的高低电平。首先点击7号引脚对应的CheckBox按钮,当按钮为选中状态时,7号引脚会设置为高电平,设置完后可以使用万用表测量引脚的电压的数值,如果为3.3v,说明设置高电平成功

    Zero3-img363.png

  6. 然后点击GPIO READALL按钮,可以看到当前的7号引脚模式为OUT,引脚电平为高电平

    Zero3-img364.png

  7. 再次点击下图的CheckBox按钮取消勾选状态,7号引脚会设置为低电平,设置完后可以使用万用表测量引脚的电压的数值,如果为0v,说明设置低电平成功

    Zero3-img365.png

  8. 然后点击GPIO READALL按钮,可以看到当前的7号引脚模式为OUT,引脚电平为低电平

    Zero3-img366.png

26pin的UART测试方法

  1. Android中默认打开了UART5,对应的设备节点为/dev/ttyAS5

    apollo-p2:/ # ls /dev/ttyAS5

    /dev/ttyAS5

  2. 首先在桌面中打开wiringOP APP

    Zero3-img359.png

  3. 然后点击UART_TEST按钮打开UART测试界面

    Zero3-img367.png

  4. wiringOP的串口测试界面如下图所示

  5. Zero3-img368.png

  1. 然后在选择框中选择/dev/ttyAS5节点

    Zero3-img369.png

  2. 再在编辑框中输入想要设置的波特率,然后点击OPEN按钮打开/dev/ttyAS5节点,打开成功后,OPEN按钮变为不可选中状态,CLOSE按钮和SEND按钮变为可选中状态

  3. Zero3-img370.png

  1. 然后使用杜邦线短接uart5的rx和tx引脚
  2. uart5
    tx引脚 对应26pin的8号引脚
    rx引脚 对应26pin的10号引脚
  1. 然后可以在下面的发送编辑框中输入一段字符,点击SEND按钮开始发送
  2. Zero3-img371.png

  1. 如果一切正常,接收框内会显示已接收到的字符串
  2. Zero3-img372.png

26pin的SPI测试方法

  1. 26pin中可以用的SPI为SPI1,对应的设备节点为/dev/spidev1.1

    Zero3-img359.png

  2. 这里演示下通过w25q64模块来测试SPI1接口,首先在SPI1接口接入w25q64模块

    如果没有 w25q64 模块也没关系,因为开发板上有一个SPIFlash接在了SPI0上,在安卓中SPI0的配置默认也打开了,所以我们也可以直接使用板载的SPIFlash测试。

  1. 然后在桌面中打开wiringOP APP

  2. 然后点击SPI_TEST按钮打开SPI的测试界面

    Zero3-img373.png

  3. 然后在左上角选择spi的设备节点,如果直接测试板载的SPIFlash,那么保持默认的/dev/spidev0.0即可,如果在26pin的spi1上接了w25q64模块,那么就请选择/dev/spidev1.1

    Zero3-img374.png

  4. 然后点击OPEN按钮初始化SPI

  5. Zero3-img375.png

  1. 然后填充需要发送的字节,比如读取板载SPIFlash的ID信息,在data[0]中填入地址0x9f,然后点击TRANSFER按钮

    Zero3-img376.png

  2. 最后APP会显示读取到的板载SPI Flash的ID信息

  3. Zero3-img377-1.png

  1. 如果是读取接在26pin SPI1上的w25q64模块,那么读取到的ID信息如下图所示

    Zero3-img378.png

  2. w25q64模块的MANUFACTURER ID为EFh,Device ID为4017h,跟上面读取到的值是对应的(h代表是16进制)

    Zero3-img379.png

26pin的I2C测试方法

  1. Android中默认打开了26pin中的i2c3,对应的设备节点为/dev/i2c-3

    apollo-p2:/ # ls /dev/i2c-3

    /dev/i2c-3

  2. 首先在桌面中打开wiringOP APP

    Zero3-img359.png

  3. 然后点击I2C_TEST按钮打开i2c的测试界面

    Zero3-img380.png

  4. wiringOP的i2c测试界面如下图所示,可以看到默认使用的i2c为/dev/i2c-3,所以我们无需重新选择了

  5. Zero3-img381.png

  1. 然后在26pin的i2c3引脚上接一个i2c设备,这里以ds1307 rtc模块为例

    Zero3-img186.png

  2. RTC模块的引脚 开发板26pin对应的引脚
    5V 2号引脚
    GND 6号引脚
    SDA 3号引脚
    SCL 5号引脚
  1. ds1307 rtc模块的i2c地址为0x68,接好线后,我们可以在串口命令行中使用i2cdetect -y 3命令查看下是否能扫描到ds1307 rtc模块的i2c地址。如下图所示,如果能看到0x68这个地址,说明ds1307 rtc模块接线正确。

    apollo-p2:/ # i2cdetect -y 3

    Zero3-img382.png

  2. 然后在wiringOP中设置i2c的地址为0x68,再点击OPEN按钮打开i2c3

    Zero3-img383.png

  3. 点击OPEN按钮打开i2c3后的显示如下所示:

    Zero3-img384.png

  4. 然后我们测试下往rtc模块的寄存器中写入一个值,比如往0x1c地址写入0x55

    1. 我们首先设置需要写入的寄存器的地址为0x1c

      Zero3-img385.png

    2. 然后设置需要写入的值为0x55

      Zero3-img386.png

    3. 然后点击WRITE BYTE按钮执行写入的动作

      Zero3-img387.png

  5. 然后点击READ BYTE按钮读取下0x1c寄存器的值,如果显示为0x55,就说明i2c读写测试通过

    Zero3-img388.png

附录

用户手册更新历史

版本 日期 更新说明
v1.0 2023-07-10 初始版本

镜像更新历史

日期 更新说明
2023-07-10 Orangepizero3_1.0.0_ubuntu_jammy_server_linux5.4.125.7z

Orangepizero3_1.0.0_debian_bullseye_server_linux5.4.125.7z

Orangepizero3_1.0.0_ubuntu_focal_desktop_xfce_linux5.4.125.7z

Orangepizero3_1.0.0_ubuntu_jammy_desktop_xfce_linux5.4.125.7z

Orangepizero3_1.0.0_debian_bullseye_desktop_xfce_linux5.4.125.7z


Orangepizero3_1.0.0_ubuntu_jammy_server_linux6.1.31.7z

Orangepizero3_1.0.0_debian_bookworm_server_linux6.1.31.7z

Orangepizero3_1.0.0_debian_bullseye_server_linux6.1.31.7z

Orangepizero3_1.0.0_ubuntu_jammy_desktop_xfce_linux6.1.31.7z

Orangepizero3_1.0.0_debian_bookworm_desktop_xfce_linux6.1.31.7z

Orangepizero3_1.0.0_debian_bullseye_desktop_xfce_linux6.1.31.7z


OrangePi_Zero3_Android12_v1.0.tar.gz


  • 初始版本