###你好!这里是风筝的博客,

###欢迎和我一起多多交流。


最近做东西,需要网络传输数据,所以在淘宝买了一款usb 网卡来使用:
板子:allwinner h3 (sun8i)
Linux:4.14
买回来的USB无线网卡芯片型号为rtl8188eus,本来想去他的官网下驱动源码的,结果他的官网居然没有了源码放出来,也许是这块芯片太老了吧…
后在我在github上找到了一些rtl8188的驱动源码:
https://github.com/quickreflex/rtl8188eus
适用于Linux4.x的源码,刚好合适我。
编译:
vi Makefile:
修改如下:

@@ -87,7 +87,7 @@
######### Notify SDIO Host Keep Power During Syspend ##########
CONFIG_RTW_SDIO_PM_KEEP_POWER = y
###################### Platform Related #######################
-CONFIG_PLATFORM_I386_PC = y
+CONFIG_PLATFORM_I386_PC = n
CONFIG_PLATFORM_ANDROID_X86 = n
CONFIG_PLATFORM_JB_X86 = n
CONFIG_PLATFORM_ARM_S3C2K4 = n
@@ -122,7 +122,7 @@
CONFIG_PLATFORM_ARM_SUNxI = n
CONFIG_PLATFORM_ARM_SUN6I = n
CONFIG_PLATFORM_ARM_SUN7I = n
-CONFIG_PLATFORM_ARM_SUN8I = n
+CONFIG_PLATFORM_ARM_SUN8I = y
CONFIG_PLATFORM_ACTIONS_ATM702X = n
CONFIG_PLATFORM_ACTIONS_ATM705X = n
CONFIG_PLATFORM_ACTIONS_ATV5201 = n
@@ -1234,9 +1234,10 @@
endifARCH := arm
-CROSS_COMPILE := /home/android_sdk/Allwinner/a23/android-jb42/lichee/out/an droid/common/buildroot/external-toolchain/bin/arm-linux-gnueabi-
-KVER := 3.4.39
-KSRC :=/home/android_sdk/Allwinner/a23/android-jb42/lichee/linux-3.4
+CROSS_COMPILE := /usr/local/arm/opt/FriendlyARM/toolschain/4.9.3/bin/arm-co rtexa9-linux-gnueabihf-
+KVER := 4.12
+KSRC :=/work/system/nanopi/linux
+MODULE_NAME := wlanrtl8188
endif

但是很可惜,make发生错误:

/work/system/nanopi/apply/rtl8188/rtl8188eus/core/rtw_ap.c:3200:2: error: implicit declaration of function ‘adapter_mac_addr’ [-Werror=implicit-function-declaration]u8 *addr = adapter_mac_addr(padapter);
rtl8188/rtl8188eus/core/rtw_ap.c:3202:2: error: implicit declaration of function ‘rtw_iface_bcmc_id_get’ [-Werror=implicit-function-declaration] cam_id = rtw_iface_bcmc_id_get(padapter);

我也不知道这个怎么解决。
后来我尝试换低一点的版本:比如我下载来的:rtl8188eus驱动源码
这个是个好东西,待会再说这个。
github上也有好几个rtl8188的驱动源码,我没试过,应该有几个也是正好合适我这个版本的,有兴趣的可以多下载几个试试。
先说我下载的这个版本低一点的驱动源码,同样的修改Makefile,make之后发现:

include/osdep_service.h:342:2: error: implicit declaration of function ‘allow_signal’ [-Werror=implicit-function-declaration]allow_signal(SIGTERM);

解决办法:

+ *** a/include/osdep_service.h 2015-04-17 09:54:43.000000000 +0300
+ --- b/include/osdep_service.h 2017-05-28 11:12:26.723593001 +0300#ifndef __OSDEP_SERVICE_H_
#define __OSDEP_SERVICE_H_+ #include <linux/version.h>
+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0)
+ #include <linux/sched/signal.h>
+ #endif#define _FAIL 0
#define _SUCCESS 1

但是后面还有一些错误,我也解决不了,太麻烦了。。。。。。

