恩山无线论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
小博无线
查看: 20036|回复: 39

成功挂载rlt8188eu芯片无线网卡到703,可配置成热点或客户端,做中继

[复制链接]
发表于 2013-10-16 21:32 | 显示全部楼层 |阅读模式
本帖最后由 badguy001 于 2013-10-19 19:14 编辑

6楼已经给出了更加详细的过程。
11楼已给出了8188eu驱动源码下载地址。

懂得人可以飞过,给不懂的人看哈。

先说大概流程:
1、先找到芯片的驱动源码;
2、在同一trunk版本下先编译固件,再交叉编译编译驱动源码的驱动模块;
3、在刷新固件,在加载驱动模块,插上usb网卡,看看系统有没有成功识别网卡;
4、成功识别无线网卡,在交叉编译hostapd/wpa_supplicant(dnsmasq、udhcpc  openwrt自带了不用另外编译)
5、用hostapd/wpa_supplicant+dnsmasq/udhcpc来配置热点/客户端,根据debug进行调试

最近无聊,就想起了折腾,发现我的那块rtl8188eu芯片网卡可以在ubuntu下使用,遂有了把它挂载到703路由器上去的想法。

首先找来驱动源码(这芯片官方没给出驱动源码的,有一家不知道叫什么的厂根据xx芯片的驱动源码改了给8188eu芯片用{:soso_e142:}),然后在官方最新trunk版环境下交叉编译源码,报错了,百度谷歌后得知,是因为新内核把某些东西砍掉了所致,既然新内核不行就用旧内核,于是用attitude_adjustment3.3.8内核的,很不幸,编译固件过程中出现了问题,没办法只好找trunk下的其他的内核版本,但滚了几次内核版本都是编译固件不通过,最后找到3.7.9的内核版本能够编译固件通过,我那个高兴啊,赶紧交叉编译驱动源码,但还是报错了,对驱动源码进行简单修改后,在编译,奇迹般的通过了。路由器刷新编译的固件,再把编译好的驱动模块上传到路由,并且成功加载到内核,插上无线网卡,dmesg,发现已经成功识别到无线网卡了,ifconfig -a 也出现了wlan1,虽然系统已经成功识别到了无线网卡了,但是应该怎么样配置成客户端或者热点呢?一番查找后,发现路由器本身的无线是用hostapd/wpa_supplicant+dnsmasq/udhcpc来配置热点/客户端的,找来源码,交叉编译,配置,再根据debug进行调试,成功了,哈哈。

看看图片


配置成热点:
dmesg.png ifconfig.png iwconfig.png hostapd.png hostap_2.png search.png




配置成客户端
wpa.png ifconfig_2.png iwconfig_2.png


新测试了叠加效果(两个无线网卡都做客户端进行叠加):
1.png brlan.png wlan0.png wlan1.png

没叠加时:

wlan1_new.png

额······叠加效果不理想。

评分

参与人数 1恩山币 +3 收起 理由
laoyangjp + 3 非常棒

查看全部评分

我的恩山、我的无线 The best wifi forum is right here.
发表于 2013-10-17 21:40 | 显示全部楼层
不错,楼主能说说hostapd/wpa_supplicant有啥要改变的不?
我的恩山、我的无线 The best wifi forum is right here.
发表于 2013-10-18 09:54 | 显示全部楼层
具体写一下步骤比较好。这样看得胡度
我的恩山、我的无线 The best wifi forum is right here.
 楼主| 发表于 2013-10-18 20:33 | 显示全部楼层
xu_john 发表于 2013-10-17 21:40
不错,楼主能说说hostapd/wpa_supplicant有啥要改变的不?

我用的那个hostapd、wpa_supplicant源码是驱动包里自带的,可能是别人改好了的,我只是编译下,我只发现编译的时候两个要选择对 driver
我的恩山、我的无线 The best wifi forum is right here.
 楼主| 发表于 2013-10-18 20:40 | 显示全部楼层
laoyangjp 发表于 2013-10-18 09:54
具体写一下步骤比较好。这样看得胡度

好的
我的恩山、我的无线 The best wifi forum is right here.
 楼主| 发表于 2013-10-18 22:33 | 显示全部楼层
针对8188eu芯片的无线无卡挂载到703上,其他网卡请视具体情况而做修改。

首先要3.8以下的内核的oenwrt版本,原因是内核版本更新的很快,而此驱动源码没有更新,在3.8及以上的内核上编译会报错(希望有大神可以修改下代码,使其可以在新内核上使用)。用命令  svn up -r 版本号   可滚回特定的版本号的源码,在https://dev.openwrt.org/log/trunk/?mode=follow_copy上搜索 kernel: update 即可得到版本号与内核版本的对应关系。

