关于 RTL8723BS 同时开启 STA/AP 模式
最近接到一个调试 wifi 驱动的任务,使用的是 rtl8723bs 芯片组。要求是让无线设备工作在 station 模式的时候同时开启一个 ap 热点。简单来讲就是连接其他 wifi 的同时发出一个 wifi 供其他设备使用。保证都能上网。
拿到这个项目,我首先就想到了 github 上的一个开源项目 create_ap 。这是一个1000多行的 bash 脚本。它能够在无线网卡支持的时候实现上述的要求。当时,我想能不能直接那 create_ap 过来使用,如果可以,那么就太方便了。
然而测试了一下,果然不行。。。
折腾了一段时间后找到了一条简单的出路。如下:
获取到一份完整的 RTL8723BS 驱动代码
RTL8723BS_driver_and_documents
阅读了官方文档(Realtek_WiFi_concurrent_mode_Introduction.pdf) 才发现厂商已经编写了支持 sta/ap 模式的驱动代码,只是默认没有使用。按照文档说明,我已修改了代码。
编译驱动模块 ( 以 x86_64 为例 )
修改 Makefile 如下部分
ifeq ($(CONFIG_PLATFORM_ANDROID_X86), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
SUBARCH := $(shell uname -m )
ARCH := $(SUBARCH)
CROSS_COMPILE := /bin/gnu-unknow-
KSRC := /lib/modules/4.1.8-yocto-standard/build/
MODULE_NAME :=wlan
找到这几行,相应修改 ARCH (平台架构) , CROSS_COMPILE (编译器位置) , KSRC (内核模块位置) 。
然后直接
$ make
编译将得到 wlan.ko
加载驱动模块
如果已经加载了 RTL8723BS 的驱动模块,请先 # rmmod rtl8723bs
# insmod wlan.ko
成功加载模块后,执行 $ ip link
即可看到两个网口: wlan0 , wlan1
其中任意一个网口都可以做 station 模式,或 ap 模式
使用 wpa_supplicant + hostapd 测试模块是否工作正常
开启 STATION 模式 ( wlan0 )
# ip link set wlan0 up // 启用网口
# wpa_passphrase ssid_name wifi_passwd > wifi.conf // 生成 wpa_supplicant 配置文件
# wpa_supplicant -D wext -i wlan0 -c wifi.conf -B // 连接设定的 wifi 并运行在后台
# dhclient wlan0 // 获取ip (will take a while)
# ip addr // wlan0 已经获取到 ip
同时开启 AP 模式 ( wlan1 )
# ip link set wlan1 up
# ip a add 10.0.0.1/24 dev wlan1 //配置 wlan1 的ip
# killall dnsmasq && cp egg_wifi/dnsmasq.conf /etc && dnsmasq //使用 dnsmasq 服务
# ./hostapd egg_wifi/hostapd.conf & //使用源码中的 hostapd (需要自行编译) 开启一个热点
需要使用给出的 hostapd ,配置文件可自行修改
不出意外将会放出 SSID 为 mark 的 wifi 热点。
两个配置文件
dnsmasq.conf
interface=wlan1
dhcp-range=wlan1,10.0.0.2,10.0.0.9,255.255.255.240,12h
dhcp-authoritative
address=/#/10.0.0.1
server=/google/8.8.8.8
hostapd.conf
interface=wlan1
ieee80211n=1
ssid=mark // wifi 热点名称
hw_mode=g
channel=7
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=12345678 // wifi 密码
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
ctrl_interface=/var/run/hostapd
申明:原创文章,转载请注明出处。
关于 RTL8723BS 同时开启 STA/AP 模式的更多相关文章
- CC3200在AP模式的TCP sock作为客户端连接时返回SL_ECONNREFUSED(-111) Connection refused
1. CC3200处于AP模式(电脑无线连接CC3200的WIFI信号),开启一个TCP socket,这个socket作为TCP客户端去连接TCP服务器端 struct sockaddr_in ad ...
- WLAN STA/AP 并发
WLAN STA/AP 并发 Android 9 引入了可让设备同时在 STA 和 AP 模式下运行的功能.对于支持双频并发 (DBS) 的设备,此功能让一些新功能得以实现,例如在用户想要启用热点 ( ...
- 树莓派配置AP模式
所需硬件:树莓派.无线网卡 1.查看无线网卡是否被识别 pi@raspberrypi ~ $ sudo lsusb Bus Device : ID : Standard Microsystems Co ...
- Android KitKat 4.4 Wifi移植AP模式和网络共享的调试日志
Tethering技术在移动平台上已经运用的越来越广泛了.它能够把移动设备当做一个接入点,其它的设备能够通过Wi-Fi.USB或是Bluetooth等方式连接到此移动设备.在Android中能够将Wi ...
- MT7601 AP模式移植
MT7601 的 STA 模式和 AP 模式的驱动,是不一样的. 所以,需要另外移植驱动 驱动源码位置 https://github.com/eywalink/mt7601u 下载之后,先修改 Mak ...
- ESP8266-Soft AP模式 —— 谁想连上我
AP是Access Point简称,也就是访问接入点,是网络的中心节点.一般家庭的无线路由器就是一个AP,众多站点(STA)加入到它所组成的无线网络,网络中的所有的通信都通过AP来转发完成. 软AP也 ...
- Jquery easyui开启行编辑模式增删改操作
Jquery easyui开启行编辑模式增删改操作 Jquery easyui开启行编辑模式增删改操作先上图 Html代码: <table id="dd"> </ ...
- apache 开启zgip 压缩模式
一.Apache开启gzip压缩模式在目录apache\conf\httpd.conf 配置 httpd.conf 文件: #去掉LoadModule deflate_module modules/m ...
- [转]Jquery easyui开启行编辑模式增删改操作
本文转自:http://www.cnblogs.com/nyzhai/archive/2013/05/14/3077152.html Jquery easyui开启行编辑模式增删改操作先上图 Html ...
随机推荐
- CentOS 6.5/6.6 安装(install)mysql 5.7 最完整版教程
Step1: 检测系统是否自带安装mysql # yum list installed | grep mysql Step2: 删除系统自带的mysql及其依赖命令: # yum -y remove ...
- excel查看VBA代码快捷键
公司现在的很多自动化代码生成使用excel VBA,本来这事跟自己一点关系打不着,不过计划年底切换中间件,这得导致部分代码结构调整,自己还得去调整测试,老忘掉这快捷键,特记录下,Alt + F11
- 从web编辑器 UEditor 中单独提取图片上传,包含多图片单图片上传以及在线涂鸦功能
UEditor是由百度web前端研发部开发所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点,开源基于MIT协议,允许自由使用和修改代码.(抄的...) UEditor是非常好用的富文 ...
- 从启动日志看Spring IOC的初始化和Bean生命周期
一.Tomcat中启动IoC容器的日志 启动Tomcat等容器时,控制台每次都打印出一些日志. 最近刚好在研究Spring源码,所以换个角度,从启动日志来简单的看看Spring的初始化过程! 以下是T ...
- [.NET] 使用Json.NET提供依赖注入功能(Dependence Injection)
[.NET] 使用Json.NET提供依赖注入功能(Dependence Injection) 前言 在一些小型项目的开发情景里,系统不需要大型DI Framework所提供的:单一对象生成.生命周期 ...
- go语言 类型:整型
整型是所有编程语言里最基础的数据类型.
- go语言 匿名变量
我们在使用传统的强类型语言编程时,经常会出现这种情况,即在调用函数时为了获取一个值,却因为该函数返回多个值而不得不定义一堆没用的变量.在Go中这种情况可以通过结合使用多重返回和匿名变量来避免这种丑陋的 ...
- 原生JS:Math对象详解
Math对象 本文参考MDN做的详细整理,方便大家参考MDN Math 也是一个内置对象, 为数学常量和数学函数提供了属性和方法,而不是一个函数对象. 与其它全局对象不同的是, Math 不是一个构造 ...
- JavaScript学习笔记-JSON对象
JSON 是一种用来序列化对象.数组.数值.字符串.布尔值和 null 的语法.它基于 JavaScript 语法,但是又有区别:一些 JavaScript 值不是 JSON,而某些 JSON 不是 ...
- SharePoint Error - The current user is not an SharePoint Server farm administrator
错误截图 错误日志 位置:C:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\LOGS 主要错误 The c ...