通信人家园

 找回密码
 注册
搜索
热搜: 家园 活动
凌华科技
恒扬科技

军衔等级:

  列兵

注册时间:
2016-11-21
发表于 2016-12-25 17:05:23 |显示全部楼层

SDR WiFi平台 gr-ieee802-11软件无线电实现802.11协议


更多关于SDR LTE方面的博客请链接 http://blog.csdn.net/jxwxg


在之前的博客中,我介绍了SDR LTE平台,其中开源的有OpenAirInterfaceOAI),srsLTE, OpenLTE等,不开源的有Amarisoft等。这篇博客主要介绍SDR WiFi平台。据笔者所知,可能因为802.11协议要求的带宽较大,数据速率较大,对SDR平台的性能要求较高,所以较少实现SDR WiFi平台的项目。我接触过一个稍微完整点的SDR WiFi项目是基于GNU Radiogr-ieee项目,下面简单介绍并推广下这个项目。


项目简介

项目名称:gr-ieee802-11

项目作者:Bastian BloesslPaderborn University

源码地址:https://github.com/bastibl/gr-ieee802-11

支持硬件: Ettus N210s and B210s

支持协议:IEEE 802.11 a/g/p

项目框架:GNU Radio



项目安装

本章节简要介绍项目的安装,详细安装方法请链接https://github.com/bastibl/gr-ieee802-11

2.1 安装依赖库

log4cpp

用于生成log,具体安装方法如下所示

  1. sudo apt-get install liblog4cpp5-dev
  2. sudo port install log4cpp
复制代码


GNU Radio

项目的基本框架,目前支持v3.7.3之后的版本。GNU Radio有很多种安装方法,推荐使用源码安装,因为安装方法比较繁琐,在此不赘述,详情链接http://gnuradio.org/redmine/projects/gnuradio/wiki/InstallingGR


gr-foo

作者自己写的一个GNU Radio模块,项目里需要使用。安装方法如下:

  1. git clone https://github.com/bastibl/gr-foo.git
  2. cd gr-foo
  3. mkdir build
  4. cd build
  5. cmake ..
  6. make
  7. sudo make install
  8. sudo ldconfig
复制代码

2.2 安装gr-ieee802-11         

安装好依赖库之后,我们可以直接安装gr-ieee802-11。安装方法如下所示:

  1. git clone git://github.com/bastibl/gr-ieee802-11.git
  2. cd gr-ieee802-11
  3. mkdir build
  4. cd build
  5. cmake ..
  6. make
  7. sudo make install
  8. sudo ldconfig
复制代码

2.3 设置共享内存大小

项目的发射机在发射帧信号之前需要完整的存储一个帧的数据,里面使用到了共享内存。所以需要保证共享内存的大小,采用如下命令设置:

  1. sudo sysctl -w kernel.shmmax=2147483648
复制代码

项目运行3.1 编译OFDM PHY模块

作者自己写了一个OFDM PHY模块,在发射机和接收机里面都有使用,需要提前用gnuradio-companion打开并编译

  1. ./examples/wifi_phy_hier.grc
复制代码

3.2 项目运行

项目包含以下程序,进入example文件夹后用gnuradio-companion打开相应的文件即可。

       wifi_loopback.grc测试用程序

       wifi_tx.grc       发送wifi信号

       wifi_rx.grc       接收wifi信号

       wifi_transceiver.grc:同时收发wifi信号



项目应用场景

4.1 gr-ieee接收并分析路由器信号

启动wifi_rx.grc,在gnuradio-companion界面调整参数,使USRP能接收路由器发射的信号。可以使用wireshark抓包分析收到的信号的信息,也可以在wifi_rx.grc里把log等级调高,观察log信息。


4.2 gr-ieee发射WiFi信号,路由器接收信号

启动wifi_tx.grc,在gnuradio-companion界面调整参数,使路由器能接收到USRP发送的信号。也可以开启无线网卡的混杂模式,使用无线网卡接收USRP发送的信号,然后使用wireshark抓包验证。


4.3 gr-ieee与路由器通信

使用wifi_trx.grc与路由器进行双向通信。但是由于目前wifi_trx.grc功能开不是很全,所以能与路由器通信的数据包有限。


4.4 gr-ieee发射信号,gr-ieee接收信号(单向通信)

分别启动wifi_tx.grcwifi_rx.grc,调整两端参数,使wifi_rx.grc能接收到wifi_tx.grc发送的数据包。


4.5 gr-ieee发射信号,gr-ieee接收信号(双向通信)

分别在两台电脑启动wifi_trx.grc。两台电脑可以通过USRP通信。wifi_trx.grc会启动一个虚拟网卡,我们可以直接在两个虚拟网卡之间使用ping命令。



项目测试

5.1 测试场景

我们测试应用场景5,即4.5 gr-ieee发射信号,gr-ieee接收信号(双向通信)。并使用pingscp等命令进行测试。




wifi_transceiver程序界面如下图所示,可以配置的参数主要包括收发增益,带宽,信道,调制方式,信道估计算法等。我们能从界面图中看到我们测试时设置的参数。




5.2 测试截图5.2.1 QPSK

星座图




ping包




5.2.2 16QAM

星座图




ping包



scp,速率低的可怜




5.2.3 64QAM

星座图






总结

gr-ieee802-11 基本具备了IEEE 802.11 a/g/p协议PHY所有的功能和部分MAC层功能,但是功能还不全面。


此外,项目基于GNU Radio架构,而且协议要求带宽较大,项目的实时性处理还不是很好,运行时UHD会经常报错Uunderflow),Ooverflow)和Llatency)。这也进一步导致了项目吞吐率较低。




使用道具 举报

您需要登录后才可以回帖 登录 | 注册

Archiver|手机版|C114 ( 沪ICP备12002291号 )|联系我们 |网站地图  

GMT+8, 2017-1-22 18:00 , Processed in 0.091172 second(s), 14 queries , Gzip On.

Copyright © 1999-2016 C114 All Rights Reserved

Discuz Licensed

回顶部