port wifi to ICS(4.0.3)

去年移植了2.2。最近又刚刚移植了4.0.3。使用的是broadcom的bcm4329网卡。现把移植经历分享一下

1.该android.hardware.wifi.xml复制到out目录下

在相应的.mk文件中。添加

PRODUCT_COPY_FILES += \

    frameworks/base/data/etc/android.hardware.wifi.xml:$(PRODUCT_OUT)system/etc/permissions/android.hardware.wifi.xml

这样,settings中就有了wifi设置

2.external/wpa_supplicant/.config

   确保存在以下支持wifi的2项

  CONFIG_CTRL_IFACE=y 
  CONFIG_DRIVER_WEXT=y

3.配置device/**/**相应工程的BoardConfig.mk

   确保有如下两项:

WPA_SUPPLICANT_VERSION := VER_0_8_X //使用wpa_supplicant版本8编译

BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_wext

BOARD_WPA_SUPPLICANT_DRIVER := WEXT //BCM4329所使用的driver

BOARD_WLAN_DEVICE := bcm4329

ifeq($(BOARD_WLAN_DEVICE),bcm4329)

WIFI_DRIVER_MODULE_NAME :=dhd //在wifi.c中会用到

WIFI_DRIVER_MODULE_PATH := /system/etc/wifi/dhd.ko //在wifi.c中会用到

#endif

4.external/wpa_supplicant_8/wpa_supplicant.conf配置

标准unix socket通信方式配置

 ctrl_interface=DIR=/data/system/wpa_supplicant GROUP=wifi  //注意要跟wifi.c中的IFACE_DIR一致
 update_config=1 
 ap_scan=1 //表示自动扫描

android私有socket方式配置

ctrl_interface=eth0

update_config=1

ap_scan=1

此处,我使用android私有socket配置.后面的所有配置都会以此配置。编译之后,就会在out目录下生成/system/etc/wifi/wpa_supplicant.conf文件。

5.wifi.c配置

  仔细浏览wifi.c文件,发现如下代码

    /*if (access(IFACE_DIR, F_OK) == 0) {
        snprintf(ifname, sizeof(ifname), "%s/%s", IFACE_DIR, iface); //此项情况,表示使用标准UNIX socket通信方式。如果wpa_supplicant配置的unix方式,就要走这里。
    } else*/ {
        strlcpy(ifname, iface, sizeof(ifname)); //此处,表示使用android私有socket。如果wpa_supplicant配置android socket,就要走这里。我注释掉了if的内容。
    }

ensure_config_file_exists会复制/system/etc/wifi/wpa_supplicant.conf到/data/misc/wifi/wpa_supplicant.conf。注意检查此处的wpa_supplicant.conf是不是使用的eth0.

6.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 private socket)

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 

#添加wpa_supplicant,dhcp服务

service wpa_supplicant /system/bin/wpa_supplicant -Dwext -ieth0 -c/data/misc/wifi/wpa_supplicant.conf
class main

socket wpa_eth0 dgram 0660 wifi wifi

disabled

oneshot


service dhcpcd_eth0 /system/bin/dhcpcd -BKL -d eth0 

class main

disabled 
Oneshot

在dhcp_utils.c的dhcp_do_request中。snprintf(daemon_cmd, sizeof(daemon_cmd), "%s_%s:%s", DAEMON_NAME, daemon_suffix, interface);

可以看到启动daemon的命令是dhcpd_eth0

7.system.prop设置

  设置wifi接口名为eth0,添加如下内容

  # WiFi Interface
  wifi.interface=eth0 //在wifi.c中会用到。property_get会取该值

8.其他

  wpa_supplicant调试:

  #wpa_supplicant -dd -Dwext -ieth0 -c /data/misc/wifi/wpa_supplicant.conf&

wpa_cli调式

#wpa_cli -ieth0