幸好,我发现我这Linux4.14的内核是支持,我在Ubuntu PC上lsusb,发现设备PID是0x8179:
在Linux源码下
cd drivers/net/wireless/
grep “0x8179” * -wnr
发现:

realtek/rtlwifi/rtl8188ee/sw.c:382:  {RTL_PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8179, rtl88ee_hal_cfg)},

所以他的驱动就是在drivers/net/wireless/realtek/rtlwifi/rtl8188ee目录下。

配置如下:
make menuconfig

Bus support  ---> [*] PCI support
Device Drivers  ---> [*] Staging drivers  ---> <*>   Realtek RTL8188EU Wireless LAN NIC driver
Device Drivers  ---> [*] Network device support  --->[*]   Wireless LAN  ---><*>     Realtek rtlwifi family of devices  ---><*>   Realtek RTL8188EE Wireless Network Adapter
Device Drivers  ---> [*] Network device support  ---><*>   USB Network Adapters  ---><*>   USB RTL8150 based ethernet device support
[*] Networking support  --->  -*-   Wireless  --->  <*>   Generic IEEE 802.11 Networking Stack (mac80211)

这里我是把它配置成*,编进内核。
其中值得注意的是:
Device Drivers —> [] Staging drivers —> <> Realtek RTL8188EU Wireless LAN NIC driver
这里,Staging drivers表示的是正在测试,不稳定的驱动,所以Realtek RTL8188EU Wireless LAN NIC driver的depend on里写为m,所以这项最多被配置成 M 作为模块加载。
所以我用了一个很暴力的方法:
vi drivers/staging/rtl8188eu/Kconfig
把 depends on m 这句直接注释掉了、
这样就能把Realtek RTL8188EU Wireless LAN NIC driver直接配置成* 编进内核了。
这样我们加载Linux之后,插上usb 网卡就发现:

usb 4-1.4: new high-speed USB device number 3 using ehci-platform
usb 4-1.4: New USB device found, idVendor=0bda, idProduct=8179
usb 4-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 4-1.4: Product: 802.11n WLAN NIC
usb 4-1.4: Manufacturer: Realtek
Chip Version Info: CHIP_8188E_Normal_Chip_TSMC_A_CUT_1T1R_RomVer(0)

发现wlan0:

/ # cat /proc/net/wireless
Inter-| sta-|   Quality        |   Discarded packets               | Missed | WEface | tus | link level noise |  nwid  crypt   frag  retry   misc | beacon | 22wlan0: 0000    0.    0.    0.       0      0      0      0      0        0

当然,ifconfig wlan0 up之后 ifconfig 命令也可以查看到wlan0、但是还需要固件支持:我上传了固件:rtl8188eus固件下载
当然,也可以去网站下载:https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/stats/
将固件放到根文件系统的/lib/firmware/rtlwifi/目录下即可

现在算是初步完成了,接下来我们要使用这个网卡,需要一点配置工具。
这里就提到我之前找的那个版本低一点的驱动网卡源码了,里面有wireless_tools非常好用:
rtl8188eus驱动源码
解压好源码:
cd wireless_tools/wireless_tools.30.rtl/
vi Makefile,修改Makefile、
其中:
CC = gcc
AR = ar
RANLIB = ranlib
改为
CC = arm-linux-gcc
AR = arm-linux-ar
RANLIB = arm-linux-ranlib
之后直接make就可以了,非常的方便,直接编译成功,不需要你自己去编译多余的依赖。
编译完成后,将生成的iwconfig,iwlist文件拷贝到根文件系统中的/bin目录下,
将iwlib.so拷贝到根文件系统中的/lib目录下。
这样我们就可以使用了:

iwlist scanning

扫描附件的热点。
假如我要连接一个热点,热点ssid:fengzheng,passwd:18290019557

iwconfig wlan0 key 18290019557
iwconfig wlan0 essid "fengzheng"
iwconfig wlan0 ap auto

值得一提的是,iw命令只能连接加密方式为wep或者无加密的热点。
如果连接wpa2的热点,则报错:

Error for wireless request "Set AP Address" (8B14) : SET failed on device wlan0

如果想自己下载iw,下载地址如下:https://w1.fi/wpa_supplicant/

