一般我们拿到的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. firefox如何禁用JavaScript

    1.在Firefox地址栏里输入“about:config”.2.在搜索栏输入“javascript.enabled”查找到首选项.3.点击鼠标右键选择“切换”,把“javascript.enable ...

  2. LabVIEW如何将脚本插入Quick Drop

    问题:如何将自己设计的LabVIEW脚本做成快捷键的方式,实现效果如下 解决: 第一步:在LabVIEW Data中新建Quick Drop Plugins 第二步 在文件夹下新建一个VI,VI接口的 ...

  3. js 日期

    let date = new Date(); let year = date.getFullYear(); let money = money = date.getMonth() + 1; let d ...

  4. JTA和JDBC事务

    一般情况下,J2EE应用服务器支持JDBC事务.JTA事务.容器管理事务.这里讨论JTA和JDBC事务的区别.这2个是常用的DAO模式事务界定方式.JDBC 事务 JDBC 事务是用 Connecti ...

  5. Transform a BST to greater sum tree

    Given a BST, transform it into greater sum tree where each node contains sum of all nodes greater th ...

  6. 安装sphinx

    安装Sphinx全文检索服务器 Sphinx默认不支持中文索引及检索, 以前用Coreseek的补丁来解决,目前Coreseek 不单独提供补丁文件,而基于sphinx开发了Coreseek 全文检索 ...

  7. cocos2d-x-3.11.1 初使用

    1. 引擎子系统包括: 世界编辑器.渲染系统.人机交互系统.动画系统.音频系统.物理引擎.网络接口 等 2. cocos2d-x 特点:开源的.跨平台的. cocos2d-x的发展过程: cocos2 ...

  8. ngrok 外网访问小能手

    以前在学校的时候想把自己做的网站发布让外网访问,可是又没有虚拟服务器和域名就显得异常的麻烦,曾经试过花生壳映射,效果虽然还不错,但是略显麻烦.今天找到一个更方便的小工具--ngrok ! 简单的介绍一 ...

  9. c#中浅拷贝和深拷贝的理解

    c#中拷贝有浅拷贝和深拷贝之分. 例如对象A,其中有值类型字段和引用类型字段: 1.浅拷贝: 对于值类型字段,直接逐位复制到新拷贝的副本对象中,修改副本的字段的值,不会影响源对象中字段的值: 对于引用 ...

  10. DNS子域授权与转发配置

    正向区域SUB_ZONE_NAME IN NS NSSERVER_SUB_ZONE_NAME NSSERVER_SUB_ZONE_NAME IN A IP .com xingxing.com. xin ...