Difference between revisions of "Enabling Ethernet Connectivity on Octoclock and Octoclock-G"
(→Download Octoclock Firmware) |
(→Adjust Network Buffers) |
||
Line 124: | Line 124: | ||
cd /usr/local/share/uhd/images | cd /usr/local/share/uhd/images | ||
− | == | + | ==Connect Programmer to Octoclock== |
− | + | ||
− | + | Begin this guide with the Octoclock unplugged. First, you'll need to remove the top plate from the Octoclock, exposing the PCB. There are 12 screws securing the top plate. | |
− | + | ||
− | + | ||
− | + | With the top plate removed, locate the 6-pin header (male) for SPI communication with the ATmega128. | |
− | + | Connect the ATMEL-ICE's 6-pin header (female) to the SPI header of the Octoclock as shown below. The tab of the header should be facing the ATmega128 chip. | |
− | + | ||
+ | Note: If you plug the header in backwards, <code>avrdude</code> is expected to return a "please check your connections" message after a programming failure. | ||
+ | |||
+ | If not already done, connect the other end of the SPI cable to the ATMEL-ICE's AVR squid connector, and connect the ATMEL-ICE to the host computer using the micro-usb port. There should be a single LED lit on the programmer. | ||
+ | |||
+ | Supply power to the Octoclock with the 6V power brick. You should see the Octoclock's Power LED come on and 1 additional green LED on the ATMEL-ICE programmer illuminate. | ||
==Adjust Ethernet MTU== | ==Adjust Ethernet MTU== |
Revision as of 11:46, 13 January 2020
Contents
- 1 Application Note Number
- 2 Revision History
- 3 Overview
- 4 Verify Current Octoclock Configuration
- 5 Tools Required
- 6 ATMEL-ICE Configuration
- 7 Download Octoclock Firmware
- 8 Connect Programmer to Octoclock
- 9 Adjust Ethernet MTU
- 10 Increasing Ring Buffers
- 11 DPDK
- 12 Disable Hyper-threading
- 13 Disable KPTI Protections for Spectre/Meltdown
Application Note Number
AN-800
Revision History
Date | Author | Details |
---|---|---|
2020-01-13 | Sam Reiter | Initial creation |
Overview
This application note covers, in detail, the steps required to program an Octoclock or Octoclock-G to allow Ethernet connectivity and communication with UHD. This guide serves as a supplement to the UHD Manual's coverage of the topic. In this guide, we will use Ubuntu 19.10 to program an Octoclock using an ATMEL-ICE programmer.
Verify Current Octoclock Configuration
To get started, we want to make sure that this guide is appropriate for your device(s). Currently shipping Octoclocks will come with the following firmware pre-loaded. You can test which unit you have with a simple ping test:
- Connect the 6V DC power supply to the Octoclock
- Connect your Octoclock's RJ-45 port to a host PC via an Ethernet cable
- Configure your host's Ethernet port to a static connection with the IPV4 address:
192.168.10.1
- Configure your host's Ethernet port with a subnet mast of:
255.255.255.0
- Turn your host's Ethernet port off and back on for changes to take effect
- In a terminal, issue the command:
ping 192.168.10.3
A successful ping between devices means that your device is already configured with updated firmware and this guide is *not* necessary. At this time, this guide has not been tested for recovering bricked devices.
Tools Required
- Philips head screwdriver
- ATMEL-ICE Programmer (or comparable AVR programmer) with SPI/ISP cable
- Ethernet cable
ATMEL-ICE Configuration
To utilize the ATMEL-ICE programmer, the avrdude
utility must be used. The version of avrdude
should be >= 6.1. At the time of this guide, version 6.3 is the default install from the Ubunu PPA and programming issues were observed. This guide will cover a build of avrdude 6.1 from source.
Install the following dependencies:
sudo apt-get install bison flex libftdi1-dev libftdi-dev
Download the avrdude-6.1.tar.gz
release here. From this download location, uncompress the directory:
tar xvzf avrdude-6.1.tar.gz
Enter the source directory
cd avrdude-6.1/
Run the configure script
./configure
Expected output:
<truncated output> Configuration summary: ---------------------- DO HAVE libelf DO HAVE libusb DO HAVE libusb_1_0 DO HAVE libftdi1 DO HAVE libftdi (but prefer to use libftdi1) DON'T HAVE libhid DO HAVE pthread DISABLED doc ENABLED parport DISABLED linuxgpio
Build
make
Install
sudo make install
Test your avrdude
installation
avrdude -?
Expected output
<truncated output> avrdude version 6.1, URL: <http://savannah.nongnu.org/projects/avrdude/>
Download Octoclock Firmware
If UHD is not already installed, install your preferred version with this guide:
[Building and Installing the USRP Open-Source Toolchain (UHD and GNU Radio) on Linux, https://kb.ettus.com/Building_and_Installing_the_USRP_Open-Source_Toolchain_(UHD_and_GNU_Radio)_on_Linux]
Download images for UHD:
sudo uhd_images_downloader
Verify that you have octoclock_bootloader.hex and octoclock_r4_fw.hex
ls -l /usr/local/share/uhd/images | grep octoclock
Expected output
-rw-r--r-- 1 root root 17332 Jun 6 2019 octoclock_bootloader.hex -rw-r--r-- 1 root root 22845 Jun 6 2019 octoclock_r4_fw.hex
Change to this directory:
cd /usr/local/share/uhd/images
Connect Programmer to Octoclock
Begin this guide with the Octoclock unplugged. First, you'll need to remove the top plate from the Octoclock, exposing the PCB. There are 12 screws securing the top plate.
With the top plate removed, locate the 6-pin header (male) for SPI communication with the ATmega128.
Connect the ATMEL-ICE's 6-pin header (female) to the SPI header of the Octoclock as shown below. The tab of the header should be facing the ATmega128 chip.
Note: If you plug the header in backwards, avrdude
is expected to return a "please check your connections" message after a programming failure.
If not already done, connect the other end of the SPI cable to the ATMEL-ICE's AVR squid connector, and connect the ATMEL-ICE to the host computer using the micro-usb port. There should be a single LED lit on the programmer.
Supply power to the Octoclock with the 6V power brick. You should see the Octoclock's Power LED come on and 1 additional green LED on the ATMEL-ICE programmer illuminate.
Adjust Ethernet MTU
This applies to Ethernet connected USRPs (N2xx, N3xx, X3xx, E320).
For 1 Gigabit connections, the MTU should be set to 1500
.
For 10 Gigabit connections, the MTU should be set to 8000
.
It is important to set the value and not leave it is automatic
Increasing Ring Buffers
This applies to Ethernet connected USRPs using a 10 Gb interface (X3xx, N3xx, E320).
Increasing the Ring Buffers on the NIC may help prevent flow control errors at higher rates.
sudo ethtool -G <interface> tx 4096 rx 4096
DPDK
DPDK is supported on N3xx, X3xx and E320 USRPs. DPDK replaces the traditional Linux networking stack with a low overhead user-land based driver. Additional details of using DPDK can be found in the UHD Manual located at the following link: https://files.ettus.com/manual/page_dpdk.html
Disable Hyper-threading
In some applications which require the highest possible CPU performance per core, disabling hyper-threading can provide roughly a 10% increase in core performance, at the cost of having less core threads. Hyper-threading can be disabled within the BIOs and varies by manufacturer.
Disable KPTI Protections for Spectre/Meltdown
In some cases, disabling the KPTI protections for the Linux Kernel can increase performance by 10-15%. It is important to note the ramification making this modification can have. This modification is only recommended for systems that absolutely require the best performance and are not connected to the internet.
- https://en.wikipedia.org/wiki/Meltdown_(security_vulnerability)
- https://en.wikipedia.org/wiki/Spectre_(security_vulnerability)
Disabling KPTI protections can be done by adding the lines below to your /etc/default/grub
file at GRUB_CMDLINE_LINUX_DEFAULT=""
pti=off spectre_v2=off l1tf=off nospec_store_bypass_disable no_stf_barrier
After modifying the grub
file, run the following command to update your configuration and reboot:
sudo update-grub