如果想连接加密认证方式为wpa的热点,这需要下载wpa_supplicant,wpa_supplicant 是一个开源软件项目,它实现了 Station 对无线网络进行管理和控制的功能。
下载网址如下:https://w1.fi/wpa_supplicant/
当然,这也是比较麻烦的,他需要一些依赖库。比如openssl,比较麻烦,
所以还是我之前下载的那个好,里面自带了一些wireless tools,就包括了这个wpa_supplicant。
解压:tar -xzvf wpa_supplicant_hostapd-0.8_rtw_r7475.20130812.tar.gz
cd wpa_supplicant_hostapd-0.8_rtw_r7475.20130812/wpa_supplicant/
vi Makefile

if xxxx
CC=gcc
endif
修改为
CC=arm-linux-gcc
然后
cp …/…/wpa_0_8.conf .
之后直接
make
make DESTDIR=$PWD/tmp install
这样,在当前目录下的tmp目录下就是我们的安装路径了。
把里面三个可执行文件wpa_cli wpa_passphrase wpa_supplicant都复制到根文件的/bin目录下即可、
连接热点:
mkdir -p /var/run/wpa_supplicant
vi /etc/wpa_supplicant.conf
内容为:
ctrl_interface=/var/run/wpa_supplicant
network={
ssid=“fengzheng”
psk=“18290019557”
}

最后:
wpa_supplicant -B -c/etc/wpa_supplicant.conf -iwlan0
即可连接上热点、如果出现错误:

nl80211: Driver does not support authentication/association or connect commands
nl80211: deinit ifname=wlan0 disabled_11b_rates=0
wlan0: Failed to initialize driver interface

则命令修改为:
wpa_supplicant -B -c/etc/wpa_supplicant.conf -iwlan0 -D wext
即可连上热点。参考:https://wiki.archlinux.org/index.php?title=WPA_supplicant_(简体中文)&oldid=452628

wpa_cli -iwlan0 status 可以查看连接状态。
ifconfig wlan0 192.168.43.110
ping 192.168.43.1
发现是能ping通我的热点的,大功告成。
但是此时还不能连接外网,需要修改/etc/resolv.conf添加DNS:
nameserver 192.168.43.1
设置网关:
route add default gw 192.168.43.1

或者使用命令:
udhcpc -i wlan0
可以自动获取ip,
或者自己下dhclient来用吧。

或者想实现开机自动连接wifi:
在etc/profile文件里添加:

wpa_supplicant -B -c/etc/wpa_supplicant.conf -iwlan0 -D wext
wpa_cli -a/sbin/wpa_action.sh -B

接着创建/sbin/wpa_action.sh脚本:

#!/bin/sh
IFNAME=$1
CMD=$2
if [ "$CMD" = "CONNECTED" ]; thenecho connect $IFNAME, dhclient for it > /dev/consoleudhcpc -i $IFNAME
#dhclient $IFNAME
fi
if [ "$CMD" = "DISCONNECTED" ]; thenecho disconnect $IFNAME, kill dhclient for it > /dev/consolekillall udhcpc
#killall dhclient
fi

记得要给脚本运行权限:chmod +x /sbin/wpa_action.sh

