打开主菜单

Wiki-Orange Pi β

Orange Pi 4A

Orange Pi 4A

用户手册

_MG_3225

Orange Pi 4A的基本特性

什么是 Orange Pi 4A

Orange Pi 4A采用了全志T527八核Cortex-A55 + HiFI4 DSP + RISV-V多核异构工业级处理器,支持2TOPS NPU,满足边缘智能AI加速应用;支持2GB/4GB LPDDR4/4X,提供H.265 4K@60fps和H.264 4K@60fps视频解码,H.264 4K@25fps编码;接口丰富,包括千兆以太网、PCIe2.0、USB2.0、MIPI-CSI、MIPI-DSI、40Pin扩展接口等常用功能接口。支持Ubuntu、Debian、Android 13等操作系统。

Orange Pi 4A可为生成式AI、人工智能 算法的场景化落地提供坚实的硬件基础,可广泛应用于智能工控、智能商显、零售支付、智慧教育、商用机器人、车载终端、视觉辅驾、边缘计算、智能配电终端等。

Orange Pi 4A的用途

我们可以用它实现:

  • 一台小型的Linux桌面计算机
  • 一台小型的Linux网络服务器
  • Android平板
  • Android 游戏机等

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

Orange Pi 4A是为谁设计的

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

Orange Pi 4A的硬件特性

硬件特性介绍
处理器 T527,8核ARM CortexTM-A55@1.8GHz

HIFI4 Audio DSP@600MHz

RISC-V@200MHz

GPU:G57 MC1

VPU: H.265 4K@60fps解码,H.264 4K@60fps解码,H.264 4K@25fps编码

NPU:2TOPS

内存 LPDDR4/4X:2GB/4GB可选
存储 eMMC module可选:16GB/32GB/64GB/128GB可选

SPI Flash:128Mb(默认贴)、256Mb可选

M.2 M-KEY Socket:PCIe2.0 NVMe SSD

uSD card slot:supports up to 128GB uSD card

Wi-Fi+蓝牙 Wi-Fi+蓝牙二合一模块

Wi-Fi5.0+BT 5.0,BLE

以太网 10/100/1000Mbps以太网
显示 1x HDMI TX 2.0 interface up to 4K@60fps

1x 4-lane MIPI-DSI

1x eDP1.3

摄像头 1x 2-lane MIPI-CSI camera interface

1x 4-lane MIPI-CSI camera interface

USB 1xUSB Type-A 2.0

3xUSB Type-A 2.0 HOST

1xUSB 2.0 HOST 预留供客户扩展

ADC 预留4Pin接口,可接入2路ADC,最大输入1.8V
音频 3.5mm耳机孔音频输入/输出
按键 1* BOOT,1*RESET,1 *PWR ON
RTC 2Pin备用电池接口(Pitch=1.27mm)
40Pin 40Pin功能扩展接口,支持以下接口类型:

GPIO、UART、I2C、SPI、PWM

DEBUG 3Pin调试串口
电源 Type-C 5V 5A DCIN
支持的OS Ubuntu、Debian、Android13等
外观规格介绍
PCB 89mm*56mm*1.6mm
重量 52g

Orange Pi 4A的顶层视图和底层视图

顶层视图:

 

底层视图:

 

Orange Pi 4A的接口详情图

 

 

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

开发板使用介绍

准备需要的配件

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

     

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

     

  3. HDMI接口的显示器

     

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

     

  5. 10.1寸MIPI屏幕,用于显示开发板的系统界面(此屏幕包括转接板和OPi5Plus/OPi5B/OPi5/OPi5Pro/OPi5Max/OPi4A通用)

     

  6. 电源适配器,Orange Pi 4A建议使用5V/5A的Type-C电源供电

     

    开发板的Type-C电源接口不支持PD协商功能,只支持固定的5V电压输入。

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

     

  8. USB摄像头

     

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

     

  10. 5V的散热风扇,如下图所示,开发板专门引出5V输出接口用于接散热风扇,间距为2.54mm,散热风扇的电源接口参照这个规格去购买即可。

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

     

  11. USB2.0公对公数据线,用于adb调试、烧录镜像到eMMC等功能

     

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

       

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

  13. 安装有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-4A.html

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

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

  2. 资料主要包含

    1. Linux源码:保存在Github上

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

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

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

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

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

基于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下载页面后,点击绿色的下载按钮会跳到软件下载的地方

     

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

     

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

     

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

 

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

 

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

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

    2. 然后选择TF卡的盘符

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

       

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

     

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

     

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

     

使用Win32Diskimager烧录Linux镜像的方法

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

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

  3. 接着格式化TF卡

    1. 可以使用SD Card Formatter这个软件格式化TF卡,其下载地址为

https://www.sdcard.org/downloads/formatter/eula_windows/SDCardFormatterv5_WinEN.zip

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

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

     

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

 

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

     

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

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

    1. Win32Diskimager的下载页面为

http://sourceforge.net/projects/win32diskimager/files/Archive/

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

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

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

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

       

  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下载页面后,点击绿色的下载按钮会跳到软件下载的地方

     

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

     

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

    test@test:~$ 7z x Orangepi4a_1.0.0_ubuntu_jammy_desktop_linux5.15.147.7z

    test@test:~$ ls Orangepi4a_1.0.0_ubuntu_jammy_desktop_linux5.15.147.*

    Orangepi4a_1.0.0_ubuntu_jammy_desktop_linux5.15.147.7z Orangepi4a_1.0.0_ubuntu_jammy_desktop_linux5.15.147.sha #校验和文件

    Orangepi4a_1.0.0_ubuntu_jammy_desktop_linux5.15.147.img #镜像文件

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

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

    Orangepi4a_1.0.0_ubuntu_jammy_desktop_linux5.15.147.img: 成功

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

     

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

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

    2. 然后选择TF卡的盘符

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

       

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

     

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

     

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

     

烧写Linux镜像到eMMC中的方法

烧写linux镜像到EMMC的方法

烧写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

     

  2. 如果没有安装Microsoft Visual C++ 2008 Redistrbutable - x86

    ,使用PhoenixCard格式化TF卡或者烧录Android镜像会提示下面的错误

     

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

       

  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镜像可能会有问题

     

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

     

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

     

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

 

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

     

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

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

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

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

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

       

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

     

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

     

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

     

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

     

烧写Android镜像到eMMC的方法

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

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

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

  1. 开发板预留了eMMC模块的扩展接口,烧录系统到eMMC前,首先需要购买一个与开发板eMMC接口相匹配的eMMC模块。然后将eMMC模块安装到开发板上。eMMC模块和插入开发板的方法如下所示:

       

     

  2. 首先请注意,此方法需要借助TF卡来完成,主要分为如下两步

    1. 先使用PhoenixCard将Android固件以量产卡的方式烧录到TF卡中

    2. 然后使用TF卡将Android固件烧录到 eMMC 中

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

     

  4. 如果没有安装Microsoft Visual C++ 2008 Redistrbutable - x86

    ,使用PhoenixCard格式化TF卡或者烧录Android镜像会提示下面的错误

     

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

       

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

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

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

     

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

     

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

     

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

 

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

     

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

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

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

    2. 在”制作卡的种类”中选择”量产卡

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

       

  3. 烧录完后PhoenixCard的显示如下图所示,此时点击”关闭”按钮即可退出PhoenixCard

     

  4. 然后将TF卡插入开发板,上电启动开发板后会自动将TF卡中的Android固件烧录到开发板的eMMC 中,烧录完成后会自动关机,开发板上的LED灯会熄灭

  5. 此时就可以拔出TF卡,然后重新上电,就会启动eMMC中的Android系统了

启动香橙派开发板

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

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

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

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

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

调试串口的使用方法

调试串口的连接说明

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

     

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

     

  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开发板的示意图如下所示

     

    串口的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命令后会弹出下面的界面

     

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

     

  6. 然后设置串口的参数

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

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

    3. 设置Flow controlNone

       

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

    1. 首先选择Connection typeSerial

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

       

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

     

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

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

  1. 下载MobaXterm

    1. 下载MobaXterm网址如下

      https://mobaxterm.mobatek.net/

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

       

    3. 然后选择下载Home版本

       

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

       

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

     

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

    1. 打开会话的设置界面

    2. 选择串口类型

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

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

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

 

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

     

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

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

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

     

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

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

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

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

    3. 黑色的杜邦线需要插到40 pin接口的GND引脚上

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

       

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

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

Linux镜像类型 内核版本 服务器版 桌面版
Ubuntu 22.04 - Jammy Linux5.15 支持 支持
Debian 12 - Bookworm Linux5.15 支持 支持

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

 

Linux镜像的命名规则为:

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

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

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

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

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

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

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

linux内核驱动适配情况

功能 Linux5.15
HDMI视频 OK
HDMI音频 OK
USB2.0 x 4 OK
TF卡启动 OK
eMMC OK
NVME SSD识别 OK
千兆网卡 OK
WIFI OK
蓝牙 OK
RTC芯片 OK
耳机音频 OK
LCD屏幕 OK
EDP OK
CAM1 内核驱动OK,3A未调
CAM2 内核驱动OK,3A未调
LED灯 OK
40 pin GPIO OK
40 pin I2C OK
40 pin SPI OK
40 pin UART OK
40 pin PWM OK
按键 OK
温度传感器 OK
硬件看门狗 OK
Mali GPU 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. orangepi@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

     

  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. 桌面版系统启动后会自动登录进入桌面,无需输入密码

     

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

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

    orangepi@orangepi:~$ sudo desktop_login.sh root

  2. 然后重启系统,就会自动使用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灯,一个绿灯,一个红灯,一个PCIe指示灯,所在位置如下图所示:

  2. 只要开发板接通了电源,红色的LED灯就会常亮,这是由硬件控制的,软件无法关闭。

  3. 绿色的LED灯在内核启动后会一直闪烁,这是由软件控制的。

  4. PCIe指示灯在PCIe接口有数据传输时会闪烁。

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

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

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

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

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

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

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

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

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

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

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卡容量的使用情况

       

    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 Avail Use% Mounted on

udev 430M 0 430M 0% /dev

tmpfs 100M 5.6M 95M 6% /run

/dev/mmcblk0p1 15G 915M 14G 7% /

tmpfs 500M 0 500M 0% /dev/shm

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

     

需要注意的是,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 Avail Use% Mounted on

    udev 925M 0 925M 0% /dev

    tmpfs 199M 3.2M 196M 2% /run

    /dev/mmcblk0p1 4.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 Avail Use% Mounted on

udev 925M 0 925M 0% /dev

tmpfs 199M 3.2M 196M 2% /run

/dev/mmcblk0p1 15G 3.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未分配

     

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

     

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

     

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

     

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

     

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

     

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

     

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

     

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

     

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

     

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

    root@orangepi:~# df -h

    Filesystem Size Used Avail Use% Mounted on

    udev 925M 0 925M 0% /dev

    tmpfs 199M 3.2M 196M 2% /run

    /dev/mmcblk0p1 7.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卡容量的使用情况

     

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

     

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

     

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

     

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

     

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

     

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

     

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

     

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

     

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

     

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

    root@orangepi:~# df -h

    Filesystem Size Used Avail Use% Mounted on

    udev 925M 0 925M 0% /dev

    tmpfs 199M 3.2M 196M 2% /run

    /dev/mmcblk0p1 7.7G 3.2G 4.4G 42% /

网络连接测试

