四川简阳建设局招标公告网站,wordpress转移,合肥营销网站建设价格,抓取wordpress背景图片Tina Linux Wi-Fi 开发指南
1 前言
1.1 文档简介
介绍Allwinner 平台上Wi-Fi 驱动移植#xff0c;介绍Tina Wi-Fi 管理框架#xff0c;包括Station#xff0c;Ap 以及Wi-Fi 常见问题。
1.2 目标读者
适用Tina 平台的广大客户和对Tina Wi-Fi 感兴趣的同事。
1.3 适用范…Tina Linux Wi-Fi 开发指南
1 前言
1.1 文档简介
介绍Allwinner 平台上Wi-Fi 驱动移植介绍Tina Wi-Fi 管理框架包括StationAp 以及Wi-Fi 常见问题。
1.2 目标读者
适用Tina 平台的广大客户和对Tina Wi-Fi 感兴趣的同事。
1.3 适用范围
Allwinner 软件平台Tina v3.0 版本及以上。 Allwinner 硬件平台R 系列(R6R11R16R18R30R40R328R331, R329,R818R528…)。 Allwinner 硬件平台MR 系列(MR133, MR813…)。 Allwinner 硬件平台H 系列(H133…)。 Allwinner 硬件平台V 系列(V853…)。
2 Wi-Fi 简介
2.1 Wi-Fi 工作的几种模式
目前Tina 平台上的Wi-Fi 一般可处于3 种工作模式分别是STATIONAPMONITOR。 • STATION连接无线网络的终端大部分无线网卡默认都处于该模式也是常用的一种模式。 • AP无线接入点常称热点比如路由器功能。 • MONITOR也称为混杂设备监听模式所有数据包无过滤传输到主机。
2.2 Tina Wi-Fi 软件结构 图2-1: Tina 软件结构图• wifimanager-v2.0包含了wifimanager-v1.0 的功能用于STATION 模式提供Wi-Fi连接扫描等功能外还集成了softap启动AP 功能和smartlink多种配网模式的功能做到了一个应用集成了多种wifi 功能方便客户使用和管理。 • wpa_supplicant: 开源的无线网络配置工具主要用来支持WEPWPA/WPA2 和WAPI 无线协议和加密认证的实际上的工作内容是通过socket 与驱动交互上报数据给用户。 • hostapd: 是一个用户态用于AP 和认证服务器的守护进程。 • monitor: Wi-Fi 处于混杂设备监听模式的处理应用。
2.3 Wi-Fi 常用命令介绍
2.3.1 station 模式
详情请看Tina_linux_wifimanger2.0_ 开发指南。
执行下面的命令前请确保wifi_deamon后台进程已启动若没有启动请先启动wifi_deamon后台进程。
wifi -o sta 以sta模式打开wifimanager
wifi -s 扫描周围网络
wifi -c ssid [passwd] 以加密或非加密的方式连接指定网络
wifi -d 断开已经连接的网络
wifi -l [all] 列出保存的网络
wifi -a [enable/disable] 重连断开的网络
wifi -r [ssid/all] 移除保存的指定网络注:
ssid 网络名
passwd 秘钥2.3.2 ap 模式
执行下面的命令前请确保wifi_deamon后台进程已启动若没有启动请先启动wifi_deamon后台进程。
wifi -o ap [ssid] [passwd] 以ap模式打开wifimanager
wifi -l 列出连接到ap热点的sta信息注:
ssid 网络名
passwd 秘钥
ap模式和station模式在不同模组上不一定能共存,详情看第5节介绍。2.3.3 monitor 模式
执行下面的命令前请确保wifi_deamon后台进程已启动若没有启动请先启动wifi_deamon后台进程。
wifi -o monitor 以monitor模式打开wifimanager注:
没有2.3.4 额外功能
执行下面的命令前请确保wifi_deamon后台进程已启动若没有启动请先启动wifi_deamon后台进程。
wifi -f 关闭wifimanager
wifi -p [softap/ble/xconfig/soundwave] 使用softap/ble/xconfig/soundwave进行配网
wifi -D [error/warn/info/debug/dump/exce] 设置打印等级
wifi -g 获取mac地址信息
wifi -m [macaddr] 设置mac地址
wifi -h 打印wifimanager使用说明注:
配网模式并不是所有模组都支持要看具体的模组。
mac地址设置只能进行临时性设置。3 Wi-Fi 模组移植 图3-1: 主控与Wi-Fi 硬件连接简图Wi-Fi 模组工作的条件如上图需要满足以下几个条件: • 供电一般有两路供电其中VCC-Wi-Fi 为主电源VCCIO-Wi-Fi 为IO 上拉电源。 • 使能要能正常工作需要WL-REG-ON 给高电平。 • SDIO与SOC 的通信有通过USBSDIO 等这里以SDIO 为例其中SDIO 0~3 为SDIO 的4 条数据线。 • 唤醒主控当系统休眠时Wi-Fi 模组可通过WL-WAKE-AP 通过中断的方式唤醒主控有些模组也通过该引脚来作为主控接收数据的中断。 • 24/26MHz 时钟信号. • 32.768KHz 信号根据模组而定有些模组内部通过5中的输入的clk 进行分频得到有些需要外部单独输入该信号。
对于Wi-Fi 模组移植重点围绕以上的几个条件进行开展对于以上几个工作条件allwinner已经提供了对应的driver根据总线设备驱动模型只需要根据各个平
台配置device 即可allwinner device 除了可以可以通过dts 外(linux-3.4 内核无dts)还可通过sys_config.fex的方式sys_config.fex 的优先级高于dts一般情
况下直接配置sys_config.fex 即可。
说明
- Tina3.5.0及之前sys_config.fex的路径tina/target/allwinner/xxx(cowbell_perf1)/configs/
- Tina3.5.1及之后sys_config.fex的路径tina/device/config/chips/xxx(r328)/configs/xxx(perf1)/
- Tina3.5.0及之前dts的路径tina/lichee/linux-xxx/arch/arm/boot/dts/
- Tina3.5.1及之后dts的路径tina/device/config/chips/xxx(r328)/configs/xxx(perf1)/board.dtslinux 3.4 devicesys_config.fex 配置
[rf_para]
module_num 10 /*用于区分模组型号默认8~10*/
module_power1 axp22_dldo1 /*power1使用的电源树dld01*/
module_power1_vol 3300000 /*power1使用的电源树电压设置为3.3v*/
module_power2 axp22_dldo2 /*power2使用的电源树dld02*/
module_power2_vol 3300000 /*power2使用的电源树电压设置为3.3v*/
module_power3 axp22_aldo3 /*power3使用的电源树dld03*/
module_power3_vol 3300000 /*power3使用的电源树电压设置为3.3v*/
/*以上是使用pmu供电的配置如果直接供电可省略*/
power_switch
chip_en /*电源使能备用于使用gpio高低点平打开电源*/
lpo_use_apclk losc_out /*32khz的时钟使能*/
[wifi_para]
wifi_used 1 /*是否使用Wi-Fi*/
wifi_sdc_id 1 /*Wi-Fi所使用的sdio 卡号*/
wl_reg_on port:PL061defaultdefault0 /*使能脚所使用的gpio*/
wl_host_wake port:PL074defaultdefault0 /*唤醒主控所使用的gpio*/
[mmc1_para]
sdc_used 1
sdc_detmode 4
sdc_buswidth 4
sdc_clk port:PG00211default /*sdio所使用的gpio号*/
sdc_cmd port:PG01211default
sdc_d0 port:PG02211default
sdc_d1 port:PG03211default
sdc_d2 port:PG04211default
sdc_d3 port:PG05211default
sdc_det
sdc_use_wp 0
sdc_wp
sdc_isio 1
sdc_regulator nonelinux 3.4 driver 路径详情请参考以下代码路径
tina/lichee/linux-3.4/drivers/misc/rf_pmlinux3.4 以上devicesys_config.fex 配置
[sdc1]
sdc1_used 1
bus-width 4
sdc1_clk port:PG00213default
sdc1_cmd port:PG01213default
sdc1_d0 port:PG02213default
sdc1_d1 port:PG03213default
sdc1_d2 port:PG04213default
sdc1_d3 port:PG05213default
sd-uhs-sdr50
sd-uhs-ddr50
sd-uhs-sdr104
cap-sdio-irq
keep-power-in-suspend
ignore-pm-notify
max-frequency 150000000 /*sdio所使用的最大扫卡频率*/
mix-frequency 150000000
[wlan]
wlan_used 1
compatible allwinner,sunxi-wlan
clocks losc_out
wlan_power_num 2 /*使用pmu供电所使用的电源数量*/
wlan_power1 vcc-wifi1 /*使用pmu供电使用的power1标示*/
wlan_power2 vcc-wifi2 /*使用pmu供电使用的power2标示*/
wlan_io_regulator vcc-io-wifi /*使用pmu供电使用的io标示*/
/*上面4行表示使用pmu供电的配置项对应后面的regulator选项。如果不使用pmu供电可忽略。*/
wlan_busnum 1
wlan_regon port:PE061110
wlan_hostwake port:PE056defaultdefaultdefault
[regulator0]
compatible axp221s-regulator
regulator_count 20
......
regulator2 axp221s_dcdc2 none vdd-cpua
regulator3 axp221s_dcdc3 none vdd-sys vdd-gpu
regulator4 axp221s_dcdc4 none
regulator5 axp221s_dcdc5 none vcc-dram
regulator6 axp221s_rtc none vcc-rtc
regulator7 axp221s_aldo1 none vcc-25 csi-avdd
regulator8 axp221s_aldo2 none vcc-ephy0
regulator9 axp221s_aldo3 none avcc vcc-pll
regulator10 axp221s_dldo1 none vcc-io-wifi vcc-pg /*io power 挂在dld01上*/
regulator11 axp221s_dldo2 none vcc-wifi1 /*power1 挂在dld02上*/
regulator12 axp221s_dldo3 none vcc-wifi2 /*power2 挂在dld03上*/
regulator13 axp221s_dldo4 none vdd-sata-25 vcc-pf
regulator14 axp221s_eldo1 none vcc-pe csi-iovcclinux 3.4 以上driver详情请参考以下代码路径
tina/lichee/linux-XXX/drivers/misc/sunxi-rf3.1 模组移植的步骤
下面总结一款新模组移植到Tina 平台的步骤。
3.1.1 修改模组厂提供的Wi-Fi driver
模组厂提供过来的driver适配到Tina 平台主要修改的地方是调用Tina 平台提供的有上下电扫卡函数修改firmware 的download 路径配置Kconfig 和
Makefile 等。
下面先说明Tina 平台提供给driver 的函数其中linux 3.4 跟其他内核稍微有些区别。
linux 3.4
#include mach/sys_config.h
#include linux/gpio.h
/*
*函数功能 sdio扫卡
*参数id 卡号sdio 0 or 1 ...
*参数insert 0卡插入进行扫卡 1卡拔出。
*返回值无
*/
extern void sunxi_mci_rescan_card(unsigned id, unsigned insert);
/*
*函数功能 Wi-Fi模组上电使能。
*参数on 0上电1掉电。
*返回值 无
*/
extern void wifi_pm_power(int on);linux 3.4 以上
#include linux/mmc/host.h
#include linux/sunxi-gpio.h
#include linux/power/aw_pm.h
/*
*函数功能 获取所使用的sdio卡号对应sysconfig.fex中的wlan_busnum
*返回值 sdio 卡号
*/
extern int sunxi_wlan_get_bus_index(void);
/*
*函数功能 sdio 扫卡
*参数id 卡号sdio 0 or 1 ...
*返回值 无
*/
extern void sunxi_mmc_rescan_card(unsigned ids);
/*
*函数功能 Wi-Fi模组上电使能。
*参数on 0上电1掉电。
*返回值 无
*/
extern void sunxi_wlan_set_power(bool on);
/*
*函数功能获取gpio wlan hostwake pin的申请的中断号
*参数: void
*返回值irq number
*说明 部分模组主控接收数据通过hostwake pin产生中断来触发
* 所以需要主控这边提供获取到中断号。
*/
extern int sunxi_wlan_get_oob_irq(void);
/*
*函数功能获取host wake pin设置中断的标志位
*参数: void
*返回值 irq flag
*/
extern int sunxi_wlan_get_oob_irq_flags(void);首先是将Wi-Fi driver 放到linux-4.9/drivers/net/wireless填充对应的上电扫卡等函数。
linux 3.4 的驱动请参考
esp8089模组
tina/lichee/linux-3.4/drivers/net/wireless/esp8089/sdio_stub.cxr819模组
tina/lichee/linux-3.4/drivers/net/wireless/xradio/wlan/platform.clinux 3.4 以上的驱动请参考
tina/lichee/linux-4.9/drivers/net/wireless/rtl8723ds/platform/platform_ARM_SUNnI_sdio.c其次是增加内核的menuconfig 配置以及编译只需要修改以下地方即可。
tina/lichee/linux-4.9/drivers/net/wireless/Kconfig
example
source drivers/net/wireless/xr829/Kconfigtina/lichee/linux-4.9/drivers/net/wireless/Makefile
example
obj-$(CONFIG_XR829_WLAN) xr829/配置完成后可执行make kernel_menuconfig 中选上编译的时候就会把指定的driver 编译。
Device Drivers ---[*] Network device support ---[*] Network device support ---[*] Wireless LAN ---[] xxx模块3.1.2 添加make munconfig 的配置
该步骤主要将kernel 中编译的ko 文件以及firmware 拷贝到跟文件系统中。 首先是配置firmware。firmware 文件一般以模组文件名存放在如下并需要新增一个mk 文件使其在make munconfig 中可见。
tina/package/firmware/linux-firmware/XXX模组
tina/package/firmware/linux-firmware/XXX模组/XXX.mk
example:
tina/package/firmware/linux-firmware/xr829
make munuconfig
Firmware ---xr829-firmware..................................... Xradio xr829 firmware其次是配置ko。
tina/target/allwinner/xxx方案/modules.mk
example:
Tina-3.5.0及以前
tina/target/allwinner/cowbell-perf1/modules.mk
Tina-3.5.1及以后
tina/target/allwinner/r328s2-perf1/modules.mk
make munuconfigKernel modules ---Wireless Drivers ---XXX 模块3.1.3 配置sys_config.fex
前面已经阐述见第3 章节开头描述。
3.1.4 验证
按照前面的配置好make kernel_menuconfig 选上对应模块,make menuconfig 选项对应 firmware 和模块同时make munconfig 新增选上如下即可进行验证了。
make menuconfigAllwinner ---wireless ---* wifimanager-v2.0................................... Tina wifimanager-v2.0* wifimanager-v2.0-demo..................... Tina wifimanager-v2.0 app demo验证命令
查看模块是否加载lsmod
模块卸载 rmmod
ps查看wifi_deamon后台进程是否已起来若没有起来先启动wifi_deamon后台进程
连接路由命令wifi -c ssid passwd
扫描周围热点wifi -s3.1.5 模组移植示例
以RTL8723DS 为例 获取资料 1.1建议从RTL原厂获取最新版本的完整资料包括驱动文档工具。也可以从其他内核已适配版本获取驱动 内核适配
2.1将整个驱动SDK拷贝到tina/lichee/linux-xxx/drivers/net/wireless/
2.2驱动重命名为rtl8723ds
2.3在tina/lichee/linux-xxx/drivers/net/wireless/目录修改Kconfig和Makefile
Kconfig:
source drivers/net/wireless/rtl8723ds/Kconfig
Makefile:
obj-$(CONFIG_RTL8723DS) rtl8723ds/ (注意这里命名一定要匹配)
2.4修改驱动原生代码
2.4.1驱动的Makefile(tina/lichee/linux-xxx/drivers/net/wireless/rtl8723ds/Makefile)
CONFIG_RTW_ANDROID 0 (# CONFIG_RTW_ANDROID - 0: no Android, 4/5/6/7/8/9/10 : Android
version)
CONFIG_PLATFORM_I386_PC n
CONFIG_PLATFORM_ARM_SUNxI y
2.4.2替换适配sunxi的平台文件(tina/lichee/linux-xxx/drivers/net/wireless/rtl8723ds/platform)
可以从已经适配过的其他模组获取platform_ARM_SUNxI_sdio.cTina module 适配 3.1.从其他任意已经支持的IC方案中拷贝module的配置
define KernelPackage/net-rtl8723ds
SUBMENU:$(WIRELESS_MENU) //make menuconfig的菜单位置一般不更改。
TITLE:RTL8723DS support (staging) //make menuconfig的提示
DEPENDS: r8723ds-firmware IPV6 USES_REALTEK PACKAGE_realtek-rftest
PACKAGE_rtk_hciattach //添加tina依赖可以理解为select
FILES:$(LINUX_DIR)/drivers/net/wireless/rtl8723ds/8723ds.ko
KCONFIG:\ //添加内核依赖可以理解位select
...
AUTOLOAD:$(call AutoProbe,8723ds)
endef
define KernelPackage/net-rtl8723ds/description //make menuconfig的描述
Kernel modules for RealTek RTL8723DS support
endef
$(eval $(call KernelPackage,net-rtl8723ds))
一个完整的module
注建议直接添加在平台的通用配置中tina/target/allwinner/xxx-common/modules.mk
3.2.firmware的配置
/package/firmware/linux-firmware/rtl8723ds/ //更新驱动时更新firmware文件(如果有最新的)
3.3.sys_config.fex/board.dts的配置
rfkill: rfkill0 {
compatible allwinner,sunxi-rfkill;
chip_en;
power_en;
status okay;
wlan: wlan0 {
compatible allwinner,sunxi-wlan;
pinctrl-0 wlan_pins_a;
pinctrl-names default;
clock-names 32k-fanout1;
clocks ccu CLK_FANOUT1_OUT;
wlan_busnum 0x1;
wlan_regon pio PE 17 GPIO_ACTIVE_HIGH;
wlan_hostwake pio PG 10 GPIO_ACTIVE_HIGH;
/*wlan_power VCC-3V3;*/
/*wlan_power_vol 3300000;*/
/*interrupt-parent pio;
interrupts PG 10 IRQ_TYPE_LEVEL_HIGH;*/
wakeup-source;
};
...
}整体编译烧写验证排查
3.1.6 模组移植总结
主要就是以下几点 • 修改模组厂提供的driver填充相应的上电扫卡等函数。 • 增加make kernel_menuconfig 和make menuconfig 选项, 涉及到firmware,makefile,ko。 • 配置sys_config.fex。 • 验证。
目前Tina 平台的linux 内核版本有linux_3.4,linux_3.10,linux_4.4,linux_4.9,linux_5.4由于历史原因很有可能内核版本之间的配置有些不一样主要体现在devicesys_config.fex 以及driversunxi-rf。用户在模组移植时可参考对应各个内核版本进行参考。
Tina-3.5.0 及以前
产品名称内核版本sys_config.fexR16Linux-3.4tina/target/allwinner/astarparrot/configs/sysconfig.fexR18Linux-4.4tina/target/allwinner/tulip_d1/configs/sysconfig.fexR328Linux-4.9tina/target/allwinner/cowbell_demo/configs/sysconfig.fex
Tina-3.5.1 及以后
产品名称内核版本配置文件R16Linux-3.4tina/device/config/chips/r16/configs/parrot/sys_config.fexR18Linux-4.4tina/device/configs/chips/r18/configs/d1/sys_config.fexR328Linux4.9tina/device/config/chips/r328s2/configs/perf1/sys_config.fex(board.dts)R528Linux-5.4tina/device/config/chips/r528/configs/evb1/sys_config.fex(board.dts)
3.2 Tina 平台已经移植的模组
Tina 平台上已经移植过多款Wi-Fi 模组支持列表如下
BCM AP6212,AP6212A,AP6255,AP6256,AP6335等。
Realtek RTL8723DSlinux 3.4/4.9/5.4),RTL8821cs(linux 4.9/5.4),RTL8822cs(linux 4.9),RTL8189FTV(linux4.9)
Xradio XR819(linux 3.4/4.4/4.9),xr829(linux 3.4/4.4/4.9/5.4)
Esp esp8089linux 3.4
.....对于以上已经移植的模组用户大多情况只需要在kernel_menuconfig 和menuconfig 选上对应的配置即可。如果按照在对应的menuconfig 中选上还是不
能工作就按照3.1 小节的步骤依次排查原因。同时如果有些方案可能在make menuconfig 中无法显示相应的Kernel modules这是因为在方案下的
modules.mk 文件中没有添加可按照3.1.2 小节的方式进行添加。
以下列出各个模组kernel_menuconfig 以及menuconfig 的选项。
3.2.1 BCM 系列的模组
make kernel_menuconfig 配置
Device Drivers ---Network device support ---Wireless LAN ---M Broadcom FullMAC wireless cards support(/lib/firmware/fw_bcmdhd.bin) Firmware path(/lib/firmware/nvram.txt) NVRAM path
PS BCM系列的模组如AP6212AP6255AP6256..都是用的同一份drivermake menuconfig 配置
Kernel modules---Wireless Drivers---* kmod-net-broadcom
Firmware---* ap6212-firmware. ---根据模组型号选择3.2.2 XR 系列的模组
1XR819 make kernel_menuconfig 配置
Device Drivers ---Network device support ---Wireless LAN ---M XR819 WLAN support ---/*or*/M XRadio WLAN support ---make menuconfig 配置
Kernel modules---Wireless Drivers---* kmod-net-broadcom
Firmware---* xr819-firmware..................................... Xradio xr819 firmware2XR829 make kernel_menuconfig 配置
Device Drivers ---Network device support ---Wireless LAN ---M XR829 WLAN support ---make menuconfig 配置
Kernel modules---
Wireless Drivers---
* kmod-net-xr829................................... xr829 support (staging)
Firmware---
* xr829-firmware..................................... Xradio xr829 firmware3.2.3 REALTEK 系列的模组
1RTK8723DS make kernel_menuconfig 配置
Device Drivers ---Network device support ---Wireless LAN ---M Realtek 8723D SDIO or SPI WiFimake menuconfig 配置
Kernel modules---Wireless Drivers---* kmod-net-rtl8723ds........................... RTL8723DS support (staging)
Firmware---* r8723ds-firmware.............................. RealTek RTL8723DS firmware2RTK8822CS make kernel_menuconfig 配置
Device Drivers ---Network device support ---Wireless LAN ---M Realtek 8822C SDIO WiFimake menuconfig 配置
Kernel modules---Wireless Drivers---* kmod-net-rtl8822cs........................... RTL8723CS support (staging)
Firmware---* rtl8821cs-firmware............................ RealTek RTL8821CS firmware3RTK8189FTV make kernel_menuconfig 配置
Device Drivers ---Network device support ---Wireless LAN ---M Realtek 8189F SDIO WiFimake menuconfig 配置
Kernel modules---Wireless Drivers---* kmod-net-rtl8189fs........................... RTL8189FS support (staging)
注RTL8189FTV 在tina配置中不需要firmware配置3.2.4 ESP 系列的模组
1ESP8089 make kernel_menuconfig 配置
Device Drivers ---Network device support ---Wireless LAN ---* Eagle WLAN drivermake menuconfig 配置
Kernel modules---Wireless Drivers---* kmod-esp8089................................... esp8089 support (staging)
Firmware---* esp8089-firmware........................................ esp8089 firmware3.3 Tina 主要平台模组支持列表
硬件平台支持模组内核版本R6XR819linux3.10R7/R11XR819linux3.4R16AP6210/AP6212/AP6181/8723BSlinux3.4R18AP6212/AP6236/AP6255linux4.4R30AP6181/AP6212/AP6234/AP6330/8723BSlinux4.4R40AP6212linux3.10R58AP6212/AP6181/8723BSlinux3.4R311AP6212/AP6181/8723BSlinux4.9R328XR829/8723DS(单天线)linux4.9R329XR829/8723DS(单双天线)linux4.9R331/R332/R3338723DS(单天线)linux4.9R818XR829/8723DS(单双天线)/8189FTV/8821CS(单双天线)linux4.9MR133AP6212/AP6181/8723BSlinux4.9MR813XR829/8723DS(单双天线)/8189FTVlinux4.9T7AP6210/AP6212/AP6234linux4.9R528RTL8723ds(单)/RTL8821cs/xr829linux5.4V853XR829/XR819s/RTL8189FSlinux4.9
4 Wi-Fi manager 介绍
wifimanager 已升级为wifimanager2.0wifimanager2.0 已独立出一个单独文档wifimanager2.0的具体介绍请参考
Tina_linux_wifimanger2.0_ 开发指南
5 Softap 介绍
softap 功能已集成到wifimanager2.0wifimanager2.0 已独立出一个单独文档wifimanager2.0的具体介绍请参考
Tina_linux_wifimanger2.0_ 开发指南
6 常见问题
6.1 编译问题
6.1.1 找不到wowlan 变量
现象
drivers/net/wireless/xr829/umac/main.c:870:17: error: struct wiphy has no member named wowlan
if ((hw-wiphy-wowlan-flags || hw-wiphy-wowlan-n_patterns)原因 wowlan成员变量受CONFIG_PM控制没有打开导致的休眠唤醒的依赖。 解决方案
在内核配置
-Power management options ---
Device power management core functionality6.1.2 找不到xxx.ko 现象 sunxi_wlan_get_bus_index...xradio_core.ko undefined!原因 缺少配置misc。 解决方案 在内核配置 m kernel_menuconfig--Device drivers--Misc devices--Allwinner rfkill driver6.1.3 mmc_xxx undefined
现象
drivers/built-in.o: In function scan_device_store:
lichee/linux-4.9/drivers/misc/sunxi-rf/sunxi-wlan.c:309: undefined reference
tosunxi_mmc_rescan_card
lichee/linux-4.9/drivers/misc/sunxi-rf/sunxi-wlan.c:309:(.text0x5fc40): relocation
truncated to fit:
R_AARCH64_CALL26 against undefined symbol sunxi_mmc_rescan_card原因 没有配置mmc。 解决方案
Device Drivers ---* MMC/SD/SDIO card support ---* Allwinner sunxi SD/MMC Host Controller support6.1.4 缺少依赖库 现象 Package kmod-net-xr829 is missing dependencies for the following libraries:
cfg80211.ko
mmc_core.ko
sunxi-wlan.ko原因 依赖库需要编译进内核不能以模块方式编译进去。 解决方案。 在内核配置如下模块时配置成y
CONFIG_RFKILL y
CONFIG_CFG80211y
CONFIG_MMCy
CONFIG_MAC80211y6.2 驱动加载问题
6.2.1 R16 博通模组联网时提示No such device.
现象
rootTinaLinux:/# wifi_add_network_test ssid passwd 1************************************Start wifi connect ap test!************************************wpa_suppplicant not running!
Cannot create /data/misc/wifi/entropy.bin: No such file or directory
Wi-Fi entropy file was not created
ifconfig: SIOCGIFFLAGS: No such device
event_label 0x0
wifi on failed!
wifi on failed event 0xf001原因
firmware选择不匹配导致驱动加载时下载失败- lsmod查看驱动已经正常加载
- dmesg 查看加载log发现[ 22.336336] dhdsdio_download_code_file: Open firmware file failed /lib/firmware/fw_bcm43438a1.bin[ 22.346331] _dhdsdio_download_firmware: dongle image file download failed表示firmware固件缺失这里表示缺失fw_bcm43438a1.bin最后发现是在配置firmware时选择了ap6212,正常应该用ap6212a解决方案
tina配置正确的firmware
firmware ---
└─ * ap6212a-firmware............................... Broadcom AP6212A firmware6.2.2 R329_XR829 模组ifconfig 显示No such device 现象 ifconfig: SIOCGIFFLAGS: No such device原因 firmware选择不匹配。- lsmod查看驱动已经正常加载。
- dmesg 查看加载log发现[ 195.966066] [XRADIO_ERR] xradio_load_firmware: Wait for wakeup:device is not responding.XR829换了40M晶振。解决方案 tina配置选择40M晶振的firmware
firmware ---[*] xr829 with 40M sdd6.2.3 MR133_XR829 can’t open /etc/wifi/xr_wifi.conf, failed
1.现象
lsmod驱动没有正常加载。
原因
dmesg查看log
[ 6.802331] [XRADIO_ERR] cant open /etc/wifi/xr_wifi.conf, failed(-30)
[ 6.802338] [XRADIO_ERR] Access_file failed, path:/etc/wifi/xr_wifi.conf!
[ 6.914044] sunxi-mmc sdc1: no vqmmc,Check if there is regulator
[ 7.028376] [XRADIO_ERR] xradio_load_firmware: Wait_for_wakeup: cant read control
register.
busnum配置错误原理图上使用的是sdc0.2.解决方案
board.dts中配置wlan时
busnum 0;6.2.4 驱动加载问题总结
6.2.4.1 配置问题
1.内核驱动Tina modules, Tina firmware三者必须正确对应同一个模组。
2.注意common下的modules.mk的编写。
3.Sdio的配置一定要根据原理图选择对应busnum。
可能导致
1.扫卡失败。
2.下载firmware失败。
最终导致驱动加载失败。6.2.4.2 供电问题
检查VCC_WIFI和VCC_IO_WIFI两路电。
不同模组对供电时序有一定要求比如RTL8723ds需要两路电同时供电针对有AXP的方案一定要注意供电的配置特别是enable的时间。
硬件方面主要排查两路电的供电方案是否是同一路供电若是分开供电要考虑两路供电的时序
例如DCDC1---VCC_WIFI,LDOA---VCC_IO_WIFI,那么DCDC1和LDOA的时序就得考虑。
软件方面主要是sysconfig.fex或者boart.dts的配置分开供电的是否需要单独配置。
如R818硬件设计是两路电分开供电。
可能导致
1.扫卡失败。
2.下载firmware失败。
3.sdio_clk没有时钟。
4.32k竞争不起振。
最终导致驱动加载失败。6.2.4.3 sdio 问题
1.sdio busnum配置错误
2.驱动WL-REG-ON的方式不对例如
XR819模块出现
[SBUS_ERR] sdio probe timeout!
[XRADIO_ERR] sbus_sdio_init_failed
这个问题主要是sdio扫卡失败跟sdio上电时序有关可在drivers/net/wireless/xradio/wlan/platform.c中
xradio_wlan_power函数sunxi_wlan_set_power(on)后面加上一段延时。
RLT8723ds需要先高低高的方式
可能导致
1.扫卡失败。
2.下载firmware失败。
3.sdio_clk没有时钟。
4.32k晶振不起振。
5.WL-REG-ON无法正常被拉高。
最终导致驱动加载失败。6.3 起wlan0 网卡问题
6.3.1 R818_RTL8723ds ifconfig wlan0 up: No such device
1.现象
ifconfig: SIOCGIFFLAGS: No such device2.原因
- lsmod查看驱动已经正常加载。
- dmesg查看log未发现异常。
- 排查sdio_clk, regon_on,32k,都正常。
- 两路供电都正常配置。
- 对比其他平台硬件发现供电方式不一样两路电采用了分开供电咨询RTL需要同时上电。3.解决方案 硬件更改VCC_WIFI/VCC_IO_WIFI用同一路电供电。
6.3.2 R328_RTL8723ds 无法自启动wlan0
1.现象
启动脚本/etc/init.d/wpa_supplicant中会自启动wlan0
但是每次启动启动都自启动失败然后手动ifconfig wlan0 up正常。2.原因
AP-WAKE_BT引脚被接了上拉电阻进入测试模式了。3.解决方案 硬件摘除上拉电阻。
6.3.3 起wlan0 网卡问题总结
wlan0启动失败问题目前遇到的都是与硬件相关的如果不能自加载一般采用ifconfig wlan0 up先手动加载看看打印提 示。 同时让硬件帮忙check一下供电和一些io的上下拉电阻。
6.4 supplicant 服务问题
6.4.1 找不到wpa_suplicant.conf 文件
1.现象 起supplicant失败
- ps发现没有supplicant进程
- 于是手动执行wpa_supplicant -D nl80211 -i wlan0 -c /etc/wpa_supplicant.conf -B提示Failed to open config file /etc/wpa_supplicant.conf, error: No such file or directoryFailed to read or parse configuration /etc/wpa_supplicant.conf.2.原因 路径错误。
3.解决方案
tina正常的路径一般在/etc/wifi/wpa_supplicant.conf
在wifimanage包下面配置正确的路径保持和启动脚本一致6.5 wifimanager 使用问题
6.5.1 联网时出现network not exist!
1.现象
wifi_connect_ap_test ssid passwd
network not exist!2.原因
- lsmod查看驱动已经正常加载。
- ifconfig查看wlan0已经正常up。
- ps查看supplicant服务已经正常启动。
- 使用wifi_scan_results_test扫描网络
rootTinaLinux:/# wifi_scan_results_test
*********************************
***Start scan!***
*********************************
bssid / frequency / signal level / flags / ssid
******************************
Wifi get_scan_results: Success!
******************************
没有任何网络扫描到。3.解决方案 一般是信号太多没有板载天线尝试外加一根天线。
6.6 上层网络应用服务问题
6.6.1 MR133_XR829 ping 压力测试: poll time out
1.现象
ping 压力测试一段时间后出现poll time out。2.原因
ping的网络性能不好连接的公司内网可能存在一些未知的限制。3.解决方案
尝试连接另外的路由器测试。wpa_supplicant.conf -B 提示 Failed to open config file ‘/etc/wpa_supplicant.conf’, error: No such file or directory Failed to read or parse configuration ‘/etc/wpa_supplicant.conf’. 2.原因
路径错误。3.解决方案
tina正常的路径一般在/etc/wifi/wpa_supplicant.conf 在wifimanage包下面配置正确的路径保持和启动脚本一致
### 6.5 wifimanager 使用问题#### 6.5.1 联网时出现network not exist!1.现象
wifi_connect_ap_test ssid passwd network not exist! 2.原因
lsmod查看驱动已经正常加载。ifconfig查看wlan0已经正常up。ps查看supplicant服务已经正常启动。使用wifi_scan_results_test扫描网络 rootTinaLinux:/# wifi_scan_results_test Start scan! bssid / frequency / signal level / flags / ssid Wifi get_scan_results: Success! 没有任何网络扫描到。 3.解决方案
一般是信号太多没有板载天线尝试外加一根天线。### 6.6 上层网络应用服务问题#### 6.6.1 MR133_XR829 ping 压力测试: poll time out1.现象
ping 压力测试一段时间后出现poll time out。 2.原因
ping的网络性能不好连接的公司内网可能存在一些未知的限制。 3.解决方案
尝试连接另外的路由器测试。