嵌入式ARM(Allwinner H3)下使用rtl8188eus无线网卡相关推荐

  1. 4G通信模块在嵌入式ARM Linux下的应用

        4G通信模块是连接物与物的重要载体,是终端设备接入物联网的核心部件之一.4G通信模块把频率接收器和信号增幅器等部件全都整合在一起,实现了一体化.随着工业发展,嵌入式设备接入网络的需求日益增多, ...

  2. opencv+QT在嵌入式arm下显示图片

    你好!这里是风筝的博客, 欢迎和我一起交流. 之前在arm移植好了opencv:移植opencv到嵌入式arm详细过程 而且我之前也弄好了qt,刚好可以用来结合使用. 在qt里使用opencv在arm ...

  3. 基于Hi3516DV300的嵌入式入门演练(下)

    基于Hi3516DV300的嵌入式入门演练(上) 基于Hi3516DV300的嵌入式入门演练(下) 文章目录 信息 5 常见外设操作 5.1 USB无线网卡 5.1.1 在内核中开启驱动支持 5.1. ...

  4. RTl8188EUS无线网卡驱动编译,支持master模式

    基于rtl8188eus无线网卡驱动,提供两个版本,分别是支持linux3.10以下版本及支持linux3.10以上版本,此驱动可使用hostapd软件实现AP共享,具体使用步骤如下: 基于RTL81 ...

  5. mysql 客户端 交叉编译_移植mysql到嵌入式ARM平台

    移植MySQL到嵌入式ARM平台 MySQL没有专门针对ARM的版本,移植到ARM没有官方文档可参考,因此,暂时参考这样一篇文档: http://blog.chinaunix.net/space.ph ...

  6. 嵌入式ARM启动代码的工作

    嵌入式ARM启动代码的工作 (1)定义代码的初始入口点:初始入口点是指代码运行时的起始点,它在每个映像文件中是唯一的,也是每个可执行的映像文件             所必须含有的,而且必须位于映像文 ...

  7. 移植mysql到嵌入式ARM平台

    移植MySQL到嵌入式ARM平台    MySQL没有专门针对ARM的版本,移植到ARM没有官方文档可参考,因此,暂时参考这样一篇文档: http://blog.chinaunix.net/space ...

  8. python 嵌入式界面_运用Python和PyQT开发嵌入式ARM的界面

    Python是一种跨平台的计算机程序设计语言.是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的.大型项目的开发 1) ...

  9. 基于嵌入式ARM工控主板与X86工控主板的比较

    基于嵌入式ARM工控主板相对于X86工控主板的优点:     (1).功耗:这是ARM主板最大的优点之一,一般的VIA的X86主板,功耗都在40W左右或者以上,而ARM主板的功耗极低,EICB系列主板 ...

  10. 基于嵌入式ARM工控主板与X86工控主板的比较 1

    基于嵌入式ARM工控主板相对于X86工控主板的优点:     (1).功耗:这是ARM主板最大的优点之一,一般的VIA的X86主板,功耗都在40W左右或者以上,而ARM主板的功耗极低,EICB系列主板 ...

最新文章

  1. VMware虚拟机三种网络模式(桥接、NAT、仅主机)的区别
  2. 焦点分析 | 平头哥的首颗 AI 芯片对阿里云来说意味着什么?
  3. 简述C语言的标准发展,简述C语言的发展历史
  4. PID1 / 明明的随机数
  5. mysql企业版多少钱_企业资质代办多少钱
  6. java 接口练习题1
  7. vmware安装ubuntu13版本的vm tools时遇到的错误解决
  8. 细细讲述Java技术开发的那些不为人知的规则
  9. 西媒盘点:历史不该遗忘的七位女数学家
  10. Excel计算函数(计算机二级)
  11. Word2003入门动画教程75:在Word中插入文本框
  12. 安恒信息网络空间测绘解决方案:Sumap全球网络空间超级雷达
  13. 如何使用Python实现回文的判断?
  14. Redis缓存知识-穿透、击穿、雪崩
  15. vue实例和组件的区别
  16. 如何使用 Podman 签署和分发容器镜像
  17. Layui table表格操作列,按钮过多时展开点击失效问题解决方法
  18. 《MATLAB SYNTAX》第1章 数据类型
  19. mysql查询5周数据_第五周:MySQL数据库
  20. HNOI2017 影魔

热门文章

  1. c语言的常用英语单词和翻译,c语言通用英语词汇带翻译
  2. linux变utf8为sjis命令,在派上编译Linux版Onscripter-jh时出现问题
  3. python对象销毁(垃圾回收)
  4. Could not find artfact com.oracle:ojdbc7:jar:12.1.0.2.0 in nexus-aliyun
  5. python爬虫毕业论文大纲参考模板_毕业论文提纲参考模板
  6. 微博视频下载去水印 视频消重
  7. 经典Flash MX 2004教程全集
  8. 快应用采坑(3)-使用差别
  9. 基于matlab的暴雨强度公式参数推求,小样本流域降雨强度公式和设计降雨分布的推求方法...
  10. windows中文件夹打包成Jar包 cmd命令