#>scan_results

  dhcp调试

  dhcpcd -f /system/etc/dhcpcd/dhcpcd.conf -d eth0
  查看firmware是否download:

  #netcfg

  adb操作:

  adb devices //查看设备是否连上
  adb remount //解决权限不足问题
  adb push d:/dhd.ko /system/

  9.打印wpa_supplicant消息:

  external/wpa_supplicant_6/wpa_supplicant/src/utils/Wpa_debug.c中,作如下修改

1)#ifdef CONFIG_ANDROID_LOG
int wpa_debug_level = MSG_DEBUG;

#else

.....

2)android_printf函数中,修改level>=wpa_debug_level为MSG_DEBUG


参考文章:http://blog.linuxconsulting.ro/2010/04/porting-wifi-drivers-to-android.html

SoftAP:http://omapedia.org/wiki/Porting_WLAN_SoftAP_to_Android

http://processors.wiki.ti.com/index.php/TI-Android-GingerBread-2.3.4-DevKit-2.1_PortingGuides#Introduction_2

product_dir/device/samsung/crespo

转载于:https://www.cnblogs.com/chengliu/archive/2012/02/17/3636426.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/302885.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C# 离线使用nuget

正常在我们使用nuget进行程序集下载的时候,直接在vs编辑器中直接进行操作,下载自己想要的各种程序,但是某些时候,在进行一些办公时,公司要求本机编码不能进行联网操作,那么这种情况下我们怎么进行nuget程序…

21个令程序员泪流满面的瞬间

「1」公司实习生找 Bug「2」在调试时,将断点设置在错误的位置「3」当我有一个很棒的调试想法时 「4」偶然间看到自己多年前写的代码「5」当我第一次启动我的单元测试时「6」数据库的Delete语句忘了使用限定词where... 「7」明明是个小bug但就是死活修不好......「8…

python气象数据处理与绘图_Python气象数据处理与绘图:纬高图的另一种思路

前言有些时候为了研究不同高度上气象要素之间的联系,纬度-高度作为xy轴的图在一些SCI论文中比较常见。这是我研究的CMIP6数据中ua,va,wap,ta这几个气象要素在纬度-高度图上的不同。读取数据的地方就略去了,需要注意的是需要进行平均,温度转为…

新的一年

1、学习一种新语言,框架或方法 2、让你掌握的内容更精深 3、探索一个新的领域 4、参与社区 5、教导他人 6、更好地照顾自己 7、更好的管理自己的时间(以及其他资源)

.Net Core 集成 Kafka

最近维护的一个系统并发有点高,所以想引入一个消息队列来进行削峰。考察了一些产品,最终决定使用kafka来当做消息队列。以下是关于kafka的一些知识的整理笔记。kafkakafka 是分布式流式平台。它由linkedin开发,后贡献给了Apache开源组织并成为…

如果生活中没有数学,那么。。。

随着科技的快速发展,人工智能的重要性日渐显现。对于大多数新手来说,弄清楚入门人工智能需要哪些数学基础、需要熟悉什么框架等,都至关重要。机器学习是一个异常丰富的研究领域,有大量未解决的问题:公正、可解释性、易…

mysql5.6查看归档_MySQL5.6 使用 pt-archiver 分批删除、归档数据

pt-archiver是一个十分高效的表数据归档工具,归档数据可以分批进行事务处理,减少性能消耗;如果实例开启了GTID,因为GTID不支持CTAS创建表的语法,可以使用pt-archiver处理;对于跨实例或者跨服务器的表数据归…

Python学习笔记整理(三)Python中的动态类型简介

Python中只有一个赋值模型 一、缺少类型声明语句的情况 在Python中,类型是在运行过程中自动决定的,而不是通过代码声明。这意味着没有必要事声明变量。只要记住,这个概念实质上对变量,对象和它们之间的关系都适用。那么这个概念也…

Microsoft宣布将停止支持多个 .NET Framework版本

