明远智睿IMX6Q Android4.4.2移植USBWIFI(RTL8188EUS)
移植过程中得到网友的不少帮助,很感谢!为了让更多的网友不像我这样折腾,特写此文以做参照.过程中主要参考< Realtek_Wi-Fi_SDK_for_Android_KK_4_4.pdf >和< Quick_Start_Guide_for_Driver_Compilation_and_Installation.pdf>这两个文档,以及论坛https://community.freescale.com/thread/322825 这篇文章,具体步骤如下:
一.内核修改
1.替换realtek文件夹
”realtek_wifi_SDK_for_android_KK_4.4_20140117.tar.gz” 解压,然后将ANDROID_SDK /hardware/realtek覆盖到源码kernel_imx/hardwar中.
2. BoardConfig.mk
在ANDROID_SDK /device/ fsl/sabresd_6dq/ BoardConfig.mk中,追加如下内容:
BOARD_WIFI_VENDOR := realtek
BOARD_WLAN_VENDOR := REALTEK
ifeq ($(BOARD_WIFI_VENDOR),realtek)
WPA_SUPPLICANT_VERSION :=VER_0_8_X
BOARD_WPA_SUPPLICANT_DRIVER :=NL80211
#CONFIG_DRIVER_WEXT :=y
CONFIG_DRIVER_NL80211 :=true
BOARD_WPA_SUPPLICANT_PRIVATE_LIB:= lib_driver_cmd_rtl
BOARD_HOSTAPD_DRIVER := NL80211
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 := rtl8189es
#BOARD_WLAN_DEVICE := rtl8723bs
#BOARD_WLAN_DEVICE := rtl8723bu
WIFI_DRIVER_MODULE_NAME :="wlan"
WIFI_DRIVER_MODULE_PATH := "/system/lib/modules/wlan.ko"
WIFI_DRIVER_MODULE_ARG :="ifname=wlan0 if2name=p2p0"
WIFI_FIRMWARE_LOADER :=""
WIFI_DRIVER_FW_PATH_STA :=""
WIFI_DRIVER_FW_PATH_AP :=""
WIFI_DRIVER_FW_PATH_P2P :=""
WIFI_DRIVER_FW_PATH_PARAM :=""
Endif
3. init.rc
在ANDROID_SDK /device/ fsl/sabresd_6dq/init.rc中
A. 替换如下wpa_supplican服务
service rtw_suppl_con /system/bin/wpa_supplicant \
-ip2p0 -Dnl80211-c/data/misc/wifi/p2p_supplicant.conf \
-e/data/misc/wifi/entropy.bin -N\
-iwlan0 -Dnl80211-c/data/misc/wifi/wpa_supplicant.conf \
-O/data/misc/wifi/sockets \
-g@android:wpa_wlan0
class main
socket wpa_wlan0 dgram 660 wifiwifi
disabled
oneshot
service rtw_suppl/system/bin/wpa_supplicant \
-iwlan0 -Dnl80211-c/data/misc/wifi/wpa_supplicant.conf \
-O/data/misc/wifi/sockets \
-e/data/misc/wifi/entropy.bin
-g@android:wpa_wlan0
class main
socket wpa_wlan0 dgram 660 wifiwifi
disabled
oneshot
B. 追加DHCPCD服务
service dhcpcd_wlan0 /system/bin/dhcpcd -aABDKL
class main
disabled
oneshot
service dhcpcd_p2p/system/bin/dhcpcd -aABKL
class main
disabled
oneshot
service iprenew_wlan0/system/bin/dhcpcd -n
class main
disabled
oneshot
service iprenew_p2p/system/bin/dhcpcd -n
class main
disabled
oneshot
4. libhardware_legacy
在文件ANDROID_SDK/hardware/libhardware_legacy/wifi/Android.mk 中变更如下语句
ifeq ($(BOARD_WIFI_VENDOR),realtek)
LOCAL_SRC_FILES +=../realtek/wlan/libhardware_legacy/wifi/wifi_realtek.c
else
LOCAL_SRC_FILES += wifi/wifi.c
Endif
5. wpa_supplicant_8
将ANDROID_SDK/external/下wpa_supplicant_8备份一下,然后将驱动包里的wpa_supplicant_8_kk_4.4_rtw名称改为wpa_supplicant_8并替换到ANDROID_SDK/external/
6.imx6_android_defconfig
修改文件kernel_imx/arch/arm/configs/imx6_android_defconfig,将下列项目配置成Y.
CONFIG_CFG80211=y
CONFIG_MAC80211_MESH=y
CONFIG_MAC80211=y
CONFIG_HOSTAP=y
CONFIG_RTL8192CU=y
CONFIG_USB_USBNET=y
7.权限
在out/target/product/sabresd_6dq/root/init.rc中,追加内容如下:
mkdir /system/etc/wifi 0770 wifi wifi
chmod 0770 /system/etc/wifi
chmod 0660 /system/etc/wifi/wpa_supplicant.conf
chown wifi wifi /system/etc/wifi/wpa_supplicant.conf
#wpa_supplicant control socket for android wifi.c (android privatesocket)
mkdir /data/misc/wifi 0770 wifi wifi
mkdir /data/misc/wifi/sockets 0770 wifi wifi
chmod 0770 /data/misc/wifi
chmod 0660 /data/misc/wifi/wpa_supplicant.conf
chown wifi wifi /data/misc/wifi
chown wifi wifi /data/misc/wifi/wpa_supplicant.conf
setprop wifi.interface wlan0
setprop wlan.driver.status"ok"
8.文件夹删除
out/target/product/sabresd_6dq下的system文件夹以及out/target/product/sabresd_6d/obj/EXECUTABLES下wpa_supplicant_intermediates文件夹删除.
完成以上后,编译内核.
二.驱动编译
1.新驱动包4.3.0.9没有make_drv和autoconf_rtl8188e_usb_linux.h,需要从其他的驱动包中拷过来.
2.增加新的平台
CONFIG_PLATFORM_I386_PC = n
CONFIG_PLATFORM_NEW = y
……
ifeq($(CONFIG_PLATFORM_NEW), y)
EXTRA_CFLAGS +=-DCONFIG_LITTLE_ENDIAN
ARCH := arm
CROSS_COMPILE :=/opt/ new/toolchain/arm-eabi-4.4.3/bin/arm-eabi-
KSRC := /opt/new/kernel
MODULE_NAME := wlan
Endif
3. include/autoconf.h和autoconf_rtl8188e_usb_linux.h修改
#define CONFIG_IOCTL_CFG80211
#ifdef CONFIG_IOCTL_CFG80211
#define RTW_USE_CFG80211_STA_EVENT
//#defineCONFIG_CFG80211_FORCE_COMPATIBLE_2_6_37_UNDER
//#define CONFIG_DEBUG_CFG80211 1
#endif
…
#define CONFIG_CONCURRENT_MODE
…
#define CONFIG_P2P_IPS
4.将编译完成内核,将kernel_imx目录下Module.symvers文件到驱动的根目录覆盖之前的文件.
5.编译
A. make_drv
root@rtl8188C_8192C_8192D_usb_linux_v3.3.0_2920.20111123#./make_drv
Please select chip type(1/2):
1) RTL8192cu
2) RTL8192du
#? 1
You have selected RTL8192cu
B. 在驱动根目录下,执行make,然后在目录下产生wlan.ko文件
三. 驱动安装与再编译
1.将产生的wlan.ko文件,复制到out/target/product/sabresd_6dq/system/lib/modules文件夹中。(没有modules文件夹,自己新建)
2.使用make snod命令重新制作system.img
注意事项:
注意要先编译安卓,再去编译8188eus的驱动
明远智睿IMX6Q Android4.4.2移植USBWIFI(RTL8188EUS)的更多相关文章
- 明远imx6
http://pan.baidu.com/s/1ntsrQtF#path=%252FMY-I.MX6%2520V2.5 nkuc tftpboot 0x10800000 uImage.ramdisk ...
- c标准库 徐明远 背景基础
背景基础 1.c语言库用c语言编写 其他语言则不同 早期语言的库是用汇编语言编写的 不同的计算机体系结构有不同的汇编语言 所以在移植性方面差一点 而c语言可以编写出高度可移植性的代码 ...
- Android4.0Sd卡移植之使用vold自动挂载sd卡
在cap631平台上移植android4.0,发现内核驱动没有任何问题,能够读写,当总不能挂载. 后来发现是因为自动挂载需要vold的支持.vold程序负责检查内核的 sysfs 文件系统,发现有SD ...
- android4.4内核移植
01 init/目录下Kconfig修改: 956行添加: config PANIC_TIMEOUT int "Default panic timeout" help Set de ...
- UNICODE本地编译freescale的i.MX6Q的android4.2.2&android4.4.2 && 全志a80的步骤x1
20151031本地编译freescale的i.MX6Q的android4.2.2&android4.4.2 && 全志a80的步骤x1 2015/10/31 15:07 开始 ...
- qt5.10.1编译记录
qt版本更新比较快,不知道选哪个版本合适,故选择一个较新版本的. 平台imx6 + linux4.1.16 + qt5.10.1 采用明远智睿提供的编译器:fsl-imx-fb-g ...
- LCD屏背光驱动调试心得---血的教训
开发板:明远智睿MY-IMX6-EK140 内核源码:linux-3.14.52 背光驱动IC:MP3202 调光原理:通过开发板的核心板PWM4引脚控制MP3202的EN脚,输出不同的占空比从而达到 ...
- 【转】学习ARM为什么首选IMAX6??
ARM作为目前嵌入式行业主流的架构,已经让越来越多从事电子行业的朋友了解,并且高校对于嵌入式的学习,很多直接从ARM开始,目前ARM的嵌入式培训也越来越多,足以说明现在嵌入式行业有多火.目前主流的AR ...
- QT210 Android4.0源码编译和烧录文档整理
开发环境说明: Ubuntu 12.04 LTS 32bit 源码文件目录: 勤研光盘2013-5-4\4.0 https://github.com/jackyh (建议在Linux环境下通过git下 ...
随机推荐
- [Codeforces375D]Tree and Queries(莫队算法)
题意:给定一棵树,每个节点有颜色,对于每个询问(u,k)询问以u为根节点的子树下有多少种颜色出现次数>=k 因为是子树,跟dfs序有关,转化为一段区间,可以用莫队算法求解 直接用一个数组统计出现 ...
- [回文树][BZOJ2160][国家集训队]拉拉队排练
题面 Description 艾利斯顿商学院篮球队要参加一年一度的市篮球比赛了.拉拉队是篮球比赛的一个看点,好的拉拉队往往能帮助球队增加士气,赢得最终的比赛.所以作为拉拉队队长的楚雨荨同学知道,帮助篮 ...
- Java语言基础---变量与数据类型
变量的作用域 java用一对大括号“{}”作为语句块的范围,称为作用域.作用域中的变量不能重复定义:离开作用域,变量所分配的内存空间将被JVM所收回. 基本数据类型的包装类 java为基础数据类型提供 ...
- IOS多网卡抓包
linux下libpcap支持从多网卡抓包,设置为any即可 在IOS或者mac上就无法通过次方法抓取所有网卡报文 1.通过设置libevent事件回调,每个网卡注册读事件, fd通过 pd = pc ...
- linux下给开启端口
首先在这里要推荐一篇博文 http://blog.csdn.net/zht666/article/details/17505789 这篇文章写的很详细,里面包含了操作端口一些命令,我们操作端口其实就是 ...
- windows 下开发的 .netCore MVC 部署到 Linux(Mint)
这两天在公司跟同事偶然聊到 .netCore,说到一些趋势什么的.但是说来说去自己也没试过在Linux 机子上部署过,所以就试一下. 尝试之前也在网上看了一些文章,包括 Linux 上.netCore ...
- 常用模块(time)
import time # data = time.time() # 获取时间戳# data = time.localtime() # 获取操作系统时间,也称本地时间,可传入时间戳# data = t ...
- Qt 中C++ static_cast 和 reinterpret_cast的区别
1.C++中的static_cast执行非多态的转换,用于代替C中通常的转换操作.因此,被做为隐式类型转换使用.比如: int i; float f = 166.7f; i = static_cast ...
- Mysql 查询—按位运算
前言:虽说这是件小事儿,但本宝宝思前想后,还是为它留下一笔,嘿嘿.反正写博客不浪费纸和笔!好久没有开启我的逗比模式了,我亲爱的乖徒弟DBA,DBB,DBAA等,好久不见你们,遥祝幸福快乐+DB. 整个 ...
- android桌面悬浮窗实现
首先是一个小的悬浮窗显示的是当前使用了百分之多少的内存,点击一下小悬浮窗,就会弹出一个大的悬浮窗,可以一键加速.好,我们现在就来模拟实现一下类似的效果. ...