一般我们拿到的android源代码中wifi应用层部分是好的, 主要是wifi芯片的驱动要移植并添加进去.

wifi驱动的移植, 以realtek的8188etv为例
到官网下载相应的驱动, 解压后可以看到其中有很多的文档, 应用工具和不同android版本的驱动源代码.

根据自己的android版本选择对应的驱动, 我的是4.0的用的是android_reference_codes_ICS_nl80211目录下的驱动
这个目录下还有一个文档, 跟移植相关的, 一定要好好看啦, 很重要的
进入驱动源代码的根目录, 打开Makefile文件, 修改并添加一下代码

  1. CONFIG_PLATFORM_I386_PC = n #修改的
  2. CONFIG_PLATFORM_ARM_S5PV210 = y #添加的

复制代码

  1. ifeq ($(CONFIG_PLATFORM_ARM_S5PV210), y)
  2. EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN #-DCONFIG_MINIMAL_MEMORY_USAGE
  3. EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 #这个很重要的, 不添加的话android下的wpa_supplicant_8不能与驱动正常沟通啦, 也可以在autoconf_rtl8188e_usb_linux.h中修改, 我的是usb接口的wifi模块, sdio接口的是autoconf_rtl8189e_sdio_linux.h
  4. ARCH ?= arm
  5. CROSS_COMPILE ?= /opt/s210x/arm-2009q3/bin/arm-none-linux-gnueabi- #交叉编译工具
  6. KVER:= 3.0.8 #内核版本
  7. KSRC ?= /opt/x210_ics_rtm_v12/kernel/ #内核根目录
  8. MODULE_NAME := wlan #模块名
  9. 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中添加一下代码

  1. #Add for wifi
  2. BOARD_WIFI_VENDOR := realtek
  3. ifeq ($(BOARD_WIFI_VENDOR), ti)
  4. WPA_SUPPLICANT_VERSION := VER_0_8_X
  5. #BOARD_WPA_SUPPLICANT_DRIVER := WEXT #
  6. BOARD_WPA_SUPPLICANT_DRIVER := NL80211 #wifi驱动使用的是NL80211, 这里当然就是NL80211而不是WEXT
  7. BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_rtl
  8. BOARD_HOSTAPD_DRIVER        := NL80211 <span style="font-family: Arial, Helvetica, sans-serif;">#wifi驱动使用的是NL80211, 这里当然就是NL80211而不是WEXT</span>
  9. BOARD_HOSTAPD_PRIVATE_LIB   := lib_driver_cmd_rtl
  10. BOARD_WLAN_DEVICE := rtl8192cu
  11. #BOARD_WLAN_DEVICE := rtl8192du
  12. #BOARD_WLAN_DEVICE := rtl8192ce
  13. #BOARD_WLAN_DEVICE := rtl8192de
  14. #BOARD_WLAN_DEVICE := rtl8723as
  15. #BOARD_WLAN_DEVICE := rtl8723au
  16. #BOARD_WLAN_DEVICE := rtl8188es
  17. WIFI_DRIVER_MODULE_NAME   := wlan
  18. WIFI_DRIVER_MODULE_PATH   := "/system/lib/modules/wlan.ko"
  19. WIFI_DRIVER_MODULE_ARG    := ""
  20. WIFI_FIRMWARE_LOADER      := ""
  21. WIFI_DRIVER_FW_PATH_STA   := ""
  22. WIFI_DRIVER_FW_PATH_AP    := ""
  23. WIFI_DRIVER_FW_PATH_P2P   := ""
  24. WIFI_DRIVER_FW_PATH_PARAM := ""
  25. endif

