Skip to content

Commit 47f9b17

Browse files
author
Brett Witherspoon
committed
Add Ettus X410 SDR guide
1 parent 4d2251e commit 47f9b17

File tree

2 files changed

+171
-0
lines changed

2 files changed

+171
-0
lines changed

.gitbook/assets/ettus-x410.png

24.7 KB
Loading

quick-start-guides/usrp-x410.md

Lines changed: 171 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,171 @@
1+
---
2+
description: Getting started with Ettus USRP X410 development.
3+
---
4+
5+
# Ettus USRP X410 Development
6+
7+
The [Ettus USRP X410](https://www.ettus.com/all-products/usrp-x410/) is a high-performance software defined radio (SDR) based on the Xilinx Zynq Ultrascale+ ZU28DR RF System on Chip (RFSoC).
8+
9+
This guide describes how to get started with FPGA and software development for the USRP X410 in ExCL.
10+
11+
## Getting Started
12+
13+
![](../.gitbook/assets/ettus-x410.png)
14+
15+
To discover devices that are available on the network:
16+
17+
```shell
18+
$ uhd_find_devices
19+
[INFO] [UHD] linux; GNU C++ version 11.3.0; Boost_107400; UHD_4.4.0.0-0ubuntu1~jammy1
20+
--------------------------------------------------
21+
-- UHD Device 0
22+
--------------------------------------------------
23+
Device Address:
24+
serial: 3268240
25+
addr: 10.40.10.133
26+
claimed: False
27+
fpga: X4_200
28+
mgmt_addr: 10.40.10.133
29+
product: x410
30+
type: x4xx
31+
32+
33+
--------------------------------------------------
34+
-- UHD Device 1
35+
--------------------------------------------------
36+
Device Address:
37+
serial: 326A292
38+
addr: 10.40.10.134
39+
claimed: False
40+
fpga: X4_200
41+
mgmt_addr: 10.40.10.134
42+
product: x410
43+
type: x4xx
44+
45+
```
46+
47+
To probe details of a particular device:
48+
49+
```shell
50+
$ uhd_usrp_probe --args mgmt_addr=x410-0
51+
$ uhd_usrp_probe --args mgmt_addr=x410-1
52+
```
53+
54+
To log into the embedded Linux of a device:
55+
56+
```shell
57+
$ ssh root@x410-0
58+
$ ssh root@x410-1
59+
```
60+
61+
To connect to the STM32 SCU:
62+
63+
```shell
64+
screen /dev/serial/by-id/usb-Digilent_Digilent_USB_Device_251635263527-if02-port0 115200
65+
```
66+
67+
To connect to the RFSoC APU:
68+
69+
```shell
70+
sudo screen /dev/serial/by-id/usb-Digilent_Digilent_USB_Device_2516351DDCC0-if03-port0 115200
71+
```
72+
73+
## Development
74+
75+
### USRP Hardware Driver (UHD)
76+
77+
- C++ API
78+
- Python API
79+
80+
### OpenEmbedded Linux
81+
82+
```shell
83+
git clone -b 2.6.3 https://github.com/siemens/kas.git
84+
git clone -b v4.4.0.0 https://github.com/EttusResearch/meta-ettus.git
85+
./kas/kas-container build meta-ettus/kas/x4xx.yml --runtime-args "-e MENDER_ARTIFACT_NAME=v4.4.0.0-excl"
86+
./kas/kas-container shell meta-ettus/kas/x4xx.yml -c "bitbake gnuradio-image -cpopulate_sdk"
87+
./meta-ettus/contrib/create_packages.sh x4xx v4.4.0.0-excl gnuradio-image build/tmp-glibc/deploy
88+
```
89+
90+
### Radio Frequency Network-on-Chip (RFNoC)
91+
92+
Developing a standalone UHD C++ API application...
93+
94+
- [RFNoC Specification](https://files.ettus.com/app_notes/RFNoC_Specification.pdf)
95+
96+
### FPGA
97+
98+
The pre-built FPGA images can be installed with `uhd_image_loader`:
99+
100+
```shell
101+
uhd_image_loader --args type=x4xx,mgmt_addr=x410-0,fpga=X4_200
102+
uhd_usrp_probe --args mgmt_addr=x410-0
103+
```
104+
105+
Building FPGA images for the X410 requires an enterprise license and a specific version of Vivado. The arias machine in ExCL has been configured to support building X410 images.
106+
107+
```shell
108+
ssh arias
109+
cd /noback/$USER
110+
git clone https://github.com/EttusResearch/uhd.git
111+
cd uhd
112+
git checkout -b $USER/develop v4.4.0.0
113+
cd fpga/usrp3/top/x400/
114+
source setupenv.sh --vivado-path=/tools/Xilinx/Vivado
115+
make help
116+
```
117+
118+
The default image *X410_X4_200* requires greater then 16 GB of memory (~17 GB peak). Currently arias only has 16 GB of memory so only smaller images like the *X410_X1_100* can be built.
119+
120+
```shell
121+
make X410_X1_100
122+
```
123+
124+
```shell
125+
uhd_image_loader --args type=x4xx,mgmt_addr=x410-0 --fpga-path build/usrp_x410_fpga_X1_100.bit
126+
uhd_usrp_probe --args mgmt_addr=x410-0
127+
```
128+
129+
### Maintanence Notes
130+
131+
See "Getting Started" section for the USRP X4x0 series in the [USRP Hardware Driver and USRP Manual](https://files.ettus.com/manual/page_usrp_x4xx.html).
132+
133+
- Install UHD on the host computer following the [Binary Installation](https://files.ettus.com/manual/page_install.html) instructions
134+
- Also install the python bindings for UHD: `sudo apt-get install python3-uhd`
135+
136+
The versions of the [Module Peripheral Manager (MPM)](https://files.ettus.com/manual/page_mpm.html) running on the RFSoC APU, FPGA image, and UHD on the host must be compatible versions.
137+
138+
```shell
139+
ssh root@x410-0
140+
```
141+
142+
```shell
143+
export ftp_proxy=http://proxy.ftpn.ornl.gov:3128
144+
export http_proxy=http://proxy.ftpn.ornl.gov:3128
145+
export https_proxy=http://proxy.ftpn.ornl.gov:3128
146+
```
147+
148+
```shell
149+
$ sed -i 's/^NTP=.*/NTP=ntp.ftpn.ornl.gov ntp2.ftpn.ornl.gov/' /etc/systemd/timesyncd.conf
150+
$ timedatectl set-ntp true
151+
$ systemctl restart systemd-timesyncd
152+
$ timedatectl set-timezone EST5EDT
153+
$ timedatectl status
154+
$ timedatectl show-timesync
155+
$ timedatectl timesync-status
156+
```
157+
158+
```shell
159+
usrp_update_fs -t v4.4.0.0
160+
```
161+
162+
```shell
163+
ssh-keygen -f "$HOME/.ssh/known_hosts" -R "x410-0"
164+
ssh root@x410-0
165+
mender commit
166+
```
167+
168+
### References
169+
170+
- [Product Page](https://www.ettus.com/all-products/usrp-x410/)
171+
- [Manual](https://files.ettus.com/manual/page_usrp_x4xx.html)

0 commit comments

Comments
 (0)