下载好openwrt源码后先编译固件。编译好固件后得到交叉编译所需要的toolchain及其他。

接下来编译驱动源码。解压源码,进入./8188eu_USB_linux/driver/rtl8188eu,修改Makefile文件,将文件中的  CONFIG_PLATFORM_MIPS_AR9132 = n ,改为  CONFIG_PLATFORM_MIPS_AR9132 = y , CONFIG_PLATFORM_I386_PC = y 改为 CONFIG_PLATFORM_I386_PC = n,这是更改目标平台, 再搜索 ($(CONFIG_PLATFORM_MIPS_AR9132), y)  将这一段的 KSRC := /home/me/openwrt/trunk/build_dir/target-mips_r2_uClibc-0.9.33.2/linux-ar71xx_generic/linux-3.7.9  修改为自己的内核路径,然后保存。设置交叉编译环境
  1. export PATH=$PATH:/home/me/openwrt/trunk/staging_dir/toolchain-mips_r2_gcc-4.6-linaro_uClibc-0.9.33.2/bin
  2. export STAGING_DIR=/home/me/openwrt/trunk/staging_dir/
  3. export ac_cv_linux_vers=3.7.9
  4. export CC=mips-openwrt-linux-gcc
  5. export CPP=mips-openwrt-linux-cpp
  6. export GCC=mips-openwrt-linux-gcc
  7. export CXX=mips-openwrt-linux-g++
  8. export AR=mips-openwrt-linux-ar
  9. export RANLIB=mips-openwrt-linux-uclibc-ranlib
  10. export CROSS_COMPILE=mips-openwrt-linux-
复制代码
前三个修改为自己的路径。设置好环境变量后,执行  make 进行编译,编译过程可能会报一个错误,根据编译信息可知,错误在 ./8188eu_USB_linux/driver/rtl8188eu/core/rtw_br_ext.c 中,编辑该文件,搜索 csum_ipv6_magic ,并把搜到的那条语句注释掉,在编译就不会出错了,得到8188eu.ko。

刷编译好的固件,上传8188eu.ko到路由器上,再用insmod命令加载它,一般可以成功加载,如不成功,用另一个版本的源码再来一次吧。加载成功,插上无线网卡,再用 ifconfig -a 命令查看,已经出现wlan1这块无线网卡了。

在编译wpa_supplicant和hostapd,这两个的源码在驱动压宿包里有,解压./8188eu_USB_linux/wpa_supplicant_hostapd/wpa_supplicant_hostapd-0.8_rtw_20120803.zip,得到的hostapd和wpa_supplicant文件夹即是我们想要的源码,不用多做修改,只需修改两个文件里的 Makefile 文件,都是将开头的那个 CC=gcc 改为 CC=mips-openwrt-linux-gcc ,然后编译,一般不会报错。编译得到的hostapd和wpa_supplicant文件上传到路由器。

配置无线网卡wlan1。hostapd和wpa_supplicant的配置文件可参考.\8188eu_USB_linux\wpa_supplicant_hostapd\wpa_supplicant_hostapd-0.8\hostapd\hostapd.conf和 .\8188eu_USB_linux\wpa_supplicant_hostapd\wpa_supplicant_hostapd-0.8\wpa_supplicant\wpa_supplicant.conf  我唯一要提的是wpa_supplicant的配置文件中            scan_ssid=0   一定要设为0,不然路由器会重启,原因不明。准备好配置文件后,运行hostapd或者wpa_supplicant。

运行完后,就可以搜到8188ue发出的wifi,或者加入了想要接收的wifi,但是还不能用,要设置dhcp client或者dhcp server,使网卡wlan1可以自动配网络参数。我们使用openwrt自带的dnsmasq和udhcpc来配置,很简单,在 network 文件中,wlan1就像eth0一样去配置就行了,最后到web界面,开启wlan1对应接口的dhcp服务器及防火墙设置,也可以直接修改dhcp和firewall配置文件。重启network服务就可以大功告成了。

可以把加载8188eu.ko和运行hostapd或者wpa_supplicant的命令保存到开机启动里面去,实现开机自动启动。

我的恩山、我的无线 The best wifi forum is right here.
 楼主| 发表于 2013-10-18 22:37 | 显示全部楼层
laoyangjp 发表于 2013-10-18 09:54
具体写一下步骤比较好。这样看得胡度

