当前位置: 首页 > news >正文

rtl8723BS网卡linux,关于 RTL8723BS 与此同时开启 STA/AP 模式

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

最近接到一个调试 wifi 驱动的任务,使用的是 rtl8723bs 芯片组。要求是让无线设备工作在 station 模式的时候同时开启一个 ap 热点。简单来讲就是连接其他 wifi 的同时发出一个 wifi 供其他设备使用。保证都能上网。

拿到这个项目,我首先就想到了 github 上的一个开源项目 create_ap 。这是一个1000多行的 bash 脚本。它能够在无线网卡支持的时候实现上述的要求。当时,我想能不能直接那 create_ap 过来使用,如果可以,那么就太方便了。

然而测试了一下,果然不行。。。

折腾了一段时间后找到了一条简单的出路。如下:

获取到一份完整的 RTL8723BS 驱动代码

阅读了官方文档( Quick_Start_Guide_for_SoftAP.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 热点,如果连接该热点无法获取 ip ,可能是 dnsmasq 的问题,可尝试使用 dhcpd 。

两个配置文件

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

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

相关文章:

  • 我为什么选用转码的方式调整码率
  • yunos运行linux程序,YunOS开放平台
  • linux xtrabackup备份恢复,xtrabackup 备份和恢复docker容器内的mysql
  • Free Mind 06年2月 SourceForge 推荐项目
  • linux异常断电检查,linux断电后,出现fsck失败的解决方法
  • 【FreeMind】简介信息
  • 深度Linux怎样关闭休眠,linux内核是如何支持深度睡眠(deep sleep)方式的?
  • Freemind中文汉化版0.8.0b4
  • linux sendmail 实现 outlook 功能,利用sendmail简单实现域内、域间邮件收发(linux5.4)...
  • c语言程序设计国外,有没有了解,国外大学C语言 一般用啥IDE
  • MySQL 5 on Linux手动安装方法与中文解决方案完整攻略
  • c语言编程a b等于11,最难的C语言程序题之第二关
  • 假期读好书——力荐《八位大学校长》
  • c语言非法标识符是什么意思,123H为什么是非法标识符
  • 大学生学软件必看
  • JavaScript中的对象个人分享
  • java多线程
  • Java面向对象及其三大特征
  • Java知识点总结(JavaIO-打印流)
  • js
  • Mysql5.6主从复制
  • PAT A1120
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • Yii源码解读-服务定位器(Service Locator)
  • 分类模型——Logistics Regression
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 机器学习中为什么要做归一化normalization
  • 码农张的Bug人生 - 初来乍到
  • 入口文件开始,分析Vue源码实现
  • 一些css基础学习笔记
  • #、%和$符号在OGNL表达式中经常出现
  • #162 (Div. 2)
  • #Ubuntu(修改root信息)
  • (html5)在移动端input输入搜索项后 输入法下面为什么不想百度那样出现前往? 而我的出现的是换行...
  • (二)WCF的Binding模型
  • (汇总)os模块以及shutil模块对文件的操作
  • (十三)Java springcloud B2B2C o2o多用户商城 springcloud架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)...
  • (四) 虚拟摄像头vivi体验
  • (转)EXC_BREAKPOINT僵尸错误
  • *(长期更新)软考网络工程师学习笔记——Section 22 无线局域网
  • ... fatal error LINK1120:1个无法解析的外部命令 的解决办法
  • .bat批处理(九):替换带有等号=的字符串的子串
  • .bat批处理(一):@echo off
  • .cfg\.dat\.mak(持续补充)
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .NET Standard、.NET Framework 、.NET Core三者的关系与区别?
  • .net经典笔试题
  • .NET文档生成工具ADB使用图文教程
  • .so文件(linux系统)
  • // an array of int
  • @FeignClient注解,fallback和fallbackFactory
  • [ C++ ] STL priority_queue(优先级队列)使用及其底层模拟实现,容器适配器,deque(双端队列)原理了解
  • [1127]图形打印 sdutOJ
  • [2015][note]基于薄向列液晶层的可调谐THz fishnet超材料快速开关——
  • [202209]mysql8.0 双主集群搭建 亲测可用