当前位置:   article > 正文

NanoPi NEO Air使用三:OverlayFS、CPU温度和频率、wifi、蓝牙、npi-config

nanopi neo air

NanoPi NEO Air使用一:介绍
NanoPi NEO Air使用二:固件烧录
NanoPi NEO Air使用三:OverlayFS、CPU温度和频率、wifi、蓝牙、npi-config
NanoPi NEO Air使用四:操作GPIO
NanoPi NEO Air使用五:安装Xfce和xrdp,实现远程访问
NanoPi NEO Air使用六:使用摄像头
NanoPi NEO Air使用七:获取并编译U-boot和Linux的源码
NanoPi NEO Air使用八:编写个简单的驱动和应用程序
NanoPi NEO Air使用九:使用Linux内核自带的LED驱动
NanoPi NEO Air使用十:自己编写驱动来控制LED
NanoPi NEO Air使用十一:编写SPI驱动点亮TFT屏幕,ST7789V


固件烧录完成后就进入了FriendlyCore系统。

FriendlyCore介绍

FriendlyCore,是一个没有X-windows环境,基于Ubuntu core构建的系统,使用Qt-Embedded作为图形界面的轻量级系统,兼容Ubuntu系统软件源,非常适合于企业用户用作产品的基础OS。

本系统除了保留Ubuntu Core的特性以外,还包括以下特性:
集成Qt4.8;
集成NetworkManager网络管理器;
集成bluez等蓝牙相关软件包;
集成alsa相关软件包;
集成命令行系统配置工具npi-config;
集成Python GPIO模块RPiGPIO;
集成Python/C语言编写的demo程序,位于/root目录;
使能512M的swap分区;

运行FriendlyCore

对于有HDMI接口的板子,如果要在电视上进行操作,需要连接USB鼠标和键盘。
如果需要进行内核开发,最好选购一个串口配件,连接了串口,则可以通过串口终端对开发板进行操作。
在这里插入图片描述
FriendlyCore默认帐户:
普通用户:

用户名: pi
密码: pi
  • 1
  • 2

Root用户:

用户名: root
密码: fa
  • 1
  • 2

进入系统后可以执行下列命令查看文件系统分区大小:
df -h
在这里插入图片描述
可以看到其中有一个overlay文件系统。

OverlayFS

简介

Overlayfs是Linux下的一种堆叠文件系统,通俗地讲,根文件系统虽然在逻辑仍然是一个分区,但物理上被拆分成了两个分区来存储,其中,一个分区只读存放固化的系统数据(rootfs分区),另一个分区存储写入的数据(data分区),优点如下:

  1. 方便恢复出厂设置,格式化data分区即可;
  2. 避免重复掉电或异常掉电导致data分区挂载异常无法进入系统,由于rootfs是只读的,此时仍可以进入系统,方便维护升级;

如何鉴别系统是否工作在OverlayFS

执行df命令,如果/分区挂载类型为 overlay,表示OverlayFS正在工作:

pi@NanoPi-M1-Plus:~$ df
Filesystem     1K-blocks    Used Available Use% Mounted on
udev              474848       0    474848   0% /dev
tmpfs             102304    3564     98740   4% /run
overlay         28925547 1315493  26112465   5% /
tmpfs             511512       0    511512   0% /dev/shm
tmpfs               5120       4      5116   1% /run/lock
tmpfs             511512       0    511512   0% /sys/fs/cgroup
/dev/mmcblk0p1     40862   11852     29010  30% /boot
tmpfs             102304       0    102304   0% /run/user/1000
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

使用OverlayFS时的分区布局

会有三个分区,分别为 rootfs分区、data分区与boot分区,对应映像文件rootfs.img, userdata.img 和 boot.img:

root@NanoPi-M1-Plus:~# lsblk /dev/mmcblk0
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
mmcblk0     179:0    0 29.7G  0 disk
|-mmcblk0p2 179:2    0  1.2G  0 part
|-mmcblk0p3 179:3    0 28.5G  0 part
`-mmcblk0p1 179:1    0   40M  0 part /boot
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

其中,rootfs分区存放固化的系统数据,所有对根目录的数据写入,都会写入到 data分区。

使用OverlayFS实现恢复出厂设置功能

手动清除user data分区数据
挂载data分区并重命名相关目录:

mount /dev/mmcblk0p3 /media/ && cd /media/
mv root/ deleteme.root
mv work/ deleteme.work
reboot
  • 1
  • 2
  • 3
  • 4

重启完成后,删除目录:

mount /dev/mmcblk0p3 /media/ && rm -rf /media/deleteme.*
  • 1

更多请看:How to use overlayfs on Linux/zh

定制命令行的欢迎信息(文字LOGO)

欢迎信息主要是这个目录下的脚本来打印的:

/etc/update-motd.d/
  • 1

比如要修改 FriendlyELEC 的大字LOGO,可以修改/etc/update-motd.d/10-header 这个文件,比如要将LOGO改为HELLO,可将以下行:

TERM=linux toilet -f standard -F metal $BOARD_VENDOR
  • 1

改为:

TERM=linux toilet -f standard -F metal HELLO
  • 1

查看CPU温度和频率

命令行查看:

$ cpu_freq 
Aavailable frequency(KHz):
        480000 624000 816000 1008000
Current frequency(KHz):
        CPU0 online=1 temp=26548C governor=ondemand freq=624000KHz
        CPU1 online=1 temp=26548C governor=ondemand freq=624000KHz
        CPU2 online=1 temp=26548C governor=ondemand freq=624000KHz
        CPU3 online=1 temp=26548C governor=ondemand freq=624000KHz
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

上述信息表示当前有4个CPU核在线, 温度均约为26.5摄氏度, 运行的策略均为根据需求来决定运行频率, 当前的运行频率均为624MHz,设置频率的命令如下:

$ cpu_freq -s 1008000
Aavailable frequency(KHz):
        480000 624000 816000 1008000
Current frequency(KHz):
        CPU0 online=1 temp=36702C governor=userspace freq=1008000KHz
        CPU1 online=1 temp=36702C governor=userspace freq=1008000KHz
        CPU2 online=1 temp=36702C governor=userspace freq=1008000KHz
        CPU3 online=1 temp=36702C governor=userspace freq=1008000KHz
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

上述命令将4个CPU核的频率设置为1008MHz。

连接wifi

无论是SD接口的WiFi还是USB接口的WiFi, 它们的连接方式都是一样的。
NanoPi NEO Air上带的wifi是正基科技的APXX系列芯片,它属于SD WiFi。
在这里插入图片描述
另外系统默认也已经支持市面上众多常见的USB WiFi,插在板子的USB接口上就能使用,已测试过的USB WiFi型号如下:

序号型号
1RTL8188CUS/8188EU 802.11n WLAN Adapter
2RT2070 Wireless Adapter
3RT2870/RT3070 Wireless Adapter
4RTL8192CU Wireless Adapter
5小米WiFi mt7601
65G USB WiFi RTL8821CU
75G USB WiFi RTL8812AU

目前使用 NetworkManager 工具来管理网络,其在命令行下对应的命令是 nmcli,要连接WiFi,相关的命令如下:

  • 切换到root账户(密码:fa)
    su root
  • 查看网络设备列表
    nmcli dev

注意,如果列出的设备状态是 unmanaged 的,说明网络设备不受NetworkManager管理,你需要清空 /etc/network/interfaces下的网络设置,然后重启.

  • 开启WiFi
    nmcli r wifi on

  • 扫描附近的 WiFi 热点(按q退出列表状态)
    nmcli dev wifi

  • 连接到指定的 WiFi 热点
    nmcli dev wifi connect "SSID" password "PASSWORD" ifname wlan0

请将 SSID和 PASSWORD 替换成实际的 WiFi名称和密码。
连接成功后,下次开机,WiFi 也会自动连接。
在这里插入图片描述
此时可以看到wlan0网口已经有ip了,ping百度也通了,说明网络连接已经正常了。
在这里插入图片描述

网络正常后,可以执行下列命令来更新下软件包:
sudo apt-get update

更详细的NetworkManager使用指南可参考这篇文章: Use NetworkManager to configure network settings

如果你的USB WiFi无法正常工作, 大概率是因为文件系统里缺少了对应的USB WiFi固件。对于Debian系统, 可以在Debian-WiFi里找到并安装USB WiFi芯片的固件。而对于Ubuntu系统, 则可以通过下列命令安装所有的USB WiFi固件:
apt-get install linux-firmware

一般情况下, 各种WiFi芯片的固件都存放在/lib/firmware目录下。

配置WiFi无线热点

上面是把开发板作为station连入家里的wifi热点,让开发板上网。本节再把开发板配置为wifi热点,这样手机和电脑可以连到开发板的wifi构成一个局域网。

执行以下命令进入AP模式:
su root
turn-wifi-into-apmode yes

这时会提示你输入WiFi热点的名称和密码,按提示操作即可。
操作成功后,你可以在电脑/手机上搜索并连接热点,然后通过192.168.8.1这个地址来登录开发板:
ssh root@192.168.8.1

在提示输入密码时,输入预设的密码fa,即可登入。

为了保证ssh的流畅,用以下命令关闭wifi的省电模式:
iwconfig wlan0 power off

要切换回普通的Station模式,输入如下命令:
turn-wifi-into-apmode no

使用蓝牙传输文件

以传输文件到手机为例进行说明,首先,将你的手机蓝牙设置为可侦测状态,然后执行以下命令开始蓝牙搜索:
hcitool scan

搜索到设备时,结果举例如下:

Scanning ...
    2C:8A:72:1D:46:02   HTC6525LVW
  • 1
  • 2

这表示搜索到一台名为HTC6525LVW的手机,我们记下手机名称前面的MAC地址,然后用sdptool命令查看该手机支持的蓝牙服务:
sdptool browser 2C:8A:72:1D:46:02

注:上述命令中的MAC地址请替换成手机实际的蓝牙MAC地址

这个命令会详细列出手机蓝牙所支持的协议,我们需要关心的是一个名为 OBEX Object Push 的文件传输服务,以HTC6525LVW手机为例,其显示结果如下所示:

Service Name: OBEX Object Push
Service RecHandle: 0x1000b
Service Class ID List:
  "OBEX Object Push" (0x1105)
Protocol Descriptor List:
  "L2CAP" (0x0100)
  "RFCOMM" (0x0003)
    Channel: 12
  "OBEX" (0x0008)
Profile Descriptor List:
  "OBEX Object Push" (0x1105)
    Version: 0x0100
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

从上面的信息可以看到,这个手机的OBEX Object Push服务的所用的频道是12, 我们需要将它传递给obexftp命令,最后发起文件传输请求的命令如下:
obexftp --nopath --noconn --uuid none --bluetooth -b 2C:8A:72:1D:46:02 -B 12 -put example.jpg

注:上述命令中的MAC地址、频道和文件名请替换成实际的

执行上述命令后,请留意手机屏幕,正常情况下手机会弹出配对和接收文件的提示,确定后就开始文件传輪了。

蓝牙常见问题:

  1. 开发板上找不到蓝牙设备, 可尝试用以下命令开启蓝牙:
    rfkill unblock 0

  2. 提示找不到相关命令,可尝试用以下命令安装相关软件:
    apt-get install bluetooth bluez obexftp openobex-apps python-gobject ussp-push

npi-config

npi-config是一个命令行下的系统配置工具,可以对系统进行一些初始化的配置,可配置的项目包括:用户密码、系统语言、时区、Hostname、SSH开关、自动登录选项、硬件接口(Serial/I2C/SPI/PWM/I2S)使能等。
在SSH终端中以root账户执行以下命令即可进入:
npi-config
npi-config的显示界面如下:
在这里插入图片描述
npi-config目前仅支持基于Ubuntu的系统, 例如FriendlyCore、Ubuntu-oled、Ubuntu-tft, 暂时不支持在Debian系统上运行。
如果你在 npi-config 中没有WiKi里描述的功能菜单,可能是因为你的 npi-config 版本太旧,连上网络, 然后利用菜单上的 Update 功能更新一下即可。

$ npi-config
	7 Update|               Update this tool to the latest version
  • 1
  • 2

1 Change User Password

修改默认用户的登录密码

2 Hostname

修改主机名,比如我们修改为:ql
在这里插入图片描述

3 Boot Options

B1 Autologin: 设置如何登录系统

有3种选择:

  • Console: 开机后要求输入用户名和密码, 然后登录终端;
  • Console Autologin: 开机后自动以pi用户登录终端;
  • Qt/Embedded: 开机后不登录终端, 而是直接运行Qt Demo;

B2 Wait for Network at Boot: 开机时是否等待网络连接

一般设置为否, 就算是网络不通也仍然可以进入系统。

B3 Boot device: 选择启动设备

进入后,如果板子接了SSD,可以看到下面的列表

  • D1 Hard drive
  • D2 TF card

选择 D1 Hard drive,然后按提示进行操作即可,这样就可以让板子从SSD运行系统。
以后要恢复回 TF 卡启动,可在上述菜单中选择 D2 TF card。
当然如果板子上只有TF卡,那么上面的启动列表就为空。

4 Localisation Options

修改系统语言、时区。

5 Interfacing Options

控制是否允许使用远程SSH控制系统。
在这里插入图片描述

6 Advanced Options

A0 Display: 选择系统默认显示设备

该功能仅支持全志芯片系列的开发板。
Linux系统默认只从一个显示设备输出画面, 使用下列命令可以选择系统默认的显示设备:

$ npi-config
	6 Advanced Options|     Configure advanced setting
		A0 Display|         Select system default display device
			fb0| framebuffer0
                        fb1| fb_st7789v(X)
  • 1
  • 2
  • 3
  • 4
  • 5

(X)表示对应的显示设备是使能的, 不同型号的板子的fb设备是不一样的, 在H3/H5的板子里fb0是HDMI, fb1是Matrix - 2’8 SPI Key TFT, 请根据实际情况进行选择, 设置完毕后需要重启系统。

A1 Audio: 选择系统默认音频设备

该功能仅支持全志芯片系列的开发板。
Linux系统默认只从一个音频设备输出音频, 使用下列命令可以选择系统默认的音频设备:

$ npi-config
	6 Advanced Options|     Configure advanced setting
		A1 Audio|           Select system default audio device
			card0| [Dummy], device 0: Dummy PCM                                
                        card1| [Loopback], device 0: Loopback PCM                          
                        card2| [H3 Audio Codec], device 0: CDC PCM Codec-0 (X)             
                        card3| [allwinner,hdmi], device 0: 1c22800.i2s-i2s-hifi i2s-hifi-0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

(X)表示对应的音频card设备是使能的, 不同型号的板子的card设备是不一样的, 请根据实际情况进行选择, 设置完毕后需要重启系统。

A2 Welcome message: 使能或关闭开机欢迎界面

A3 Serial: 使能或关闭串口功能

该功能仅支持全志芯片系列并且使用Linux-4.14内核的开发板。
在这里插入图片描述

A4 I2C: 使能或关闭I2C功能

该功能仅支持全志芯片系列并且使用Linux-4.14内核的开发板。

A5 SPI: 使能或关闭SPI功能

该功能仅支持全志芯片系列并且使用Linux-4.14内核的开发板。
支持使能部分SPI设备, 包括2.8寸TFT屏幕和SPI Flash。

使能Matrix - 2’8 SPI Key TFT
Matrix - 2’8 SPI Key TFT是一个2.8寸的TFT显示屏, 详细的使用方法请参考: Matrix - 2’8 SPI TFT/zh, 这里只关注如何使能该配件。

$ npi-config
	6 Advanced Options|     Configure advanced settings
		A5 SPI|             Enable/Disable SPI
			spi0 Enable/Disable spi0[enabled]
				spidev0.0|   SPI0 char device
				spi-2.8'tft| Matrix-2'8_SPI_Key_TFT(X)				
				spi-flash|   SPI0 flash
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

(X)表示SPI0上连接的Matrix - 2’8 SPI Key TFT是使能的, 设置完毕后需要重启系统, 系统启动后屏幕上会显示校准的界面。

使能SPI0上的SPI Flash

$ npi-config
	6 Advanced Options|     Configure advanced setting
		A5 SPI|             Enable/Disable SPI
			spi0 Enable/Disable spi0[enabled]
				spidev0.0|   SPI0 char device
				spi-2.8'tft| Matrix-2'8_SPI_Key_TFT
				spi-flash|   SPI0 flash(X)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

FriendlyElec H5/H3/H2+的Linux-4.14内核集成了"mxicy,mx25l12805d"的SPI Flash驱动,但是默认并没有使能,选择’spi-flash’后即可将其使能, 设置完毕后需要重启系统。
启动Linux系统时,看到类似下面的启动信息则说明SPI Flash被成功检测到了:

m25p80 spi0.0: mx25l12805d (16384 Kbytes)
1 ofpart partitions found on MTD device spi0.0
Creating 1 MTD partitions on "spi0.0":
0x000000000000-0x000001000000 : "spi-flash"
  • 1
  • 2
  • 3
  • 4

SPI Flash在Linux系统下的使用方法如下:

$ cat /sys/class/mtd/mtd0/size          # 以byte为单位
$ cat /sys/class/block/mtdblock0/size   # 以sector(512 byte)为单位
$ apt-get install mtd-utils 
$ flash_eraseall -j /dev/mtd0           # 格式成jffs2的格式
$ mount -t jffs2 /dev/mtdblock0 /mnt    
$ mkfs.ext4 /dev/mtdblock0              # 也格式化为ext4
$ mount -t ext4 /dev/mtdblock0 /mnt
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

A6 PWM: 使能或关闭PWM功能

该功能仅支持全志芯片系列并且使用Linux-4.14内核的开发板。

A7 I2S: 使能或关闭I2S功能

该功能仅支持全志芯片系列并且使用Linux-4.14内核的开发板。

使能NanoHat PCM5102A
在这里插入图片描述

A8 IR: 使能或关闭IR 接收功能

该功能仅支持全志芯片系列并且使用Linux-4.14内核的开发板。

注意: 请先检查红外接收器是否存在。
红外接收功能默认是关闭的, 可以通过npi-config使能:

$ npi-config
    6 Advanced Options     Configure advanced settings
        A8 IR              Enable/Disable IR
            ir Enable/Disable ir[enabled]
  • 1
  • 2
  • 3
  • 4

重启系统, 然后使用下列命令测试红外接收:

$ apt-get install ir-keytable
$ echo "+rc-5 +nec +rc-6 +jvc +sony +rc-5-sz +sanyo +sharp +mce_kbd +xmp" > /sys/class/rc/rc0/protocols   # 使能紅外协议
$ ir-keytable -t
Testing events. Please, press CTRL-C to abort.
  • 1
  • 2
  • 3
  • 4

ir-keytable -t用于检查是否有接收到红外信号, 使用任意遥控器发送按键信息给红外接收器, 可以看到类似下列信息:

1522404275.767215: event type EV_MSC(0x04): scancode = 0xe0e43
1522404275.767215: event type EV_SYN(0x00).
1522404278.911267: event type EV_MSC(0x04): scancode = 0xe0e42
1522404278.911267: event type EV_SYN(0x00).
  • 1
  • 2
  • 3
  • 4
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/682040
推荐阅读
相关标签
  

闽ICP备14008679号