基于嵌入式Linux的无线路由器设计——Bridged Adapter网桥模式

2023-05-16

 现在嵌入式设备联网,主要有两种模式:以太网RJ-45 接口直接插网线上网;3G/4G 模块拨号上网。随着无线终端设备的不断普及,手机平板等无线设备对网络的需求也日益增加。本篇文章主要介绍基于嵌入式Linux的无线路由器设计,以桥接的方式访问网络。该方式适合不需要拨号的设备使用,也就是直接插网线就可以联网。基于3G/4G 这种拨号方式的设计将在下篇文章中介绍。

    常见的网络连接方式,博客http://www.cnblogs.com/york-hust/archive/2012/03/29/2422911.html 有一个比较好的介绍。

    下图是我的嵌入式Linux设备硬件示意图:

    因为采用的是桥接的方式,也就是嵌入式设备不能自己拨号,也不能自己路由。换句话说就是插入嵌入式设备的那个网线,直接插电脑就可以上网。这样的设计主要是将有线的网络转成无线局域网。这里的WiFi 模块,通过USB总线与嵌入式Linux通信。

内核配置:

    内核配置的时候 802.1d Ethernet Bridging  和IEEE 802.11 for Host AP (Prism2/2.5/3 and WEP/TKIP/CCMP) 需要选上,使内核支持桥接,同时需要WiFi支持AP功能。

WiFi驱动移植:

  WiFi驱动的移植还是比较简单的,下载源码交叉编译就可以了。我使用的是RTL8188C,直接编译成模块8192cu.ko  这里需要多注意一点,应为在编译模块的时候是需要指定Linux内核代码路径的,当你的内核网络配置发生改变的时候,你的驱动需要重新编译一下,不然可能会出现一些内存溢出的问题。

hostapd 移植:

        hostapd 是 Host Access Point 守护进程,能够使得无线网卡切换为master模式,模拟AP(通常可以认为是路由器)功能,也就是我们说的软AP(Soft AP)。它的移植和配置可以参考http://www.cnblogs.com/zhuwenger/archive/2011/03/11/1980294.html

启动嵌入式设备进行设置:

1.加载驱动

    insmod 8192cu.ko

2.启动WiFi网络接口

    ifconfig wlan0 up                       

3.新建一个虚拟的网桥

    brctl addbr br0

4.将有线网接口和无线网接口都添加到虚拟网桥上

    brctl addif br0 eth0
    brctl addif br0 wlan0

5.清除有线网口和无线网口网络设置(因为所有的数据都是通过虚拟网络接口收发)

    ifconfig eth0 0.0.0.0
    ifconfig wlan0 0.0.0.0

6.启动虚拟网络接口

    ifconfig br0 up

7.配置虚拟网口IP地址和子网掩码

    ifconfig br0 192.168.2.2 netmask 255.255.255.0

8.配置默认网关(重要)

    route add default gw 192.168.2.254

9.启动WiFi的AP功能

    ./hostapd hostapd.conf -B

在这里有几点需要注意:

    a.上面第7点,设置IP和子网掩码的时候,需要跟你路由器(上面示意图路由器A)的IP在同一个网段。默认网关也是需要跟路由器A的设置一样。因为通过桥接的方式连网,连接到br0上的设备,在路由器中都将被识别为一台实际的设备。也就是说路由器A中的其他设备也都能访问到br0中的设备。在这种方式下,连接到WiFi中的设备,它们的IP实际上是由路由器A分配的,所以在这里,我们可以不用设置dhcp来为WiFi动态分配IP

    b.在./hostapd hostapd.conf -B 命令中 -B是指在后台运行。WiFi的一些参数是在hostapd.conf中设置的,比如WiFi名字ssid,WiFi信道等。我的hostapd.conf 配置文件如下:

##### hostapd configuration file ##############################################
 
interface=wlan0
ctrl_interface=/var/run/hostapd
ssid=licaibiao_debug
channel=6
wpa=2
wpa_passphrase=87654321
bridge=br0
 
##### Wi-Fi Protected Setup (WPS) #############################################
 
eap_server=1
 
# WPS state
# 0 = WPS disabled (default)
# 1 = WPS enabled, not configured
# 2 = WPS enabled, configured
wps_state=2
 
uuid=12345678-9abc-def0-1234-56789abcdef0
 
# Device Name
# User-friendly description of device; up to 32 octets encoded in UTF-8
device_name=RTL8192CU
 
# Manufacturer
# The manufacturer of the device (up to 64 ASCII characters)
manufacturer=Realtek
 
