Android KitKat 4.4 Wifi移植之Wifi driver
本文讲述在Linux 3.10下Realek RTL8723A Linux Wifi 驱动的移植。
Prerequisites
硬件平台:Atmel SAMA5
软件平台:Linux 3.10 + Android 4.4
Wifi模组:RTL8723AU (USB接口)
Realtek RTL8723A Wi-Fi Software&
Driver for Linux and Android
RTL8723A_WiFi_linux_v4.1.6_7336.20130426_CCC02.zip
文件夹结构
liaops@ubuntu-server:/media/android/liaops/temp/RTL8723A_WiFi_linux_v4.1.6_7336.20130426$tree -L 2
.
├──android_ref_codes_JB_4.1
│ ├── linux-3.0.42_STATION_INFO_ASSOC_REQ_IES.diff
│ ├── realtek_wifi_SDK_for_android_JB_4.1_20130306.tar.gz
│ └── Realtek_Wi-Fi_SDK_for_Android_JB_4_1.pdf
├──android_ref_codes_JB_4.2 // Android JB 4.2 Realtek Wifi移植
│ ├──linux-3.0.42_STATION_INFO_ASSOC_REQ_IES.diff
│ ├── realtek_wifi_SDK_for_android_JB_4.2_20130208.tar.gz
│ └──Realtek_Wi-Fi_SDK_for_Android_JB_4_2.pdf //移植文档
├──android_reference_codes
│ ├── realtek_wifi_SDK_for_android_20120618.tar.gz
│ └── realtek_wifi_SDK_for_android.txt
├──android_reference_codes_ICS_nl80211
│ ├── realtek_wifi_SDK_for_android_ICS_20120621.tar.gz
│ └── Realtek_Wi-Fi_SDK_for_Android_ICS.pdf
├── document
│ ├── HowTo_enable_driver_to_support_80211d.pdf
│ ├──HowTo_enable_driver_to_support_WIFI_certification_test.pdf
│ ├── HowTo_enable_the_power_saving_functionality.pdf
│ ├── HowTo_support_more_VidPids.pdf
│ ├── linux_dhcp_server_notes.txt
│ ├── Quick_Start_Guide_for_Bridge.pdf
│ ├──Quick_Start_Guide_for_Driver_Compilation_and_Installation.pdf
│ ├── Quick_Start_Guide_for_SoftAP.pdf
│ ├── Quick_Start_Guide_for_Station_Mode.pdf
│ ├── Realtek_WiFi_concurrent_mode_Introduction.pdf
│ ├── RTK_P2P_WFD_Programming_guide.pdf
│ ├── SoftAP_Mode_features.pdf
│ ├── Wireless_tools_porting_guide.pdf
│ └── wpa_cli_with_wpa_supplicant.pdf
├── driver
│ └──rtl8723A_WiFi_linux_v4.1.6_7336.20130426_CCC02.tar.gz //
Realek RTL8723A Linux Wifi 驱动
├── hardware_wps_pbc
│ ├── Readme.txt
│ └── sample.c
├── install.sh
├── mp_tools
│ └── RTL8723A_MPDoc
├── readme.txt
├── ReleaseNotes.pdf
├──WiFi_Direct_User_Interface
│ ├── Android.mk
│ ├── install.sh
│ ├── p2p_api_test_linux.c
│ ├── p2p_test.h
│ ├── p2p_ui_test_linux.c
│ └── Start_Guide_P2P_User_Interface_Linux.pdf
├── wireless_tools
│ └──wireless_tools.30.rtl.tar.gz //Linux下对无线网络配置的工具,包含iwlist,iwpriv,iwconfig等
└──wpa_supplicant_hostapd
├── p2p_hostapd.conf
├── rtl_hostapd_2G.conf
├── rtl_hostapd_5G.conf
├── wpa_0_8.conf
├──wpa_supplicant_8_jb_4.1_rtw_r7281.20130424.tar.gz
├──wpa_supplicant_8_jb_4.2_rtw_r7279.20130424.tar.gz
└──wpa_supplicant_hostapd-0.8_rtw_r7048.20130424.tar.gz
内核配置
内核编译前确保Linux配置
# make menuconfig
使能WLAN网络支持:
[*] Networking support--->
-*- Wireless --->
使能Wireless LAN设备驱动:
Device Drivers --->
[*] Network device support --->
[*] Wireless LAN --->
使能RealTekRTL8712U无线网卡驱动:
Device Drivers --->
[*] Staging drivers --->
<M> RealTek RTL8712U (RTL8192SU) Wireless LAN NICdriver
目的是打开CONFIG_WIRELESS_EXT=y和CONFIG_WEXT_PRIV=y
上述操作在内核中使能下述CONFIG选项:
CONFIG_WIRELESS=y
CONFIG_WLAN=y
CONFIG_WIRELESS_EXT=y
CONFIG_WEXT_CORE=y
CONFIG_WEXT_PROC=y
CONFIG_WEXT_PRIV=y
使能USB Host支持:
Device Drivers --->
[*] USB support --->
<*> Support for Host-side USB
<*> EHCI HCD (USB 2.0) support
编译内核
依据上述内核配置编译内核。
Wifi驱动配置与编译
解压缩驱动源代码:rtl8723A_WiFi_linux_v4.1.6_7336.20130426_CCC02.tar.gz
进入驱动源代码文件夹:
├──autoconf_rtl8723a_sdio_linux.h
├──autoconf_rtl8723a_usb_linux.h
├── clean
├── core
├── hal
├── ifcfg-wlan0
├── include
├── Kconfig
├──Kconfig_rtl8723a_sdio_linux
├──Kconfig_rtl8723a_usb_linux
├── make_drv
├── Makefile
├── os_dep
├── runwpa
└── wlan0dhcp
改动Makefile,加入AT91平台支持
@@-44,7 +44,7 @@ CONFIG_EXT_CLK = n
CONFIG_FTP_PROTECT =n
CONFIG_WOWLAN = n
-CONFIG_PLATFORM_I386_PC= y
+CONFIG_PLATFORM_I386_PC= n
CONFIG_PLATFORM_ANDROID_X86= n
CONFIG_PLATFORM_ARM_S3C2K4= n
CONFIG_PLATFORM_ARM_PXA2XX= n
@@-75,6 +75,7 @@ CONFIG_PLATFORM_ARM_SUN6I = n
CONFIG_PLATFORM_ACTIONS_ATM702X= n
CONFIG_PLATFORM_MN10300= n
CONFIG_PLATFORM_ACTIONS_ATV5201= n
+CONFIG_PLATFORM_ARM_AT91= y
CONFIG_DRVEXT_MODULE= n
@@-651,6 +652,14 @@ KVER := $(KERNEL_VER)
KSRC:=$(CFGDIR)/../../kernel/linux-$(KERNEL_VER)
endif
+ifeq($(CONFIG_PLATFORM_ARM_AT91), y)
+EXTRA_CFLAGS+= -DCONFIG_LITTLE_ENDIAN
+ARCH:= arm
+CROSS_COMPILE:= /usr/local/CodeSourcery/Sourcery_G++_Lite/bin/arm-none-eabi-
+KSRC:= /media/android/liaops/miura/kernel
+MODULE_NAME:= wlan
+endif
+
ifneq($(USER_MODULE_NAME),)
MODULE_NAME :=$(USER_MODULE_NAME)
endif
改动autoconf_rtl8723a_usb_linux.h以使能STA+P2P并存模式:
@@-50,7 +50,7 @@
#defineSUPPORT_HW_RFOFF_DETECTED
-//#defineCONFIG_IOCTL_CFG80211
+#defineCONFIG_IOCTL_CFG80211
#ifdefCONFIG_PLATFORM_ARM_SUNxI
#ifndef
CONFIG_IOCTL_CFG80211
#define
CONFIG_IOCTL_CFG80211
@@-59,7 +59,7 @@
#ifdefCONFIG_IOCTL_CFG80211
//#define
RTW_USE_CFG80211_STA_EVENT /* Indecate new sta asoc throughcfg80211_new_sta */
-#define CONFIG_CFG80211_FORCE_COMPATIBLE_2_6_37_UNDER
+//#define CONFIG_CFG80211_FORCE_COMPATIBLE_2_6_37_UNDER
//#define
CONFIG_DEBUG_CFG80211
#define
CONFIG_SET_SCAN_DENY_TIMER
#endif
@@-86,7 +86,7 @@
//#define
CONFIG_DBG_P2P
#define
CONFIG_P2P_PS
-//#define CONFIG_P2P_IPS
+#define CONFIG_P2P_IPS
#endif
// Added by Kurt20110511
@@-102,7 +102,7 @@
#defineCONFIG_LAYER2_ROAMING
#defineCONFIG_LAYER2_ROAMING_RESUME
-//#defineCONFIG_CONCURRENT_MODE
+#defineCONFIG_CONCURRENT_MODE
#ifdefCONFIG_CONCURRENT_MODE
#define
CONFIG_TSF_RESET_OFFLOAD // For 2 PORT TSF SYNC.
//#define
CONFIG_HWPORT_SWAP //Port0->Sec , Port1 -> Pri
编译驱动
make KSRC=<内核源码码路径>
当前文件夹下得到Wifi驱动模块:wlan.ko
编译Android源码
编译wireless_tools无线网络管理工具
解压缩wireless_tools.30.rtl.tar.gz到Android源码 external/文件夹下
(1)tar zxvf wireless_tools.30.rtl.tar.gz
(2)cp wireless_tools.30.rtl <ANDROID_SDK>/external/
(3)cd <ANDROID_SDK>
(4)make iwconfig iwlist iwpriv
安装Wifi驱动模块
将wlan.ko复制到Android文件系统out/target/product/sama5d3/system/lib/modules文件夹下
制作Android根文件系统并烧写到开发板
測试
启动后插入USB Wifi模块
usb 1-2: newhigh-speed USB device number 2 using atmel-ehci
usb 1-2: NewUSB device found, idVendor=0bda, idProduct=0724
usb 1-2: NewUSB device strings: Mfr=1, Product=2, SerialNumber=3
usb 1-2:Product: 802.11n WLAN Adapter
usb 1-2:Manufacturer: Realtek
usb 1-2:SerialNumber: 00e04c000001
载入模块前
root@sama5d3:/ # netcfg
eth0 UP 0.0.0.0/0 0x000010433a:1f:34:08:54:54
can0 DOWN 0.0.0.0/0 0x0000008000:00:00:00:00:00
sit0 DOWN 0.0.0.0/0 0x0000008000:00:00:00:00:00
lo UP 127.0.0.1/8 0x0000004900:00:00:00:00:00
载入模块
root@sama5d3:/# insmod /system/lib/modules/wlan.ko
usbcore:registered new interface driver rtl8723au
载入模块后
root@sama5d3:/# netcfg
wlan0 DOWN 0.0.0.0/0 0x00001002 00:02:72:3c:0c:c1
wlan1 DOWN 0.0.0.0/0 0x00001002 02:02:72:3c:0c:c1
eth0 UP 0.0.0.0/0 0x00001043 3a:1f:34:08:54:54
can0 DOWN 0.0.0.0/0 0x00000080 00:00:00:00:00:00
sit0 DOWN 0.0.0.0/0 0x00000080 00:00:00:00:00:00
lo UP 127.0.0.1/8 0x00000049 00:00:00:00:00:00
能够看到多了两个接口wlan0和wlan1。
打开wlan0
root@sama5d3:/# netcfg wlan0 up
IPv6:ADDRCONF(NETDEV_UP): wlan0: link is not ready
RTL871X:nolinked power save enter
运行命令iwlist wlan0 scanning,搜索可用的无线AP
部分结果例如以下:
root@sama5d3:/# iwlist wlan0 scanning
RTL871X:nolinked power save leave
wlan0Scan completed :
Cell
01 - Address: D8:15:0D:D9:1F:F0
ESSID:"Intest_Hardware"
Protocol:IEEE
802.11bgn
Mode:Master
Frequency:2.412
GHz (Channel 1)
Encryption
key:on
Bit
Rates:300 Mb/s
Extra:wpa_ie=dd160050f20101000050f20401000050f20401000050f202
IE:
WPA Version 1
Group
Cipher : CCMP
Pairwise
Ciphers (1) : CCMP
Authentication
Suites (1) : PSK
Extra:rsn_ie=30140100000fac040100000fac040100000fac020000
IE:
IEEE 802.11i/WPA2 Version 1
Group
Cipher : CCMP
Pairwise
Ciphers (1) : CCMP
Authentication
Suites (1) : PSK
IE:
Unknown: DD180050F204104A00011010440001021049000600372A000120
Quality=0/100
Signal level=-74 dBm
Cell
02 - Address: A8:57:4E:FC:4B:3E
ESSID:"\xBE\xDE\xC3\xC0\xB9\xFA\xBC\xCA"
Protocol:IEEE
802.11bgn
Mode:Master
Frequency:2.437
GHz (Channel 6)
Encryption
key:on
Bit
Rates:300 Mb/s
Extra:wpa_ie=dd160050f20101000050f20401000050f20401000050f202
IE:
WPA Version 1
Group
Cipher : CCMP
Pairwise
Ciphers (1) : CCMP
Authentication
Suites (1) : PSK
Extra:rsn_ie=30140100000fac040100000fac040100000fac020000
IE:
IEEE 802.11i/WPA2 Version 1
Group
Cipher : CCMP
Pairwise
Ciphers (1) : CCMP
Authentication
Suites (1) : PSK
IE:
Unknown:DD9B0050F204104A0001101044000102103B0001031047001000000000000010000000A8574EFC4B101021000754502D4C494E4B1023000A544C2D5744523333323010240003312E3010420003312E301054000800060050F20400011011001A576972656C65737320526F7574657220544C2D57445233333230100800020086103C000101104900140024E26002000101600000020001600100020001
Quality=0/100
Signal level=-71 dBm
Cell
03 - Address: 1C:BD:B9:C7:84:98
ESSID:"hikvision"
Protocol:IEEE
802.11bgn
Mode:Master
Android KitKat 4.4 Wifi移植之Wifi driver的更多相关文章
- Android KitKat 4.4 Wifi移植AP模式和网络共享的调试日志
Tethering技术在移动平台上已经运用的越来越广泛了.它能够把移动设备当做一个接入点,其它的设备能够通过Wi-Fi.USB或是Bluetooth等方式连接到此移动设备.在Android中能够将Wi ...
- (wifi)wifi移植之命令行调试driver和supplicant
前言 小弟从事android wifi framework部分开发已经有一年的时间了,虽然感觉什么都没有学习到,但是回想起刚接手android wifi时候的那份无知,其实肚子里面还是有点东西的,本着 ...
- 九、Android学习第八天——广播机制与WIFI网络操作(转)
(转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 九.Android学习第八天——广播机制与WIFI网络操作 今天熟悉了An ...
- Android编程获取网络连接状态(3G/Wifi)及调用网络配置界面
随着3G和Wifi的推广,越来越多的Android应用程序需要调用网络资源,检测网络连接状态也就成为网络应用程序所必备的功能. Android平台提供了ConnectivityManager 类,用 ...
- 关于AM335X移植SDIO WIFI的简易教程(转)
最近应一个朋友邀请,帮他移植了SDIO WIFI到3.2版本内核.因为之前已经成功移植了3.14内核,所以整个过程花了一个下午就完成了.话不多说,先交待一下平台: CPU:TI AM3352 600M ...
- 第一章 Android系统的编译和移植实例
第一章 Android系统的编译和移植实例 这一章节主要介绍了Android系统的编译和移植技术,作为建立在Linux内核的基础上的Android操作系统,它的编译和移植不论在过程还是技术方面都和嵌入 ...
- 高通MSM8255 GPS 调试分析&&Android系统之Broadcom GPS 移植【转】
本文转载自:http://blog.csdn.net/gabbzang/article/details/12063031 http://blog.csdn.NET/dwyane_zhang/artic ...
- [资料分享]迅为iTOP4412开发板-SDIO WiFi移植文档
本文转自迅为:http://www.topeetboard.com 概述 近期需要把WiFi无线网络功能移植到iTOP-4412 开发平台,查阅了相关资料,经过一段时间的研究.调试,终于成功的将WiF ...
- Android开发拾遗(一)用Wi-Fi连接adb
可以用Wi-Fi通过标准的TCP/IP连接来连接Android设备. 这在开发监听USB相关事件的应用程序时会特别有用,原因是USB连接会起到干扰作用,比如USB的连接/断开事件. 首先要像通常一样用 ...
随机推荐
- BZOJ 3401: [Usaco2009 Mar]Look Up 仰望( 单调栈 )
n <= 105 , 其实是10 ^ 5 ....坑...我一开始写了个模拟结果就 RE 了.. 发现这个后写了个单调栈就 A 了... ---------------------------- ...
- C++ cout 如何保留小数输出
参考 : http://upliu.net/how-cout-out-2-precision.html 大家都知道用 C 语言中 printf () 函数可以非常方便控制保留 几位小数输出 不过在 C ...
- iOS 获取字符串中的单个字符
要取到单个字符,就要知道字符串的编码方式,这样才能够定位每个字符在内存中的位置.但是,iOS的字符串编码是不固定的,因此,需要设置一个统一的编码格式,将所有其他格式的字符串都转化为统一的格式,然后就可 ...
- Chapter 1.简单工厂模式
该篇文章通过一个写计算器控制台程序,来导入文章主题. 首先,要注意代码规范,变量命名有意义,不能随意用A,B,C; 功能要封装好,不要写在一个主函数里,另外要考虑后期需求的更改,如果出现多个函数 ...
- 转:一道笔试题-将int型数组强制转换为char*,再求strlen,涉及大小端
写出如下程序运行结果: #include<stdio.h> #include<string.h> int main() { int a[2000]; char *p = (ch ...
- Struts2 学习笔记16 struts标签 part2
接下来说一下if标签.下面是结果图. <li><s:if test="#parameters.age[0]<0">error!</s:if> ...
- vc中关于 directx的配置,和dxsdk_extras(directshow)
2009-11-10 0:28 此文章:自己编写 转载于<汤姆&杰瑞> DirectShow 1 -- 下载与VC配置 1 DirectX SDK9 Directshow sd ...
- 以xml的方式实现动画
1.java代码 package com.example.tweenanim; import android.os.Bundle; import android.app.Activity; impor ...
- js中with、this的用法
with 语句 为一个或一组语句指定默认对象. 用法:with (<对象>) <语句>; with 语句通常用来缩短特定情形下必须写的代码量.在下面的例子中,请注意 Math ...
- 第三方系统打开EAFC的实现
前言:EAFC是我们公司的一个框架,一个项目上,客户的OA系统要调用我们推送过去的代办任务,希望能打开我们的代办处理界面,我们的代办处理界面是winform的.引出给出了以下的一个方案.在此备存. - ...