本文讲述在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的更多相关文章

  1. Android KitKat 4.4 Wifi移植AP模式和网络共享的调试日志

    Tethering技术在移动平台上已经运用的越来越广泛了.它能够把移动设备当做一个接入点,其它的设备能够通过Wi-Fi.USB或是Bluetooth等方式连接到此移动设备.在Android中能够将Wi ...

  2. (wifi)wifi移植之命令行调试driver和supplicant

    前言 小弟从事android wifi framework部分开发已经有一年的时间了,虽然感觉什么都没有学习到,但是回想起刚接手android wifi时候的那份无知,其实肚子里面还是有点东西的,本着 ...

  3. 九、Android学习第八天——广播机制与WIFI网络操作(转)

    (转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 九.Android学习第八天——广播机制与WIFI网络操作 今天熟悉了An ...

  4. Android编程获取网络连接状态(3G/Wifi)及调用网络配置界面

    随着3G和Wifi的推广,越来越多的Android应用程序需要调用网络资源,检测网络连接状态也就成为网络应用程序所必备的功能. Android平台提供了ConnectivityManager  类,用 ...

  5. 关于AM335X移植SDIO WIFI的简易教程(转)

    最近应一个朋友邀请,帮他移植了SDIO WIFI到3.2版本内核.因为之前已经成功移植了3.14内核,所以整个过程花了一个下午就完成了.话不多说,先交待一下平台: CPU:TI AM3352 600M ...

  6. 第一章 Android系统的编译和移植实例

    第一章 Android系统的编译和移植实例 这一章节主要介绍了Android系统的编译和移植技术,作为建立在Linux内核的基础上的Android操作系统,它的编译和移植不论在过程还是技术方面都和嵌入 ...

  7. 高通MSM8255 GPS 调试分析&&Android系统之Broadcom GPS 移植【转】

    本文转载自:http://blog.csdn.net/gabbzang/article/details/12063031 http://blog.csdn.NET/dwyane_zhang/artic ...

  8. [资料分享]迅为iTOP4412开发板-SDIO WiFi移植文档

    本文转自迅为:http://www.topeetboard.com 概述 近期需要把WiFi无线网络功能移植到iTOP-4412 开发平台,查阅了相关资料,经过一段时间的研究.调试,终于成功的将WiF ...

  9. Android开发拾遗(一)用Wi-Fi连接adb

    可以用Wi-Fi通过标准的TCP/IP连接来连接Android设备. 这在开发监听USB相关事件的应用程序时会特别有用,原因是USB连接会起到干扰作用,比如USB的连接/断开事件. 首先要像通常一样用 ...

随机推荐

  1. java打印日历

    打个日历,写了半天,感情水平真菜, 不过主要是不会数组,明天一定要把数组看了 package demo; import java.util.Scanner; public class Demo { / ...

  2. Eclipse开启与关闭代码自动提示功能

        Eclipse代码里面的代码提示功能默认是关闭的,只有输入“.”的时候才会提示功能,用vs的用户可能不太习惯 这种,vs是输入任何字母都会提示,下面说一下如何修改eclipse配置,开启代码自 ...

  3. Ubuntu网络频繁掉线解决方案

    年底了,实验室终于给配了个电脑(Ubuntu系统),博主欣喜若狂啊,然而装好后发现无线网频繁掉线,重启网络后能正常上网2~3分钟然后又掉线,再重启又能上网2~3分钟然后再掉线,博主那个不爽啊,于是各种 ...

  4. 互联网创业十问?good(快速迭代、把握核心用户应对抄袭,不需要把商业模式考虑完备,4种失败的信号,失败者没资格说趁着年轻...)

    著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处.作者:曹政链接:https://www.zhihu.com/question/20264499/answer/28168079来源: ...

  5. MFC的消息映射机制揭秘

    MFC的设计者们在设计MFC时,紧紧把握一个目标,那就是尽可能使得MFC的代码要小,速度尽可能快.为了这个目标,他们使用了许多技巧,其中很多技巧体现在宏的运用上,实现MFC的消息映射的机制就是其中之一 ...

  6. 解决QT Creator在Linux下的输入法问题

    https://vjudge1.github.io/2014/04/02/type-chinese-in-linux/http://blog.csdn.net/ubuntutouch/article/ ...

  7. 【译】在Asp.Net中操作PDF – iTextSharp - 使用表格

    原文 [译]在Asp.Net中操作PDF – iTextSharp - 使用表格 使用Asp.Net生成PDF最常用的元素应该是表格,表格可以帮助比如订单或者发票类型的文档更加格式化和美观.本篇文章并 ...

  8. js动态向页面中添加表格

    我们在实际开发中经常会想要实现如下情况: 点击某个按钮,然后动态的网页面里面添加一个表格或者一行,这个更加灵活方便.但是实现起来肯定不能像在页面里面直接写标签来的容易,以下是我项目中的代码,拿过来分享 ...

  9. img src某个php文件输出图片(回复更改图片readfile读取图片等)

    在论坛我们经常看到一回复图片就更改等,这功能是怎么实现的呢,其实更验证码道理相同. 新建文件 randimage.php 加入以下代码: <?php $dir='../../images/'; ...

  10. printf格式控制详解

    format 参数输出的格式,定义格式为 %[flags][width][.precision][length]specifier specifier在最后面.定义了数据类型. Where the s ...