Android wifi驱动的移植

一般我们拿到的android源代码中wifi应用层部分是好的, 主要是wifi芯片的驱动要移植并添加进去.
wifi驱动的移植, 以realtek的8188etv为例
到官网下载相应的驱动, 解压后可以看到其中有很多的文档, 应用工具和不同android版本的驱动源代码.
根据自己的android版本选择对应的驱动, 我的是4.0的用的是android_reference_codes_ICS_nl80211目录下的驱动
这个目录下还有一个文档, 跟移植相关的, 一定要好好看啦, 很重要的
进入驱动源代码的根目录, 打开Makefile文件, 修改并添加一下代码
CONFIG_PLATFORM_I386_PC = n #修改的 CONFIG_PLATFORM_ARM_S5PV210 = y #添加的
ifeq ($(CONFIG_PLATFORM_ARM_S5PV210), y) EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN #-DCONFIG_MINIMAL_MEMORY_USAGE EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 #这个很重要的, 不添加的话android下的wpa_supplicant_8不能与驱动正常沟通啦, 也可以在autoconf_rtl8188e_usb_linux.h中修改, 我的是usb接口的wifi模块, sdio接口的是autoconf_rtl8189e_sdio_linux.h ARCH ?= arm CROSS_COMPILE ?= /opt/s210x/arm-q3/bin/arm-none-linux-gnueabi- #交叉编译工具 KVER:= 3.0.8 #内核版本 KSRC ?= /opt/x210_ics_rtm_v12/kernel/ #内核根目录 MODULE_NAME := wlan #模块名 endif 

现在就可以make啦

wifi应用层的移植, xxx为你的硬件平台

将make得到的wlan.ko靠到android源代码根目录下的vendor/xxx/lib/modules 目录下.

看看android源代码根目录下的device/samsung/xxx目录和其子目录下有没有wlan.ko, 有的话就删除它, 并在相应的device.mk文件中删除相应的语句. (其实把移植的wlan.ko放在这里也行的啦)

下面的移植只关心c/c++代码和配置文件部分, 和java相关的不改

external目录下的wpa_supplicant_8是与驱动沟通的工具, android就是通过它来与wifi通信的, 我们只移植与wifi驱动包中不同的文件到这个目录下,

可以使用Meld(linux下的gui化文件比较工具)比较两个目录. hardware 和 system目录的移植方法也一样.

device/samsung/xxx目录是平台相关的目录, 这里主要修改BoardConfig.mk device.mk 和 init.xxx.rc(根据device中的PRODUCT_COPY_FILES 确定) 三个配置文件

在device.mk中的PRODUCT_COPY_FILES条目中添加一下代码

frameworks/base/data/etc/android.hardware.wifi.xml:system/etc/permissions/android.hardware.wifi.xml \

frameworks/base/data/etc/android.hardware.wifi.direct.xml:system/etc/permissions/android.hardware.wifi.direct.xml

PRODUCT_PROPERTY_OVERRIDES := \
wifi.interface=wlan0

在BoardConfig.mk中添加一下代码

#Add for wifi BOARD_WIFI_VENDOR := realtek ifeq ($(BOARD_WIFI_VENDOR), ti)     WPA_SUPPLICANT_VERSION := VER_0_8_X     #BOARD_WPA_SUPPLICANT_DRIVER := WEXT #     BOARD_WPA_SUPPLICANT_DRIVER := NL80211 #wifi驱动使用的是NL80211, 这里当然就是NL80211而不是WEXT     BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_rtl     BOARD_HOSTAPD_DRIVER        := NL80211 <span style="font-family: Arial, Helvetica, sans-serif;">#wifi驱动使用的是NL80211, 这里当然就是NL80211而不是WEXT</span>      BOARD_HOSTAPD_PRIVATE_LIB   := lib_driver_cmd_rtl      BOARD_WLAN_DEVICE := rtl8192cu     #BOARD_WLAN_DEVICE := rtl8192du     #BOARD_WLAN_DEVICE := rtl8192ce     #BOARD_WLAN_DEVICE := rtl8192de     #BOARD_WLAN_DEVICE := rtl8723as     #BOARD_WLAN_DEVICE := rtl8723au     #BOARD_WLAN_DEVICE := rtl8188es      WIFI_DRIVER_MODULE_NAME   := wlan     WIFI_DRIVER_MODULE_PATH   := "/system/lib/modules/wlan.ko"      WIFI_DRIVER_MODULE_ARG    := ""     WIFI_FIRMWARE_LOADER      := ""     WIFI_DRIVER_FW_PATH_STA   := ""     WIFI_DRIVER_FW_PATH_AP    := ""     WIFI_DRIVER_FW_PATH_P2P   := ""     WIFI_DRIVER_FW_PATH_PARAM := "" endif

在init.xxx.rc中添加一下代码 

on post-fs-data     # we will remap this as /mnt/sdcard with the sdcard fuse tool     mkdir /data/media  media_rw media_rw     chown media_rw media_rw /data/media     setprop vold.post_fs_data_done      mkdir /data/misc/dhcp  dhcp dhcp     chown dhcp dhcp /data/misc/dhcp     mkdir /data/misc/wifi/sockets  wifi wifi  service wpa_supplicant /system/bin/wpa_supplicant -Dnl80211 -iwlan -c/system/etc/wifi/wpa_supplicant.conf #wifi驱动中是nl80211,这里也一样是nl80211     socket wpa_wlan dgram  wifi wifi # android private socket      group wifi inet      disabled      oneshot   service dhcpcd_wlan /system/bin/dhcpcd -d -f /system/etc/dhcpcd/dhcpcd.conf wlan     group system dhcp     disabled     oneshot         service dhcpcd /system/bin/dhcpcd -d -f /system/etc/dhcpcd/dhcpcd.conf wlan     group system dhcp     disabled     oneshot 