Microsoft 宣布,使用传统的、不安全的安全哈希算法1(SHA-1)签名的多个 .NET 框架版本将在明年停止支持。据 .NET 首席工程经理 Jamshed Damkewala 表示,.NET 框架 4.5.2、4.6 和 4.6.1 将在 2022 年 4 月 26 日后停止支持&#xf…

算法有偏见?总比人类识别强吧!

在讨伐算法导致的偏见和产生的作用时,更重要的问题是:与完全没有使用算法的情况相比是怎样的?我们应该比较算法的缺陷与人类的缺陷,而不是简单地询问算法是否存在缺陷。一场革命正在悄然进行。这场革命与大部分新闻报道中出现的人…

no ip domain-lookup 什么意思

no ip domain-lookup 是什么意思? 当你敲入一个不能识别的命令时,它不会去向查找域名一样,去搜DNS服务器。如果在你的网络中没有DNS服务器的话,那么在配置router的时候最好写上该句,因为我们都不是专业的打字员&#x…

如何将mysql文件导入MySQL_如何将mysql5的sql文件导入到mysql4?

1、将mysql5里导出的sql文件导入到mysql5中。 2、用mysqldump -uroot -p1234 --opt --compatiblemysql40 -A -re:/localhost.sql --compatiblename参数描述如下: --compatiblename Change the dump to be compatible with a given mode. By default tables are dump…

通过Dapr实现一个简单的基于.net的微服务电商系统(八)——一步一步教你如何撸Dapr之链路追踪

Dapr提供了一些开箱即用的分布式链路追踪解决方案,今天我们来讲一讲如何通过dapr的configuration来实现非侵入式链路追踪的目录:一、通过Dapr实现一个简单的基于.net的微服务电商系统二、通过Dapr实现一个简单的基于.net的微服务电商系统(二)——通讯框架…

21副酷炫的动图让你了解各种数学概念

数学是很难的科学,但因为它是科学家用数学来解释宇宙的语言,我们无可避免的要学习它。看看下面的这些GIF动图,它们提供了视觉的方式来帮助你理解各种数学技巧。1椭圆的画法2杨辉三角问题(Pascal triangles)解法3使用“FOIL”轻松的解决二项式…

VMware 虚拟机(linux)增加根目录磁盘空间

今天查看学校的监控报修系统,不能访问了!!!系统运行很慢,用top命令查看发现内存使用率90%,用"df -h ”查看“/”目录使用率已达到80%,导致系统运行很慢。我用以下方法扩大根目录磁盘空间。…

阅读Java_如何阅读 Java 开源代码?

最近正在学习阅读源码,看到的大神许鹏的方法,感觉很有用,分享给大家源码阅读其实是一个逆向的工程,这期间必须会遇到种种问题。一般来说,我会遵循这样一个思维范式——Problem domain→model→architecture&implem…

网关Ocelot功能演示完结,久等了~~~

前言关于网关(Ocelot)的分享,还遗留一些功能没演示呢,接着来聊聊;这次重点针对网关Ocelot使用缓存、集成Polly做服务治理、集成IdentityServer4做认证授权来详细说说;如果对上一篇感兴趣,点这里(网关Ocelot功能演示安排…

数学课本上的几大变态

数学课本上的几大变态数据与算法之美用数据解决不可能长按扫码关注

读“苹果上周发布了Mac OS X Mountain Lion系统”新闻的感想

苹果上周发布了Mac OS X Mountain Lion系统,该系统将使得你的桌面电脑更像是一款手机。这种趋势非常明显,桌面操作系统未来将和移动系统进一步融合。 我们先从趋势本身说起。首先,相比此前的系统版本,苹果此次在Mountain Lion中更…

java 多行字符串_java字符串多行写法

有一个很长的字符串,想分成多行书写,主要为了美观。VB代码中可以将一个很长的字符串分成多行书写,例如:String str"adfasdfasdfas \asdfasdfasdfasdf \asdfasdf "Java 没有相似的处理方式。变通处理方式:Str…