音乐播放器
Dustin Blog
 
文章 标签
9

Powered by Dustin | Theme: Fog

设备硬件功能测试

👏 欢迎使用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 无法识别。

    1. 确定模块是否插入 。
    2. 平台 usb 驱动是否正确加载 。
    3. 模块是否上电,一般设备有 GPIO 引脚控制模块电源 。
    4. 模块有异常,可能是模块没有在正确的工作模式。
  • 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 网址(测试)

😘 Thank you for browsing,Enjoy~