# Model Name
# Model of the device (up to 32 ASCII characters)
model_name=RTW_SOFTAP
 
# Model Number
# Additional device description (up to 32 ASCII characters)
model_number=WLAN_CU
 
# Serial Number
# Serial number of the device (up to 32 characters)
serial_number=12345
 
# Primary Device Type
# Used format: <categ>-<OUI>-<subcateg>
# categ = Category as an integer value
# OUI = OUI and type octet as a 4-octet hex-encoded value; 0050F204 for
#       default WPS OUI
# subcateg = OUI-specific Sub Category as an integer value
# Examples:
#   1-0050F204-1 (Computer / PC)
#   1-0050F204-2 (Computer / Server)
#   5-0050F204-1 (Storage / NAS)
#   6-0050F204-1 (Network Infrastructure / AP)
device_type=6-0050F204-1
 
# OS Version
# 4-octet operating system version number (hex string)
os_version=01020300
 
# Config Methods
# List of the supported configuration methods
config_methods=label display push_button keypad
 
 
##### default configuration #######################################
 
driver=rtl871xdrv
beacon_int=100
hw_mode=g
ieee80211n=1
wme_enabled=1
ht_capab=[SHORT-GI-20][SHORT-GI-40][HT40+]
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP
max_num_sta=8
wpa_group_rekey=86400


本文参考:

    usb wifi移植

    Linux下搭建网桥及脚本编写

    快速理解VirtualBox的四种网络连接方式
 ———————————————— 
