Building OpenWIFI with AD936x and ZYNQ

Building OpenWIFI with AD936x and ZYNQ

Previously recommended excellent open source projects on GitHub, “What are the excellent VHDL/Verilog/FPGA projects on GitHub“. OpenWIFI, as a leader in the communication field, many people will naturally take it for learning. This article will share with you how to build a low-cost OpenWIFI using ZYNQ (requires ZYNQ010 or higher chip) + AD936X.

Introduction

Building OpenWIFI with AD936x and ZYNQ
openwifi: A full-stack IEEE802.11/Wi-Fi design compatible with Linux mac80211 based on SDR (Software Defined Radio).
Building OpenWIFI with AD936x and ZYNQ
The hardware used is as follows:
1. ZYNQ7020 + AD9364, Analog Devices AD9364- BBCZ integrated 1×1 RF Agile Transceiver™ + Xilinx Zynq XC7Z020-1CLG400I AP SoC (for digital processing)
2. Introduction of 7020:https://china.xilinx.com/support/documentation/boards_and_kits/zc702_zvik/ug850-zc702-eval-bd.pdf
3. AD9364: See the Chinese manual for details.
Note 1:
Some ZYNQ + AD936x solutions are basically variations of the official ADI AD-FMCOMMS [2,3,4,5] –EBZ (details see Note 2), all design materials can be directly used with the official project. At the same time, the official has also made u-boot, kernel, and file systems for some commonly used development boards and open-source hardware, and you only need to prepare an SD/FT card and a card reader during use;
Note 2:
Board
AD936x Device
Simultaneous Transmit/Receive
Tx (Range)
Rx (Range)
Purpose
Connector
ADALM-PLUTO
1 AD9363
1 x 1
1 (325-3800 MHz)
1 (325-3800 MHz)
Active Learning Module
Taiwan Semiconductor
ADRV9364-Z7020
1 AD9364
1 x 1
1 (2400-2500 MHz)
1 (2400-2500 MHz)
Highly Integrated Module System
Taiwan Semiconductor
ADRV9361-Z7035
1 AD9361
2 x 2
2 (2400-2500 MHz)
2 (2400-2500 MHz)
Highly Integrated Module System
Taiwan Semiconductor
AD-FMCOMMS2-EBZ
1 AD9361
2 x 2
2 (2400-2500 MHz)
2 (2400-2500 MHz)
Best RF Performance in Narrow Range
FMC-LPC
AD-FMCOMMS3-EBZ
1 AD9361
2 x 2
2 (70-6000 MHz)
2 (70-6000 MHz)
Software Testing and Waveform Development
FMC-LPC
AD-FMCOMMS4-EBZ
1 AD9364
1 x 1
1 (2400-2500 MHz) 1 (70-6000 MHz)
1 (2400-2500 MHz) 1 (70-6000 MHz)
FMC-LPC
AD-FMCOMMS5-EBZ
2 AD9361
4 x 4
4 (2400-2500 MHz) 4 (70-6000 MHz)
4 (2400-2500 MHz) 4 (70-6000 MHz)
MIMO Test Platform, Can Synchronize in RF Domain
2 FMC-LPC

Application

The official supported board is as follows:
board_name
board combination
zc706_fmcs2
Xilinx ZC706 dev board + FMCOMMS2/3/4
zed_fmcs2
Xilinx zed board + FMCOMMS2/3/4
adrv9364z7020
ADRV9364-Z7020 + ADRV1CRR-BOB
adrv9361z7035
ADRV9361-Z7035 + ADRV1CRR-BOB/FMC
zc702_fmcs2
Xilinx ZC702 dev board + FMCOMMS2/3/4
zcu102_fmcs2
Xilinx ZCU102 dev board + FMCOMMS2/3/4
zcu102_9371
Xilinx ZCU102 dev board + ADRV9371
1. Download the SD card image
The image contains U-boot, kernel, and file system.
Open the following URL:
https://users.ugent.be/~xjiao/openwifi-1.2.0-leuven-2-32bit.img.xz
After downloading, it will be a .xz file
Building OpenWIFI with AD936x and ZYNQ
On Windows, you need to unzip it first, and the extracted file is the .img file we need.
Building OpenWIFI with AD936x and ZYNQ
Next, prepare an SD/TF card with more than 8GB of memory and connect it to the computer through a card reader.
Prepare an SD card burning software. I usually use Win32DiskImager. Open the software, select the downloaded img file, and set it as follows:
Building OpenWIFI with AD936x and ZYNQ
Step 1: Select the downloaded img file;
Step 2: Select the corresponding drive letter of the SD/TF card, be sure to check carefully to prevent damaging other cards;
Step 3: Click WRITE to write the file to the card;
Step 4: Wait for completion.
2. Copy files to the corresponding location
The burned card can only display the boot partition on Windows, first check what files are in the partition:
The u-boot and device tree provided by ADI for each board are located in the corresponding folder:
Building OpenWIFI with AD936x and ZYNQ
Files in each folder:
Building OpenWIFI with AD936x and ZYNQ
The SD card also includes the kernel + u-boot environment variables
Building OpenWIFI with AD936x and ZYNQ
Where uImage (kernel) is in the folder shown in the image below and also needs to be copied to the root directory of the SD card, after copying, as shown in the image above.
Building OpenWIFI with AD936x and ZYNQ
File system:
The file system needs to be viewed in the Linux system (WINDOWS does not support), as follows:
Building OpenWIFI with AD936x and ZYNQ
Finally, in the boot partition mentioned above, copy the u-boot and device tree to the root partition of the SD card,
Open the path shown in the image below:
Building OpenWIFI with AD936x and ZYNQ
Copy the internal files to the root directory of the SD card:
Building OpenWIFI with AD936x and ZYNQ
Note to replace the original files, then you can modify the environment variable text as needed (default not needed), connect the platform’s serial port + power on to see the complete system print information, the serial port settings are as follows:
Building OpenWIFI with AD936x and ZYNQ
So far, the process of building the platform using AD936X + ZYNQ with the official image has been completed, and you can have fun now.
To summarize: 1. Download the image file; 2. Copy the corresponding u-boot, device tree, and kernel (uImage) from the OpenWIFI folder to the root directory of the SD card (BOOT).
Building OpenWIFI with AD936x and ZYNQ

