前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于 RTL8723BS 同时开启 STA/AP 模式

关于 RTL8723BS 同时开启 STA/AP 模式

作者头像
RainMark
发布2019-09-10 19:47:47
2.5K6
发布2019-09-10 19:47:47
举报
文章被收录于专栏:RainMark 的文章

最近接到一个调试 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 如下部分
代码语言:javascript
复制
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 )
代码语言:javascript
复制
# 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 )
代码语言:javascript
复制
# 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
代码语言:javascript
复制
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
代码语言:javascript
复制
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

申明:原创文章,转载请注明出处。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015-12-12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 获取到一份完整的 RTL8723BS 驱动代码
  • 编译驱动模块 ( 以 x86_64 为例 )
  • 加载驱动模块
  • 使用 wpa_supplicant + hostapd 测试模块是否工作正常
    • 开启 STATION 模式 ( wlan0 )
      • 同时开启 AP 模式 ( wlan1 )
      • 两个配置文件
      相关产品与服务
      TAPD 敏捷项目管理
      TAPD(Tencent Agile Product Development)是源自于腾讯的敏捷研发协作平台,提供贯穿敏捷研发生命周期的一站式服务。覆盖从产品概念形成、产品规划、需求分析、项目规划和跟踪、质量测试到构建发布、用户反馈跟踪的产品研发全生命周期,提供了灵活的可定制化应用和强大的集成能力,帮助研发团队有效地管理需求、资源、进度和质量,规范和改进产品研发过程,提高研发效率和产品质量。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档