版权声明:本文为CSDN博主「li_wen01」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/li_wen01/article/details/77918700

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于嵌入式Linux的无线路由器设计——Bridged Adapter网桥模式 的相关文章

  • 冒泡排序算法详解之C语言版

    一 算法原理 冒泡排序是一种常用的排序算法 xff0c 属于稳定排序法 xff0c 其时间复杂度为O n 2 冒泡排序法的原理就是从前向后依次比较相邻两个元素的大小 xff0c 大元素后沉 xff0c 类似于水中的泡泡逐步上浮的过程 xff
  • 9月14日更新的sublime激活码

    分享一枚 9月14日更新的sublime激活码 亲测可用 BEGIN LICENSE TwitterInc 200 User License EA7E 890007 1D77F72E 390CDD93 4DCBA022 FAF60790 6
  • 环信为自己的app加入即时通信功能的流程

    1 在环信官网上注册账号 xff0c 创建自己的app xff0c 生成app的key 2 下载环信的SDK开发包 xff0c 并导入到自己的app中并在自己的app的AndroidManifest xml文件中加入步骤1中的key xff
  • sublime text3的破解和使用

    个人博客 xff1a ZJBLOG 之所以想用这个是因为最近在学Python不知道用啥ide好 xff0c 看同事说这个不错就了解了下 xff0c 已经有的notepad 43 43 感觉不太好编程吧 xff0c 做记事本就行了 xff0c
  • 阿里云盘使用教程

    阿里云盘 阿里云盘是阿里巴巴全球技术团队打造的一款 个人网盘 xff0c 有下载不限速 不打扰 够安全 易于分享等特点 xff0c 是一款为PC端用户提供云端存储 数据备份及智能相册等服务的网盘产品 阿里云盘官网 阿里云盘官网 https
  • 动态链接库的生成和使用,从入门到精通

    1 动态链接库和静态链接库的区别 静态链接库 LIB 由函数和数据编译而成的一个二进制文件 使用时 xff0c 在编译链接阶段 xff0c 由链接器从库中复制这些函数和数据 xff0c 并把他们与应用程序的其他模块组合起来创建最终的可执行文
  • 【java学习】数据类型

    1 xff0c 好的编码习惯 用Integer valueOf 替代new Integer xff1b Double同理 xff1b java9已经取消了new Integer xff0c 因为效率低 数字字面量里使用下划线以方便阅读 ja
  • QPushButton的四态样式

    QPushButton的四种状态 xff1a normal hover press disabled 代码 xff1a ui gt pushButton OK gt setStyleSheet 34 QPushButton border 0
  • 解决Vue报错:This dependency was not found

    错误发生场景 xff1a 也是在其他小伙伴发出的问题 xff0c 我也试了一下 xff0c 果然是这样 ERROR Failed to compile with 1 error This dependency was not found v
  • python 如何将收到的字符串中的编码部分显示为中文

    收到一个字符串 xff0c 中间的中文是以UTF 8编码形式传过来的 xff0c 收到的数据是这样的 xff1a 34 info 34 34 u767b u5f55 u6210 u529f 34 34 status 34 1 34 url
  • C语言printf输出百分号

    在C语言中 xff0c 如何输出百分号呢 xff1f 很简单 xff0c 只要在格式控制符里输入2个 就可以了 xff0c 例如 xff1a include lt stdio h gt int main int a 61 90 printf
  • 跟我一起学【MySql】之——MySql关键字

    下面列出MySQL所有关键字 xff0c 希望给使用MySQL的朋友提供一些参考帮助 ADDALLALTERANALYZEANDASASCASENSITIVEBEFOREBETWEENBIGINTBINARYBLOBBOTHBYCALLCA
  • 跟我一起学【数据仓库】之——需要避免的维度建模错误

    1 在事实表中放入文本属性 2 限制使用冗长的描述符以节省空间 3 将层次 xff08 级联的多对一关系序列 xff09 划分为多个维度 4 忽略跟踪维度的变化 合理运用缓慢变化维度的类型 xff0c 或者微型维度 5 使用更多的硬件解决遇
  • 跟我一起学【Powerdesigner】之——导入EXCEL生成逻辑模型

    表结构如图 xff1a 中文表名 英文表名 字段编码 字段名称 字段注释 字段类型 是否主键 是否可空 主键是否自增 user1 用户信息表1 id id id int 10 Y Y Y user1 用户信息表1 name 用户名 用户名
  • SELECT语句中的for update的用法(锁的运用)

    回复1 xff1a 一般FOR UPDATE用在PL SQL的游标里 xff0c 它的作用就是一个行级锁 xff08 对游标里所有的记录 xff09 xff0c 如果其他进程要更新这个游标行级锁里的记录 xff0c 就必须等待当前进程的CO
  • IIC读取:SDA_in SDA_out寄存器设置

    IIC读取语句里的语句 xff1a uchar DAC5571 check void uchar slaveack SDA in SCL H I2C delay slaveack 61 SDA read SCL L I2C delay SD
  • 如何快速的看懂别人的代码

    最近由于公司的一位前辈 xff0c 由于家中之事欲走 xff0c 所以接手了一个公司长期再做的项目 xff0c 自己也略有了解 xff0c 知道这个项目先后经过3人之手的煅炼 xff0c 现在这个交接棒传到了我的手中 xff0c 初见代码
  • 正则表达式匹配URL或者网址

    正则表达 一 正则表达式 xff1a http ftp https w 43 w 43 43 w 64 61 amp amp 43 w 64 61 amp amp 43 匹配 xff1a http regxlib com Default a
  • Python3 logging详解

    Python3中logging详解 官方文档中 xff0c logging的5个层级 xff1a 实例代码 xff1a def logs time prov type log name 61 prov 43 39 39 43 time fi
  • python3爬虫 链接+表格+图片 思路

    左侧部门列表每点击一次都有一个新的js网页出现 xff0c Request URL可以明确看出网址 xff0c 且每个网址都有其规律 xff1a 点击了三个部门 xff0c 返回的网址如下 xff0c 可以看出是有规律的 xff0c 此处d

