现在的位置: 首页 > 综合 > 正文

Android手机与开发板的Wi-Fi连接

2013年09月01日 ⁄ 综合 ⁄ 共 3715字 ⁄ 字号 评论关闭

    首先说明这里实现的是Android手机作为Wifi接入点(AP),PC机和ARM-Linux作为两个终端接入。后面会说明一下怎样让开发板作与Android手机连接的其它方式,但是我的还没有实现。
    一、环境介绍:
    PC机:Windows XP
    Android手机:Android 2.2
    开发板:mini2440 Linux 2.6.32.2
    wifi USB无线网卡:Realtek 8188
    二、基本概念
    一些非常基础的或者非常专业的词汇我不说,这里仅易于理解的说明下在文中会用到的两个概念。
    essid
    SSID(Service Set Identifier)服务集标识,通常由AP广播出来,主要就是用来区分不同的网络,简单认为就是这个网络的名称;这一笼统的概念后又有BSSID和ESSID的,前者据说是由单一的AP和站点(终端)构成的一个小型局域网;后者可以拥有多个AP,构成较大规模的网络,通过essid来区分。因此你可以通过你的wifi无线网卡搜索到很多可用网络并且连接网络时,就通过SSID来区分。
    在Linux无线网卡中一般会用到Mode,也就是配置你的设备的工作模式:一般有Managed、ad-hoc/P2P、Master。Managed模式相当于你的设备作为网络的终端节点,可以连接AP,访问网络中的设备;ad-hoc/p2p模式,可以称之为点对点模式,就是在同ssid网络中,没有AP设备之间进行直接通信,可以看看Ubuntu网站的帮助文档https://help.ubuntu.com/community/WifiDocs/Adhoc。Master模式就是使用无线网卡作为AP,允许其它设备的连入,如果是softAP,那么就相当于一个无线路由。可能说的不是很准确,有这样一个概念。
   三、网络搭建
   说的有点大。就是相关的驱动安装,使用。首先是Android手机进入“设置”->“无线和网络”->找到类似于热点设置之类的(担心这里不同手机可能有不同的叫法),进入打开便携式Wi-Fi热点,可以进行网络ssid等的设置,这里是默认的“AndroidAP”。

   PC机安装随盘的rtl818su驱动,或者从官网中选择下载相应的software。从“模式”菜单中选择“基站”,从“可用网络”中找到ssid“AndroidAP”,选择添加到配置文件,如图所示:

    连接后自动获取IP,如图所示:

    在Linux下,只要把rtl8180的驱动make一下,然后insmod加载上就可以了。要想在开发板上使用,只要配置相应的交叉编译器,指明目标板内核源文件路径。在随盘的linux驱动的config中修改如下:
CONFIG_PLATFORM_I386_PC =n
CONFIG_PLATFORM_ARM_S3C = y
在Makefile下可以修改如下:

ifeq ($(CONFIG_PLATFORM_ARM_S3C), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
ARCH := arm
CROSS_COMPILE := arm-linux-
KVER  := 2.6.32.2
KSRC := /opt/arm_linux/kernel/linux-$(KVER)-mini2440
endif

如果是从官网上下载的驱动,只要改Makefile就可以了:

CONFIG_PLATFORM_I386_PC         =       n

CONFIG_PLATFORM_ANDROID_X86     =       n

CONFIG_PLATFORM_ARM_S3C         =       y

CONFIG_PLATFORM_ARM_PXA         =       n

ifeq ($(CONFIG_PLATFORM_ARM_S3C), y)

EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIANARCH := arm

CROSS_COMPILE := arm-linux-

KVER  := 2.6.32.2

KSRC := /opt/arm_linux/kernel/linux-$(KVER)-mini2440

endif

其中CROSS_COMPILE :交叉编译器,KSRC是你的板子的内核目录位置。
将生成的.ko文件拷贝到板子上,通过insmod加载,然后插入usb无线网卡,即可。下面进行Managed模式配置,使其能够与Android手机建立的AP连接。命令如下:
iwconfig wlan0 up
ifconfig wlan0 192.168.43.25     (手机上的默认IP为192.168.43.1,因此需要在一个IP段内)
iwconfig wlan0 mode Managed essid AndroidAP    (这些命令在网卡linux驱动的readme中有,AndroidAP是手机建立的AP名称)
至于其它的什么channel、rate等的可选。
好了,ping一下试试吧,我的如下:
[root@FriendlyARM /]# ifconfig wlan0 192.168.43.25
[root@FriendlyARM /]# ping 192.168.43.1
PING 192.168.43.1 (192.168.43.1): 56 data bytes
fwdbg:issue action: 00000003, 00000000, 00000000

fwdbg:ADDBA RSP: 00000001

64 bytes from 192.168.43.1: seq=0 ttl=64 time=15.797 ms
64 bytes from 192.168.43.1: seq=1 ttl=64 time=30.911 ms
64 bytes from 192.168.43.1: seq=2 ttl=64 time=25.923 ms
^C
--- 192.168.43.1 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 15.797/24.210/30.911 ms
[root@FriendlyARM /]# ping 192.168.43.23
PING 192.168.43.23 (192.168.43.23): 56 data bytes
64 bytes from 192.168.43.23: seq=0 ttl=64 time=84.997 ms
64 bytes from 192.168.43.23: seq=1 ttl=64 time=33.968 ms
64 bytes from 192.168.43.23: seq=2 ttl=64 time=29.037 ms
^C
--- 192.168.43.23 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 29.037/49.334/84.997 ms
    三、一些问题
    最开始,我是希望用开发板作为AP,手机、PC可以直接连接,但是由于购买的Realtek 8188系列的usb无线wifi网卡不支持Linux下的软AP功能,因此作罢;然后又想通过使用ad-hoc模式连接手机和开发板,但是Android手机默认不支持ad-hoc模式,想要修改还得获取手机root权限,修改其中的wifi配置文件,但是我的手机不是常见的google的G系列的,没有找到网上所说的tiwlan.ini,更不要说修改了,结果看到wpa_supplicant的配置好像支持,但是试了几次还是没有获取到root权限,就没有修改成功。最后又找到据说的hostapd,能够使得无线网卡切换为master模式,模拟AP(通常可以认为是路由器)功能,也就是我们说的软AP(Soft
AP)。貌似很好了,结果包括ssl、libnl一通移植板子上,测试了下无法改成AP模式失败退出,看了下支持的driver,没有我的网卡。但是可以想到的是,既然该usb网卡可以在windows下实现软AP的功能,说明硬件是没有问题的,只不过在Linux因为其其他产品的存在而没有此功能,所以,可以以hostapd为基础,修改其driver的支持,实现在板子上的AP功能,记录到此,以后要是可以了,再补上了!
    如果有实现的希望能交流,指教一下啊。我的邮箱w.7849516230@163.com

这两篇可能对你有帮助:
用ubuntu搭建无线wifi hotspot热点/AccessPoint(AP):http://phoeagon.byethost15.com/2011/08/20/%E7%94%A8ubuntu%E6%90%AD%E5%BB%BA%E6%97%A0%E7%BA%BFwifi-hotspot%E7%83%AD%E7%82%B9accesspointap/
Linux Wifi共享上网脚本,类似win 7的Connectify工具:http://blog.csdn.net/feifei454498130/article/details/6642140

【上篇】
【下篇】

抱歉!评论已关闭.