WiFi驱动移植到Linux
- 格式:docx
- 大小:21.06 KB
- 文档页数:10
Linux操作系统怎么安装无线网卡驱动Linux操作系统怎么安装无线网卡驱动现在很多人都喜欢用无线上网,无线上网就需要无线网卡,而无线网卡就需要安装无线网卡驱动。
那么Linux操作系统怎么安装无线网卡驱动呢?下面跟着店铺一起去了解下吧。
Linux操作系统怎么安装无线网卡驱动安装方法及步骤:一、准备工作1、安装kernel的源码,在Redhat下是kernel-source.rpm包。
//我使用是FC8的内核,未再进行升级。
2、到/projects/ndiswrapper下载最新的ndiswrapper包,我的版本是ndiswrapper-1.52.tar.gz3、准备好网卡在Winxp下的驱动程序。
驱动程序最好是最新的,指定给XP用的。
我用到的是D-Link的一款PCI无线网卡(dwl-g520),其驱动程序是ar5211.sys、ar52119x.sys和net5211.inf。
二、安装及配置1、安装(1)解压:tar -zxvf ndiswrapper-1.52.tar.gz(2)进入ndiswrapper-1.52:cd ndiswrapper-1.52(3)编译:make//在此操作之前必需先把编译环境搭建好,即:安装好开发环境。
(4)安装:make install //如果不采取默认的安装路径,则可以用.configure --prefix="/etc/local"来指定安装目录。
//此目录是自建。
(5)查看安装后的版本ndiswrapper -v | grep //此处似乎不对。
如安装成功则显示version: 1.51(6)获取该无线网卡的WindowsXP驱动,我取了ar5211.sys、ar52119x.sys和net5211.inf。
(7)进入该驱动所在目录:cd /home/tsm/dwl_g520(8)安装无线网卡驱动:ndiswrapper -i net5211.inf(9)查看驱动是否安装:ndiswrapper -l//如:显示net5211(驱动名称) : driver installed(10)写入配置文件:ndiswrapper -mndiswrapper -mandiswrapper -mi(11)启动后模块自动加载:modprobe ndiswrapper2、配置(1)然后配置wpa_supplicant.conf文件:vi /etc/wpa_supplicant/wpa_supplicant.confctrl_interface=/var/run/wpa_supplicantctrl_interface_group=wheelnetwork={ssid="any"key_mgmt=NONE}(2)配置wpa_supplicant文件:vi /etc/sysconfig/wpa_supplicant将该文件内容设置为:# wlan0 and wifi0# INTERFACES="-iwlan0 -iwifi0"INTERFACES="-iwlan0"# ndiswrapper and prism# DRIVERS="-Dndiswrapper -Dprism"DRIVERS="-Dndiswrapper"(3)iwlist scanning 扫描一下你的AP //此处未成功,未知原因待查。
嵌入式Linux下3G无线上网卡的驱动移植由于3G无线上网卡工作模式相同,故其移植也大多雷同,故本次开发同样适用于其他嵌入式开发板,如DM6446,ARM等等。
同样,也适用于其他联通、移动或电信的3G上网卡,尤其是华为的上网卡,如最常用的华为E160, E160G, E169, E180, E230, E270(+), E280, E630, E870, E1550, E1612, E1662, E1690, E1692, E1750, E1752, EC168C, K3765, K4505, K4605, MTE WM610, R201, K4605, K3765, K4505。
中兴的ZTE MF620,MF622等等等等。
其他支持的上网卡型号参见:http://draisberghof.de/usb_modeswitch/建议:现在PC机上安装usb_modeswitch和libusb,首先确保PC上的linux能够顺利拨号,再将其移植到开发板上。
内核:需要有以下模块:option usbserial usbstorage主要是要在编译内核的时候选中Device DriversUSB SupportUSB Serial Converter SupportUSB Serial Converter Support(选中)USB Generic Serial Driver否则软件pppd执行的时候可能会失败。
#make modules //编译外挂模块#make modules_install //安装模块模块编译完后应将其复制到开发板上,并执行以下命令,否则会报找不到modules.dep#/sbin/depmod –a //创建模块的链接软件3个:libusb、usb_modeswitch、pppd(含chat)和1个数据包(纯文本):usb-modeswitch-data libusb源码下载:http://sourceforge/projects/libusb/files/libusb-1.0/usb_modeswitcch下载:http://draisberghof.de/usb_modeswitch/。
rtl8188ce无线模块驱动移植到arm Linux平台一、系统arm Linux 内核2.6.28.6 编译器版本4.2.2(内核版本比较老需要自己编译模块驱动,新内核的话一般内核中可以直接配置模块驱动)二、驱动下载:官网地址/ 下载驱动为RTL8188CE-VAU (Software)RTL8188C_8192C_USB_linux_v4.0.2_9000.20130911.zip三、解压用unzip命令解压 RTL8188C_8192C_USB_linux_v4.0.2_9000.20130911.zip 解压出来的为RTL8188C_8192C_USB_linux_v4.0.2_9000.20130911 文件夹包含10来个文件夹有驱动,工具等。
四、编译:1、修改Makefile修改部分如下:关闭省电模式修改成 CONFIG_POWER_SAVING = n选择平台CONFIG_PLATFORM_I386_PC = nCONFIG_PLATFORM_TI_AM3517 = nCONFIG_PLATFORM_ANDROID_X86 = nCONFIG_PLATFORM_JB_X86 = nCONFIG_PLATFORM_ARM_S3C2K4 = yCONFIG_PLATFORM_ARM_PXA2XX = nCONFIG_PLATFORM_ARM_S3C6K4 = nCONFIG_PLATFORM_MIPS_RMI = nCONFIG_PLATFORM_RTD2880B = nCONFIG_PLATFORM_MIPS_AR9132 = nCONFIG_PLATFORM_RTK_DMP = nCONFIG_PLATFORM_MIPS_PLM = nCONFIG_PLATFORM_MSTAR389 = nCONFIG_PLATFORM_MT53XX = nCONFIG_PLATFORM_ARM_MX51_241H = nCONFIG_PLATFORM_FS_MX61 = nCONFIG_PLATFORM_ACTIONS_ATJ227X = nCONFIG_PLATFORM_TEGRA3_CARDHU = nCONFIG_PLATFORM_TEGRA4_DALMORE = nCONFIG_PLATFORM_ARM_TCC8900 = nCONFIG_PLATFORM_ARM_TCC8920 = nCONFIG_PLATFORM_ARM_TCC8920_JB42 = nCONFIG_PLATFORM_ARM_RK2818 = nCONFIG_PLATFORM_ARM_TI_PANDA = nCONFIG_PLATFORM_MIPS_JZ4760 = nCONFIG_PLATFORM_DMP_PHILIPS = nCONFIG_PLATFORM_TI_DM365 = nCONFIG_PLATFORM_MN10300 = nCONFIG_PLATFORM_MSTAR_TITANIA12 = nCONFIG_PLATFORM_MSTAR_A3 = nCONFIG_PLATFORM_ARM_SUNxI = nCONFIG_PLATFORM_ARM_SUN6I = nCONFIG_DRVEXT_MODULE = n默认为CONFIG_PLATFORM_I386_PC = y这是平台的配置,根据具体情况配置,我的是2440核心板所以把CONFIG_PLATFORM_I386_PC = n改成这样,CONFIG_PLATFORM_ARM_S3C2K4 = y。
Linux系统下中命令行中实现Wifi连接的方法Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
Linux下怎么管理wifi无线网络呢?可能和Windows下不一样,下面把在命令行中实现Wifi 连接的方法分享给大家方法步骤首先,我假设您们都已经正确安装了无线网卡的驱动程序。
没有这前提,后续的一切都如镜花水月。
如果您你机器确实没有正确安装上,您应该看看关于您的发布版本的维基和文档。
然后您就可以用如下命令来检查是哪一个接口来支持无线连接的:$ iwconfig一般来说,无线接口都叫做wlan0。
当然也有例外的,但在这篇教程中我们将会一直用通用叫法。
以防万一,你得确认下以使此接口服务是启动着的:$ sudo ip link set wlan0 up一但确认了无线接口是工作着的,你就可以用如下命令来扫描附近的无线网络了:$ sudo iw dev wlan0 scan | less根据扫描出的结果,可以得到网络的名字(它的SSID),它的信息强度,以及它使用的是哪个安全加密的(如:WEP、WPA/WPA2)。
从此时起,将会分成两条路线:情况很好、很容易的以及情况稍微复杂的。
如果您想连接的网络是没有加密的,您可以用下面的命令直接连接:$ sudo iw dev wlan0 connect [网络 SSID]如果网络是用 WEP 加密的,也非常容易:$ sudo iw dev wlan0 connect [网络 SSID] key 0:[WEP 密钥]但网络使用的是 WPA 或 WPA2 协议的话,事情就不好办了。
这种情况,您就得使用叫做wpasupplicant 的工具,它默认是没有的。
然后需要修改 /etc/wpasupplicant/wpa_supplicant.conf 文件,增加如下行:network={ ssid="[网络 ssid]" psk="[密码]" priority=1}我建议你在文件的末尾添加它,并确保其他配置都注释掉。
linux之wifi相关应用的移植和使用一、 libnl移植下载源码:/~tgr/libnl/ libnl-3.2.21.tar.gz解压缩后,在libnl-3.2.21当前目录下,新建build.sh,编辑内容如下:---------------------------------------分割线----------------------------------------------------[html]view plaincopy1.<span style="font-size:18px;">#!/bin/sh2.CFLAGS=”-I/home/eastmoon/rootfs/kernel/usr/include” \=”arm-linux-gcc” \4../configure –host=arm-linux \5.--prefix=/home/eastmoon/rootfs/usr</span>---------------------------------------分割线----------------------------------------------------设置下build.sh的权限后,./build.sh 配置好以后,make下,再make install 就ok了。
上面的的脚本简单说明下:第2行为libnl需要包含的内核的头文件。
第3行为交叉编译的工具指定。
第4行是把需要的库install到相应的rootfs中去。
然后可以看到在rootfs/usr中就会有include/libnl3 和/lib下的一些相关的.so等库了。
二、 openssl移植下载源码:/source/ openssl-1.0.1e.tar.gz解压缩后,在openssl-1.0.1e当前目录下,新建build.sh,编辑内容如下:---------------------------------------分割线----------------------------------------------------[html]view plaincopy1.<span style="font-size:18px;">#!/bin/sh2../Configure \3.Linux-arm \4.-DL_ENDIAN –fPIC \5.Linux:”arm-linux-gcc” \6.--prefix = “home/eastmoon/rootfs/usr”</span>---------------------------------------分割线----------------------------------------------------设置下build.sh的权限后,./build.sh配置好以后,make再make install然后可以看到在rootfs/usr中就会有include/openssl 和/lib下的一些相关.so等库了。
在linux下的移植1、内核驱动支持因为平台上SDIO功能已经支持,所以只需要内核驱动支持marvell-8686即可。
[*] Networking support --->[*] Wireless ---><*> Improved wireless configuration API{*} common routines for IEEE 802.11 driversDevice Drivers --->[*] Network device support --->Wireless LAN ---><*>Marvell 8xxx Libertas WLAN driver support<*>Marvell Libertas 8385 and 8686 SDIO 802.11b/g cards Generic Driver Options --->(sd8686.bin sd8686_helper.bin) External firmware blobs to build into the kernel binary把sd8686.bin 和sd8686_helper.bin这两个固件放在/firmware这个目录下。
2、wpa_suppicant的移植源码版本选择:wpa_supplicant-0.7.2openssl-0.9.8eopenssl移植:a、补丁安装openssl源码编译需要打wpa_supplicant提供的补丁,我们选择的openssl版本为openssl-0.9.8e所以我们需要wpa_supplicant-0.7.2/patches/openssl-0.9.8e-tls-extensions.patch拷贝到openssl源码下。
patch -p1 < openssl-0.9.8e-tls-extensions.patchb、配置编译安装./Configure linux-elf-arm -DL_ENDIAN linux:'arm-none-linux-gnueabi-gcc' shared --prefix=/home/linux/workdir/wifi/opensslmakemake installwpa_supplicant移植:在/wpa_supplicant-0.7.2/wpa_supplicant目录下a、按如下方式修改cp deconfig .configvi .config在里面添加如下CC= arm-linux-gcc -L /home/linux/workdir/wifi/openssl/lib/CFLAGS += -I/home/linux/workdir/wifi/openssl/includeLIBS += -L/home/linux/workdir/wifi/openssl/lib/b、编译make编译后将生产的wpa_supplicant和wpa_cli拷贝到跟文件系统的bin目录下3、固件准备将固件sd8686.bin和sd8686_helper.bin拷贝到linux-2.6.35/firmware下。
平台为hi35XX,在Liunx下借助wireless_tools和wpa_supplicant (因为现在的无线wifi网络大多是wpa加密。
所以需要移植wpa_supplicant工具)等工具实现wifi的过程。
一、移植wireless_tools1. 下载并编译wireless_toolstar zxf wireless_tools.29.tar.gz(网上下载)cd wireless_tools.29make成功后会在当前目录生成iwspy,iwpriv,iwlist以及iwconfig等文件。
2. 拷贝文件我们只需将这四个文件拷备到文件系统的sbin目录,然后将当前目录的libiw.so.29库文件拷到文件系统的lib目录,无线网络工具即安装完成。
二、加载无线网卡驱动模块网上有很多无线驱动模块,可移植性很好。
呵呵,我的是利用XX无线网卡公司提供的网卡驱动源码,修改下Makefile(1.网卡选择 2.平台 3.内核路径和工具链)以及os/linux 下的config.mk(一般不需要修改),make得到的。
insmod rtutil5572sta.ko。
insmod rt5572sta.koinsmod rtnet5572sta.ko三、指令的使用1. 扫描可用的无线网络iwlistwifi-name scanning其中wifi-name为无线网卡的名字,比如网卡eth0就是系统默认的网卡名字, wifi-name可以用ifconfig查看,一般为ra0(无线网卡),不过,需要ifconfig ra0 up。
2. 扫描网络信息iwlistra0 scan===>rt_ioctl_giwscan.11(11) BSS returned, data->length = 1427ra0 Scan completed :Cell 01 - Address:C4:CA:D9:1D:9E:A0Protocol:802.11b/g/nESSID:""Mode:ManagedFrequency:2.412 GHz(Channel 1)Quality=7/100 Signal level=-87 dBm Noise level=-82 dBmEncryption key:offBit Rates:54 Mb/s如上:ESSID项的值即为无线网络的名字,如上的“TXJ”等。
8192CU WIFI驱动移植一、8192CU WIFI驱动交叉编译1、进入自己的内核根目录,执行make menuconfig,在编译选项中确保如下选项选中:Device Drivers --->Network device suppout --->Wireless LAN (non-hamradio) --->[*] Wireless LAN drivrs (non-hamradio) & Wireless Extensions[*] Wireless Extension API over RtNetlink //此项可不选2、保存内核配置,在内核根目录编译内核(我的:make vmlinux ARCH=mips CROSS_COMPILE=mipsel-linux-),编译完成不要strip3、网上下载源码(realtek官网下载)4、在linux下解压下载的到指定目录5、更改解压后的源码中的Makefile文件:(1)将有关CONFIG_PLATFORM_*的选项全部改为n(2)在export TopDIR ?= $(shell pwd)之后增加自己的编译选项,编译选项的内容根据目标平台的大小端模式、平台架构、交叉编译器、内核版本、内核目录树路径配置,我的mips的编译选项如下:EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIANARCH:=mipsCROSS_COMPILE:=mipsel-linux-KVER:=2.6.21.5KSRC:= /home/tom/work/ls1b/customer/src-kernel/linux-2.6.216、更改完成在驱动根目录执行make,正常情况下不会有错误,编译完成后在驱动根目录里会看到8192cu.ko,这就是我们所需要的驱动。
二、Wireless_tools交叉编译1、网上下载wireless_tools_29源码包2、解压下载的源码到指定目录。
ARM板TL_WN725N USB Wifi Driver 移植内容描述:2014-12-15,TL_WN725N USB Wifi Linux Driver 移植。
操作1:确定型号插入TP-link USB wifi,提示UT@utcooker:/data # 插入前后lsusbBus 001 Device 007: ID 0bda:8179得知idVendor=0bda, idProduct=8179,确认芯片型号为8188eu,TL-WN725N V2版本。
UT@utcooker:/data # netcfgsit0 DOWN 0.0.0.0/0 0x00000080 00:00:00:00:00:00lo UP 127.0.0.1/8 0x00000049 00:00:00:00:00:00ip6tnl0 DOWN 0.0.0.0/0 0x00000080 00:00:00:00:00:00操作2:测试驱动1)Realtek官方暂无8188eu linux 驱动。
下载相近型号芯片驱动源码。
进入os_dep\linux\usb_intf.c 查看RTL8192C_USB_IDS无{USB_DEVICE(USB_VENDER_ID_REALTEK, 0x8187)}2)github 下载驱动rtl8188eu-master.tar (经测试,热插拔有问题)rtl8188EUS_linux_v4.1.4_6773.20130222.tar.gz(可用)RTL8188EUS_RTL8189ES_linux_v4.1.7_9024.20130916.zip(可用)操作3:修改内核以RTL8188EUS_RTL8189ES_linux_v4.1.7_9024.20130916.zip为例,移植过程如下:1)确认linux内核有以下配置:[*] Networking support --->-*-Wireless ---><*> cfg80211 - wireless configuration API[*] cfg80211 wireless extensions compatibility2)打开makefileCONFIG_PLATFORM_I386_PC = y 改为CONFIG_PLATFORM_I386_PC = nCONFIG_PLATFORM_ARM_S3C2K4 =n 改CONFIG_PLATFORM_ARM_S3C2K4 = y 配置编译链及内核源码地址ifeq ($(CONFIG_PLATFORM_ARM_S3C2K4), y)EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIANARCH := armCROSS_COMPILE := /opt/FriendlyARM/gcc-toolschain/4.5.1/bin/arm-linux-KSRC := /svn/pengdonghui/Android_maize/linux-3.5-newEndif3)make –j32后得到8188eu.ko放入开发板:adb push 8188eu.ko /data加载驱动模块:UT@utcooker:/data # insmod 8188eu.ko[18668.230000] bFWReady == _FALSE call reset 8051...[18668.260000] usbcore: registered new interface driver rtl8188eu 查看网络设备:UT@utcooker:/data # ifconfig -a…wlan0 Link encap:Ethernet HWaddr 08:57:00:98:6B:31BROADCAST MULTICAST MTU:1500 Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)此时,此时能看到网络接口,Android界面setting 无法打开wifi。
linux下移植之WIFI驱动2010-05-14 22:271.前言硬件平台: imx27+sd8686软件平台: linux内核: 2.6.272.移植思想1, WIFI 模块本身和 cpu 之间的接口;我们的模块和 cpu 之间的接口是 sdio 的,也就是说必须要先保证SDIO 本身是工作的,与SD卡,MMC属于同类型。
主要用到这几个GPIO引脚SD0...SD3,SD2_CMD,SD2_CLK,以及复位引脚PB24.2, WIFI 模块本身的上电时序;模块都有它自己的规律,所以必须要根据 spec 了解它本身的上电过程,严格遵守;3,以太网接口的创建;我们的 WIFI 模块本身是建立在 SDIO 口之上的,而对上都是提供以太网接口的,所以必须要保证这个接口以及创建;4,特殊处理;不同的模块都有它特别的地方,比如我们用的是 8686 和 compo 也就是说它和蓝牙共用天线,所以需要在初始化的时候做特殊的处理,发送特殊的命令,才能工作;3.移植过程1,sdio本身是通过gpio口模拟的,所以需要对gpio口进行配置;static mfp_cfg_t littleton_mmc3_pins[] = {GPIO7_2_MMC3_DAT0,GPIO8_2_MMC3_DAT1,GPIO9_2_MMC3_DAT2,GPIO10_2_MMC3_DAT3,GPIO103_MMC3_CLK,GPIO105_MMC3_CMD,};2,wifi模块本身的初始化;#define MFP_WIFI_V18_ENABLE (GPIO26_GPIO)#define MFP_WLAN_RESETN (GPIO99_GPIO)#define WIFI_WAKEUP_HOST (GPIO104_GPIO) /*error must be changed*/#define WLAN_ENABLE_PIN 26#define WLAN_RESET_PIN 99#define M200_B#ifdef M200_B#define BT_RESET_PIN EXT1_GPIO(1)#define BT_RESET_GPIO (GPIO1_2_GPIO)#else#define BT_RESET_GPIO (GPIO6_2_GPIO)#define BT_RESET_PIN EXT1_GPIO(6)#endifstatic mfp_cfg_t lin2008_wifibt_pins[] = {MFP_WIFI_V18_ENABLE,MFP_WLAN_RESETN,WIFI_WAKEUP_HOST,/*wakeup host*/};static mfp_cfg_t lin2008_wifibt_pins2[] = {MFP_WIFI_V18_ENABLE,};static int wifibt_power_status;int lin2008_poweron_wifibt_board(void){if (!wifibt_power_status) {mxc_mfp_config(ARRAY_AND_SIZE(lin2008_wifibt_pins)) ;gpio_direction_output(WLAN_ENABLE_PIN, 1);gpio_direction_output(WLAN_RESET_PIN, 1);gpio_direction_output(BT_RESET_PIN,1);mdelay(10);gpio_direction_output(BT_RESET_PIN, 0);gpio_direction_output(WLAN_RESET_PIN, 0);// bt need > 5 ms to resetmdelay(5);gpio_direction_output(BT_RESET_PIN, 1);gpio_direction_output(WLAN_RESET_PIN, 1);wifibt_power_status++;return 0;}wifibt_power_status++;return 1;}int lin2008_poweroff_wifibt_board(void){wifibt_power_status--;if (!wifibt_power_status) {mxc_mfp_config(ARRAY_AND_SIZE(lin2008_wifibt_pins2) );gpio_direction_output(WLAN_ENABLE_PIN, 0);return 0;}return 1;}3,以太网接口的创建这里在 android 平台上要做特殊的处理,也就是 firmware 的位置要放好,否则加载 firmware 始终不成功,那么以太网接口就不会被创建了;需要把 helper_sd.bin 放在 /lib/firmware/mrvl 下面(若没有,则创建一个);把 sd8686.bin 放在 /lib/firmware/mrvl 下面(同上);4,特殊的处理对于 8686 模块需要做特殊的处理,在注册完以太网接口以后,需要添加下面这段话 :{#define BCA_CFG_NUM_OF_MODES 4#define BCA_CFG_SINGLE_ANT_WITH_COEX 0#define BCA_CFG_DUAL_ANT_WITH_COEX 1#define BCA_CFG_SINGLE_ANT_FOR_BT_ONLY 2#define BCA_CFG_MRVL_DEFAULT 3#define BCA_CONFIG BCA_CFG_SINGLE_ANT_WITH_COEXstatic u32 BCACfgTbl[BCA_CFG_NUM_OF_MODES][3] = {//0xA5F0, 0xA58C, 0xA5A0{ 0xa027181c, 0x40214, 0xd24d}, //Mode 0: Single ANT with COEX enable{ 0xa027181c, 0x40211, 0xd24d}, //Mode 1: Dual ANT with COEX enable{ 0xa027181c, 0x40222, 0xd21c}, //Mode 2: single ANT for BT only{ 0xa027801d, 0x18000, 0xd21c}, //Mode 3: Marvell default};wlan_offset_value RegBuffer;RegBuffer.offset = (0xA5F0);RegBuffer.value = BCACfgTbl[BCA_CONFIG][0];wlan_prepare_cmd(priv,HostCmd_CMD_MAC_REG_ACCESS,HostCmd_ACT_GEN_SET,HostCmd_OPTION_WAITFORRSP,0,&RegBuffer);RegBuffer.offset =(0xA58C);RegBuffer.value = BCACfgTbl[BCA_CONFIG][1];wlan_prepare_cmd(priv,HostCmd_CMD_MAC_REG_ACCESS,HostCmd_ACT_GEN_SET,HostCmd_OPTION_WAITFORRSP,0,&RegBuffer);RegBuffer.offset = (0xA5A0);RegBuffer.value = BCACfgTbl[BCA_CONFIG][2];wlan_prepare_cmd(priv,HostCmd_CMD_MAC_REG_ACCESS,HostCmd_ACT_GEN_SET,HostCmd_OPTION_WAITFORRSP,0,&RegBuffer);}基本上这样就可以工作了;4.其它问题Sdio 口默认是用的 3.2V 这里需要修改相关的地方强制设成是1.8V ,否则 SDIO 接口将无法工作;Linux平台上需要移植一些上层软件才能验证,比如iwconfig , iwlist 等。
测试步骤:ifconfig eth0 upiwlist eth0 scanning如果能扫描到 AP 那么证明基本已经 OK 了;iwconfig eth0iwlist eth0 freq可以查看设备的相关信息,查看各项是否正常。
现在,就可以 ping 通 IP 地址了;5.常见问题1, WIFI 驱动注册 sdio 驱动的时候出错,也就是 probe 函数未被调用?需要检查 sdio 设备本身是否被检测到,内核是通过发送特定的命令来检测是 sdio 是 SD 卡还是 mmc 的,在 mmc_rescan 函数里面可以看到 sdio 设备的加载过程,有可能就是你的电压设置不对;2,以太网接口一直出不来或者说 firmware 加载失败?这里需要确保 firmware 是否正确被加载,很可能是它找不到对应的 firmware ,可以通过添加打印信息看看,它的路径到底是在什么地方,对于 wifi 来说 helper_sd.bin 需要放在 /lib/firmware/ 下面,而sd8686.bin 需要放在 /lib/firmware/mrvl 下面;3,一切正常,但是调用 iwlist eth0 scanning 的时候,扫描不到任何结果,出现NO scan results?这时候需要做特殊的处理,比如共存代码的设置,是否正常等,通常可以判断有没有中断上来,以此区分到底是模块和 cpu 的连接问题还是模块本身的设置问题;4,工作一段时间后不正常这个有可能是蓝牙模块需要进行初始化,因为它们是共用天线,有时候不起蓝牙模块对应的 40M 时钟就不起来;本人参照:/u2/67984/showart_2113942.html 此博客而移植成功的。
在此感谢wylhistory!linux -- 嵌入式linux下wifi无线网卡驱动插入模块驱动[root@WEIYAN wifi]$ insmod zd1211rw.kousb 1-1: reset full speed USB device using s3c2410-ohci and address 3zd1211rw 1-1:1.0: phy2usbcore: registered new interface driver zd1211rw打开无线网卡[root@WEIYAN wifi]$ ifconfig wlan0 upzd1211rw 1-1:1.0: firmware version 4725zd1211rw 1-1:1.0: zd1211b chip 0ace:1215 v4810 full 00-1d-0f UW2453_RF pa0 -7---扫描频道[root@WEIYAN wifi]$ ./wftools/iwlist wlan0 scanningwlan0 Scan completed :Cell 01 - Address: 00:0E:4E:81:02:4DESSID:"WEIYAN"Mode:MasterChannel:6Frequency:2.437 GHz (Channel 6)Quality=11/100 Signal level=62/100Encryption key:offBit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/sExtra:tsf=00000000004c3c37设置essid和无线网卡ip地址,并关闭原来的dm9000[root@WEIYAN wifi]$ ./wftools/iwconfig wlan0 essid WEIYAN[root@WEIYAN wifi]$ ./wftools/iwconfig wlan0 192.168.1.100[root@WEIYAN wifi]$ ifconfig eth0 down测试与路由的连通性[root@WEIYAN wifi]$ ping 192.168.1.254PING 192.168.1.254 (192.168.1.254): 56 data bytes64 bytes from 192.168.1.254: seq=0 ttl=255 time=10.997 ms64 bytes from 192.168.1.254: seq=1 ttl=255 time=4.399 ms64 bytes from 192.168.1.254: seq=2 ttl=255 time=3.915 ms通过无线网卡的nfs挂载测试[root@WEIYAN wifi]$ mount -t nfs -o nolock 192.168.1.108:/new_disk/tftp/ /mnt[root@WEIYAN wifi]$ ls /mnt1.mp3 g_file_storage.ko mplayer tslib.tar.gz2.mpg gspca.ko mplayer_no_v4l u-boot.bin3.wav led_drv.ko rootfs.jffs2 uImageabxtest madplay rootfs.yaffs2通过无线网卡播放mp3[root@WEIYAN wifi]$ /opt/madplay /mnt/1.mp3MPEG Audio Decoder 0.15.2 (beta) - Copyright (C) 2000-2004 Robert Leslie et al.UDA1341:audio_set_dsp_speed:44100 prescaler:99Title: 05.Forever Love192kArtist: 王力宏Orchestra: CoUDA1341:audio_set_dsp_speed:22050 prescaler:231nductor: Lyricist: Album: 心中的日月Track: 05Year: 2004Publisher: Genre: PopStation: Comment: 清晰1039 frames decoded (0:00:27.1), +0.8 dB peak amplitude, 40 clipped samples 通过无线网卡播放视频[root@WEIYAN wifi]$ /opt/mplayer /mnt/2.mpg -ac madMPlayer 1.0rc2-3.4.1 (C) 2000-2007 MPlayer TeamCPU: ARMPlaying /mnt/2.mpg.MPEG-PS file format detected.VIDEO: MPEG1 384x288 (aspect 1) 29.970 fps 1638.4 kbps (204.8 kbyte/s)================================================ ==========================Opening video decoder: [mpegpes] MPEG 1/2 Video passthroughA: 25.9 V: 26.1 A-V: -0.149 ct: 1.128 782/782 79% 47% 17.5% 428 0Exiting... (End of file)。