随机推荐

  • 跟我一起学MongoDB之——可视化工具Compass的简单使用

    首先官方为大家介绍了一下MongoDB Compass的主要功能 xff1a 1 对数据的可视化 2 插入 修改 删除 3 调试 优化 进入Compass首先出现连接界面如下 xff08 此处我使用的是我操作时候的界面状态 xff09 直接
  • sqluldr2 报错ora-24345: A Truncation or null fetch error occurred

    source etc profile source root bash profile unset NLS LANG sqluldr2 user 61 sjgj sjgj 64 10 254 4 196 1521 client query
  • 车牌号校验正则表达式

    一 车牌号校验规则 1 常规车牌号 xff1a 仅允许以汉字开头 xff0c 后面可录入六个字符 xff0c 由大写英文字母和阿拉伯数字组成 如 xff1a 粤B12345 2 武警车牌 xff1a 允许前两位为大写英文字母 xff0c 后
  • 日语学习资料汇总(可下载)

    直播课程推荐 xff1a 妞妞 大家的日语 侧重考级 天易外语 旧版 标准日本语 娜娜 日语讲堂 津波老师 新版标准日本语 爱知 实用日语口语 在直播课程有预告http www fairage com total jsp type 61 1
  • 成熟男人与24岁女孩精彩对白(转)

    烛光晚餐 桌两边 xff0c 坐了男人和女人 我喜欢你 女人一边摆弄着手里的酒杯 xff0c 一边淡淡的说着 我有老婆 男人摸着自己的手上的戒指 我不在乎 xff0c 我只想知道 xff0c 你的感觉 你 xff0c 喜欢我嘛 xff1f
  • jsessionid的困扰

    问题 xff1a 向某银行发送支付请求时 xff0c 如果客户端cookie开启 xff0c 第一次请求时 xff0c 请求地址会自动增加一jsessionid 第二次没有问题 如果客户端cookie关闭 xff0c 无论如何请求地址会自动
  • 2级基本编程问题(—)(C++)

    问题 xff08 1 xff09 时间转换 问题描述 xff1a 给定一个从0秒开始计时的秒数 xff0c 请将其转换为X X X的格式 输入 xff1a 输入一个秒数n xff0c 且这个秒数0 n 86400 输出 xff1a 输出这个
  • 报错<BEA-101017> error:java.net.SocketException解决

    最近项目登录不了 xff0c 报错为 xff1a lt BEA 101017 gt error java net SocketException Connection reset by peer socket write error 最后问
  • 专业IT管理人才必备十大能力

    IT168 技术文章 作为IT技术人员 xff0c 相信没有一个人愿意永远在底层编写程序或做简单的系统维护 经过一段时间的技术和经验的积累 xff0c 很多人都向往更高层的职位 xff0c 但如何能成为一个专业的IT管理人才 xff0c 并
  • Modbus超时时间设置

    很多同学在做Modbus通讯时 xff0c 需要连续读取多个现场设备的数据 xff0c 虽然也编写了Modbus轮询的程序 xff0c 但是有时还是无法正常通讯 有时虽然能够保证通讯 xff0c 但是所有现场设备的轮询周期很长 本文将从MB
  • Modbus测试工具(Modbus Master调试工具)

    Modbus Poll是Modbus主设备模拟工具 xff0c 帮助Modbus通讯设备开发人员进行Modbus通讯协议的模拟和测试 xff0c 用于监控 测试 调试Modbus通讯设备 可以多个窗口中同时监控多个Modbus子设备 xff
  • 如何移除Googleads.g.doubleclick.net 病毒

    Related Symptoms about Googleads g doubleclick net Googleads g doubleclick net is very tricky and stubborn redirect viru
  • confluence 下admin用户密码恢复方法

    搭建了一个confluence平台 xff0c 日子久了 xff0c 管理员admin密码居然忘记了 以下恢复方法 xff1a 1 运行此sql 找到你的管理员帐户 xff1a select u id u user name u activ
  • guava 常用用法

    根据 指定大小对 一个大的list拆分成固定size的较小 list Lists partition list n List lt Foo gt foos 61 for List lt Foo gt partition Lists part
  • azkaban plugin在cdh cloudera环境下的配置之 HDFS插件

    安装HDFS插件 1 配置Hadoop环境变量 xff0c 在 etc profile文件末尾增加如下配置 xff1a span class token keyword style color 0077aa export span HADO
  • azkaban plugin在cdh cloudera环境下的配置之 jobtype插件

    复制编译后的jobtype到exec服务的插件下 xff0c cp dist jobtype packages azkaban jobtype span class hljs variable style color efdcbc git
  • ProxmoxVE安装及Ceph存储配置

    一 系统安装 1 选择agree 2 磁盘选择好之后就点击next 3 国家选择china 4设置密码 mail随便写 5 命名以及ip设置 6 等待安装完了之后又个reboot点击就好 此处不贴图了 至此系统安装已完成 二 系统配置 1
  • Mybatis常见面试题总结

    1 什么是Mybatis xff1f xff08 1 xff09 Mybatis是一个半ORM xff08 对象关系映射 xff09 框架 xff0c 它内部封装了JDBC xff0c 加载驱动 创建连接 创建statement等繁杂的过程
  • ubuntu进行dpkg安装时出现xxx依赖于xxx,然而:未安装软件包解决方法

    问题 这是我安装mysql workbench时出现的问题 xff0c 用来作为例子 wasi 64 wasi KPL W0X 下载 sudo dpkg i mysql workbench community 8 0 21 1ubuntu2
  • 基于嵌入式Linux的无线路由器设计——Bridged Adapter网桥模式

    现在嵌入式设备联网 xff0c 主要有两种模式 xff1a 以太网RJ 45 接口直接插网线上网 xff1b 3G 4G 模块拨号上网 随着无线终端设备的不断普及 xff0c 手机平板等无线设备对网络的需求也日益增加 本篇文章主要介绍基于嵌