阅

设备硬件功能测试
👏 欢迎使用OpenWrt,本文主要记录基于 OpenWrt 环境下实现的一些设备硬件功能上的简单的测试方案!
👇 LED 测试
- LED 的接口在 /sys/class/leds/ 下面,以 WiFi 的 LED 为例。
echo 1 > /sys/class/leds/wifi/brightness # 点亮
echo 0 > /sys/class/leds/wifi/brightness # 熄灭
👇 RTC 测试
- 使用 date、hwclock 指令,进行 RTC 时间设置,并读取对比。
date -s "2020-06-18 15:25:00" # 设置系统时间
hwclock -w # 同步系统时间到RTC中
date # 查看系统时间
hwclock # 查看RTC时间
👇 Reset 按键测试
- 输入命令后,按键时有内容输出,则验证通过。
cat /dev/input/event0 | hexdump
👇 存储设备测试
- 使用 cp、diff 指令,进行文件读写测试。
mount /dev/sda1 /mnt # 挂载U盘
cp test /mnt # 拷贝test文件到U盘挂载的目录
diff test /mnt/test # 比对两个文件的区别
👇 网卡网口测试
- 配置网桥 ping 包方式。
for intf in $(ls /sys/class/net/ | grep eth); do ifconfig $intf up; done # 使能上联口
brctl addbr br-lan # 创建网桥
for intf in $(ls /sys/class/net/ | grep -P 'lan|wan'); do brctl addif br-lan $intf; done # 往桥内添加网口节点
for intf in $(ls /sys/class/net/ | grep -P 'lan|wan'); do ifconfig $intf up; done # 把对应网口节点启用
ifconfig br-lan 192.168.100.1 # 给桥配置IP地址
ping 192.168.100.212 # 往对端(PC端)ping包(PC的IP地址)
👇 4G/5G 模块测试
- 修改内核代码,更改 4G/5G 网口名字。
vi drivers/net/usb/usbnet.c
######文件修改内容如下######
strcpy (net->name, "usb%d");
######文件修改内容结束######
- 源码增加模块 USB 转串口驱动,option_ids 结构体列表中增加模块的 vid:pid,根据厂家手册,屏蔽对应的 usb 端口,增加了高兴新的 4G、5G 模块 id,同时屏蔽了 3,4,5 的 usb 端口。
vi drivers/usb/serial/option.c
######文件修改内容如下######
{ USB_DEVICE(0x305a, 0x1406)}, /* GOSUNCN */
######文件修改内容结束######
-
问题排查之 lsusb 无法识别。
- 确定模块是否插入 。
- 平台 usb 驱动是否正确加载 。
- 模块是否上电,一般设备有 GPIO 引脚控制模块电源 。
- 模块有异常,可能是模块没有在正确的工作模式。
-
ttyUSBx 的枚举。
ttyUSB 接口包含了 at 口和 modem 口,at 口出来后,才能实现拨号联网。 如果 ls /dev/ttyUSB*没有枚举,lsusb 可以识别到模块 id,说明模块的 USB 串口驱动未正确加载。 -
控制 4G/5G 模块上下电。
# 1.GPIO查看的起始值
cat /sys/kernel/debug/gpio
# 2.GPIO查看label信息
ll /sys/class/gpio
cat gpiochip446/label
cat gpiochip482/label
# 3.通过GPIO控制模块上下电。根据软硬件接口文档,4G模块的电源控制口线是GPIO2[0],gpio编号就是482,向后顺延GPIO2[1],gpio编号就是483
echo 482 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio482/direction
echo 0 > /sys/class/gpio/gpio482/value
- 常用模块拨号命令。
# 高新兴ME3630-4G
eserial /dev/ttyUSB1 at+csq # 查询信号强度
eserial /dev/ttyUSB1 AT+ZECMCALL=1 # 拨号
# 广和通NL668-4G
eserial /dev/ttyUSB1 at+csq # 查询信号强度
eserial /dev/ttyUSB1 at+gtusbmode=18
eserial /dev/ttyUSB1 at\$qcrmcall=1,1 # 拨号
# 广和通L610-4G
eserial /dev/ttyUSB1 at+csq # 查询信号强度
eserial /dev/ttyUSB1 at+gtrndis=1,1 # 拨号
# 广和通FM150-5G
eserial /dev/ttyUSB1 at+cesq # 查询信号强度
eserial /dev/ttyUSB1 at\$qcrmcall=1,1 # 拨号
# 广和通FM650-5G
eserial /dev/ttyUSB1 at+cesq # 查询信号强度
eserial /dev/ttyUSB1 at+gtrndis=1,1,3 # 拨号
# 移远RM500U-5G
eserial /dev/ttyUSB1 at+csq # 查询信号强度
eserial /dev/ttyUSB1 at+qnetdevctl=1,1,1 # 拨号
# 有方N511-5G
eserial /dev/ttyUSB1 at+cesq # 查询信号强度
eserial /dev/ttyUSB1 AT+NWNETSHAREACT=1,1,0 # 拨号
👇 WIFI 模块测试
- 通过 lspci 命令,查看模块的型号和 ID 值。
cat /proc/bus/pci/devices
-
判断驱动是否加载,9287 模块需加载 ath9k 驱动,9882 模块需加载 ath10 驱动,同时系统 /lib/firmware/ath10k 固件目录存在,6174 模块需加载 qca6174 驱动,同时系统 /lib/firmware/qca6174/ 固件目录存在,lsmod 命令查看驱动模块是否加载,cat /proc/bus/pci/devices 也可以看到模块目前已经加载的驱动。
-
用户态配置工具,在 linux 系统下,需要下面三个用户态工具配置 wifi。
1.iw 命令,用于创建删除无线接口。
2. 当 ap 模式创建无线热点时,需要 hostapd 工具,版本不要低于 2.7。
3. 当 sta 模式时,需要 wpa_supplicant 工具。 -
Openwrt 系统下配置 wifi。
uci show wireless #可以从/etc/config/wireless读出配置
wifi config #生成默认的wifi配置文件,openwrt加载wifi驱动后,如果/etc/config/wireless文件不存在,会自动初生成wifi配置文件
uci set #设置openwrt的无线参数
uci set wireless.default_radio0.ssid='ath10k-6174-0' #运行wifi命令,生效设置的无线参数
wifi down #禁用无线
vi /etc/config/wireless
######文件修改内容如下######
config wifi-iface 'default_radio0'
option device 'radio0'
option network 'wlan0'
option mode 'sta'
option encryption 'psk2'
option ssid 'wifi名字'
option key 'wifi密码'
######文件修改内容结束######
- hostapd 是一个用户态用于 AP 和认证服务器的守护进程。它实现了 IEEE 802.11 相关的接入管理,支持 IEEE 802.1X/WPA/WPA2/EAP 认证,RADIUS 客户端,EAP 服务器和 RADIUS 认证服务器。 hostapd 通过配置文件读取配置参数。
vi /etc/hostapd/hostapd.conf
######文件修改内容如下######
driver=nl80211
logger_syslog=127
logger_syslog_level=2
logger_stdout=127
logger_stdout_level=2
country_code=CN
ieee80211d=1
ieee80211h=1
hw_mode=a
beacon_int=100
channel=36
tx_queue_data2_burst=2.0
ieee80211n=1
ht_coex=0
ht_capab=[HT40+][SHORT-GI-20][SHORT-GI-40][TX-STBC][DSSS_CCK-40]
vht_oper_chwidth=1
vht_oper_centr_freq_seg0_idx=42
ieee80211ac=1
vht_capab=[RXLDPC][SHORT-GI-80][TX-STBC-2BY1][RX-STBC-123][MAX-MPDU-11454][MAX-A-MPDU-LEN-EXP0]
interface=wlan1
ctrl_interface=/var/run/hostapd
ap_isolate=1
use_driver_iface_addr=1
disassoc_low_ack=1
preamble=1
wmm_enabled=1
ignore_broadcast_ssid=0
uapsd_advertisement_enabled=1
wpa_passphrase=csxl83050783
auth_algs=1
wpa=2
wpa_pairwise=CCMP
ssid=qca6174-5g
bridge=br-lan
wpa_disable_eapol_key_retries=0
wpa_key_mgmt=WPA-PSK
okc=0
disable_pmksa_caching=1
######文件修改内容结束######
- wpa_supplicant 用于连接无线热点,支持支持 IEEE 802.1X/WPA/WPA2 认证。 wpa_supplicant 通过配置读取 wifi 参数。
wpa_supplicant.conf
######文件修改内容如下######
network={
scan_ssid=1 #扫描信号是否存在
ssid="ath10k-6174-1" #要连接的热点名称
key_mgmt=WPA-PSK #共享秘钥认证
psk="12345678" #密码
proto=RSN #wpa2加密协议
beacon_int=100 #检测信标间隔
}
######文件修改内容结束######
步骤1:ip addr
步骤2:ip link set wlp0s0 up(wlp0s0是我的网卡)
步骤3:wpa_supplicant -B -i wlp0s0 -c <(wpa_passphrase “WIFI名称” “密码”)
步骤4:dhclient wlp0s0
步骤5:ping 网址(测试)