最近接到一个调试 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 模式的更多相关文章

  1. CC3200在AP模式的TCP sock作为客户端连接时返回SL_ECONNREFUSED(-111) Connection refused

    1. CC3200处于AP模式(电脑无线连接CC3200的WIFI信号),开启一个TCP socket,这个socket作为TCP客户端去连接TCP服务器端 struct sockaddr_in ad ...

  2. WLAN STA/AP 并发

    WLAN STA/AP 并发 Android 9 引入了可让设备同时在 STA 和 AP 模式下运行的功能.对于支持双频并发 (DBS) 的设备,此功能让一些新功能得以实现,例如在用户想要启用热点 ( ...

  3. 树莓派配置AP模式

    所需硬件:树莓派.无线网卡 1.查看无线网卡是否被识别 pi@raspberrypi ~ $ sudo lsusb Bus Device : ID : Standard Microsystems Co ...

  4. Android KitKat 4.4 Wifi移植AP模式和网络共享的调试日志

    Tethering技术在移动平台上已经运用的越来越广泛了.它能够把移动设备当做一个接入点,其它的设备能够通过Wi-Fi.USB或是Bluetooth等方式连接到此移动设备.在Android中能够将Wi ...

  5. MT7601 AP模式移植

    MT7601 的 STA 模式和 AP 模式的驱动,是不一样的. 所以,需要另外移植驱动 驱动源码位置 https://github.com/eywalink/mt7601u 下载之后,先修改 Mak ...

  6. ESP8266-Soft AP模式 —— 谁想连上我

    AP是Access Point简称,也就是访问接入点,是网络的中心节点.一般家庭的无线路由器就是一个AP,众多站点(STA)加入到它所组成的无线网络,网络中的所有的通信都通过AP来转发完成. 软AP也 ...

  7. Jquery easyui开启行编辑模式增删改操作

    Jquery easyui开启行编辑模式增删改操作 Jquery easyui开启行编辑模式增删改操作先上图 Html代码: <table id="dd"> </ ...

  8. apache 开启zgip 压缩模式

    一.Apache开启gzip压缩模式在目录apache\conf\httpd.conf 配置 httpd.conf 文件: #去掉LoadModule deflate_module modules/m ...

  9. [转]Jquery easyui开启行编辑模式增删改操作

    本文转自:http://www.cnblogs.com/nyzhai/archive/2013/05/14/3077152.html Jquery easyui开启行编辑模式增删改操作先上图 Html ...

随机推荐

  1. Java自定义一个字典类(Dictionary)

    标准Java库只包含Dictionary的一个变种,名为:Hashtable.(散列表) Java的散列表具有与AssocArray相同的接口(因为两者都是从Dictionary继承来的).但有一个方 ...

  2. According to TLD or attribute directive in tag file, attribute end does not accept any expressions

    问题描述: 在 JSP 页面中使用 JSTL 标签库,访问 JSP 页面时抛出了如下异常信息: org.apache.jasper.JasperException: /WEB-INF/manageUs ...

  3. vim自动补全插件YouCompleteMe

    前言 Valloric/YouCompleteMe可以说是vim安装最复杂的插件之一,但是一旦装好,却又是非常好用的.YouCompleteMe简称ycm 在安装折腾的过程中,我再一次的体会到,除了官 ...

  4. oracle RAC的VIP和scan

    我们都知道Oracle RAC中每个节点都有一个虚拟IP,简称VIP,与公网IP在同一个网段. 没有VIP时,Oracle客户端是靠"TCP/IP协议栈超时"来判断服务器故障.而T ...

  5. (转载)Windows常见性能计数器(较好的说明)

    转载地址:http://blog.csdn.net/dfbrt56/article/details/3341591 Windows常见性能计数器 性能计数器(counter)是描述服务器或操作系统性能 ...

  6. Heatmap.js v2.0 – 最强大的 Web 动态热图

    Heatmap 是用来呈现一定区域内的统计度量,最常见的网站访问热力图就是以特殊高亮的形式显示访客热衷的页面区域和访客所在的地理区域的图示.Heatmap.js 这个 JavaScript 库可以实现 ...

  7. 完美卸载oracle11g步骤

    完美卸载oracle11g步骤:1. 开始->设置->控制面板->管理工具->服务 停止所有Oracle服务.2. 开始->程序->Oracle - OraHome ...

  8. VSS 请求程序和 SharePoint 2013

    Windows Server 中的 VSS 可用于创建可备份和还原 Microsoft SharePoint Foundation 的应用程序.VSS 提供了一个基础结构,使第三方存储管理程序.业务程 ...

  9. oracle中Window和Window Group

    参考文献: http://www.5ienet.com/note/html/scheduler/oracle-scheduler-using-window.shtml window概念 此Window ...

  10. 墙内下载DropBox离线安装包的方法

    让你的浏览器FQ,然后进入官网,点击下载,你会看到这个网页: 现在,只需要在原下载的链接后加上“&full=1”即可.就像这样: https://www.dropbox.com/downloa ...