复制代码

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

  1. on post-fs-data
  2. # we will remap this as /mnt/sdcard with the sdcard fuse tool
  3. mkdir /data/media 0775 media_rw media_rw
  4. chown media_rw media_rw /data/media
  5. setprop vold.post_fs_data_done 1
  6. mkdir /data/misc/dhcp 0770 dhcp dhcp
  7. chown dhcp dhcp /data/misc/dhcp
  8. mkdir /data/misc/wifi/sockets 0770 wifi wifi
  9. service wpa_supplicant /system/bin/wpa_supplicant -Dnl80211 -iwlan0 -c/system/etc/wifi/wpa_supplicant.conf #wifi驱动中是nl80211,这里也一样是nl80211
  10. socket wpa_wlan0 dgram 660 wifi wifi # android private socket
  11. group wifi inet
  12. disabled
  13. oneshot
  14. service dhcpcd_wlan0 /system/bin/dhcpcd -d -f /system/etc/dhcpcd/dhcpcd.conf wlan0
  15. group system dhcp
  16. disabled
  17. oneshot
  18. service dhcpcd /system/bin/dhcpcd -d -f /system/etc/dhcpcd/dhcpcd.conf wlan0
  19. group system dhcp
  20. disabled
  21. oneshot

复制代码

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

  1. Android wifi驱动的移植 realtek 8188

    Android wifi驱动的移植 一般我们拿到的android源代码中wifi应用层部分是好的, 主要是wifi芯片的驱动要移植并添加进去. wifi驱动的移植, 以realtek的8188etv为 ...

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

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

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

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

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

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

  5. EP-N8530S USB WIFI 驱动移植

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

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

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

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

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

  8. 360随身WiFi驱动下载

    一场不算太好的体验,但还是解决问题了 360随身WiFi驱动下载地址 事情经过: 某天在家里组装起PC,才发现当时没有在这屋里预留网线接口,走明线穿堂过户肯定是不合适的,还是买个无线网卡吧 自然还是要 ...

  9. BCM wifi驱动学习

    BCMwifi驱动学习 一.wifi详解1 1.代码路径:Z:\home\stonechen\svn\TD550_X\TD550\3rdparty\wifi\BCM43362\special\bcmd ...

随机推荐

  1. HDU1058 DP

    Humble Numbers Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)To ...

  2. windows安装django

    Window 下安装 Django 如果你还未安装Python环境需要先下载Python安装包. 1.Python 下载地址:https://www.python.org/downloads/ 2.D ...

  3. Web前端开发基础 第四课(CSS小技巧1)

    垂直居中-父元素高度确定的单行文本 父元素高度确定的单行文本的竖直居中的方法是通过设置父元素的 height 和 line-height 高度一致来实现的.如下代码: <div class=&q ...

  4. 【转载】区间信息的维护与查询(一)——二叉索引树(Fenwick树、树状数组)

    在网上找到一篇非常不错的树状数组的博客,拿来转载,原文地址. 树状数组 最新看了一下区间的查询与修改的知识,最主要看到的是树状数组(BIT),以前感觉好高大上的东西,其实也不过就这么简单而已. 我们有 ...

  5. 【Composer】实战操作二:自己创建composer包并提交

    大纲 创建自己的composer库 提交到指定平台 测试安装自己的库 设置composer平台自动更新 如何方便测试自己开发的库 开始动手 创建自己的composer库 个人博客后台有一部分是关于统计 ...

  6. rabbitmq之消息转储vm_memory_high_watermark_paging

    rabbitmq为了预防内存达到上限,会在内存使用到了一定比例后,将消息转储到磁盘去.

  7. 3D touch的 使用心得

    一.设置图标touch 快捷进入 1.静态标签 静态标签是我们在项目的配置plist文件中配置的标签,在用户安装程序后就可以使用,并且排序会在动态标签的前面. 我们先来看静态标签的配置: 首先,在in ...

  8. Java工具

    1. Groovy shell 可以在Java代码里执行脚本,可以将Java方法配置在文件里 依赖 <dependency> <groupId>org.codehaus.gro ...

  9. zepto源码--核心方法(类数组相关)--学习笔记

    从这篇起,在没有介绍到各类插件之前,后面将陆续介绍zepto对外暴露的核心方法.即$.fn={}里面的所有方法的介绍.会配合zepto的API进行介绍. 其实前面已经介绍了几个,如width,heig ...

  10. C# 消息队列

    阅读目录 1. 消息队列是什么? 2. 常见的消息队列框架有哪些? 3. MSMQ介绍 4. RabbitMQ介绍 消息队列是什么 简单的理解就是将消息添加一个队列中,使用时在从这个队列中取出来.那么 ...