Openwifi Application

Hardware:SDR Hardware Platform
Development Platform: Windows
Attachment: WIFI Antenna*2
Required: Router
Building OpenWIFI with AD936x and ZYNQ
Note: The antenna interface must choose the corresponding socket interface for your SDR platform, the common one is SMA interface. Other interfaces need to find a way to connect the antenna to the RX and TX interfaces of the SDR.
1.Router Settings
After OpenWIFI starts, there is a fixed IP. You need to connect the platform to the WLAN interface of the router. If the IP segment of OpenWIFI is not in the same frequency segment as the router, you need to modify the IP of OpenWIFI or the fixed IP of the router, modify it as convenient, I directly modified the router IP as shown in the image below:
Building OpenWIFI with AD936x and ZYNQ
2. Start OpenWIFI
Building OpenWIFI with AD936x and ZYNQ
Input the command in the interface shown above:
~/openwifi/fosdem-11ag.sh
Building OpenWIFI with AD936x and ZYNQ
OpenWIFI has started, at this time use your phone to connect to Openwifi’s wifi;
Open the browser on your phone and go to192.168.13.1 webpage to see the author’s homepage, detailed video see the link below.
The current settings still cannot access the internet, you need to bridge OpenWIFI and the WLAN of the router, mainly using three commands:
sudo sysctl -w net.ipv4.ip_forward=1sudo iptables -t nat -A POSTROUTING -o NICY -j MASQUERADEsudo ip route add 192.168.13.0/24 via 192.168.10.122 dev ethX
Building OpenWIFI with AD936x and ZYNQ
The red part is what needs to be changed, the specific meaning will not be explained (mainly related to the routing table issue), just look at the board-end IP used above and you will understand.
Building OpenWIFI with AD936x and ZYNQ
The actual modified command is as follows:
sudo sysctl -w net.ipv4.ip_forward=1sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADEsudo ip route add 192.168.13.0/24 via 192.168.10.122 dev eth0
Modify the configuration in the serial port.
Building OpenWIFI with AD936x and ZYNQ
At this point, connecting to Open WIFI’s wifi with your phone can access the internet, as shown below:
The signal reception part is weak because the antenna is not plugged in.
That’s it.

– END –

Building OpenWIFI with AD936x and ZYNQ

NOW take action!


Recommended Reading

【Vivado those things】How to find official examples and how to use official examples
【Vivado Usage Pitfalls and Advanced】Summary
【Vivado those things】Vivado header file usage precautions
【Vivado those things】Common shortcuts in Vivado (1) F4 key
【Vivado those things】Common shortcuts in Vivado (2) Other common shortcuts

SystemVerilog Digital System Design_ Xia Yuwen PDF
Difference between always, assign and always@(*) in Verilog

How to find the maximum and second maximum of 32 inputs on FPGA: Divide and Conquer
Book Recommendation| ARM Cortex-M0 Fully Programmable SoC Principles and Implementation

How to learn FPGA
RISC-V Further! The world's first 5nm RISC-V SOC successfully taped out!

Several open-source SDR platforms

Xilinx launches Kria adaptive system module product portfolio, accelerating innovation and AI applications at the edge

Introduction to RISC-V instruction set architecture and introduction to domestic and foreign manufacturers

Vitis tasting (1)

Basic principles of LNA and PA in SDR/wireless design

Disassembling the 1968 US military computer, really doubting it's a "time travel"!

A comprehensive popular science article on FPGA technology

The first Chinese CPU instruction specification, Loongson launched the LoongArch infrastructure manual

Have you ever seen a 1-bit CPU?

Advanced FPGA design techniques! Multi-clock domain and asynchronous signal processing solutions

【Vivado those things】Netlist description of circuit structure in Vivado

What is the difference between bare-metal development and Linux development in ZYNQ?

The prototype of modern computers - the microcomputer MCS-4

Is the world's first microprocessor really the Intel 4004? In fact, this is a complex story...

【Weekly Question】How to control the output high and low level of FPGA IO pins when loading FPGA programs

【Vivado those things】Error when generating .bit file in vivado - ERROR: [Drc 23-20]

AD9361 and Zynq and their reference design instructions
Have you been using a virtual machine for 1202 years? Detailed tutorial on installing Ubuntu subsystem and graphical interface on Win10

Talk about the implementation process of Xilinx FPGA design

Excellent VHDL/Verilog/FPGA projects on GitHub

Building a radio with AD936x+ZYNQ (1)

Building a radio with AD936x+ZYNQ (2) including video demonstration



Click on the above font to jump to read

Leave a Comment

Your email address will not be published. Required fields are marked *