About the Motherboard and Daughtercard EEPROM on USRP Devices
Contents
Application Note Number
AN-309
Revision History
Date | Author | Details |
---|---|---|
2016-05-16 | Trip Humphries | Initial creation |
USRP EEPROM Settings & Recovery Guide
Some USRP products contain an EEPROM on the motherboard which is used to store information about the USRP. Currently, the N200/210, X300/310, B200/210, and E100 contain an on-board EEPROM. The EEPROM contains information about each USRP such as product code, revision number, USRP name, and IP address. The specific information stores on each USRP EEPROM is dependent on the USRP model.
Daughter boards also contain an EEPROM that contains identification information about the daughter board. UHD reads the daughter board ID to determine the model and revision (if applicable) of the daughter board. This information is used to properly configure the USRP and daughter board for proper function.
EEPROM Burn Utility
Disclaimer: Ettus Research accepts no liability for misuse of this utility. It can very easily cause irreversible damage if used incorrectly! Please contact Ettus support at support@ettus.com if you are unsure how to proceed.
A utility, usrp_burn_mb_eeprom, is included with UHD to read/write values on the various motherboards that contain an EEPROM. The utility is located in the UHD install directory at:
./uhd/utils/
The utility can be used with the USRP X300/310, N200/210, B200/210, and E100. In some cases, it is neceessary to use the utility to write custom user settings to the USRP, such as USRP name or IP address. In other cases, some EEPROM settings set by the factory may become corrupted and need to be restored. This section will cover basic usage of the usrp_burn_mb_eeprom utility, with USRP specific instructions covered in the sections below.
EEPROM settings can be read using the usrp_burn_mb_eeprom utility. All the EEPROM settings can be read at once using the 'read all' option:
./usrp_burn_mb_eeprom --args=<optional device args> --read-all
This will return the current contents in the EEPROM for the specified USRP. For example, if you want to read all the EEPROM contents for a USRP B210, the command would look like:
./usrp_burn_mb_eeprom --args="type=b200" --read-all
The EEPROM settings vary based on the specific USRP in use. The following sections document the EEPROM settings available for each USRP. Examples for each USRP with an EEPROM are also given.
X300/310 EEPROM
The EEPROM on the X300/310 stores useful information about the USRP so that UHD can set the proper settings based on model and revision. Some of these settings are user customizable. The table below outlines the values stored in the X300/310 EEPROM. Any entry that is designated "User Customizable?=No" can cause irreversible damage to the USRP and should only be altered by proper guidance from Ettus Support. For example, certain settings in the EEPROM could become corrupted and can be restored with the proper commands.
X300/310 EEPROM Setting: | User Customizable? | Description |
revision | No | Hardware Number |
revision_compat | No | Revision Number |
product | No | Product Code |
serial | No | Unique USRP Serial Number |
mac-addr0 | No | MAC Address (Port 0) |
mac-addr1 | No | MAC Address (Port 1) |
gateway | Yes | Network Gateway |
subnet0 | Yes | Subnet Mask |
subnet1 | Yes | Subnet Mask |
subnet2 | Yes | Subnet Mask |
subnet3 | Yes | Subnet Mask |
ip-addr0 | Yes | IP Address |
ip-addr1 | Yes | IP Address |
ip-addr2 | Yes | IP Address |
ip-addr3 | Yes | IP Address |
name | Yes | Custom USRP Name |
As an example, the EEPROM settings of an X310 with IP address 192.168.10.2 could be read-back with the following command:
./usrp_burn_mb_eeprom --args="addr=192.168.10.2,type=x300" --read-all
and the output would look like:
Fetching current settings from EEPROM... EEPROM ["revision"] is "4" EEPROM ["revision_compat"] is "2" EEPROM ["product"] is "30AD2D4" EEPROM ["mac-addr0"] is "xx:xx:xx:xx:xx:xx" EEPROM ["mac-addr1"] is "xx:xx:xx:xx:xx:xx" EEPROM ["gateway"] is "192.168.10.1" EEPROM ["ip-addr0"] is "192.168.10.2" EEPROM ["subnet0"] is "255.255.255.0" EEPROM ["ip-addr1"] is "192.168.20.2" EEPROM ["subnet1"] is "255.255.255.0" EEPROM ["ip-addr2"] is "192.168.10.3" EEPROM ["subnet2"] is "255.255.255.0" EEPROM ["ip-addr3"] is "192.168.40.2" EEPROM ["subnet3"] is "255.255.255.0" EEPROM ["serial"] is "30AF217" EEPROM ["name"] is ""
Determining X300/X310 Revision Number
It is useful in many cases to determine the revision number of your X300/X310. A part number sticker is located on the X300/310 motherboard. This sticker is located near the AUX-I/O connector and has the format 123456\<R>-\<XXX> where \<R> is a letter code that corresponds to the revision number. The photograph below highlights the location of the sticker:
Once the letter code has been determined use the table below to map the letter code to a revision number:
Letter | Revision # |
C | 3 |
D | 4 |
E | 5 |
F | 6 |
G | 7 |
H | 8 |