Getting Started with NI USRP X410
This guide outlines the unboxing and initial configuration process for the NI USRP X410 device.
This document outlines the complete process from unboxing to high-performance application of the NI USRP X410 device, presented in several stages. Currently, the exploration of the X410 is ongoing, and this document is not yet comprehensive.
This document is structured into several key stages to guide you through setting up and utilizing the NI USRP X410 device effectively:
- Connect The Device to the Internet via the 1GbE Port
- Upgrade X4x0 Filesystem
- Initial Verification via the 1GbE Port
We have just finished first two sections. and subsequent sections are still under development. Please stay tuned.
Connect The Device to the Internet via the 1GbE Port
The NI USRP X4x0 is equipped with two QSFP28+ interfaces and one 1GbE Ethernet interface. The 1GbE interface is used for firmware updates, upgrades, and remote control of the built-in Linux system. Unlike the traditional N2x0/X3x0 series devices that use static IP addresses, the 1GbE interface on the X4x0 is configured to automatically acquire an IP address using the DHCP protocol. This requires a device that provides DHCP services, typically a router, to allocate an IP address. Additionally, the initialization, upgrading, or resetting of the X4x0 requires an internet connection, meaning the router must have internet access. A significant challenge arises during the initialization, upgrading, or resetting processes due to the dependency on accessing GitHub, which can be problematic for users in networks with restricted access. Below are two recommended networking solutions for the X4x0:
Solution 1: Router with Internet Access (Straightforward yet Inconvinient)
- Key Steps:
- Ensure the router is connected to the internet.
- Connect the X4x0’s 1GbE interface to the router via a LAN port.
- The router automatically provides the X4x0 with an IP address and internet access.
- Connect another computer to the same LAN with the USRP driver (UHD) installed. Run the
uhd_find_devices
command to locate the X4x0 devices. - For users with limited internet access, additional VPN/proxy setup is necessary:
- Option 1 (Hard): Configure the router to have full internet access
- Option 2 (Easy): Install proxy software on the host computer and enable LAN Sharing.
This solution is straightforward but inconvinent due the additional router.
Solution 2: Direct PC Connection + Internet Sharing (Convenient yet Less Reliable)
If a router is not available, you can set up the X4x0 using the Internet Sharing feature directly from your Mac, Ubuntu, or Windows machine.
Key Steps for Mac:
- Connect the X4x0’s 1GbE interface directly to the Mac using an Ethernet cable.
- Go to System Preferences, search ‘Sharing’, select “Internet Sharing” from the search results.
- Choose the connection you want to share from the “Share your connection from” menu, usually your Wi-Fi network.
- In the “To computers using” list below, choose the Ethernet port which the X4x0 is connected.
- In a minute or less, the X410 acquires an IP address and access to the internet.
- Install the USRP driver (UHD), and run the
uhd_find_devices
command to find the X4x0 devices.- How to install USRP driver?
- Install brew package manager, then run
brew install uhd
- Install brew package manager, then run
- How to install USRP driver?
- For users with limited internet access, install proxy software with LAN Sharing capabilities on the Mac.
Key Steps for Ubuntu:
- Connect the X4x0’s 1GbE interface directly to the Ubuntu machine using an Ethernet cable.
- Go to System Preferences, and Network
- Choose the Ethernet Connection which connects the X4x0, and edit this connection.
- Go to the IPv4 Settings tab, select “Shared to other computers”, Click Save.
- In a minute or less, the X410 acquires an IP address and access to the internet.
- Install the USRP driver (UHD), and run the
uhd_find_devices
command to locate the X4x0 devices.- Install PicoScenes software, and it auto-installs the latest USRP driver from the USRP offical repo.
- For users with limited internet access, install proxy software with LAN Sharing capabilities on the Ubuntu machine.
Key Steps for Windows:
- Connect the X4x0’s 1GbE interface directly to the PC using an Ethernet cable.
- Open Control Panel > Network and Sharing Center > Change adapter settings.
- Right-click the connection you want to share (e.g., WiFi), and select “Properties”.
- Go to the Sharing tab, and check “Allow other network users to connect through this computer’s Internet connection”.
- Select the Ethernet network connection used by the X4x0 from the dropdown menu under “Home networking connection”.
- Click OK to enable Internet Sharing.
- Install the USRP driver (UHD), and run the
uhd_find_devices
command to locate the X4x0 devices. - The X410 acquires an IP address and access to the internet.
- For users with limited internet access, install proxy software with LAN Sharing capabilities on the PC.
Validate Connectivity
Validate the LAN Connection
-
Ensure the host computer is connected to the same LAN and has the USRP driver (UHD) installed. Execute the
uhd_find_devices
command to locate the X4x0 devices. -
Optionally, you can further test the connectivity using the
ping
command, for example,ping 192.168.2.2
.
Validate the Internet Connection
- SSH into the device using its IP address with the following command:
ssh root@192.168.2.2 # <-- 192.168.2.2 is the IP address of the X4x0
The X4x0 does not have ssh password by default; simply press Enter to proceed through the login process.
-
Within the SSH session, test the backward connectivity to the host computer by
ping 192.168.2.1
. - Still within the SSH session, test the internet connectivity to github.com by
ping github.com
.
Validate Connectivity (for Users with Limited Internet Access)
For users with limited internet access, the ping github.com
command might fail. Follow these steps to configure a network proxy on the X4x0 device to obtain full internet access:
-
Enable the LAN Sharing feature of the VPN/proxy software on the host computer.
-
SSH into the X4x0 device using its IP address like the above.
- Execute the following script:
export https_proxy=http://<PROXY_SHARING_IP_PORT> http_proxy=http://<PROXY_SHARING_IP_PORT> all_proxy=socks5://<PROXY_SHARING_IP_PORT>
Replace
<PROXY_SHARING_IP_PORT>
with the IP/Port of your VPN/Proxy sharing port, e.g., 198.168.2.1:1234. - The
ping
command, which relies on the ICMP protocol and is not proxied by the above script, is expected to fail. Use alternative methods such aswget
orcurl
to verify connectivity. For instance, check connectivity to github.com with thewget
command:wget --method=HEAD -S github.com
This command will attempt to download the page from github.com but will only fetch the header part to confirm connectivity.
Upgrade X4x0 Filesystem
-
SSH into the X4x0 device using its previously mentioned IP address.
-
Execute the command
usrp_update_fs -t master
to upgrade to the latest file system. -
Reboot the system by issuing the
reboot
command. -
SSH into the X4x0 device once more.
-
Execute
mender commit
to save the changes to the filesystem. -
Reboot the system again using the
reboot
command.
Initial Verification via the 1GbE Port
After completing the steps above, the X4x0 is preliminarily ready for use. To verify, utilize PicoScenes to measure CSI through the 1GbE connection.
Note: PicoScenes does not currently support the X440 model; therefore, the X410 model is used as an example in this section.
Flash the ‘x4_200’ FPGA Image
To properly receive Wi-Fi signals through the 1GbE interface, it is necessary to flash the ‘x4_200’ FPGA image. Follow these steps to flash the ‘x4_200’ FPGA image:
-
SSH into the X4x0 device as previously described.
- Execute the following command:
uhd_image_loader --args='type=x4xx,mgmt_addr=127.0.0.1,fpga=X4_200'
This command flashes the device to use the ‘x4_200’ FPGA image.
- Reboot the system using the
reboot
command.
Run UHD Commands
uhd_find_devices
This command verifies if the USRP device is detected by the host system.
uhd_usrp_probe
This command initiates a communication session with the USRP to ensure there are no errors in connectivity or configuration.
uhd_fft --args="addr=192.168.10.2" --freq 2412e6 --rate 20e6
This command configures the USRP to receive signals at 2412 MHz with a sample rate of 20 MHz, and displays the spectrum.
Run PicoScenes
After flashing the FPGA image, execute the following command on the host computer to start PicoScenes in debug mode, logging CSI data at 2.412 GHz and plotting the results:
PicoScenes '-d debug -i usrp --mode logger --freq 2412 --plot'
You can tune ‘2412’ to other control frequency of the BSSID spatially nearby, and PicoScenes should display CSI measurement plots.