以太网口测试

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

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

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

    orangepi@orangepi:~$ ip a s eth0

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

    link/ether 3a:3a:57:82:eb:1f brd ff:ff:ff:ff:ff:ff

    inet 192.168.2.163/24 brd 192.168.2.255 scope global dynamic noprefixroute eth0

    valid_lft 42902sec preferred_lft 42902sec

    inet6 fdcd:e671:36f4::a39/128 scope global dynamic noprefixroute

    valid_lft 42904sec preferred_lft 42904sec

    inet6 fdcd:e671:36f4:0:7b67:e74e:f0e1:849a/64 scope global temporary dynamic

    valid_lft 604504sec preferred_lft 86095sec

    inet6 fdcd:e671:36f4:0:d098:7f17:6cea:4de4/64 scope global mngtmpaddr noprefixroute

    valid_lft forever preferred_lft forever

    inet6 fe80::cc72:d313:9846:a5e0/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快捷键来中断运行

    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

     

  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

    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命令打开的界面如下所示

     

  4. 选择Activate a connect后回车

     

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

     

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

     

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

     

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

     

  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

    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时请不要连接网线)

     

  2. 在弹出的下拉框中选择Wi-Fi Settings

     

  3. 然后在Visible Networks下面可以看到搜索到的WIFI热点

     

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

     

     

通过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热点

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

     

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

     

  4. 在NAT模式下,连接到开发板热点的无线设备是向开发板的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

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

     

     

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

    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

 

 

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

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

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

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

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

 

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

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

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

     

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

     

  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

     

     

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

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

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

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

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

 

设置静态IP地址的方法

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

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

  1. 首先运行nmtui命令

    orangepi@orangepi:~$ sudo nmtui

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

     

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

     

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

     

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

     

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

     

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

     

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

     

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

     

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

     

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

     

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

     

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

     

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

     

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

     

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

       

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

    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快捷键来中断运行

    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

      NAME UUID TYPE DEVICE

      orangepi cfc4f922-ae48-46f1-84e1-2f19e9ec5e2a wifi wlan0

      Wired connection 1 9db058b7-7701-37b8-9411-efc2ae8bfa30 ethernet 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. 设置FR_net_change_defaults1

      2. 设置FR_net_wifi_enabled1

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

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

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

      1. 设置FR_net_change_defaults1

      2. 设置FR_net_wifi_enabled1

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

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

      5. 设置FR_net_use_static1

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

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

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

      1. 设置FR_net_change_defaults1

      2. 设置FR_net_ethernet_enabled1

      3. 设置FR_net_use_static1

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

      5. 设置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. 成功登录系统后的显示如下图所示

     

    如果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即可

       

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

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

     

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

     

HDMI测试

HDMI显示测试

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

     

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

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

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

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

HDMI转VGA显示测试

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

    1. HDMI转VGA转换器

       

    2. 一根VGA线

       

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

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

     

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

蓝牙使用方法

桌面版镜像的测试方法

  1. 首先点击桌面右上角的这块区域

     

  2. 然后打开Bluetooth Settings

     

  3. 蓝牙默认会打开,此时在Devices下面会显示周围扫描到的蓝牙设备

     

  4. 然后点击想要连接的设备就可以开始配对了,开始配对后会弹出配对确认框,选择Confirm确认即可,此时手机上也同样需要进行确认

     

  5. 和手机配对完后,可以选择已配对的蓝牙设备,然后选择Send Files即可开始给手机发送一个文件

     

  6. 然后选择要发送的文件路径,再点击Select开始发送

     

  7. 发送文件的界面如下图所示

     