到这里就移植结束啦

可一make源代码并烧写看看结果吧

关于wireless_tools的移植

很简单的, 将wireless_tools.xx.gz解压到android源代码的external目录中

然后 终端下 build/envsetup.sh && make iwconfig iwlist iwpriv #就好啦

Android wifi驱动的移植 realtek 8188的更多相关文章

  1. WIFI驱动的移植 realtek 8188

    一般我们拿到的android源代码中wifi应用层部分是好的, 主要是wifi芯片的驱动要移植并添加进去. wifi驱动的移植, 以realtek的8188etv为例到官网下载相应的驱动, 解压后可以 ...

  2. android wifi驱动移植详细过程

    转自:http://bbs.imp3.net/thread-10558924-1-1.html 对于刚入手android没多久的人来说,android wifi 驱动的移植确实还是有难度的,不过参考了 ...

  3. 嵌入式Linux USB WIFI驱动的移植

    硬件平台:飞思卡尔MX258开发板 操作系统:Linux2.6.31 WIFI:    RT2860 USB WIFI模组 交叉编译环境:gcc version 4.1.2 调试步骤: 第一步:测试U ...

  4. Android系统如何移植wpa_supplicant及wifi驱动

    一.WPA_SUPPLICANT简介 1. 什么是wpa_supplicant wpa_supplicant is a WPA Supplicant for Linux, BSD, Mac OS X, ...

  5. Android平台开发-WIFI 驱动移植 -- 详细

    一.WIFI的基本架构(代码路径)     1.WIFI Settings应用程序:       packages/apps/Settings/src/com/android/settings/wif ...

  6. I.MX6 AW-NB177NF WIFI 驱动移植问题

    /******************************************************************************** * I.MX6 AW-NB177NF ...

  7. EP-N8530S USB WIFI 驱动移植

    /*********************************************************************** * EP-N8530S USB WIFI 驱动移植 * ...

  8. Android WIFI 启动流程(TIP^^)

    前几天因为解决一堆Bug,没时间写.我不会每天都写,就是为了存档一些资料. 内容来源:工作中接触到的+高手博客+文档(Books)=自己理解 仅限参考^^ 此博客是上一个<<Android ...

  9. Android Wi-Fi基本操作

    从用户角度看,Android Wi-Fi模块自下向上可以看为5层:硬件驱动程序,wpa_suppplicant,JNI,WiFi API,WifiSettings应用程序. 1.wpa_supplic ...

随机推荐

  1. scala Actor -03

    1.对于上一篇讲解的scala的一些补充 val files = Array[String]("a.txt","b.txt","c.txt" ...

  2. 2139: road

    把a[i], b[i]分开来排序 对应位置上的点连边 感性理解这是最小的 会连出若干个环 要使得若干个环连成大环 令a[i]向b[i - 1] 连边 易证一定能使图联通 感性理解这也是最小的 #inc ...

  3. hadoop中namenode启动失败

    jps发现namenode启动失败 每次开机都要重新格式化一下namenode才可以 其实问题出现自tmp文件上,因为每次开机就会被清空,所以现在我们配置一个tmp文件目录. 如果之前没有配置过,默认 ...

  4. iOS 中 AFNetworking HTTPS 的使用

    由于我们公司由HTTP转HTTPS,出现了一系列问题特此记录下. 一.HTTPS 二.App Transport Security 三.iOS 中用HTTPS 注意的问题 四.使用 AFNetwork ...

  5. atomic integer 实现

    public final int getAndAddInt(Object o, long offset, int delta) { int v; do { v = getIntVolatile(o, ...

  6. 《Cracking the Coding Interview》——第7章:数学和概率论——题目2

    2014-03-20 01:59 题目:有n只蚂蚁在正n边形的n个顶点,同时以同速率开始沿着边走.每只蚂蚁走的方向是随机的,那么这些蚂蚁至少有两只发生碰撞的概率是多少. 解法:只有所有蚂蚁都往一个方向 ...

  7. CentOS搭建pptpd服务笔记

    pptpd.rpm 包下载.http://poptop.sourceforge.net/yum/stable/packages/ 参考资料:http://www.oschina.net/questio ...

  8. loadrunner检查点设置失败,日志中SaveCount无法被正常统计出来

    在脚本正确的情况下的web_reg_find检查点检查失败,SaveCount无法被正常统计出来. 在检查项Text为中文的情况下, ******(我是被录制下来的代码) web_reg_find(& ...

  9. Linq中Count()和Any()引发的效率问题

    1.count和any 今天看了鹤冲天的文章:Linq:切勿使用 Count() > 0 来判断集合非空   有所收获,写下文章总结一下: 先看如下代码: static void Main(st ...

  10. Python全栈工程师(每周总结:2)

     ParisGabriel   感谢 大家的支持                                                               每天坚持 一天一篇 点个订 ...