<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://kb.ettus.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=JamesHumphries</id>
		<title>Ettus Knowledge Base - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://kb.ettus.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=JamesHumphries"/>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/Special:Contributions/JamesHumphries"/>
		<updated>2026-07-29T12:47:19Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.26.2</generator>

	<entry>
		<id>https://kb.ettus.com/index.php?title=About_the_Motherboard_and_Daughtercard_EEPROM_on_USRP_Devices&amp;diff=2774</id>
		<title>About the Motherboard and Daughtercard EEPROM on USRP Devices</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=About_the_Motherboard_and_Daughtercard_EEPROM_on_USRP_Devices&amp;diff=2774"/>
				<updated>2016-06-10T15:22:03Z</updated>
		
		<summary type="html">&lt;p&gt;JamesHumphries: /* Restore X300/310 EEPROM Product Code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Application Note Number==&lt;br /&gt;
'''AN-309 '''&lt;br /&gt;
&lt;br /&gt;
==Revision History==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Date&lt;br /&gt;
!Author&lt;br /&gt;
!Details&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;| 2016-05-16  &lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;| Trip Humphries&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;| Initial creation&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=USRP EEPROM Settings &amp;amp; Recovery Guide=&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==EEPROM Burn Utility==&lt;br /&gt;
&lt;br /&gt;
'''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 [mailto:support@ettus.com support@ettus.com] if you are unsure how to proceed.'''&lt;br /&gt;
&lt;br /&gt;
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. The default folder is:&lt;br /&gt;
&lt;br /&gt;
 /usr/local/lib/uhd/utils/&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;lt;optional device args&amp;gt; --read-all&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;type=b200&amp;quot; --read-all &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=X300/310 EEPROM=&lt;br /&gt;
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 &amp;quot;User Customizable?=No&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''X300/310 EEPROM Setting:'''&lt;br /&gt;
|'''User Customizable?'''&lt;br /&gt;
|'''Description'''&lt;br /&gt;
|-&lt;br /&gt;
|revision&lt;br /&gt;
|No&lt;br /&gt;
|Hardware Number&lt;br /&gt;
|-&lt;br /&gt;
|revision_compat&lt;br /&gt;
|No&lt;br /&gt;
|Revision Number&lt;br /&gt;
|-&lt;br /&gt;
|product&lt;br /&gt;
|No&lt;br /&gt;
|Product Code&lt;br /&gt;
|-&lt;br /&gt;
|serial&lt;br /&gt;
|No&lt;br /&gt;
|Unique USRP Serial Number&lt;br /&gt;
|-&lt;br /&gt;
|mac-addr0&lt;br /&gt;
|No&lt;br /&gt;
|MAC Address (Port 0)&lt;br /&gt;
|-&lt;br /&gt;
|mac-addr1&lt;br /&gt;
|No&lt;br /&gt;
|MAC Address (Port 1)&lt;br /&gt;
|-&lt;br /&gt;
|gateway&lt;br /&gt;
|Yes&lt;br /&gt;
|Network Gateway&lt;br /&gt;
|-&lt;br /&gt;
|subnet0&lt;br /&gt;
|Yes&lt;br /&gt;
|Subnet Mask&lt;br /&gt;
|-&lt;br /&gt;
|subnet1&lt;br /&gt;
|Yes&lt;br /&gt;
|Subnet Mask&lt;br /&gt;
|-&lt;br /&gt;
|subnet2&lt;br /&gt;
|Yes&lt;br /&gt;
|Subnet Mask&lt;br /&gt;
|-&lt;br /&gt;
|subnet3&lt;br /&gt;
|Yes&lt;br /&gt;
|Subnet Mask&lt;br /&gt;
|-&lt;br /&gt;
|ip-addr0&lt;br /&gt;
|Yes&lt;br /&gt;
|IP Address&lt;br /&gt;
|-&lt;br /&gt;
|ip-addr1&lt;br /&gt;
|Yes&lt;br /&gt;
|IP Address&lt;br /&gt;
|-&lt;br /&gt;
|ip-addr2&lt;br /&gt;
|Yes&lt;br /&gt;
|IP Address&lt;br /&gt;
|-&lt;br /&gt;
|ip-addr3&lt;br /&gt;
|Yes&lt;br /&gt;
|IP Address&lt;br /&gt;
|-&lt;br /&gt;
|name&lt;br /&gt;
|Yes&lt;br /&gt;
|Custom USRP Name&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
As an example, the EEPROM settings of an X310 with IP address 192.168.10.2 could be read-back with the following command:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;addr=192.168.10.2,type=x300&amp;quot; --read-all&lt;br /&gt;
&lt;br /&gt;
and the output would look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fetching current settings from EEPROM...&lt;br /&gt;
	EEPROM [&amp;quot;revision&amp;quot;] is &amp;quot;4&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;revision_compat&amp;quot;] is &amp;quot;2&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;product&amp;quot;] is &amp;quot;30AD2D4&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;mac-addr0&amp;quot;] is &amp;quot;xx:xx:xx:xx:xx:xx&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;mac-addr1&amp;quot;] is &amp;quot;xx:xx:xx:xx:xx:xx&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;gateway&amp;quot;] is &amp;quot;192.168.10.1&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;ip-addr0&amp;quot;] is &amp;quot;192.168.10.2&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;subnet0&amp;quot;] is &amp;quot;255.255.255.0&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;ip-addr1&amp;quot;] is &amp;quot;192.168.20.2&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;subnet1&amp;quot;] is &amp;quot;255.255.255.0&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;ip-addr2&amp;quot;] is &amp;quot;192.168.10.3&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;subnet2&amp;quot;] is &amp;quot;255.255.255.0&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;ip-addr3&amp;quot;] is &amp;quot;192.168.40.2&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;subnet3&amp;quot;] is &amp;quot;255.255.255.0&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;serial&amp;quot;] is &amp;quot;30AF217&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;name&amp;quot;] is &amp;quot;&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Determining X300/X310 Revision Number==&lt;br /&gt;
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\&amp;lt;R&amp;gt;-\&amp;lt;XXX&amp;gt; where \&amp;lt;R&amp;gt; is a letter code that corresponds to the revision number. The photograph below highlights the location of the sticker:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-309-x3x0-rev-id.png|thumb|500px|center|The USRP X300/310 motherboard has a sticker that identifies the product and revision. The sticker is outlined in red.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once the letter code has been determined use the table below to map the letter code to a revision number:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''Letter'''&lt;br /&gt;
|'''Revision #'''&lt;br /&gt;
|-&lt;br /&gt;
|C&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|D&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|E&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|F&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|G&lt;br /&gt;
|7&lt;br /&gt;
|-&lt;br /&gt;
|H&lt;br /&gt;
|8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Restore X300/310 EEPROM Revision Code==&lt;br /&gt;
&lt;br /&gt;
A corrupted or missing revision code in the X300/310 EEPROM will be indicated by a UHD runtime error:&lt;br /&gt;
&lt;br /&gt;
 Error: RuntimeError: No revision compat detected. MB EEPROM must be reprogrammed!&lt;br /&gt;
&lt;br /&gt;
If this problem is encountered, the usrp_burn_mb_eeprom utility can be used to restore the X300/310 revision code in the EEPROM. First, the X300/X310 revision number must be determined. Once the revision number for your X300/310 is known, the usrp_burn_mb_eeprom utility can be used to restore the revision code to the EEPROM. The syntax is as follows:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;recover_mb_eeprom&amp;quot; --values=&amp;quot;revision=&amp;lt;#&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;#&amp;gt; is the revision number of your X300/310 to be written to the EEPROM. For example, to restore the revision number in EEPROM for a Rev. 6 X300 with an IP address of 192.168.10.2, the command would be:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;recover_mb_eeprom,addr=192.168.10.2&amp;quot; --values=&amp;quot;revision=6&amp;quot;&lt;br /&gt;
&lt;br /&gt;
After the utility has been run, power cycle the USRP and then run uhd_usrp_probe to ensure that the new revision number has been written to the EEPROM correctly. If you are unsure of how to accomplish these steps, please feel free to contact Ettus Support at [mailto:support@ettus.com support@ettus.com].&lt;br /&gt;
&lt;br /&gt;
==Restore X300/310 EEPROM Product Code==&lt;br /&gt;
&lt;br /&gt;
A corrupted product code in the X300/310 EEPROM will be indicated by a UHD warning:&lt;br /&gt;
&lt;br /&gt;
 UHD Warning: X300/X310 unknown product code in EEPROM: &amp;lt;###&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;###&amp;gt; is some numbered code that is unknown by UHD. If this problem is encountered, the usrp_burn_mb_eeprom utility can be used to write a new product code to the EEPROM. First, the X300/X310 revision number must be determined. Once the revision number has been determined, refer to the table below to find the product code for the X300/310:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''USRP'''&lt;br /&gt;
|'''Rev. 0-6'''&lt;br /&gt;
|'''Rev. 7-8'''&lt;br /&gt;
|-&lt;br /&gt;
|X300&lt;br /&gt;
|30518 (0x7736)&lt;br /&gt;
|30817 (0x7861)&lt;br /&gt;
|-&lt;br /&gt;
|X310&lt;br /&gt;
|30410 (0x76CA)&lt;br /&gt;
|30818 (0x7862)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Once the correct product code has been determined base on the X3x0 model and revision, the usrp_burn_mb_eeprom utility can be used to write the correct product code to the EEPROM. They syntax is as follows:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;recover_mb_eeprom&amp;quot; --values=&amp;quot;product=&amp;lt;###&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;###&amp;gt; is the product code to be written to the EEPROM. For example, on a Rev. 7 X300 with an IP address of 191.168.10.2, the command would be:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;recover_mb_eeprom,addr=192.168.10.2&amp;quot; --values=&amp;quot;product=30817&amp;quot;&lt;br /&gt;
&lt;br /&gt;
After the utility has been run, power cycle the USRP and then run uhd_usrp_probe to ensure that the new revision number has been written to the EEPROM correctly. If you are unsure of how to accomplish these steps, please feel free to contact Ettus Support at [mailto:support@ettus.com support@ettus.com].&lt;br /&gt;
&lt;br /&gt;
==National Instruments USRP RIO==&lt;br /&gt;
&lt;br /&gt;
The National Instruments branded X300/310 have unique product codes to identify the motherboard revision as well as the daughter-cards in the USRP. The product codes are listed below:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''Model (DB, BW, Rev.)'''&lt;br /&gt;
|'''Hex ID'''&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2940R (WBX, 40 MHz BW, Rev. 0-6)       &lt;br /&gt;
|0x772B&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2940R (WBX, 40 MHz BW, Rev. 7+)        &lt;br /&gt;
|0x7853&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2940R (WBX, 120 MHz BW, Rev. 0-6)      &lt;br /&gt;
|0x77FB&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2940R (WBX, 120 MHz BW, Rev. 7+)       &lt;br /&gt;
|0x785B&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2942R (SBX, 40 MHz BW, Rev. 0-6)       &lt;br /&gt;
|0x772C&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2942R (SBX, 40 MHz BW, Rev. 7+)        &lt;br /&gt;
|0x7854&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2942R (SBX, 120 MHz BW, Rev. 0-6)      &lt;br /&gt;
|0x77FC&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2942R (SBX, 120 MHz BW, Rev. 7+)       &lt;br /&gt;
|0x785C&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2943R (CBX, 40 MHz BW, Rev. 0-6)       &lt;br /&gt;
|0x772D&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2943R (CBX, 40 MHz BW, Rev. 7+)        &lt;br /&gt;
|0x7855&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2943R (CBX, 120 MHz BW, Rev. 0-6)      &lt;br /&gt;
|0x77FD&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2943R (CBX, 120 MHz BW, Rev. 7+)       &lt;br /&gt;
|0x785D&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2944R (UBX, 160 MHz BW, Rev. 0-6)      &lt;br /&gt;
|0x772E&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2944R (UBX, 160 MHz BW, Rev. 7+)       &lt;br /&gt;
|0x7856&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2950R (GPS, WBX, 40 MHz BW, Rev. 0-6)  &lt;br /&gt;
|0x772F&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2950R (GPS, WBX, 40 MHz BW, Rev. 7+)   &lt;br /&gt;
|0x7857&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2950R (GPS, WBX, 120 MHz BW, Rev. 0-6) &lt;br /&gt;
|0x77FE&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2950R (GPS, WBX, 120 MHz BW, Rev. 7+   &lt;br /&gt;
|0x785E&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2952R (GPS, SBX, 40 MHz BW, Rev. 0-6)  &lt;br /&gt;
|0x7730&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2952R (GPS, SBX, 40 MHz BW, Rev. 7+)   &lt;br /&gt;
|0x7858&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2952R (GPS, SBX, 120 MHz BW, Rev. 0-6) &lt;br /&gt;
|0x77FF&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2952R (GPS, SBX, 120 MHz BW, Rev. 7+   &lt;br /&gt;
|0x785F&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2953R (GPS, CBX, 40 MHz BW, Rev. 0-6)  &lt;br /&gt;
|0x7731&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2953R (GPS, CBX, 40 MHz BW, Rev. 7+)   &lt;br /&gt;
|0x7859&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2953R (GPS, CBX, 120 MHz BW, Rev. 0-6) &lt;br /&gt;
|0x7800&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2953R (GPS, CBX, 120 MHz BW, Rev. 7+)  &lt;br /&gt;
|0x7860&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2954R (GPS, UBX, 160 MHz BW, Rev. 0-6) &lt;br /&gt;
|0x7732&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2954R (GPS, UBX, 160 MHz BW, Rev. 7+)  &lt;br /&gt;
|0x785A&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=N200/210 EEPROM=&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''N200/210 EEPROM Setting'''&lt;br /&gt;
|'''User Customizable?'''&lt;br /&gt;
|'''Description'''&lt;br /&gt;
|-&lt;br /&gt;
|hardware&lt;br /&gt;
|No&lt;br /&gt;
|Hardware Number&lt;br /&gt;
|-&lt;br /&gt;
|revision&lt;br /&gt;
|No&lt;br /&gt;
|Revision Number&lt;br /&gt;
|-&lt;br /&gt;
|product&lt;br /&gt;
|No&lt;br /&gt;
|Product Code&lt;br /&gt;
|-&lt;br /&gt;
|mac-addr&lt;br /&gt;
|No&lt;br /&gt;
|MAC Address&lt;br /&gt;
|-&lt;br /&gt;
|ip-addr&lt;br /&gt;
|Yes&lt;br /&gt;
|IP Address&lt;br /&gt;
|-&lt;br /&gt;
|subnet&lt;br /&gt;
|Yes&lt;br /&gt;
|Subnetwork&lt;br /&gt;
|-&lt;br /&gt;
|gateway&lt;br /&gt;
|Yes&lt;br /&gt;
|Network Gateway&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The N200/210 do not store the product codes in the motherboard EEPROM. The &amp;quot;hardware&amp;quot; field is programmed at the factory but is not referenced by UHD. Instead, the revision field is used to determine the N200/210 hardware in use. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''USRP'''&lt;br /&gt;
|'''Motherboard Product ID'''&lt;br /&gt;
|-&lt;br /&gt;
|N200&lt;br /&gt;
|0x0A00&lt;br /&gt;
|-&lt;br /&gt;
|N210&lt;br /&gt;
|0x0A01&lt;br /&gt;
|-&lt;br /&gt;
|N200 - R4&lt;br /&gt;
|0x0A10&lt;br /&gt;
|-&lt;br /&gt;
|N210 - R4&lt;br /&gt;
|0x0A11&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=B200/210 and B200mini EEPROM=&lt;br /&gt;
&lt;br /&gt;
The USRP B200 and B210 EEPROM is used to store certain information about each board. The USB PID (Product ID) and VID (Vendor ID) are stored in the EEPROM as well as serial number, product code, hardware revision, and USRP name for each B200/210. A table of these settings and whether or not the setting is user customizable is given below:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''B200/210 EEPROM Setting'''&lt;br /&gt;
|'''User Customizable?'''&lt;br /&gt;
|'''Description'''&lt;br /&gt;
|-&lt;br /&gt;
|revision&lt;br /&gt;
|No&lt;br /&gt;
|Revision Number&lt;br /&gt;
|-&lt;br /&gt;
|product&lt;br /&gt;
|No&lt;br /&gt;
|Product Code&lt;br /&gt;
|-&lt;br /&gt;
|serial&lt;br /&gt;
|No&lt;br /&gt;
|Unique Serial Number&lt;br /&gt;
|-&lt;br /&gt;
|name&lt;br /&gt;
|Yes&lt;br /&gt;
|Custom USRP Name&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To read the current EEPROM values from the USRP, use the usrp_burn_mb_eeprom utility:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;type=b200&amp;quot; --read-all&lt;br /&gt;
&lt;br /&gt;
This will read the settings and print them to the terminal. A sample output is shown below for a USRP B210:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fetching current settings from EEPROM...&lt;br /&gt;
	EEPROM [&amp;quot;revision&amp;quot;] is &amp;quot;4&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;product&amp;quot;] is &amp;quot;2&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;serial&amp;quot;] is &amp;quot;30AD2D4&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;name&amp;quot;] is &amp;quot;MyB210&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If desired, a B200/210 could be given a custom name with the following command:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;type=b200&amp;quot; --values=&amp;quot;name=Lab_B210&amp;quot;&lt;br /&gt;
&lt;br /&gt;
After the command has been run, the device must be power-cycled for the new EEPROM setting to take effect. Reading the updated EEPROM values yields:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fetching current settings from EEPROM...&lt;br /&gt;
	EEPROM [&amp;quot;revision&amp;quot;] is &amp;quot;4&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;product&amp;quot;] is &amp;quot;2&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;serial&amp;quot;] is &amp;quot;30AD2D4&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;name&amp;quot;] is &amp;quot;Lab_B210&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==USB VID/PID==&lt;br /&gt;
&lt;br /&gt;
The USB vendor identification (VID) and product identification (PID) numbers can be written to the USRP B200/210 using the &amp;quot;b2xx_fx3_utils&amp;quot; utility that is included with UHD. To reset the VID and PID, the command would be:&lt;br /&gt;
&lt;br /&gt;
 ./b2xx_fx3_utils --init-device --write-vid 0x2500 --write-pid -0x0020&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''USRP'''&lt;br /&gt;
|'''USB PID'''&lt;br /&gt;
|-&lt;br /&gt;
|B200&lt;br /&gt;
|0x0020&lt;br /&gt;
|-&lt;br /&gt;
|B210&lt;br /&gt;
|0x0020&lt;br /&gt;
|-&lt;br /&gt;
|B200 (NI)&lt;br /&gt;
|0x7813&lt;br /&gt;
|-&lt;br /&gt;
|B210 (NI)&lt;br /&gt;
|0x7814&lt;br /&gt;
|-&lt;br /&gt;
|B200mini&lt;br /&gt;
|0x0021&lt;br /&gt;
|-&lt;br /&gt;
|B205mini&lt;br /&gt;
|0x0022&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The VID is the same for all B2x0 variants, 0x2500.&lt;br /&gt;
&lt;br /&gt;
=Daughtercard IDs=&lt;br /&gt;
&lt;br /&gt;
Below is a comprehensive list of the daughtercard hex ID's.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''Name'''&lt;br /&gt;
|'''Hex ID'''&lt;br /&gt;
|-&lt;br /&gt;
|Basic Tx		    &lt;br /&gt;
| 0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Basic Rx   		    &lt;br /&gt;
| 0x0001&lt;br /&gt;
|-&lt;br /&gt;
|DBS Rx      		&lt;br /&gt;
| 0x0002&lt;br /&gt;
|-&lt;br /&gt;
|TV Rx       		&lt;br /&gt;
| 0x0003&lt;br /&gt;
|-&lt;br /&gt;
|Flex 400 Rx			&lt;br /&gt;
| 0x0004&lt;br /&gt;
|-&lt;br /&gt;
|Flex 900 Rx			&lt;br /&gt;
| 0x0005&lt;br /&gt;
|-&lt;br /&gt;
|Flex 1200 Rx		&lt;br /&gt;
| 0x0006&lt;br /&gt;
|-&lt;br /&gt;
|Flex 2400 Rx		&lt;br /&gt;
| 0x0007&lt;br /&gt;
|-&lt;br /&gt;
|Flex 400 Tx			&lt;br /&gt;
| 0x0008&lt;br /&gt;
|-&lt;br /&gt;
|Flex 900 Tx			&lt;br /&gt;
| 0x0009&lt;br /&gt;
|-&lt;br /&gt;
|Flex 1200 Tx		&lt;br /&gt;
| 0x000a&lt;br /&gt;
|-&lt;br /&gt;
|Flex 2400 Tx		&lt;br /&gt;
| 0x000b&lt;br /&gt;
|-&lt;br /&gt;
|TV Rx Rev 2			&lt;br /&gt;
| 0x000c&lt;br /&gt;
|-&lt;br /&gt;
|DBS Rx ClkMod		&lt;br /&gt;
| 0x000d&lt;br /&gt;
|-&lt;br /&gt;
|LF Tx				&lt;br /&gt;
| 0x000e&lt;br /&gt;
|-&lt;br /&gt;
|LF Rx				&lt;br /&gt;
| 0x000f&lt;br /&gt;
|-&lt;br /&gt;
|DBSRX2				&lt;br /&gt;
| 0x012&lt;br /&gt;
|-&lt;br /&gt;
|Flex 400 Rx MIMO A	&lt;br /&gt;
| 0x0014&lt;br /&gt;
|-&lt;br /&gt;
|Flex 900 Rx MIMO A	&lt;br /&gt;
| 0x0015&lt;br /&gt;
|-&lt;br /&gt;
|Flex 1200 Rx MIMO A &lt;br /&gt;
| 0x0016&lt;br /&gt;
|-&lt;br /&gt;
|Flex 2400 Rx MIMO A &lt;br /&gt;
| 0x0017&lt;br /&gt;
|-&lt;br /&gt;
|Flex 400 Tx MIMO A  &lt;br /&gt;
| 0x0018&lt;br /&gt;
|-&lt;br /&gt;
|Flex 900 Tx MIMO A	&lt;br /&gt;
| 0x0019&lt;br /&gt;
|-&lt;br /&gt;
|Flex 1200 Tx MIMO A &lt;br /&gt;
| 0x001a&lt;br /&gt;
|-&lt;br /&gt;
|Flex 2400 Tx MIMO A &lt;br /&gt;
| 0x001b&lt;br /&gt;
|-&lt;br /&gt;
|Flex 400 Rx MIMO B	&lt;br /&gt;
| 0x0024&lt;br /&gt;
|-&lt;br /&gt;
|Flex 900 Rx MIMO B  &lt;br /&gt;
| 0x0025&lt;br /&gt;
|-&lt;br /&gt;
|Flex 1200 Rx MIMO B &lt;br /&gt;
| 0x0026&lt;br /&gt;
|-&lt;br /&gt;
|Flex 2400 Rx MIMO B &lt;br /&gt;
| 0x0027&lt;br /&gt;
|-&lt;br /&gt;
|Flex 400 Tx MIMO B	&lt;br /&gt;
| 0x0028&lt;br /&gt;
|-&lt;br /&gt;
|Flex 900 Tx MIMO B	&lt;br /&gt;
| 0x0029&lt;br /&gt;
|-&lt;br /&gt;
|Flex 1200 Tx MIMO B	&lt;br /&gt;
| 0x002a&lt;br /&gt;
|-&lt;br /&gt;
|Flex 2400 Tx MIMO B &lt;br /&gt;
| 0x002b&lt;br /&gt;
|-&lt;br /&gt;
|Flex 2200 Rx MIMO B &lt;br /&gt;
| 0x002c&lt;br /&gt;
|-&lt;br /&gt;
|Flex 2200 Tx MIMO B	&lt;br /&gt;
| 0x002d&lt;br /&gt;
|-&lt;br /&gt;
|Flex 1800 Rx		&lt;br /&gt;
| 0x0030&lt;br /&gt;
|-&lt;br /&gt;
|Flex 1800 Tx		&lt;br /&gt;
| 0x0031&lt;br /&gt;
|-&lt;br /&gt;
|Flex 1800 Rx MIMO A	&lt;br /&gt;
| 0x0032&lt;br /&gt;
|-&lt;br /&gt;
|Flex 1800 Tx MIMO A	&lt;br /&gt;
| 0x0033&lt;br /&gt;
|-&lt;br /&gt;
|Flex 1800 Rx MIMO B &lt;br /&gt;
| 0x0034&lt;br /&gt;
|-&lt;br /&gt;
|Flex 1800 Tx MIMO B &lt;br /&gt;
| 0x0035&lt;br /&gt;
|-&lt;br /&gt;
|TV Rx Rev 3			&lt;br /&gt;
| 0x0040&lt;br /&gt;
|-&lt;br /&gt;
|DTT754				&lt;br /&gt;
| 0x0041&lt;br /&gt;
|-&lt;br /&gt;
|DTT768				&lt;br /&gt;
| 0x0042&lt;br /&gt;
|-&lt;br /&gt;
|TV Rx MIMO			&lt;br /&gt;
| 0x0043&lt;br /&gt;
|-&lt;br /&gt;
|TV Rx Rev 2 MIMO	&lt;br /&gt;
| 0x0044&lt;br /&gt;
|-&lt;br /&gt;
|TV Rx Rev 3 MIMO	&lt;br /&gt;
| 0x0045&lt;br /&gt;
|-&lt;br /&gt;
|TVRX2				&lt;br /&gt;
| 0x0046&lt;br /&gt;
|-&lt;br /&gt;
|WCDMA US			&lt;br /&gt;
| 0x004d&lt;br /&gt;
|-&lt;br /&gt;
|WCDMA EU			&lt;br /&gt;
| 0x004e&lt;br /&gt;
|-&lt;br /&gt;
|SIMPLE GDB			&lt;br /&gt;
| 0x004f&lt;br /&gt;
|-&lt;br /&gt;
|WBX LO TX			&lt;br /&gt;
| 0x0050&lt;br /&gt;
|-&lt;br /&gt;
|WBX LO RX			&lt;br /&gt;
| 0x0051&lt;br /&gt;
|-&lt;br /&gt;
|WBX NG TX			&lt;br /&gt;
| 0x0052&lt;br /&gt;
|-&lt;br /&gt;
|WBX NG RX			&lt;br /&gt;
| 0x0053&lt;br /&gt;
|-&lt;br /&gt;
|SBX v3 RX			&lt;br /&gt;
| 0x0054&lt;br /&gt;
|-&lt;br /&gt;
|SBX v3 TX			&lt;br /&gt;
| 0x0055&lt;br /&gt;
|-&lt;br /&gt;
|WBX v3 TX			&lt;br /&gt;
| 0x0056&lt;br /&gt;
|-&lt;br /&gt;
|WBX v3 RX			&lt;br /&gt;
| 0x0057&lt;br /&gt;
|-&lt;br /&gt;
|XCVR2450 - No Div	&lt;br /&gt;
| 0x0059&lt;br /&gt;
|-&lt;br /&gt;
|XCVR2450 TX			&lt;br /&gt;
| 0x0060&lt;br /&gt;
|-&lt;br /&gt;
|XCVR2450 RX			&lt;br /&gt;
| 0x0061&lt;br /&gt;
|-&lt;br /&gt;
|WBX v4 TX			&lt;br /&gt;
| 0x0062&lt;br /&gt;
|-&lt;br /&gt;
|WBX v4 RX			&lt;br /&gt;
| 0x0063&lt;br /&gt;
|-&lt;br /&gt;
|SBX v4 TX			&lt;br /&gt;
| 0x0064&lt;br /&gt;
|-&lt;br /&gt;
|SBX v4 RX			&lt;br /&gt;
| 0x0065&lt;br /&gt;
|-&lt;br /&gt;
|CBX v1 TX			&lt;br /&gt;
| 0x0066&lt;br /&gt;
|-&lt;br /&gt;
|CBX v1 RX			&lt;br /&gt;
| 0x0067&lt;br /&gt;
|-&lt;br /&gt;
|SBX v5 TX			&lt;br /&gt;
| 0x0068&lt;br /&gt;
|-&lt;br /&gt;
|SBX v5 RX			&lt;br /&gt;
| 0x0069&lt;br /&gt;
|-&lt;br /&gt;
|UBX-Prototype v3 TX	&lt;br /&gt;
| 0x0073&lt;br /&gt;
|-&lt;br /&gt;
|UBX-Prototype v3 RX &lt;br /&gt;
| 0x0074&lt;br /&gt;
|-&lt;br /&gt;
|UBX-Prototype v4 TX &lt;br /&gt;
| 0x0075&lt;br /&gt;
|-&lt;br /&gt;
|UBX-Prototype v4 RX &lt;br /&gt;
| 0x0076&lt;br /&gt;
|-&lt;br /&gt;
|UBX v1 TX			&lt;br /&gt;
| 0x0077&lt;br /&gt;
|-&lt;br /&gt;
|UBX v1 RX			&lt;br /&gt;
| 0x0078&lt;br /&gt;
|-&lt;br /&gt;
|UBX-160 v1 TX		&lt;br /&gt;
| 0x0079&lt;br /&gt;
|-&lt;br /&gt;
|UBX-160 v1 RX		&lt;br /&gt;
| 0x007a&lt;br /&gt;
|-&lt;br /&gt;
|Bitshark RX			&lt;br /&gt;
| 0x0070&lt;br /&gt;
|-&lt;br /&gt;
|B150 v1 TX			&lt;br /&gt;
| 0x0071&lt;br /&gt;
|-&lt;br /&gt;
|B150 v1 RX			&lt;br /&gt;
| 0x0072&lt;br /&gt;
|-&lt;br /&gt;
|WBX-120 v1 TX		&lt;br /&gt;
| 0x0080&lt;br /&gt;
|-&lt;br /&gt;
|WBX-120 v1 RX		&lt;br /&gt;
| 0x0081&lt;br /&gt;
|-&lt;br /&gt;
|SBX-120 v1 TX		&lt;br /&gt;
| 0x0082&lt;br /&gt;
|-&lt;br /&gt;
|SBX-120 v1 RX		&lt;br /&gt;
| 0x0083&lt;br /&gt;
|-&lt;br /&gt;
|CBX-120 v1 TX		&lt;br /&gt;
| 0x0084&lt;br /&gt;
|-&lt;br /&gt;
|CBX-120 v1 RX		&lt;br /&gt;
| 0x0085&lt;br /&gt;
|-&lt;br /&gt;
|EvilTwin RX1		&lt;br /&gt;
| 0x0090&lt;br /&gt;
|-&lt;br /&gt;
|EvilTwin RX2		&lt;br /&gt;
| 0x0091&lt;br /&gt;
|-&lt;br /&gt;
|E300 AD3964 DB RevB	&lt;br /&gt;
| 0x0100&lt;br /&gt;
|-&lt;br /&gt;
|E310 AD9361 DB RevB	&lt;br /&gt;
| 0x0110&lt;br /&gt;
|-&lt;br /&gt;
|E300 AD9364 DB RevC	&lt;br /&gt;
| 0x0101&lt;br /&gt;
|-&lt;br /&gt;
|E310 AD9361 DB RevC	&lt;br /&gt;
| 0x0111&lt;br /&gt;
|-&lt;br /&gt;
|Unknown Tx			&lt;br /&gt;
| 0xfff0&lt;br /&gt;
|-&lt;br /&gt;
|Unknown Rx			&lt;br /&gt;
| 0xfff1&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Motherboard IDs=&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''Name'''&lt;br /&gt;
|'''Hex ID'''&lt;br /&gt;
|-&lt;br /&gt;
|B200&lt;br /&gt;
|0x7737&lt;br /&gt;
|-&lt;br /&gt;
|B210&lt;br /&gt;
|0x7738&lt;br /&gt;
|-&lt;br /&gt;
|B200mini&lt;br /&gt;
|0x7739&lt;br /&gt;
|-&lt;br /&gt;
|B205mini&lt;br /&gt;
|0x773a&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Application Notes]]&lt;/div&gt;</summary>
		<author><name>JamesHumphries</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=About_the_Motherboard_and_Daughtercard_EEPROM_on_USRP_Devices&amp;diff=2536</id>
		<title>About the Motherboard and Daughtercard EEPROM on USRP Devices</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=About_the_Motherboard_and_Daughtercard_EEPROM_on_USRP_Devices&amp;diff=2536"/>
				<updated>2016-05-16T20:53:42Z</updated>
		
		<summary type="html">&lt;p&gt;JamesHumphries: /* EEPROM Burn Utility */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Application Note Number==&lt;br /&gt;
'''AN-309 '''&lt;br /&gt;
&lt;br /&gt;
==Revision History==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Date&lt;br /&gt;
!Author&lt;br /&gt;
!Details&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| 2016-05-16  &lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| Trip Humphries&lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| Initial creation&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=USRP EEPROM Settings &amp;amp; Recovery Guide=&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==EEPROM Burn Utility==&lt;br /&gt;
&lt;br /&gt;
'''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 [mailto:support@ettus.com support@ettus.com] if you are unsure how to proceed.'''&lt;br /&gt;
&lt;br /&gt;
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. The default folder is:&lt;br /&gt;
&lt;br /&gt;
 /usr/local/lib/uhd/utils/&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;lt;optional device args&amp;gt; --read-all&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;type=b200&amp;quot; --read-all &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=X300/310 EEPROM=&lt;br /&gt;
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 &amp;quot;User Customizable?=No&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''X300/310 EEPROM Setting:'''&lt;br /&gt;
|'''User Customizable?'''&lt;br /&gt;
|'''Description'''&lt;br /&gt;
|-&lt;br /&gt;
|revision&lt;br /&gt;
|No&lt;br /&gt;
|Hardware Number&lt;br /&gt;
|-&lt;br /&gt;
|revision_compat&lt;br /&gt;
|No&lt;br /&gt;
|Revision Number&lt;br /&gt;
|-&lt;br /&gt;
|product&lt;br /&gt;
|No&lt;br /&gt;
|Product Code&lt;br /&gt;
|-&lt;br /&gt;
|serial&lt;br /&gt;
|No&lt;br /&gt;
|Unique USRP Serial Number&lt;br /&gt;
|-&lt;br /&gt;
|mac-addr0&lt;br /&gt;
|No&lt;br /&gt;
|MAC Address (Port 0)&lt;br /&gt;
|-&lt;br /&gt;
|mac-addr1&lt;br /&gt;
|No&lt;br /&gt;
|MAC Address (Port 1)&lt;br /&gt;
|-&lt;br /&gt;
|gateway&lt;br /&gt;
|Yes&lt;br /&gt;
|Network Gateway&lt;br /&gt;
|-&lt;br /&gt;
|subnet0&lt;br /&gt;
|Yes&lt;br /&gt;
|Subnet Mask&lt;br /&gt;
|-&lt;br /&gt;
|subnet1&lt;br /&gt;
|Yes&lt;br /&gt;
|Subnet Mask&lt;br /&gt;
|-&lt;br /&gt;
|subnet2&lt;br /&gt;
|Yes&lt;br /&gt;
|Subnet Mask&lt;br /&gt;
|-&lt;br /&gt;
|subnet3&lt;br /&gt;
|Yes&lt;br /&gt;
|Subnet Mask&lt;br /&gt;
|-&lt;br /&gt;
|ip-addr0&lt;br /&gt;
|Yes&lt;br /&gt;
|IP Address&lt;br /&gt;
|-&lt;br /&gt;
|ip-addr1&lt;br /&gt;
|Yes&lt;br /&gt;
|IP Address&lt;br /&gt;
|-&lt;br /&gt;
|ip-addr2&lt;br /&gt;
|Yes&lt;br /&gt;
|IP Address&lt;br /&gt;
|-&lt;br /&gt;
|ip-addr3&lt;br /&gt;
|Yes&lt;br /&gt;
|IP Address&lt;br /&gt;
|-&lt;br /&gt;
|name&lt;br /&gt;
|Yes&lt;br /&gt;
|Custom USRP Name&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
As an example, the EEPROM settings of an X310 with IP address 192.168.10.2 could be read-back with the following command:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;addr=192.168.10.2,type=x300&amp;quot; --read-all&lt;br /&gt;
&lt;br /&gt;
and the output would look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fetching current settings from EEPROM...&lt;br /&gt;
	EEPROM [&amp;quot;revision&amp;quot;] is &amp;quot;4&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;revision_compat&amp;quot;] is &amp;quot;2&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;product&amp;quot;] is &amp;quot;30AD2D4&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;mac-addr0&amp;quot;] is &amp;quot;xx:xx:xx:xx:xx:xx&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;mac-addr1&amp;quot;] is &amp;quot;xx:xx:xx:xx:xx:xx&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;gateway&amp;quot;] is &amp;quot;192.168.10.1&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;ip-addr0&amp;quot;] is &amp;quot;192.168.10.2&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;subnet0&amp;quot;] is &amp;quot;255.255.255.0&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;ip-addr1&amp;quot;] is &amp;quot;192.168.20.2&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;subnet1&amp;quot;] is &amp;quot;255.255.255.0&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;ip-addr2&amp;quot;] is &amp;quot;192.168.10.3&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;subnet2&amp;quot;] is &amp;quot;255.255.255.0&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;ip-addr3&amp;quot;] is &amp;quot;192.168.40.2&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;subnet3&amp;quot;] is &amp;quot;255.255.255.0&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;serial&amp;quot;] is &amp;quot;30AF217&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;name&amp;quot;] is &amp;quot;&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Determining X300/X310 Revision Number==&lt;br /&gt;
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\&amp;lt;R&amp;gt;-\&amp;lt;XXX&amp;gt; where \&amp;lt;R&amp;gt; is a letter code that corresponds to the revision number. The photograph below highlights the location of the sticker:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-309-x3x0-rev-id.png|thumb|500px|center|The USRP X300/310 motherboard has a sticker that identifies the product and revision. The sticker is outlined in red.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once the letter code has been determined use the table below to map the letter code to a revision number:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''Letter'''&lt;br /&gt;
|'''Revision #'''&lt;br /&gt;
|-&lt;br /&gt;
|C&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|D&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|E&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|F&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|G&lt;br /&gt;
|7&lt;br /&gt;
|-&lt;br /&gt;
|H&lt;br /&gt;
|8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Restore X300/310 EEPROM Revision Code==&lt;br /&gt;
&lt;br /&gt;
A corrupted or missing revision code in the X300/310 EEPROM will be indicated by a UHD runtime error:&lt;br /&gt;
&lt;br /&gt;
 Error: RuntimeError: No revision compat detected. MB EEPROM must be reprogrammed!&lt;br /&gt;
&lt;br /&gt;
If this problem is encountered, the usrp_burn_mb_eeprom utility can be used to restore the X300/310 revision code in the EEPROM. First, the X300/X310 revision number must be determined. Once the revision number for your X300/310 is known, the usrp_burn_mb_eeprom utility can be used to restore the revision code to the EEPROM. The syntax is as follows:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;recover_mb_eeprom&amp;quot; --values=&amp;quot;revision=&amp;lt;#&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;#&amp;gt; is the revision number of your X300/310 to be written to the EEPROM. For example, to restore the revision number in EEPROM for a Rev. 6 X300 with an IP address of 192.168.10.2, the command would be:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;recover_mb_eeprom,addr=192.168.10.2&amp;quot; --values=&amp;quot;revision=6&amp;quot;&lt;br /&gt;
&lt;br /&gt;
After the utility has been run, power cycle the USRP and then run uhd_usrp_probe to ensure that the new revision number has been written to the EEPROM correctly. If you are unsure of how to accomplish these steps, please feel free to contact Ettus Support at [mailto:support@ettus.com support@ettus.com].&lt;br /&gt;
&lt;br /&gt;
==Restore X300/310 EEPROM Product Code==&lt;br /&gt;
&lt;br /&gt;
A corrupted product code in the X300/310 EEPROM will be indicated by a UHD warning:&lt;br /&gt;
&lt;br /&gt;
 UHD Warning: X300/X310 unknown product code in EEPROM: &amp;lt;###&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;###&amp;gt; is some numbered code that is unknown by UHD. If this problem is encountered, the usrp_burn_mb_eeprom utility can be used to write a new product code to the EEPROM. First, the X300/X310 revision number must be determined. Once the revision number has been determined, refer to the table below to find the product code for the X300/310:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''USRP'''&lt;br /&gt;
|'''Rev. 0-6'''&lt;br /&gt;
|'''Rev. 7-8'''&lt;br /&gt;
|-&lt;br /&gt;
|X300&lt;br /&gt;
|30518 (0x7763)&lt;br /&gt;
|30817 (0x7861)&lt;br /&gt;
|-&lt;br /&gt;
|X310&lt;br /&gt;
|30410 (0x76CA)&lt;br /&gt;
|30818 (0x7862)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Once the correct product code has been determined base on the X3x0 model and revision, the usrp_burn_mb_eeprom utility can be used to write the correct product code to the EEPROM. They syntax is as follows:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;recover_mb_eeprom&amp;quot; --values=&amp;quot;product=&amp;lt;###&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;###&amp;gt; is the product code to be written to the EEPROM. For example, on a Rev. 7 X300 with an IP address of 191.168.10.2, the command would be:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;recover_mb_eeprom,addr=192.168.10.2&amp;quot; --values=&amp;quot;product=30817&amp;quot;&lt;br /&gt;
&lt;br /&gt;
After the utility has been run, power cycle the USRP and then run uhd_usrp_probe to ensure that the new revision number has been written to the EEPROM correctly. If you are unsure of how to accomplish these steps, please feel free to contact Ettus Support at [mailto:support@ettus.com support@ettus.com].&lt;br /&gt;
&lt;br /&gt;
==National Instruments USRP RIO==&lt;br /&gt;
&lt;br /&gt;
The National Instruments branded X300/310 have unique product codes to identify the motherboard revision as well as the daughter-cards in the USRP. The product codes are listed below:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''Model (DB, BW, Rev.)'''&lt;br /&gt;
|'''Hex ID'''&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2940R (WBX, 40 MHz BW, Rev. 0-6)       &lt;br /&gt;
|0x772B&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2940R (WBX, 40 MHz BW, Rev. 7+)        &lt;br /&gt;
|0x7853&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2940R (WBX, 120 MHz BW, Rev. 0-6)      &lt;br /&gt;
|0x77FB&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2940R (WBX, 120 MHz BW, Rev. 7+)       &lt;br /&gt;
|0x785B&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2942R (SBX, 40 MHz BW, Rev. 0-6)       &lt;br /&gt;
|0x772C&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2942R (SBX, 40 MHz BW, Rev. 7+)        &lt;br /&gt;
|0x7854&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2942R (SBX, 120 MHz BW, Rev. 0-6)      &lt;br /&gt;
|0x77FC&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2942R (SBX, 120 MHz BW, Rev. 7+)       &lt;br /&gt;
|0x785C&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2943R (CBX, 40 MHz BW, Rev. 0-6)       &lt;br /&gt;
|0x772D&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2943R (CBX, 40 MHz BW, Rev. 7+)        &lt;br /&gt;
|0x7855&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2943R (CBX, 120 MHz BW, Rev. 0-6)      &lt;br /&gt;
|0x77FD&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2943R (CBX, 120 MHz BW, Rev. 7+)       &lt;br /&gt;
|0x785D&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2944R (UBX, 160 MHz BW, Rev. 0-6)      &lt;br /&gt;
|0x772E&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2944R (UBX, 160 MHz BW, Rev. 7+)       &lt;br /&gt;
|0x7856&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2950R (GPS, WBX, 40 MHz BW, Rev. 0-6)  &lt;br /&gt;
|0x772F&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2950R (GPS, WBX, 40 MHz BW, Rev. 7+)   &lt;br /&gt;
|0x7857&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2950R (GPS, WBX, 120 MHz BW, Rev. 0-6) &lt;br /&gt;
|0x77FE&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2950R (GPS, WBX, 120 MHz BW, Rev. 7+   &lt;br /&gt;
|0x785E&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2952R (GPS, SBX, 40 MHz BW, Rev. 0-6)  &lt;br /&gt;
|0x7730&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2952R (GPS, SBX, 40 MHz BW, Rev. 7+)   &lt;br /&gt;
|0x7858&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2952R (GPS, SBX, 120 MHz BW, Rev. 0-6) &lt;br /&gt;
|0x77FF&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2952R (GPS, SBX, 120 MHz BW, Rev. 7+   &lt;br /&gt;
|0x785F&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2953R (GPS, CBX, 40 MHz BW, Rev. 0-6)  &lt;br /&gt;
|0x7731&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2953R (GPS, CBX, 40 MHz BW, Rev. 7+)   &lt;br /&gt;
|0x7859&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2953R (GPS, CBX, 120 MHz BW, Rev. 0-6) &lt;br /&gt;
|0x7800&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2953R (GPS, CBX, 120 MHz BW, Rev. 7+)  &lt;br /&gt;
|0x7860&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2954R (GPS, UBX, 160 MHz BW, Rev. 0-6) &lt;br /&gt;
|0x7732&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2954R (GPS, UBX, 160 MHz BW, Rev. 7+)  &lt;br /&gt;
|0x785A&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=N200/210 EEPROM=&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''N200/210 EEPROM Setting'''&lt;br /&gt;
|'''User Customizable?'''&lt;br /&gt;
|'''Description'''&lt;br /&gt;
|-&lt;br /&gt;
|hardware&lt;br /&gt;
|No&lt;br /&gt;
|Hardware Number&lt;br /&gt;
|-&lt;br /&gt;
|revision&lt;br /&gt;
|No&lt;br /&gt;
|Revision Number&lt;br /&gt;
|-&lt;br /&gt;
|product&lt;br /&gt;
|No&lt;br /&gt;
|Product Code&lt;br /&gt;
|-&lt;br /&gt;
|mac-addr&lt;br /&gt;
|No&lt;br /&gt;
|MAC Address&lt;br /&gt;
|-&lt;br /&gt;
|ip-addr&lt;br /&gt;
|Yes&lt;br /&gt;
|IP Address&lt;br /&gt;
|-&lt;br /&gt;
|subnet&lt;br /&gt;
|Yes&lt;br /&gt;
|Subnetwork&lt;br /&gt;
|-&lt;br /&gt;
|gateway&lt;br /&gt;
|Yes&lt;br /&gt;
|Network Gateway&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The N200/210 do not store the product codes in the motherboard EEPROM. The &amp;quot;hardware&amp;quot; field is programmed at the factory but is not referenced by UHD. Instead, the revision field is used to determine the N200/210 hardware in use. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''USRP'''&lt;br /&gt;
|'''Motherboard Product ID'''&lt;br /&gt;
|-&lt;br /&gt;
|N200&lt;br /&gt;
|0x0A00&lt;br /&gt;
|-&lt;br /&gt;
|N210&lt;br /&gt;
|0x0A01&lt;br /&gt;
|-&lt;br /&gt;
|N200 - R4&lt;br /&gt;
|0x0A10&lt;br /&gt;
|-&lt;br /&gt;
|N210 - R4&lt;br /&gt;
|0x0A11&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=B200/210 and B200mini EEPROM=&lt;br /&gt;
&lt;br /&gt;
The USRP B200 and B210 EEPROM is used to store certain information about each board. The USB PID (Product ID) and VID (Vendor ID) are stored in the EEPROM as well as serial number, product code, hardware revision, and USRP name for each B200/210. A table of these settings and whether or not the setting is user customizable is given below:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''B200/210 EEPROM Setting'''&lt;br /&gt;
|'''User Customizable?'''&lt;br /&gt;
|'''Description'''&lt;br /&gt;
|-&lt;br /&gt;
|revision&lt;br /&gt;
|No&lt;br /&gt;
|Revision Number&lt;br /&gt;
|-&lt;br /&gt;
|product&lt;br /&gt;
|No&lt;br /&gt;
|Product Code&lt;br /&gt;
|-&lt;br /&gt;
|serial&lt;br /&gt;
|No&lt;br /&gt;
|Unique Serial Number&lt;br /&gt;
|-&lt;br /&gt;
|name&lt;br /&gt;
|Yes&lt;br /&gt;
|Custom USRP Name&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To read the current EEPROM values from the USRP, use the usrp_burn_mb_eeprom utility:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;type=b200&amp;quot; --read-all&lt;br /&gt;
&lt;br /&gt;
This will read the settings and print them to the terminal. A sample output is shown below for a USRP B210:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fetching current settings from EEPROM...&lt;br /&gt;
	EEPROM [&amp;quot;revision&amp;quot;] is &amp;quot;4&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;product&amp;quot;] is &amp;quot;2&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;serial&amp;quot;] is &amp;quot;30AD2D4&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;name&amp;quot;] is &amp;quot;MyB210&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If desired, a B200/210 could be given a custom name with the following command:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;type=b200&amp;quot; --values=&amp;quot;name=Lab_B210&amp;quot;&lt;br /&gt;
&lt;br /&gt;
After the command has been run, the device must be power-cycled for the new EEPROM setting to take effect. Reading the updated EEPROM values yields:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fetching current settings from EEPROM...&lt;br /&gt;
	EEPROM [&amp;quot;revision&amp;quot;] is &amp;quot;4&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;product&amp;quot;] is &amp;quot;2&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;serial&amp;quot;] is &amp;quot;30AD2D4&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;name&amp;quot;] is &amp;quot;Lab_B210&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==USB VID/PID==&lt;br /&gt;
&lt;br /&gt;
The USB vendor identification (VID) and product identification (PID) numbers can be written to the USRP B200/210 using the &amp;quot;b2xx_fx3_utils&amp;quot; utility that is included with UHD. To reset the VID and PID, the command would be:&lt;br /&gt;
&lt;br /&gt;
 ./b2xx_fx3_utils --init-device --write-vid 0x2500 --write-pid -0x0020&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''USRP'''&lt;br /&gt;
|'''USB PID'''&lt;br /&gt;
|-&lt;br /&gt;
|B200&lt;br /&gt;
|0x0020&lt;br /&gt;
|-&lt;br /&gt;
|B210&lt;br /&gt;
|0x0020&lt;br /&gt;
|-&lt;br /&gt;
|B200 (NI)&lt;br /&gt;
|0x7813&lt;br /&gt;
|-&lt;br /&gt;
|B210 (NI)&lt;br /&gt;
|0x7814&lt;br /&gt;
|-&lt;br /&gt;
|B200mini&lt;br /&gt;
|0x0021&lt;br /&gt;
|-&lt;br /&gt;
|B205mini&lt;br /&gt;
|0x0022&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The VID is the same for all B2x0 variants, 0x2500.&lt;br /&gt;
&lt;br /&gt;
=Daughtercard IDs=&lt;br /&gt;
&lt;br /&gt;
Below is a comprehensive list of the daughtercard hex ID's.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''Name'''&lt;br /&gt;
|'''Hex ID'''&lt;br /&gt;
|-&lt;br /&gt;
|Basic Tx		    &lt;br /&gt;
| 0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Basic Rx   		    &lt;br /&gt;
| 0x0001&lt;br /&gt;
|-&lt;br /&gt;
|DBS Rx      		&lt;br /&gt;
| 0x0002&lt;br /&gt;
|-&lt;br /&gt;
|TV Rx       		&lt;br /&gt;
| 0x0003&lt;br /&gt;
|-&lt;br /&gt;
|Flex 400 Rx			&lt;br /&gt;
| 0x0004&lt;br /&gt;
|-&lt;br /&gt;
|Flex 900 Rx			&lt;br /&gt;
| 0x0005&lt;br /&gt;
|-&lt;br /&gt;
|Flex 1200 Rx		&lt;br /&gt;
| 0x0006&lt;br /&gt;
|-&lt;br /&gt;
|Flex 2400 Rx		&lt;br /&gt;
| 0x0007&lt;br /&gt;
|-&lt;br /&gt;
|Flex 400 Tx			&lt;br /&gt;
| 0x0008&lt;br /&gt;
|-&lt;br /&gt;
|Flex 900 Tx			&lt;br /&gt;
| 0x0009&lt;br /&gt;
|-&lt;br /&gt;
|Flex 1200 Tx		&lt;br /&gt;
| 0x000a&lt;br /&gt;
|-&lt;br /&gt;
|Flex 2400 Tx		&lt;br /&gt;
| 0x000b&lt;br /&gt;
|-&lt;br /&gt;
|TV Rx Rev 2			&lt;br /&gt;
| 0x000c&lt;br /&gt;
|-&lt;br /&gt;
|DBS Rx ClkMod		&lt;br /&gt;
| 0x000d&lt;br /&gt;
|-&lt;br /&gt;
|LF Tx				&lt;br /&gt;
| 0x000e&lt;br /&gt;
|-&lt;br /&gt;
|LF Rx				&lt;br /&gt;
| 0x000f&lt;br /&gt;
|-&lt;br /&gt;
|DBSRX2				&lt;br /&gt;
| 0x012&lt;br /&gt;
|-&lt;br /&gt;
|Flex 400 Rx MIMO A	&lt;br /&gt;
| 0x0014&lt;br /&gt;
|-&lt;br /&gt;
|Flex 900 Rx MIMO A	&lt;br /&gt;
| 0x0015&lt;br /&gt;
|-&lt;br /&gt;
|Flex 1200 Rx MIMO A &lt;br /&gt;
| 0x0016&lt;br /&gt;
|-&lt;br /&gt;
|Flex 2400 Rx MIMO A &lt;br /&gt;
| 0x0017&lt;br /&gt;
|-&lt;br /&gt;
|Flex 400 Tx MIMO A  &lt;br /&gt;
| 0x0018&lt;br /&gt;
|-&lt;br /&gt;
|Flex 900 Tx MIMO A	&lt;br /&gt;
| 0x0019&lt;br /&gt;
|-&lt;br /&gt;
|Flex 1200 Tx MIMO A &lt;br /&gt;
| 0x001a&lt;br /&gt;
|-&lt;br /&gt;
|Flex 2400 Tx MIMO A &lt;br /&gt;
| 0x001b&lt;br /&gt;
|-&lt;br /&gt;
|Flex 400 Rx MIMO B	&lt;br /&gt;
| 0x0024&lt;br /&gt;
|-&lt;br /&gt;
|Flex 900 Rx MIMO B  &lt;br /&gt;
| 0x0025&lt;br /&gt;
|-&lt;br /&gt;
|Flex 1200 Rx MIMO B &lt;br /&gt;
| 0x0026&lt;br /&gt;
|-&lt;br /&gt;
|Flex 2400 Rx MIMO B &lt;br /&gt;
| 0x0027&lt;br /&gt;
|-&lt;br /&gt;
|Flex 400 Tx MIMO B	&lt;br /&gt;
| 0x0028&lt;br /&gt;
|-&lt;br /&gt;
|Flex 900 Tx MIMO B	&lt;br /&gt;
| 0x0029&lt;br /&gt;
|-&lt;br /&gt;
|Flex 1200 Tx MIMO B	&lt;br /&gt;
| 0x002a&lt;br /&gt;
|-&lt;br /&gt;
|Flex 2400 Tx MIMO B &lt;br /&gt;
| 0x002b&lt;br /&gt;
|-&lt;br /&gt;
|Flex 2200 Rx MIMO B &lt;br /&gt;
| 0x002c&lt;br /&gt;
|-&lt;br /&gt;
|Flex 2200 Tx MIMO B	&lt;br /&gt;
| 0x002d&lt;br /&gt;
|-&lt;br /&gt;
|Flex 1800 Rx		&lt;br /&gt;
| 0x0030&lt;br /&gt;
|-&lt;br /&gt;
|Flex 1800 Tx		&lt;br /&gt;
| 0x0031&lt;br /&gt;
|-&lt;br /&gt;
|Flex 1800 Rx MIMO A	&lt;br /&gt;
| 0x0032&lt;br /&gt;
|-&lt;br /&gt;
|Flex 1800 Tx MIMO A	&lt;br /&gt;
| 0x0033&lt;br /&gt;
|-&lt;br /&gt;
|Flex 1800 Rx MIMO B &lt;br /&gt;
| 0x0034&lt;br /&gt;
|-&lt;br /&gt;
|Flex 1800 Tx MIMO B &lt;br /&gt;
| 0x0035&lt;br /&gt;
|-&lt;br /&gt;
|TV Rx Rev 3			&lt;br /&gt;
| 0x0040&lt;br /&gt;
|-&lt;br /&gt;
|DTT754				&lt;br /&gt;
| 0x0041&lt;br /&gt;
|-&lt;br /&gt;
|DTT768				&lt;br /&gt;
| 0x0042&lt;br /&gt;
|-&lt;br /&gt;
|TV Rx MIMO			&lt;br /&gt;
| 0x0043&lt;br /&gt;
|-&lt;br /&gt;
|TV Rx Rev 2 MIMO	&lt;br /&gt;
| 0x0044&lt;br /&gt;
|-&lt;br /&gt;
|TV Rx Rev 3 MIMO	&lt;br /&gt;
| 0x0045&lt;br /&gt;
|-&lt;br /&gt;
|TVRX2				&lt;br /&gt;
| 0x0046&lt;br /&gt;
|-&lt;br /&gt;
|WCDMA US			&lt;br /&gt;
| 0x004d&lt;br /&gt;
|-&lt;br /&gt;
|WCDMA EU			&lt;br /&gt;
| 0x004e&lt;br /&gt;
|-&lt;br /&gt;
|SIMPLE GDB			&lt;br /&gt;
| 0x004f&lt;br /&gt;
|-&lt;br /&gt;
|WBX LO TX			&lt;br /&gt;
| 0x0050&lt;br /&gt;
|-&lt;br /&gt;
|WBX LO RX			&lt;br /&gt;
| 0x0051&lt;br /&gt;
|-&lt;br /&gt;
|WBX NG TX			&lt;br /&gt;
| 0x0052&lt;br /&gt;
|-&lt;br /&gt;
|WBX NG RX			&lt;br /&gt;
| 0x0053&lt;br /&gt;
|-&lt;br /&gt;
|SBX v3 RX			&lt;br /&gt;
| 0x0054&lt;br /&gt;
|-&lt;br /&gt;
|SBX v3 TX			&lt;br /&gt;
| 0x0055&lt;br /&gt;
|-&lt;br /&gt;
|WBX v3 TX			&lt;br /&gt;
| 0x0056&lt;br /&gt;
|-&lt;br /&gt;
|WBX v3 RX			&lt;br /&gt;
| 0x0057&lt;br /&gt;
|-&lt;br /&gt;
|XCVR2450 - No Div	&lt;br /&gt;
| 0x0059&lt;br /&gt;
|-&lt;br /&gt;
|XCVR2450 TX			&lt;br /&gt;
| 0x0060&lt;br /&gt;
|-&lt;br /&gt;
|XCVR2450 RX			&lt;br /&gt;
| 0x0061&lt;br /&gt;
|-&lt;br /&gt;
|WBX v4 TX			&lt;br /&gt;
| 0x0062&lt;br /&gt;
|-&lt;br /&gt;
|WBX v4 RX			&lt;br /&gt;
| 0x0063&lt;br /&gt;
|-&lt;br /&gt;
|SBX v4 TX			&lt;br /&gt;
| 0x0064&lt;br /&gt;
|-&lt;br /&gt;
|SBX v4 RX			&lt;br /&gt;
| 0x0065&lt;br /&gt;
|-&lt;br /&gt;
|CBX v1 TX			&lt;br /&gt;
| 0x0066&lt;br /&gt;
|-&lt;br /&gt;
|CBX v1 RX			&lt;br /&gt;
| 0x0067&lt;br /&gt;
|-&lt;br /&gt;
|SBX v5 TX			&lt;br /&gt;
| 0x0068&lt;br /&gt;
|-&lt;br /&gt;
|SBX v5 RX			&lt;br /&gt;
| 0x0069&lt;br /&gt;
|-&lt;br /&gt;
|UBX-Prototype v3 TX	&lt;br /&gt;
| 0x0073&lt;br /&gt;
|-&lt;br /&gt;
|UBX-Prototype v3 RX &lt;br /&gt;
| 0x0074&lt;br /&gt;
|-&lt;br /&gt;
|UBX-Prototype v4 TX &lt;br /&gt;
| 0x0075&lt;br /&gt;
|-&lt;br /&gt;
|UBX-Prototype v4 RX &lt;br /&gt;
| 0x0076&lt;br /&gt;
|-&lt;br /&gt;
|UBX v1 TX			&lt;br /&gt;
| 0x0077&lt;br /&gt;
|-&lt;br /&gt;
|UBX v1 RX			&lt;br /&gt;
| 0x0078&lt;br /&gt;
|-&lt;br /&gt;
|UBX-160 v1 TX		&lt;br /&gt;
| 0x0079&lt;br /&gt;
|-&lt;br /&gt;
|UBX-160 v1 RX		&lt;br /&gt;
| 0x007a&lt;br /&gt;
|-&lt;br /&gt;
|Bitshark RX			&lt;br /&gt;
| 0x0070&lt;br /&gt;
|-&lt;br /&gt;
|B150 v1 TX			&lt;br /&gt;
| 0x0071&lt;br /&gt;
|-&lt;br /&gt;
|B150 v1 RX			&lt;br /&gt;
| 0x0072&lt;br /&gt;
|-&lt;br /&gt;
|WBX-120 v1 TX		&lt;br /&gt;
| 0x0080&lt;br /&gt;
|-&lt;br /&gt;
|WBX-120 v1 RX		&lt;br /&gt;
| 0x0081&lt;br /&gt;
|-&lt;br /&gt;
|SBX-120 v1 TX		&lt;br /&gt;
| 0x0082&lt;br /&gt;
|-&lt;br /&gt;
|SBX-120 v1 RX		&lt;br /&gt;
| 0x0083&lt;br /&gt;
|-&lt;br /&gt;
|CBX-120 v1 TX		&lt;br /&gt;
| 0x0084&lt;br /&gt;
|-&lt;br /&gt;
|CBX-120 v1 RX		&lt;br /&gt;
| 0x0085&lt;br /&gt;
|-&lt;br /&gt;
|EvilTwin RX1		&lt;br /&gt;
| 0x0090&lt;br /&gt;
|-&lt;br /&gt;
|EvilTwin RX2		&lt;br /&gt;
| 0x0091&lt;br /&gt;
|-&lt;br /&gt;
|E300 AD3964 DB RevB	&lt;br /&gt;
| 0x0100&lt;br /&gt;
|-&lt;br /&gt;
|E310 AD9361 DB RevB	&lt;br /&gt;
| 0x0110&lt;br /&gt;
|-&lt;br /&gt;
|E300 AD9364 DB RevC	&lt;br /&gt;
| 0x0101&lt;br /&gt;
|-&lt;br /&gt;
|E310 AD9361 DB RevC	&lt;br /&gt;
| 0x0111&lt;br /&gt;
|-&lt;br /&gt;
|Unknown Tx			&lt;br /&gt;
| 0xfff0&lt;br /&gt;
|-&lt;br /&gt;
|Unknown Rx			&lt;br /&gt;
| 0xfff1&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Motherboard IDs=&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''Name'''&lt;br /&gt;
|'''Hex ID'''&lt;br /&gt;
|-&lt;br /&gt;
|B200&lt;br /&gt;
|0x7737&lt;br /&gt;
|-&lt;br /&gt;
|B210&lt;br /&gt;
|0x7738&lt;br /&gt;
|-&lt;br /&gt;
|B200mini&lt;br /&gt;
|0x7739&lt;br /&gt;
|-&lt;br /&gt;
|B205mini&lt;br /&gt;
|0x773a&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>JamesHumphries</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=About_the_Motherboard_and_Daughtercard_EEPROM_on_USRP_Devices&amp;diff=2535</id>
		<title>About the Motherboard and Daughtercard EEPROM on USRP Devices</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=About_the_Motherboard_and_Daughtercard_EEPROM_on_USRP_Devices&amp;diff=2535"/>
				<updated>2016-05-16T20:50:53Z</updated>
		
		<summary type="html">&lt;p&gt;JamesHumphries: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Application Note Number==&lt;br /&gt;
'''AN-309 '''&lt;br /&gt;
&lt;br /&gt;
==Revision History==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Date&lt;br /&gt;
!Author&lt;br /&gt;
!Details&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| 2016-05-16  &lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| Trip Humphries&lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| Initial creation&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=USRP EEPROM Settings &amp;amp; Recovery Guide=&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==EEPROM Burn Utility==&lt;br /&gt;
&lt;br /&gt;
'''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 [mailto:support@ettus.com support@ettus.com] if you are unsure how to proceed.'''&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
 ./uhd/utils/&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;lt;optional device args&amp;gt; --read-all&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;type=b200&amp;quot; --read-all &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=X300/310 EEPROM=&lt;br /&gt;
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 &amp;quot;User Customizable?=No&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''X300/310 EEPROM Setting:'''&lt;br /&gt;
|'''User Customizable?'''&lt;br /&gt;
|'''Description'''&lt;br /&gt;
|-&lt;br /&gt;
|revision&lt;br /&gt;
|No&lt;br /&gt;
|Hardware Number&lt;br /&gt;
|-&lt;br /&gt;
|revision_compat&lt;br /&gt;
|No&lt;br /&gt;
|Revision Number&lt;br /&gt;
|-&lt;br /&gt;
|product&lt;br /&gt;
|No&lt;br /&gt;
|Product Code&lt;br /&gt;
|-&lt;br /&gt;
|serial&lt;br /&gt;
|No&lt;br /&gt;
|Unique USRP Serial Number&lt;br /&gt;
|-&lt;br /&gt;
|mac-addr0&lt;br /&gt;
|No&lt;br /&gt;
|MAC Address (Port 0)&lt;br /&gt;
|-&lt;br /&gt;
|mac-addr1&lt;br /&gt;
|No&lt;br /&gt;
|MAC Address (Port 1)&lt;br /&gt;
|-&lt;br /&gt;
|gateway&lt;br /&gt;
|Yes&lt;br /&gt;
|Network Gateway&lt;br /&gt;
|-&lt;br /&gt;
|subnet0&lt;br /&gt;
|Yes&lt;br /&gt;
|Subnet Mask&lt;br /&gt;
|-&lt;br /&gt;
|subnet1&lt;br /&gt;
|Yes&lt;br /&gt;
|Subnet Mask&lt;br /&gt;
|-&lt;br /&gt;
|subnet2&lt;br /&gt;
|Yes&lt;br /&gt;
|Subnet Mask&lt;br /&gt;
|-&lt;br /&gt;
|subnet3&lt;br /&gt;
|Yes&lt;br /&gt;
|Subnet Mask&lt;br /&gt;
|-&lt;br /&gt;
|ip-addr0&lt;br /&gt;
|Yes&lt;br /&gt;
|IP Address&lt;br /&gt;
|-&lt;br /&gt;
|ip-addr1&lt;br /&gt;
|Yes&lt;br /&gt;
|IP Address&lt;br /&gt;
|-&lt;br /&gt;
|ip-addr2&lt;br /&gt;
|Yes&lt;br /&gt;
|IP Address&lt;br /&gt;
|-&lt;br /&gt;
|ip-addr3&lt;br /&gt;
|Yes&lt;br /&gt;
|IP Address&lt;br /&gt;
|-&lt;br /&gt;
|name&lt;br /&gt;
|Yes&lt;br /&gt;
|Custom USRP Name&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
As an example, the EEPROM settings of an X310 with IP address 192.168.10.2 could be read-back with the following command:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;addr=192.168.10.2,type=x300&amp;quot; --read-all&lt;br /&gt;
&lt;br /&gt;
and the output would look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fetching current settings from EEPROM...&lt;br /&gt;
	EEPROM [&amp;quot;revision&amp;quot;] is &amp;quot;4&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;revision_compat&amp;quot;] is &amp;quot;2&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;product&amp;quot;] is &amp;quot;30AD2D4&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;mac-addr0&amp;quot;] is &amp;quot;xx:xx:xx:xx:xx:xx&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;mac-addr1&amp;quot;] is &amp;quot;xx:xx:xx:xx:xx:xx&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;gateway&amp;quot;] is &amp;quot;192.168.10.1&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;ip-addr0&amp;quot;] is &amp;quot;192.168.10.2&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;subnet0&amp;quot;] is &amp;quot;255.255.255.0&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;ip-addr1&amp;quot;] is &amp;quot;192.168.20.2&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;subnet1&amp;quot;] is &amp;quot;255.255.255.0&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;ip-addr2&amp;quot;] is &amp;quot;192.168.10.3&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;subnet2&amp;quot;] is &amp;quot;255.255.255.0&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;ip-addr3&amp;quot;] is &amp;quot;192.168.40.2&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;subnet3&amp;quot;] is &amp;quot;255.255.255.0&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;serial&amp;quot;] is &amp;quot;30AF217&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;name&amp;quot;] is &amp;quot;&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Determining X300/X310 Revision Number==&lt;br /&gt;
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\&amp;lt;R&amp;gt;-\&amp;lt;XXX&amp;gt; where \&amp;lt;R&amp;gt; is a letter code that corresponds to the revision number. The photograph below highlights the location of the sticker:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-309-x3x0-rev-id.png|thumb|500px|center|The USRP X300/310 motherboard has a sticker that identifies the product and revision. The sticker is outlined in red.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once the letter code has been determined use the table below to map the letter code to a revision number:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''Letter'''&lt;br /&gt;
|'''Revision #'''&lt;br /&gt;
|-&lt;br /&gt;
|C&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|D&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|E&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|F&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|G&lt;br /&gt;
|7&lt;br /&gt;
|-&lt;br /&gt;
|H&lt;br /&gt;
|8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Restore X300/310 EEPROM Revision Code==&lt;br /&gt;
&lt;br /&gt;
A corrupted or missing revision code in the X300/310 EEPROM will be indicated by a UHD runtime error:&lt;br /&gt;
&lt;br /&gt;
 Error: RuntimeError: No revision compat detected. MB EEPROM must be reprogrammed!&lt;br /&gt;
&lt;br /&gt;
If this problem is encountered, the usrp_burn_mb_eeprom utility can be used to restore the X300/310 revision code in the EEPROM. First, the X300/X310 revision number must be determined. Once the revision number for your X300/310 is known, the usrp_burn_mb_eeprom utility can be used to restore the revision code to the EEPROM. The syntax is as follows:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;recover_mb_eeprom&amp;quot; --values=&amp;quot;revision=&amp;lt;#&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;#&amp;gt; is the revision number of your X300/310 to be written to the EEPROM. For example, to restore the revision number in EEPROM for a Rev. 6 X300 with an IP address of 192.168.10.2, the command would be:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;recover_mb_eeprom,addr=192.168.10.2&amp;quot; --values=&amp;quot;revision=6&amp;quot;&lt;br /&gt;
&lt;br /&gt;
After the utility has been run, power cycle the USRP and then run uhd_usrp_probe to ensure that the new revision number has been written to the EEPROM correctly. If you are unsure of how to accomplish these steps, please feel free to contact Ettus Support at [mailto:support@ettus.com support@ettus.com].&lt;br /&gt;
&lt;br /&gt;
==Restore X300/310 EEPROM Product Code==&lt;br /&gt;
&lt;br /&gt;
A corrupted product code in the X300/310 EEPROM will be indicated by a UHD warning:&lt;br /&gt;
&lt;br /&gt;
 UHD Warning: X300/X310 unknown product code in EEPROM: &amp;lt;###&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;###&amp;gt; is some numbered code that is unknown by UHD. If this problem is encountered, the usrp_burn_mb_eeprom utility can be used to write a new product code to the EEPROM. First, the X300/X310 revision number must be determined. Once the revision number has been determined, refer to the table below to find the product code for the X300/310:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''USRP'''&lt;br /&gt;
|'''Rev. 0-6'''&lt;br /&gt;
|'''Rev. 7-8'''&lt;br /&gt;
|-&lt;br /&gt;
|X300&lt;br /&gt;
|30518 (0x7763)&lt;br /&gt;
|30817 (0x7861)&lt;br /&gt;
|-&lt;br /&gt;
|X310&lt;br /&gt;
|30410 (0x76CA)&lt;br /&gt;
|30818 (0x7862)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Once the correct product code has been determined base on the X3x0 model and revision, the usrp_burn_mb_eeprom utility can be used to write the correct product code to the EEPROM. They syntax is as follows:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;recover_mb_eeprom&amp;quot; --values=&amp;quot;product=&amp;lt;###&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;###&amp;gt; is the product code to be written to the EEPROM. For example, on a Rev. 7 X300 with an IP address of 191.168.10.2, the command would be:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;recover_mb_eeprom,addr=192.168.10.2&amp;quot; --values=&amp;quot;product=30817&amp;quot;&lt;br /&gt;
&lt;br /&gt;
After the utility has been run, power cycle the USRP and then run uhd_usrp_probe to ensure that the new revision number has been written to the EEPROM correctly. If you are unsure of how to accomplish these steps, please feel free to contact Ettus Support at [mailto:support@ettus.com support@ettus.com].&lt;br /&gt;
&lt;br /&gt;
==National Instruments USRP RIO==&lt;br /&gt;
&lt;br /&gt;
The National Instruments branded X300/310 have unique product codes to identify the motherboard revision as well as the daughter-cards in the USRP. The product codes are listed below:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''Model (DB, BW, Rev.)'''&lt;br /&gt;
|'''Hex ID'''&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2940R (WBX, 40 MHz BW, Rev. 0-6)       &lt;br /&gt;
|0x772B&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2940R (WBX, 40 MHz BW, Rev. 7+)        &lt;br /&gt;
|0x7853&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2940R (WBX, 120 MHz BW, Rev. 0-6)      &lt;br /&gt;
|0x77FB&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2940R (WBX, 120 MHz BW, Rev. 7+)       &lt;br /&gt;
|0x785B&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2942R (SBX, 40 MHz BW, Rev. 0-6)       &lt;br /&gt;
|0x772C&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2942R (SBX, 40 MHz BW, Rev. 7+)        &lt;br /&gt;
|0x7854&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2942R (SBX, 120 MHz BW, Rev. 0-6)      &lt;br /&gt;
|0x77FC&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2942R (SBX, 120 MHz BW, Rev. 7+)       &lt;br /&gt;
|0x785C&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2943R (CBX, 40 MHz BW, Rev. 0-6)       &lt;br /&gt;
|0x772D&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2943R (CBX, 40 MHz BW, Rev. 7+)        &lt;br /&gt;
|0x7855&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2943R (CBX, 120 MHz BW, Rev. 0-6)      &lt;br /&gt;
|0x77FD&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2943R (CBX, 120 MHz BW, Rev. 7+)       &lt;br /&gt;
|0x785D&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2944R (UBX, 160 MHz BW, Rev. 0-6)      &lt;br /&gt;
|0x772E&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2944R (UBX, 160 MHz BW, Rev. 7+)       &lt;br /&gt;
|0x7856&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2950R (GPS, WBX, 40 MHz BW, Rev. 0-6)  &lt;br /&gt;
|0x772F&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2950R (GPS, WBX, 40 MHz BW, Rev. 7+)   &lt;br /&gt;
|0x7857&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2950R (GPS, WBX, 120 MHz BW, Rev. 0-6) &lt;br /&gt;
|0x77FE&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2950R (GPS, WBX, 120 MHz BW, Rev. 7+   &lt;br /&gt;
|0x785E&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2952R (GPS, SBX, 40 MHz BW, Rev. 0-6)  &lt;br /&gt;
|0x7730&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2952R (GPS, SBX, 40 MHz BW, Rev. 7+)   &lt;br /&gt;
|0x7858&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2952R (GPS, SBX, 120 MHz BW, Rev. 0-6) &lt;br /&gt;
|0x77FF&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2952R (GPS, SBX, 120 MHz BW, Rev. 7+   &lt;br /&gt;
|0x785F&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2953R (GPS, CBX, 40 MHz BW, Rev. 0-6)  &lt;br /&gt;
|0x7731&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2953R (GPS, CBX, 40 MHz BW, Rev. 7+)   &lt;br /&gt;
|0x7859&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2953R (GPS, CBX, 120 MHz BW, Rev. 0-6) &lt;br /&gt;
|0x7800&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2953R (GPS, CBX, 120 MHz BW, Rev. 7+)  &lt;br /&gt;
|0x7860&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2954R (GPS, UBX, 160 MHz BW, Rev. 0-6) &lt;br /&gt;
|0x7732&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2954R (GPS, UBX, 160 MHz BW, Rev. 7+)  &lt;br /&gt;
|0x785A&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=N200/210 EEPROM=&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''N200/210 EEPROM Setting'''&lt;br /&gt;
|'''User Customizable?'''&lt;br /&gt;
|'''Description'''&lt;br /&gt;
|-&lt;br /&gt;
|hardware&lt;br /&gt;
|No&lt;br /&gt;
|Hardware Number&lt;br /&gt;
|-&lt;br /&gt;
|revision&lt;br /&gt;
|No&lt;br /&gt;
|Revision Number&lt;br /&gt;
|-&lt;br /&gt;
|product&lt;br /&gt;
|No&lt;br /&gt;
|Product Code&lt;br /&gt;
|-&lt;br /&gt;
|mac-addr&lt;br /&gt;
|No&lt;br /&gt;
|MAC Address&lt;br /&gt;
|-&lt;br /&gt;
|ip-addr&lt;br /&gt;
|Yes&lt;br /&gt;
|IP Address&lt;br /&gt;
|-&lt;br /&gt;
|subnet&lt;br /&gt;
|Yes&lt;br /&gt;
|Subnetwork&lt;br /&gt;
|-&lt;br /&gt;
|gateway&lt;br /&gt;
|Yes&lt;br /&gt;
|Network Gateway&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The N200/210 do not store the product codes in the motherboard EEPROM. The &amp;quot;hardware&amp;quot; field is programmed at the factory but is not referenced by UHD. Instead, the revision field is used to determine the N200/210 hardware in use. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''USRP'''&lt;br /&gt;
|'''Motherboard Product ID'''&lt;br /&gt;
|-&lt;br /&gt;
|N200&lt;br /&gt;
|0x0A00&lt;br /&gt;
|-&lt;br /&gt;
|N210&lt;br /&gt;
|0x0A01&lt;br /&gt;
|-&lt;br /&gt;
|N200 - R4&lt;br /&gt;
|0x0A10&lt;br /&gt;
|-&lt;br /&gt;
|N210 - R4&lt;br /&gt;
|0x0A11&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=B200/210 and B200mini EEPROM=&lt;br /&gt;
&lt;br /&gt;
The USRP B200 and B210 EEPROM is used to store certain information about each board. The USB PID (Product ID) and VID (Vendor ID) are stored in the EEPROM as well as serial number, product code, hardware revision, and USRP name for each B200/210. A table of these settings and whether or not the setting is user customizable is given below:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''B200/210 EEPROM Setting'''&lt;br /&gt;
|'''User Customizable?'''&lt;br /&gt;
|'''Description'''&lt;br /&gt;
|-&lt;br /&gt;
|revision&lt;br /&gt;
|No&lt;br /&gt;
|Revision Number&lt;br /&gt;
|-&lt;br /&gt;
|product&lt;br /&gt;
|No&lt;br /&gt;
|Product Code&lt;br /&gt;
|-&lt;br /&gt;
|serial&lt;br /&gt;
|No&lt;br /&gt;
|Unique Serial Number&lt;br /&gt;
|-&lt;br /&gt;
|name&lt;br /&gt;
|Yes&lt;br /&gt;
|Custom USRP Name&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To read the current EEPROM values from the USRP, use the usrp_burn_mb_eeprom utility:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;type=b200&amp;quot; --read-all&lt;br /&gt;
&lt;br /&gt;
This will read the settings and print them to the terminal. A sample output is shown below for a USRP B210:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fetching current settings from EEPROM...&lt;br /&gt;
	EEPROM [&amp;quot;revision&amp;quot;] is &amp;quot;4&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;product&amp;quot;] is &amp;quot;2&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;serial&amp;quot;] is &amp;quot;30AD2D4&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;name&amp;quot;] is &amp;quot;MyB210&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If desired, a B200/210 could be given a custom name with the following command:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;type=b200&amp;quot; --values=&amp;quot;name=Lab_B210&amp;quot;&lt;br /&gt;
&lt;br /&gt;
After the command has been run, the device must be power-cycled for the new EEPROM setting to take effect. Reading the updated EEPROM values yields:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fetching current settings from EEPROM...&lt;br /&gt;
	EEPROM [&amp;quot;revision&amp;quot;] is &amp;quot;4&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;product&amp;quot;] is &amp;quot;2&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;serial&amp;quot;] is &amp;quot;30AD2D4&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;name&amp;quot;] is &amp;quot;Lab_B210&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==USB VID/PID==&lt;br /&gt;
&lt;br /&gt;
The USB vendor identification (VID) and product identification (PID) numbers can be written to the USRP B200/210 using the &amp;quot;b2xx_fx3_utils&amp;quot; utility that is included with UHD. To reset the VID and PID, the command would be:&lt;br /&gt;
&lt;br /&gt;
 ./b2xx_fx3_utils --init-device --write-vid 0x2500 --write-pid -0x0020&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''USRP'''&lt;br /&gt;
|'''USB PID'''&lt;br /&gt;
|-&lt;br /&gt;
|B200&lt;br /&gt;
|0x0020&lt;br /&gt;
|-&lt;br /&gt;
|B210&lt;br /&gt;
|0x0020&lt;br /&gt;
|-&lt;br /&gt;
|B200 (NI)&lt;br /&gt;
|0x7813&lt;br /&gt;
|-&lt;br /&gt;
|B210 (NI)&lt;br /&gt;
|0x7814&lt;br /&gt;
|-&lt;br /&gt;
|B200mini&lt;br /&gt;
|0x0021&lt;br /&gt;
|-&lt;br /&gt;
|B205mini&lt;br /&gt;
|0x0022&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The VID is the same for all B2x0 variants, 0x2500.&lt;br /&gt;
&lt;br /&gt;
=Daughtercard IDs=&lt;br /&gt;
&lt;br /&gt;
Below is a comprehensive list of the daughtercard hex ID's.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''Name'''&lt;br /&gt;
|'''Hex ID'''&lt;br /&gt;
|-&lt;br /&gt;
|Basic Tx		    &lt;br /&gt;
| 0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Basic Rx   		    &lt;br /&gt;
| 0x0001&lt;br /&gt;
|-&lt;br /&gt;
|DBS Rx      		&lt;br /&gt;
| 0x0002&lt;br /&gt;
|-&lt;br /&gt;
|TV Rx       		&lt;br /&gt;
| 0x0003&lt;br /&gt;
|-&lt;br /&gt;
|Flex 400 Rx			&lt;br /&gt;
| 0x0004&lt;br /&gt;
|-&lt;br /&gt;
|Flex 900 Rx			&lt;br /&gt;
| 0x0005&lt;br /&gt;
|-&lt;br /&gt;
|Flex 1200 Rx		&lt;br /&gt;
| 0x0006&lt;br /&gt;
|-&lt;br /&gt;
|Flex 2400 Rx		&lt;br /&gt;
| 0x0007&lt;br /&gt;
|-&lt;br /&gt;
|Flex 400 Tx			&lt;br /&gt;
| 0x0008&lt;br /&gt;
|-&lt;br /&gt;
|Flex 900 Tx			&lt;br /&gt;
| 0x0009&lt;br /&gt;
|-&lt;br /&gt;
|Flex 1200 Tx		&lt;br /&gt;
| 0x000a&lt;br /&gt;
|-&lt;br /&gt;
|Flex 2400 Tx		&lt;br /&gt;
| 0x000b&lt;br /&gt;
|-&lt;br /&gt;
|TV Rx Rev 2			&lt;br /&gt;
| 0x000c&lt;br /&gt;
|-&lt;br /&gt;
|DBS Rx ClkMod		&lt;br /&gt;
| 0x000d&lt;br /&gt;
|-&lt;br /&gt;
|LF Tx				&lt;br /&gt;
| 0x000e&lt;br /&gt;
|-&lt;br /&gt;
|LF Rx				&lt;br /&gt;
| 0x000f&lt;br /&gt;
|-&lt;br /&gt;
|DBSRX2				&lt;br /&gt;
| 0x012&lt;br /&gt;
|-&lt;br /&gt;
|Flex 400 Rx MIMO A	&lt;br /&gt;
| 0x0014&lt;br /&gt;
|-&lt;br /&gt;
|Flex 900 Rx MIMO A	&lt;br /&gt;
| 0x0015&lt;br /&gt;
|-&lt;br /&gt;
|Flex 1200 Rx MIMO A &lt;br /&gt;
| 0x0016&lt;br /&gt;
|-&lt;br /&gt;
|Flex 2400 Rx MIMO A &lt;br /&gt;
| 0x0017&lt;br /&gt;
|-&lt;br /&gt;
|Flex 400 Tx MIMO A  &lt;br /&gt;
| 0x0018&lt;br /&gt;
|-&lt;br /&gt;
|Flex 900 Tx MIMO A	&lt;br /&gt;
| 0x0019&lt;br /&gt;
|-&lt;br /&gt;
|Flex 1200 Tx MIMO A &lt;br /&gt;
| 0x001a&lt;br /&gt;
|-&lt;br /&gt;
|Flex 2400 Tx MIMO A &lt;br /&gt;
| 0x001b&lt;br /&gt;
|-&lt;br /&gt;
|Flex 400 Rx MIMO B	&lt;br /&gt;
| 0x0024&lt;br /&gt;
|-&lt;br /&gt;
|Flex 900 Rx MIMO B  &lt;br /&gt;
| 0x0025&lt;br /&gt;
|-&lt;br /&gt;
|Flex 1200 Rx MIMO B &lt;br /&gt;
| 0x0026&lt;br /&gt;
|-&lt;br /&gt;
|Flex 2400 Rx MIMO B &lt;br /&gt;
| 0x0027&lt;br /&gt;
|-&lt;br /&gt;
|Flex 400 Tx MIMO B	&lt;br /&gt;
| 0x0028&lt;br /&gt;
|-&lt;br /&gt;
|Flex 900 Tx MIMO B	&lt;br /&gt;
| 0x0029&lt;br /&gt;
|-&lt;br /&gt;
|Flex 1200 Tx MIMO B	&lt;br /&gt;
| 0x002a&lt;br /&gt;
|-&lt;br /&gt;
|Flex 2400 Tx MIMO B &lt;br /&gt;
| 0x002b&lt;br /&gt;
|-&lt;br /&gt;
|Flex 2200 Rx MIMO B &lt;br /&gt;
| 0x002c&lt;br /&gt;
|-&lt;br /&gt;
|Flex 2200 Tx MIMO B	&lt;br /&gt;
| 0x002d&lt;br /&gt;
|-&lt;br /&gt;
|Flex 1800 Rx		&lt;br /&gt;
| 0x0030&lt;br /&gt;
|-&lt;br /&gt;
|Flex 1800 Tx		&lt;br /&gt;
| 0x0031&lt;br /&gt;
|-&lt;br /&gt;
|Flex 1800 Rx MIMO A	&lt;br /&gt;
| 0x0032&lt;br /&gt;
|-&lt;br /&gt;
|Flex 1800 Tx MIMO A	&lt;br /&gt;
| 0x0033&lt;br /&gt;
|-&lt;br /&gt;
|Flex 1800 Rx MIMO B &lt;br /&gt;
| 0x0034&lt;br /&gt;
|-&lt;br /&gt;
|Flex 1800 Tx MIMO B &lt;br /&gt;
| 0x0035&lt;br /&gt;
|-&lt;br /&gt;
|TV Rx Rev 3			&lt;br /&gt;
| 0x0040&lt;br /&gt;
|-&lt;br /&gt;
|DTT754				&lt;br /&gt;
| 0x0041&lt;br /&gt;
|-&lt;br /&gt;
|DTT768				&lt;br /&gt;
| 0x0042&lt;br /&gt;
|-&lt;br /&gt;
|TV Rx MIMO			&lt;br /&gt;
| 0x0043&lt;br /&gt;
|-&lt;br /&gt;
|TV Rx Rev 2 MIMO	&lt;br /&gt;
| 0x0044&lt;br /&gt;
|-&lt;br /&gt;
|TV Rx Rev 3 MIMO	&lt;br /&gt;
| 0x0045&lt;br /&gt;
|-&lt;br /&gt;
|TVRX2				&lt;br /&gt;
| 0x0046&lt;br /&gt;
|-&lt;br /&gt;
|WCDMA US			&lt;br /&gt;
| 0x004d&lt;br /&gt;
|-&lt;br /&gt;
|WCDMA EU			&lt;br /&gt;
| 0x004e&lt;br /&gt;
|-&lt;br /&gt;
|SIMPLE GDB			&lt;br /&gt;
| 0x004f&lt;br /&gt;
|-&lt;br /&gt;
|WBX LO TX			&lt;br /&gt;
| 0x0050&lt;br /&gt;
|-&lt;br /&gt;
|WBX LO RX			&lt;br /&gt;
| 0x0051&lt;br /&gt;
|-&lt;br /&gt;
|WBX NG TX			&lt;br /&gt;
| 0x0052&lt;br /&gt;
|-&lt;br /&gt;
|WBX NG RX			&lt;br /&gt;
| 0x0053&lt;br /&gt;
|-&lt;br /&gt;
|SBX v3 RX			&lt;br /&gt;
| 0x0054&lt;br /&gt;
|-&lt;br /&gt;
|SBX v3 TX			&lt;br /&gt;
| 0x0055&lt;br /&gt;
|-&lt;br /&gt;
|WBX v3 TX			&lt;br /&gt;
| 0x0056&lt;br /&gt;
|-&lt;br /&gt;
|WBX v3 RX			&lt;br /&gt;
| 0x0057&lt;br /&gt;
|-&lt;br /&gt;
|XCVR2450 - No Div	&lt;br /&gt;
| 0x0059&lt;br /&gt;
|-&lt;br /&gt;
|XCVR2450 TX			&lt;br /&gt;
| 0x0060&lt;br /&gt;
|-&lt;br /&gt;
|XCVR2450 RX			&lt;br /&gt;
| 0x0061&lt;br /&gt;
|-&lt;br /&gt;
|WBX v4 TX			&lt;br /&gt;
| 0x0062&lt;br /&gt;
|-&lt;br /&gt;
|WBX v4 RX			&lt;br /&gt;
| 0x0063&lt;br /&gt;
|-&lt;br /&gt;
|SBX v4 TX			&lt;br /&gt;
| 0x0064&lt;br /&gt;
|-&lt;br /&gt;
|SBX v4 RX			&lt;br /&gt;
| 0x0065&lt;br /&gt;
|-&lt;br /&gt;
|CBX v1 TX			&lt;br /&gt;
| 0x0066&lt;br /&gt;
|-&lt;br /&gt;
|CBX v1 RX			&lt;br /&gt;
| 0x0067&lt;br /&gt;
|-&lt;br /&gt;
|SBX v5 TX			&lt;br /&gt;
| 0x0068&lt;br /&gt;
|-&lt;br /&gt;
|SBX v5 RX			&lt;br /&gt;
| 0x0069&lt;br /&gt;
|-&lt;br /&gt;
|UBX-Prototype v3 TX	&lt;br /&gt;
| 0x0073&lt;br /&gt;
|-&lt;br /&gt;
|UBX-Prototype v3 RX &lt;br /&gt;
| 0x0074&lt;br /&gt;
|-&lt;br /&gt;
|UBX-Prototype v4 TX &lt;br /&gt;
| 0x0075&lt;br /&gt;
|-&lt;br /&gt;
|UBX-Prototype v4 RX &lt;br /&gt;
| 0x0076&lt;br /&gt;
|-&lt;br /&gt;
|UBX v1 TX			&lt;br /&gt;
| 0x0077&lt;br /&gt;
|-&lt;br /&gt;
|UBX v1 RX			&lt;br /&gt;
| 0x0078&lt;br /&gt;
|-&lt;br /&gt;
|UBX-160 v1 TX		&lt;br /&gt;
| 0x0079&lt;br /&gt;
|-&lt;br /&gt;
|UBX-160 v1 RX		&lt;br /&gt;
| 0x007a&lt;br /&gt;
|-&lt;br /&gt;
|Bitshark RX			&lt;br /&gt;
| 0x0070&lt;br /&gt;
|-&lt;br /&gt;
|B150 v1 TX			&lt;br /&gt;
| 0x0071&lt;br /&gt;
|-&lt;br /&gt;
|B150 v1 RX			&lt;br /&gt;
| 0x0072&lt;br /&gt;
|-&lt;br /&gt;
|WBX-120 v1 TX		&lt;br /&gt;
| 0x0080&lt;br /&gt;
|-&lt;br /&gt;
|WBX-120 v1 RX		&lt;br /&gt;
| 0x0081&lt;br /&gt;
|-&lt;br /&gt;
|SBX-120 v1 TX		&lt;br /&gt;
| 0x0082&lt;br /&gt;
|-&lt;br /&gt;
|SBX-120 v1 RX		&lt;br /&gt;
| 0x0083&lt;br /&gt;
|-&lt;br /&gt;
|CBX-120 v1 TX		&lt;br /&gt;
| 0x0084&lt;br /&gt;
|-&lt;br /&gt;
|CBX-120 v1 RX		&lt;br /&gt;
| 0x0085&lt;br /&gt;
|-&lt;br /&gt;
|EvilTwin RX1		&lt;br /&gt;
| 0x0090&lt;br /&gt;
|-&lt;br /&gt;
|EvilTwin RX2		&lt;br /&gt;
| 0x0091&lt;br /&gt;
|-&lt;br /&gt;
|E300 AD3964 DB RevB	&lt;br /&gt;
| 0x0100&lt;br /&gt;
|-&lt;br /&gt;
|E310 AD9361 DB RevB	&lt;br /&gt;
| 0x0110&lt;br /&gt;
|-&lt;br /&gt;
|E300 AD9364 DB RevC	&lt;br /&gt;
| 0x0101&lt;br /&gt;
|-&lt;br /&gt;
|E310 AD9361 DB RevC	&lt;br /&gt;
| 0x0111&lt;br /&gt;
|-&lt;br /&gt;
|Unknown Tx			&lt;br /&gt;
| 0xfff0&lt;br /&gt;
|-&lt;br /&gt;
|Unknown Rx			&lt;br /&gt;
| 0xfff1&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Motherboard IDs=&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''Name'''&lt;br /&gt;
|'''Hex ID'''&lt;br /&gt;
|-&lt;br /&gt;
|B200&lt;br /&gt;
|0x7737&lt;br /&gt;
|-&lt;br /&gt;
|B210&lt;br /&gt;
|0x7738&lt;br /&gt;
|-&lt;br /&gt;
|B200mini&lt;br /&gt;
|0x7739&lt;br /&gt;
|-&lt;br /&gt;
|B205mini&lt;br /&gt;
|0x773a&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>JamesHumphries</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=Interrogating_Passive_Wireless_SAW_Sensors_with_the_USRP&amp;diff=2534</id>
		<title>Interrogating Passive Wireless SAW Sensors with the USRP</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=Interrogating_Passive_Wireless_SAW_Sensors_with_the_USRP&amp;diff=2534"/>
				<updated>2016-05-16T20:31:54Z</updated>
		
		<summary type="html">&lt;p&gt;JamesHumphries: /* Interrogating Passive, Wireless SAW Sensors with the USRP B200mini */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Application Note Number==&lt;br /&gt;
'''AN-188 '''&lt;br /&gt;
&lt;br /&gt;
==Revision History==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Date&lt;br /&gt;
!Author&lt;br /&gt;
!Details&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| 2016-05-01   &lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| Trip Humphries&lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| Initial creation&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| 2016-05-09&lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| Trip Humphries&lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| Version 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Interrogating Passive, Wireless SAW Sensors with the USRP B200mini=&lt;br /&gt;
&lt;br /&gt;
'''Authors:''' James 'Trip' Humphries, Jose Figueroa, Mark Gallagher, Daniel Gallagher, Arthur Weeks, Donald Malocha&lt;br /&gt;
&lt;br /&gt;
'''Ettus Research Products Used:''' USRP B200mini&lt;br /&gt;
&lt;br /&gt;
'''Research Institution:''' University of Central Florida, Orlando, FL, USA&lt;br /&gt;
&lt;br /&gt;
'''Laboratory:''' Consortium for Applied Acoustoelectronic Technology (CAAT)&lt;br /&gt;
&lt;br /&gt;
'''Application Area:''' Wireless Sensors&lt;br /&gt;
&lt;br /&gt;
==Challenge==&lt;br /&gt;
Develop a wide-band transceiver to interrogate passive, wireless surface acoustic wave (SAW) sensors at 915MHz using a commercially available software radio platform.&lt;br /&gt;
&lt;br /&gt;
==Solution==&lt;br /&gt;
The Ettus USRP B200mini was utilized to interrogate wireless SAW sensors by modifying the FPGA design to implement a synchronous, pulsed mode interrogator and utilize the entire 56MHz bandwidth of the B200mini.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Typical interrogator design for wireless SAW sensor systems require many discrete components and lengthy build times, making it difficult to rapidly adapt to sensor designs in a research environment. We have employed the USRP B200mini as a SAW sensor interrogation system. Interrogation of wideband orthogonal frequency coded (OFC) SAW sensors imposes strict requirements on the timing and synchronization of the transceiver. The USRP FPGA has been modified to operate in a synchronous, pulsed mode of operation, allowing rapid data acquisition and the full 56MHz bandwidth of the AD9364 to be utilized. Data from the USRP is passed to a custom matched filter correlator routine to extract sensor parameters. The system is capable of interrogating multiple sensors, simultaneously. Demonstration of the system is accomplished by wirelessly interrogating SAW sensors at 915MHz and extracting temperature. A photograph of the system is shown in Figure 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-188-saw-sensor-sys.png|thumb|500px|center|Figure 1: Photograph of passive, wireless SAW sensor system using the USRP B200mini. On the left is the host computer to handle the USRP interface and perform post-processing to extract the sensor parameters. In the center is the are two wireless SAW sensors. On the right is the interrogator system and USRP in a custom enclosure.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Consortium for Applied Acoustoelectronic Technology (CAAT) - University of Central Florida==&lt;br /&gt;
The Consortium for Applied Acoustoelectronic Technology (CAAT) is a part of the University of Central Florida (UCF), in Orlando, FL. UCF is a comprehensive university with an enrollment of over 60,000 students. The UCF College of Engineering and Computer Science (CECS) supports multidisciplinary engineering research; offering advanced degrees at the MS and PhD levels.&lt;br /&gt;
The focus and expertise of CAAT is surface acoustic wave (SAW) devices and applications. Currently, CAAT is developing passive, wireless sensors based on SAW technology. The sensors are identified using an encoding technique known as orthogonal frequency coding (OFC). The sensors do not require an energy source (battery or other) and can be read from many meters away. Temperature, strain, and hydrogen sensors (among others) have been demonstrated wirelessly with this technology.&lt;br /&gt;
&lt;br /&gt;
==Passive, Wireless SAW Sensors==&lt;br /&gt;
SAW devices have many inherent properties that make them useful as sensors. Not only are they rugged to environmental extremes such as high temperature and radiation, but they can be operated wirelessly and passively (requires no power source or energy harvesting onboard the sensor). An interrogation signal is transmitted by the radio, illuminating all the SAW sensor tags simultaneously. Each SAW sensor reflects the received interrogation signal and is very similar to a RADAR system. The use of the SAW device allows the reflection to be engineered to encode the device ID (code) and measurand via changes in frequency, phase, or magnitude. The resulting changes can be measured and correlated to some measurement such as temperature, strain, or gas concentration. A SAW temperature sensor with integrated antenna is shown in Figure 2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-188-saw-sensor-quarter-ruler.png|thumb|500px|center|Figure 2: Photograph of a wireless SAW sensor developed at UCF. The SAW die is packaged and attached to a dipole antenna. A metric ruler and U.S. quarter are shown for size reference. The sensor dimensions are 10cm x 2.5cm (4&amp;quot;x 1&amp;quot;). Sensor shown here detects temperature.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Orthogonal frequency coding (OFC) can be implemented on a SAW platform by placing an array of reflector gratings in the path of the surface wave [1]. Each grating is assigned a center frequency which is orthogonal to all other gratings in the reflector array. OFC chips that are not synchronous to an incoming signal will appear nearly transparent to that frequency. The chips are shuffled in time to create a unique code, which identifies the sensor. Each sensor code is also given a discrete time slot and time gating during post-processing can be used to improve the sensor SNR. An illustration of a SAW device with OFC is given in Figure 3.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-188-ofc-schematic.png|thumb|500px|center|Figure 3: Illustration of a SAW OFC sensor tag. A signal input to the antenna is converted to an acoustic wave by the SAW transducer (left). The signal propagates to the OFC chips (right) and is reflected back to the transducer where it is re-radiated for reception on the USRP. The received signal is noise-like and is processed by a match-filter correlator to extract sensor parameters.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==USRP FPGA Modifications and Software==&lt;br /&gt;
Modifications were made to the USRP FPGA to incorporate custom functionality in both the transmit and receive chains. On the transmit side, an interrogation signal generator was implemented. It generates a linear FM chirp with a bandwidth of 35MHz and time length of 1µs. The receiver was modified to synchronize to the transmit signal (start listening for sensor response after the interrogation signal has finished transmitting) and incorporate a listen window. The receiver listens for 9.15µs and stores those samples into a RAM buffer. The samples are then read back from the RAM buffer at a slow rate such that the full 56MHz bandwidth of the system can be utilized without saturating the sample bus (USB3.0). Real time post processing is not required for this application. A block diagram outlining the FPGA modifications is shown in Figure 4. A plot comparing the predicted and generated chirp spectrums is also given in Figure 5.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-188-b200-fpga-mod-diagram.png|thumb|500px|center|Figure 4: Block diagram of the USRP B200 showing the custom FPGA modifications. The open-source FPGA code was able to be modified to fit the specific requirements of interrogating SAW sensors. The interrogation signal generator (A) outputs a linear FM chirp that is 1us long and has a 35MHz bandwidth. The receiver modifications (B) buffers 512 samples after the interrogation signal has finished.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-188-fpga-chirp-spectrum.png|thumb|500px|center|Figure 5: Plot comparing the predicted chirp spectrum versus the samples output from the USRP FPGA. The USRP spectrum is captured at 915MHz and compared to the predicted baseband spectrum.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The USRP was integrated with a custom matched-filter correlation software package in Python using the GNU Radio Python API [2]. A set of matched filters is generated for each sensor in the system, where each matched filter corresponds to a specific temperature of the sensor (the user specifies the minimum and maximum temperatures as well as the temperature resolution). The matched filters are scaled using a frequency scaling factor (FSF), based on calibrated sensor parameters. The received sensor signal is correlated with each matched filter. The matched filter which yields the maximum correlation peak corresponds to the temperature of the current sensor being processed. Interrogation of a single sensor and extraction of the sensor temperature can be done in approximately 10-15ms with this setup. A block diagram of the implemented software is shown in Figure 6.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-188-python-software blk diagram.png|thumb|500px|center|Figure 6: Block diagram of the software implemented on the host computer for data capture and post processing. UHD handles the data transfer and programming of the USRP. GNU Radio provides useful programming and DSP blocks for the USRP data. A custom Python block was implemented in GNU Radio ('UCF Sink') which stores a requested number of samples to a memory vector which can be copied to the host program when needed. The received data is processed by a matched filter correlator to extract the temperature or other measurand.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==USRP System==&lt;br /&gt;
The full SAW sensor interrogation system included extra components to improve the transceiver performance. An amplifier was added to the transmit chain to increase the output power of the transmitter to &amp;gt;+20dBm. This allows the SAW sensors to be interrogated at a farther range. With this output power, current sensors can be detected at a range of 5 meters (16 feet) or more with a high gain antenna. In addition to the amplifier, an RF switch was incorporated which switches between the TRX and RX2 ports on the USRP. This allows a single antenna to be used for transmission and reception (instead of one antenna for each port). This also has the added benefit of eliminating the direct response between the two antennas from the interrogation pulse which can saturate the receiver and distort the received signal response. The switch is controlled by the USRP GPIO pins connected to the FPGA. Finally, a custom enclosure was designed to house the SAW sensor interrogation system. Photographs of the system are shown in Figure 7 and Figure 8.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+System Components&lt;br /&gt;
|-&lt;br /&gt;
|'''USRP:'''&lt;br /&gt;
|B200mini&lt;br /&gt;
|-&lt;br /&gt;
|'''Amplifier (TX):'''&lt;br /&gt;
|Mini-Circuits ZX60-H122+&lt;br /&gt;
|-&lt;br /&gt;
|'''RF Switch:'''&lt;br /&gt;
|Mini-Circuits ZFSWA2-63DR+&lt;br /&gt;
|-&lt;br /&gt;
|'''Enclosure:'''&lt;br /&gt;
|Custom Design - Manufactured by Protocase, Inc.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-188-b200mini-internal-annotated.png|thumb|500px|center|Figure 7: Photograph of the USRP SAW sensor interrogation system with added components. An amplifier increases the output power to greater than +20dBm while an RF switch allows only a single antenna to be used for both transmit and receive. The components are housed in a custom enclosure that was manufacture by Protocase, Inc.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-188-b200mini-front-back.png|thumb|500px|center|Figure 8: Photograph of the front of the USRP enclosure. A single antenna is switched rapidly between the transmit (TRX) and receive (RX2) ports. The rear panel has ports for power and data (USB3.0). The dimensions of the system are 18x15x5cm (7x6x2in.) and has a mass of approximately 630g (1.4lbs.).]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Wireless Temperature Measurements with the USRP==&lt;br /&gt;
The SAW sensor was interrogated by the USRP and the received signal was post-processed to extract the sensor temperature. A matched filter correlator, previously developed at UCF in MATLAB, has been ported to Python to be compatible with the USRP and Linux. A reference thermocouple (wired) is attached to the SAW sensor (wireless) to ensure that the extracted temperature is accurate. Receiving one data sweep, post processing with 10,000 matched filters, and extracting temperature takes approximately 0.1 seconds. Averaging multiple data sweeps is possible (coherent integration) with 1000 averages taking approximately 1.0 second. The sensor was cooled (cold nitrogen gas) and heated (electric heat gun) randomly before being allowed to return to room temperature. The extracted temperature for the SAW sensor with reference thermocouple are given in Figure 9.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-188-saw-sensor-and-tc.png|thumb|500px|center|Figure 9: Extracted temperature of a wireless SAW sensor with a reference thermocouple. The sensor was cooled (cold nitrogen gas) and heated (electric heat gun) randomly and then let to return to room temperature. The SAW sensor was interrogated wirelessly with the USRP B200 system.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The system is also capable of interrogating multiple sensors, simultaneously. A set of four (4) SAW sensors were designed which are compatible with the USRP system. Each sensor has a unique OFC set and static time delay to the first reflector (ranging from 2.5 to 5 micro-seconds). Each sensor response is 570ns long and each is comprised of 4 OFC chips. The sensors are interrogated simultaneously by the interrogation pulse from the USRP. Each sensor response is then processed separately to extract the sensor temperature. Two (2) sensors were heated/cooled randomly while the other two (2) sensors were left to remain at room temperature. The extracted temperatures for all four (4) temperature sensors is plotted in Figure 10.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-188-usrp-sensors-temp-all.png|thumb|500px|center|Figure 10: Simultaneous interrogation of four (4) wireless SAW temperature sensors. Two of the sensors were heated (electric heat gun) or cooled (cold nitrogen gas) randomly. The other two sensors were left to remain at room temperature. Some variability in the measurements is evident due to inter-sensor interference.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
The USRP B200mini was successfully utilized to implement an efficient interrogation system for passive, wireless SAW strain sensors. A pulsed interrogator design was able to be implemented due to the open-source FPGA design, allowing the custom functionality required by this application to be implemented. The USRP can be quickly reconfigured as the sensor designs evolve to improve performance or for new sensor designs such as strain or gas measurements. Currently, the system is capable of extracting the SAW sensor temperature accurately from a range of up to 5 meters. Work is continuing to improve the system performance as well as implementing different interrogator embodiments.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
# Malocha, D.C.; Puccio, D.; Gallagher, D., &amp;quot;Orthogonal frequency coding for SAW device applications,&amp;quot; Ultrasonics Symposium, 2004 IEEE , vol.2, no., pp.1082,1085 Vol.2, 23-27 Aug. 2004&lt;br /&gt;
# Malocha, D.C.; Gallagher, M., &amp;quot;Coherent correlator multi-sensor receiver,&amp;quot; Frequency Control Symposium (FCS), 2012 IEEE International , vol., no., pp.1,5, 21-24 May 2012&lt;br /&gt;
# Humphries, J.R.; Gallagher, M.W.; Gallagher, D.R.; Weeks, A.R.; Malocha, D.C., &amp;quot;Interrogation of orthogonal frequency coded SAW sensors using the USRP,&amp;quot; in Frequency Control Symposium &amp;amp; the European Frequency and Time Forum (FCS), 2015 Joint Conference of the IEEE International , vol., no., pp.530-535, 12-16 April 2015&lt;br /&gt;
# Gallagher, M.W.; Smith, W.C.; Malocha, D.C., &amp;quot;An integrated SAW sensor with direct write antenna,&amp;quot; in European Frequency and Time Forum &amp;amp; International Frequency Control Symposium (EFTF/IFC), 2013 Joint , vol., no., pp.450-453, 21-25 July 2013&lt;br /&gt;
&lt;br /&gt;
==Contact Information==&lt;br /&gt;
* Dr. Donald C. Malocha&lt;br /&gt;
* [mailto:Donald.Malocha@ucf.edu Donald.Malocha@ucf.edu]&lt;br /&gt;
* University of Central Florida&lt;br /&gt;
* [http://caat.engr.ucf.edu/ CAAT Website]&lt;br /&gt;
&lt;br /&gt;
[[Category:Application Notes]]&lt;/div&gt;</summary>
		<author><name>JamesHumphries</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=About_the_Motherboard_and_Daughtercard_EEPROM_on_USRP_Devices&amp;diff=2533</id>
		<title>About the Motherboard and Daughtercard EEPROM on USRP Devices</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=About_the_Motherboard_and_Daughtercard_EEPROM_on_USRP_Devices&amp;diff=2533"/>
				<updated>2016-05-16T20:29:00Z</updated>
		
		<summary type="html">&lt;p&gt;JamesHumphries: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Application Note Number==&lt;br /&gt;
'''AN-309 '''&lt;br /&gt;
&lt;br /&gt;
==Revision History==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Date&lt;br /&gt;
!Author&lt;br /&gt;
!Details&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| 2016-05-16  &lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| Trip Humphries&lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| Initial creation&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=USRP EEPROM Settings &amp;amp; Recovery Guide=&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==EEPROM Burn Utility==&lt;br /&gt;
&lt;br /&gt;
'''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 [mailto:support@ettus.com support@ettus.com] if you are unsure how to proceed.'''&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
 ./uhd/utils/&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;lt;optional device args&amp;gt; --read-all&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;type=b200&amp;quot; --read-all &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=X300/310 EEPROM=&lt;br /&gt;
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 &amp;quot;User Customizable?=No&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''X300/310 EEPROM Setting:'''&lt;br /&gt;
|'''User Customizable?'''&lt;br /&gt;
|'''Description'''&lt;br /&gt;
|-&lt;br /&gt;
|revision&lt;br /&gt;
|No&lt;br /&gt;
|Hardware Number&lt;br /&gt;
|-&lt;br /&gt;
|revision_compat&lt;br /&gt;
|No&lt;br /&gt;
|Revision Number&lt;br /&gt;
|-&lt;br /&gt;
|product&lt;br /&gt;
|No&lt;br /&gt;
|Product Code&lt;br /&gt;
|-&lt;br /&gt;
|serial&lt;br /&gt;
|No&lt;br /&gt;
|Unique USRP Serial Number&lt;br /&gt;
|-&lt;br /&gt;
|mac-addr0&lt;br /&gt;
|No&lt;br /&gt;
|MAC Address (Port 0)&lt;br /&gt;
|-&lt;br /&gt;
|mac-addr1&lt;br /&gt;
|No&lt;br /&gt;
|MAC Address (Port 1)&lt;br /&gt;
|-&lt;br /&gt;
|gateway&lt;br /&gt;
|Yes&lt;br /&gt;
|Network Gateway&lt;br /&gt;
|-&lt;br /&gt;
|subnet0&lt;br /&gt;
|Yes&lt;br /&gt;
|Subnet Mask&lt;br /&gt;
|-&lt;br /&gt;
|subnet1&lt;br /&gt;
|Yes&lt;br /&gt;
|Subnet Mask&lt;br /&gt;
|-&lt;br /&gt;
|subnet2&lt;br /&gt;
|Yes&lt;br /&gt;
|Subnet Mask&lt;br /&gt;
|-&lt;br /&gt;
|subnet3&lt;br /&gt;
|Yes&lt;br /&gt;
|Subnet Mask&lt;br /&gt;
|-&lt;br /&gt;
|ip-addr0&lt;br /&gt;
|Yes&lt;br /&gt;
|IP Address&lt;br /&gt;
|-&lt;br /&gt;
|ip-addr1&lt;br /&gt;
|Yes&lt;br /&gt;
|IP Address&lt;br /&gt;
|-&lt;br /&gt;
|ip-addr2&lt;br /&gt;
|Yes&lt;br /&gt;
|IP Address&lt;br /&gt;
|-&lt;br /&gt;
|ip-addr3&lt;br /&gt;
|Yes&lt;br /&gt;
|IP Address&lt;br /&gt;
|-&lt;br /&gt;
|name&lt;br /&gt;
|Yes&lt;br /&gt;
|Custom USRP Name&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
As an example, the EEPROM settings of an X310 with IP address 192.168.10.2 could be read-back with the following command:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;addr=192.168.10.2,type=x300&amp;quot; --read-all&lt;br /&gt;
&lt;br /&gt;
and the output would look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fetching current settings from EEPROM...&lt;br /&gt;
	EEPROM [&amp;quot;revision&amp;quot;] is &amp;quot;4&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;revision_compat&amp;quot;] is &amp;quot;2&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;product&amp;quot;] is &amp;quot;30AD2D4&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;mac-addr0&amp;quot;] is &amp;quot;xx:xx:xx:xx:xx:xx&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;mac-addr1&amp;quot;] is &amp;quot;xx:xx:xx:xx:xx:xx&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;gateway&amp;quot;] is &amp;quot;192.168.10.1&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;ip-addr0&amp;quot;] is &amp;quot;192.168.10.2&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;subnet0&amp;quot;] is &amp;quot;255.255.255.0&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;ip-addr1&amp;quot;] is &amp;quot;192.168.20.2&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;subnet1&amp;quot;] is &amp;quot;255.255.255.0&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;ip-addr2&amp;quot;] is &amp;quot;192.168.10.3&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;subnet2&amp;quot;] is &amp;quot;255.255.255.0&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;ip-addr3&amp;quot;] is &amp;quot;192.168.40.2&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;subnet3&amp;quot;] is &amp;quot;255.255.255.0&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;serial&amp;quot;] is &amp;quot;30AF217&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;name&amp;quot;] is &amp;quot;&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Determining X300/X310 Revision Number==&lt;br /&gt;
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\&amp;lt;R&amp;gt;-\&amp;lt;XXX&amp;gt; where \&amp;lt;R&amp;gt; is a letter code that corresponds to the revision number. The photograph below highlights the location of the sticker:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-309-x3x0-rev-id.png|thumb|500px|center|The USRP X300/310 motherboard has a sticker that identifies the product and revision. The sticker is outlined in red.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once the letter code has been determined use the table below to map the letter code to a revision number:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''Letter'''&lt;br /&gt;
|'''Revision #'''&lt;br /&gt;
|-&lt;br /&gt;
|C&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|D&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|E&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|F&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|G&lt;br /&gt;
|7&lt;br /&gt;
|-&lt;br /&gt;
|H&lt;br /&gt;
|8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Restore X300/310 EEPROM Revision Code==&lt;br /&gt;
&lt;br /&gt;
A corrupted or missing revision code in the X300/310 EEPROM will be indicated by a UHD runtime error:&lt;br /&gt;
&lt;br /&gt;
 Error: RuntimeError: No revision compat detected. MB EEPROM must be reprogrammed!&lt;br /&gt;
&lt;br /&gt;
If this problem is encountered, the usrp_burn_mb_eeprom utility can be used to restore the X300/310 revision code in the EEPROM. First, the X300/X310 revision number must be determined. Once the revision number for your X300/310 is known, the usrp_burn_mb_eeprom utility can be used to restore the revision code to the EEPROM. The syntax is as follows:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;recover_mb_eeprom&amp;quot; --values=&amp;quot;revision=&amp;lt;#&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;#&amp;gt; is the revision number of your X300/310 to be written to the EEPROM. For example, to restore the revision number in EEPROM for a Rev. 6 X300 with an IP address of 192.168.10.2, the command would be:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;recover_mb_eeprom,addr=192.168.10.2&amp;quot; --values=&amp;quot;revision=6&amp;quot;&lt;br /&gt;
&lt;br /&gt;
After the utility has been run, power cycle the USRP and then run uhd_usrp_probe to ensure that the new revision number has been written to the EEPROM correctly. If you are unsure of how to accomplish these steps, please feel free to contact Ettus Support at [mailto:support@ettus.com support@ettus.com].&lt;br /&gt;
&lt;br /&gt;
==Restore X300/310 EEPROM Product Code==&lt;br /&gt;
&lt;br /&gt;
A corrupted product code in the X300/310 EEPROM will be indicated by a UHD warning:&lt;br /&gt;
&lt;br /&gt;
 UHD Warning: X300/X310 unknown product code in EEPROM: &amp;lt;###&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;###&amp;gt; is some numbered code that is unknown by UHD. If this problem is encountered, the usrp_burn_mb_eeprom utility can be used to write a new product code to the EEPROM. First, the X300/X310 revision number must be determined. Once the revision number has been determined, refer to the table below to find the product code for the X300/310:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''USRP'''&lt;br /&gt;
|'''Rev. 0-6'''&lt;br /&gt;
|'''Rev. 7-8'''&lt;br /&gt;
|-&lt;br /&gt;
|X300&lt;br /&gt;
|30518 (0x7763)&lt;br /&gt;
|30817 (0x7861)&lt;br /&gt;
|-&lt;br /&gt;
|X310&lt;br /&gt;
|30410 (0x76CA)&lt;br /&gt;
|30818 (0x7862)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Once the correct product code has been determined base on the X3x0 model and revision, the usrp_burn_mb_eeprom utility can be used to write the correct product code to the EEPROM. They syntax is as follows:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;recover_mb_eeprom&amp;quot; --values=&amp;quot;product=&amp;lt;###&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;###&amp;gt; is the product code to be written to the EEPROM. For example, on a Rev. 7 X300 with an IP address of 191.168.10.2, the command would be:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;recover_mb_eeprom,addr=192.168.10.2&amp;quot; --values=&amp;quot;product=30817&amp;quot;&lt;br /&gt;
&lt;br /&gt;
After the utility has been run, power cycle the USRP and then run uhd_usrp_probe to ensure that the new revision number has been written to the EEPROM correctly. If you are unsure of how to accomplish these steps, please feel free to contact Ettus Support at [mailto:support@ettus.com support@ettus.com].&lt;br /&gt;
&lt;br /&gt;
==National Instruments USRP RIO==&lt;br /&gt;
&lt;br /&gt;
The National Instruments branded X300/310 have unique product codes to identify the motherboard revision as well as the daughter-cards in the USRP. The product codes are listed below:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''Model (DB, BW, Rev.)'''&lt;br /&gt;
|'''Hex ID'''&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2940R (WBX, 40 MHz BW, Rev. 0-6)       &lt;br /&gt;
|0x772B&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2940R (WBX, 40 MHz BW, Rev. 7+)        &lt;br /&gt;
|0x7853&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2940R (WBX, 120 MHz BW, Rev. 0-6)      &lt;br /&gt;
|0x77FB&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2940R (WBX, 120 MHz BW, Rev. 7+)       &lt;br /&gt;
|0x785B&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2942R (SBX, 40 MHz BW, Rev. 0-6)       &lt;br /&gt;
|0x772C&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2942R (SBX, 40 MHz BW, Rev. 7+)        &lt;br /&gt;
|0x7854&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2942R (SBX, 120 MHz BW, Rev. 0-6)      &lt;br /&gt;
|0x77FC&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2942R (SBX, 120 MHz BW, Rev. 7+)       &lt;br /&gt;
|0x785C&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2943R (CBX, 40 MHz BW, Rev. 0-6)       &lt;br /&gt;
|0x772D&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2943R (CBX, 40 MHz BW, Rev. 7+)        &lt;br /&gt;
|0x7855&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2943R (CBX, 120 MHz BW, Rev. 0-6)      &lt;br /&gt;
|0x77FD&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2943R (CBX, 120 MHz BW, Rev. 7+)       &lt;br /&gt;
|0x785D&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2944R (UBX, 160 MHz BW, Rev. 0-6)      &lt;br /&gt;
|0x772E&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2944R (UBX, 160 MHz BW, Rev. 7+)       &lt;br /&gt;
|0x7856&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2950R (GPS, WBX, 40 MHz BW, Rev. 0-6)  &lt;br /&gt;
|0x772F&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2950R (GPS, WBX, 40 MHz BW, Rev. 7+)   &lt;br /&gt;
|0x7857&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2950R (GPS, WBX, 120 MHz BW, Rev. 0-6) &lt;br /&gt;
|0x77FE&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2950R (GPS, WBX, 120 MHz BW, Rev. 7+   &lt;br /&gt;
|0x785E&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2952R (GPS, SBX, 40 MHz BW, Rev. 0-6)  &lt;br /&gt;
|0x7730&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2952R (GPS, SBX, 40 MHz BW, Rev. 7+)   &lt;br /&gt;
|0x7858&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2952R (GPS, SBX, 120 MHz BW, Rev. 0-6) &lt;br /&gt;
|0x77FF&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2952R (GPS, SBX, 120 MHz BW, Rev. 7+   &lt;br /&gt;
|0x785F&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2953R (GPS, CBX, 40 MHz BW, Rev. 0-6)  &lt;br /&gt;
|0x7731&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2953R (GPS, CBX, 40 MHz BW, Rev. 7+)   &lt;br /&gt;
|0x7859&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2953R (GPS, CBX, 120 MHz BW, Rev. 0-6) &lt;br /&gt;
|0x7800&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2953R (GPS, CBX, 120 MHz BW, Rev. 7+)  &lt;br /&gt;
|0x7860&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2954R (GPS, UBX, 160 MHz BW, Rev. 0-6) &lt;br /&gt;
|0x7732&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2954R (GPS, UBX, 160 MHz BW, Rev. 7+)  &lt;br /&gt;
|0x785A&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=N200/210 EEPROM=&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''N200/210 EEPROM Setting'''&lt;br /&gt;
|'''User Customizable?'''&lt;br /&gt;
|'''Description'''&lt;br /&gt;
|-&lt;br /&gt;
|hardware&lt;br /&gt;
|No&lt;br /&gt;
|Hardware Number&lt;br /&gt;
|-&lt;br /&gt;
|revision&lt;br /&gt;
|No&lt;br /&gt;
|Revision Number&lt;br /&gt;
|-&lt;br /&gt;
|product&lt;br /&gt;
|No&lt;br /&gt;
|Product Code&lt;br /&gt;
|-&lt;br /&gt;
|mac-addr&lt;br /&gt;
|No&lt;br /&gt;
|MAC Address&lt;br /&gt;
|-&lt;br /&gt;
|ip-addr&lt;br /&gt;
|Yes&lt;br /&gt;
|IP Address&lt;br /&gt;
|-&lt;br /&gt;
|subnet&lt;br /&gt;
|Yes&lt;br /&gt;
|Subnetwork&lt;br /&gt;
|-&lt;br /&gt;
|gateway&lt;br /&gt;
|Yes&lt;br /&gt;
|Network Gateway&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The N200/210 do not store the product codes in the motherboard EEPROM. The &amp;quot;hardware&amp;quot; field is programmed at the factory but is not referenced by UHD. Instead, the revision field is used to determine the N200/210 hardware in use. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''USRP'''&lt;br /&gt;
|'''Motherboard Product ID'''&lt;br /&gt;
|-&lt;br /&gt;
|N200&lt;br /&gt;
|0x0A00&lt;br /&gt;
|-&lt;br /&gt;
|N210&lt;br /&gt;
|0x0A01&lt;br /&gt;
|-&lt;br /&gt;
|N200 - R4&lt;br /&gt;
|0x0A10&lt;br /&gt;
|-&lt;br /&gt;
|N210 - R4&lt;br /&gt;
|0x0A11&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=B200/210 and B200mini EEPROM=&lt;br /&gt;
&lt;br /&gt;
The USRP B200 and B210 EEPROM is used to store certain information about each board. The USB PID (Product ID) and VID (Vendor ID) are stored in the EEPROM as well as serial number, product code, hardware revision, and USRP name for each B200/210. A table of these settings and whether or not the setting is user customizable is given below:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''B200/210 EEPROM Setting'''&lt;br /&gt;
|'''User Customizable?'''&lt;br /&gt;
|'''Description'''&lt;br /&gt;
|-&lt;br /&gt;
|revision&lt;br /&gt;
|No&lt;br /&gt;
|Revision Number&lt;br /&gt;
|-&lt;br /&gt;
|product&lt;br /&gt;
|No&lt;br /&gt;
|Product Code&lt;br /&gt;
|-&lt;br /&gt;
|serial&lt;br /&gt;
|No&lt;br /&gt;
|Unique Serial Number&lt;br /&gt;
|-&lt;br /&gt;
|name&lt;br /&gt;
|Yes&lt;br /&gt;
|Custom USRP Name&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To read the current EEPROM values from the USRP, use the usrp_burn_mb_eeprom utility:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;type=b200&amp;quot; --read-all&lt;br /&gt;
&lt;br /&gt;
This will read the settings and print them to the terminal. A sample output is shown below for a USRP B210:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fetching current settings from EEPROM...&lt;br /&gt;
	EEPROM [&amp;quot;revision&amp;quot;] is &amp;quot;4&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;product&amp;quot;] is &amp;quot;2&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;serial&amp;quot;] is &amp;quot;30AD2D4&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;name&amp;quot;] is &amp;quot;MyB210&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If desired, a B200/210 could be given a custom name with the following command:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;type=b200&amp;quot; --values=&amp;quot;name=Lab_B210&amp;quot;&lt;br /&gt;
&lt;br /&gt;
After the command has been run, the device must be power-cycled for the new EEPROM setting to take effect. Reading the updated EEPROM values yields:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fetching current settings from EEPROM...&lt;br /&gt;
	EEPROM [&amp;quot;revision&amp;quot;] is &amp;quot;4&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;product&amp;quot;] is &amp;quot;2&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;serial&amp;quot;] is &amp;quot;30AD2D4&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;name&amp;quot;] is &amp;quot;Lab_B210&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==USB VID/PID==&lt;br /&gt;
&lt;br /&gt;
The USB vendor identification (VID) and product identification (PID) numbers can be written to the USRP B200/210 using the &amp;quot;b2xx_fx3_utils&amp;quot; utility that is included with UHD. To reset the VID and PID, the command would be:&lt;br /&gt;
&lt;br /&gt;
 ./b2xx_fx3_utils --init-device --write-vid 0x2500 --write-pid -0x0020&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''USRP'''&lt;br /&gt;
|'''USB PID'''&lt;br /&gt;
|-&lt;br /&gt;
|B200&lt;br /&gt;
|0x0020&lt;br /&gt;
|-&lt;br /&gt;
|B210&lt;br /&gt;
|0x0020&lt;br /&gt;
|-&lt;br /&gt;
|B200 (NI)&lt;br /&gt;
|0x7813&lt;br /&gt;
|-&lt;br /&gt;
|B210 (NI)&lt;br /&gt;
|0x7814&lt;br /&gt;
|-&lt;br /&gt;
|B200mini&lt;br /&gt;
|0x0021&lt;br /&gt;
|-&lt;br /&gt;
|B205mini&lt;br /&gt;
|0x0022&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The VID is the same for all B2x0 variants, 0x2500.&lt;br /&gt;
&lt;br /&gt;
=Daughtercard ID's=&lt;br /&gt;
&lt;br /&gt;
Below is a comprehensive list of the daughtercard hex ID's.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''Name'''&lt;br /&gt;
|'''Hex ID'''&lt;br /&gt;
|-&lt;br /&gt;
|Basic Tx		    &lt;br /&gt;
| 0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Basic Rx   		    &lt;br /&gt;
| 0x0001&lt;br /&gt;
|-&lt;br /&gt;
|DBS Rx      		&lt;br /&gt;
| 0x0002&lt;br /&gt;
|-&lt;br /&gt;
|TV Rx       		&lt;br /&gt;
| 0x0003&lt;br /&gt;
|-&lt;br /&gt;
|Flex 400 Rx			&lt;br /&gt;
| 0x0004&lt;br /&gt;
|-&lt;br /&gt;
|Flex 900 Rx			&lt;br /&gt;
| 0x0005&lt;br /&gt;
|-&lt;br /&gt;
|Flex 1200 Rx		&lt;br /&gt;
| 0x0006&lt;br /&gt;
|-&lt;br /&gt;
|Flex 2400 Rx		&lt;br /&gt;
| 0x0007&lt;br /&gt;
|-&lt;br /&gt;
|Flex 400 Tx			&lt;br /&gt;
| 0x0008&lt;br /&gt;
|-&lt;br /&gt;
|Flex 900 Tx			&lt;br /&gt;
| 0x0009&lt;br /&gt;
|-&lt;br /&gt;
|Flex 1200 Tx		&lt;br /&gt;
| 0x000a&lt;br /&gt;
|-&lt;br /&gt;
|Flex 2400 Tx		&lt;br /&gt;
| 0x000b&lt;br /&gt;
|-&lt;br /&gt;
|TV Rx Rev 2			&lt;br /&gt;
| 0x000c&lt;br /&gt;
|-&lt;br /&gt;
|DBS Rx ClkMod		&lt;br /&gt;
| 0x000d&lt;br /&gt;
|-&lt;br /&gt;
|LF Tx				&lt;br /&gt;
| 0x000e&lt;br /&gt;
|-&lt;br /&gt;
|LF Rx				&lt;br /&gt;
| 0x000f&lt;br /&gt;
|-&lt;br /&gt;
|DBSRX2				&lt;br /&gt;
| 0x012&lt;br /&gt;
|-&lt;br /&gt;
|Flex 400 Rx MIMO A	&lt;br /&gt;
| 0x0014&lt;br /&gt;
|-&lt;br /&gt;
|Flex 900 Rx MIMO A	&lt;br /&gt;
| 0x0015&lt;br /&gt;
|-&lt;br /&gt;
|Flex 1200 Rx MIMO A &lt;br /&gt;
| 0x0016&lt;br /&gt;
|-&lt;br /&gt;
|Flex 2400 Rx MIMO A &lt;br /&gt;
| 0x0017&lt;br /&gt;
|-&lt;br /&gt;
|Flex 400 Tx MIMO A  &lt;br /&gt;
| 0x0018&lt;br /&gt;
|-&lt;br /&gt;
|Flex 900 Tx MIMO A	&lt;br /&gt;
| 0x0019&lt;br /&gt;
|-&lt;br /&gt;
|Flex 1200 Tx MIMO A &lt;br /&gt;
| 0x001a&lt;br /&gt;
|-&lt;br /&gt;
|Flex 2400 Tx MIMO A &lt;br /&gt;
| 0x001b&lt;br /&gt;
|-&lt;br /&gt;
|Flex 400 Rx MIMO B	&lt;br /&gt;
| 0x0024&lt;br /&gt;
|-&lt;br /&gt;
|Flex 900 Rx MIMO B  &lt;br /&gt;
| 0x0025&lt;br /&gt;
|-&lt;br /&gt;
|Flex 1200 Rx MIMO B &lt;br /&gt;
| 0x0026&lt;br /&gt;
|-&lt;br /&gt;
|Flex 2400 Rx MIMO B &lt;br /&gt;
| 0x0027&lt;br /&gt;
|-&lt;br /&gt;
|Flex 400 Tx MIMO B	&lt;br /&gt;
| 0x0028&lt;br /&gt;
|-&lt;br /&gt;
|Flex 900 Tx MIMO B	&lt;br /&gt;
| 0x0029&lt;br /&gt;
|-&lt;br /&gt;
|Flex 1200 Tx MIMO B	&lt;br /&gt;
| 0x002a&lt;br /&gt;
|-&lt;br /&gt;
|Flex 2400 Tx MIMO B &lt;br /&gt;
| 0x002b&lt;br /&gt;
|-&lt;br /&gt;
|Flex 2200 Rx MIMO B &lt;br /&gt;
| 0x002c&lt;br /&gt;
|-&lt;br /&gt;
|Flex 2200 Tx MIMO B	&lt;br /&gt;
| 0x002d&lt;br /&gt;
|-&lt;br /&gt;
|Flex 1800 Rx		&lt;br /&gt;
| 0x0030&lt;br /&gt;
|-&lt;br /&gt;
|Flex 1800 Tx		&lt;br /&gt;
| 0x0031&lt;br /&gt;
|-&lt;br /&gt;
|Flex 1800 Rx MIMO A	&lt;br /&gt;
| 0x0032&lt;br /&gt;
|-&lt;br /&gt;
|Flex 1800 Tx MIMO A	&lt;br /&gt;
| 0x0033&lt;br /&gt;
|-&lt;br /&gt;
|Flex 1800 Rx MIMO B &lt;br /&gt;
| 0x0034&lt;br /&gt;
|-&lt;br /&gt;
|Flex 1800 Tx MIMO B &lt;br /&gt;
| 0x0035&lt;br /&gt;
|-&lt;br /&gt;
|TV Rx Rev 3			&lt;br /&gt;
| 0x0040&lt;br /&gt;
|-&lt;br /&gt;
|DTT754				&lt;br /&gt;
| 0x0041&lt;br /&gt;
|-&lt;br /&gt;
|DTT768				&lt;br /&gt;
| 0x0042&lt;br /&gt;
|-&lt;br /&gt;
|TV Rx MIMO			&lt;br /&gt;
| 0x0043&lt;br /&gt;
|-&lt;br /&gt;
|TV Rx Rev 2 MIMO	&lt;br /&gt;
| 0x0044&lt;br /&gt;
|-&lt;br /&gt;
|TV Rx Rev 3 MIMO	&lt;br /&gt;
| 0x0045&lt;br /&gt;
|-&lt;br /&gt;
|TVRX2				&lt;br /&gt;
| 0x0046&lt;br /&gt;
|-&lt;br /&gt;
|WCDMA US			&lt;br /&gt;
| 0x004d&lt;br /&gt;
|-&lt;br /&gt;
|WCDMA EU			&lt;br /&gt;
| 0x004e&lt;br /&gt;
|-&lt;br /&gt;
|SIMPLE GDB			&lt;br /&gt;
| 0x004f&lt;br /&gt;
|-&lt;br /&gt;
|WBX LO TX			&lt;br /&gt;
| 0x0050&lt;br /&gt;
|-&lt;br /&gt;
|WBX LO RX			&lt;br /&gt;
| 0x0051&lt;br /&gt;
|-&lt;br /&gt;
|WBX NG TX			&lt;br /&gt;
| 0x0052&lt;br /&gt;
|-&lt;br /&gt;
|WBX NG RX			&lt;br /&gt;
| 0x0053&lt;br /&gt;
|-&lt;br /&gt;
|SBX v3 RX			&lt;br /&gt;
| 0x0054&lt;br /&gt;
|-&lt;br /&gt;
|SBX v3 TX			&lt;br /&gt;
| 0x0055&lt;br /&gt;
|-&lt;br /&gt;
|WBX v3 TX			&lt;br /&gt;
| 0x0056&lt;br /&gt;
|-&lt;br /&gt;
|WBX v3 RX			&lt;br /&gt;
| 0x0057&lt;br /&gt;
|-&lt;br /&gt;
|XCVR2450 - No Div	&lt;br /&gt;
| 0x0059&lt;br /&gt;
|-&lt;br /&gt;
|XCVR2450 TX			&lt;br /&gt;
| 0x0060&lt;br /&gt;
|-&lt;br /&gt;
|XCVR2450 RX			&lt;br /&gt;
| 0x0061&lt;br /&gt;
|-&lt;br /&gt;
|WBX v4 TX			&lt;br /&gt;
| 0x0062&lt;br /&gt;
|-&lt;br /&gt;
|WBX v4 RX			&lt;br /&gt;
| 0x0063&lt;br /&gt;
|-&lt;br /&gt;
|SBX v4 TX			&lt;br /&gt;
| 0x0064&lt;br /&gt;
|-&lt;br /&gt;
|SBX v4 RX			&lt;br /&gt;
| 0x0065&lt;br /&gt;
|-&lt;br /&gt;
|CBX v1 TX			&lt;br /&gt;
| 0x0066&lt;br /&gt;
|-&lt;br /&gt;
|CBX v1 RX			&lt;br /&gt;
| 0x0067&lt;br /&gt;
|-&lt;br /&gt;
|SBX v5 TX			&lt;br /&gt;
| 0x0068&lt;br /&gt;
|-&lt;br /&gt;
|SBX v5 RX			&lt;br /&gt;
| 0x0069&lt;br /&gt;
|-&lt;br /&gt;
|UBX-Prototype v3 TX	&lt;br /&gt;
| 0x0073&lt;br /&gt;
|-&lt;br /&gt;
|UBX-Prototype v3 RX &lt;br /&gt;
| 0x0074&lt;br /&gt;
|-&lt;br /&gt;
|UBX-Prototype v4 TX &lt;br /&gt;
| 0x0075&lt;br /&gt;
|-&lt;br /&gt;
|UBX-Prototype v4 RX &lt;br /&gt;
| 0x0076&lt;br /&gt;
|-&lt;br /&gt;
|UBX v1 TX			&lt;br /&gt;
| 0x0077&lt;br /&gt;
|-&lt;br /&gt;
|UBX v1 RX			&lt;br /&gt;
| 0x0078&lt;br /&gt;
|-&lt;br /&gt;
|UBX-160 v1 TX		&lt;br /&gt;
| 0x0079&lt;br /&gt;
|-&lt;br /&gt;
|UBX-160 v1 RX		&lt;br /&gt;
| 0x007a&lt;br /&gt;
|-&lt;br /&gt;
|Bitshark RX			&lt;br /&gt;
| 0x0070&lt;br /&gt;
|-&lt;br /&gt;
|B150 v1 TX			&lt;br /&gt;
| 0x0071&lt;br /&gt;
|-&lt;br /&gt;
|B150 v1 RX			&lt;br /&gt;
| 0x0072&lt;br /&gt;
|-&lt;br /&gt;
|WBX-120 v1 TX		&lt;br /&gt;
| 0x0080&lt;br /&gt;
|-&lt;br /&gt;
|WBX-120 v1 RX		&lt;br /&gt;
| 0x0081&lt;br /&gt;
|-&lt;br /&gt;
|SBX-120 v1 TX		&lt;br /&gt;
| 0x0082&lt;br /&gt;
|-&lt;br /&gt;
|SBX-120 v1 RX		&lt;br /&gt;
| 0x0083&lt;br /&gt;
|-&lt;br /&gt;
|CBX-120 v1 TX		&lt;br /&gt;
| 0x0084&lt;br /&gt;
|-&lt;br /&gt;
|CBX-120 v1 RX		&lt;br /&gt;
| 0x0085&lt;br /&gt;
|-&lt;br /&gt;
|EvilTwin RX1		&lt;br /&gt;
| 0x0090&lt;br /&gt;
|-&lt;br /&gt;
|EvilTwin RX2		&lt;br /&gt;
| 0x0091&lt;br /&gt;
|-&lt;br /&gt;
|E300 AD3964 DB RevB	&lt;br /&gt;
| 0x0100&lt;br /&gt;
|-&lt;br /&gt;
|E310 AD9361 DB RevB	&lt;br /&gt;
| 0x0110&lt;br /&gt;
|-&lt;br /&gt;
|E300 AD9364 DB RevC	&lt;br /&gt;
| 0x0101&lt;br /&gt;
|-&lt;br /&gt;
|E310 AD9361 DB RevC	&lt;br /&gt;
| 0x0111&lt;br /&gt;
|-&lt;br /&gt;
|Unknown Tx			&lt;br /&gt;
| 0xfff0&lt;br /&gt;
|-&lt;br /&gt;
|Unknown Rx			&lt;br /&gt;
| 0xfff1&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Motherboard ID's=&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''Name'''&lt;br /&gt;
|'''Hex ID'''&lt;br /&gt;
|-&lt;br /&gt;
|B200&lt;br /&gt;
|0x7737&lt;br /&gt;
|-&lt;br /&gt;
|B210&lt;br /&gt;
|0x7738&lt;br /&gt;
|-&lt;br /&gt;
|B200mini&lt;br /&gt;
|0x7739&lt;br /&gt;
|-&lt;br /&gt;
|B205mini&lt;br /&gt;
|0x773a&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>JamesHumphries</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=About_the_Motherboard_and_Daughtercard_EEPROM_on_USRP_Devices&amp;diff=2532</id>
		<title>About the Motherboard and Daughtercard EEPROM on USRP Devices</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=About_the_Motherboard_and_Daughtercard_EEPROM_on_USRP_Devices&amp;diff=2532"/>
				<updated>2016-05-16T20:10:34Z</updated>
		
		<summary type="html">&lt;p&gt;JamesHumphries: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Application Note Number==&lt;br /&gt;
'''AN-309 '''&lt;br /&gt;
&lt;br /&gt;
==Revision History==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Date&lt;br /&gt;
!Author&lt;br /&gt;
!Details&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| 2016-05-16  &lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| Trip Humphries&lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| Initial creation&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=USRP EEPROM Settings &amp;amp; Recovery Guide=&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==EEPROM Burn Utility==&lt;br /&gt;
&lt;br /&gt;
'''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 [mailto:support@ettus.com support@ettus.com] if you are unsure how to proceed.'''&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
 ./uhd/utils/&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;lt;optional device args&amp;gt; --read-all&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;type=b200&amp;quot; --read-all &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=X300/310 EEPROM=&lt;br /&gt;
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 &amp;quot;User Customizable?=No&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''X300/310 EEPROM Setting:'''&lt;br /&gt;
|'''User Customizable?'''&lt;br /&gt;
|'''Description'''&lt;br /&gt;
|-&lt;br /&gt;
|revision&lt;br /&gt;
|No&lt;br /&gt;
|Hardware Number&lt;br /&gt;
|-&lt;br /&gt;
|revision_compat&lt;br /&gt;
|No&lt;br /&gt;
|Revision Number&lt;br /&gt;
|-&lt;br /&gt;
|product&lt;br /&gt;
|No&lt;br /&gt;
|Product Code&lt;br /&gt;
|-&lt;br /&gt;
|serial&lt;br /&gt;
|No&lt;br /&gt;
|Unique USRP Serial Number&lt;br /&gt;
|-&lt;br /&gt;
|mac-addr0&lt;br /&gt;
|No&lt;br /&gt;
|MAC Address (Port 0)&lt;br /&gt;
|-&lt;br /&gt;
|mac-addr1&lt;br /&gt;
|No&lt;br /&gt;
|MAC Address (Port 1)&lt;br /&gt;
|-&lt;br /&gt;
|gateway&lt;br /&gt;
|Yes&lt;br /&gt;
|Network Gateway&lt;br /&gt;
|-&lt;br /&gt;
|subnet0&lt;br /&gt;
|Yes&lt;br /&gt;
|Subnet Mask&lt;br /&gt;
|-&lt;br /&gt;
|subnet1&lt;br /&gt;
|Yes&lt;br /&gt;
|Subnet Mask&lt;br /&gt;
|-&lt;br /&gt;
|subnet2&lt;br /&gt;
|Yes&lt;br /&gt;
|Subnet Mask&lt;br /&gt;
|-&lt;br /&gt;
|subnet3&lt;br /&gt;
|Yes&lt;br /&gt;
|Subnet Mask&lt;br /&gt;
|-&lt;br /&gt;
|ip-addr0&lt;br /&gt;
|Yes&lt;br /&gt;
|IP Address&lt;br /&gt;
|-&lt;br /&gt;
|ip-addr1&lt;br /&gt;
|Yes&lt;br /&gt;
|IP Address&lt;br /&gt;
|-&lt;br /&gt;
|ip-addr2&lt;br /&gt;
|Yes&lt;br /&gt;
|IP Address&lt;br /&gt;
|-&lt;br /&gt;
|ip-addr3&lt;br /&gt;
|Yes&lt;br /&gt;
|IP Address&lt;br /&gt;
|-&lt;br /&gt;
|name&lt;br /&gt;
|Yes&lt;br /&gt;
|Custom USRP Name&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
As an example, the EEPROM settings of an X310 with IP address 192.168.10.2 could be read-back with the following command:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;addr=192.168.10.2,type=x300&amp;quot; --read-all&lt;br /&gt;
&lt;br /&gt;
and the output would look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fetching current settings from EEPROM...&lt;br /&gt;
	EEPROM [&amp;quot;revision&amp;quot;] is &amp;quot;4&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;revision_compat&amp;quot;] is &amp;quot;2&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;product&amp;quot;] is &amp;quot;30AD2D4&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;mac-addr0&amp;quot;] is &amp;quot;xx:xx:xx:xx:xx:xx&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;mac-addr1&amp;quot;] is &amp;quot;xx:xx:xx:xx:xx:xx&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;gateway&amp;quot;] is &amp;quot;192.168.10.1&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;ip-addr0&amp;quot;] is &amp;quot;192.168.10.2&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;subnet0&amp;quot;] is &amp;quot;255.255.255.0&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;ip-addr1&amp;quot;] is &amp;quot;192.168.20.2&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;subnet1&amp;quot;] is &amp;quot;255.255.255.0&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;ip-addr2&amp;quot;] is &amp;quot;192.168.10.3&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;subnet2&amp;quot;] is &amp;quot;255.255.255.0&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;ip-addr3&amp;quot;] is &amp;quot;192.168.40.2&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;subnet3&amp;quot;] is &amp;quot;255.255.255.0&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;serial&amp;quot;] is &amp;quot;30AF217&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;name&amp;quot;] is &amp;quot;&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Determining X300/X310 Revision Number==&lt;br /&gt;
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\&amp;lt;R&amp;gt;-\&amp;lt;XXX&amp;gt; where \&amp;lt;R&amp;gt; is a letter code that corresponds to the revision number. The photograph below highlights the location of the sticker:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-309-x3x0-rev-id.png|thumb|500px|center|The USRP X300/310 motherboard has a sticker that identifies the product and revision. The sticker is outlined in red.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once the letter code has been determined use the table below to map the letter code to a revision number:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''Letter'''&lt;br /&gt;
|'''Revision #'''&lt;br /&gt;
|-&lt;br /&gt;
|C&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|D&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|E&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|F&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|G&lt;br /&gt;
|7&lt;br /&gt;
|-&lt;br /&gt;
|H&lt;br /&gt;
|8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Restore X300/310 EEPROM Revision Code==&lt;br /&gt;
&lt;br /&gt;
A corrupted or missing revision code in the X300/310 EEPROM will be indicated by a UHD runtime error:&lt;br /&gt;
&lt;br /&gt;
 Error: RuntimeError: No revision compat detected. MB EEPROM must be reprogrammed!&lt;br /&gt;
&lt;br /&gt;
If this problem is encountered, the usrp_burn_mb_eeprom utility can be used to restore the X300/310 revision code in the EEPROM. First, the X300/X310 revision number must be determined. Once the revision number for your X300/310 is known, the usrp_burn_mb_eeprom utility can be used to restore the revision code to the EEPROM. The syntax is as follows:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;recover_mb_eeprom&amp;quot; --values=&amp;quot;revision=&amp;lt;#&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;#&amp;gt; is the revision number of your X300/310 to be written to the EEPROM. For example, to restore the revision number in EEPROM for a Rev. 6 X300 with an IP address of 192.168.10.2, the command would be:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;recover_mb_eeprom,addr=192.168.10.2&amp;quot; --values=&amp;quot;revision=6&amp;quot;&lt;br /&gt;
&lt;br /&gt;
After the utility has been run, power cycle the USRP and then run uhd_usrp_probe to ensure that the new revision number has been written to the EEPROM correctly. If you are unsure of how to accomplish these steps, please feel free to contact Ettus Support at [mailto:support@ettus.com support@ettus.com].&lt;br /&gt;
&lt;br /&gt;
==Restore X300/310 EEPROM Product Code==&lt;br /&gt;
&lt;br /&gt;
A corrupted product code in the X300/310 EEPROM will be indicated by a UHD warning:&lt;br /&gt;
&lt;br /&gt;
 UHD Warning: X300/X310 unknown product code in EEPROM: &amp;lt;###&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;###&amp;gt; is some numbered code that is unknown by UHD. If this problem is encountered, the usrp_burn_mb_eeprom utility can be used to write a new product code to the EEPROM. First, the X300/X310 revision number must be determined. Once the revision number has been determined, refer to the table below to find the product code for the X300/310:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''USRP'''&lt;br /&gt;
|'''Rev. 0-6'''&lt;br /&gt;
|'''Rev. 7-8'''&lt;br /&gt;
|-&lt;br /&gt;
|X300&lt;br /&gt;
|30518 (0x7763)&lt;br /&gt;
|30817 (0x7861)&lt;br /&gt;
|-&lt;br /&gt;
|X310&lt;br /&gt;
|30410 (0x76CA)&lt;br /&gt;
|30818 (0x7862)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Once the correct product code has been determined base on the X3x0 model and revision, the usrp_burn_mb_eeprom utility can be used to write the correct product code to the EEPROM. They syntax is as follows:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;recover_mb_eeprom&amp;quot; --values=&amp;quot;product=&amp;lt;###&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;###&amp;gt; is the product code to be written to the EEPROM. For example, on a Rev. 7 X300 with an IP address of 191.168.10.2, the command would be:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;recover_mb_eeprom,addr=192.168.10.2&amp;quot; --values=&amp;quot;product=30817&amp;quot;&lt;br /&gt;
&lt;br /&gt;
After the utility has been run, power cycle the USRP and then run uhd_usrp_probe to ensure that the new revision number has been written to the EEPROM correctly. If you are unsure of how to accomplish these steps, please feel free to contact Ettus Support at [mailto:support@ettus.com support@ettus.com].&lt;br /&gt;
&lt;br /&gt;
==National Instruments USRP RIO==&lt;br /&gt;
&lt;br /&gt;
The National Instruments branded X300/310 have unique product codes to identify the motherboard revision as well as the daughter-cards in the USRP. The product codes are listed below:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''Model (DB, BW, Rev.)'''&lt;br /&gt;
|'''Hex ID'''&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2940R (WBX, 40 MHz BW, Rev. 0-6)       &lt;br /&gt;
|0x772B&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2940R (WBX, 40 MHz BW, Rev. 7+)        &lt;br /&gt;
|0x7853&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2940R (WBX, 120 MHz BW, Rev. 0-6)      &lt;br /&gt;
|0x77FB&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2940R (WBX, 120 MHz BW, Rev. 7+)       &lt;br /&gt;
|0x785B&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2942R (SBX, 40 MHz BW, Rev. 0-6)       &lt;br /&gt;
|0x772C&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2942R (SBX, 40 MHz BW, Rev. 7+)        &lt;br /&gt;
|0x7854&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2942R (SBX, 120 MHz BW, Rev. 0-6)      &lt;br /&gt;
|0x77FC&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2942R (SBX, 120 MHz BW, Rev. 7+)       &lt;br /&gt;
|0x785C&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2943R (CBX, 40 MHz BW, Rev. 0-6)       &lt;br /&gt;
|0x772D&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2943R (CBX, 40 MHz BW, Rev. 7+)        &lt;br /&gt;
|0x7855&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2943R (CBX, 120 MHz BW, Rev. 0-6)      &lt;br /&gt;
|0x77FD&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2943R (CBX, 120 MHz BW, Rev. 7+)       &lt;br /&gt;
|0x785D&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2944R (UBX, 160 MHz BW, Rev. 0-6)      &lt;br /&gt;
|0x772E&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2944R (UBX, 160 MHz BW, Rev. 7+)       &lt;br /&gt;
|0x7856&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2950R (GPS, WBX, 40 MHz BW, Rev. 0-6)  &lt;br /&gt;
|0x772F&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2950R (GPS, WBX, 40 MHz BW, Rev. 7+)   &lt;br /&gt;
|0x7857&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2950R (GPS, WBX, 120 MHz BW, Rev. 0-6) &lt;br /&gt;
|0x77FE&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2950R (GPS, WBX, 120 MHz BW, Rev. 7+   &lt;br /&gt;
|0x785E&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2952R (GPS, SBX, 40 MHz BW, Rev. 0-6)  &lt;br /&gt;
|0x7730&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2952R (GPS, SBX, 40 MHz BW, Rev. 7+)   &lt;br /&gt;
|0x7858&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2952R (GPS, SBX, 120 MHz BW, Rev. 0-6) &lt;br /&gt;
|0x77FF&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2952R (GPS, SBX, 120 MHz BW, Rev. 7+   &lt;br /&gt;
|0x785F&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2953R (GPS, CBX, 40 MHz BW, Rev. 0-6)  &lt;br /&gt;
|0x7731&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2953R (GPS, CBX, 40 MHz BW, Rev. 7+)   &lt;br /&gt;
|0x7859&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2953R (GPS, CBX, 120 MHz BW, Rev. 0-6) &lt;br /&gt;
|0x7800&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2953R (GPS, CBX, 120 MHz BW, Rev. 7+)  &lt;br /&gt;
|0x7860&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2954R (GPS, UBX, 160 MHz BW, Rev. 0-6) &lt;br /&gt;
|0x7732&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2954R (GPS, UBX, 160 MHz BW, Rev. 7+)  &lt;br /&gt;
|0x785A&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=N200/210 EEPROM=&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''N200/210 EEPROM Setting'''&lt;br /&gt;
|'''User Customizable?'''&lt;br /&gt;
|'''Description'''&lt;br /&gt;
|-&lt;br /&gt;
|hardware&lt;br /&gt;
|No&lt;br /&gt;
|Hardware Number&lt;br /&gt;
|-&lt;br /&gt;
|revision&lt;br /&gt;
|No&lt;br /&gt;
|Revision Number&lt;br /&gt;
|-&lt;br /&gt;
|product&lt;br /&gt;
|No&lt;br /&gt;
|Product Code&lt;br /&gt;
|-&lt;br /&gt;
|mac-addr&lt;br /&gt;
|No&lt;br /&gt;
|MAC Address&lt;br /&gt;
|-&lt;br /&gt;
|ip-addr&lt;br /&gt;
|Yes&lt;br /&gt;
|IP Address&lt;br /&gt;
|-&lt;br /&gt;
|subnet&lt;br /&gt;
|Yes&lt;br /&gt;
|Subnetwork&lt;br /&gt;
|-&lt;br /&gt;
|gateway&lt;br /&gt;
|Yes&lt;br /&gt;
|Network Gateway&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The N200/210 do not store the product codes in the motherboard EEPROM. The &amp;quot;hardware&amp;quot; field is programmed at the factory but is not referenced by UHD. Instead, the revision field is used to determine the N200/210 hardware in use. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''USRP'''&lt;br /&gt;
|'''Motherboard Product ID'''&lt;br /&gt;
|-&lt;br /&gt;
|N200&lt;br /&gt;
|0x0A00&lt;br /&gt;
|-&lt;br /&gt;
|N210&lt;br /&gt;
|0x0A01&lt;br /&gt;
|-&lt;br /&gt;
|N200 - R4&lt;br /&gt;
|0x0A10&lt;br /&gt;
|-&lt;br /&gt;
|N210 - R4&lt;br /&gt;
|0x0A11&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=B200/210 and B200mini EEPROM=&lt;br /&gt;
&lt;br /&gt;
The USRP B200 and B210 EEPROM is used to store certain information about each board. The USB PID (Product ID) and VID (Vendor ID) are stored in the EEPROM as well as serial number, product code, hardware revision, and USRP name for each B200/210. A table of these settings and whether or not the setting is user customizable is given below:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''B200/210 EEPROM Setting'''&lt;br /&gt;
|'''User Customizable?'''&lt;br /&gt;
|'''Description'''&lt;br /&gt;
|-&lt;br /&gt;
|revision&lt;br /&gt;
|No&lt;br /&gt;
|Revision Number&lt;br /&gt;
|-&lt;br /&gt;
|product&lt;br /&gt;
|No&lt;br /&gt;
|Product Code&lt;br /&gt;
|-&lt;br /&gt;
|serial&lt;br /&gt;
|No&lt;br /&gt;
|Unique Serial Number&lt;br /&gt;
|-&lt;br /&gt;
|name&lt;br /&gt;
|Yes&lt;br /&gt;
|Custom USRP Name&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To read the current EEPROM values from the USRP, use the usrp_burn_mb_eeprom utility:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;type=b200&amp;quot; --read-all&lt;br /&gt;
&lt;br /&gt;
This will read the settings and print them to the terminal. A sample output is shown below for a USRP B210:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fetching current settings from EEPROM...&lt;br /&gt;
	EEPROM [&amp;quot;revision&amp;quot;] is &amp;quot;4&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;product&amp;quot;] is &amp;quot;2&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;serial&amp;quot;] is &amp;quot;30AD2D4&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;name&amp;quot;] is &amp;quot;MyB210&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If desired, a B200/210 could be given a custom name with the following command:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;type=b200&amp;quot; --values=&amp;quot;name=Lab_B210&amp;quot;&lt;br /&gt;
&lt;br /&gt;
After the command has been run, the device must be power-cycled for the new EEPROM setting to take effect. Reading the updated EEPROM values yields:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fetching current settings from EEPROM...&lt;br /&gt;
	EEPROM [&amp;quot;revision&amp;quot;] is &amp;quot;4&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;product&amp;quot;] is &amp;quot;2&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;serial&amp;quot;] is &amp;quot;30AD2D4&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;name&amp;quot;] is &amp;quot;Lab_B210&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==USB VID/PID==&lt;br /&gt;
&lt;br /&gt;
The USB vendor identification (VID) and product identification (PID) numbers can be written to the USRP B200/210 using the &amp;quot;b2xx_fx3_utils&amp;quot; utility that is included with UHD. To reset the VID and PID, the command would be:&lt;br /&gt;
&lt;br /&gt;
 ./b2xx_fx3_utils --init-device --write-vid 0x2500 --write-pid -0x0020&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''USRP'''&lt;br /&gt;
|'''USB PID'''&lt;br /&gt;
|-&lt;br /&gt;
|B200&lt;br /&gt;
|0x0020&lt;br /&gt;
|-&lt;br /&gt;
|B210&lt;br /&gt;
|0x0020&lt;br /&gt;
|-&lt;br /&gt;
|B200 (NI)&lt;br /&gt;
|0x7813&lt;br /&gt;
|-&lt;br /&gt;
|B210 (NI)&lt;br /&gt;
|0x7814&lt;br /&gt;
|-&lt;br /&gt;
|B200mini&lt;br /&gt;
|0x0021&lt;br /&gt;
|-&lt;br /&gt;
|B205mini&lt;br /&gt;
|0x0022&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The VID is the same for all B2x0 variants, 0x2500.&lt;/div&gt;</summary>
		<author><name>JamesHumphries</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=About_the_Motherboard_and_Daughtercard_EEPROM_on_USRP_Devices&amp;diff=2531</id>
		<title>About the Motherboard and Daughtercard EEPROM on USRP Devices</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=About_the_Motherboard_and_Daughtercard_EEPROM_on_USRP_Devices&amp;diff=2531"/>
				<updated>2016-05-16T19:49:11Z</updated>
		
		<summary type="html">&lt;p&gt;JamesHumphries: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Application Note Number==&lt;br /&gt;
'''AN-309 '''&lt;br /&gt;
&lt;br /&gt;
==Revision History==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Date&lt;br /&gt;
!Author&lt;br /&gt;
!Details&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| 2016-05-16  &lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| Trip Humphries&lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| Initial creation&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=USRP EEPROM Settings &amp;amp; Recovery Guide=&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==EEPROM Burn Utility==&lt;br /&gt;
&lt;br /&gt;
'''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 [mailto:support@ettus.com support@ettus.com] if you are unsure how to proceed.'''&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
 ./uhd/utils/&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;lt;optional device args&amp;gt; --read-all&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;type=b200&amp;quot; --read-all &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=X300/310 EEPROM=&lt;br /&gt;
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 &amp;quot;User Customizable?=No&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''X300/310 EEPROM Setting:'''&lt;br /&gt;
|'''User Customizable?'''&lt;br /&gt;
|'''Description'''&lt;br /&gt;
|-&lt;br /&gt;
|revision&lt;br /&gt;
|No&lt;br /&gt;
|Hardware Number&lt;br /&gt;
|-&lt;br /&gt;
|revision_compat&lt;br /&gt;
|No&lt;br /&gt;
|Revision Number&lt;br /&gt;
|-&lt;br /&gt;
|product&lt;br /&gt;
|No&lt;br /&gt;
|Product Code&lt;br /&gt;
|-&lt;br /&gt;
|serial&lt;br /&gt;
|No&lt;br /&gt;
|Unique USRP Serial Number&lt;br /&gt;
|-&lt;br /&gt;
|mac-addr0&lt;br /&gt;
|No&lt;br /&gt;
|MAC Address (Port 0)&lt;br /&gt;
|-&lt;br /&gt;
|mac-addr1&lt;br /&gt;
|No&lt;br /&gt;
|MAC Address (Port 1)&lt;br /&gt;
|-&lt;br /&gt;
|gateway&lt;br /&gt;
|Yes&lt;br /&gt;
|Network Gateway&lt;br /&gt;
|-&lt;br /&gt;
|subnet0&lt;br /&gt;
|Yes&lt;br /&gt;
|Subnet Mask&lt;br /&gt;
|-&lt;br /&gt;
|subnet1&lt;br /&gt;
|Yes&lt;br /&gt;
|Subnet Mask&lt;br /&gt;
|-&lt;br /&gt;
|subnet2&lt;br /&gt;
|Yes&lt;br /&gt;
|Subnet Mask&lt;br /&gt;
|-&lt;br /&gt;
|subnet3&lt;br /&gt;
|Yes&lt;br /&gt;
|Subnet Mask&lt;br /&gt;
|-&lt;br /&gt;
|ip-addr0&lt;br /&gt;
|Yes&lt;br /&gt;
|IP Address&lt;br /&gt;
|-&lt;br /&gt;
|ip-addr1&lt;br /&gt;
|Yes&lt;br /&gt;
|IP Address&lt;br /&gt;
|-&lt;br /&gt;
|ip-addr2&lt;br /&gt;
|Yes&lt;br /&gt;
|IP Address&lt;br /&gt;
|-&lt;br /&gt;
|ip-addr3&lt;br /&gt;
|Yes&lt;br /&gt;
|IP Address&lt;br /&gt;
|-&lt;br /&gt;
|name&lt;br /&gt;
|Yes&lt;br /&gt;
|Custom USRP Name&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
As an example, the EEPROM settings of an X310 with IP address 192.168.10.2 could be read-back with the following command:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;addr=192.168.10.2,type=x300&amp;quot; --read-all&lt;br /&gt;
&lt;br /&gt;
and the output would look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fetching current settings from EEPROM...&lt;br /&gt;
	EEPROM [&amp;quot;revision&amp;quot;] is &amp;quot;4&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;revision_compat&amp;quot;] is &amp;quot;2&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;product&amp;quot;] is &amp;quot;30AD2D4&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;mac-addr0&amp;quot;] is &amp;quot;xx:xx:xx:xx:xx:xx&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;mac-addr1&amp;quot;] is &amp;quot;xx:xx:xx:xx:xx:xx&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;gateway&amp;quot;] is &amp;quot;192.168.10.1&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;ip-addr0&amp;quot;] is &amp;quot;192.168.10.2&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;subnet0&amp;quot;] is &amp;quot;255.255.255.0&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;ip-addr1&amp;quot;] is &amp;quot;192.168.20.2&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;subnet1&amp;quot;] is &amp;quot;255.255.255.0&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;ip-addr2&amp;quot;] is &amp;quot;192.168.10.3&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;subnet2&amp;quot;] is &amp;quot;255.255.255.0&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;ip-addr3&amp;quot;] is &amp;quot;192.168.40.2&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;subnet3&amp;quot;] is &amp;quot;255.255.255.0&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;serial&amp;quot;] is &amp;quot;30AF217&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;name&amp;quot;] is &amp;quot;&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Determining X300/X310 Revision Number==&lt;br /&gt;
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\&amp;lt;R&amp;gt;-\&amp;lt;XXX&amp;gt; where \&amp;lt;R&amp;gt; is a letter code that corresponds to the revision number. The photograph below highlights the location of the sticker:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-309-x3x0-rev-id.png|thumb|500px|center|The USRP X300/310 motherboard has a sticker that identifies the product and revision. The sticker is outlined in red.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once the letter code has been determined use the table below to map the letter code to a revision number:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''Letter'''&lt;br /&gt;
|'''Revision #'''&lt;br /&gt;
|-&lt;br /&gt;
|C&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|D&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|E&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|F&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|G&lt;br /&gt;
|7&lt;br /&gt;
|-&lt;br /&gt;
|H&lt;br /&gt;
|8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Restore X300/310 EEPROM Revision Code==&lt;br /&gt;
&lt;br /&gt;
A corrupted or missing revision code in the X300/310 EEPROM will be indicated by a UHD runtime error:&lt;br /&gt;
&lt;br /&gt;
 Error: RuntimeError: No revision compat detected. MB EEPROM must be reprogrammed!&lt;br /&gt;
&lt;br /&gt;
If this problem is encountered, the usrp_burn_mb_eeprom utility can be used to restore the X300/310 revision code in the EEPROM. First, the X300/X310 revision number must be determined. Once the revision number for your X300/310 is known, the usrp_burn_mb_eeprom utility can be used to restore the revision code to the EEPROM. The syntax is as follows:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;recover_mb_eeprom&amp;quot; --values=&amp;quot;revision=&amp;lt;#&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;#&amp;gt; is the revision number of your X300/310 to be written to the EEPROM. For example, to restore the revision number in EEPROM for a Rev. 6 X300 with an IP address of 192.168.10.2, the command would be:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;recover_mb_eeprom,addr=192.168.10.2&amp;quot; --values=&amp;quot;revision=6&amp;quot;&lt;br /&gt;
&lt;br /&gt;
After the utility has been run, power cycle the USRP and then run uhd_usrp_probe to ensure that the new revision number has been written to the EEPROM correctly. If you are unsure of how to accomplish these steps, please feel free to contact Ettus Support at [mailto:support@ettus.com support@ettus.com].&lt;br /&gt;
&lt;br /&gt;
==Restore X300/310 EEPROM Product Code==&lt;br /&gt;
&lt;br /&gt;
A corrupted product code in the X300/310 EEPROM will be indicated by a UHD warning:&lt;br /&gt;
&lt;br /&gt;
 UHD Warning: X300/X310 unknown product code in EEPROM: &amp;lt;###&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;###&amp;gt; is some numbered code that is unknown by UHD. If this problem is encountered, the usrp_burn_mb_eeprom utility can be used to write a new product code to the EEPROM. First, the X300/X310 revision number must be determined. Once the revision number has been determined, refer to the table below to find the product code for the X300/310:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''USRP'''&lt;br /&gt;
|'''Rev. 0-6'''&lt;br /&gt;
|'''Rev. 7-8'''&lt;br /&gt;
|-&lt;br /&gt;
|X300&lt;br /&gt;
|30518 (0x7763)&lt;br /&gt;
|30817 (0x7861)&lt;br /&gt;
|-&lt;br /&gt;
|X310&lt;br /&gt;
|30410 (0x76CA)&lt;br /&gt;
|30818 (0x7862)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Once the correct product code has been determined base on the X3x0 model and revision, the usrp_burn_mb_eeprom utility can be used to write the correct product code to the EEPROM. They syntax is as follows:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;recover_mb_eeprom&amp;quot; --values=&amp;quot;product=&amp;lt;###&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;###&amp;gt; is the product code to be written to the EEPROM. For example, on a Rev. 7 X300 with an IP address of 191.168.10.2, the command would be:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;recover_mb_eeprom,addr=192.168.10.2&amp;quot; --values=&amp;quot;product=30817&amp;quot;&lt;br /&gt;
&lt;br /&gt;
After the utility has been run, power cycle the USRP and then run uhd_usrp_probe to ensure that the new revision number has been written to the EEPROM correctly. If you are unsure of how to accomplish these steps, please feel free to contact Ettus Support at [mailto:support@ettus.com support@ettus.com].&lt;br /&gt;
&lt;br /&gt;
==National Instruments USRP RIO==&lt;br /&gt;
&lt;br /&gt;
The National Instruments branded X300/310 have unique product codes to identify the motherboard revision as well as the daughter-cards in the USRP. The product codes are listed below:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''Model (DB, BW, Rev.)'''&lt;br /&gt;
|'''Hex ID'''&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2940R (WBX, 40 MHz BW, Rev. 0-6)       &lt;br /&gt;
|0x772B&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2940R (WBX, 40 MHz BW, Rev. 7+)        &lt;br /&gt;
|0x7853&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2940R (WBX, 120 MHz BW, Rev. 0-6)      &lt;br /&gt;
|0x77FB&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2940R (WBX, 120 MHz BW, Rev. 7+)       &lt;br /&gt;
|0x785B&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2942R (SBX, 40 MHz BW, Rev. 0-6)       &lt;br /&gt;
|0x772C&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2942R (SBX, 40 MHz BW, Rev. 7+)        &lt;br /&gt;
|0x7854&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2942R (SBX, 120 MHz BW, Rev. 0-6)      &lt;br /&gt;
|0x77FC&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2942R (SBX, 120 MHz BW, Rev. 7+)       &lt;br /&gt;
|0x785C&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2943R (CBX, 40 MHz BW, Rev. 0-6)       &lt;br /&gt;
|0x772D&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2943R (CBX, 40 MHz BW, Rev. 7+)        &lt;br /&gt;
|0x7855&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2943R (CBX, 120 MHz BW, Rev. 0-6)      &lt;br /&gt;
|0x77FD&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2943R (CBX, 120 MHz BW, Rev. 7+)       &lt;br /&gt;
|0x785D&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2944R (UBX, 160 MHz BW, Rev. 0-6)      &lt;br /&gt;
|0x772E&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2944R (UBX, 160 MHz BW, Rev. 7+)       &lt;br /&gt;
|0x7856&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2950R (GPS, WBX, 40 MHz BW, Rev. 0-6)  &lt;br /&gt;
|0x772F&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2950R (GPS, WBX, 40 MHz BW, Rev. 7+)   &lt;br /&gt;
|0x7857&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2950R (GPS, WBX, 120 MHz BW, Rev. 0-6) &lt;br /&gt;
|0x77FE&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2950R (GPS, WBX, 120 MHz BW, Rev. 7+   &lt;br /&gt;
|0x785E&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2952R (GPS, SBX, 40 MHz BW, Rev. 0-6)  &lt;br /&gt;
|0x7730&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2952R (GPS, SBX, 40 MHz BW, Rev. 7+)   &lt;br /&gt;
|0x7858&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2952R (GPS, SBX, 120 MHz BW, Rev. 0-6) &lt;br /&gt;
|0x77FF&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2952R (GPS, SBX, 120 MHz BW, Rev. 7+   &lt;br /&gt;
|0x785F&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2953R (GPS, CBX, 40 MHz BW, Rev. 0-6)  &lt;br /&gt;
|0x7731&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2953R (GPS, CBX, 40 MHz BW, Rev. 7+)   &lt;br /&gt;
|0x7859&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2953R (GPS, CBX, 120 MHz BW, Rev. 0-6) &lt;br /&gt;
|0x7800&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2953R (GPS, CBX, 120 MHz BW, Rev. 7+)  &lt;br /&gt;
|0x7860&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2954R (GPS, UBX, 160 MHz BW, Rev. 0-6) &lt;br /&gt;
|0x7732&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2954R (GPS, UBX, 160 MHz BW, Rev. 7+)  &lt;br /&gt;
|0x785A&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=N200/210 EEPROM=&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''N200/210 EEPROM Setting'''&lt;br /&gt;
|'''User Customizable?'''&lt;br /&gt;
|'''Description'''&lt;br /&gt;
|-&lt;br /&gt;
|hardware&lt;br /&gt;
|No&lt;br /&gt;
|Hardware Number&lt;br /&gt;
|-&lt;br /&gt;
|revision&lt;br /&gt;
|No&lt;br /&gt;
|Revision Number&lt;br /&gt;
|-&lt;br /&gt;
|product&lt;br /&gt;
|No&lt;br /&gt;
|Product Code&lt;br /&gt;
|-&lt;br /&gt;
|mac-addr&lt;br /&gt;
|No&lt;br /&gt;
|MAC Address&lt;br /&gt;
|-&lt;br /&gt;
|ip-addr&lt;br /&gt;
|Yes&lt;br /&gt;
|IP Address&lt;br /&gt;
|-&lt;br /&gt;
|subnet&lt;br /&gt;
|Yes&lt;br /&gt;
|Subnetwork&lt;br /&gt;
|-&lt;br /&gt;
|gateway&lt;br /&gt;
|Yes&lt;br /&gt;
|Network Gateway&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The N200/210 do not store the product codes in the motherboard EEPROM. The &amp;quot;hardware&amp;quot; field is programmed at the factory but is not referenced by UHD. Instead, the revision field is used to determine the N200/210 hardware in use. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''USRP'''&lt;br /&gt;
|'''Motherboard Product ID'''&lt;br /&gt;
|-&lt;br /&gt;
|N200&lt;br /&gt;
|0x0A00&lt;br /&gt;
|-&lt;br /&gt;
|N210&lt;br /&gt;
|0x0A01&lt;br /&gt;
|-&lt;br /&gt;
|N200 - R4&lt;br /&gt;
|0x0A10&lt;br /&gt;
|-&lt;br /&gt;
|N210 - R4&lt;br /&gt;
|0x0A11&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=B200/210 and B200mini EEPROM=&lt;br /&gt;
&lt;br /&gt;
The USRP B200 and B210 EEPROM is used to store certain information about each board. The USB PID (Product ID) and VID (Vendor ID) are stored in the EEPROM as well as serial number, product code, hardware revision, and USRP name for each B200/210. A table of these settings and whether or not the setting is user customizable is given below:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''B200/210 EEPROM Setting'''&lt;br /&gt;
|'''User Customizable?'''&lt;br /&gt;
|'''Description'''&lt;br /&gt;
|-&lt;br /&gt;
|revision&lt;br /&gt;
|No&lt;br /&gt;
|Revision Number&lt;br /&gt;
|-&lt;br /&gt;
|product&lt;br /&gt;
|No&lt;br /&gt;
|Product Code&lt;br /&gt;
|-&lt;br /&gt;
|serial&lt;br /&gt;
|No&lt;br /&gt;
|Unique Serial Number&lt;br /&gt;
|-&lt;br /&gt;
|name&lt;br /&gt;
|Yes&lt;br /&gt;
|Custom USRP Name&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To read the current EEPROM values from the USRP, use the usrp_burn_mb_eeprom utility:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;type=b200&amp;quot; --read-all&lt;br /&gt;
&lt;br /&gt;
This will read the settings and print them to the terminal. A sample output is shown below for a USRP B210:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fetching current settings from EEPROM...&lt;br /&gt;
	EEPROM [&amp;quot;revision&amp;quot;] is &amp;quot;4&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;product&amp;quot;] is &amp;quot;2&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;serial&amp;quot;] is &amp;quot;30AD2D4&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;name&amp;quot;] is &amp;quot;MyB210&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If desired, a B200/210 could be given a custom name with the following command:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;type=b200&amp;quot; --values=&amp;quot;name=Lab_B210&amp;quot;&lt;br /&gt;
&lt;br /&gt;
After the command has been run, the device must be power-cycled for the new EEPROM setting to take effect. Reading the updated EEPROM values yields:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fetching current settings from EEPROM...&lt;br /&gt;
	EEPROM [&amp;quot;revision&amp;quot;] is &amp;quot;4&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;product&amp;quot;] is &amp;quot;2&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;serial&amp;quot;] is &amp;quot;30AD2D4&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;name&amp;quot;] is &amp;quot;Lab_B210&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==USB VID/PID==&lt;br /&gt;
&lt;br /&gt;
The USB vendor identification (VID) and product identification (PID) numbers can be written to the USRP B200/210 using the &amp;quot;b2xx_fx3_utils&amp;quot; utility that is included with UHD. To reset the VID and PID, the command would be:&lt;br /&gt;
&lt;br /&gt;
 ./b2xx_fx3_utils --init-device --write-vid 0x2500 --write-pid -0x0020&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''USRP'''&lt;br /&gt;
|'''USB PID'''&lt;br /&gt;
|-&lt;br /&gt;
|B200&lt;br /&gt;
|0x0020&lt;br /&gt;
|-&lt;br /&gt;
|B210&lt;br /&gt;
|0x0020&lt;br /&gt;
|-&lt;br /&gt;
|B200 (NI)&lt;br /&gt;
|0x7813&lt;br /&gt;
|-&lt;br /&gt;
|B210 (NI)&lt;br /&gt;
|0x7814&lt;br /&gt;
|-&lt;br /&gt;
|B200mini&lt;br /&gt;
|0x0021&lt;br /&gt;
|-&lt;br /&gt;
|B205mini&lt;br /&gt;
|0x0022&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>JamesHumphries</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=About_the_Motherboard_and_Daughtercard_EEPROM_on_USRP_Devices&amp;diff=2530</id>
		<title>About the Motherboard and Daughtercard EEPROM on USRP Devices</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=About_the_Motherboard_and_Daughtercard_EEPROM_on_USRP_Devices&amp;diff=2530"/>
				<updated>2016-05-16T19:26:23Z</updated>
		
		<summary type="html">&lt;p&gt;JamesHumphries: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Application Note Number==&lt;br /&gt;
'''AN-309 '''&lt;br /&gt;
&lt;br /&gt;
==Revision History==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Date&lt;br /&gt;
!Author&lt;br /&gt;
!Details&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| 2016-05-16  &lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| Trip Humphries&lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| Initial creation&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=USRP EEPROM Settings &amp;amp; Recovery Guide=&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==EEPROM Burn Utility==&lt;br /&gt;
&lt;br /&gt;
'''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 [mailto:support@ettus.com support@ettus.com] if you are unsure how to proceed.'''&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
 ./uhd/utils/&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;lt;optional device args&amp;gt; --read-all&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;type=b200&amp;quot; --read-all &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==X300/310 EEPROM==&lt;br /&gt;
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 &amp;quot;User Customizable?=No&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''X300/310 EEPROM Setting:'''&lt;br /&gt;
|'''User Customizable?'''&lt;br /&gt;
|'''Description'''&lt;br /&gt;
|-&lt;br /&gt;
|revision&lt;br /&gt;
|No&lt;br /&gt;
|Hardware Number&lt;br /&gt;
|-&lt;br /&gt;
|revision_compat&lt;br /&gt;
|No&lt;br /&gt;
|Revision Number&lt;br /&gt;
|-&lt;br /&gt;
|product&lt;br /&gt;
|No&lt;br /&gt;
|Product Code&lt;br /&gt;
|-&lt;br /&gt;
|serial&lt;br /&gt;
|No&lt;br /&gt;
|Unique USRP Serial Number&lt;br /&gt;
|-&lt;br /&gt;
|mac-addr0&lt;br /&gt;
|No&lt;br /&gt;
|MAC Address (Port 0)&lt;br /&gt;
|-&lt;br /&gt;
|mac-addr1&lt;br /&gt;
|No&lt;br /&gt;
|MAC Address (Port 1)&lt;br /&gt;
|-&lt;br /&gt;
|gateway&lt;br /&gt;
|Yes&lt;br /&gt;
|Network Gateway&lt;br /&gt;
|-&lt;br /&gt;
|subnet0&lt;br /&gt;
|Yes&lt;br /&gt;
|Subnet Mask&lt;br /&gt;
|-&lt;br /&gt;
|subnet1&lt;br /&gt;
|Yes&lt;br /&gt;
|Subnet Mask&lt;br /&gt;
|-&lt;br /&gt;
|subnet2&lt;br /&gt;
|Yes&lt;br /&gt;
|Subnet Mask&lt;br /&gt;
|-&lt;br /&gt;
|subnet3&lt;br /&gt;
|Yes&lt;br /&gt;
|Subnet Mask&lt;br /&gt;
|-&lt;br /&gt;
|ip-addr0&lt;br /&gt;
|Yes&lt;br /&gt;
|IP Address&lt;br /&gt;
|-&lt;br /&gt;
|ip-addr1&lt;br /&gt;
|Yes&lt;br /&gt;
|IP Address&lt;br /&gt;
|-&lt;br /&gt;
|ip-addr2&lt;br /&gt;
|Yes&lt;br /&gt;
|IP Address&lt;br /&gt;
|-&lt;br /&gt;
|ip-addr3&lt;br /&gt;
|Yes&lt;br /&gt;
|IP Address&lt;br /&gt;
|-&lt;br /&gt;
|name&lt;br /&gt;
|Yes&lt;br /&gt;
|Custom USRP Name&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
As an example, the EEPROM settings of an X310 with IP address 192.168.10.2 could be read-back with the following command:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;addr=192.168.10.2,type=x300&amp;quot; --read-all&lt;br /&gt;
&lt;br /&gt;
and the output would look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fetching current settings from EEPROM...&lt;br /&gt;
	EEPROM [&amp;quot;revision&amp;quot;] is &amp;quot;4&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;revision_compat&amp;quot;] is &amp;quot;2&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;product&amp;quot;] is &amp;quot;30AD2D4&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;mac-addr0&amp;quot;] is &amp;quot;xx:xx:xx:xx:xx:xx&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;mac-addr1&amp;quot;] is &amp;quot;xx:xx:xx:xx:xx:xx&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;gateway&amp;quot;] is &amp;quot;192.168.10.1&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;ip-addr0&amp;quot;] is &amp;quot;192.168.10.2&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;subnet0&amp;quot;] is &amp;quot;255.255.255.0&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;ip-addr1&amp;quot;] is &amp;quot;192.168.20.2&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;subnet1&amp;quot;] is &amp;quot;255.255.255.0&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;ip-addr2&amp;quot;] is &amp;quot;192.168.10.3&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;subnet2&amp;quot;] is &amp;quot;255.255.255.0&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;ip-addr3&amp;quot;] is &amp;quot;192.168.40.2&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;subnet3&amp;quot;] is &amp;quot;255.255.255.0&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;serial&amp;quot;] is &amp;quot;30AF217&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;name&amp;quot;] is &amp;quot;&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Determining X300/X310 Revision Number==&lt;br /&gt;
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\&amp;lt;R&amp;gt;-\&amp;lt;XXX&amp;gt; where \&amp;lt;R&amp;gt; is a letter code that corresponds to the revision number. The photograph below highlights the location of the sticker:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-309-x3x0-rev-id.png|thumb|500px|center|The USRP X300/310 motherboard has a sticker that identifies the product and revision. The sticker is outlined in red.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once the letter code has been determined use the table below to map the letter code to a revision number:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''Letter'''&lt;br /&gt;
|'''Revision #'''&lt;br /&gt;
|-&lt;br /&gt;
|C&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|D&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|E&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|F&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|G&lt;br /&gt;
|7&lt;br /&gt;
|-&lt;br /&gt;
|H&lt;br /&gt;
|8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Restore X300/310 EEPROM Revision Code==&lt;br /&gt;
&lt;br /&gt;
A corrupted or missing revision code in the X300/310 EEPROM will be indicated by a UHD runtime error:&lt;br /&gt;
&lt;br /&gt;
 Error: RuntimeError: No revision compat detected. MB EEPROM must be reprogrammed!&lt;br /&gt;
&lt;br /&gt;
If this problem is encountered, the usrp_burn_mb_eeprom utility can be used to restore the X300/310 revision code in the EEPROM. First, the X300/X310 revision number must be determined. Once the revision number for your X300/310 is known, the usrp_burn_mb_eeprom utility can be used to restore the revision code to the EEPROM. The syntax is as follows:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;recover_mb_eeprom&amp;quot; --values=&amp;quot;revision=&amp;lt;#&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;#&amp;gt; is the revision number of your X300/310 to be written to the EEPROM. For example, to restore the revision number in EEPROM for a Rev. 6 X300 with an IP address of 192.168.10.2, the command would be:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;recover_mb_eeprom,addr=192.168.10.2&amp;quot; --values=&amp;quot;revision=6&amp;quot;&lt;br /&gt;
&lt;br /&gt;
After the utility has been run, power cycle the USRP and then run uhd_usrp_probe to ensure that the new revision number has been written to the EEPROM correctly. If you are unsure of how to accomplish these steps, please feel free to contact Ettus Support at [mailto:support@ettus.com support@ettus.com].&lt;br /&gt;
&lt;br /&gt;
==Restore X300/310 EEPROM Product Code==&lt;br /&gt;
&lt;br /&gt;
A corrupted product code in the X300/310 EEPROM will be indicated by a UHD warning:&lt;br /&gt;
&lt;br /&gt;
 UHD Warning: X300/X310 unknown product code in EEPROM: &amp;lt;###&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;###&amp;gt; is some numbered code that is unknown by UHD. If this problem is encountered, the usrp_burn_mb_eeprom utility can be used to write a new product code to the EEPROM. First, the X300/X310 revision number must be determined. Once the revision number has been determined, refer to the table below to find the product code for the X300/310:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''USRP'''&lt;br /&gt;
|'''Rev. 0-6'''&lt;br /&gt;
|'''Rev. 7-8'''&lt;br /&gt;
|-&lt;br /&gt;
|X300&lt;br /&gt;
|30518 (0x7763)&lt;br /&gt;
|30817 (0x7861)&lt;br /&gt;
|-&lt;br /&gt;
|X310&lt;br /&gt;
|30410 (0x76CA)&lt;br /&gt;
|30818 (0x7862)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Once the correct product code has been determined base on the X3x0 model and revision, the usrp_burn_mb_eeprom utility can be used to write the correct product code to the EEPROM. They syntax is as follows:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;recover_mb_eeprom&amp;quot; --values=&amp;quot;product=&amp;lt;###&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;###&amp;gt; is the product code to be written to the EEPROM. For example, on a Rev. 7 X300 with an IP address of 191.168.10.2, the command would be:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;recover_mb_eeprom,addr=192.168.10.2&amp;quot; --values=&amp;quot;product=30817&amp;quot;&lt;br /&gt;
&lt;br /&gt;
After the utility has been run, power cycle the USRP and then run uhd_usrp_probe to ensure that the new revision number has been written to the EEPROM correctly. If you are unsure of how to accomplish these steps, please feel free to contact Ettus Support at [mailto:support@ettus.com support@ettus.com].&lt;br /&gt;
&lt;br /&gt;
==National Instruments USRP RIO==&lt;br /&gt;
&lt;br /&gt;
The National Instruments branded X300/310 have unique product codes to identify the motherboard revision as well as the daughter-cards in the USRP. The product codes are listed below:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''Model (DB, BW, Rev.)'''&lt;br /&gt;
|'''Hex ID'''&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2940R (WBX, 40 MHz BW, Rev. 0-6)       &lt;br /&gt;
|0x772B&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2940R (WBX, 40 MHz BW, Rev. 7+)        &lt;br /&gt;
|0x7853&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2940R (WBX, 120 MHz BW, Rev. 0-6)      &lt;br /&gt;
|0x77FB&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2940R (WBX, 120 MHz BW, Rev. 7+)       &lt;br /&gt;
|0x785B&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2942R (SBX, 40 MHz BW, Rev. 0-6)       &lt;br /&gt;
|0x772C&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2942R (SBX, 40 MHz BW, Rev. 7+)        &lt;br /&gt;
|0x7854&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2942R (SBX, 120 MHz BW, Rev. 0-6)      &lt;br /&gt;
|0x77FC&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2942R (SBX, 120 MHz BW, Rev. 7+)       &lt;br /&gt;
|0x785C&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2943R (CBX, 40 MHz BW, Rev. 0-6)       &lt;br /&gt;
|0x772D&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2943R (CBX, 40 MHz BW, Rev. 7+)        &lt;br /&gt;
|0x7855&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2943R (CBX, 120 MHz BW, Rev. 0-6)      &lt;br /&gt;
|0x77FD&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2943R (CBX, 120 MHz BW, Rev. 7+)       &lt;br /&gt;
|0x785D&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2944R (UBX, 160 MHz BW, Rev. 0-6)      &lt;br /&gt;
|0x772E&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2944R (UBX, 160 MHz BW, Rev. 7+)       &lt;br /&gt;
|0x7856&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2950R (GPS, WBX, 40 MHz BW, Rev. 0-6)  &lt;br /&gt;
|0x772F&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2950R (GPS, WBX, 40 MHz BW, Rev. 7+)   &lt;br /&gt;
|0x7857&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2950R (GPS, WBX, 120 MHz BW, Rev. 0-6) &lt;br /&gt;
|0x77FE&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2950R (GPS, WBX, 120 MHz BW, Rev. 7+   &lt;br /&gt;
|0x785E&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2952R (GPS, SBX, 40 MHz BW, Rev. 0-6)  &lt;br /&gt;
|0x7730&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2952R (GPS, SBX, 40 MHz BW, Rev. 7+)   &lt;br /&gt;
|0x7858&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2952R (GPS, SBX, 120 MHz BW, Rev. 0-6) &lt;br /&gt;
|0x77FF&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2952R (GPS, SBX, 120 MHz BW, Rev. 7+   &lt;br /&gt;
|0x785F&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2953R (GPS, CBX, 40 MHz BW, Rev. 0-6)  &lt;br /&gt;
|0x7731&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2953R (GPS, CBX, 40 MHz BW, Rev. 7+)   &lt;br /&gt;
|0x7859&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2953R (GPS, CBX, 120 MHz BW, Rev. 0-6) &lt;br /&gt;
|0x7800&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2953R (GPS, CBX, 120 MHz BW, Rev. 7+)  &lt;br /&gt;
|0x7860&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2954R (GPS, UBX, 160 MHz BW, Rev. 0-6) &lt;br /&gt;
|0x7732&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2954R (GPS, UBX, 160 MHz BW, Rev. 7+)  &lt;br /&gt;
|0x785A&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==N200/210 EEPROM==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''N200/210 EEPROM Setting'''&lt;br /&gt;
|'''User Customizable?'''&lt;br /&gt;
|'''Description'''&lt;br /&gt;
|-&lt;br /&gt;
|hardware&lt;br /&gt;
|No&lt;br /&gt;
|Hardware Number&lt;br /&gt;
|-&lt;br /&gt;
|revision&lt;br /&gt;
|No&lt;br /&gt;
|Revision Number&lt;br /&gt;
|-&lt;br /&gt;
|product&lt;br /&gt;
|No&lt;br /&gt;
|Product Code&lt;br /&gt;
|-&lt;br /&gt;
|mac-addr&lt;br /&gt;
|No&lt;br /&gt;
|MAC Address&lt;br /&gt;
|-&lt;br /&gt;
|ip-addr&lt;br /&gt;
|Yes&lt;br /&gt;
|IP Address&lt;br /&gt;
|-&lt;br /&gt;
|subnet&lt;br /&gt;
|Yes&lt;br /&gt;
|Subnetwork&lt;br /&gt;
|-&lt;br /&gt;
|gateway&lt;br /&gt;
|Yes&lt;br /&gt;
|Network Gateway&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The N200/210 do not store the product codes in the motherboard EEPROM. The &amp;quot;hardware&amp;quot; field is programmed at the factory but is not referenced by UHD. Instead, the revision field is used to determine the N200/210 hardware in use. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''USRP'''&lt;br /&gt;
|'''Motherboard Product ID'''&lt;br /&gt;
|-&lt;br /&gt;
|N200&lt;br /&gt;
|0x0A00&lt;br /&gt;
|-&lt;br /&gt;
|N210&lt;br /&gt;
|0x0A01&lt;br /&gt;
|-&lt;br /&gt;
|N200 - R4&lt;br /&gt;
|0x0A10&lt;br /&gt;
|-&lt;br /&gt;
|N210 - R4&lt;br /&gt;
|0x0A11&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>JamesHumphries</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=About_the_Motherboard_and_Daughtercard_EEPROM_on_USRP_Devices&amp;diff=2529</id>
		<title>About the Motherboard and Daughtercard EEPROM on USRP Devices</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=About_the_Motherboard_and_Daughtercard_EEPROM_on_USRP_Devices&amp;diff=2529"/>
				<updated>2016-05-16T19:01:45Z</updated>
		
		<summary type="html">&lt;p&gt;JamesHumphries: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Application Note Number==&lt;br /&gt;
'''AN-309 '''&lt;br /&gt;
&lt;br /&gt;
==Revision History==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Date&lt;br /&gt;
!Author&lt;br /&gt;
!Details&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| 2016-05-16  &lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| Trip Humphries&lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| Initial creation&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=USRP EEPROM Settings &amp;amp; Recovery Guide=&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==EEPROM Burn Utility==&lt;br /&gt;
&lt;br /&gt;
'''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 [mailto:support@ettus.com support@ettus.com] if you are unsure how to proceed.'''&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
 ./uhd/utils/&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;lt;optional device args&amp;gt; --read-all&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;type=b200&amp;quot; --read-all &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==X300/310 EEPROM==&lt;br /&gt;
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 &amp;quot;User Customizable?=No&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''X300/310 EEPROM Setting:'''&lt;br /&gt;
|'''User Customizable?'''&lt;br /&gt;
|'''Description'''&lt;br /&gt;
|-&lt;br /&gt;
|revision&lt;br /&gt;
|No&lt;br /&gt;
|Hardware Number&lt;br /&gt;
|-&lt;br /&gt;
|revision_compat&lt;br /&gt;
|No&lt;br /&gt;
|Revision Number&lt;br /&gt;
|-&lt;br /&gt;
|product&lt;br /&gt;
|No&lt;br /&gt;
|Product Code&lt;br /&gt;
|-&lt;br /&gt;
|serial&lt;br /&gt;
|No&lt;br /&gt;
|Unique USRP Serial Number&lt;br /&gt;
|-&lt;br /&gt;
|mac-addr0&lt;br /&gt;
|No&lt;br /&gt;
|MAC Address (Port 0)&lt;br /&gt;
|-&lt;br /&gt;
|mac-addr1&lt;br /&gt;
|No&lt;br /&gt;
|MAC Address (Port 1)&lt;br /&gt;
|-&lt;br /&gt;
|gateway&lt;br /&gt;
|Yes&lt;br /&gt;
|Network Gateway&lt;br /&gt;
|-&lt;br /&gt;
|subnet0&lt;br /&gt;
|Yes&lt;br /&gt;
|Subnet Mask&lt;br /&gt;
|-&lt;br /&gt;
|subnet1&lt;br /&gt;
|Yes&lt;br /&gt;
|Subnet Mask&lt;br /&gt;
|-&lt;br /&gt;
|subnet2&lt;br /&gt;
|Yes&lt;br /&gt;
|Subnet Mask&lt;br /&gt;
|-&lt;br /&gt;
|subnet3&lt;br /&gt;
|Yes&lt;br /&gt;
|Subnet Mask&lt;br /&gt;
|-&lt;br /&gt;
|ip-addr0&lt;br /&gt;
|Yes&lt;br /&gt;
|IP Address&lt;br /&gt;
|-&lt;br /&gt;
|ip-addr1&lt;br /&gt;
|Yes&lt;br /&gt;
|IP Address&lt;br /&gt;
|-&lt;br /&gt;
|ip-addr2&lt;br /&gt;
|Yes&lt;br /&gt;
|IP Address&lt;br /&gt;
|-&lt;br /&gt;
|ip-addr3&lt;br /&gt;
|Yes&lt;br /&gt;
|IP Address&lt;br /&gt;
|-&lt;br /&gt;
|name&lt;br /&gt;
|Yes&lt;br /&gt;
|Custom USRP Name&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
As an example, the EEPROM settings of an X310 with IP address 192.168.10.2 could be read-back with the following command:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;addr=192.168.10.2,type=x300&amp;quot; --read-all&lt;br /&gt;
&lt;br /&gt;
and the output would look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fetching current settings from EEPROM...&lt;br /&gt;
	EEPROM [&amp;quot;revision&amp;quot;] is &amp;quot;4&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;revision_compat&amp;quot;] is &amp;quot;2&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;product&amp;quot;] is &amp;quot;30AD2D4&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;mac-addr0&amp;quot;] is &amp;quot;xx:xx:xx:xx:xx:xx&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;mac-addr1&amp;quot;] is &amp;quot;xx:xx:xx:xx:xx:xx&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;gateway&amp;quot;] is &amp;quot;192.168.10.1&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;ip-addr0&amp;quot;] is &amp;quot;192.168.10.2&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;subnet0&amp;quot;] is &amp;quot;255.255.255.0&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;ip-addr1&amp;quot;] is &amp;quot;192.168.20.2&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;subnet1&amp;quot;] is &amp;quot;255.255.255.0&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;ip-addr2&amp;quot;] is &amp;quot;192.168.10.3&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;subnet2&amp;quot;] is &amp;quot;255.255.255.0&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;ip-addr3&amp;quot;] is &amp;quot;192.168.40.2&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;subnet3&amp;quot;] is &amp;quot;255.255.255.0&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;serial&amp;quot;] is &amp;quot;30AF217&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;name&amp;quot;] is &amp;quot;&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Determining X300/X310 Revision Number==&lt;br /&gt;
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\&amp;lt;R&amp;gt;-\&amp;lt;XXX&amp;gt; where \&amp;lt;R&amp;gt; is a letter code that corresponds to the revision number. The photograph below highlights the location of the sticker:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-309-x3x0-rev-id.png|thumb|500px|center|The USRP X300/310 motherboard has a sticker that identifies the product and revision. The sticker is outlined in red.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once the letter code has been determined use the table below to map the letter code to a revision number:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''Letter'''&lt;br /&gt;
|'''Revision #'''&lt;br /&gt;
|-&lt;br /&gt;
|C&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|D&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|E&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|F&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|G&lt;br /&gt;
|7&lt;br /&gt;
|-&lt;br /&gt;
|H&lt;br /&gt;
|8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Restore X300/310 EEPROM Revision Code==&lt;br /&gt;
&lt;br /&gt;
A corrupted or missing revision code in the X300/310 EEPROM will be indicated by a UHD runtime error:&lt;br /&gt;
&lt;br /&gt;
 Error: RuntimeError: No revision compat detected. MB EEPROM must be reprogrammed!&lt;br /&gt;
&lt;br /&gt;
If this problem is encountered, the usrp_burn_mb_eeprom utility can be used to restore the X300/310 revision code in the EEPROM. First, the X300/X310 revision number must be determined. Once the revision number for your X300/310 is known, the usrp_burn_mb_eeprom utility can be used to restore the revision code to the EEPROM. The syntax is as follows:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;recover_mb_eeprom&amp;quot; --values=&amp;quot;revision=&amp;lt;#&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;#&amp;gt; is the revision number of your X300/310 to be written to the EEPROM. For example, to restore the revision number in EEPROM for a Rev. 6 X300 with an IP address of 192.168.10.2, the command would be:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;recover_mb_eeprom,addr=192.168.10.2&amp;quot; --values=&amp;quot;revision=6&amp;quot;&lt;br /&gt;
&lt;br /&gt;
After the utility has been run, power cycle the USRP and then run uhd_usrp_probe to ensure that the new revision number has been written to the EEPROM correctly. If you are unsure of how to accomplish these steps, please feel free to contact Ettus Support at [mailto:support@ettus.com support@ettus.com].&lt;br /&gt;
&lt;br /&gt;
==Restore X300/310 EEPROM Product Code==&lt;br /&gt;
&lt;br /&gt;
A corrupted product code in the X300/310 EEPROM will be indicated by a UHD warning:&lt;br /&gt;
&lt;br /&gt;
 UHD Warning: X300/X310 unknown product code in EEPROM: &amp;lt;###&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;###&amp;gt; is some numbered code that is unknown by UHD. If this problem is encountered, the usrp_burn_mb_eeprom utility can be used to write a new product code to the EEPROM. First, the X300/X310 revision number must be determined. Once the revision number has been determined, refer to the table below to find the product code for the X300/310:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''USRP'''&lt;br /&gt;
|'''Rev. 0-6'''&lt;br /&gt;
|'''Rev. 7-8'''&lt;br /&gt;
|-&lt;br /&gt;
|X300&lt;br /&gt;
|30518 (0x7763)&lt;br /&gt;
|30817 (0x7861)&lt;br /&gt;
|-&lt;br /&gt;
|X310&lt;br /&gt;
|30410 (0x76CA)&lt;br /&gt;
|30818 (0x7862)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Once the correct product code has been determined base on the X3x0 model and revision, the usrp_burn_mb_eeprom utility can be used to write the correct product code to the EEPROM. They syntax is as follows:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;recover_mb_eeprom&amp;quot; --values=&amp;quot;product=&amp;lt;###&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;###&amp;gt; is the product code to be written to the EEPROM. For example, on a Rev. 7 X300 with an IP address of 191.168.10.2, the command would be:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;recover_mb_eeprom,addr=192.168.10.2&amp;quot; --values=&amp;quot;product=30817&amp;quot;&lt;br /&gt;
&lt;br /&gt;
After the utility has been run, power cycle the USRP and then run uhd_usrp_probe to ensure that the new revision number has been written to the EEPROM correctly. If you are unsure of how to accomplish these steps, please feel free to contact Ettus Support at [mailto:support@ettus.com support@ettus.com].&lt;br /&gt;
&lt;br /&gt;
==National Instruments USRP RIO==&lt;br /&gt;
&lt;br /&gt;
The National Instruments branded X300/310 have unique product codes to identify the motherboard revision as well as the daughter-cards in the USRP. The product codes are listed below:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''Model (DB, BW, Rev.)'''&lt;br /&gt;
|'''Hex ID'''&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2940R (WBX, 40 MHz BW, Rev. 0-6)       &lt;br /&gt;
|0x772B&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2940R (WBX, 40 MHz BW, Rev. 7+)        &lt;br /&gt;
|0x7853&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2940R (WBX, 120 MHz BW, Rev. 0-6)      &lt;br /&gt;
|0x77FB&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2940R (WBX, 120 MHz BW, Rev. 7+)       &lt;br /&gt;
|0x785B&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2942R (SBX, 40 MHz BW, Rev. 0-6)       &lt;br /&gt;
|0x772C&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2942R (SBX, 40 MHz BW, Rev. 7+)        &lt;br /&gt;
|0x7854&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2942R (SBX, 120 MHz BW, Rev. 0-6)      &lt;br /&gt;
|0x77FC&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2942R (SBX, 120 MHz BW, Rev. 7+)       &lt;br /&gt;
|0x785C&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2943R (CBX, 40 MHz BW, Rev. 0-6)       &lt;br /&gt;
|0x772D&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2943R (CBX, 40 MHz BW, Rev. 7+)        &lt;br /&gt;
|0x7855&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2943R (CBX, 120 MHz BW, Rev. 0-6)      &lt;br /&gt;
|0x77FD&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2943R (CBX, 120 MHz BW, Rev. 7+)       &lt;br /&gt;
|0x785D&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2944R (UBX, 160 MHz BW, Rev. 0-6)      &lt;br /&gt;
|0x772E&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2944R (UBX, 160 MHz BW, Rev. 7+)       &lt;br /&gt;
|0x7856&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2950R (GPS, WBX, 40 MHz BW, Rev. 0-6)  &lt;br /&gt;
|0x772F&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2950R (GPS, WBX, 40 MHz BW, Rev. 7+)   &lt;br /&gt;
|0x7857&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2950R (GPS, WBX, 120 MHz BW, Rev. 0-6) &lt;br /&gt;
|0x77FE&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2950R (GPS, WBX, 120 MHz BW, Rev. 7+   &lt;br /&gt;
|0x785E&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2952R (GPS, SBX, 40 MHz BW, Rev. 0-6)  &lt;br /&gt;
|0x7730&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2952R (GPS, SBX, 40 MHz BW, Rev. 7+)   &lt;br /&gt;
|0x7858&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2952R (GPS, SBX, 120 MHz BW, Rev. 0-6) &lt;br /&gt;
|0x77FF&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2952R (GPS, SBX, 120 MHz BW, Rev. 7+   &lt;br /&gt;
|0x785F&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2953R (GPS, CBX, 40 MHz BW, Rev. 0-6)  &lt;br /&gt;
|0x7731&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2953R (GPS, CBX, 40 MHz BW, Rev. 7+)   &lt;br /&gt;
|0x7859&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2953R (GPS, CBX, 120 MHz BW, Rev. 0-6) &lt;br /&gt;
|0x7800&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2953R (GPS, CBX, 120 MHz BW, Rev. 7+)  &lt;br /&gt;
|0x7860&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2954R (GPS, UBX, 160 MHz BW, Rev. 0-6) &lt;br /&gt;
|0x7732&lt;br /&gt;
|-&lt;br /&gt;
|USRP-2954R (GPS, UBX, 160 MHz BW, Rev. 7+)  &lt;br /&gt;
|0x785A&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>JamesHumphries</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=About_the_Motherboard_and_Daughtercard_EEPROM_on_USRP_Devices&amp;diff=2528</id>
		<title>About the Motherboard and Daughtercard EEPROM on USRP Devices</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=About_the_Motherboard_and_Daughtercard_EEPROM_on_USRP_Devices&amp;diff=2528"/>
				<updated>2016-05-16T18:43:25Z</updated>
		
		<summary type="html">&lt;p&gt;JamesHumphries: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Application Note Number==&lt;br /&gt;
'''AN-309 '''&lt;br /&gt;
&lt;br /&gt;
==Revision History==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Date&lt;br /&gt;
!Author&lt;br /&gt;
!Details&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| 2016-05-16  &lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| Trip Humphries&lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| Initial creation&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=USRP EEPROM Settings &amp;amp; Recovery Guide=&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==EEPROM Burn Utility==&lt;br /&gt;
&lt;br /&gt;
'''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 [mailto:support@ettus.com support@ettus.com] if you are unsure how to proceed.'''&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
 ./uhd/utils/&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;lt;optional device args&amp;gt; --read-all&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;type=b200&amp;quot; --read-all &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==X300/310 EEPROM==&lt;br /&gt;
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 &amp;quot;User Customizable?=No&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''X300/310 EEPROM Setting:'''&lt;br /&gt;
|'''User Customizable?'''&lt;br /&gt;
|'''Description'''&lt;br /&gt;
|-&lt;br /&gt;
|revision&lt;br /&gt;
|No&lt;br /&gt;
|Hardware Number&lt;br /&gt;
|-&lt;br /&gt;
|revision_compat&lt;br /&gt;
|No&lt;br /&gt;
|Revision Number&lt;br /&gt;
|-&lt;br /&gt;
|product&lt;br /&gt;
|No&lt;br /&gt;
|Product Code&lt;br /&gt;
|-&lt;br /&gt;
|serial&lt;br /&gt;
|No&lt;br /&gt;
|Unique USRP Serial Number&lt;br /&gt;
|-&lt;br /&gt;
|mac-addr0&lt;br /&gt;
|No&lt;br /&gt;
|MAC Address (Port 0)&lt;br /&gt;
|-&lt;br /&gt;
|mac-addr1&lt;br /&gt;
|No&lt;br /&gt;
|MAC Address (Port 1)&lt;br /&gt;
|-&lt;br /&gt;
|gateway&lt;br /&gt;
|Yes&lt;br /&gt;
|Network Gateway&lt;br /&gt;
|-&lt;br /&gt;
|subnet0&lt;br /&gt;
|Yes&lt;br /&gt;
|Subnet Mask&lt;br /&gt;
|-&lt;br /&gt;
|subnet1&lt;br /&gt;
|Yes&lt;br /&gt;
|Subnet Mask&lt;br /&gt;
|-&lt;br /&gt;
|subnet2&lt;br /&gt;
|Yes&lt;br /&gt;
|Subnet Mask&lt;br /&gt;
|-&lt;br /&gt;
|subnet3&lt;br /&gt;
|Yes&lt;br /&gt;
|Subnet Mask&lt;br /&gt;
|-&lt;br /&gt;
|ip-addr0&lt;br /&gt;
|Yes&lt;br /&gt;
|IP Address&lt;br /&gt;
|-&lt;br /&gt;
|ip-addr1&lt;br /&gt;
|Yes&lt;br /&gt;
|IP Address&lt;br /&gt;
|-&lt;br /&gt;
|ip-addr2&lt;br /&gt;
|Yes&lt;br /&gt;
|IP Address&lt;br /&gt;
|-&lt;br /&gt;
|ip-addr3&lt;br /&gt;
|Yes&lt;br /&gt;
|IP Address&lt;br /&gt;
|-&lt;br /&gt;
|name&lt;br /&gt;
|Yes&lt;br /&gt;
|Custom USRP Name&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
As an example, the EEPROM settings of an X310 with IP address 192.168.10.2 could be read-back with the following command:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;addr=192.168.10.2,type=x300&amp;quot; --read-all&lt;br /&gt;
&lt;br /&gt;
and the output would look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fetching current settings from EEPROM...&lt;br /&gt;
	EEPROM [&amp;quot;revision&amp;quot;] is &amp;quot;4&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;revision_compat&amp;quot;] is &amp;quot;2&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;product&amp;quot;] is &amp;quot;30AD2D4&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;mac-addr0&amp;quot;] is &amp;quot;xx:xx:xx:xx:xx:xx&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;mac-addr1&amp;quot;] is &amp;quot;xx:xx:xx:xx:xx:xx&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;gateway&amp;quot;] is &amp;quot;192.168.10.1&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;ip-addr0&amp;quot;] is &amp;quot;192.168.10.2&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;subnet0&amp;quot;] is &amp;quot;255.255.255.0&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;ip-addr1&amp;quot;] is &amp;quot;192.168.20.2&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;subnet1&amp;quot;] is &amp;quot;255.255.255.0&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;ip-addr2&amp;quot;] is &amp;quot;192.168.10.3&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;subnet2&amp;quot;] is &amp;quot;255.255.255.0&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;ip-addr3&amp;quot;] is &amp;quot;192.168.40.2&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;subnet3&amp;quot;] is &amp;quot;255.255.255.0&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;serial&amp;quot;] is &amp;quot;30AF217&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;name&amp;quot;] is &amp;quot;&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Determining X300/X310 Revision Number==&lt;br /&gt;
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\&amp;lt;R&amp;gt;-\&amp;lt;XXX&amp;gt; where \&amp;lt;R&amp;gt; is a letter code that corresponds to the revision number. The photograph below highlights the location of the sticker:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-309-x3x0-rev-id.png|thumb|500px|center|The USRP X300/310 motherboard has a sticker that identifies the product and revision. The sticker is outlined in red.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once the letter code has been determined use the table below to map the letter code to a revision number:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''Letter'''&lt;br /&gt;
|'''Revision #'''&lt;br /&gt;
|-&lt;br /&gt;
|C&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|D&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|E&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|F&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|G&lt;br /&gt;
|7&lt;br /&gt;
|-&lt;br /&gt;
|H&lt;br /&gt;
|8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Restore X300/310 EEPROM Revision Code==&lt;br /&gt;
&lt;br /&gt;
A corrupted or missing revision code in the X300/310 EEPROM will be indicated by a UHD runtime error:&lt;br /&gt;
&lt;br /&gt;
 Error: RuntimeError: No revision compat detected. MB EEPROM must be reprogrammed!&lt;br /&gt;
&lt;br /&gt;
If this problem is encountered, the usrp_burn_mb_eeprom utility can be used to restore the X300/310 revision code in the EEPROM. First, the X300/X310 revision number must be determined. Once the revision number for your X300/310 is known, the usrp_burn_mb_eeprom utility can be used to restore the revision code to the EEPROM. The syntax is as follows:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;recover_mb_eeprom&amp;quot; --values=&amp;quot;revision=&amp;lt;#&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;#&amp;gt; is the revision number of your X300/310 to be written to the EEPROM. For example, to restore the revision number in EEPROM for a Rev. 6 X300 with an IP address of 192.168.10.2, the command would be:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;recover_mb_eeprom,addr=192.168.10.2&amp;quot; --values=&amp;quot;revision=6&amp;quot;&lt;br /&gt;
&lt;br /&gt;
After the utility has been run, power cycle the USRP and then run uhd_usrp_probe to ensure that the new revision number has been written to the EEPROM correctly. If you are unsure of how to accomplish these steps, please feel free to contact Ettus Support at [mailto:support@ettus.com support@ettus.com].&lt;br /&gt;
&lt;br /&gt;
==Restore X300/310 EEPROM Product Code==&lt;br /&gt;
&lt;br /&gt;
A corrupted product code in the X300/310 EEPROM will be indicated by a UHD warning:&lt;br /&gt;
&lt;br /&gt;
 UHD Warning: X300/X310 unknown product code in EEPROM: &amp;lt;###&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;###&amp;gt; is some numbered code that is unknown by UHD. If this problem is encountered, the usrp_burn_mb_eeprom utility can be used to write a new product code to the EEPROM. First, the X300/X310 revision number must be determined. Once the revision number has been determined, refer to the table below to find the product code for the X300/310:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''USRP'''&lt;br /&gt;
|'''Rev. 0-6'''&lt;br /&gt;
|'''Rev. 7-8'''&lt;br /&gt;
|-&lt;br /&gt;
|X300&lt;br /&gt;
|30518 (0x7763)&lt;br /&gt;
|30817 (0x7861)&lt;br /&gt;
|-&lt;br /&gt;
|X310&lt;br /&gt;
|30410 (0x76CA)&lt;br /&gt;
|30818 (0x7862)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Once the correct product code has been determined base on the X3x0 model and revision, the usrp_burn_mb_eeprom utility can be used to write the correct product code to the EEPROM. They syntax is as follows:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;recover_mb_eeprom&amp;quot; --values=&amp;quot;product=&amp;lt;###&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;###&amp;gt; is the product code to be written to the EEPROM. For example, on a Rev. 7 X300 with an IP address of 191.168.10.2, the command would be:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;recover_mb_eeprom,addr=192.168.10.2&amp;quot; --values=&amp;quot;product=30817&amp;quot;&lt;br /&gt;
&lt;br /&gt;
After the utility has been run, power cycle the USRP and then run uhd_usrp_probe to ensure that the new revision number has been written to the EEPROM correctly. If you are unsure of how to accomplish these steps, please feel free to contact Ettus Support at [mailto:support@ettus.com support@ettus.com].&lt;/div&gt;</summary>
		<author><name>JamesHumphries</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=About_the_Motherboard_and_Daughtercard_EEPROM_on_USRP_Devices&amp;diff=2527</id>
		<title>About the Motherboard and Daughtercard EEPROM on USRP Devices</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=About_the_Motherboard_and_Daughtercard_EEPROM_on_USRP_Devices&amp;diff=2527"/>
				<updated>2016-05-16T15:34:29Z</updated>
		
		<summary type="html">&lt;p&gt;JamesHumphries: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Application Note Number==&lt;br /&gt;
'''AN-309 '''&lt;br /&gt;
&lt;br /&gt;
==Revision History==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Date&lt;br /&gt;
!Author&lt;br /&gt;
!Details&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| 2016-05-16  &lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| Trip Humphries&lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| Initial creation&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=USRP EEPROM Settings &amp;amp; Recovery Guide=&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==EEPROM Burn Utility==&lt;br /&gt;
&lt;br /&gt;
'''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 [mailto:support@ettus.com support@ettus.com] if you are unsure how to proceed.'''&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
 ./uhd/utils/&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;lt;optional device args&amp;gt; --read-all&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;type=b200&amp;quot; --read-all &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==X300/310 EEPROM==&lt;br /&gt;
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 &amp;quot;User Customizable?=No&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''X300/310 EEPROM Setting:'''&lt;br /&gt;
|'''User Customizable?'''&lt;br /&gt;
|'''Description'''&lt;br /&gt;
|-&lt;br /&gt;
|revision&lt;br /&gt;
|No&lt;br /&gt;
|Hardware Number&lt;br /&gt;
|-&lt;br /&gt;
|revision_compat&lt;br /&gt;
|No&lt;br /&gt;
|Revision Number&lt;br /&gt;
|-&lt;br /&gt;
|product&lt;br /&gt;
|No&lt;br /&gt;
|Product Code&lt;br /&gt;
|-&lt;br /&gt;
|serial&lt;br /&gt;
|No&lt;br /&gt;
|Unique USRP Serial Number&lt;br /&gt;
|-&lt;br /&gt;
|mac-addr0&lt;br /&gt;
|No&lt;br /&gt;
|MAC Address (Port 0)&lt;br /&gt;
|-&lt;br /&gt;
|mac-addr1&lt;br /&gt;
|No&lt;br /&gt;
|MAC Address (Port 1)&lt;br /&gt;
|-&lt;br /&gt;
|gateway&lt;br /&gt;
|Yes&lt;br /&gt;
|Network Gateway&lt;br /&gt;
|-&lt;br /&gt;
|subnet0&lt;br /&gt;
|Yes&lt;br /&gt;
|Subnet Mask&lt;br /&gt;
|-&lt;br /&gt;
|subnet1&lt;br /&gt;
|Yes&lt;br /&gt;
|Subnet Mask&lt;br /&gt;
|-&lt;br /&gt;
|subnet2&lt;br /&gt;
|Yes&lt;br /&gt;
|Subnet Mask&lt;br /&gt;
|-&lt;br /&gt;
|subnet3&lt;br /&gt;
|Yes&lt;br /&gt;
|Subnet Mask&lt;br /&gt;
|-&lt;br /&gt;
|ip-addr0&lt;br /&gt;
|Yes&lt;br /&gt;
|IP Address&lt;br /&gt;
|-&lt;br /&gt;
|ip-addr1&lt;br /&gt;
|Yes&lt;br /&gt;
|IP Address&lt;br /&gt;
|-&lt;br /&gt;
|ip-addr2&lt;br /&gt;
|Yes&lt;br /&gt;
|IP Address&lt;br /&gt;
|-&lt;br /&gt;
|ip-addr3&lt;br /&gt;
|Yes&lt;br /&gt;
|IP Address&lt;br /&gt;
|-&lt;br /&gt;
|name&lt;br /&gt;
|Yes&lt;br /&gt;
|Custom USRP Name&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
As an example, the EEPROM settings of an X310 with IP address 192.168.10.2 could be read-back with the following command:&lt;br /&gt;
&lt;br /&gt;
 ./usrp_burn_mb_eeprom --args=&amp;quot;addr=192.168.10.2,type=x300&amp;quot; --read-all&lt;br /&gt;
&lt;br /&gt;
and the output would look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fetching current settings from EEPROM...&lt;br /&gt;
	EEPROM [&amp;quot;revision&amp;quot;] is &amp;quot;4&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;revision_compat&amp;quot;] is &amp;quot;2&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;product&amp;quot;] is &amp;quot;30AD2D4&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;mac-addr0&amp;quot;] is &amp;quot;xx:xx:xx:xx:xx:xx&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;mac-addr1&amp;quot;] is &amp;quot;xx:xx:xx:xx:xx:xx&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;gateway&amp;quot;] is &amp;quot;192.168.10.1&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;ip-addr0&amp;quot;] is &amp;quot;192.168.10.2&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;subnet0&amp;quot;] is &amp;quot;255.255.255.0&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;ip-addr1&amp;quot;] is &amp;quot;192.168.20.2&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;subnet1&amp;quot;] is &amp;quot;255.255.255.0&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;ip-addr2&amp;quot;] is &amp;quot;192.168.10.3&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;subnet2&amp;quot;] is &amp;quot;255.255.255.0&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;ip-addr3&amp;quot;] is &amp;quot;192.168.40.2&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;subnet3&amp;quot;] is &amp;quot;255.255.255.0&amp;quot;&lt;br /&gt;
	EEPROM [&amp;quot;serial&amp;quot;] is &amp;quot;30AF217&amp;quot;&lt;br /&gt;
    	EEPROM [&amp;quot;name&amp;quot;] is &amp;quot;&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Determining X300/X310 Revision Number==&lt;br /&gt;
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\&amp;lt;R&amp;gt;-\&amp;lt;XXX&amp;gt; where \&amp;lt;R&amp;gt; is a letter code that corresponds to the revision number. The photograph below highlights the location of the sticker:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-309-x3x0-rev-id.png|thumb|500px|center|The USRP X300/310 motherboard has a sticker that identifies the product and revision. The sticker is outlined in red.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once the letter code has been determined use the table below to map the letter code to a revision number:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''Letter'''&lt;br /&gt;
|'''Revision #'''&lt;br /&gt;
|-&lt;br /&gt;
|C&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|D&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|E&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|F&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|G&lt;br /&gt;
|7&lt;br /&gt;
|-&lt;br /&gt;
|H&lt;br /&gt;
|8&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>JamesHumphries</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=File:an-309-x3x0-rev-id.png&amp;diff=2526</id>
		<title>File:an-309-x3x0-rev-id.png</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=File:an-309-x3x0-rev-id.png&amp;diff=2526"/>
				<updated>2016-05-16T15:23:54Z</updated>
		
		<summary type="html">&lt;p&gt;JamesHumphries: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>JamesHumphries</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=About_the_Motherboard_and_Daughtercard_EEPROM_on_USRP_Devices&amp;diff=2525</id>
		<title>About the Motherboard and Daughtercard EEPROM on USRP Devices</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=About_the_Motherboard_and_Daughtercard_EEPROM_on_USRP_Devices&amp;diff=2525"/>
				<updated>2016-05-16T14:45:44Z</updated>
		
		<summary type="html">&lt;p&gt;JamesHumphries: Created page with &amp;quot;==Application Note Number== '''AN-309 '''  ==Revision History== {| class=&amp;quot;wikitable&amp;quot; !Date !Author !Details |- |style=&amp;quot;text-algin:center;&amp;quot;| 2016-05-16   |style=&amp;quot;text-algin:cen...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Application Note Number==&lt;br /&gt;
'''AN-309 '''&lt;br /&gt;
&lt;br /&gt;
==Revision History==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Date&lt;br /&gt;
!Author&lt;br /&gt;
!Details&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| 2016-05-16  &lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| Trip Humphries&lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| Initial creation&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=About the Motherboard and Daughtercard EEPROM on USRP Devices=&lt;/div&gt;</summary>
		<author><name>JamesHumphries</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=Application_Notes&amp;diff=2524</id>
		<title>Application Notes</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=Application_Notes&amp;diff=2524"/>
				<updated>2016-05-16T14:44:21Z</updated>
		
		<summary type="html">&lt;p&gt;JamesHumphries: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Application Notes (AN) and technical articles written by engineers, for engineers. These articles offer experienced analysis, design ideas, reference designs, and tutorials—to make you productive and successful using USRP devices.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;4&amp;quot;|Application Notes&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
! style=&amp;quot;text-align:center;&amp;quot;| Number&lt;br /&gt;
! style=&amp;quot;text-align:center;&amp;quot;| Title&lt;br /&gt;
! style=&amp;quot;text-align:center;&amp;quot;| Abstract&lt;br /&gt;
! style=&amp;quot;text-align:center;&amp;quot;| Author&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|style=&amp;quot;width: 10%; text-align: center;&amp;quot;| AN-445&lt;br /&gt;
|style=&amp;quot;width: 30%;&amp;quot;| [[Building and Installing the USRP Open-Source Toolchain (UHD and GNU Radio) on Linux]]&lt;br /&gt;
|style=&amp;quot;width: 50%;&amp;quot;| This AN provides a comprehensive step-by-step guide for building, installing, and maintaining the open-source toolchain, specifically UHD and GNU Radio, for the USRP from source code on the Linux platform. Other alternate installation methods are also discussed.&lt;br /&gt;
|style=&amp;quot;width: 10%; text-align: center;&amp;quot;| Neel Pandeya&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|style=&amp;quot;width: 10%; text-align: center;&amp;quot;| AN-788&lt;br /&gt;
|style=&amp;quot;width: 30%;&amp;quot;| [[Building and Installing the USRP Open-Source Toolchain (UHD and GNU Radio) on OS X]]&lt;br /&gt;
|style=&amp;quot;width: 50%;&amp;quot;| This AN provides a comprehensive step-by-step guide for building, installing, and maintaining the open-source toolchain, specifically UHD and GNU Radio, for the USRP from source code on the Mac OS X platform.&lt;br /&gt;
|style=&amp;quot;width: 10%; text-align: center;&amp;quot;|Michael Dickens&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|style=&amp;quot;width: 10%; text-align: center;&amp;quot;| AN-936&lt;br /&gt;
|style=&amp;quot;width: 30%;&amp;quot;| [[Verifying the Operation of the USRP Using UHD and GNU Radio]]&lt;br /&gt;
|style=&amp;quot;width: 50%;&amp;quot;| This AN explains how to use UHD and GNU Radio, once installed, to verify the correct operation of the USRP. Several test procedures are explained in detail. Several tests make use of an optional spectrum analyzer and signal generator.&lt;br /&gt;
|style=&amp;quot;width: 10%; text-align: center;&amp;quot;|Neel Pandeya&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|style=&amp;quot;width: 10%; text-align: center;&amp;quot;| AN-561&lt;br /&gt;
|style=&amp;quot;width: 30%;&amp;quot;| [[Implementation of a Simple FM Receiver in GNU Radio]]&lt;br /&gt;
|style=&amp;quot;width: 50%;&amp;quot;| This AN shows a quick and simple implementation of an FM receiver for the USRP using GNU Radio. The goal is to easily demonstrate a practical application, and to verify that the USRP is functioning properly.&lt;br /&gt;
|style=&amp;quot;width: 10%; text-align: center;&amp;quot;|Neel Pandeya&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|style=&amp;quot;width: 10%; text-align: center;&amp;quot;| AN-188&lt;br /&gt;
|style=&amp;quot;width: 30%;&amp;quot;| [[Interrogating Passive Wireless SAW Sensors with the USRP]]&lt;br /&gt;
|style=&amp;quot;width: 50%;&amp;quot;| Typical interrogator design for wireless SAW sensor systems require many discrete components and lengthy build times, making it difficult to rapidly adapt to sensor designs in a research environment. We have employed the USRP B200 as a SAW sensor interrogation system. Interrogation of wideband orthogonal frequency coded (OFC) SAW sensors imposes strict requirements on the timing and synchronization of the transceiver. The USRP FPGA has been modified to operate in a synchronous, pulsed mode of operation, allowing rapid data acquisition and the full 56MHz bandwidth to be utilized. Data from the USRP is passed to a custom matched filter correlator routine to extract sensor parameters. The system is capable of interrogating multiple sensors, simultaneously. Demonstration of the system is accomplished by wirelessly interrogating SAW sensors at 915MHz and extracting temperature.&lt;br /&gt;
|style=&amp;quot;width: 10%; text-align: center;&amp;quot;|Trip Humphries&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|style=&amp;quot;width: 10%; text-align: center;&amp;quot;| AN-322&lt;br /&gt;
|style=&amp;quot;width: 30%;&amp;quot;| [[Experiments with the UBX Daughterboard in the HF Band]]&lt;br /&gt;
|style=&amp;quot;width: 50%;&amp;quot;| We show the results of experiments with the UBX daughtercard on an USRP X310 platform for use in the HF frequency range, from 1.8MHz to 30MHz. While the UBX is nominally rated for use only down to 10 MHz, with careful flow-graph design, and pre-filtering, it provides quite-good performance across the HF bands.&lt;br /&gt;
|style=&amp;quot;width: 10%; text-align: center;&amp;quot;|Marcus Leech&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|style=&amp;quot;width: 10%; text-align: center;&amp;quot;| AN-363&lt;br /&gt;
|style=&amp;quot;width: 30%;&amp;quot;| [[Implementation of an ADS-B/Mode-S Receiver in GNU Radio]]&lt;br /&gt;
|style=&amp;quot;width: 50%;&amp;quot;| This AN guides the reader through the implementation of an ADS-B receiver using the gr-air-modes Out-of-Tree (OOT) module for GNU Radio. An explanation of ADS-B is also provided, and several real-world, over-the-air examples and profiled.&lt;br /&gt;
|style=&amp;quot;width: 10%; text-align: center;&amp;quot;|Nate Temple&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|style=&amp;quot;width: 10%; text-align: center;&amp;quot;| AN-177&lt;br /&gt;
|style=&amp;quot;width: 30%;&amp;quot;| [[About USRP Bandwidths and Sampling Rates]]&lt;br /&gt;
|style=&amp;quot;width: 50%;&amp;quot;| This AN provides insight into the topics of USRP architecture, system bandwidth, host interface throughput, and available sampling rates.&lt;br /&gt;
|style=&amp;quot;width: 10%; text-align: center;&amp;quot;|Neel Pandeya &amp;lt;br&amp;gt; Nate Temple&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|style=&amp;quot;width: 10%; text-align: center;&amp;quot;| AN-881&lt;br /&gt;
|style=&amp;quot;width: 30%;&amp;quot;| [[Selecting an USRP Device]]&lt;br /&gt;
|style=&amp;quot;width: 50%;&amp;quot;| This AN explores the USRP family at a high level, compares devices across several primary features, and walks the reader through the process of selecting a particular device for the their application.&lt;br /&gt;
|style=&amp;quot;width: 10%; text-align: center;&amp;quot;|Neel Pandeya &amp;lt;br&amp;gt; Nate Temple&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|style=&amp;quot;width: 10%; text-align: center;&amp;quot;| AN-492&lt;br /&gt;
|style=&amp;quot;width: 30%;&amp;quot;| [[Selecting an RF Daughterboard]]&lt;br /&gt;
|style=&amp;quot;width: 50%;&amp;quot;| This AN explores the RF daughterboards used by the N-series and X-series USRP devices at a high level, compares devices across several primary features, and walks the reader through the process of selecting a particular device for the their application.&lt;br /&gt;
|style=&amp;quot;width: 10%; text-align: center;&amp;quot;|Neel Pandeya &amp;lt;br&amp;gt; Nate Temple&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|style=&amp;quot;width: 10%; text-align: center;&amp;quot;| AN-204&lt;br /&gt;
|style=&amp;quot;width: 30%;&amp;quot;| [[Getting Started with UHD and C++]]&lt;br /&gt;
|style=&amp;quot;width: 50%;&amp;quot;| This AN explains how to write and build C++ programs that use the UHD API and introduces&lt;br /&gt;
|style=&amp;quot;width: 10%; text-align: center;&amp;quot;|Neel Pandeya &amp;lt;br&amp;gt; Nate Temple&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|style=&amp;quot;width: 10%; text-align: center;&amp;quot;| AN-117&lt;br /&gt;
|style=&amp;quot;width: 30%;&amp;quot;| [[GPSDO Selection Guide]]&lt;br /&gt;
|style=&amp;quot;width: 50%;&amp;quot;| This AN explains how to select and use a GPSDO with the USRP B-, N-, and X-series devices.&lt;br /&gt;
|style=&amp;quot;width: 10%; text-align: center;&amp;quot;|Neel Pandeya &amp;lt;br&amp;gt; Nate Temple&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|style=&amp;quot;width: 10%; text-align: center;&amp;quot;| AN-503&lt;br /&gt;
|style=&amp;quot;width: 30%;&amp;quot;| [[Converting an X310 into an NI-USRP Rio]]&lt;br /&gt;
|style=&amp;quot;width: 50%;&amp;quot;| This Application Note explains how to use an Ettus Research-branded USRP with LabVIEW, and in effect, convert it into an NI-USRP RIO.&lt;br /&gt;
|style=&amp;quot;width: 10%; text-align: center;&amp;quot;|Tim Fountain&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|style=&amp;quot;width: 10%; text-align: center;&amp;quot;| AN-638&lt;br /&gt;
|style=&amp;quot;width: 30%;&amp;quot;| [[Running UHD and GNU Radio on NI-USRP RIO]]&lt;br /&gt;
|style=&amp;quot;width: 50%;&amp;quot;| This AN explains the process to updating your USRP-Rio to run UHD and GNU Radio. &lt;br /&gt;
|style=&amp;quot;width: 10%; text-align: center;&amp;quot;|Neel Pandeya &amp;lt;br&amp;gt; Nate Temple&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|style=&amp;quot;width: 10%; text-align: center;&amp;quot;| AN-882&lt;br /&gt;
|style=&amp;quot;width: 30%;&amp;quot;| [[Synchronization and MIMO Capability with USRP Devices]]&lt;br /&gt;
|style=&amp;quot;width: 50%;&amp;quot;| Discusses the requirements for Multiple-In-Multiple-Out (MIMO) and phased-array systems. Summarizes the MIMO capability of each USRP device and daughterboard, and shows how to build MIMO systems with the USRP product family.&lt;br /&gt;
|style=&amp;quot;width: 10%; text-align: center;&amp;quot;|Neel Pandeya &amp;lt;br&amp;gt; Nate Temple&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|style=&amp;quot;width: 10%; text-align: center;&amp;quot;| AN-309&lt;br /&gt;
|style=&amp;quot;width: 30%;&amp;quot;| [[About the Motherboard and Daughtercard EEPROM on USRP Devices]]&lt;br /&gt;
|style=&amp;quot;width: 50%;&amp;quot;| This AN discusses the EEPROM storage on various USRP devices and daughtercards. This guides explains how to update the EEPROM contents and recover from EEPROM corruption. The product codes, which are also stored in the EEPROM, for all USRP devices and daughtercards are also given for reference.&lt;br /&gt;
|style=&amp;quot;width: 10%; text-align: center;&amp;quot;|Trip Humphries&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>JamesHumphries</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=Interrogating_Passive_Wireless_SAW_Sensors_with_the_USRP&amp;diff=2056</id>
		<title>Interrogating Passive Wireless SAW Sensors with the USRP</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=Interrogating_Passive_Wireless_SAW_Sensors_with_the_USRP&amp;diff=2056"/>
				<updated>2016-05-10T02:16:39Z</updated>
		
		<summary type="html">&lt;p&gt;JamesHumphries: /* Interrogating Passive, Wireless SAW Sensors with the USRP B200mini */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Application Note Number==&lt;br /&gt;
'''AN-188 '''&lt;br /&gt;
&lt;br /&gt;
==Revision History==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Date&lt;br /&gt;
!Author&lt;br /&gt;
!Details&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| 2016-05-01   &lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| Trip Humphries&lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| Initial creation&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| 2016-05-09&lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| Trip Humphries&lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| Version 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Interrogating Passive, Wireless SAW Sensors with the USRP B200mini=&lt;br /&gt;
&lt;br /&gt;
'''Authors:''' James 'Trip' Humphries, Mark Gallagher, Daniel Gallagher, Arthur Weeks, Donald Malocha&lt;br /&gt;
&lt;br /&gt;
'''Ettus Research Products Used:''' USRP B200mini&lt;br /&gt;
&lt;br /&gt;
'''Research Institution:''' University of Central Florida, Orlando, FL, USA&lt;br /&gt;
&lt;br /&gt;
'''Laboratory:''' Consortium for Applied Acoustoelectronic Technology (CAAT)&lt;br /&gt;
&lt;br /&gt;
'''Application Area:''' Wireless Sensors&lt;br /&gt;
&lt;br /&gt;
==Challenge==&lt;br /&gt;
Develop a wide-band transceiver to interrogate passive, wireless surface acoustic wave (SAW) sensors at 915MHz using a commercially available software radio platform.&lt;br /&gt;
&lt;br /&gt;
==Solution==&lt;br /&gt;
The Ettus USRP B200mini was utilized to interrogate wireless SAW sensors by modifying the FPGA design to implement a synchronous, pulsed mode interrogator and utilize the entire 56MHz bandwidth of the B200mini.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Typical interrogator design for wireless SAW sensor systems require many discrete components and lengthy build times, making it difficult to rapidly adapt to sensor designs in a research environment. We have employed the USRP B200mini as a SAW sensor interrogation system. Interrogation of wideband orthogonal frequency coded (OFC) SAW sensors imposes strict requirements on the timing and synchronization of the transceiver. The USRP FPGA has been modified to operate in a synchronous, pulsed mode of operation, allowing rapid data acquisition and the full 56MHz bandwidth of the AD9364 to be utilized. Data from the USRP is passed to a custom matched filter correlator routine to extract sensor parameters. The system is capable of interrogating multiple sensors, simultaneously. Demonstration of the system is accomplished by wirelessly interrogating SAW sensors at 915MHz and extracting temperature. A photograph of the system is shown in Figure 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-188-saw-sensor-sys.png|thumb|500px|center|Figure 1: Photograph of passive, wireless SAW sensor system using the USRP B200mini. On the left is the host computer to handle the USRP interface and perform post-processing to extract the sensor parameters. In the center is the are two wireless SAW sensors. On the right is the interrogator system and USRP in a custom enclosure.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Consortium for Applied Acoustoelectronic Technology (CAAT) - University of Central Florida==&lt;br /&gt;
The Consortium for Applied Acoustoelectronic Technology (CAAT) is a part of the University of Central Florida (UCF), in Orlando, FL. UCF is a comprehensive university with an enrollment of over 60,000 students. The UCF College of Engineering and Computer Science (CECS) supports multidisciplinary engineering research; offering advanced degrees at the MS and PhD levels.&lt;br /&gt;
The focus and expertise of CAAT is surface acoustic wave (SAW) devices and applications. Currently, CAAT is developing passive, wireless sensors based on SAW technology. The sensors are identified using an encoding technique known as orthogonal frequency coding (OFC). The sensors do not require an energy source (battery or other) and can be read from many meters away. Temperature, strain, and hydrogen sensors (among others) have been demonstrated wirelessly with this technology.&lt;br /&gt;
&lt;br /&gt;
==Passive, Wireless SAW Sensors==&lt;br /&gt;
SAW devices have many inherent properties that make them useful as sensors. Not only are they rugged to environmental extremes such as high temperature and radiation, but they can be operated wirelessly and passively (requires no power source or energy harvesting onboard the sensor). An interrogation signal is transmitted by the radio, illuminating all the SAW sensor tags simultaneously. Each SAW sensor reflects the received interrogation signal and is very similar to a RADAR system. The use of the SAW device allows the reflection to be engineered to encode the device ID (code) and measurand via changes in frequency, phase, or magnitude. The resulting changes can be measured and correlated to some measurement such as temperature, strain, or gas concentration. A SAW temperature sensor with integrated antenna is shown in Figure 2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-188-saw-sensor-quarter-ruler.png|thumb|500px|center|Figure 2: Photograph of a wireless SAW sensor developed at UCF. The SAW die is packaged and attached to a dipole antenna. A metric ruler and U.S. quarter are shown for size reference. The sensor dimensions are 10cm x 2.5cm (4&amp;quot;x 1&amp;quot;). Sensor shown here detects temperature.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Orthogonal frequency coding (OFC) can be implemented on a SAW platform by placing an array of reflector gratings in the path of the surface wave [1]. Each grating is assigned a center frequency which is orthogonal to all other gratings in the reflector array. OFC chips that are not synchronous to an incoming signal will appear nearly transparent to that frequency. The chips are shuffled in time to create a unique code, which identifies the sensor. Each sensor code is also given a discrete time slot and time gating during post-processing can be used to improve the sensor SNR. An illustration of a SAW device with OFC is given in Figure 3.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-188-ofc-schematic.png|thumb|500px|center|Figure 3: Illustration of a SAW OFC sensor tag. A signal input to the antenna is converted to an acoustic wave by the SAW transducer (left). The signal propagates to the OFC chips (right) and is reflected back to the transducer where it is re-radiated for reception on the USRP. The received signal is noise-like and is processed by a match-filter correlator to extract sensor parameters.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==USRP FPGA Modifications and Software==&lt;br /&gt;
Modifications were made to the USRP FPGA to incorporate custom functionality in both the transmit and receive chains. On the transmit side, an interrogation signal generator was implemented. It generates a linear FM chirp with a bandwidth of 35MHz and time length of 1µs. The receiver was modified to synchronize to the transmit signal (start listening for sensor response after the interrogation signal has finished transmitting) and incorporate a listen window. The receiver listens for 9.15µs and stores those samples into a RAM buffer. The samples are then read back from the RAM buffer at a slow rate such that the full 56MHz bandwidth of the system can be utilized without saturating the sample bus (USB3.0). Real time post processing is not required for this application. A block diagram outlining the FPGA modifications is shown in Figure 4. A plot comparing the predicted and generated chirp spectrums is also given in Figure 5.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-188-b200-fpga-mod-diagram.png|thumb|500px|center|Figure 4: Block diagram of the USRP B200 showing the custom FPGA modifications. The open-source FPGA code was able to be modified to fit the specific requirements of interrogating SAW sensors. The interrogation signal generator (A) outputs a linear FM chirp that is 1us long and has a 35MHz bandwidth. The receiver modifications (B) buffers 512 samples after the interrogation signal has finished.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-188-fpga-chirp-spectrum.png|thumb|500px|center|Figure 5: Plot comparing the predicted chirp spectrum versus the samples output from the USRP FPGA. The USRP spectrum is captured at 915MHz and compared to the predicted baseband spectrum.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The USRP was integrated with a custom matched-filter correlation software package in Python using the GNU Radio Python API [2]. A set of matched filters is generated for each sensor in the system, where each matched filter corresponds to a specific temperature of the sensor (the user specifies the minimum and maximum temperatures as well as the temperature resolution). The matched filters are scaled using a frequency scaling factor (FSF), based on calibrated sensor parameters. The received sensor signal is correlated with each matched filter. The matched filter which yields the maximum correlation peak corresponds to the temperature of the current sensor being processed. Interrogation of a single sensor and extraction of the sensor temperature can be done in approximately 10-15ms with this setup. A block diagram of the implemented software is shown in Figure 6.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-188-python-software blk diagram.png|thumb|500px|center|Figure 6: Block diagram of the software implemented on the host computer for data capture and post processing. UHD handles the data transfer and programming of the USRP. GNU Radio provides useful programming and DSP blocks for the USRP data. A custom Python block was implemented in GNU Radio ('UCF Sink') which stores a requested number of samples to a memory vector which can be copied to the host program when needed. The received data is processed by a matched filter correlator to extract the temperature or other measurand.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==USRP System==&lt;br /&gt;
The full SAW sensor interrogation system included extra components to improve the transceiver performance. An amplifier was added to the transmit chain to increase the output power of the transmitter to &amp;gt;+20dBm. This allows the SAW sensors to be interrogated at a farther range. With this output power, current sensors can be detected at a range of 5 meters (16 feet) or more with a high gain antenna. In addition to the amplifier, an RF switch was incorporated which switches between the TRX and RX2 ports on the USRP. This allows a single antenna to be used for transmission and reception (instead of one antenna for each port). This also has the added benefit of eliminating the direct response between the two antennas from the interrogation pulse which can saturate the receiver and distort the received signal response. The switch is controlled by the USRP GPIO pins connected to the FPGA. Finally, a custom enclosure was designed to house the SAW sensor interrogation system. Photographs of the system are shown in Figure 7 and Figure 8.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+System Components&lt;br /&gt;
|-&lt;br /&gt;
|'''USRP:'''&lt;br /&gt;
|B200mini&lt;br /&gt;
|-&lt;br /&gt;
|'''Amplifier (TX):'''&lt;br /&gt;
|Mini-Circuits ZX60-H122+&lt;br /&gt;
|-&lt;br /&gt;
|'''RF Switch:'''&lt;br /&gt;
|Mini-Circuits ZFSWA2-63DR+&lt;br /&gt;
|-&lt;br /&gt;
|'''Enclosure:'''&lt;br /&gt;
|Custom Design - Manufactured by Protocase, Inc.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-188-b200mini-internal-annotated.png|thumb|500px|center|Figure 7: Photograph of the USRP SAW sensor interrogation system with added components. An amplifier increases the output power to greater than +20dBm while an RF switch allows only a single antenna to be used for both transmit and receive. The components are housed in a custom enclosure that was manufacture by Protocase, Inc.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-188-b200mini-front-back.png|thumb|500px|center|Figure 8: Photograph of the front of the USRP enclosure. A single antenna is switched rapidly between the transmit (TRX) and receive (RX2) ports. The rear panel has ports for power and data (USB3.0). The dimensions of the system are 18x15x5cm (7x6x2in.) and has a mass of approximately 630g (1.4lbs.).]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Wireless Temperature Measurements with the USRP==&lt;br /&gt;
The SAW sensor was interrogated by the USRP and the received signal was post-processed to extract the sensor temperature. A matched filter correlator, previously developed at UCF in MATLAB, has been ported to Python to be compatible with the USRP and Linux. A reference thermocouple (wired) is attached to the SAW sensor (wireless) to ensure that the extracted temperature is accurate. Receiving one data sweep, post processing with 10,000 matched filters, and extracting temperature takes approximately 0.1 seconds. Averaging multiple data sweeps is possible (coherent integration) with 1000 averages taking approximately 1.0 second. The sensor was cooled (cold nitrogen gas) and heated (electric heat gun) randomly before being allowed to return to room temperature. The extracted temperature for the SAW sensor with reference thermocouple are given in Figure 9.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-188-saw-sensor-and-tc.png|thumb|500px|center|Figure 9: Extracted temperature of a wireless SAW sensor with a reference thermocouple. The sensor was cooled (cold nitrogen gas) and heated (electric heat gun) randomly and then let to return to room temperature. The SAW sensor was interrogated wirelessly with the USRP B200 system.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The system is also capable of interrogating multiple sensors, simultaneously. A set of four (4) SAW sensors were designed which are compatible with the USRP system. Each sensor has a unique OFC set and static time delay to the first reflector (ranging from 2.5 to 5 micro-seconds). Each sensor response is 570ns long and each is comprised of 4 OFC chips. The sensors are interrogated simultaneously by the interrogation pulse from the USRP. Each sensor response is then processed separately to extract the sensor temperature. Two (2) sensors were heated/cooled randomly while the other two (2) sensors were left to remain at room temperature. The extracted temperatures for all four (4) temperature sensors is plotted in Figure 10.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-188-usrp-sensors-temp-all.png|thumb|500px|center|Figure 10: Simultaneous interrogation of four (4) wireless SAW temperature sensors. Two of the sensors were heated (electric heat gun) or cooled (cold nitrogen gas) randomly. The other two sensors were left to remain at room temperature. Some variability in the measurements is evident due to inter-sensor interference.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
The USRP B200mini was successfully utilized to implement an efficient interrogation system for passive, wireless SAW strain sensors. A pulsed interrogator design was able to be implemented due to the open-source FPGA design, allowing the custom functionality required by this application to be implemented. The USRP can be quickly reconfigured as the sensor designs evolve to improve performance or for new sensor designs such as strain or gas measurements. Currently, the system is capable of extracting the SAW sensor temperature accurately from a range of up to 5 meters. Work is continuing to improve the system performance as well as implementing different interrogator embodiments.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
# Malocha, D.C.; Puccio, D.; Gallagher, D., &amp;quot;Orthogonal frequency coding for SAW device applications,&amp;quot; Ultrasonics Symposium, 2004 IEEE , vol.2, no., pp.1082,1085 Vol.2, 23-27 Aug. 2004&lt;br /&gt;
# Malocha, D.C.; Gallagher, M., &amp;quot;Coherent correlator multi-sensor receiver,&amp;quot; Frequency Control Symposium (FCS), 2012 IEEE International , vol., no., pp.1,5, 21-24 May 2012&lt;br /&gt;
# Humphries, J.R.; Gallagher, M.W.; Gallagher, D.R.; Weeks, A.R.; Malocha, D.C., &amp;quot;Interrogation of orthogonal frequency coded SAW sensors using the USRP,&amp;quot; in Frequency Control Symposium &amp;amp; the European Frequency and Time Forum (FCS), 2015 Joint Conference of the IEEE International , vol., no., pp.530-535, 12-16 April 2015&lt;br /&gt;
# Gallagher, M.W.; Smith, W.C.; Malocha, D.C., &amp;quot;An integrated SAW sensor with direct write antenna,&amp;quot; in European Frequency and Time Forum &amp;amp; International Frequency Control Symposium (EFTF/IFC), 2013 Joint , vol., no., pp.450-453, 21-25 July 2013&lt;br /&gt;
&lt;br /&gt;
==Contact Information==&lt;br /&gt;
* Dr. Donald C. Malocha&lt;br /&gt;
* [mailto:Donald.Malocha@ucf.edu Donald.Malocha@ucf.edu]&lt;br /&gt;
* University of Central Florida&lt;br /&gt;
* [http://caat.engr.ucf.edu/ CAAT Website]&lt;br /&gt;
&lt;br /&gt;
[[Category:Application Notes]]&lt;/div&gt;</summary>
		<author><name>JamesHumphries</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=Interrogating_Passive_Wireless_SAW_Sensors_with_the_USRP&amp;diff=2055</id>
		<title>Interrogating Passive Wireless SAW Sensors with the USRP</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=Interrogating_Passive_Wireless_SAW_Sensors_with_the_USRP&amp;diff=2055"/>
				<updated>2016-05-10T02:15:48Z</updated>
		
		<summary type="html">&lt;p&gt;JamesHumphries: /* Revision History */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Application Note Number==&lt;br /&gt;
'''AN-188 '''&lt;br /&gt;
&lt;br /&gt;
==Revision History==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Date&lt;br /&gt;
!Author&lt;br /&gt;
!Details&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| 2016-05-01   &lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| Trip Humphries&lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| Initial creation&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| 2016-05-09&lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| Trip Humphries&lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| Version 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Interrogating Passive, Wireless SAW Sensors with the USRP B200mini=&lt;br /&gt;
&lt;br /&gt;
'''Authors:''' James 'Trip' Humphries, Mark Gallagher, Daniel Gallagher, Arthur Weeks, Donald Malocha&lt;br /&gt;
&lt;br /&gt;
'''Ettus Research Products Used:''' USRP B200mini&lt;br /&gt;
&lt;br /&gt;
'''Research Institution:''' University of Central Florida&lt;br /&gt;
&lt;br /&gt;
'''Laboratory:''' Consortium for Applied Acoustoelectronic Technology (CAAT)&lt;br /&gt;
&lt;br /&gt;
'''Application Area:''' Wireless Sensors&lt;br /&gt;
&lt;br /&gt;
==Challenge==&lt;br /&gt;
Develop a wide-band transceiver to interrogate passive, wireless surface acoustic wave (SAW) sensors at 915MHz using a commercially available software radio platform.&lt;br /&gt;
&lt;br /&gt;
==Solution==&lt;br /&gt;
The Ettus USRP B200mini was utilized to interrogate wireless SAW sensors by modifying the FPGA design to implement a synchronous, pulsed mode interrogator and utilize the entire 56MHz bandwidth of the B200mini.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Typical interrogator design for wireless SAW sensor systems require many discrete components and lengthy build times, making it difficult to rapidly adapt to sensor designs in a research environment. We have employed the USRP B200mini as a SAW sensor interrogation system. Interrogation of wideband orthogonal frequency coded (OFC) SAW sensors imposes strict requirements on the timing and synchronization of the transceiver. The USRP FPGA has been modified to operate in a synchronous, pulsed mode of operation, allowing rapid data acquisition and the full 56MHz bandwidth of the AD9364 to be utilized. Data from the USRP is passed to a custom matched filter correlator routine to extract sensor parameters. The system is capable of interrogating multiple sensors, simultaneously. Demonstration of the system is accomplished by wirelessly interrogating SAW sensors at 915MHz and extracting temperature. A photograph of the system is shown in Figure 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-188-saw-sensor-sys.png|thumb|500px|center|Figure 1: Photograph of passive, wireless SAW sensor system using the USRP B200mini. On the left is the host computer to handle the USRP interface and perform post-processing to extract the sensor parameters. In the center is the are two wireless SAW sensors. On the right is the interrogator system and USRP in a custom enclosure.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Consortium for Applied Acoustoelectronic Technology (CAAT) - University of Central Florida==&lt;br /&gt;
The Consortium for Applied Acoustoelectronic Technology (CAAT) is a part of the University of Central Florida (UCF), in Orlando, FL. UCF is a comprehensive university with an enrollment of over 60,000 students. The UCF College of Engineering and Computer Science (CECS) supports multidisciplinary engineering research; offering advanced degrees at the MS and PhD levels.&lt;br /&gt;
The focus and expertise of CAAT is surface acoustic wave (SAW) devices and applications. Currently, CAAT is developing passive, wireless sensors based on SAW technology. The sensors are identified using an encoding technique known as orthogonal frequency coding (OFC). The sensors do not require an energy source (battery or other) and can be read from many meters away. Temperature, strain, and hydrogen sensors (among others) have been demonstrated wirelessly with this technology.&lt;br /&gt;
&lt;br /&gt;
==Passive, Wireless SAW Sensors==&lt;br /&gt;
SAW devices have many inherent properties that make them useful as sensors. Not only are they rugged to environmental extremes such as high temperature and radiation, but they can be operated wirelessly and passively (requires no power source or energy harvesting onboard the sensor). An interrogation signal is transmitted by the radio, illuminating all the SAW sensor tags simultaneously. Each SAW sensor reflects the received interrogation signal and is very similar to a RADAR system. The use of the SAW device allows the reflection to be engineered to encode the device ID (code) and measurand via changes in frequency, phase, or magnitude. The resulting changes can be measured and correlated to some measurement such as temperature, strain, or gas concentration. A SAW temperature sensor with integrated antenna is shown in Figure 2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-188-saw-sensor-quarter-ruler.png|thumb|500px|center|Figure 2: Photograph of a wireless SAW sensor developed at UCF. The SAW die is packaged and attached to a dipole antenna. A metric ruler and U.S. quarter are shown for size reference. The sensor dimensions are 10cm x 2.5cm (4&amp;quot;x 1&amp;quot;). Sensor shown here detects temperature.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Orthogonal frequency coding (OFC) can be implemented on a SAW platform by placing an array of reflector gratings in the path of the surface wave [1]. Each grating is assigned a center frequency which is orthogonal to all other gratings in the reflector array. OFC chips that are not synchronous to an incoming signal will appear nearly transparent to that frequency. The chips are shuffled in time to create a unique code, which identifies the sensor. Each sensor code is also given a discrete time slot and time gating during post-processing can be used to improve the sensor SNR. An illustration of a SAW device with OFC is given in Figure 3.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-188-ofc-schematic.png|thumb|500px|center|Figure 3: Illustration of a SAW OFC sensor tag. A signal input to the antenna is converted to an acoustic wave by the SAW transducer (left). The signal propagates to the OFC chips (right) and is reflected back to the transducer where it is re-radiated for reception on the USRP. The received signal is noise-like and is processed by a match-filter correlator to extract sensor parameters.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==USRP FPGA Modifications and Software==&lt;br /&gt;
Modifications were made to the USRP FPGA to incorporate custom functionality in both the transmit and receive chains. On the transmit side, an interrogation signal generator was implemented. It generates a linear FM chirp with a bandwidth of 35MHz and time length of 1µs. The receiver was modified to synchronize to the transmit signal (start listening for sensor response after the interrogation signal has finished transmitting) and incorporate a listen window. The receiver listens for 9.15µs and stores those samples into a RAM buffer. The samples are then read back from the RAM buffer at a slow rate such that the full 56MHz bandwidth of the system can be utilized without saturating the sample bus (USB3.0). Real time post processing is not required for this application. A block diagram outlining the FPGA modifications is shown in Figure 4. A plot comparing the predicted and generated chirp spectrums is also given in Figure 5.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-188-b200-fpga-mod-diagram.png|thumb|500px|center|Figure 4: Block diagram of the USRP B200 showing the custom FPGA modifications. The open-source FPGA code was able to be modified to fit the specific requirements of interrogating SAW sensors. The interrogation signal generator (A) outputs a linear FM chirp that is 1us long and has a 35MHz bandwidth. The receiver modifications (B) buffers 512 samples after the interrogation signal has finished.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-188-fpga-chirp-spectrum.png|thumb|500px|center|Figure 5: Plot comparing the predicted chirp spectrum versus the samples output from the USRP FPGA. The USRP spectrum is captured at 915MHz and compared to the predicted baseband spectrum.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The USRP was integrated with a custom matched-filter correlation software package in Python using the GNU Radio Python API [2]. A set of matched filters is generated for each sensor in the system, where each matched filter corresponds to a specific temperature of the sensor (the user specifies the minimum and maximum temperatures as well as the temperature resolution). The matched filters are scaled using a frequency scaling factor (FSF), based on calibrated sensor parameters. The received sensor signal is correlated with each matched filter. The matched filter which yields the maximum correlation peak corresponds to the temperature of the current sensor being processed. Interrogation of a single sensor and extraction of the sensor temperature can be done in approximately 10-15ms with this setup. A block diagram of the implemented software is shown in Figure 6.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-188-python-software blk diagram.png|thumb|500px|center|Figure 6: Block diagram of the software implemented on the host computer for data capture and post processing. UHD handles the data transfer and programming of the USRP. GNU Radio provides useful programming and DSP blocks for the USRP data. A custom Python block was implemented in GNU Radio ('UCF Sink') which stores a requested number of samples to a memory vector which can be copied to the host program when needed. The received data is processed by a matched filter correlator to extract the temperature or other measurand.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==USRP System==&lt;br /&gt;
The full SAW sensor interrogation system included extra components to improve the transceiver performance. An amplifier was added to the transmit chain to increase the output power of the transmitter to &amp;gt;+20dBm. This allows the SAW sensors to be interrogated at a farther range. With this output power, current sensors can be detected at a range of 5 meters (16 feet) or more with a high gain antenna. In addition to the amplifier, an RF switch was incorporated which switches between the TRX and RX2 ports on the USRP. This allows a single antenna to be used for transmission and reception (instead of one antenna for each port). This also has the added benefit of eliminating the direct response between the two antennas from the interrogation pulse which can saturate the receiver and distort the received signal response. The switch is controlled by the USRP GPIO pins connected to the FPGA. Finally, a custom enclosure was designed to house the SAW sensor interrogation system. Photographs of the system are shown in Figure 7 and Figure 8.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+System Components&lt;br /&gt;
|-&lt;br /&gt;
|'''USRP:'''&lt;br /&gt;
|B200mini&lt;br /&gt;
|-&lt;br /&gt;
|'''Amplifier (TX):'''&lt;br /&gt;
|Mini-Circuits ZX60-H122+&lt;br /&gt;
|-&lt;br /&gt;
|'''RF Switch:'''&lt;br /&gt;
|Mini-Circuits ZFSWA2-63DR+&lt;br /&gt;
|-&lt;br /&gt;
|'''Enclosure:'''&lt;br /&gt;
|Custom Design - Manufactured by Protocase, Inc.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-188-b200mini-internal-annotated.png|thumb|500px|center|Figure 7: Photograph of the USRP SAW sensor interrogation system with added components. An amplifier increases the output power to greater than +20dBm while an RF switch allows only a single antenna to be used for both transmit and receive. The components are housed in a custom enclosure that was manufacture by Protocase, Inc.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-188-b200mini-front-back.png|thumb|500px|center|Figure 8: Photograph of the front of the USRP enclosure. A single antenna is switched rapidly between the transmit (TRX) and receive (RX2) ports. The rear panel has ports for power and data (USB3.0). The dimensions of the system are 18x15x5cm (7x6x2in.) and has a mass of approximately 630g (1.4lbs.).]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Wireless Temperature Measurements with the USRP==&lt;br /&gt;
The SAW sensor was interrogated by the USRP and the received signal was post-processed to extract the sensor temperature. A matched filter correlator, previously developed at UCF in MATLAB, has been ported to Python to be compatible with the USRP and Linux. A reference thermocouple (wired) is attached to the SAW sensor (wireless) to ensure that the extracted temperature is accurate. Receiving one data sweep, post processing with 10,000 matched filters, and extracting temperature takes approximately 0.1 seconds. Averaging multiple data sweeps is possible (coherent integration) with 1000 averages taking approximately 1.0 second. The sensor was cooled (cold nitrogen gas) and heated (electric heat gun) randomly before being allowed to return to room temperature. The extracted temperature for the SAW sensor with reference thermocouple are given in Figure 9.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-188-saw-sensor-and-tc.png|thumb|500px|center|Figure 9: Extracted temperature of a wireless SAW sensor with a reference thermocouple. The sensor was cooled (cold nitrogen gas) and heated (electric heat gun) randomly and then let to return to room temperature. The SAW sensor was interrogated wirelessly with the USRP B200 system.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The system is also capable of interrogating multiple sensors, simultaneously. A set of four (4) SAW sensors were designed which are compatible with the USRP system. Each sensor has a unique OFC set and static time delay to the first reflector (ranging from 2.5 to 5 micro-seconds). Each sensor response is 570ns long and each is comprised of 4 OFC chips. The sensors are interrogated simultaneously by the interrogation pulse from the USRP. Each sensor response is then processed separately to extract the sensor temperature. Two (2) sensors were heated/cooled randomly while the other two (2) sensors were left to remain at room temperature. The extracted temperatures for all four (4) temperature sensors is plotted in Figure 10.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-188-usrp-sensors-temp-all.png|thumb|500px|center|Figure 10: Simultaneous interrogation of four (4) wireless SAW temperature sensors. Two of the sensors were heated (electric heat gun) or cooled (cold nitrogen gas) randomly. The other two sensors were left to remain at room temperature. Some variability in the measurements is evident due to inter-sensor interference.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
The USRP B200mini was successfully utilized to implement an efficient interrogation system for passive, wireless SAW strain sensors. A pulsed interrogator design was able to be implemented due to the open-source FPGA design, allowing the custom functionality required by this application to be implemented. The USRP can be quickly reconfigured as the sensor designs evolve to improve performance or for new sensor designs such as strain or gas measurements. Currently, the system is capable of extracting the SAW sensor temperature accurately from a range of up to 5 meters. Work is continuing to improve the system performance as well as implementing different interrogator embodiments.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
# Malocha, D.C.; Puccio, D.; Gallagher, D., &amp;quot;Orthogonal frequency coding for SAW device applications,&amp;quot; Ultrasonics Symposium, 2004 IEEE , vol.2, no., pp.1082,1085 Vol.2, 23-27 Aug. 2004&lt;br /&gt;
# Malocha, D.C.; Gallagher, M., &amp;quot;Coherent correlator multi-sensor receiver,&amp;quot; Frequency Control Symposium (FCS), 2012 IEEE International , vol., no., pp.1,5, 21-24 May 2012&lt;br /&gt;
# Humphries, J.R.; Gallagher, M.W.; Gallagher, D.R.; Weeks, A.R.; Malocha, D.C., &amp;quot;Interrogation of orthogonal frequency coded SAW sensors using the USRP,&amp;quot; in Frequency Control Symposium &amp;amp; the European Frequency and Time Forum (FCS), 2015 Joint Conference of the IEEE International , vol., no., pp.530-535, 12-16 April 2015&lt;br /&gt;
# Gallagher, M.W.; Smith, W.C.; Malocha, D.C., &amp;quot;An integrated SAW sensor with direct write antenna,&amp;quot; in European Frequency and Time Forum &amp;amp; International Frequency Control Symposium (EFTF/IFC), 2013 Joint , vol., no., pp.450-453, 21-25 July 2013&lt;br /&gt;
&lt;br /&gt;
==Contact Information==&lt;br /&gt;
* Dr. Donald C. Malocha&lt;br /&gt;
* [mailto:Donald.Malocha@ucf.edu Donald.Malocha@ucf.edu]&lt;br /&gt;
* University of Central Florida&lt;br /&gt;
* [http://caat.engr.ucf.edu/ CAAT Website]&lt;br /&gt;
&lt;br /&gt;
[[Category:Application Notes]]&lt;/div&gt;</summary>
		<author><name>JamesHumphries</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=Interrogating_Passive_Wireless_SAW_Sensors_with_the_USRP&amp;diff=2054</id>
		<title>Interrogating Passive Wireless SAW Sensors with the USRP</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=Interrogating_Passive_Wireless_SAW_Sensors_with_the_USRP&amp;diff=2054"/>
				<updated>2016-05-10T02:07:30Z</updated>
		
		<summary type="html">&lt;p&gt;JamesHumphries: /* Wireless Temperature Measurements with the USRP */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Application Note Number==&lt;br /&gt;
'''AN-188 '''&lt;br /&gt;
&lt;br /&gt;
==Revision History==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Date&lt;br /&gt;
!Author&lt;br /&gt;
!Details&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| 2016-05-01   &lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| Trip Humphries&lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| Initial creation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Interrogating Passive, Wireless SAW Sensors with the USRP B200mini=&lt;br /&gt;
&lt;br /&gt;
'''Authors:''' James 'Trip' Humphries, Mark Gallagher, Daniel Gallagher, Arthur Weeks, Donald Malocha&lt;br /&gt;
&lt;br /&gt;
'''Ettus Research Products Used:''' USRP B200mini&lt;br /&gt;
&lt;br /&gt;
'''Research Institution:''' University of Central Florida&lt;br /&gt;
&lt;br /&gt;
'''Laboratory:''' Consortium for Applied Acoustoelectronic Technology (CAAT)&lt;br /&gt;
&lt;br /&gt;
'''Application Area:''' Wireless Sensors&lt;br /&gt;
&lt;br /&gt;
==Challenge==&lt;br /&gt;
Develop a wide-band transceiver to interrogate passive, wireless surface acoustic wave (SAW) sensors at 915MHz using a commercially available software radio platform.&lt;br /&gt;
&lt;br /&gt;
==Solution==&lt;br /&gt;
The Ettus USRP B200mini was utilized to interrogate wireless SAW sensors by modifying the FPGA design to implement a synchronous, pulsed mode interrogator and utilize the entire 56MHz bandwidth of the B200mini.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Typical interrogator design for wireless SAW sensor systems require many discrete components and lengthy build times, making it difficult to rapidly adapt to sensor designs in a research environment. We have employed the USRP B200mini as a SAW sensor interrogation system. Interrogation of wideband orthogonal frequency coded (OFC) SAW sensors imposes strict requirements on the timing and synchronization of the transceiver. The USRP FPGA has been modified to operate in a synchronous, pulsed mode of operation, allowing rapid data acquisition and the full 56MHz bandwidth of the AD9364 to be utilized. Data from the USRP is passed to a custom matched filter correlator routine to extract sensor parameters. The system is capable of interrogating multiple sensors, simultaneously. Demonstration of the system is accomplished by wirelessly interrogating SAW sensors at 915MHz and extracting temperature. A photograph of the system is shown in Figure 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-188-saw-sensor-sys.png|thumb|500px|center|Figure 1: Photograph of passive, wireless SAW sensor system using the USRP B200mini. On the left is the host computer to handle the USRP interface and perform post-processing to extract the sensor parameters. In the center is the are two wireless SAW sensors. On the right is the interrogator system and USRP in a custom enclosure.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Consortium for Applied Acoustoelectronic Technology (CAAT) - University of Central Florida==&lt;br /&gt;
The Consortium for Applied Acoustoelectronic Technology (CAAT) is a part of the University of Central Florida (UCF), in Orlando, FL. UCF is a comprehensive university with an enrollment of over 60,000 students. The UCF College of Engineering and Computer Science (CECS) supports multidisciplinary engineering research; offering advanced degrees at the MS and PhD levels.&lt;br /&gt;
The focus and expertise of CAAT is surface acoustic wave (SAW) devices and applications. Currently, CAAT is developing passive, wireless sensors based on SAW technology. The sensors are identified using an encoding technique known as orthogonal frequency coding (OFC). The sensors do not require an energy source (battery or other) and can be read from many meters away. Temperature, strain, and hydrogen sensors (among others) have been demonstrated wirelessly with this technology.&lt;br /&gt;
&lt;br /&gt;
==Passive, Wireless SAW Sensors==&lt;br /&gt;
SAW devices have many inherent properties that make them useful as sensors. Not only are they rugged to environmental extremes such as high temperature and radiation, but they can be operated wirelessly and passively (requires no power source or energy harvesting onboard the sensor). An interrogation signal is transmitted by the radio, illuminating all the SAW sensor tags simultaneously. Each SAW sensor reflects the received interrogation signal and is very similar to a RADAR system. The use of the SAW device allows the reflection to be engineered to encode the device ID (code) and measurand via changes in frequency, phase, or magnitude. The resulting changes can be measured and correlated to some measurement such as temperature, strain, or gas concentration. A SAW temperature sensor with integrated antenna is shown in Figure 2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-188-saw-sensor-quarter-ruler.png|thumb|500px|center|Figure 2: Photograph of a wireless SAW sensor developed at UCF. The SAW die is packaged and attached to a dipole antenna. A metric ruler and U.S. quarter are shown for size reference. The sensor dimensions are 10cm x 2.5cm (4&amp;quot;x 1&amp;quot;). Sensor shown here detects temperature.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Orthogonal frequency coding (OFC) can be implemented on a SAW platform by placing an array of reflector gratings in the path of the surface wave [1]. Each grating is assigned a center frequency which is orthogonal to all other gratings in the reflector array. OFC chips that are not synchronous to an incoming signal will appear nearly transparent to that frequency. The chips are shuffled in time to create a unique code, which identifies the sensor. Each sensor code is also given a discrete time slot and time gating during post-processing can be used to improve the sensor SNR. An illustration of a SAW device with OFC is given in Figure 3.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-188-ofc-schematic.png|thumb|500px|center|Figure 3: Illustration of a SAW OFC sensor tag. A signal input to the antenna is converted to an acoustic wave by the SAW transducer (left). The signal propagates to the OFC chips (right) and is reflected back to the transducer where it is re-radiated for reception on the USRP. The received signal is noise-like and is processed by a match-filter correlator to extract sensor parameters.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==USRP FPGA Modifications and Software==&lt;br /&gt;
Modifications were made to the USRP FPGA to incorporate custom functionality in both the transmit and receive chains. On the transmit side, an interrogation signal generator was implemented. It generates a linear FM chirp with a bandwidth of 35MHz and time length of 1µs. The receiver was modified to synchronize to the transmit signal (start listening for sensor response after the interrogation signal has finished transmitting) and incorporate a listen window. The receiver listens for 9.15µs and stores those samples into a RAM buffer. The samples are then read back from the RAM buffer at a slow rate such that the full 56MHz bandwidth of the system can be utilized without saturating the sample bus (USB3.0). Real time post processing is not required for this application. A block diagram outlining the FPGA modifications is shown in Figure 4. A plot comparing the predicted and generated chirp spectrums is also given in Figure 5.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-188-b200-fpga-mod-diagram.png|thumb|500px|center|Figure 4: Block diagram of the USRP B200 showing the custom FPGA modifications. The open-source FPGA code was able to be modified to fit the specific requirements of interrogating SAW sensors. The interrogation signal generator (A) outputs a linear FM chirp that is 1us long and has a 35MHz bandwidth. The receiver modifications (B) buffers 512 samples after the interrogation signal has finished.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-188-fpga-chirp-spectrum.png|thumb|500px|center|Figure 5: Plot comparing the predicted chirp spectrum versus the samples output from the USRP FPGA. The USRP spectrum is captured at 915MHz and compared to the predicted baseband spectrum.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The USRP was integrated with a custom matched-filter correlation software package in Python using the GNU Radio Python API [2]. A set of matched filters is generated for each sensor in the system, where each matched filter corresponds to a specific temperature of the sensor (the user specifies the minimum and maximum temperatures as well as the temperature resolution). The matched filters are scaled using a frequency scaling factor (FSF), based on calibrated sensor parameters. The received sensor signal is correlated with each matched filter. The matched filter which yields the maximum correlation peak corresponds to the temperature of the current sensor being processed. Interrogation of a single sensor and extraction of the sensor temperature can be done in approximately 10-15ms with this setup. A block diagram of the implemented software is shown in Figure 6.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-188-python-software blk diagram.png|thumb|500px|center|Figure 6: Block diagram of the software implemented on the host computer for data capture and post processing. UHD handles the data transfer and programming of the USRP. GNU Radio provides useful programming and DSP blocks for the USRP data. A custom Python block was implemented in GNU Radio ('UCF Sink') which stores a requested number of samples to a memory vector which can be copied to the host program when needed. The received data is processed by a matched filter correlator to extract the temperature or other measurand.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==USRP System==&lt;br /&gt;
The full SAW sensor interrogation system included extra components to improve the transceiver performance. An amplifier was added to the transmit chain to increase the output power of the transmitter to &amp;gt;+20dBm. This allows the SAW sensors to be interrogated at a farther range. With this output power, current sensors can be detected at a range of 5 meters (16 feet) or more with a high gain antenna. In addition to the amplifier, an RF switch was incorporated which switches between the TRX and RX2 ports on the USRP. This allows a single antenna to be used for transmission and reception (instead of one antenna for each port). This also has the added benefit of eliminating the direct response between the two antennas from the interrogation pulse which can saturate the receiver and distort the received signal response. The switch is controlled by the USRP GPIO pins connected to the FPGA. Finally, a custom enclosure was designed to house the SAW sensor interrogation system. Photographs of the system are shown in Figure 7 and Figure 8.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+System Components&lt;br /&gt;
|-&lt;br /&gt;
|'''USRP:'''&lt;br /&gt;
|B200mini&lt;br /&gt;
|-&lt;br /&gt;
|'''Amplifier (TX):'''&lt;br /&gt;
|Mini-Circuits ZX60-H122+&lt;br /&gt;
|-&lt;br /&gt;
|'''RF Switch:'''&lt;br /&gt;
|Mini-Circuits ZFSWA2-63DR+&lt;br /&gt;
|-&lt;br /&gt;
|'''Enclosure:'''&lt;br /&gt;
|Custom Design - Manufactured by Protocase, Inc.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-188-b200mini-internal-annotated.png|thumb|500px|center|Figure 7: Photograph of the USRP SAW sensor interrogation system with added components. An amplifier increases the output power to greater than +20dBm while an RF switch allows only a single antenna to be used for both transmit and receive. The components are housed in a custom enclosure that was manufacture by Protocase, Inc.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-188-b200mini-front-back.png|thumb|500px|center|Figure 8: Photograph of the front of the USRP enclosure. A single antenna is switched rapidly between the transmit (TRX) and receive (RX2) ports. The rear panel has ports for power and data (USB3.0). The dimensions of the system are 18x15x5cm (7x6x2in.) and has a mass of approximately 630g (1.4lbs.).]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Wireless Temperature Measurements with the USRP==&lt;br /&gt;
The SAW sensor was interrogated by the USRP and the received signal was post-processed to extract the sensor temperature. A matched filter correlator, previously developed at UCF in MATLAB, has been ported to Python to be compatible with the USRP and Linux. A reference thermocouple (wired) is attached to the SAW sensor (wireless) to ensure that the extracted temperature is accurate. Receiving one data sweep, post processing with 10,000 matched filters, and extracting temperature takes approximately 0.1 seconds. Averaging multiple data sweeps is possible (coherent integration) with 1000 averages taking approximately 1.0 second. The sensor was cooled (cold nitrogen gas) and heated (electric heat gun) randomly before being allowed to return to room temperature. The extracted temperature for the SAW sensor with reference thermocouple are given in Figure 9.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-188-saw-sensor-and-tc.png|thumb|500px|center|Figure 9: Extracted temperature of a wireless SAW sensor with a reference thermocouple. The sensor was cooled (cold nitrogen gas) and heated (electric heat gun) randomly and then let to return to room temperature. The SAW sensor was interrogated wirelessly with the USRP B200 system.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The system is also capable of interrogating multiple sensors, simultaneously. A set of four (4) SAW sensors were designed which are compatible with the USRP system. Each sensor has a unique OFC set and static time delay to the first reflector (ranging from 2.5 to 5 micro-seconds). Each sensor response is 570ns long and each is comprised of 4 OFC chips. The sensors are interrogated simultaneously by the interrogation pulse from the USRP. Each sensor response is then processed separately to extract the sensor temperature. Two (2) sensors were heated/cooled randomly while the other two (2) sensors were left to remain at room temperature. The extracted temperatures for all four (4) temperature sensors is plotted in Figure 10.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-188-usrp-sensors-temp-all.png|thumb|500px|center|Figure 10: Simultaneous interrogation of four (4) wireless SAW temperature sensors. Two of the sensors were heated (electric heat gun) or cooled (cold nitrogen gas) randomly. The other two sensors were left to remain at room temperature. Some variability in the measurements is evident due to inter-sensor interference.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
The USRP B200mini was successfully utilized to implement an efficient interrogation system for passive, wireless SAW strain sensors. A pulsed interrogator design was able to be implemented due to the open-source FPGA design, allowing the custom functionality required by this application to be implemented. The USRP can be quickly reconfigured as the sensor designs evolve to improve performance or for new sensor designs such as strain or gas measurements. Currently, the system is capable of extracting the SAW sensor temperature accurately from a range of up to 5 meters. Work is continuing to improve the system performance as well as implementing different interrogator embodiments.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
# Malocha, D.C.; Puccio, D.; Gallagher, D., &amp;quot;Orthogonal frequency coding for SAW device applications,&amp;quot; Ultrasonics Symposium, 2004 IEEE , vol.2, no., pp.1082,1085 Vol.2, 23-27 Aug. 2004&lt;br /&gt;
# Malocha, D.C.; Gallagher, M., &amp;quot;Coherent correlator multi-sensor receiver,&amp;quot; Frequency Control Symposium (FCS), 2012 IEEE International , vol., no., pp.1,5, 21-24 May 2012&lt;br /&gt;
# Humphries, J.R.; Gallagher, M.W.; Gallagher, D.R.; Weeks, A.R.; Malocha, D.C., &amp;quot;Interrogation of orthogonal frequency coded SAW sensors using the USRP,&amp;quot; in Frequency Control Symposium &amp;amp; the European Frequency and Time Forum (FCS), 2015 Joint Conference of the IEEE International , vol., no., pp.530-535, 12-16 April 2015&lt;br /&gt;
# Gallagher, M.W.; Smith, W.C.; Malocha, D.C., &amp;quot;An integrated SAW sensor with direct write antenna,&amp;quot; in European Frequency and Time Forum &amp;amp; International Frequency Control Symposium (EFTF/IFC), 2013 Joint , vol., no., pp.450-453, 21-25 July 2013&lt;br /&gt;
&lt;br /&gt;
==Contact Information==&lt;br /&gt;
* Dr. Donald C. Malocha&lt;br /&gt;
* [mailto:Donald.Malocha@ucf.edu Donald.Malocha@ucf.edu]&lt;br /&gt;
* University of Central Florida&lt;br /&gt;
* [http://caat.engr.ucf.edu/ CAAT Website]&lt;br /&gt;
&lt;br /&gt;
[[Category:Application Notes]]&lt;/div&gt;</summary>
		<author><name>JamesHumphries</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=File:an-188-usrp-sensors-temp-all.png&amp;diff=2053</id>
		<title>File:an-188-usrp-sensors-temp-all.png</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=File:an-188-usrp-sensors-temp-all.png&amp;diff=2053"/>
				<updated>2016-05-10T02:06:51Z</updated>
		
		<summary type="html">&lt;p&gt;JamesHumphries: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>JamesHumphries</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=File:an-188-saw-sensor-and-tc.png&amp;diff=2052</id>
		<title>File:an-188-saw-sensor-and-tc.png</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=File:an-188-saw-sensor-and-tc.png&amp;diff=2052"/>
				<updated>2016-05-10T02:05:22Z</updated>
		
		<summary type="html">&lt;p&gt;JamesHumphries: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>JamesHumphries</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=Interrogating_Passive_Wireless_SAW_Sensors_with_the_USRP&amp;diff=2051</id>
		<title>Interrogating Passive Wireless SAW Sensors with the USRP</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=Interrogating_Passive_Wireless_SAW_Sensors_with_the_USRP&amp;diff=2051"/>
				<updated>2016-05-10T02:03:44Z</updated>
		
		<summary type="html">&lt;p&gt;JamesHumphries: /* USRP System */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Application Note Number==&lt;br /&gt;
'''AN-188 '''&lt;br /&gt;
&lt;br /&gt;
==Revision History==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Date&lt;br /&gt;
!Author&lt;br /&gt;
!Details&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| 2016-05-01   &lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| Trip Humphries&lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| Initial creation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Interrogating Passive, Wireless SAW Sensors with the USRP B200mini=&lt;br /&gt;
&lt;br /&gt;
'''Authors:''' James 'Trip' Humphries, Mark Gallagher, Daniel Gallagher, Arthur Weeks, Donald Malocha&lt;br /&gt;
&lt;br /&gt;
'''Ettus Research Products Used:''' USRP B200mini&lt;br /&gt;
&lt;br /&gt;
'''Research Institution:''' University of Central Florida&lt;br /&gt;
&lt;br /&gt;
'''Laboratory:''' Consortium for Applied Acoustoelectronic Technology (CAAT)&lt;br /&gt;
&lt;br /&gt;
'''Application Area:''' Wireless Sensors&lt;br /&gt;
&lt;br /&gt;
==Challenge==&lt;br /&gt;
Develop a wide-band transceiver to interrogate passive, wireless surface acoustic wave (SAW) sensors at 915MHz using a commercially available software radio platform.&lt;br /&gt;
&lt;br /&gt;
==Solution==&lt;br /&gt;
The Ettus USRP B200mini was utilized to interrogate wireless SAW sensors by modifying the FPGA design to implement a synchronous, pulsed mode interrogator and utilize the entire 56MHz bandwidth of the B200mini.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Typical interrogator design for wireless SAW sensor systems require many discrete components and lengthy build times, making it difficult to rapidly adapt to sensor designs in a research environment. We have employed the USRP B200mini as a SAW sensor interrogation system. Interrogation of wideband orthogonal frequency coded (OFC) SAW sensors imposes strict requirements on the timing and synchronization of the transceiver. The USRP FPGA has been modified to operate in a synchronous, pulsed mode of operation, allowing rapid data acquisition and the full 56MHz bandwidth of the AD9364 to be utilized. Data from the USRP is passed to a custom matched filter correlator routine to extract sensor parameters. The system is capable of interrogating multiple sensors, simultaneously. Demonstration of the system is accomplished by wirelessly interrogating SAW sensors at 915MHz and extracting temperature. A photograph of the system is shown in Figure 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-188-saw-sensor-sys.png|thumb|500px|center|Figure 1: Photograph of passive, wireless SAW sensor system using the USRP B200mini. On the left is the host computer to handle the USRP interface and perform post-processing to extract the sensor parameters. In the center is the are two wireless SAW sensors. On the right is the interrogator system and USRP in a custom enclosure.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Consortium for Applied Acoustoelectronic Technology (CAAT) - University of Central Florida==&lt;br /&gt;
The Consortium for Applied Acoustoelectronic Technology (CAAT) is a part of the University of Central Florida (UCF), in Orlando, FL. UCF is a comprehensive university with an enrollment of over 60,000 students. The UCF College of Engineering and Computer Science (CECS) supports multidisciplinary engineering research; offering advanced degrees at the MS and PhD levels.&lt;br /&gt;
The focus and expertise of CAAT is surface acoustic wave (SAW) devices and applications. Currently, CAAT is developing passive, wireless sensors based on SAW technology. The sensors are identified using an encoding technique known as orthogonal frequency coding (OFC). The sensors do not require an energy source (battery or other) and can be read from many meters away. Temperature, strain, and hydrogen sensors (among others) have been demonstrated wirelessly with this technology.&lt;br /&gt;
&lt;br /&gt;
==Passive, Wireless SAW Sensors==&lt;br /&gt;
SAW devices have many inherent properties that make them useful as sensors. Not only are they rugged to environmental extremes such as high temperature and radiation, but they can be operated wirelessly and passively (requires no power source or energy harvesting onboard the sensor). An interrogation signal is transmitted by the radio, illuminating all the SAW sensor tags simultaneously. Each SAW sensor reflects the received interrogation signal and is very similar to a RADAR system. The use of the SAW device allows the reflection to be engineered to encode the device ID (code) and measurand via changes in frequency, phase, or magnitude. The resulting changes can be measured and correlated to some measurement such as temperature, strain, or gas concentration. A SAW temperature sensor with integrated antenna is shown in Figure 2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-188-saw-sensor-quarter-ruler.png|thumb|500px|center|Figure 2: Photograph of a wireless SAW sensor developed at UCF. The SAW die is packaged and attached to a dipole antenna. A metric ruler and U.S. quarter are shown for size reference. The sensor dimensions are 10cm x 2.5cm (4&amp;quot;x 1&amp;quot;). Sensor shown here detects temperature.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Orthogonal frequency coding (OFC) can be implemented on a SAW platform by placing an array of reflector gratings in the path of the surface wave [1]. Each grating is assigned a center frequency which is orthogonal to all other gratings in the reflector array. OFC chips that are not synchronous to an incoming signal will appear nearly transparent to that frequency. The chips are shuffled in time to create a unique code, which identifies the sensor. Each sensor code is also given a discrete time slot and time gating during post-processing can be used to improve the sensor SNR. An illustration of a SAW device with OFC is given in Figure 3.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-188-ofc-schematic.png|thumb|500px|center|Figure 3: Illustration of a SAW OFC sensor tag. A signal input to the antenna is converted to an acoustic wave by the SAW transducer (left). The signal propagates to the OFC chips (right) and is reflected back to the transducer where it is re-radiated for reception on the USRP. The received signal is noise-like and is processed by a match-filter correlator to extract sensor parameters.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==USRP FPGA Modifications and Software==&lt;br /&gt;
Modifications were made to the USRP FPGA to incorporate custom functionality in both the transmit and receive chains. On the transmit side, an interrogation signal generator was implemented. It generates a linear FM chirp with a bandwidth of 35MHz and time length of 1µs. The receiver was modified to synchronize to the transmit signal (start listening for sensor response after the interrogation signal has finished transmitting) and incorporate a listen window. The receiver listens for 9.15µs and stores those samples into a RAM buffer. The samples are then read back from the RAM buffer at a slow rate such that the full 56MHz bandwidth of the system can be utilized without saturating the sample bus (USB3.0). Real time post processing is not required for this application. A block diagram outlining the FPGA modifications is shown in Figure 4. A plot comparing the predicted and generated chirp spectrums is also given in Figure 5.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-188-b200-fpga-mod-diagram.png|thumb|500px|center|Figure 4: Block diagram of the USRP B200 showing the custom FPGA modifications. The open-source FPGA code was able to be modified to fit the specific requirements of interrogating SAW sensors. The interrogation signal generator (A) outputs a linear FM chirp that is 1us long and has a 35MHz bandwidth. The receiver modifications (B) buffers 512 samples after the interrogation signal has finished.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-188-fpga-chirp-spectrum.png|thumb|500px|center|Figure 5: Plot comparing the predicted chirp spectrum versus the samples output from the USRP FPGA. The USRP spectrum is captured at 915MHz and compared to the predicted baseband spectrum.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The USRP was integrated with a custom matched-filter correlation software package in Python using the GNU Radio Python API [2]. A set of matched filters is generated for each sensor in the system, where each matched filter corresponds to a specific temperature of the sensor (the user specifies the minimum and maximum temperatures as well as the temperature resolution). The matched filters are scaled using a frequency scaling factor (FSF), based on calibrated sensor parameters. The received sensor signal is correlated with each matched filter. The matched filter which yields the maximum correlation peak corresponds to the temperature of the current sensor being processed. Interrogation of a single sensor and extraction of the sensor temperature can be done in approximately 10-15ms with this setup. A block diagram of the implemented software is shown in Figure 6.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-188-python-software blk diagram.png|thumb|500px|center|Figure 6: Block diagram of the software implemented on the host computer for data capture and post processing. UHD handles the data transfer and programming of the USRP. GNU Radio provides useful programming and DSP blocks for the USRP data. A custom Python block was implemented in GNU Radio ('UCF Sink') which stores a requested number of samples to a memory vector which can be copied to the host program when needed. The received data is processed by a matched filter correlator to extract the temperature or other measurand.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==USRP System==&lt;br /&gt;
The full SAW sensor interrogation system included extra components to improve the transceiver performance. An amplifier was added to the transmit chain to increase the output power of the transmitter to &amp;gt;+20dBm. This allows the SAW sensors to be interrogated at a farther range. With this output power, current sensors can be detected at a range of 5 meters (16 feet) or more with a high gain antenna. In addition to the amplifier, an RF switch was incorporated which switches between the TRX and RX2 ports on the USRP. This allows a single antenna to be used for transmission and reception (instead of one antenna for each port). This also has the added benefit of eliminating the direct response between the two antennas from the interrogation pulse which can saturate the receiver and distort the received signal response. The switch is controlled by the USRP GPIO pins connected to the FPGA. Finally, a custom enclosure was designed to house the SAW sensor interrogation system. Photographs of the system are shown in Figure 7 and Figure 8.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+System Components&lt;br /&gt;
|-&lt;br /&gt;
|'''USRP:'''&lt;br /&gt;
|B200mini&lt;br /&gt;
|-&lt;br /&gt;
|'''Amplifier (TX):'''&lt;br /&gt;
|Mini-Circuits ZX60-H122+&lt;br /&gt;
|-&lt;br /&gt;
|'''RF Switch:'''&lt;br /&gt;
|Mini-Circuits ZFSWA2-63DR+&lt;br /&gt;
|-&lt;br /&gt;
|'''Enclosure:'''&lt;br /&gt;
|Custom Design - Manufactured by Protocase, Inc.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-188-b200mini-internal-annotated.png|thumb|500px|center|Figure 7: Photograph of the USRP SAW sensor interrogation system with added components. An amplifier increases the output power to greater than +20dBm while an RF switch allows only a single antenna to be used for both transmit and receive. The components are housed in a custom enclosure that was manufacture by Protocase, Inc.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-188-b200mini-front-back.png|thumb|500px|center|Figure 8: Photograph of the front of the USRP enclosure. A single antenna is switched rapidly between the transmit (TRX) and receive (RX2) ports. The rear panel has ports for power and data (USB3.0). The dimensions of the system are 18x15x5cm (7x6x2in.) and has a mass of approximately 630g (1.4lbs.).]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Wireless Temperature Measurements with the USRP==&lt;br /&gt;
The SAW sensor was interrogated by the USRP and the received signal was post-processed to extract the sensor temperature. A matched filter correlator, previously developed at UCF in MATLAB, has been ported to Python to be compatible with the USRP and Linux. A reference thermocouple (wired) is attached to the SAW sensor (wireless) to ensure that the extracted temperature is accurate. Receiving one data sweep, post processing with 10,000 matched filters, and extracting temperature takes approximately 0.1 seconds. Averaging multiple data sweeps is possible (coherent integration) with 1000 averages taking approximately 1.0 second. The sensor was cooled (cold nitrogen gas) and heated (electric heat gun) randomly before being allowed to return to room temperature. The extracted temperature for the SAW sensor with reference thermocouple are given in Figure 9.&lt;br /&gt;
&lt;br /&gt;
The system is also capable of interrogating multiple sensors, simultaneously. A set of four (4) SAW sensors were designed which are compatible with the USRP system. Each sensor has a unique OFC set and static time delay to the first reflector (ranging from 2.5 to 5 micro-seconds). Each sensor response is 570ns long and each is comprised of 4 OFC chips. The sensors are interrogated simultaneously by the interrogation pulse from the USRP. Each sensor response is then processed separately to extract the sensor temperature. Two (2) sensors were heated/cooled randomly while the other two (2) sensors were left to remain at room temperature. The extracted temperatures for all four (4) temperature sensors is plotted in Figure 10.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
The USRP B200mini was successfully utilized to implement an efficient interrogation system for passive, wireless SAW strain sensors. A pulsed interrogator design was able to be implemented due to the open-source FPGA design, allowing the custom functionality required by this application to be implemented. The USRP can be quickly reconfigured as the sensor designs evolve to improve performance or for new sensor designs such as strain or gas measurements. Currently, the system is capable of extracting the SAW sensor temperature accurately from a range of up to 5 meters. Work is continuing to improve the system performance as well as implementing different interrogator embodiments.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
# Malocha, D.C.; Puccio, D.; Gallagher, D., &amp;quot;Orthogonal frequency coding for SAW device applications,&amp;quot; Ultrasonics Symposium, 2004 IEEE , vol.2, no., pp.1082,1085 Vol.2, 23-27 Aug. 2004&lt;br /&gt;
# Malocha, D.C.; Gallagher, M., &amp;quot;Coherent correlator multi-sensor receiver,&amp;quot; Frequency Control Symposium (FCS), 2012 IEEE International , vol., no., pp.1,5, 21-24 May 2012&lt;br /&gt;
# Humphries, J.R.; Gallagher, M.W.; Gallagher, D.R.; Weeks, A.R.; Malocha, D.C., &amp;quot;Interrogation of orthogonal frequency coded SAW sensors using the USRP,&amp;quot; in Frequency Control Symposium &amp;amp; the European Frequency and Time Forum (FCS), 2015 Joint Conference of the IEEE International , vol., no., pp.530-535, 12-16 April 2015&lt;br /&gt;
# Gallagher, M.W.; Smith, W.C.; Malocha, D.C., &amp;quot;An integrated SAW sensor with direct write antenna,&amp;quot; in European Frequency and Time Forum &amp;amp; International Frequency Control Symposium (EFTF/IFC), 2013 Joint , vol., no., pp.450-453, 21-25 July 2013&lt;br /&gt;
&lt;br /&gt;
==Contact Information==&lt;br /&gt;
* Dr. Donald C. Malocha&lt;br /&gt;
* [mailto:Donald.Malocha@ucf.edu Donald.Malocha@ucf.edu]&lt;br /&gt;
* University of Central Florida&lt;br /&gt;
* [http://caat.engr.ucf.edu/ CAAT Website]&lt;br /&gt;
&lt;br /&gt;
[[Category:Application Notes]]&lt;/div&gt;</summary>
		<author><name>JamesHumphries</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=File:an-188-b200mini-front-back.png&amp;diff=2050</id>
		<title>File:an-188-b200mini-front-back.png</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=File:an-188-b200mini-front-back.png&amp;diff=2050"/>
				<updated>2016-05-10T02:02:25Z</updated>
		
		<summary type="html">&lt;p&gt;JamesHumphries: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>JamesHumphries</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=File:an-188-b200mini-internal-annotated.png&amp;diff=2049</id>
		<title>File:an-188-b200mini-internal-annotated.png</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=File:an-188-b200mini-internal-annotated.png&amp;diff=2049"/>
				<updated>2016-05-10T02:00:12Z</updated>
		
		<summary type="html">&lt;p&gt;JamesHumphries: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>JamesHumphries</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=Interrogating_Passive_Wireless_SAW_Sensors_with_the_USRP&amp;diff=2048</id>
		<title>Interrogating Passive Wireless SAW Sensors with the USRP</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=Interrogating_Passive_Wireless_SAW_Sensors_with_the_USRP&amp;diff=2048"/>
				<updated>2016-05-10T01:58:47Z</updated>
		
		<summary type="html">&lt;p&gt;JamesHumphries: /* USRP FPGA Modifications and Software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Application Note Number==&lt;br /&gt;
'''AN-188 '''&lt;br /&gt;
&lt;br /&gt;
==Revision History==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Date&lt;br /&gt;
!Author&lt;br /&gt;
!Details&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| 2016-05-01   &lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| Trip Humphries&lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| Initial creation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Interrogating Passive, Wireless SAW Sensors with the USRP B200mini=&lt;br /&gt;
&lt;br /&gt;
'''Authors:''' James 'Trip' Humphries, Mark Gallagher, Daniel Gallagher, Arthur Weeks, Donald Malocha&lt;br /&gt;
&lt;br /&gt;
'''Ettus Research Products Used:''' USRP B200mini&lt;br /&gt;
&lt;br /&gt;
'''Research Institution:''' University of Central Florida&lt;br /&gt;
&lt;br /&gt;
'''Laboratory:''' Consortium for Applied Acoustoelectronic Technology (CAAT)&lt;br /&gt;
&lt;br /&gt;
'''Application Area:''' Wireless Sensors&lt;br /&gt;
&lt;br /&gt;
==Challenge==&lt;br /&gt;
Develop a wide-band transceiver to interrogate passive, wireless surface acoustic wave (SAW) sensors at 915MHz using a commercially available software radio platform.&lt;br /&gt;
&lt;br /&gt;
==Solution==&lt;br /&gt;
The Ettus USRP B200mini was utilized to interrogate wireless SAW sensors by modifying the FPGA design to implement a synchronous, pulsed mode interrogator and utilize the entire 56MHz bandwidth of the B200mini.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Typical interrogator design for wireless SAW sensor systems require many discrete components and lengthy build times, making it difficult to rapidly adapt to sensor designs in a research environment. We have employed the USRP B200mini as a SAW sensor interrogation system. Interrogation of wideband orthogonal frequency coded (OFC) SAW sensors imposes strict requirements on the timing and synchronization of the transceiver. The USRP FPGA has been modified to operate in a synchronous, pulsed mode of operation, allowing rapid data acquisition and the full 56MHz bandwidth of the AD9364 to be utilized. Data from the USRP is passed to a custom matched filter correlator routine to extract sensor parameters. The system is capable of interrogating multiple sensors, simultaneously. Demonstration of the system is accomplished by wirelessly interrogating SAW sensors at 915MHz and extracting temperature. A photograph of the system is shown in Figure 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-188-saw-sensor-sys.png|thumb|500px|center|Figure 1: Photograph of passive, wireless SAW sensor system using the USRP B200mini. On the left is the host computer to handle the USRP interface and perform post-processing to extract the sensor parameters. In the center is the are two wireless SAW sensors. On the right is the interrogator system and USRP in a custom enclosure.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Consortium for Applied Acoustoelectronic Technology (CAAT) - University of Central Florida==&lt;br /&gt;
The Consortium for Applied Acoustoelectronic Technology (CAAT) is a part of the University of Central Florida (UCF), in Orlando, FL. UCF is a comprehensive university with an enrollment of over 60,000 students. The UCF College of Engineering and Computer Science (CECS) supports multidisciplinary engineering research; offering advanced degrees at the MS and PhD levels.&lt;br /&gt;
The focus and expertise of CAAT is surface acoustic wave (SAW) devices and applications. Currently, CAAT is developing passive, wireless sensors based on SAW technology. The sensors are identified using an encoding technique known as orthogonal frequency coding (OFC). The sensors do not require an energy source (battery or other) and can be read from many meters away. Temperature, strain, and hydrogen sensors (among others) have been demonstrated wirelessly with this technology.&lt;br /&gt;
&lt;br /&gt;
==Passive, Wireless SAW Sensors==&lt;br /&gt;
SAW devices have many inherent properties that make them useful as sensors. Not only are they rugged to environmental extremes such as high temperature and radiation, but they can be operated wirelessly and passively (requires no power source or energy harvesting onboard the sensor). An interrogation signal is transmitted by the radio, illuminating all the SAW sensor tags simultaneously. Each SAW sensor reflects the received interrogation signal and is very similar to a RADAR system. The use of the SAW device allows the reflection to be engineered to encode the device ID (code) and measurand via changes in frequency, phase, or magnitude. The resulting changes can be measured and correlated to some measurement such as temperature, strain, or gas concentration. A SAW temperature sensor with integrated antenna is shown in Figure 2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-188-saw-sensor-quarter-ruler.png|thumb|500px|center|Figure 2: Photograph of a wireless SAW sensor developed at UCF. The SAW die is packaged and attached to a dipole antenna. A metric ruler and U.S. quarter are shown for size reference. The sensor dimensions are 10cm x 2.5cm (4&amp;quot;x 1&amp;quot;). Sensor shown here detects temperature.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Orthogonal frequency coding (OFC) can be implemented on a SAW platform by placing an array of reflector gratings in the path of the surface wave [1]. Each grating is assigned a center frequency which is orthogonal to all other gratings in the reflector array. OFC chips that are not synchronous to an incoming signal will appear nearly transparent to that frequency. The chips are shuffled in time to create a unique code, which identifies the sensor. Each sensor code is also given a discrete time slot and time gating during post-processing can be used to improve the sensor SNR. An illustration of a SAW device with OFC is given in Figure 3.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-188-ofc-schematic.png|thumb|500px|center|Figure 3: Illustration of a SAW OFC sensor tag. A signal input to the antenna is converted to an acoustic wave by the SAW transducer (left). The signal propagates to the OFC chips (right) and is reflected back to the transducer where it is re-radiated for reception on the USRP. The received signal is noise-like and is processed by a match-filter correlator to extract sensor parameters.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==USRP FPGA Modifications and Software==&lt;br /&gt;
Modifications were made to the USRP FPGA to incorporate custom functionality in both the transmit and receive chains. On the transmit side, an interrogation signal generator was implemented. It generates a linear FM chirp with a bandwidth of 35MHz and time length of 1µs. The receiver was modified to synchronize to the transmit signal (start listening for sensor response after the interrogation signal has finished transmitting) and incorporate a listen window. The receiver listens for 9.15µs and stores those samples into a RAM buffer. The samples are then read back from the RAM buffer at a slow rate such that the full 56MHz bandwidth of the system can be utilized without saturating the sample bus (USB3.0). Real time post processing is not required for this application. A block diagram outlining the FPGA modifications is shown in Figure 4. A plot comparing the predicted and generated chirp spectrums is also given in Figure 5.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-188-b200-fpga-mod-diagram.png|thumb|500px|center|Figure 4: Block diagram of the USRP B200 showing the custom FPGA modifications. The open-source FPGA code was able to be modified to fit the specific requirements of interrogating SAW sensors. The interrogation signal generator (A) outputs a linear FM chirp that is 1us long and has a 35MHz bandwidth. The receiver modifications (B) buffers 512 samples after the interrogation signal has finished.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-188-fpga-chirp-spectrum.png|thumb|500px|center|Figure 5: Plot comparing the predicted chirp spectrum versus the samples output from the USRP FPGA. The USRP spectrum is captured at 915MHz and compared to the predicted baseband spectrum.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The USRP was integrated with a custom matched-filter correlation software package in Python using the GNU Radio Python API [2]. A set of matched filters is generated for each sensor in the system, where each matched filter corresponds to a specific temperature of the sensor (the user specifies the minimum and maximum temperatures as well as the temperature resolution). The matched filters are scaled using a frequency scaling factor (FSF), based on calibrated sensor parameters. The received sensor signal is correlated with each matched filter. The matched filter which yields the maximum correlation peak corresponds to the temperature of the current sensor being processed. Interrogation of a single sensor and extraction of the sensor temperature can be done in approximately 10-15ms with this setup. A block diagram of the implemented software is shown in Figure 6.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-188-python-software blk diagram.png|thumb|500px|center|Figure 6: Block diagram of the software implemented on the host computer for data capture and post processing. UHD handles the data transfer and programming of the USRP. GNU Radio provides useful programming and DSP blocks for the USRP data. A custom Python block was implemented in GNU Radio ('UCF Sink') which stores a requested number of samples to a memory vector which can be copied to the host program when needed. The received data is processed by a matched filter correlator to extract the temperature or other measurand.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==USRP System==&lt;br /&gt;
The full SAW sensor interrogation system included extra components to improve the transceiver performance. An amplifier was added to the transmit chain to increase the output power of the transmitter to &amp;gt;+20dBm. This allows the SAW sensors to be interrogated at a farther range. With this output power, current sensors can be detected at a range of 5 meters (16 feet) or more with a high gain antenna. In addition to the amplifier, an RF switch was incorporated which switches between the TRX and RX2 ports on the USRP. This allows a single antenna to be used for transmission and reception (instead of one antenna for each port). This also has the added benefit of eliminating the direct response between the two antennas from the interrogation pulse which can saturate the receiver and distort the received signal response. The switch is controlled by the USRP GPIO pins connected to the FPGA. Finally, a custom enclosure was designed to house the SAW sensor interrogation system. Photographs of the system are shown in Figure 7 and Figure 8.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+System Components&lt;br /&gt;
|-&lt;br /&gt;
|'''USRP:'''&lt;br /&gt;
|B200mini&lt;br /&gt;
|-&lt;br /&gt;
|'''Amplifier (TX):'''&lt;br /&gt;
|Mini-Circuits ZX60-H122+&lt;br /&gt;
|-&lt;br /&gt;
|'''RF Switch:'''&lt;br /&gt;
|Mini-Circuits ZFSWA2-63DR+&lt;br /&gt;
|-&lt;br /&gt;
|'''Enclosure:'''&lt;br /&gt;
|Custom Design - Manufactured by Protocase, Inc.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Wireless Temperature Measurements with the USRP==&lt;br /&gt;
The SAW sensor was interrogated by the USRP and the received signal was post-processed to extract the sensor temperature. A matched filter correlator, previously developed at UCF in MATLAB, has been ported to Python to be compatible with the USRP and Linux. A reference thermocouple (wired) is attached to the SAW sensor (wireless) to ensure that the extracted temperature is accurate. Receiving one data sweep, post processing with 10,000 matched filters, and extracting temperature takes approximately 0.1 seconds. Averaging multiple data sweeps is possible (coherent integration) with 1000 averages taking approximately 1.0 second. The sensor was cooled (cold nitrogen gas) and heated (electric heat gun) randomly before being allowed to return to room temperature. The extracted temperature for the SAW sensor with reference thermocouple are given in Figure 9.&lt;br /&gt;
&lt;br /&gt;
The system is also capable of interrogating multiple sensors, simultaneously. A set of four (4) SAW sensors were designed which are compatible with the USRP system. Each sensor has a unique OFC set and static time delay to the first reflector (ranging from 2.5 to 5 micro-seconds). Each sensor response is 570ns long and each is comprised of 4 OFC chips. The sensors are interrogated simultaneously by the interrogation pulse from the USRP. Each sensor response is then processed separately to extract the sensor temperature. Two (2) sensors were heated/cooled randomly while the other two (2) sensors were left to remain at room temperature. The extracted temperatures for all four (4) temperature sensors is plotted in Figure 10.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
The USRP B200mini was successfully utilized to implement an efficient interrogation system for passive, wireless SAW strain sensors. A pulsed interrogator design was able to be implemented due to the open-source FPGA design, allowing the custom functionality required by this application to be implemented. The USRP can be quickly reconfigured as the sensor designs evolve to improve performance or for new sensor designs such as strain or gas measurements. Currently, the system is capable of extracting the SAW sensor temperature accurately from a range of up to 5 meters. Work is continuing to improve the system performance as well as implementing different interrogator embodiments.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
# Malocha, D.C.; Puccio, D.; Gallagher, D., &amp;quot;Orthogonal frequency coding for SAW device applications,&amp;quot; Ultrasonics Symposium, 2004 IEEE , vol.2, no., pp.1082,1085 Vol.2, 23-27 Aug. 2004&lt;br /&gt;
# Malocha, D.C.; Gallagher, M., &amp;quot;Coherent correlator multi-sensor receiver,&amp;quot; Frequency Control Symposium (FCS), 2012 IEEE International , vol., no., pp.1,5, 21-24 May 2012&lt;br /&gt;
# Humphries, J.R.; Gallagher, M.W.; Gallagher, D.R.; Weeks, A.R.; Malocha, D.C., &amp;quot;Interrogation of orthogonal frequency coded SAW sensors using the USRP,&amp;quot; in Frequency Control Symposium &amp;amp; the European Frequency and Time Forum (FCS), 2015 Joint Conference of the IEEE International , vol., no., pp.530-535, 12-16 April 2015&lt;br /&gt;
# Gallagher, M.W.; Smith, W.C.; Malocha, D.C., &amp;quot;An integrated SAW sensor with direct write antenna,&amp;quot; in European Frequency and Time Forum &amp;amp; International Frequency Control Symposium (EFTF/IFC), 2013 Joint , vol., no., pp.450-453, 21-25 July 2013&lt;br /&gt;
&lt;br /&gt;
==Contact Information==&lt;br /&gt;
* Dr. Donald C. Malocha&lt;br /&gt;
* [mailto:Donald.Malocha@ucf.edu Donald.Malocha@ucf.edu]&lt;br /&gt;
* University of Central Florida&lt;br /&gt;
* [http://caat.engr.ucf.edu/ CAAT Website]&lt;br /&gt;
&lt;br /&gt;
[[Category:Application Notes]]&lt;/div&gt;</summary>
		<author><name>JamesHumphries</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=File:an-188-python-software_blk_diagram.png&amp;diff=2047</id>
		<title>File:an-188-python-software blk diagram.png</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=File:an-188-python-software_blk_diagram.png&amp;diff=2047"/>
				<updated>2016-05-10T01:58:10Z</updated>
		
		<summary type="html">&lt;p&gt;JamesHumphries: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>JamesHumphries</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=File:an-188-b200-fpga-mod-diagram.png&amp;diff=2046</id>
		<title>File:an-188-b200-fpga-mod-diagram.png</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=File:an-188-b200-fpga-mod-diagram.png&amp;diff=2046"/>
				<updated>2016-05-10T01:56:08Z</updated>
		
		<summary type="html">&lt;p&gt;JamesHumphries: JamesHumphries uploaded a new version of File:an-188-b200-fpga-mod-diagram.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>JamesHumphries</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=File:an-188-fpga-chirp-spectrum.png&amp;diff=2045</id>
		<title>File:an-188-fpga-chirp-spectrum.png</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=File:an-188-fpga-chirp-spectrum.png&amp;diff=2045"/>
				<updated>2016-05-10T01:51:16Z</updated>
		
		<summary type="html">&lt;p&gt;JamesHumphries: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>JamesHumphries</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=File:an-188-b200-fpga-mod-diagram.png&amp;diff=2044</id>
		<title>File:an-188-b200-fpga-mod-diagram.png</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=File:an-188-b200-fpga-mod-diagram.png&amp;diff=2044"/>
				<updated>2016-05-10T01:49:36Z</updated>
		
		<summary type="html">&lt;p&gt;JamesHumphries: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>JamesHumphries</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=Interrogating_Passive_Wireless_SAW_Sensors_with_the_USRP&amp;diff=2043</id>
		<title>Interrogating Passive Wireless SAW Sensors with the USRP</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=Interrogating_Passive_Wireless_SAW_Sensors_with_the_USRP&amp;diff=2043"/>
				<updated>2016-05-10T01:48:19Z</updated>
		
		<summary type="html">&lt;p&gt;JamesHumphries: /* Passive, Wireless SAW Sensors */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Application Note Number==&lt;br /&gt;
'''AN-188 '''&lt;br /&gt;
&lt;br /&gt;
==Revision History==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Date&lt;br /&gt;
!Author&lt;br /&gt;
!Details&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| 2016-05-01   &lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| Trip Humphries&lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| Initial creation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Interrogating Passive, Wireless SAW Sensors with the USRP B200mini=&lt;br /&gt;
&lt;br /&gt;
'''Authors:''' James 'Trip' Humphries, Mark Gallagher, Daniel Gallagher, Arthur Weeks, Donald Malocha&lt;br /&gt;
&lt;br /&gt;
'''Ettus Research Products Used:''' USRP B200mini&lt;br /&gt;
&lt;br /&gt;
'''Research Institution:''' University of Central Florida&lt;br /&gt;
&lt;br /&gt;
'''Laboratory:''' Consortium for Applied Acoustoelectronic Technology (CAAT)&lt;br /&gt;
&lt;br /&gt;
'''Application Area:''' Wireless Sensors&lt;br /&gt;
&lt;br /&gt;
==Challenge==&lt;br /&gt;
Develop a wide-band transceiver to interrogate passive, wireless surface acoustic wave (SAW) sensors at 915MHz using a commercially available software radio platform.&lt;br /&gt;
&lt;br /&gt;
==Solution==&lt;br /&gt;
The Ettus USRP B200mini was utilized to interrogate wireless SAW sensors by modifying the FPGA design to implement a synchronous, pulsed mode interrogator and utilize the entire 56MHz bandwidth of the B200mini.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Typical interrogator design for wireless SAW sensor systems require many discrete components and lengthy build times, making it difficult to rapidly adapt to sensor designs in a research environment. We have employed the USRP B200mini as a SAW sensor interrogation system. Interrogation of wideband orthogonal frequency coded (OFC) SAW sensors imposes strict requirements on the timing and synchronization of the transceiver. The USRP FPGA has been modified to operate in a synchronous, pulsed mode of operation, allowing rapid data acquisition and the full 56MHz bandwidth of the AD9364 to be utilized. Data from the USRP is passed to a custom matched filter correlator routine to extract sensor parameters. The system is capable of interrogating multiple sensors, simultaneously. Demonstration of the system is accomplished by wirelessly interrogating SAW sensors at 915MHz and extracting temperature. A photograph of the system is shown in Figure 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-188-saw-sensor-sys.png|thumb|500px|center|Figure 1: Photograph of passive, wireless SAW sensor system using the USRP B200mini. On the left is the host computer to handle the USRP interface and perform post-processing to extract the sensor parameters. In the center is the are two wireless SAW sensors. On the right is the interrogator system and USRP in a custom enclosure.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Consortium for Applied Acoustoelectronic Technology (CAAT) - University of Central Florida==&lt;br /&gt;
The Consortium for Applied Acoustoelectronic Technology (CAAT) is a part of the University of Central Florida (UCF), in Orlando, FL. UCF is a comprehensive university with an enrollment of over 60,000 students. The UCF College of Engineering and Computer Science (CECS) supports multidisciplinary engineering research; offering advanced degrees at the MS and PhD levels.&lt;br /&gt;
The focus and expertise of CAAT is surface acoustic wave (SAW) devices and applications. Currently, CAAT is developing passive, wireless sensors based on SAW technology. The sensors are identified using an encoding technique known as orthogonal frequency coding (OFC). The sensors do not require an energy source (battery or other) and can be read from many meters away. Temperature, strain, and hydrogen sensors (among others) have been demonstrated wirelessly with this technology.&lt;br /&gt;
&lt;br /&gt;
==Passive, Wireless SAW Sensors==&lt;br /&gt;
SAW devices have many inherent properties that make them useful as sensors. Not only are they rugged to environmental extremes such as high temperature and radiation, but they can be operated wirelessly and passively (requires no power source or energy harvesting onboard the sensor). An interrogation signal is transmitted by the radio, illuminating all the SAW sensor tags simultaneously. Each SAW sensor reflects the received interrogation signal and is very similar to a RADAR system. The use of the SAW device allows the reflection to be engineered to encode the device ID (code) and measurand via changes in frequency, phase, or magnitude. The resulting changes can be measured and correlated to some measurement such as temperature, strain, or gas concentration. A SAW temperature sensor with integrated antenna is shown in Figure 2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-188-saw-sensor-quarter-ruler.png|thumb|500px|center|Figure 2: Photograph of a wireless SAW sensor developed at UCF. The SAW die is packaged and attached to a dipole antenna. A metric ruler and U.S. quarter are shown for size reference. The sensor dimensions are 10cm x 2.5cm (4&amp;quot;x 1&amp;quot;). Sensor shown here detects temperature.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Orthogonal frequency coding (OFC) can be implemented on a SAW platform by placing an array of reflector gratings in the path of the surface wave [1]. Each grating is assigned a center frequency which is orthogonal to all other gratings in the reflector array. OFC chips that are not synchronous to an incoming signal will appear nearly transparent to that frequency. The chips are shuffled in time to create a unique code, which identifies the sensor. Each sensor code is also given a discrete time slot and time gating during post-processing can be used to improve the sensor SNR. An illustration of a SAW device with OFC is given in Figure 3.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-188-ofc-schematic.png|thumb|500px|center|Figure 3: Illustration of a SAW OFC sensor tag. A signal input to the antenna is converted to an acoustic wave by the SAW transducer (left). The signal propagates to the OFC chips (right) and is reflected back to the transducer where it is re-radiated for reception on the USRP. The received signal is noise-like and is processed by a match-filter correlator to extract sensor parameters.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==USRP FPGA Modifications and Software==&lt;br /&gt;
Modifications were made to the USRP FPGA to incorporate custom functionality in both the transmit and receive chains. On the transmit side, an interrogation signal generator was implemented. It generates a linear FM chirp with a bandwidth of 35MHz and time length of 1µs. The receiver was modified to synchronize to the transmit signal (start listening for sensor response after the interrogation signal has finished transmitting) and incorporate a listen window. The receiver listens for 9.15µs and stores those samples into a RAM buffer. The samples are then read back from the RAM buffer at a slow rate such that the full 56MHz bandwidth of the system can be utilized without saturating the sample bus (USB3.0). Real time post processing is not required for this application. A block diagram outlining the FPGA modifications is shown in Figure 4. A plot comparing the predicted and generated chirp spectrums is also given in Figure 5.&lt;br /&gt;
&lt;br /&gt;
The USRP was integrated with a custom matched-filter correlation software package in Python using the GNU Radio Python API [2]. A set of matched filters is generated for each sensor in the system, where each matched filter corresponds to a specific temperature of the sensor (the user specifies the minimum and maximum temperatures as well as the temperature resolution). The matched filters are scaled using a frequency scaling factor (FSF), based on calibrated sensor parameters. The received sensor signal is correlated with each matched filter. The matched filter which yields the maximum correlation peak corresponds to the temperature of the current sensor being processed. Interrogation of a single sensor and extraction of the sensor temperature can be done in approximately 10-15ms with this setup. A block diagram of the implemented software is shown in Figure 6.&lt;br /&gt;
&lt;br /&gt;
==USRP System==&lt;br /&gt;
The full SAW sensor interrogation system included extra components to improve the transceiver performance. An amplifier was added to the transmit chain to increase the output power of the transmitter to &amp;gt;+20dBm. This allows the SAW sensors to be interrogated at a farther range. With this output power, current sensors can be detected at a range of 5 meters (16 feet) or more with a high gain antenna. In addition to the amplifier, an RF switch was incorporated which switches between the TRX and RX2 ports on the USRP. This allows a single antenna to be used for transmission and reception (instead of one antenna for each port). This also has the added benefit of eliminating the direct response between the two antennas from the interrogation pulse which can saturate the receiver and distort the received signal response. The switch is controlled by the USRP GPIO pins connected to the FPGA. Finally, a custom enclosure was designed to house the SAW sensor interrogation system. Photographs of the system are shown in Figure 7 and Figure 8.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+System Components&lt;br /&gt;
|-&lt;br /&gt;
|'''USRP:'''&lt;br /&gt;
|B200mini&lt;br /&gt;
|-&lt;br /&gt;
|'''Amplifier (TX):'''&lt;br /&gt;
|Mini-Circuits ZX60-H122+&lt;br /&gt;
|-&lt;br /&gt;
|'''RF Switch:'''&lt;br /&gt;
|Mini-Circuits ZFSWA2-63DR+&lt;br /&gt;
|-&lt;br /&gt;
|'''Enclosure:'''&lt;br /&gt;
|Custom Design - Manufactured by Protocase, Inc.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Wireless Temperature Measurements with the USRP==&lt;br /&gt;
The SAW sensor was interrogated by the USRP and the received signal was post-processed to extract the sensor temperature. A matched filter correlator, previously developed at UCF in MATLAB, has been ported to Python to be compatible with the USRP and Linux. A reference thermocouple (wired) is attached to the SAW sensor (wireless) to ensure that the extracted temperature is accurate. Receiving one data sweep, post processing with 10,000 matched filters, and extracting temperature takes approximately 0.1 seconds. Averaging multiple data sweeps is possible (coherent integration) with 1000 averages taking approximately 1.0 second. The sensor was cooled (cold nitrogen gas) and heated (electric heat gun) randomly before being allowed to return to room temperature. The extracted temperature for the SAW sensor with reference thermocouple are given in Figure 9.&lt;br /&gt;
&lt;br /&gt;
The system is also capable of interrogating multiple sensors, simultaneously. A set of four (4) SAW sensors were designed which are compatible with the USRP system. Each sensor has a unique OFC set and static time delay to the first reflector (ranging from 2.5 to 5 micro-seconds). Each sensor response is 570ns long and each is comprised of 4 OFC chips. The sensors are interrogated simultaneously by the interrogation pulse from the USRP. Each sensor response is then processed separately to extract the sensor temperature. Two (2) sensors were heated/cooled randomly while the other two (2) sensors were left to remain at room temperature. The extracted temperatures for all four (4) temperature sensors is plotted in Figure 10.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
The USRP B200mini was successfully utilized to implement an efficient interrogation system for passive, wireless SAW strain sensors. A pulsed interrogator design was able to be implemented due to the open-source FPGA design, allowing the custom functionality required by this application to be implemented. The USRP can be quickly reconfigured as the sensor designs evolve to improve performance or for new sensor designs such as strain or gas measurements. Currently, the system is capable of extracting the SAW sensor temperature accurately from a range of up to 5 meters. Work is continuing to improve the system performance as well as implementing different interrogator embodiments.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
# Malocha, D.C.; Puccio, D.; Gallagher, D., &amp;quot;Orthogonal frequency coding for SAW device applications,&amp;quot; Ultrasonics Symposium, 2004 IEEE , vol.2, no., pp.1082,1085 Vol.2, 23-27 Aug. 2004&lt;br /&gt;
# Malocha, D.C.; Gallagher, M., &amp;quot;Coherent correlator multi-sensor receiver,&amp;quot; Frequency Control Symposium (FCS), 2012 IEEE International , vol., no., pp.1,5, 21-24 May 2012&lt;br /&gt;
# Humphries, J.R.; Gallagher, M.W.; Gallagher, D.R.; Weeks, A.R.; Malocha, D.C., &amp;quot;Interrogation of orthogonal frequency coded SAW sensors using the USRP,&amp;quot; in Frequency Control Symposium &amp;amp; the European Frequency and Time Forum (FCS), 2015 Joint Conference of the IEEE International , vol., no., pp.530-535, 12-16 April 2015&lt;br /&gt;
# Gallagher, M.W.; Smith, W.C.; Malocha, D.C., &amp;quot;An integrated SAW sensor with direct write antenna,&amp;quot; in European Frequency and Time Forum &amp;amp; International Frequency Control Symposium (EFTF/IFC), 2013 Joint , vol., no., pp.450-453, 21-25 July 2013&lt;br /&gt;
&lt;br /&gt;
==Contact Information==&lt;br /&gt;
* Dr. Donald C. Malocha&lt;br /&gt;
* [mailto:Donald.Malocha@ucf.edu Donald.Malocha@ucf.edu]&lt;br /&gt;
* University of Central Florida&lt;br /&gt;
* [http://caat.engr.ucf.edu/ CAAT Website]&lt;br /&gt;
&lt;br /&gt;
[[Category:Application Notes]]&lt;/div&gt;</summary>
		<author><name>JamesHumphries</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=File:an-188-ofc-schematic.png&amp;diff=2042</id>
		<title>File:an-188-ofc-schematic.png</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=File:an-188-ofc-schematic.png&amp;diff=2042"/>
				<updated>2016-05-10T01:46:57Z</updated>
		
		<summary type="html">&lt;p&gt;JamesHumphries: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>JamesHumphries</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=File:an-188-saw-sensor-quarter-ruler.png&amp;diff=2041</id>
		<title>File:an-188-saw-sensor-quarter-ruler.png</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=File:an-188-saw-sensor-quarter-ruler.png&amp;diff=2041"/>
				<updated>2016-05-10T01:44:09Z</updated>
		
		<summary type="html">&lt;p&gt;JamesHumphries: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>JamesHumphries</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=Interrogating_Passive_Wireless_SAW_Sensors_with_the_USRP&amp;diff=2040</id>
		<title>Interrogating Passive Wireless SAW Sensors with the USRP</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=Interrogating_Passive_Wireless_SAW_Sensors_with_the_USRP&amp;diff=2040"/>
				<updated>2016-05-10T01:43:03Z</updated>
		
		<summary type="html">&lt;p&gt;JamesHumphries: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Application Note Number==&lt;br /&gt;
'''AN-188 '''&lt;br /&gt;
&lt;br /&gt;
==Revision History==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Date&lt;br /&gt;
!Author&lt;br /&gt;
!Details&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| 2016-05-01   &lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| Trip Humphries&lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| Initial creation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Interrogating Passive, Wireless SAW Sensors with the USRP B200mini=&lt;br /&gt;
&lt;br /&gt;
'''Authors:''' James 'Trip' Humphries, Mark Gallagher, Daniel Gallagher, Arthur Weeks, Donald Malocha&lt;br /&gt;
&lt;br /&gt;
'''Ettus Research Products Used:''' USRP B200mini&lt;br /&gt;
&lt;br /&gt;
'''Research Institution:''' University of Central Florida&lt;br /&gt;
&lt;br /&gt;
'''Laboratory:''' Consortium for Applied Acoustoelectronic Technology (CAAT)&lt;br /&gt;
&lt;br /&gt;
'''Application Area:''' Wireless Sensors&lt;br /&gt;
&lt;br /&gt;
==Challenge==&lt;br /&gt;
Develop a wide-band transceiver to interrogate passive, wireless surface acoustic wave (SAW) sensors at 915MHz using a commercially available software radio platform.&lt;br /&gt;
&lt;br /&gt;
==Solution==&lt;br /&gt;
The Ettus USRP B200mini was utilized to interrogate wireless SAW sensors by modifying the FPGA design to implement a synchronous, pulsed mode interrogator and utilize the entire 56MHz bandwidth of the B200mini.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Typical interrogator design for wireless SAW sensor systems require many discrete components and lengthy build times, making it difficult to rapidly adapt to sensor designs in a research environment. We have employed the USRP B200mini as a SAW sensor interrogation system. Interrogation of wideband orthogonal frequency coded (OFC) SAW sensors imposes strict requirements on the timing and synchronization of the transceiver. The USRP FPGA has been modified to operate in a synchronous, pulsed mode of operation, allowing rapid data acquisition and the full 56MHz bandwidth of the AD9364 to be utilized. Data from the USRP is passed to a custom matched filter correlator routine to extract sensor parameters. The system is capable of interrogating multiple sensors, simultaneously. Demonstration of the system is accomplished by wirelessly interrogating SAW sensors at 915MHz and extracting temperature. A photograph of the system is shown in Figure 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[File:an-188-saw-sensor-sys.png|thumb|500px|center|Figure 1: Photograph of passive, wireless SAW sensor system using the USRP B200mini. On the left is the host computer to handle the USRP interface and perform post-processing to extract the sensor parameters. In the center is the are two wireless SAW sensors. On the right is the interrogator system and USRP in a custom enclosure.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Consortium for Applied Acoustoelectronic Technology (CAAT) - University of Central Florida==&lt;br /&gt;
The Consortium for Applied Acoustoelectronic Technology (CAAT) is a part of the University of Central Florida (UCF), in Orlando, FL. UCF is a comprehensive university with an enrollment of over 60,000 students. The UCF College of Engineering and Computer Science (CECS) supports multidisciplinary engineering research; offering advanced degrees at the MS and PhD levels.&lt;br /&gt;
The focus and expertise of CAAT is surface acoustic wave (SAW) devices and applications. Currently, CAAT is developing passive, wireless sensors based on SAW technology. The sensors are identified using an encoding technique known as orthogonal frequency coding (OFC). The sensors do not require an energy source (battery or other) and can be read from many meters away. Temperature, strain, and hydrogen sensors (among others) have been demonstrated wirelessly with this technology.&lt;br /&gt;
&lt;br /&gt;
==Passive, Wireless SAW Sensors==&lt;br /&gt;
SAW devices have many inherent properties that make them useful as sensors. Not only are they rugged to environmental extremes such as high temperature and radiation, but they can be operated wirelessly and passively (requires no power source or energy harvesting onboard the sensor). An interrogation signal is transmitted by the radio, illuminating all the SAW sensor tags simultaneously. Each SAW sensor reflects the received interrogation signal and is very similar to a RADAR system. The use of the SAW device allows the reflection to be engineered to encode the device ID (code) and measurand via changes in frequency, phase, or magnitude. The resulting changes can be measured and correlated to some measurement such as temperature, strain, or gas concentration. A SAW temperature sensor with integrated antenna is shown in Figure 2.&lt;br /&gt;
&lt;br /&gt;
Orthogonal frequency coding (OFC) can be implemented on a SAW platform by placing an array of reflector gratings in the path of the surface wave [1]. Each grating is assigned a center frequency which is orthogonal to all other gratings in the reflector array. OFC chips that are not synchronous to an incoming signal will appear nearly transparent to that frequency. The chips are shuffled in time to create a unique code, which identifies the sensor. Each sensor code is also given a discrete time slot and time gating during post-processing can be used to improve the sensor SNR. An illustration of a SAW device with OFC is given in Figure 3.&lt;br /&gt;
&lt;br /&gt;
==USRP FPGA Modifications and Software==&lt;br /&gt;
Modifications were made to the USRP FPGA to incorporate custom functionality in both the transmit and receive chains. On the transmit side, an interrogation signal generator was implemented. It generates a linear FM chirp with a bandwidth of 35MHz and time length of 1µs. The receiver was modified to synchronize to the transmit signal (start listening for sensor response after the interrogation signal has finished transmitting) and incorporate a listen window. The receiver listens for 9.15µs and stores those samples into a RAM buffer. The samples are then read back from the RAM buffer at a slow rate such that the full 56MHz bandwidth of the system can be utilized without saturating the sample bus (USB3.0). Real time post processing is not required for this application. A block diagram outlining the FPGA modifications is shown in Figure 4. A plot comparing the predicted and generated chirp spectrums is also given in Figure 5.&lt;br /&gt;
&lt;br /&gt;
The USRP was integrated with a custom matched-filter correlation software package in Python using the GNU Radio Python API [2]. A set of matched filters is generated for each sensor in the system, where each matched filter corresponds to a specific temperature of the sensor (the user specifies the minimum and maximum temperatures as well as the temperature resolution). The matched filters are scaled using a frequency scaling factor (FSF), based on calibrated sensor parameters. The received sensor signal is correlated with each matched filter. The matched filter which yields the maximum correlation peak corresponds to the temperature of the current sensor being processed. Interrogation of a single sensor and extraction of the sensor temperature can be done in approximately 10-15ms with this setup. A block diagram of the implemented software is shown in Figure 6.&lt;br /&gt;
&lt;br /&gt;
==USRP System==&lt;br /&gt;
The full SAW sensor interrogation system included extra components to improve the transceiver performance. An amplifier was added to the transmit chain to increase the output power of the transmitter to &amp;gt;+20dBm. This allows the SAW sensors to be interrogated at a farther range. With this output power, current sensors can be detected at a range of 5 meters (16 feet) or more with a high gain antenna. In addition to the amplifier, an RF switch was incorporated which switches between the TRX and RX2 ports on the USRP. This allows a single antenna to be used for transmission and reception (instead of one antenna for each port). This also has the added benefit of eliminating the direct response between the two antennas from the interrogation pulse which can saturate the receiver and distort the received signal response. The switch is controlled by the USRP GPIO pins connected to the FPGA. Finally, a custom enclosure was designed to house the SAW sensor interrogation system. Photographs of the system are shown in Figure 7 and Figure 8.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+System Components&lt;br /&gt;
|-&lt;br /&gt;
|'''USRP:'''&lt;br /&gt;
|B200mini&lt;br /&gt;
|-&lt;br /&gt;
|'''Amplifier (TX):'''&lt;br /&gt;
|Mini-Circuits ZX60-H122+&lt;br /&gt;
|-&lt;br /&gt;
|'''RF Switch:'''&lt;br /&gt;
|Mini-Circuits ZFSWA2-63DR+&lt;br /&gt;
|-&lt;br /&gt;
|'''Enclosure:'''&lt;br /&gt;
|Custom Design - Manufactured by Protocase, Inc.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Wireless Temperature Measurements with the USRP==&lt;br /&gt;
The SAW sensor was interrogated by the USRP and the received signal was post-processed to extract the sensor temperature. A matched filter correlator, previously developed at UCF in MATLAB, has been ported to Python to be compatible with the USRP and Linux. A reference thermocouple (wired) is attached to the SAW sensor (wireless) to ensure that the extracted temperature is accurate. Receiving one data sweep, post processing with 10,000 matched filters, and extracting temperature takes approximately 0.1 seconds. Averaging multiple data sweeps is possible (coherent integration) with 1000 averages taking approximately 1.0 second. The sensor was cooled (cold nitrogen gas) and heated (electric heat gun) randomly before being allowed to return to room temperature. The extracted temperature for the SAW sensor with reference thermocouple are given in Figure 9.&lt;br /&gt;
&lt;br /&gt;
The system is also capable of interrogating multiple sensors, simultaneously. A set of four (4) SAW sensors were designed which are compatible with the USRP system. Each sensor has a unique OFC set and static time delay to the first reflector (ranging from 2.5 to 5 micro-seconds). Each sensor response is 570ns long and each is comprised of 4 OFC chips. The sensors are interrogated simultaneously by the interrogation pulse from the USRP. Each sensor response is then processed separately to extract the sensor temperature. Two (2) sensors were heated/cooled randomly while the other two (2) sensors were left to remain at room temperature. The extracted temperatures for all four (4) temperature sensors is plotted in Figure 10.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
The USRP B200mini was successfully utilized to implement an efficient interrogation system for passive, wireless SAW strain sensors. A pulsed interrogator design was able to be implemented due to the open-source FPGA design, allowing the custom functionality required by this application to be implemented. The USRP can be quickly reconfigured as the sensor designs evolve to improve performance or for new sensor designs such as strain or gas measurements. Currently, the system is capable of extracting the SAW sensor temperature accurately from a range of up to 5 meters. Work is continuing to improve the system performance as well as implementing different interrogator embodiments.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
# Malocha, D.C.; Puccio, D.; Gallagher, D., &amp;quot;Orthogonal frequency coding for SAW device applications,&amp;quot; Ultrasonics Symposium, 2004 IEEE , vol.2, no., pp.1082,1085 Vol.2, 23-27 Aug. 2004&lt;br /&gt;
# Malocha, D.C.; Gallagher, M., &amp;quot;Coherent correlator multi-sensor receiver,&amp;quot; Frequency Control Symposium (FCS), 2012 IEEE International , vol., no., pp.1,5, 21-24 May 2012&lt;br /&gt;
# Humphries, J.R.; Gallagher, M.W.; Gallagher, D.R.; Weeks, A.R.; Malocha, D.C., &amp;quot;Interrogation of orthogonal frequency coded SAW sensors using the USRP,&amp;quot; in Frequency Control Symposium &amp;amp; the European Frequency and Time Forum (FCS), 2015 Joint Conference of the IEEE International , vol., no., pp.530-535, 12-16 April 2015&lt;br /&gt;
# Gallagher, M.W.; Smith, W.C.; Malocha, D.C., &amp;quot;An integrated SAW sensor with direct write antenna,&amp;quot; in European Frequency and Time Forum &amp;amp; International Frequency Control Symposium (EFTF/IFC), 2013 Joint , vol., no., pp.450-453, 21-25 July 2013&lt;br /&gt;
&lt;br /&gt;
==Contact Information==&lt;br /&gt;
* Dr. Donald C. Malocha&lt;br /&gt;
* [mailto:Donald.Malocha@ucf.edu Donald.Malocha@ucf.edu]&lt;br /&gt;
* University of Central Florida&lt;br /&gt;
* [http://caat.engr.ucf.edu/ CAAT Website]&lt;br /&gt;
&lt;br /&gt;
[[Category:Application Notes]]&lt;/div&gt;</summary>
		<author><name>JamesHumphries</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=File:an-188-saw-sensor-sys.png&amp;diff=2039</id>
		<title>File:an-188-saw-sensor-sys.png</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=File:an-188-saw-sensor-sys.png&amp;diff=2039"/>
				<updated>2016-05-10T01:28:14Z</updated>
		
		<summary type="html">&lt;p&gt;JamesHumphries: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>JamesHumphries</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=Interrogating_Passive_Wireless_SAW_Sensors_with_the_USRP&amp;diff=2035</id>
		<title>Interrogating Passive Wireless SAW Sensors with the USRP</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=Interrogating_Passive_Wireless_SAW_Sensors_with_the_USRP&amp;diff=2035"/>
				<updated>2016-05-09T23:30:51Z</updated>
		
		<summary type="html">&lt;p&gt;JamesHumphries: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Application Note Number==&lt;br /&gt;
'''AN-188 '''&lt;br /&gt;
&lt;br /&gt;
==Revision History==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Date&lt;br /&gt;
!Author&lt;br /&gt;
!Details&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| 2016-05-01   &lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| Trip Humphries&lt;br /&gt;
|style=&amp;quot;text-algin:center;&amp;quot;| Initial creation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Interrogating Passive, Wireless SAW Sensors with the USRP B200mini=&lt;br /&gt;
&lt;br /&gt;
'''Authors:''' James 'Trip' Humphries, Mark Gallagher, Daniel Gallagher, Arthur Weeks, Donald Malocha&lt;br /&gt;
&lt;br /&gt;
'''Ettus Research Products Used:''' USRP B200mini&lt;br /&gt;
&lt;br /&gt;
'''Research Institution:''' University of Central Florida&lt;br /&gt;
&lt;br /&gt;
'''Laboratory:''' Consortium for Applied Acoustoelectronic Technology (CAAT)&lt;br /&gt;
&lt;br /&gt;
'''Application Area:''' Wireless Sensors&lt;br /&gt;
&lt;br /&gt;
==Challenge==&lt;br /&gt;
Develop a wide-band transceiver to interrogate passive, wireless surface acoustic wave (SAW) sensors at 915MHz using a commercially available software radio platform.&lt;br /&gt;
&lt;br /&gt;
==Solution==&lt;br /&gt;
The Ettus USRP B200mini was utilized to interrogate wireless SAW sensors by modifying the FPGA design to implement a synchronous, pulsed mode interrogator and utilize the entire 56MHz bandwidth of the B200mini.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Typical interrogator design for wireless SAW sensor systems require many discrete components and lengthy build times, making it difficult to rapidly adapt to sensor designs in a research environment. We have employed the USRP B200mini as a SAW sensor interrogation system. Interrogation of wideband orthogonal frequency coded (OFC) SAW sensors imposes strict requirements on the timing and synchronization of the transceiver. The USRP FPGA has been modified to operate in a synchronous, pulsed mode of operation, allowing rapid data acquisition and the full 56MHz bandwidth of the AD9364 to be utilized. Data from the USRP is passed to a custom matched filter correlator routine to extract sensor parameters. The system is capable of interrogating multiple sensors, simultaneously. Demonstration of the system is accomplished by wirelessly interrogating SAW sensors at 915MHz and extracting temperature. A photograph of the system is shown in Figure 1.&lt;br /&gt;
&lt;br /&gt;
==Consortium for Applied Acoustoelectronic Technology (CAAT) - University of Central Florida==&lt;br /&gt;
The Consortium for Applied Acoustoelectronic Technology (CAAT) is a part of the University of Central Florida (UCF), in Orlando, FL. UCF is a comprehensive university with an enrollment of over 60,000 students. The UCF College of Engineering and Computer Science (CECS) supports multidisciplinary engineering research; offering advanced degrees at the MS and PhD levels.&lt;br /&gt;
The focus and expertise of CAAT is surface acoustic wave (SAW) devices and applications. Currently, CAAT is developing passive, wireless sensors based on SAW technology. The sensors are identified using an encoding technique known as orthogonal frequency coding (OFC). The sensors do not require an energy source (battery or other) and can be read from many meters away. Temperature, strain, and hydrogen sensors (among others) have been demonstrated wirelessly with this technology.&lt;br /&gt;
&lt;br /&gt;
==Passive, Wireless SAW Sensors==&lt;br /&gt;
SAW devices have many inherent properties that make them useful as sensors. Not only are they rugged to environmental extremes such as high temperature and radiation, but they can be operated wirelessly and passively (requires no power source or energy harvesting onboard the sensor). An interrogation signal is transmitted by the radio, illuminating all the SAW sensor tags simultaneously. Each SAW sensor reflects the received interrogation signal and is very similar to a RADAR system. The use of the SAW device allows the reflection to be engineered to encode the device ID (code) and measurand via changes in frequency, phase, or magnitude. The resulting changes can be measured and correlated to some measurement such as temperature, strain, or gas concentration. A SAW temperature sensor with integrated antenna is shown in Figure 2.&lt;br /&gt;
&lt;br /&gt;
Orthogonal frequency coding (OFC) can be implemented on a SAW platform by placing an array of reflector gratings in the path of the surface wave [1]. Each grating is assigned a center frequency which is orthogonal to all other gratings in the reflector array. OFC chips that are not synchronous to an incoming signal will appear nearly transparent to that frequency. The chips are shuffled in time to create a unique code, which identifies the sensor. Each sensor code is also given a discrete time slot and time gating during post-processing can be used to improve the sensor SNR. An illustration of a SAW device with OFC is given in Figure 3.&lt;br /&gt;
&lt;br /&gt;
==USRP FPGA Modifications and Software==&lt;br /&gt;
Modifications were made to the USRP FPGA to incorporate custom functionality in both the transmit and receive chains. On the transmit side, an interrogation signal generator was implemented. It generates a linear FM chirp with a bandwidth of 35MHz and time length of 1µs. The receiver was modified to synchronize to the transmit signal (start listening for sensor response after the interrogation signal has finished transmitting) and incorporate a listen window. The receiver listens for 9.15µs and stores those samples into a RAM buffer. The samples are then read back from the RAM buffer at a slow rate such that the full 56MHz bandwidth of the system can be utilized without saturating the sample bus (USB3.0). Real time post processing is not required for this application. A block diagram outlining the FPGA modifications is shown in Figure 4. A plot comparing the predicted and generated chirp spectrums is also given in Figure 5.&lt;br /&gt;
&lt;br /&gt;
The USRP was integrated with a custom matched-filter correlation software package in Python using the GNU Radio Python API [2]. A set of matched filters is generated for each sensor in the system, where each matched filter corresponds to a specific temperature of the sensor (the user specifies the minimum and maximum temperatures as well as the temperature resolution). The matched filters are scaled using a frequency scaling factor (FSF), based on calibrated sensor parameters. The received sensor signal is correlated with each matched filter. The matched filter which yields the maximum correlation peak corresponds to the temperature of the current sensor being processed. Interrogation of a single sensor and extraction of the sensor temperature can be done in approximately 10-15ms with this setup. A block diagram of the implemented software is shown in Figure 6.&lt;br /&gt;
&lt;br /&gt;
==USRP System==&lt;br /&gt;
The full SAW sensor interrogation system included extra components to improve the transceiver performance. An amplifier was added to the transmit chain to increase the output power of the transmitter to &amp;gt;+20dBm. This allows the SAW sensors to be interrogated at a farther range. With this output power, current sensors can be detected at a range of 5 meters (16 feet) or more with a high gain antenna. In addition to the amplifier, an RF switch was incorporated which switches between the TRX and RX2 ports on the USRP. This allows a single antenna to be used for transmission and reception (instead of one antenna for each port). This also has the added benefit of eliminating the direct response between the two antennas from the interrogation pulse which can saturate the receiver and distort the received signal response. The switch is controlled by the USRP GPIO pins connected to the FPGA. Finally, a custom enclosure was designed to house the SAW sensor interrogation system. Photographs of the system are shown in Figure 7 and Figure 8.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+System Components&lt;br /&gt;
|-&lt;br /&gt;
|'''USRP:'''&lt;br /&gt;
|B200mini&lt;br /&gt;
|-&lt;br /&gt;
|'''Amplifier (TX):'''&lt;br /&gt;
|Mini-Circuits ZX60-H122+&lt;br /&gt;
|-&lt;br /&gt;
|'''RF Switch:'''&lt;br /&gt;
|Mini-Circuits ZFSWA2-63DR+&lt;br /&gt;
|-&lt;br /&gt;
|'''Enclosure:'''&lt;br /&gt;
|Custom Design - Manufactured by Protocase, Inc.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Wireless Temperature Measurements with the USRP==&lt;br /&gt;
The SAW sensor was interrogated by the USRP and the received signal was post-processed to extract the sensor temperature. A matched filter correlator, previously developed at UCF in MATLAB, has been ported to Python to be compatible with the USRP and Linux. A reference thermocouple (wired) is attached to the SAW sensor (wireless) to ensure that the extracted temperature is accurate. Receiving one data sweep, post processing with 10,000 matched filters, and extracting temperature takes approximately 0.1 seconds. Averaging multiple data sweeps is possible (coherent integration) with 1000 averages taking approximately 1.0 second. The sensor was cooled (cold nitrogen gas) and heated (electric heat gun) randomly before being allowed to return to room temperature. The extracted temperature for the SAW sensor with reference thermocouple are given in Figure 9.&lt;br /&gt;
&lt;br /&gt;
The system is also capable of interrogating multiple sensors, simultaneously. A set of four (4) SAW sensors were designed which are compatible with the USRP system. Each sensor has a unique OFC set and static time delay to the first reflector (ranging from 2.5 to 5 micro-seconds). Each sensor response is 570ns long and each is comprised of 4 OFC chips. The sensors are interrogated simultaneously by the interrogation pulse from the USRP. Each sensor response is then processed separately to extract the sensor temperature. Two (2) sensors were heated/cooled randomly while the other two (2) sensors were left to remain at room temperature. The extracted temperatures for all four (4) temperature sensors is plotted in Figure 10.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
The USRP B200mini was successfully utilized to implement an efficient interrogation system for passive, wireless SAW strain sensors. A pulsed interrogator design was able to be implemented due to the open-source FPGA design, allowing the custom functionality required by this application to be implemented. The USRP can be quickly reconfigured as the sensor designs evolve to improve performance or for new sensor designs such as strain or gas measurements. Currently, the system is capable of extracting the SAW sensor temperature accurately from a range of up to 5 meters. Work is continuing to improve the system performance as well as implementing different interrogator embodiments.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
# Malocha, D.C.; Puccio, D.; Gallagher, D., &amp;quot;Orthogonal frequency coding for SAW device applications,&amp;quot; Ultrasonics Symposium, 2004 IEEE , vol.2, no., pp.1082,1085 Vol.2, 23-27 Aug. 2004&lt;br /&gt;
# Malocha, D.C.; Gallagher, M., &amp;quot;Coherent correlator multi-sensor receiver,&amp;quot; Frequency Control Symposium (FCS), 2012 IEEE International , vol., no., pp.1,5, 21-24 May 2012&lt;br /&gt;
# Humphries, J.R.; Gallagher, M.W.; Gallagher, D.R.; Weeks, A.R.; Malocha, D.C., &amp;quot;Interrogation of orthogonal frequency coded SAW sensors using the USRP,&amp;quot; in Frequency Control Symposium &amp;amp; the European Frequency and Time Forum (FCS), 2015 Joint Conference of the IEEE International , vol., no., pp.530-535, 12-16 April 2015&lt;br /&gt;
# Gallagher, M.W.; Smith, W.C.; Malocha, D.C., &amp;quot;An integrated SAW sensor with direct write antenna,&amp;quot; in European Frequency and Time Forum &amp;amp; International Frequency Control Symposium (EFTF/IFC), 2013 Joint , vol., no., pp.450-453, 21-25 July 2013&lt;br /&gt;
&lt;br /&gt;
==Contact Information==&lt;br /&gt;
* Dr. Donald C. Malocha&lt;br /&gt;
* [mailto:Donald.Malocha@ucf.edu Donald.Malocha@ucf.edu]&lt;br /&gt;
* University of Central Florida&lt;br /&gt;
* [http://caat.engr.ucf.edu/ CAAT Website]&lt;br /&gt;
&lt;br /&gt;
[[Category:Application Notes]]&lt;/div&gt;</summary>
		<author><name>JamesHumphries</name></author>	</entry>

	</feed>