服务器版镜像的使用方法

  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 orangepi4a [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. 配对成功后,手机蓝牙界面的显示如下所示

     

  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手机的蓝牙配置界面就可以看到已连接用于通话和媒体的音频的提示

     

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 #blocks name

8 0 30044160 sda

8 1 30043119 sda1

  1. 使用mount命令可以将U盘挂载到/mnt中,然后就能查看U盘中的文件了

orangepi@orangepi:~$ sudo mount /dev/sda1 /mnt/

orangepi@orangepi:~$ ls /mnt/

test.txt

  1. 挂载完后通过df -h命令就能查看U盘的容量使用情况和挂载点

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

    eth1: 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 eth1

    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. -d 选项用于指定USB摄像头的设备节点

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

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

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

      5. ./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. Github的下载地址:

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

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

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

    2. 安装依赖的软件包

      1. Ubuntu系统

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

      2. 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】就能看到摄像头输出的视频了

       

音频测试

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

耳机接口播放音频测试

  1. 首先将耳机插入开发板的耳机孔中。

     

  2. 通过aplay -l命令可以查看linux系统支持的声卡设备,其中audiocodec就是耳机播放需要的声卡设备

    root@orangepi:~# aplay -l

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

    card 0: audiocodec [audiocodec], device 0: sunxi-snd-plat-aaudio-sunxi-snd-codec 7110000.codec-0 []

    Subdevices: 1/1

    Subdevice #0: subdevice #0

    card 1: sndi2s1 [sndi2s1], device 0: sunxi-snd-plat-i2s-snd-soc-dummy-dai snd-soc-dummy-dai-0 []

    Subdevices: 1/1

    Subdevice #0: subdevice #0

    card 2: sndhdmi [sndhdmi], device 0: sunxi-snd-plat-i2s-soc@3000000:hdmi_codec soc@3000000:hdmi_code []

    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. 首先使用HDMI 转HDMI线将Orange Pi开发板连接到电视机上(其他的HDMI显示器需要确保可以播放音频)

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

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

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

  1. 首先打开文件管理器

 

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

     

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

     

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

    1. 首先点击右上角的这块区域

       

    2. 然后选择Settings

       

    3. 然后找到Sound

       

    4. 然后在Output Device的下拉选择框中选择想要播放的音频设备(选择Audio Codec声音将会从耳机输出,选择HDMI Audio声音会从HDMI输出

       

使用命令测试录音的方法

  1. Orange Pi 4A开发板没有板载MIC,只能通过带MIC功能的耳机来录制音频。将带MIC功能的耳机插入开发板后,运行下面的命令会通过耳机录制一段音频

    orangepi@orangepi:~$ arecord -D hw:0,0 -d 5 -f S16_LE -t wav /tmp/test.wav

温度传感器

T527总共有6个温度传感器,查看温度的命令如下所示:

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

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

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

cpul_thermal_zone

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

54925

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

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

    cpub_thermal_zone

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

    54990

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

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

    gpu_thermal_zone

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

    55056

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

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

    npu_thermal_zone

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

    54686

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

orangepi@orangepi:~# cat /sys/class/thermal/thermal_zone4/type

ddr_thermal_zone

orangepi@orangepi:~# cat /sys/class/thermal/thermal_zone4/temp

54925

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

orangepi@orangepi:~# cat /sys/class/thermal/thermal_zone5/type

axp2202-usb

orangepi@orangepi:~# cat /sys/class/thermal/thermal_zone5/temp

45600

40 pin接口引脚说明

  1. Orange Pi 4A开发板40 pin接口引脚的顺序请参开发板上的丝印图

     

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

    1. 下面是40pin完整的引脚图

 

  1. 下面的表格是上面完整表格左半边部分的图,能看得清楚点

     

  2. 下面的表格是上面完整表格右半边部分的图,能看得清楚点

 

  1. 40 pin接口中总共有28个GPIO口,所有GPIO口的电压都是3.3v

安装wiringOP的方法

注意,Orange Pi发布的linux镜像中已经预装了wiringOP,除非wiringOP的代码有更新,否则无需重新下载编译安装,直接使用即可。

编译好的wiringOP的deb包在orangepi-build中的存放路径为:

orangepi-build/external/cache/debs/arm64/wiringpi_x.xx.deb

进入系统后可以运行下gpio readall命令,如果能看到下面的输出,说明wiringOP已经预装并且能正常使用。

 

  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命令的输出如下

     

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

40pin GPIO口测试

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

     

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

    orangepi@orangepi:~/wiringOP$ gpio mode 2 out

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

    orangepi@orangepi:~/wiringOP$ gpio write 2 0

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

     

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

    orangepi@orangepi:~/wiringOP$ gpio write 2 1

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

     

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

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

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

     

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

    orangepi@orangepi:~/wiringOP$ gpio mode 2 in

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

    orangepi@orangepi:~/wiringOP$ gpio mode 2 up

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

    orangepi@orangepi:~/wiringOP$ gpio read 2

    1

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

    orangepi@orangepi:~/wiringOP$ gpio mode 2 down

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

    orangepi@orangepi:~/wiringOP$ gpio read 2

    0

40 pin SPI测试

  1. 由下图可知,Orange Pi 4A可用的SPI为SPI1和SPI2。

     

  2. SPI1和SPI2在40pin中对应的引脚如下表所示。

SPI1对应40pin SPI2对应40pin
MOSI 19号引脚 15号引脚
MISO 21号引脚 29号引脚
CLK 23号引脚 13号引脚
CS0 24号引脚 11号引脚

在Linux系统中,40pin中的spi功能默认是关闭的,需要手动打开才能使用。

在/boot/extlinux/extlinux.conf中加入下面红色字体部分的配置,然后重启Linux系统就可以打开spi1和spi2,注意同时打开多个配置时,下面红色字体内容需要使用空格隔开写在一行。

orangepi@orangepi4a:~$ sudo vim /boot/extlinux/extlinux.conf

label Orange Pi

kernel /boot/uImage

initrd /boot/uInitrd

fdt /boot/dtb/allwinner/sun55i-t527-orangepi-4a.dtb

append root=UUID=de4d1c86-fd02-41ab-ad5f-3c557d669f46 earlycon=uart8250,mmio32,0x02500000 clk_ignore_unused initcall_debug=0 console=ttyAS0,115200 loglevel=8 cma=64M init=/sbin/init rw no_console_suspend consoleblank=0 fsck.fix=yes fsck.repair=yes net.ifnames=0 splash plymouth.ignore-serial-consoles

FDTOVERLAYS /boot/dtb/allwinner/overlay/sun55i-t527-spi1-cs0-spidev.dtbo

/boot/dtb/allwinner/overlay/sun55i-t527-spi2-cs0-spidev.dtbo

  1. 然后查看下linux系统中是否存在spidevx.x的设备节点,如果存在,说明SPI的配置已经生效了

    orangepi@orangepi:~$ ls /dev/spidev*

    /dev/spidev1.0 /dev/spidev2.0

  2. 先不短接SPI1或者SPI2的mosi和miso两个引脚,运行spidev_test的输出结果如下所示,可以看到TX和RX的数据不一致

    orangepi@orangepi:~$ sudo spidev_test -v -D /dev/spidev1.0

    或者

    orangepi@orangepi:~$ sudo spidev_test -v -D /dev/spidev2.0

    spi mode: 0x0

    bits per word: 8

    max speed: 500000 Hz (500 KHz)

    TX | FF FF FF FF FF FF 40 00 00 00 00 95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D | ......@.…▒..................▒.

    RX | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ............................….

  3. 然后短接SPI1或者SPI2的mosi和miso两个引脚再运行spidev_test的输出如下,可以看到发送和接收的数据一样

    orangepi@orangepi:~$ sudo spidev_test -v -D /dev/spidev1.0

    或者

    orangepi@orangepi:~$ sudo spidev_test -v -D /dev/spidev2.0

    spi mode: 0x0

    bits per word: 8

    max speed: 500000 Hz (500 KHz)

    TX | FF FF FF FF FF FF 40 00 00 00 00 95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D | ......@.…▒..................▒.

    RX | FF FF FF FF FF FF 40 00 00 00 00 95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D | ......@.…▒..................▒.

40 pin I2C测试

  1. 由下图可知,Orange Pi 4A可用的i2c为i2c1、i2c4和i2c5共三组i2c总线。

     

  2. 三组I2C总线在40pin中对应的引脚如下表所示。

I2C总线 SDA对应40pin SCL对应40pin dtbo对应配置
I2C1 12号引脚 7号引脚 sun55i-t527-i2c1
I2C4 3号引脚 5号引脚 sun55i-t527-i2c4
I2C5 27号引脚 28号引脚 sun55i-t527-i2c5

在Linux系统中,40pin中的i2c功能默认是关闭的,需要手动打开才能使用。

在/boot/extlinux/extlinux.conf中加入下面红色字体部分的配置,然后重启Linux系统就可以打开i2c1、i2c4和i2c5,注意同时打开多个配置时,下面红色字体内容需要使用空格隔开写在一行。

orangepi@orangepi4a:~$ sudo vim /boot/extlinux/extlinux.conf

label Orange Pi

kernel /boot/uImage

initrd /boot/uInitrd

fdt /boot/dtb/allwinner/sun55i-t527-orangepi-4a.dtb

append root=UUID=de4d1c86-fd02-41ab-ad5f-3c557d669f46 earlycon=uart8250,mmio32,0x02500000 clk_ignore_unused initcall_debug=0 console=ttyAS0,115200 loglevel=8 cma=64M init=/sbin/init rw no_console_suspend consoleblank=0 fsck.fix=yes fsck.repair=yes net.ifnames=0 splash plymouth.ignore-serial-consoles

FDTOVERLAYS /boot/dtb/allwinner/overlay/sun55i-t527-i2c1.dtbo

/boot/dtb/allwinner/overlay/sun55i-t527-i2c4.dtbo

/boot/dtb/allwinner/overlay/sun55i-t527-i2c5.dtbo

  1. 启动linux系统后,先确认下/dev下存在i2c的设备节点

    orangepi@orangepi:~$ ls /dev/i2c-*

    /dev/i2c-0 /dev/i2c-1 /dev/i2c-3 /dev/i2c-31 /dev/i2c-4 /dev/i2c-5 /dev/i2c-6

  2. 然后开始测试i2c,首先安装i2c-tools

    orangepi@orangepi:~$ sudo apt-get update

    orangepi@orangepi:~$ sudo apt-get install -y i2c-tools

  3. 然后在40 pin接头的i2c引脚上接一个i2c设备

    5V和3.3V引脚请根据具体的i2c设备进行选择,不同的i2c设备需要的电压值可能不同。

  4. 然后使用i2cdetect -y命令如果能检测到连接的i2c设备的地址,就说明i2c能正常使用

    orangepi@orangepi:~$ sudo i2cdetect -y 1 #i2c1的命令

    orangepi@orangepi:~$ sudo i2cdetect -y 4 #i2c4的命令

    orangepi@orangepi:~$ sudo i2cdetect -y 5 #i2c5的命令

 

40 pin的UART测试

  1. 由下表可知,Orange Pi 4A可用的uart为uart2、uart3、uart4、uart5、uart6和uart7共六组uart总线

     

  2. 六组UART总线在40 pin中对应的引脚如下表所示。

UART总线 RX对应40pin TX对应40pin dtbo对应配置
UART2 13号引脚 11号引脚 sun55i-t527-uart2
UART3 33号引脚 32号引脚 sun55i-t527-uart3
UART4 5号引脚 3号引脚 sun55i-t527-uart4
UART5 23号引脚 24号引脚 sun55i-t527-uart5
UART6 26号引脚 22号引脚 sun55i-t527-uart6
UART7 10号引脚 8号引脚 sun55i-t527-uart7

在Linux系统中,40pin中的uart功能默认是关闭的,需要手动打开才能使用。

在/boot/extlinux/extlinux.conf中加入下面红色字体部分的配置,然后重启Linux系统就可以打开uart2、uart3、uart4、uart5、uart6和uart7,注意同时打开多个配置时,下面红色字体内容需要使用空格隔开写在一行。

orangepi@orangepi4a:~$ sudo vim /boot/extlinux/extlinux.conf

label Orange Pi

kernel /boot/uImage

initrd /boot/uInitrd

fdt /boot/dtb/allwinner/sun55i-t527-orangepi-4a.dtb

append root=UUID=de4d1c86-fd02-41ab-ad5f-3c557d669f46 earlycon=uart8250,mmio32,0x02500000 clk_ignore_unused initcall_debug=0 console=ttyAS0,115200 loglevel=8 cma=64M init=/sbin/init rw no_console_suspend consoleblank=0 fsck.fix=yes fsck.repair=yes net.ifnames=0 splash plymouth.ignore-serial-consoles

FDTOVERLAYS /boot/dtb/allwinner/overlay/sun55i-t527-uart2.dtbo

/boot/dtb/allwinner/overlay/sun55i-t527-uart3.dtbo

/boot/dtb/allwinner/overlay/sun55i-t527-uart4.dtbo

/boot/dtb/allwinner/overlay/sun55i-t527-uart5.dtbo

/boot/dtb/allwinner/overlay/sun55i-t527-uart6.dtbo

/boot/dtb/allwinner/overlay/sun55i-t527-uart7.dtbo

  1. 进入linux系统后,先确认下/dev下是否存在uart的设备节点

    orangepi@orangepi:~$ ls /dev/ttyAS*

    /dev/ttyAS0 /dev/ttyAS1 /dev/ttyAS2 /dev/ttyAS3 /dev/ttyAS4 /dev/ttyAS5 /dev/ttyAS6 /dev/ttyAS7

  2. 然后开始测试uart接口,先使用杜邦线短接要测试的uart接口的rx和tx

  3. 使用gpio serial命令测试串口的回环功能如下所示,如果能看到下面的打印,说明串口通信正常(ttyASX需要替换为对应uart的节点名,请不要照抄)

    orangepi@orangepi:~$ gpio serial /dev/ttyASX

    Out: 0: -> 0

    Out: 1: -> 1

    Out: 2: -> 2

    Out: 3: -> 3^C

使用/sys/class/pwm/测试PWM的方法

  1. 由下表可知,Orange Pi 4A可用的pwm有pwm1、pwm2、pwm4、pwm5、pwm6、pwm7、pwm8、pwm9、pwm10、pwm11、pwm12、pwm13、pwm14和pwm15共14路PWM

     

  2. PWM在40pin中对应的引脚如下表所示。

PWM总线 对应40pin dtbo对应配置
PWM0-1 5号引脚 sun55i-t527-pwm1
PWM0-2 31号引脚 sun55i-t527-pwm2
PWM0-4 8号引脚 sun55i-t527-pwm4
PWM0-5 10号引脚 sun55i-t527-pwm5
PWM0-6 11号引脚 sun55i-t527-pwm6
PWM0-7 13号引脚 sun55i-t527-pwm7
PWM0-8 7号引脚 sun55i-t527-pwm8
PWM0-9 12号引脚 sun55i-t527-pwm9
PWM0-10 35号引脚 sun55i-t527-pwm10
PWM0-11 38号引脚 sun55i-t527-pwm11
PWM0-12 32号引脚 sun55i-t527-pwm12
PWM0-13 33号引脚 sun55i-t527-pwm13
PWM0-14 16号引脚 sun55i-t527-pwm14
PWM0-15 18号引脚 sun55i-t527-pwm15

在Linux系统中,40pin中的pwm功能默认是关闭的,需要手动打开才能使用。

在/boot/extlinux/extlinux.conf中加入下面红色字体部分的配置,然后重启Linux系统就可以打开pwm1、pwm2、pwm4、pwm5、pwm6、pwm7、pwm8、pwm9、pwm10、pwm11、pwm12、pwm13、pwm14和pwm15,如果只需要打开一个,那么就填写一个即可。

orangepi@orangepi4a:~$ sudo vim /boot/extlinux/extlinux.conf

label Orange Pi

kernel /boot/uImage

initrd /boot/uInitrd

fdt /boot/dtb/allwinner/sun55i-t527-orangepi-4a.dtb

append root=UUID=de4d1c86-fd02-41ab-ad5f-3c557d669f46 earlycon=uart8250,mmio32,0x02500000 clk_ignore_unused initcall_debug=0 console=ttyAS0,115200 loglevel=8 cma=64M init=/sbin/init rw no_console_suspend consoleblank=0 fsck.fix=yes fsck.repair=yes net.ifnames=0 splash plymouth.ignore-serial-consoles

FDTOVERLAYS /boot/dtb/allwinner/overlay/sun55i-t527-pwm1.dtbo

/boot/dtb/allwinner/overlay/sun55i-t527-pwm2.dtbo

/boot/dtb/allwinner/overlay/sun55i-t527-pwm4.dtbo

/boot/dtb/allwinner/overlay/sun55i-t527-pwm5.dtbo

/boot/dtb/allwinner/overlay/sun55i-t527-pwm6.dtbo

/boot/dtb/allwinner/overlay/sun55i-t527-pwm7.dtbo

/boot/dtb/allwinner/overlay/sun55i-t527-pwm8.dtbo

/boot/dtb/allwinner/overlay/sun55i-t527-pwm9.dtbo

/boot/dtb/allwinner/overlay/sun55i-t527-pwm10.dtbo

/boot/dtb/allwinner/overlay/sun55i-t527-pwm11.dtbo

/boot/dtb/allwinner/overlay/sun55i-t527-pwm12.dtbo

/boot/dtb/allwinner/overlay/sun55i-t527-pwm13.dtbo

/boot/dtb/allwinner/overlay/sun55i-t527-pwm14.dtbo

/boot/dtb/allwinner/overlay/sun55i-t527-pwm15.dtbo

  1. 重启后就可以开始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的方波

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. 在命令行中输入下面的命令可以让pwm4输出一个50Hz的方波

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

  1. 其它的pwm的测试方法都是类似的,这里不再赘述

     

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的源码

注意,下面的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键可以退出帮助信息的界面

root@orangepi:~/wiringOP-Python# python3 -c "import wiringpi; help(wiringpi)"

Help on module wiringpi:

NAME

wiringpi

DESCRIPTION

  1. This file was automatically generated by SWIG (http://www.swig.org).
  1. Version 4.0.2
  1. Do not make changes to this file unless you know what you are doing--modify
  1. the SWIG interface file instead.
  1. 在python命令行下测试wiringOP-Python是否安装成功的步骤如下所示:

    1. 首先使用python3命令进入python3的命令行模式

root@orangepi:~# python3

  1. 然后导入wiringpi的python模块

>>> import wiringpi;

  1. 最后输入下面的命令可以查看下wiringOP-Python的帮助信息,按下q键可以退出帮助信息的界面

>>> help(wiringpi)

Help on module wiringpi:

NAME

wiringpi

DESCRIPTION

  1. This file was automatically generated by SWIG (http://www.swig.org).
  1. Version 4.0.2
  1. Do not make changes to this file unless you know what you are doing--modify
  1. the SWIG interface file instead.

CLASSES

builtins.object

GPIO

I2C

Serial

nes

class GPIO(builtins.object)

| GPIO(pinmode=0)

|

>>>

40 pin GPIO口测试

wiringOP-Python跟wiringOP一样,也是可以通过指定wPi号来确定操作哪一个GPIO引脚,因为wiringOP-Python中没有查看wPi号的命令,所以只能通过wiringOP中的gpio命令来查看板子wPi号与物理引脚的对应关系。

 

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

     

  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测试程序会设置开发板40 pin中所有的GPIO口的电压不断的高低变化

    root@orangepi:~/wiringOP-Python# cd examples

    root@orangepi:~/wiringOP-Python/examples# ls blink.py

    blink.py

    root@orangepi:~/wiringOP-Python/examples# python3 blink.py

40 pin SPI测试

  1. 由下图可知,Orange Pi 4A可用的SPI为SPI1和SPI2。

     

  2. SPI1和SPI2在40pin对应的引脚如下表所示

SPI1对应40pin SPI2对应40pin
MOSI 19号引脚 15号引脚
MISO 21号引脚 29号引脚
CLK 23号引脚 13号引脚
CS0 24号引脚 11号引脚

在Linux系统中,40pin中的spi功能默认是关闭的,需要手动打开才能使用。

在/boot/extlinux/extlinux.conf中加入下面红色字体部分的配置,然后重启Linux系统就可以打开spi1和spi2,注意同时打开多个配置时,下面红色字体内容需要使用空格隔开写在一行。

orangepi@orangepi4a:~$ sudo vim /boot/extlinux/extlinux.conf

label Orange Pi

kernel /boot/uImage

initrd /boot/uInitrd

fdt /boot/dtb/allwinner/sun55i-t527-orangepi-4a.dtb

append root=UUID=de4d1c86-fd02-41ab-ad5f-3c557d669f46 earlycon=uart8250,mmio32,0x02500000 clk_ignore_unused initcall_debug=0 console=ttyAS0,115200 loglevel=8 cma=64M init=/sbin/init rw no_console_suspend consoleblank=0 fsck.fix=yes fsck.repair=yes net.ifnames=0 splash plymouth.ignore-serial-consoles

FDTOVERLAYS /boot/dtb/allwinner/overlay/sun55i-t527-spi1-cs0-spidev.dtbo

/boot/dtb/allwinner/overlay/sun55i-t527-spi2-cs0-spidev.dtbo

  1. 然后查看下linux系统中是否存在spidevx.x的设备节点,如果存在,说明SPI的配置已经生效了

    orangepi@orangepi:~$ ls /dev/spidev*

    /dev/spidev1.0 /dev/spidev2.0

  2. 然后可以使用examples中的spidev_test.py程序测试下SPI的回环功能,spidev_test.py程序需要指定下面的两个参数:

    1. --channel:指定SPI的通道号

    2. --port:指定SPI的端口号

  3. 先不短接 SPI 的 mosi 和 miso 两个引脚,运行spidev_test.py的输出结果如下所示,可以看到 TX 和 RX 的数据不一致

    --channel和--port参数后面的x需要替换为具体SPI的通道号和SPI的端口号。

    root@orangepi:~/wiringOP-Python# cd examples

root@orangepi:~/wiringOP-Python/examples# python3 spidev_test.py \

--channel x --port x

spi mode: 0x0

max speed: 500000 Hz (500 KHz)

Opening device /dev/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. 然后使用杜邦线短接SPI的txd和rxd两个引脚再运行spidev_test.py的输出如下,可以看到发送和接收的数据一样,说明SPI回环测试正常

    --channel和--port参数后面的x需要替换为具体SPI的通道号和SPI的端口号。

    root@orangepi:~/wiringOP-Python# cd examples

root@orangepi:~/wiringOP-Python/examples# python3 spidev_test.py \

--channel x --port x

spi mode: 0x0

max speed: 500000 Hz (500 KHz)

Opening device /dev/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 |......@.......…|

40 pin I2C测试

  1. 由下表可知,Orange Pi 4A可用的i2c为i2c1、i2c4和i2c5共三组i2c总线

     

  2. 三组I2C总线在40pin中对应的引脚如下表所示。

I2C总线 SDA对应40pin SCL对应40pin dtbo对应配置
I2C1 12号引脚 7号引脚 sun55i-t527-i2c1
I2C4 3号引脚 5号引脚 sun55i-t527-i2c4
I2C5 27号引脚 28号引脚 sun55i-t527-i2c5

在Linux系统中,40pin中的i2c功能默认是关闭的,需要手动打开才能使用。

在/boot/extlinux/extlinux.conf中加入下面红色字体部分的配置,然后重启Linux系统就可以打开i2c1、i2c4和i2c5,注意同时打开多个配置时,下面红色字体内容需要使用空格隔开写在一行。

orangepi@orangepi4a:~$ sudo vim /boot/extlinux/extlinux.conf

label Orange Pi

kernel /boot/uImage

initrd /boot/uInitrd

fdt /boot/dtb/allwinner/sun55i-t527-orangepi-4a.dtb

append root=UUID=de4d1c86-fd02-41ab-ad5f-3c557d669f46 earlycon=uart8250,mmio32,0x02500000 clk_ignore_unused initcall_debug=0 console=ttyAS0,115200 loglevel=8 cma=64M init=/sbin/init rw no_console_suspend consoleblank=0 fsck.fix=yes fsck.repair=yes net.ifnames=0 splash plymouth.ignore-serial-consoles

FDTOVERLAYS /boot/dtb/allwinner/overlay/sun55i-t527-i2c1.dtbo

/boot/dtb/allwinner/overlay/sun55i-t527-i2c4.dtbo

/boot/dtb/allwinner/overlay/sun55i-t527-i2c5.dtbo

  1. 启动linux系统后,先确认下/dev下存在i2c的设备节点

    orangepi@orangepi:~$ ls /dev/i2c-*

    /dev/i2c-0 /dev/i2c-1 /dev/i2c-3 /dev/i2c-31 /dev/i2c-4 /dev/i2c-5 /dev/i2c-6

  2. 然后开始测试i2c,首先安装下i2c-tools

    orangepi@orangepi:~$ sudo apt-get update

    orangepi@orangepi:~$ sudo apt-get install -y i2c-tools

  3. 然后在40 pin接头的i2c引脚上接一个i2c设备,这里以DS1307 RTC模块为例

     

  4. 然后使用i2cdetect -y命令如果能检测到连接的i2c设备的地址,就说明i2c设备连接正确

    orangepi@orangepi:~$ sudo i2cdetect -y 1 #i2c1的命令

    orangepi@orangepi:~$ sudo i2cdetect -y 4 #i2c4的命令

    orangepi@orangepi:~$ sudo i2cdetect -y 5 #i2c5的命令

 

  1. 然后可以运行examples中的ds1307.py测试程序读取RTC的时间

    root@orangepi:~/wiringOP-Python# cd examples

    root@orangepi:~/wiringOP-Python/examples# python3 ds1307.py --device \

    "/dev/i2c-1"

    Thu 2022-06-16 04:35:46

    Thu 2022-06-16 04:35:47

    Thu 2022-06-16 04:35:48

    ^C

    exit

40 pin的UART测试

  1. 由下表可知,Orange Pi 4A可用的uart为uart2、uart3、uart4、uart5、uart6和uart7共六组uart总线

     

  2. 六组UART总线在40 pin中对应的引脚如下表所示。

UART总线 RX对应40pin TX对应40pin dtbo对应配置
UART2 13号引脚 11号引脚 sun55i-t527-uart2
UART3 33号引脚 32号引脚 sun55i-t527-uart3
UART4 5号引脚 3号引脚 sun55i-t527-uart4
UART5 23号引脚 24号引脚 sun55i-t527-uart5
UART6 26号引脚 22号引脚 sun55i-t527-uart6
UART7 10号引脚 8号引脚 sun55i-t527-uart7

在Linux系统中,40pin中的uart功能默认是关闭的,需要手动打开才能使用。

在/boot/extlinux/extlinux.conf中加入下面红色字体部分的配置,然后重启Linux系统就可以打开uart2、uart3、uart4、uart5、uart6和uart7,注意同时打开多个配置时,下面红色字体内容需要使用空格隔开写在一行。

orangepi@orangepi4a:~$ sudo vim /boot/extlinux/extlinux.conf

label Orange Pi

kernel /boot/uImage

initrd /boot/uInitrd

fdt /boot/dtb/allwinner/sun55i-t527-orangepi-4a.dtb

append root=UUID=de4d1c86-fd02-41ab-ad5f-3c557d669f46 earlycon=uart8250,mmio32,0x02500000 clk_ignore_unused initcall_debug=0 console=ttyAS0,115200 loglevel=8 cma=64M init=/sbin/init rw no_console_suspend consoleblank=0 fsck.fix=yes fsck.repair=yes net.ifnames=0 splash plymouth.ignore-serial-consoles

FDTOVERLAYS /boot/dtb/allwinner/overlay/sun55i-t527-uart2.dtbo

/boot/dtb/allwinner/overlay/sun55i-t527-uart3.dtbo

/boot/dtb/allwinner/overlay/sun55i-t527-uart4.dtbo

/boot/dtb/allwinner/overlay/sun55i-t527-uart5.dtbo

/boot/dtb/allwinner/overlay/sun55i-t527-uart6.dtbo

/boot/dtb/allwinner/overlay/sun55i-t527-uart7.dtbo

  1. 进入linux系统后,先确认下/dev下是否存在uart的设备节点

    orangepi@orangepi:~$ ls /dev/ttyAS*

    /dev/ttyAS0 /dev/ttyAS1 /dev/ttyAS2 /dev/ttyAS3 /dev/ttyAS4 /dev/ttyAS5 /dev/ttyAS6 /dev/ttyAS7

  2. 然后开始测试uart接口,先使用杜邦线短接要测试的uart接口的rx和tx

  3. 最后可以运行examples中的serialTest.py程序来测试下串口的回环功能,如果能看到下面的打印,说明串口回环测试正常(ttyASX需要替换为对应uart的节点名,请不要照抄)

    root@orangepi:~/wiringOP-Python# cd examples

    root@orangepi:~/wiringOP-Python/examples# python3 serialTest.py --device /dev/ttyASX

    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

查看T527芯片的chipid

查看T527芯片chipid的命令如下所示,每个芯片的chipid都是不同的,所以可以使用chipid来区分多个开发板。

orangepi@orangepi:~# cat /sys/class/sunxi_info/sys_info |grep sunxi_serial

sunxi_serial : 208d211475779d0c0000019000000000

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:~/Python-3.9.10$ ./configure --enable-optimizations

  4. 然后编译安装Python3.9,编译时间大概需要半个小时左右

    orangepi@orangepi:~/Python-3.9.10$ make -j4

    orangepi@orangepi:~/Python-3.9.10$ sudo make altinstall

  5. 安装完后可以使用下面的命令查看下刚安装的Python的版本号

    orangepi@orangepi:~/Python-3.9.10$ 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安装有问题,此时需要去检查前面的安装设置过程是否有问题了。

     

  7. 然后输入姓名、用户名密码再点击创建账号

     

  8. 然后按照界面提示根据自己的喜好设置,再点击下一步

     

  9. 然后点击下一步

     

  10. 然后点击完成

     

  11. Home Assistant最终显示的主界面如下图所示

     

  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源码编译安装的方法一节

    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:/srv/homeassistant$ python3.9 -m venv .

    orangepi@orangepi:/srv/homeassistant$ 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的界面的,请等待一段时间后再刷新下。

     

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. 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分钟,根据网络速度的不同可能会有一些差别

     

  6. 此时在浏览器中输入上面显示的面板地址就可以打开宝塔Linux面板的登录界面,然后在对应的位置输入上图显示的usernamepassword就可以登录进宝塔

     

  7. 成功登录宝塔后的会弹出下面的欢迎界面,首先请将中间的用户须知阅读完拖到最下面,然后就可以选择”我已同意并阅读《用户协议》“,接着点击”进入面板”就可以进入宝塔了

     

  8. 进入宝塔后首先会提示需要绑定宝塔官网的账号,如果没有账号可以去宝塔的官网(https://www.bt.cn)注册一个

     

  9. 最终显示的界面如下图所示,可以很直观的看到开发板Linux系统的一些状态信息,比如负载状态、CPU的使用率、内存使用率和存储空间的使用情况等

     

  10. 宝塔的更多功能可以参考下面资料自行探索

    使用手册:http://docs.bt.cn

    论坛地址:https://www.bt.cn/bbs

    GitHub链接:https://github.com/aaPanel/BaoTa

QT的安装方法

  1. 使用下面的脚本可以安装QT5和QT Creator

    orangepi@orangepi:~$ install_qt.sh

  2. 安装完后会自动打印QT的版本号

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

    2. 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的启动图标

     

    也可以使用下面的命令打开QT Creator

    orangepi@orangepi:~$ qtcreator

  4. QT Creator打开后的界面如下所示

     

  5. QT Creator的版本如下所示

    1. QT Creator在Ubuntu22.04中的默认版本如下所示

       

    2. QT Creator在Debian12中的默认版本如下所示

       

  6. 然后设置下QT

    1. 首先打开Help->About Plugins...

       

    2. 然后去掉ClangCodeModel的那个勾

       

    3. 设置完后需要重启下QT Creator

    4. 然后确保QT Creator使用的GCC编译器,如果默认为Clang,请修改为GCC

      Debian12请跳过这步。

       

       

  7. 然后就可以打开一个示例代码

     

  8. 点击示例代码后会自动打开对应的说明文档,可以仔细看下其中的使用说明

     

  9. 然后点击下Configure Project

     

  10. 然后点击左下角的绿色三角形编译运行下示例代码

     

  11. 等待一段时间后,会弹出下图所示的界面,此时就说明QT能正常编译运行

     

  12. 参考资料

    https://wiki.qt.io/Install_Qt_5_on_Ubuntu

    https://download.qt.io/archive/qtcreator

    https://download.qt.io/archive/qt

ROS安装方法

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

     

  5. 参考文档

    http://docs.ros.org/en/humble/index.html

    http://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html

安装内核头文件的方法

  1. OPi发布的Linux镜像默认自带了内核头文件的deb包,存放的位置为/opt/

    orangepi@orangepi:~$ ls /opt/linux-headers*

    /opt/linux-headers-xxx-sun55iw3_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.15.147-sun55iw3/build M=/usr/src/hello modules

    make[1]: Entering directory '/usr/src/linux-headers-5.15.147-sun55iw3'

    CC [M] /usr/src/hello/hello.o

    MODPOST /usr/src/hello/Module.symvers

    CC [M] /usr/src/hello/hello.mod.o

    LD [M] /usr/src/hello/hello.ko

    make[1]: Leaving directory '/usr/src/linux-headers-5.15.147-sun55iw3'

  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

10.1寸MIPI LCD屏幕的使用方法

10.1寸MIPI 屏幕的组装方法

  1. 首先准备需要的配件

    1. 10.1寸MIPI LCD显示屏+触摸屏

       

    2. 屏幕转接板+31pin转40pin排线

       

    3. 30pin MIPI排线

       

    4. 12pin 触摸屏排线

       

  2. 按照下图将12pin 触摸屏排线、31pin转40pin排线、30pin MIPI排线接到屏幕转接板上,注意触摸屏排线蓝色的绝缘面朝下,其它两根排线绝缘面朝上,如果接错会导致无显示或者不能触摸的问题

     

  3. 按照下图将连接好排线的转接板置于MIPI LCD屏上面,并通过31pin转40pin排线连接MIPI LCD屏与转接板

 

  1. 然后通过12pin触摸屏排线连接触摸屏与转接板,注意绝缘面的朝向

     

  2. 最后通过30pin MIPI排线连接到开发板的LCD接口上

     

打开10.1寸MIPI LCD屏幕配置的方法

  1. Linux镜像默认是没有打开mipi lcd屏幕的配置的,如果需要使用mipi lcd屏幕,需要手动打开才行。

  2. 开发板上mipi lcd屏幕的接口如下图所示:

     

  3. 打开mipi lcd配置的方法如下所示:

    orangepi@orangepi:~$ sudo vim /boot/extlinux/extlinux.conf

    label Orange Pi

    kernel /boot/uImage

    initrd /boot/uInitrd

    fdt /boot/dtb/allwinner/sun55i-t527-orangepi-4a.dtb

    append root=UUID=de4d1c86-fd02-41ab-ad5f-3c557d669f46 earlycon=uart8250,mmio32,0x02500000 clk_ignore_unused initcall_debug=0 console=ttyAS0,115200 loglevel=8 cma=64M init=/sbin/init rw no_console_suspend consoleblank=0 fsck.fix=yes fsck.repair=yes net.ifnames=0 splash plymouth.ignore-serial-consoles

    FDTOVERLAYS /boot/dtb/allwinner/overlay/sun55i-t527-lcd.dtbo #需要添加的配置

  4. 然后重启OPi OS Arch系统

  5. 重启后可以看到lcd屏幕的显示如下所示(默认为竖屏):

 

旋转显示和触摸方向的方法

  1. 首先点击桌面右上角的这块区域

     

  2. 然后打开设置

     

  3. 然后选择Displays

     

  4. 然后在DisplaysOrientation中选择想要旋转的方向

     

  5. 然后选择Apply

     

  6. 然后就能看到屏幕已经旋转好了,此时还需要选择Keep Changes来最后确定旋转

     

  7. LCD屏幕旋转90度后的显示如下所示:

     

  8. Linux系统LCD屏幕的触摸功能会随着显示方向的旋转而旋转,无需其他设置

eDP屏幕的使用方法

eDP屏幕的组装方法

  1. 目前仅适配了一款15.6寸的eDP屏幕,包含的配件如下:

    1. 0.5间距30pin单头同向排线

       

    2. 15.6寸 eDP显示屏,分辨率为1920x1080。

       

  2. 将30pin单头同向排线的FPC端连接到开发板的eDP接口,另一端连接到屏幕的eDP接口

     

打开eDP屏幕配置的方法

注意,下面介绍的方法仅适用于已适配过的eDP屏幕,如果客户使用的是未经过适配的屏幕,按照下面的方法是无法点亮的。

  1. Linux镜像默认是没有打开eDP屏幕的配置的,如果需要使用eDP屏幕,需要手动打开才行。
  1. 首先在/boot/extlinux/extlinux.conf中加入下面的配置

    orangepi@orangepi:~$ sudo vim /boot/extlinux/extlinux.conf

    label Orange Pi

    kernel /boot/uImage

    initrd /boot/uInitrd

    fdt /boot/dtb/allwinner/sun55i-t527-orangepi-4a.dtb

    append root=UUID=de4d1c86-fd02-41ab-ad5f-3c557d669f46 earlycon=uart8250,mmio32,0x02500000 clk_ignore_unused initcall_debug=0 console=ttyAS0,115200 loglevel=8 cma=64M init=/sbin/init rw no_console_suspend consoleblank=0 fsck.fix=yes fsck.repair=yes net.ifnames=0 splash plymouth.ignore-serial-consoles

    FDTOVERLAYS /boot/dtb/allwinner/overlay/sun55i-t527-edp.dtbo #需要添加的配置

  2. 然后重启系统

    [orangepi@orangepi-pc ~]$ sudo reboot

  1. 启动后可以看到eDP屏幕的显示如下所示:

 

Linux系统支持的部分编程语言测试

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 Jammy系统

  1. Ubuntu Jammy默认安装有gcc编译工具链,可以直接在开发板的Linux系统中编译C语言的程序

    1. gcc的版本如下所示

      orangepi@orangepi:~$ gcc --version

gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.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.

  1. 编写C语言的hello_world.c程序

    orangepi@orangepi:~$ vim hello_world.c

    #include <stdio.h>

    int main(void)

    {

    printf("Hello World!\n");

    return 0;

    }

  2. 然后编译运行hello_world.c

    orangepi@orangepi:~$ gcc -o hello_world hello_world.c

    orangepi@orangepi:~$ ./hello_world

    Hello World!

  1. Ubuntu Jammy默认安装有Python3

    1. Python3具体版本如下所示

      orangepi@orangepi:~$ python3

      Python 3.10.12 (main, Jul 29 2024, 16:56:48) [GCC 11.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!

  2. 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打开后的界面如下所示,此时右边远程站点下面显示的是空的

     

  4. 连接开发板的方法如下图所示

 

  1. 然后选择保存密码,再点击确定

     

  2. 然后选择总是信任该主机,再点击确定

 

  1. 连接成功后在filezilla软件的右边就可以看到开发板linux文件系统的目录结构了

 

  1. 然后在filezilla软件的右边选择要上传到开发板中的路径,再在filezilla软件的左边选中Ubuntu PC中要上传的文件,再点击鼠标右键,再点击上传选项就会开始上传文件到开发板中了。

 

  1. 上传完成后就可以去开发板linux系统中的对应路径中查看上传的文件了

  2. 上传文件夹的方法和上传文件的方法是一样的,这里就不再赘述了

在Windows PC中上传文件到开发板Linux系统中的方法

使用filezilla上传文件的方法

  1. 首先下载filezilla软件Windows版本的安装文件,下载链接如下所示

https://filezilla-project.org/download.php?type=client 

 

  1. 下载的安装包如下所示,然后双击直接安装即可

    FileZilla_Server_1.5.1_win64-setup.exe

安装过程中,下面的安装界面请选择Decline,然后再选择Next>

 

  1. filezilla打开后的界面如下所示,此时右边远程站点下面显示的是空的

 

  1. 连接开发板的方法如下图所示:

 

  1. 然后选择保存密码,再点击确定

 

  1. 然后选择总是信任该主机,再点击确定

 

  1. 连接成功后在filezilla软件的右边就可以看到开发板linux文件系统的目录结构了

 

  1. 然后在filezilla软件的右边选择要上传到开发板中的路径,再在filezilla软件的左边选中Windows PC中要上传的文件,再点击鼠标右键,再点击上传选项就会开始上传文件到开发板中了

 

  1. 上传完成后就可以去开发板linux系统中的对应路径中查看上传的文件了

  2. 上传文件夹的方法和上传文件的方法是一样的,这里就不再赘述了

NPU的使用说明

板端环境准备

  1. 首先开发板端需要安装opencv和cmake。

    orangepi@orangepi:~$ sudo apt update

    orangepi@orangepi:~$ sudo apt install libopencv-dev cmake

  2. 然后从官方百度云下载NPU示例程序的压缩包。

  3. 然后将NPU示例程序压缩包上传到开发板,并解压。

    orangepi@orangepi:~$ tar -xvf board-demo.tar.gz

  4. 压缩包解压后,目录结构如下所示。

    orangepi@orangepi:~$ cd board-demo/

    orangepi@orangepi:~/board-demo$ ls

    chineseocr common head_pose lenet libawnn_viplite libawutils mobilenet_v2_ssd_demo struct2depth struct2depth yolov5

  5. 然后需要将NPU库拷贝到系统的/usr/lib目录下,下面运行示例程序需要用到。

orangepi@orangepi:~/board-demo$ sudo cp ./common/lib_linux_aarch64/T527/*.so /usr/lib

板端示例运行

运行mobilenet_v2_ssd目标检测示例

  1. 首先编译mobilenet_v2_ssd目标检测示例。

    orangepi@orangepi:~/board-demo$ cd mobilenet_v2_ssd_demo

    orangepi@orangepi:~/board-demo/mobilenet_v2_ssd_demo$ mkdir build

    orangepi@orangepi:~/board-demo/mobilenet_v2_ssd_demo$ cd build

    orangepi@orangepi:~/board-demo/mobilenet_v2_ssd_demo/build$ cmake ..

    orangepi@orangepi:~/board-demo/mobilenet_v2_ssd_demo/build$ make

  2. 然后执行下面的命令运行示例。

    orangepi@orangepi:/root/board-demo/mobilenet_v2_ssd_demo/build$ ./mbv2-ssd-demo -b ../model/mbv2_ssd_x527.nb -i ../000012.jpg

  3. 程序正常运行的输出信息如下所示。

    orangepi@orangepi:/root/board-demo/mobilenet_v2_ssd_demo/build$ ./mbv2-ssd-demo -b ../model/mbv2_ssd_x527.nb -i ../000012.jpg

    ................….

    get output finished.

    mbv2_ssd_postprocess.cpp run.

    car = 0.97705 at 162 94 179 x 170

    postprocess time : 0.025 Sec

    destory npu finished.

    ~NpuUint.

  4. 输出结果会保存为当前目录的ssd_out.png

    orangepi@orangepi4a:~/board-demo/mobilenet_v2_ssd_demo/build$ ls ssd_out.png

    ssd_out.png

     

运行yolov5目标检测示例

  1. 首先编译yolov5示例。

    orangepi@orangepi:~/board-demo$ cd mobilenet_v2_ssd_demo

    orangepi@orangepi:~/board-demo/yolov5$ mkdir build

    orangepi@orangepi:~/board-demo/yolov5$ cd build

    orangepi@orangepi:~/board-demo/yolov5/build$ cmake ..

    orangepi@orangepi:~/board-demo/yolov5/build$ make

  2. 然后执行下面的命令运行示例。

    orangepi@orangepi:~/board-demo/yolov5/build$ ./yolov5 ../model/v2/yolov5.nb ../input_data/dog.jpg

    ./yolov5 nbg input

    VIPLite driver software version 1.13.0.0-AW-2023-10-19

    yolov5_preprocess.cpp run.

    yolov5_postprocess.cpp run.

    detection num: 3

    16: 91%, [ 135, 218, 305, 553], dog

    7: 69%, [ 473, 75, 689, 174], truck

    1: 49%, [ 151, 121, 561, 431], bicycle

  3. 输出结果会保存为当前目录的result.png

    orangepi@orangepi4a:~/board-demo/yolov5/build$ ls result.png

    result.png

     

运行head_pose人体姿态识别示例

  1. 首先编译head_pose示例。

    orangepi@orangepi:~/board-demo$ cd head_pose

    orangepi@orangepi:~/board-demo/head_pose$ mkdir build

    orangepi@orangepi:~/board-demo/head_pose$ cd build

    orangepi@orangepi:~/board-demo/head_pose/build$ cmake ..

    orangepi@orangepi:~/board-demo/head_pose/build$ make

  2. 然后执行下面的命令运行示例。

    orangepi@orangepi:~/board-demo/head_pose/build$ ./head_pose -b1 ../model/rfb_landm_face_320_320_sim_x527.nb -b2 ../model/head_pose_x527.nb -i ../input_data/000438.jpg

  3. 输出结果会保存到当前目录的head_pose_result.jpg

    orangepi@orangepi:~/board-demo/head_pose/build$ ls head_pose_result.jpg

    head_pose_result.jpg

     

运行resnet50图像分类示例

  1. 首先编译resnet50示例。

    orangepi@orangepi:~/board-demo$ cd resnet50

    orangepi@orangepi:~/board-demo/resnet50$ mkdir build

    orangepi@orangepi:~/board-demo/resnet50$ cd build

    orangepi@orangepi:~/board-demo/resnet50/build$ cmake ..

    orangepi@orangepi:~/board-demo/resnet50/build$ make

  2. 然后执行下面的命令运行示例。

    orangepi@orangepi:~/board-demo/resnet50/build$ ./resnet50 ../model/v2/resnet50.nb ../input_data/dog_224_224.jpg

  3. 输出结果信息如下所示,输出了模型预测的前5名,其中最可能的类别是collie

    orangepi@orangepi:~/board-demo/resnet50/build$ ./resnet50 ../model/v2/resnet50.nb ../input_data/dog_224_224.jpg

    ...

    ========== top5 ==========

    class id: 231, prob: 15.432617, label: collie

    class id: 230, prob: 13.103271, label: Shetland sheepdog, Shetland sheep dog, Shetland

    class id: 169, prob: 12.617920, label: borzoi, Russian wolfhound

    class id: 224, prob: 12.423828, label: groenendael

    class id: 160, prob: 10.191406, label: Afghan hound, Afghan

    class_postprocess success.

运行struct2depth深度检测示例

  1. 首先编译struct2depth示例。

    orangepi@orangepi:~/board-demo$ cd struct2depth

    orangepi@orangepi:~/board-demo/struct2depth$ mkdir build

    orangepi@orangepi:~/board-demo/struct2depth$ cd build

    orangepi@orangepi:~/board-demo/struct2depth/build$ cmake ..

    orangepi@orangepi:~/board-demo/struct2depth/build$ make

  2. 然后执行下面的命令运行示例。

    orangepi@orangepi:~/board-demo/struct2depth/build$ ./struct2depth -b ../model/v2/struct2depth.nb -i ../input_data/0015.jpg

  3. 模型推理的深度信息将会保存到jpg和txt文件中。

    orangepi@orangepi:~/board-demo/struct2depth/build$ ls disp_* output_*

    disp_color.jpg disp_show.jpg output_1.txt output_3.txt

    disp_gray.jpg output_0.txt output_2.txt

运行chineseocr文字识别示例

  1. 首先编译chineseocr示例。

    orangepi@orangepi:~/board-demo$ cd chineseocr

    orangepi@orangepi:~/board-demo/chineseocr$ mkdir build

    orangepi@orangepi:~/board-demo/chineseocr$ cd build

    orangepi@orangepi:~/board-demo/chineseocr/build$ cmake ..

    orangepi@orangepi:~/board-demo/chineseocr/build$ make

  2. 然后执行下面的命令运行示例。

    orangepi@orangepi:~/board-demo/chineseocr/build$ ./chineseocr -d ../model/v2/ -1 dbnet_1024 -2 angle_net -3 crnn_lite_lstm_256 -4 keys.txt -i ../input_data/1.jpg

  3. 输出结果如下所示,可以看到识别到了图片中的文字。

    orangepi@orangepi:~/board-demo/chineseocr/build$ ./chineseocr -d ../model/v2/ -1 dbnet_1024 -2 angle_net -3 crnn_lite_lstm_256 -4 keys.txt -i ../input_data/1.jpg

    ...

    =====End detect=====

    FullDetectTime(903.447417ms)

    我们在全志科技

    AI

    芯片

    起飞12345666666 !

    run finished.

    ~CrnnNet.

    ~AngleNet.

    ~DbNet.

    ~NpuUint.

烧写linux镜像到eMMC的方法

注意,开发板可以通过TF卡启动,也可以通过eMMC启动,TF卡的优先级要高于eMMC。也就是说,如果开发板插了TF卡,并且TF卡中是有系统的,那么默认就会启动TF卡中系统,而不会启动eMMC中的系统。

  1. 烧录linux镜像到eMMC中需要借助TF卡来完成,首先将linux镜像烧录到TF卡上,然后启动开发板进入linux系统

  2. 然后运行nand-sata-install脚本,记得加sudo权限

    orangepi@orangepi:~$ sudo nand-sata-install

  3. 然后选择2 Boot from eMMC - system on eMMC

     

  4. 然后会弹出一个警告,脚本将会擦除eMMC上的所有数据,选择<Yes>继续

     

  5. 然后会提示选择文件系统的类型,支持ext2/3/4、f2fs以及btrfs五种文件系统

     

  6. 然后会开始格式化eMMC,格式化完eMMC后就会开始烧录linux镜像到eMMC中 

  7. 烧录完后会提示下面的选项,可以选择<Power off>直接关机

     

  8. 然后拔出TF卡,再重新上电,就会启动eMMC中的linux系统了

关机和重启开发板的方法

  1. 在Linux系统运行的过程中,如果直接拔掉电源断电,可能会导致文件系统丢失某些数据,建议断电前先使用poweroff命令关闭开发板的Linux系统,然后再拔掉电源

    orangepi@orangepi:~$ sudo poweroff

  2. 另外开发板配有开关机按键,还可以短按开发板上的开关机按键来关机。

     

注意,Linux桌面版系统按下开关机按键后会弹出下图所示的确认框,需要点击Power Off选项后才会关机。

 

  1. 关机后长按开发板上的开关机按键即可开机。

     

  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。

     

  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

注意,使用T527 Soc的开发板是需要下载orangepi-build的next分支源码的,上面的git clone命令需要指定orangepi-build源码的分支为next。

 

通过git clone命令下载orangepi-build的代码是不需要输入github账号的用户名和密码的(下载本手册中的其他代码也是一样的),如果如输入git clone命令后Ubuntu PC提示需要输入github账号的用户名和密码,一般都是git clone后面的orangepi-build仓库的地址输入错误了,请仔细检查命令拼写是否有错误,而不是以为我们这里忘了提供github账号的用户名和密码。

T527系列开发板当前使用的u-boot和linux内核版本如下所示:

分支 u-boot版本 linux内核版本
current u-boot v2018.05 linux5.15

这里所说的分支和orangepi-build源代码的分支不是同一个东西,请不要搞混了。此分支主要是用来区分不同内核源码版本的。

目前全志提供的linux5.15 bsp内核我们定义为current分支。

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中的交叉编译工具链是否都存在,如果不存在则会重新开始下载,如果存在则直接使用,不会重复下载。

 

交叉编译工具链在中国境内的镜像网址为清华大学的开源软件镜像站:

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

编译T527 Linux内核源码使用的交叉编译工具链为:

  1. linux5.15

    gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu

    编译T527 u-boot源码使用的交叉编译工具链为:

  1. v2018.05

    gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabi

orangepi-build完整目录结构说明

  1. orangepi-build仓库下载完后并不包含linux内核、u-boot的源码以及交叉编译工具链,linux内核和u-boot的源码存放在独立的git仓库中

    1. linux内核源码存放的git仓库如下,注意切换linux-orangepi仓库的分支为

      https://github.com/orangepi-xunlong/linux-orangepi/tree/orange-pi-5.15-sun55iw3

    2. u-boot源码存放的git仓库如下,注意切换u-boot-orangepi仓库的分支为

      https://github.com/orangepi-xunlong/u-boot-orangepi/tree/v2018.05-t527

  2. 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,然后回车

     

  3. 接着选择开发板的型号

     

  4. 然后就会开始编译u-boot,编译current分支时提示的部分信息说明如下所示:

    1. u-boot源码的版本

      [ o.k. ] Compiling u-boot [ v2018.05 ]

    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-current-orangepi4a_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=orangepi4a BRANCH=current BUILD_OPT=u-boot ]

  5. 查看编译生成的u-boot deb包

    test@test:~/orangepi-build$ ls output/debs/u-boot/

    linux-u-boot-current-orangepi4a_x.x.x_arm64.deb

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

    ......

  7. 调试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-current-orangepi4a_x.x.x_arm64.deb root@192.168.1.xxx:/root

    2. 再安装刚才上传的新的u-boot的deb包

      orangepi@orangepi:~$ sudo dpkg -i linux-u-boot-current-orangepi4a_x.x.x_arm64.deb

    3. 然后运行 nand-sata-install脚本

      orangepi@orangepi:~$ sudo nand-sata-install

    4. 然后选择5 Install/Update the bootloader on SD/eMMC

       

    5. 按下回车键后首先会弹出一个Warning

       

    6. 再按下回车键就会开始更新u-boot,更新完后会显示下面的信息

       

    7. 然后就可以重启开发板来测试u-boot的修改是否生效了

编译linux内核

  1. 运行build.sh脚本,记得加sudo权限

    test@test:~/orangepi-build$ sudo ./build.sh

  2. 选择Kernel package,然后回车

     

  3. 然后会提示是否需要显示内核配置界面,如果不需要修改内核配置,则选择第一个即可,如果需要修改内核配置,则选择第二个

     

  4. 接着选择开发板的型号

     

  5. 如果第3)步选择了需要显示内核配置菜单(第二个选项),则会弹出通过make menuconfig打开的内核配置的界面,此时可以直接修改内核的配置,修改完后再保存退出即可,退出后会开始编译内核源码。

     

  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脚本

     

  1. 编译current分支内核源码时提示的部分信息说明如下:

    1. linux内核源码的版本

      [ o.k. ] Compiling current kernel [ 5.15.147 ]

    2. 使用的交叉编译工具链的版本

      [ o.k. ] Compiler version [ aarch64-linux-gnu-gcc 11 ]

    3. 内核默认使用的配置文件以及它存放的路径如下所示

      [ o.k. ] Using kernel config file [ orangepi-build/external/config/kernel/linux-5.15-sun55iw3-current.config ]

    4. 编译生成的内核相关的deb包的路径

      [ o.k. ] Target directory [ output/debs/ ]

    5. 编译生成的内核镜像deb包的包名

      [ o.k. ] File name [ linux-image-current-sun55iw3_x.x.x_arm64.deb ]

    6. 编译使用的时间

      [ o.k. ] Runtime [ 10 min ]

    7. 最后会显示重复编译上一次选择的内核的编译命令,使用下面的命令无需通过图形界面选择,可以直接开始编译内核源码

      [ o.k. ] Repeat Build Options [ sudo ./build.sh BOARD=orangepi4a BRANCH=current BUILD_OPT=kernel KERNEL_CONFIGURE=no ]

  2. 查看编译生成的内核相关的deb包

    1. linux-dtb-current-sun55iw3_x.x.x_arm64.deb包含有内核使用的dtb文件

    2. linux-headers-current-sun55iw3_x.x.x_arm64.deb包含内核头文件

    3. linux-image-current-sun55iw3_x.x.x_arm64.deb包含内核镜像和内核模块

      test@test:~/orangepi-build$ ls output/debs/linux-*

      output/debs/linux-dtb-current-sun55iw3_x.x.x_arm64.deb

      output/debs/linux-headers-current-sun55iw3_x.x.x_arm64.deb

      output/debs/linux-image-current-sun55iw3_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-current-sun55iw3_x.x.x_arm64.deb root@192.168.1.xxx:/root

    2. 再安装刚才上传的新的linux内核的deb包

      orangepi@orangepi:~$ sudo dpkg -i linux-image-current-sun55iw3_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,然后回车

 

  1. 接着选择开发板的型号

     

  2. 然后选择rootfs的类型

     

  3. 然后选择镜像的类型

    1. Image with console interface (server)表示服务器版的镜像,体积比较小

    2. Image with desktop environment表示带桌面的镜像,体积比较大

       

  4. 如果是编译服务器版的镜像,还可以选择编译Standard版本或者Minimal版本,Minimal版本预装的软件会比Standard版本少很多(没特殊需求请不要选择Minimal版本,因为很多东西默认没有预装,部分功能可能用不了

     

  5. 如果是编译桌面版本的镜像还需要选择桌面环境的类型,目前只维护GNOME,所以请选择GNOME类型的桌面

     

     

    然后可以选择需要安装的额外的软件包。这里请按下回车键直接跳过。

     

  6. 然后就会开始编译rootfs,编译时提示的部分信息说明如下

    1. rootfs的类型

      [ o.k. ] local not found [ Creating new rootfs cache for jammy ]

    2. 编译生成的rootfs压缩包的存放路径

      [ o.k. ] Target directory [ orangepi-build/external/cache/rootfs ]

    3. 编译生成的rootfs压缩包的名字

      [ o.k. ] File name [ jammy-gnome-arm64.5250ec7002de9e81a41de169f1f89721.tar.lz4 ]

  7. 查看编译生成的rootfs压缩包

    1. jammy-gnome-arm64.5250ec7002de9e81a41de169f1f89721.tar.lz4是rootfs的压缩包,名字各字段的含义为

      1. jammy表示rootfs的linux发行版的类型

      2. gnome表示rootfs为桌面版的类型,如果为cli则表示服务器版类型

      3. arm64表示rootfs的架构类型

      4. 25250ec7002de9e81a41de169f1f89721是由rootfs安装的所有软件包的包名生成的MD5哈希值,只要没有修改rootfs安装的软件包的列表,那么这个值就不会变,编译脚本会通过这个MD5哈希值来判断是否需要重新编译rootfs

    2. jammy-gnome-arm64.5250ec7002de9e81a41de169f1f89721.tar.lz4.list列出了rootfs安装的所有软件包的包名

      test@test:~/orangepi-build$ ls external/cache/rootfs/

      jammy-gnome-arm64.5250ec7002de9e81a41de169f1f89721.tar.lz4

      jammy-gnome-arm64.5250ec7002de9e81a41de169f1f89721.tar.lz4.current

      jammy-gnome-arm64.5250ec7002de9e81a41de169f1f89721.tar.lz4.list

  8. 如果需要的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,然后回车

 

  1. 然后选择开发板的型号

     

  2. 然后选择rootfs的类型

     

  3. 然后选择镜像的类型

    1. Image with console interface (server)表示服务器版的镜像,体积比较小

    2. Image with desktop environment表示带桌面的镜像,体积比较大

       

  4. 如果是编译服务器版的镜像,还可以选择编译Standard版本或者Minimal版本,Minimal版本预装的软件会比Standard版本少很多(没特殊需求请不要选择Minimal版本,因为很多东西默认没有预装,部分功能可能用不了

     

  5. 如果是编译桌面版本的镜像还需要选择桌面环境的类型,目前只维护GNOME,所以请选择GNOME类型的桌面

     

     

    然后可以选择需要安装的额外的软件包。这里请按下回车键直接跳过。

     

  6. 然后就会开始编译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命令写入到镜像中

  7. 编译完镜像后会提示下面的信息

    1. 编译生成的镜像的存放路径

      [ o.k. ] Done building [ output/images/orangepi4a_x.x.x_debian_jammy_linux5.15.xx_gnome_desktop/orangepi4a_x.x.x_debian_jammy_linux5.15.xx_gnome_desktop.img ]

    2. 编译使用的时间

[ o.k. ] Runtime [ 19 min ]

  1. 重复编译镜像的命令,使用下面的命令无需通过图形界面选择,可以直接开始编译镜像

    [ o.k. ] Repeat Build Options [ sudo ./build.sh BOARD=orangepi4a BRANCH=current BUILD_OPT=image RELEASE=jammy BUILD_MINIMAL=no BUILD_DESKTOP=no KERNEL_CONFIGURE=yes ]

Android 13系统使用说明

已支持的Android版本

Android版本 内核版本
Android 13 linux5.15

Android 13功能适配情况

功能 Android 13
HDMI视频 OK
HDMI音频 OK
USB2.0 x 4 OK
TF卡启动 OK
eMMC OK
NVME SSD识别 OK
千兆网卡 OK
WIFI OK
蓝牙 OK
RTC芯片 OK
耳机音频 OK
LCD屏幕 OK
EDP OK
CAM1 NO
CAM2 NO
LED灯 OK
40 pin GPIO OK
40 pin I2C OK
40 pin SPI OK
40 pin UART OK
40 pin PWM OK
温度传感器 OK
Mali GPU OK
视频编解码 OK

ADB的使用方法

USB OTG模式切换的方法

开发板有4个USB接口,其中下图红框标注的USB接口既可以支持Host模式,又可以支持Device模式,其它3个USB接口只支持Host模式。

 

USB OTG接口默认为Host模式,可以用来接鼠标键盘等USB设备,如果要使用ADB需要手动切换为Device模式。

  1. 首先打开Settings

     

  2. 然后找到About tablet

     

  3. 然后用鼠标多次点击Build number选项,直到出现You are now a developer!的提示

     

  4. 然后返回上一级菜单,选择System

     

  5. 然后选择Developer options

     

  6. 最后找到USB OTG Mode Switch开关,打开开关切换为Device模式,关闭开关切换为Host模式

 

使用数据线连接adb调试

  1. 首先准备一根品质良好的USB 2.0公对公数据线

     

  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

t527-demo:/ #

使用网络连接adb调试

使用网络adb无需USB2.0公对公数据线来连接电脑和开发板,而是通过网络来通信,所以首先请确保开发板的有线或者无线网络已经连接好了,然后获取开发板的IP地址,后面要用到。

  1. 确保Android系统的service.adb.tcp.port设置为5555端口号

    console:/ # getprop | grep "adb.tcp"

    [service.adb.tcp.port]: [5555]

  2. 如果service.adb.tcp.port没有设置,可以在串口中使用下面的命令设置网络adb的端口号

console:/ # setprop service.adb.tcp.port 5555

console:/ # stop adbd

console:/ # 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

t527-demo:/ #

HDMI转VGA显示测试

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

    1. HDMI转VGA转换器

       

    2. 一根VGA线

       

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

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

     

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

WI-FI的连接方法

  1. 首先选择Settings

     

  2. 然后选择Network & Internet

     

  3. 然后选择Internet

     

  4. 然后打开WI-FI

     

  5. 打开WI-FI后在Available networks下面就可以看到搜索到的信号

     

  6. 选择想连接的WI-FI后会弹出下图所示的密码输入界面

     

  7. 然后使用键盘输入WI-FI对应的密码,再使用鼠标点击虚拟键盘中的回车按钮就会开始连接WI-FI了

     

  8. WI-FI连接成功后的显示如下图所示

     

WI-FI hotspot的使用方法

  1. 首先请确保以太网口已连接网线,并且能正常上网

  2. 然后选择Settings

     

  3. 然后选择Network & Internet

     

  4. 然后选择Hotspot & tethering

     

  5. 然后选择Wi-Fi hotspot

     

  6. 然后打开Wi-Fi Hotspot,下图中还可以看到生成的热点的名字和密码,记住它们,在连接热点的时候要用到(如果需要修改热点的名字和密码,需要先关闭Wi-Fi Hotspot,然后才能修改)

     

  7. 此时可以拿出你的手机,如果一切正常,在手机搜索到的WI-FI列表中就能找到上图Hotspot name下面显示的同名(这里为AndroidAP_4174)的WIFI热点了。然后可以点击AndroidAP_4174连接热点,密码在上图的Hotspot password下面可以看到

     

  8. 连接成功后显示如下图所示(不同手机界面会有区别,具体界面以你手机显示的为准)。此时就可以在手机上打开一个网页看下能否上网了,如果能正常打开网页,说明开发板的WI-FI Hotspot能正常使用

     

查看以太网口IP地址的方法

  1. 首先请确保开发板的千兆网口连接到了路由器或者交换机

  2. 然后打开Settings

     

  3. 然后选择Network & Internet

     

  4. 然后选择Ethernet

     

  5. 然后选择Ethernet settings

     

  6. 然后就能看到开发板有线网口的IP地址信息了

     

蓝牙的连接方法

  1. 首先选择Settings

     

  2. 然后选择Connected devices

 

  1. 然后选择Pair new device开始扫描周围的蓝牙设备

     

  2. 搜索到的蓝牙设备会在Available devices下面显示出来

     

  3. 然后点击想要连接的蓝牙设备就可以开始配对了,当弹出下面的界面时,请使用鼠标选择Pair选项

     

  4. 这里测试的是开发板和安卓手机蓝牙的配置过程,此时在手机上会弹出确认界面,在手机上也点击配对按钮后就会开始配对过程

  5. 配对完成后,再打开Paired devices下面就可以看到已配对的蓝牙设备

     

  6. 此时可以使用手机蓝牙给开发板发送一张图片,发送后,在开发板的安卓系统中可以看到下面的提示,然后点击Incoming file

     

  7. 然后在弹出的窗口中点击Accept就可以开始接收手机发过来的图片了

     

  8. 开发板Android系统蓝牙接收到的图片可以打开文件管理器的Download目录查看

     

10.1寸MIPI 屏幕的使用方法

请确保使用的 Android 镜像为下面的版本的镜像:

OrangePi4A_T527_Android13_lcd_v1.x.x.img

  1. 首先需要组装好屏幕,请参考10.1寸MIPI屏幕的组装方法

  2. 开发板上mipi lcd屏幕的接口的位置如下图所示:

     

  3. 将组装好的屏幕接到开发板的LCD接口,注意拔掉HDMI接口,给板子接通Type-C电源,并上电,系统启动后,就可以看到屏幕显示如下图所示(默认为竖屏

 

eDP屏幕的使用方法

eDP屏幕是没有触摸功能的。

请确保使用的 Android 镜像为下面的版本的镜像:

OrangePi4A_T527_Android13_v1.x.x.img

  1. 目前仅适配了一款15.6寸的eDP屏幕,包含的配件如下:

    1. 0.5间距30pin单头同向排线

       

    2. 15.6寸 eDP显示屏,分辨率为1920x1080。

       

  2. 将30pin单头同向排线的FPC端连接到开发板的eDP接口,另一端连接到屏幕的eDP接口

     

  3. 再给板子接通Type-C电源,并上电,系统启动后,就可以看到屏幕显示如下图所示

     

USB摄像头使用方法

  1. 首先在开发板的USB接口中插入USB(UVC协议)摄像头

  2. USB摄像头如果识别正常,在/dev下会生成相应的video设备节点

    console:/ # ls /dev/video0

    /dev/video0

  3. 然后确保Ubuntu PC和开发板的adb连接正常,adb的使用方法请参考ADB的使用方法一小节的说明

  4. 在开发板资料下载页面的官方工具中下载USB摄像头测试APP

     

     

  5. 然后使用adb命令安装USB摄像头测试APP到Android系统中,当然也可以使用U盘拷贝的方式进行安装

    test@test:~$ adb install usbcamera.apk

  6. 安装完后在Android的APP界面可以看到USB摄像头的启动图标

     

  7. 然后双击打开USB摄像头APP就可以看到USB摄像头的输出视频了

Android系统ROOT说明

Orange Pi发布的Android系统已经ROOT,可以使用下面的方法来测试。

  1. 在开发板资料下载页面的官方工具中下载rootcheck.apk

     

     

  2. 然后确保Ubuntu PC和开发板的adb连接正常,adb的使用方法请参考ADB的使用方法一小节的说明

  3. 然后使用adb命令安装rootcheck.apk到Android系统中,当然也可以使用U盘拷贝的方式进行安装

    test@test:~$ adb install rootcheck.apk

  4. 安装完后在Android的的APP界面可以看到ROOT测试工具的启动图标

     

  5. 第一次打开ROOT测试工具后的显示界面如下图所示

     

  6. 然后就可以点击CHECK NOW开始Android系统的ROOT状态的检查,检查完后的显示如下所示,可以看到Android系统已取得ROOT权限

     

40 pin 接口 GPIO、UART、SPI 测试

40 pin的GPIO口测试方法

  1. 首先在桌面中打开wiringOP APP

     

  2. 然后点击GPIO_TEST按钮打开GPIO测试界面

     

  3. GPIO测试界面如下图所示,左边的两排CheckBox按钮跟40 pin引脚是一一对应的关系。当勾选CheckBox按钮时,对应的GPIO引脚会被设置为OUT模式,引脚电平设置为高电平;当取消勾选时,GPIO引脚电平设置为低电平;当点击右边的GPIO READALL按钮时,可以获取到wPi号、GPIO模式、引脚电平等信息。当点击BLINK ALL GPIO按钮时,所有引脚会不断地切换高低电平

     

  4. 然后点击GPIO READALL按钮,输出信息如下图所示:

     

  5. 开发板40 pin中总共有28个GPIO口可以使用,下面以7号引脚——对应GPIO为PB4 ——对应wPi序号为2——为例演示如何设置GPIO口的高低电平。首先点击7号引脚对应的CheckBox按钮,当按钮为选中状态时,7号引脚会设置为高电平,设置完后可以使用万用表测量引脚的电压的数值,如果为3.3v,说明设置高电平成功

     

  6. 然后点击GPIO READALL按钮,可以看到当前的7号引脚模式为OUT,引脚电平为高电平

     

  7. 再次点击下图的CheckBox按钮取消勾选状态,7号引脚会设置为低电平,设置完后可以使用万用表测量引脚的电压的数值,如果为0v,说明设置低电平成功

     

  8. 然后点击GPIO READALL按钮,可以看到当前的7号引脚模式为OUT,引脚电平为低电平

     

40 pin的UART测试方法

  1. Android中默认打开了UART2UART7,对应的设备节点为/dev/ttyAS2/dev/ttyAS7

    t527-demo:/ $ ls /dev/ttyAS*

    ttyAS0 ttyAS1 ttyAS2 ttyAS7

  2. 首先在桌面中打开wiringOP APP

     

  3. 然后点击UART_TEST按钮打开UART测试界面

     

  4. wiringOP的串口测试界面如下图所示

 

  1. 以测试UART2为例,在选择框中选择/dev/ttyAS2节点

     

  2. 再在编辑框中输入想要设置的波特率,然后点击OPEN按钮打开/dev/ttyAS2节点,打开成功后,OPEN按钮变为不可选中状态,CLOSE按钮和SEND按钮变为可选中状态

 

  1. 然后使用杜邦线短接uart2的rx和tx引脚
uart2
tx引脚 对应40 pin的11号引脚
rx引脚 对应40 pin的13号引脚
  1. 然后可以在下面的发送编辑框中输入一段字符,点击SEND按钮开始发送

 

  1. 如果一切正常,接收框内会显示已接收到的字符串

 

40 pin的SPI测试方法

  1. 40 pin中可以用的SPI为SPI1,对应的设备节点为/dev/spidev1.0

     

  2. 这里演示下通过w25q64模块来测试SPI1接口,首先在SPI1接口接入w25q64模块

如果没有w25q64模块也没关系,因为开发板上有一个SPIFlash接在了SPI0上,在安卓中SPI0的配置默认也打开了,所以我们也可以直接使用板载的SPIFlash测试。

  1. 然后在桌面中打开wiringOP APP

  2. 然后点击SPI_TEST按钮打开SPI的测试界面

     

  3. 然后在左上角选择spi的设备节点,如果直接测试板载的SPIFlash,那么保持默认的/dev/spidev0.0即可,如果在40 pin的spi1上接了w25q64模块,那么就请选择/dev/spidev1.0

     

  4. 然后点击OPEN按钮初始化SPI

 

  1. 然后填充需要发送的字节,比如读取板载SPIFlash的ID信息,在data[0]中填入地址0x9f,然后点击TRANSFER按钮

     

  2. 最后APP会显示读取到的板载SPI Flash的ID信息

 

  1. 如果是读取接在40 pin SPI1上的w25q64模块,那么读取到的ID信息如下图所示

     

  2. w25q64模块的MANUFACTURER ID为EFh,Device ID为4017h,跟上面读取到的值是对应的(h代表是16进制)

     

40 pin的I2C测试方法

  1. Android中默认打开了40 pin中的i2c4和i2c5,对应的设备节点分别为/dev/i2c-4/dev/i2c-5

    console:/ # ls /dev/i2c-4 /dev/i2c-5

    /dev/i2c-4 /dev/i2c-5

  2. 首先在桌面中打开wiringOP APP

     

  3. 然后点击I2C_TEST按钮打开i2c的测试界面

     

  4. wiringOP的i2c测试界面如下图所示

     

  5. 以测试i2c4为例,在选择框中选择/dev/i2c-4节点

 

  1. 然后在40 pin的i2c4引脚上接一个i2c设备,这里以ds1307 rtc模块为例

     

RTC模块的引脚 开发板40 pin对应的引脚
5V 2号引脚
GND 6号引脚
SDA 3号引脚
SCL 5号引脚
  1. ds1307 rtc模块的i2c地址为0x68,接好线后,我们可以在串口命令行中使用i2cdetect -y -r 4命令查看下是否能扫描到ds1307 rtc模块的i2c地址。如下图所示,如果能看到0x68这个地址,说明ds1307 rtc模块接线正确。

    console:/ # i2cdetect -y 4

     

  2. 然后在wiringOP中设置i2c的地址为0x68,再点击OPEN按钮打开i2c4

     

  3. 点击OPEN按钮打开i2c4后的显示如下所示:

     

  4. 然后我们测试下往rtc模块的寄存器中写入一个值,比如往0x1c地址写入0x55

    1. 我们首先设置需要写入的寄存器的地址为0x1c

       

    2. 然后设置需要写入的值为0x55

       

    3. 然后点击WRITE BYTE按钮执行写入的动作

       

  5. 然后点击READ BYTE按钮读取下0x1c寄存器的值,如果显示为0x55,就说明i2c读写测试通过

     

附录

用户手册更新历史

版本 日期 更新说明
v1.0 2024-11-14 初始版本

镜像更新历史

日期 更新说明
2024-11-14 OrangePi4A_T527_Android13_v1.0.0.tar.gz

OrangePi4A_T527_Android13_lcd_v1.0.0.tar.gz

Orangepi4a_1.0.0_ubuntu_jammy_server_linux5.15.147.7z

Orangepi4a_1.0.0_debian_bookworm_server_linux5.15.147.7z

Or angepi4a_1.0.0_ubuntu_jammy_desktop_gnome_linux5.15.147.7z

Orang epi4a_1.0.0_debian_bookworm_desktop_gnome_linux5.15.147.7z

  • 初始版本