够不够详细?
我的恩山、我的无线 The best wifi forum is right here.
发表于 2013-10-19 02:50 来自手机 | 显示全部楼层
很详细,谢谢。留着备用。
我的恩山、我的无线 The best wifi forum is right here.
发表于 2013-10-19 14:44 | 显示全部楼层
本帖最后由 laoyangjp 于 2013-10-19 15:26 编辑
badguy001 发表于 2013-10-18 22:33
针对8188eu芯片的无线无卡挂载到703上,其他网卡请视具体情况而做修改。

首先要3.8以下的内核的oenwrt版 ...

非常感谢。
1。8188ue的源码能否给个连接地址
2。你的交叉编译环境怎么设置的,这个我非常感兴趣。看官方的理论教材我也不十分明白,请指教。
http://wiki.openwrt.org/doc/devel/crosscompile
3。官方kernel model 的建立都是在 package/kernel/modules/完成的(If your favorite kernel module does not appear in the OpenWrt configuration menus, you must add a stanza to one of the files in the package/kernel/modules directory),这样编译才能产生一个 内核 相关的insmod 的xx驱动.ko,并且产生/proc/config,你这样像编写一般package一样 编译内核挂载驱动,我不太明白http://wiki.openwrt.org/doc/devel/packages

再次感谢。
我的恩山、我的无线 The best wifi forum is right here.
发表于 2013-10-19 17:46 | 显示全部楼层
楼主的步骤还是比较清楚的。多谢了。
我的恩山、我的无线 The best wifi forum is right here.
 楼主| 发表于 2013-10-19 19:12 | 显示全部楼层
laoyangjp 发表于 2013-10-19 14:44
非常感谢。
1。8188ue的源码能否给个连接地址
2。你的交叉编译环境怎么设置的,这个我非常感兴趣。看官 ...

http://pan.baidu.com/s/11hVcM  驱动源码

对于交叉编译环境我也是只懂一点点,我只说我知道的吧。在openwrt的主目录下有两个文件build_dir和staging_dir(编译过固件才有),build_dir里有个target开头的文件夹,进去有个linux开头的文件夹,再进去就有交叉编译所需要的内核文件夹(linux+内核版本)。把内核文件夹 的绝对路径设置为6楼所提到的内核路径。在文件夹staging_dir内的 toolchain*/bin文件夹内有交叉编译所需要的gcc、g++等,把此bin文件夹的绝对路径替换掉设置交叉编译环境的代码的第一行中的路径。设置交叉编译环境的代码的第二行的路径为staging_dir的绝对路径,第三行设置内核版本。设置完后。把那些代码复制到命令行执行,执行完后,命令行就有了交叉编译环境了。

你说的最后那个我没去了解,不过感觉还是直接编译方便点。
我的恩山、我的无线 The best wifi forum is right here.
发表于 2013-10-22 20:35 | 显示全部楼层
本帖最后由 laoyangjp 于 2013-10-23 12:25 编辑
badguy001 发表于 2013-10-19 19:12
http://pan.baidu.com/s/11hVcM  驱动源码

对于交叉编译环境我也是只懂一点点,我只说我知道的吧。在o ...

非常感谢您的精彩讲解。

最近在弄黑群辉黑苹果上瘾,和op一个道理。真群辉/苹果里缺少硬件驱动。这样确实省力,虽然不能自己编译进固件里。lz这个编译环境弄得好。
我的恩山、我的无线 The best wifi forum is right here.
 楼主| 发表于 2013-10-23 19:14 | 显示全部楼层
laoyangjp 发表于 2013-10-22 20:35
非常感谢您的精彩讲解。

最近在弄黑群辉黑苹果上瘾,和op一个道理。真群辉/苹果里缺少硬件驱动。这样 ...

真群辉/苹果?什么东西啊   没听过

点评

漏了几个字,真群辉/苹果里面的程序缺少硬件驱动。抱歉  发表于 2013-10-24 09:25
我的恩山、我的无线 The best wifi forum is right here.
发表于 2013-10-24 11:21 | 显示全部楼层
可不可以把编译完成的文件发上来咯?
我的恩山、我的无线 The best wifi forum is right here.
 楼主| 发表于 2013-10-24 11:35 | 显示全部楼层
roderickbao 发表于 2013-10-24 11:21
可不可以把编译完成的文件发上来咯?

http://pan.baidu.com/s/1y0BBA
我的恩山、我的无线 The best wifi forum is right here.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|Archiver|恩山无线论坛 ( 苏ICP备05084872号-1 )

GMT+8, 2019-1-20 23:06

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表