aboutsummaryrefslogtreecommitdiffstats
path: root/host
diff options
context:
space:
mode:
Diffstat (limited to 'host')
-rw-r--r--host/README.md9
-rw-r--r--host/docs/coding.dox12
-rw-r--r--host/docs/octoclock_firmware_burner.12
-rw-r--r--host/docs/uhd_cal_rx_iq_balance.12
-rw-r--r--host/docs/uhd_cal_tx_dc_offset.12
-rw-r--r--host/docs/uhd_cal_tx_iq_balance.12
-rw-r--r--host/docs/uhd_find_devices.12
-rw-r--r--host/docs/uhd_images_downloader.12
-rw-r--r--host/docs/uhd_usrp_probe.12
-rw-r--r--host/docs/usrp2_card_burner.12
-rw-r--r--host/docs/usrp_n2xx_simple_net_burner.12
-rw-r--r--host/docs/usrp_x3xx_fpga_burner.12
-rw-r--r--host/lib/usrp/b200/b200_impl.cpp5
-rw-r--r--host/lib/usrp/usrp2/usrp2_impl.cpp9
-rw-r--r--host/lib/usrp/x300/x300_impl.cpp28
-rw-r--r--host/lib/usrp/x300/x300_impl.hpp4
-rw-r--r--host/utils/b2xx_fx3_utils.cpp4
-rw-r--r--host/utils/octoclock_firmware_burner.cpp2
-rw-r--r--host/utils/query_gpsdo_sensors.cpp9
-rw-r--r--host/utils/usrp_burn_mb_eeprom.cpp5
-rw-r--r--host/utils/usrp_n2xx_simple_net_burner.cpp2
-rw-r--r--host/utils/usrp_x3xx_fpga_burner.cpp2
22 files changed, 72 insertions, 39 deletions
diff --git a/host/README.md b/host/README.md
index e80b10b49..f30fc8807 100644
--- a/host/README.md
+++ b/host/README.md
@@ -10,14 +10,13 @@ application-level programs. The UHD library runs entirely in user-space.
For documentation, please refer to the following resources:
-For technical documentation related UHD check out the
-[UHD Manual](http://files.ettus.com/uhd_docs/manual/html/).
+For technical documentation related to UHD check out the
+[UHD Manual](http://files.ettus.com/manual/).
If you are looking for API documentation, check out the following resources:
-* [Doxygen](http://files.ettus.com/uhd_docs/doxygen/html/index.html)
-* [Coding to the API](http://files.ettus.com/uhd_docs/manual/html/coding.html)
-* [Device Streaming](http://files.ettus.com/uhd_docs/manual/html/stream.html)
+* [Coding to the API](http://files.ettus.com/manual/page_coding.html)
+* [Device Streaming](http://files.ettus.com/manual/page_stream.html)
Additionally, be sure to check out the Ettus Research
[FAQ](http://www.ettus.com/kb/detail/frequently-asked-questions), and the
diff --git a/host/docs/coding.dox b/host/docs/coding.dox
index b50e55e24..32dbe944a 100644
--- a/host/docs/coding.dox
+++ b/host/docs/coding.dox
@@ -6,15 +6,22 @@
\subsection coding_api_hilevel High-Level: The Multi-USRP
-The Multi-USRP class provides a fat interface to a single USRP device
+The Multi-USRP class provides a high-level interface to a single USRP device
with one or more channels, or multiple USRP devicess in a homogeneous
setup. See the documentation for uhd::usrp::multi_usrp.
+\subsection coding_api_hilevelclock High-Level: The Multi-USRP-Clock
+
+The Multi-USRP-Clock class provides a high-level interface to a single clock
+device or set of clock devices, from which the time can be queried. See the
+documentation for uhd::usrp_clock::multi_usrp_clock.
+
\subsection coding_api_lowlevel Low-Level: The device API
A device is an abstraction for hardware that is connected to the host
system. For a USRP device, this means that the motherboard and
-everything on it would be considered to be a "device". The device API
+everything on it would be considered to be a "device". For a clock device, the
+device itself would be considered a "device" in software. The device API
provides ways to:
- Discover devices that are physically connected to the host system.
@@ -23,6 +30,7 @@ provides ways to:
- Register a device driver into the discovery and factory sub-system.
- Streaming samples with metadata into and out of the device.
- Set and get properties on the device object.
+- Access various sensors on the device.
See the documentation for uhd::device.
diff --git a/host/docs/octoclock_firmware_burner.1 b/host/docs/octoclock_firmware_burner.1
index 0494b3b37..44ff47a85 100644
--- a/host/docs/octoclock_firmware_burner.1
+++ b/host/docs/octoclock_firmware_burner.1
@@ -23,7 +23,7 @@ octoclock_firmware_burner --addr=192.168.10.3 --fw-path=~/custom_octoclock_image
.fi
.SH SEE ALSO
UHD documentation:
-.B http://files.ettus.com/uhd_docs/manual/html/index.html
+.B http://files.ettus.com/manual/
.LP
Other UHD programs:
.sp
diff --git a/host/docs/uhd_cal_rx_iq_balance.1 b/host/docs/uhd_cal_rx_iq_balance.1
index 8c2c87ece..df77afb2c 100644
--- a/host/docs/uhd_cal_rx_iq_balance.1
+++ b/host/docs/uhd_cal_rx_iq_balance.1
@@ -43,7 +43,7 @@ Samples per data capture
.PP
.SH SEE ALSO
UHD documentation:
-.B http://files.ettus.com/uhd_docs/manual/html/index.html
+.B http://files.ettus.com/manual/
.LP
GR-UHD documentation:
.B http://gnuradio.org/doc/doxygen/page_uhd.html
diff --git a/host/docs/uhd_cal_tx_dc_offset.1 b/host/docs/uhd_cal_tx_dc_offset.1
index f0479d7ec..50d3899e8 100644
--- a/host/docs/uhd_cal_tx_dc_offset.1
+++ b/host/docs/uhd_cal_tx_dc_offset.1
@@ -43,7 +43,7 @@ Samples per data capture
.PP
.SH SEE ALSO
UHD documentation:
-.B http://files.ettus.com/uhd_docs/manual/html/index.html
+.B http://files.ettus.com/manual/
.LP
GR-UHD documentation:
.B http://gnuradio.org/doc/doxygen/page_uhd.html
diff --git a/host/docs/uhd_cal_tx_iq_balance.1 b/host/docs/uhd_cal_tx_iq_balance.1
index bb8970f4c..859cf9a84 100644
--- a/host/docs/uhd_cal_tx_iq_balance.1
+++ b/host/docs/uhd_cal_tx_iq_balance.1
@@ -43,7 +43,7 @@ Samples per data capture
.PP
.SH SEE ALSO
UHD documentation:
-.B http://files.ettus.com/uhd_docs/manual/html/index.html
+.B http://files.ettus.com/manual/
.LP
GR-UHD documentation:
.B http://gnuradio.org/doc/doxygen/page_uhd.html
diff --git a/host/docs/uhd_find_devices.1 b/host/docs/uhd_find_devices.1
index 7f92966be..dfd5c0751 100644
--- a/host/docs/uhd_find_devices.1
+++ b/host/docs/uhd_find_devices.1
@@ -86,7 +86,7 @@ uhd_find_devices \-\-args="serial=12345678"
uhd_find_devices
.SH SEE ALSO
UHD documentation:
-.B http://files.ettus.com/uhd_docs/manual/html/index.html
+.B http://files.ettus.com/manual/
.LP
GR-UHD documentation:
.B http://gnuradio.org/doc/doxygen/page_uhd.html
diff --git a/host/docs/uhd_images_downloader.1 b/host/docs/uhd_images_downloader.1
index cbdc5c26e..19f109ec5 100644
--- a/host/docs/uhd_images_downloader.1
+++ b/host/docs/uhd_images_downloader.1
@@ -26,7 +26,7 @@ This program works best without any arguments.
Set download buffer size, [default=8192]
.SH SEE ALSO
UHD documentation:
-.B http://files.ettus.com/uhd_docs/manual/html/index.html
+.B http://files.ettus.com/manual/
.LP
GR-UHD documentation:
.B http://gnuradio.org/doc/doxygen/page_uhd.html
diff --git a/host/docs/uhd_usrp_probe.1 b/host/docs/uhd_usrp_probe.1
index 50ecab5c1..178027aea 100644
--- a/host/docs/uhd_usrp_probe.1
+++ b/host/docs/uhd_usrp_probe.1
@@ -93,7 +93,7 @@ uhd_usrp_probe \-\-args="serial=12345678"
uhd_usrp_probe
.SH SEE ALSO
UHD documentation:
-.B http://files.ettus.com/uhd_docs/manual/html/index.html
+.B http://files.ettus.com/manual/
.LP
GR-UHD documentation:
.B http://gnuradio.org/doc/doxygen/page_uhd.html
diff --git a/host/docs/usrp2_card_burner.1 b/host/docs/usrp2_card_burner.1
index b6e1954d8..b43484b99 100644
--- a/host/docs/usrp2_card_burner.1
+++ b/host/docs/usrp2_card_burner.1
@@ -27,7 +27,7 @@ usrp2_card_burner --dev=/dev/sdd1 --fw=usrp2_fw.bin --fpga=usrp2_fpga.bin
.fi
.SH SEE ALSO
UHD documentation:
-.B http://files.ettus.com/uhd_docs/manual/html/index.html
+.B http://files.ettus.com/manual/
.LP
GR-UHD documentation:
.B http://gnuradio.org/doc/doxygen/page_uhd.html
diff --git a/host/docs/usrp_n2xx_simple_net_burner.1 b/host/docs/usrp_n2xx_simple_net_burner.1
index d32b88fae..85538ee22 100644
--- a/host/docs/usrp_n2xx_simple_net_burner.1
+++ b/host/docs/usrp_n2xx_simple_net_burner.1
@@ -34,7 +34,7 @@ usrp_n2xx_simple_net_burner --addr=192.168.10.3
.fi
.SH SEE ALSO
UHD documentation:
-.B http://files.ettus.com/uhd_docs/manual/html/index.html
+.B http://files.ettus.com/manual/
.LP
GR-UHD documentation:
.B http://gnuradio.org/doc/doxygen/page_uhd.html
diff --git a/host/docs/usrp_x3xx_fpga_burner.1 b/host/docs/usrp_x3xx_fpga_burner.1
index 4ca6fd6dc..f07e52401 100644
--- a/host/docs/usrp_x3xx_fpga_burner.1
+++ b/host/docs/usrp_x3xx_fpga_burner.1
@@ -40,7 +40,7 @@ usrp_x3xx_fpga_burner --addr=192.168.10.2 --fpga=path="custom_image.bit"
.fi
.SH SEE ALSO
UHD documentation:
-.B http://files.ettus.com/uhd_docs/manual/html/index.html
+.B http://files.ettus.com/manual/
.LP
GR-UHD documentation:
.B http://gnuradio.org/doc/doxygen/page_uhd.html
diff --git a/host/lib/usrp/b200/b200_impl.cpp b/host/lib/usrp/b200/b200_impl.cpp
index 7c85176ef..393da2d04 100644
--- a/host/lib/usrp/b200/b200_impl.cpp
+++ b/host/lib/usrp/b200/b200_impl.cpp
@@ -475,6 +475,11 @@ b200_impl::b200_impl(const device_addr_t &device_addr)
UHD_MSG(status) << "Initializing time to the internal GPSDO" << std::endl;
const time_t tp = time_t(_gps->get_sensor("gps_time").to_int()+1);
_tree->access<time_spec_t>(mb_path / "time" / "pps").set(time_spec_t(tp));
+
+ //wait for next PPS edge (timeout after 1 second)
+ time_spec_t pps_time = _tree->access<time_spec_t>(mb_path / "time" / "pps").get();
+ for (size_t i = 0; i < 10 && _tree->access<time_spec_t>(mb_path / "time" / "pps").get() == pps_time; i++)
+ boost::this_thread::sleep(boost::posix_time::milliseconds(100));
} else {
//init to internal clock and time source
_tree->access<std::string>(mb_path / "clock_source/value").set("internal");
diff --git a/host/lib/usrp/usrp2/usrp2_impl.cpp b/host/lib/usrp/usrp2/usrp2_impl.cpp
index ae2a6f81d..2ad15aade 100644
--- a/host/lib/usrp/usrp2/usrp2_impl.cpp
+++ b/host/lib/usrp/usrp2/usrp2_impl.cpp
@@ -35,6 +35,7 @@
#include <boost/assign/list_of.hpp>
#include <boost/asio/ip/address_v4.hpp>
#include <boost/asio.hpp> //used for htonl and ntohl
+#include <boost/thread.hpp>
using namespace uhd;
using namespace uhd::usrp;
@@ -761,7 +762,13 @@ usrp2_impl::usrp2_impl(const device_addr_t &_device_addr){
_tree->access<std::string>(root / "time_source/value").set("gpsdo");
_tree->access<std::string>(root / "clock_source/value").set("gpsdo");
UHD_MSG(status) << "Initializing time to the internal GPSDO" << std::endl;
- _mbc[mb].time64->set_time_next_pps(time_spec_t(time_t(_mbc[mb].gps->get_sensor("gps_time").to_int()+1)));
+ const time_t tp = time_t(_mbc[mb].gps->get_sensor("gps_time").to_int()+1);
+ _tree->access<time_spec_t>(root / "time" / "pps").set(time_spec_t(tp));
+
+ //wait for next PPS edge (timeout after 1 second)
+ time_spec_t pps_time = _tree->access<time_spec_t>(root / "time" / "pps").get();
+ for (size_t i = 0; i < 10 && _tree->access<time_spec_t>(root / "time" / "pps").get() == pps_time; i++)
+ boost::this_thread::sleep(boost::posix_time::milliseconds(100));
}
}
diff --git a/host/lib/usrp/x300/x300_impl.cpp b/host/lib/usrp/x300/x300_impl.cpp
index bb59763ee..365828679 100644
--- a/host/lib/usrp/x300/x300_impl.cpp
+++ b/host/lib/usrp/x300/x300_impl.cpp
@@ -832,8 +832,10 @@ void x300_impl::setup_mb(const size_t mb_i, const uhd::device_addr_t &dev_addr)
UHD_MSG(status) << "Initializing time to the GPSDO time" << std::endl;
const time_t tp = time_t(mb.gps->get_sensor("gps_time").to_int()+1);
_tree->access<time_spec_t>(mb_path / "time" / "pps").set(time_spec_t(tp));
- //wait for time to be set (timeout after 1 second)
- for (int i = 0; i < 10 && tp != (_tree->access<time_spec_t>(mb_path / "time" / "pps").get()).get_full_secs(); i++)
+
+ //wait for next PPS edge (timeout after 1 second)
+ time_spec_t pps_time = _tree->access<time_spec_t>(mb_path / "time" / "pps").get();
+ for (size_t i = 0; i < 10 && _tree->access<time_spec_t>(mb_path / "time" / "pps").get() == pps_time; i++)
boost::this_thread::sleep(boost::posix_time::milliseconds(100));
} else {
_tree->access<std::string>(mb_path / "clock_source" / "value").set("internal");
@@ -1079,9 +1081,13 @@ void x300_impl::setup_radio(const size_t mb_i, const std::string &slot_name)
this->update_atr_leds(mb.radio_perifs[radio_index].leds, ""); //init anyway, even if never called
//bind frontend corrections to the dboard freq props
+ const fs_path db_tx_fe_path = db_path / "tx_frontends";
+ BOOST_FOREACH(const std::string &name, _tree->list(db_tx_fe_path)) {
+ _tree->access<double>(db_tx_fe_path / name / "freq" / "value")
+ .subscribe(boost::bind(&x300_impl::set_tx_fe_corrections, this, mb_path, slot_name, _1));
+ }
const fs_path db_rx_fe_path = db_path / "rx_frontends";
- BOOST_FOREACH(const std::string &name, _tree->list(db_rx_fe_path))
- {
+ BOOST_FOREACH(const std::string &name, _tree->list(db_rx_fe_path)) {
_tree->access<double>(db_rx_fe_path / name / "freq" / "value")
.subscribe(boost::bind(&x300_impl::set_rx_fe_corrections, this, mb_path, slot_name, _1));
}
@@ -1092,6 +1098,11 @@ void x300_impl::set_rx_fe_corrections(const uhd::fs_path &mb_path, const std::st
apply_rx_fe_corrections(this->get_tree()->subtree(mb_path), fe_name, lo_freq);
}
+void x300_impl::set_tx_fe_corrections(const uhd::fs_path &mb_path, const std::string &fe_name, const double lo_freq)
+{
+ apply_tx_fe_corrections(this->get_tree()->subtree(mb_path), fe_name, lo_freq);
+}
+
boost::uint32_t get_pcie_dma_channel(boost::uint8_t destination, boost::uint8_t prefix)
{
static const boost::uint32_t RADIO_GRP_SIZE = 3;
@@ -1108,8 +1119,7 @@ x300_impl::both_xports_t x300_impl::make_transport(
const boost::uint8_t& destination,
const boost::uint8_t& prefix,
const uhd::device_addr_t& args,
- boost::uint32_t& sid
-)
+ boost::uint32_t& sid)
{
mboard_members_t &mb = _mb[mb_index];
both_xports_t xports;
@@ -1206,10 +1216,10 @@ x300_impl::both_xports_t x300_impl::make_transport(
<< std::endl;
}
- size_t system_max_send_frame_size = (size_t) _max_frame_sizes.send_frame_size;
- size_t system_max_recv_frame_size = (size_t) _max_frame_sizes.recv_frame_size;
+ size_t system_max_send_frame_size = (size_t) _max_frame_sizes.send_frame_size;
+ size_t system_max_recv_frame_size = (size_t) _max_frame_sizes.recv_frame_size;
- // Make sure frame sizes do not exceed the max available value supported by UHD
+ // Make sure frame sizes do not exceed the max available value supported by UHD
default_buff_args.send_frame_size =
(prefix == X300_RADIO_DEST_PREFIX_TX)
? std::min(system_max_send_frame_size, X300_10GE_DATA_FRAME_MAX_SIZE)
diff --git a/host/lib/usrp/x300/x300_impl.hpp b/host/lib/usrp/x300/x300_impl.hpp
index 27f20fbd9..578e96383 100644
--- a/host/lib/usrp/x300/x300_impl.hpp
+++ b/host/lib/usrp/x300/x300_impl.hpp
@@ -211,7 +211,7 @@ private:
//perifs in each radio
radio_perifs_t radio_perifs[2]; //!< This is hardcoded s.t. radio_perifs[0] points to slot A and [1] to B
uhd::usrp::dboard_eeprom_t db_eeproms[8];
- //! Return the index of a radio component, given a slot name. This means DSPs, radio_perifs
+ //! Return the index of a radio component, given a slot name. This means DSPs, radio_perifs
size_t get_radio_index(const std::string &slot_name) {
UHD_ASSERT_THROW(slot_name == "A" or slot_name == "B");
return slot_name == "A" ? 0 : 1;
@@ -321,6 +321,8 @@ private:
uhd::dict<std::string, uhd::usrp::dboard_iface::sptr> _dboard_ifaces;
void set_rx_fe_corrections(const uhd::fs_path &mb_path, const std::string &fe_name, const double lo_freq);
+ void set_tx_fe_corrections(const uhd::fs_path &mb_path, const std::string &fe_name, const double lo_freq);
+
/*! Update the IQ MUX settings for the radio peripheral according to given subdev spec.
*
diff --git a/host/utils/b2xx_fx3_utils.cpp b/host/utils/b2xx_fx3_utils.cpp
index 0d0eaa743..0cab6618d 100644
--- a/host/utils/b2xx_fx3_utils.cpp
+++ b/host/utils/b2xx_fx3_utils.cpp
@@ -176,7 +176,7 @@ uhd::transport::usb_device_handle::sptr open_device(const boost::uint16_t vid, c
catch(const std::exception &e) {
std::cerr << "Failed to communicate with the device!" << std::endl;
#ifdef UHD_PLATFORM_WIN32
- std::cerr << "The necessary drivers are not installed. Read the UHD Transport Application Notes for details:\nhttp://files.ettus.com/uhd_docs/manual/html/transport.html" << std::endl;
+ std::cerr << "The necessary drivers are not installed. Read the UHD Transport Application Notes for details:\nhttp://files.ettus.com/manual/page_transport.html" << std::endl;
#endif /* UHD_PLATFORM_WIN32 */
handle.reset();
}
@@ -198,7 +198,7 @@ b200_iface::sptr make_b200_iface(const uhd::transport::usb_device_handle::sptr &
catch(const std::exception &e) {
std::cerr << "Failed to communicate with the device!" << std::endl;
#ifdef UHD_PLATFORM_WIN32
- std::cerr << "The necessary drivers are not installed. Read the UHD Transport Application Notes for details:\nhttp://files.ettus.com/uhd_docs/manual/html/transport.html" << std::endl;
+ std::cerr << "The necessary drivers are not installed. Read the UHD Transport Application Notes for details:\nhttp://files.ettus.com/manual/page_transport.html" << std::endl;
#endif /* UHD_PLATFORM_WIN32 */
b200.reset();
}
diff --git a/host/utils/octoclock_firmware_burner.cpp b/host/utils/octoclock_firmware_burner.cpp
index b8b8a3c1d..bc91f22f9 100644
--- a/host/utils/octoclock_firmware_burner.cpp
+++ b/host/utils/octoclock_firmware_burner.cpp
@@ -64,7 +64,7 @@ void sig_int_handler(int){
}
else{
std::cout << std::endl << "Aborting. Your OctoClock device will be bricked." << std::endl
- << "Refer to http://files.ettus.com/uhd_docs/doxymanual/html/octoclock.html" << std::endl
+ << "Refer to http://files.ettus.com/manual/page_octoclock.html#bootloader" << std::endl
<< "for details on restoring your device." << std::endl;
exit(EXIT_FAILURE);
}
diff --git a/host/utils/query_gpsdo_sensors.cpp b/host/utils/query_gpsdo_sensors.cpp
index 91088112c..9a1556650 100644
--- a/host/utils/query_gpsdo_sensors.cpp
+++ b/host/utils/query_gpsdo_sensors.cpp
@@ -1,5 +1,5 @@
//
-// Copyright 2012 Ettus Research LLC
+// Copyright 2012,2014 Ettus Research LLC
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
@@ -76,8 +76,9 @@ int UHD_SAFE_MAIN(int argc, char *argv[]){
if(std::find(sensor_names.begin(), sensor_names.end(), "gps_locked") == sensor_names.end()) {
std::cout << boost::format("\ngps_locked sensor not found. This could mean that you have not installed the GPSDO correctly.\n\n");
- std::cout << boost::format("Visit this page if the problem persists:\n");
- std::cout << boost::format("http://files.ettus.com/uhd_docs/manual/html/gpsdo.html\n\n");
+ std::cout << boost::format("Visit one of these pages if the problem persists:\n");
+ std::cout << boost::format(" * N2X0/E1X0: http://files.ettus.com/manual/page_gpsdo.html");
+ std::cout << boost::format(" * X3X0: http://files.ettus.com/manual/page_gpsdo_x3x0.html\n\n");
exit(EXIT_FAILURE);
}
@@ -94,7 +95,7 @@ int UHD_SAFE_MAIN(int argc, char *argv[]){
uhd::sensor_value_t gps_locked = usrp->get_mboard_sensor("ref_locked",0);
if(not gps_locked.to_bool()) {
std::cout << boost::format("USRP NOT Locked to GPSDO 10 MHz Reference.\n");
- std::cout << boost::format("Double check installation instructions: https://www.ettus.com/content/files/gpsdo-kit_2.pdf\n\n");
+ std::cout << boost::format("Double check installation instructions (N2X0/E1X0 only): https://www.ettus.com/content/files/gpsdo-kit_4.pdf\n\n");
} else
std::cout << boost::format("USRP Locked to GPSDO 10 MHz Reference.\n");
}else
diff --git a/host/utils/usrp_burn_mb_eeprom.cpp b/host/utils/usrp_burn_mb_eeprom.cpp
index de74d6807..92df9d7d4 100644
--- a/host/utils/usrp_burn_mb_eeprom.cpp
+++ b/host/utils/usrp_burn_mb_eeprom.cpp
@@ -93,13 +93,14 @@ int UHD_SAFE_MAIN(int argc, char *argv[]){
std::cout << boost::format(" EEPROM [\"%s\"] is \"%s\"") % keys_vec[i] % mb_eeprom[keys_vec[i]] << std::endl;
}
std::cout << std::endl;
+ mb_eeprom = uhd::usrp::mboard_eeprom_t();
for(size_t i = 0; i < vals_vec.size(); i++){
if(vals_vec[i] != ""){
- uhd::usrp::mboard_eeprom_t mb_eeprom; mb_eeprom[keys_vec[i]] = vals_vec[i];
+ mb_eeprom[keys_vec[i]] = vals_vec[i];
std::cout << boost::format("Setting EEPROM [\"%s\"] to \"%s\"...") % keys_vec[i] % vals_vec[i] << std::endl;
- tree->access<uhd::usrp::mboard_eeprom_t>("/mboards/0/eeprom").set(mb_eeprom);
}
}
+ tree->access<uhd::usrp::mboard_eeprom_t>("/mboards/0/eeprom").set(mb_eeprom);
std::cout << "Power-cycle the USRP device for the changes to take effect." << std::endl;
std::cout << std::endl;
diff --git a/host/utils/usrp_n2xx_simple_net_burner.cpp b/host/utils/usrp_n2xx_simple_net_burner.cpp
index 571c73ac8..fe437a2e5 100644
--- a/host/utils/usrp_n2xx_simple_net_burner.cpp
+++ b/host/utils/usrp_n2xx_simple_net_burner.cpp
@@ -139,7 +139,7 @@ void sig_int_handler(int){
}
else{
std::cout << std::endl << "Aborting. Your USRP-N Series unit will be bricked." << std::endl
- << "Refer to http://files.ettus.com/uhd_docs/manual/html/usrp2.html#device-recovery-and-bricking" << std::endl
+ << "Refer to http://files.ettus.com/manual/page_usrp2.html#usrp2_loadflash_brick" << std::endl
<< "for details on restoring your device." << std::endl;
exit(EXIT_FAILURE);
}
diff --git a/host/utils/usrp_x3xx_fpga_burner.cpp b/host/utils/usrp_x3xx_fpga_burner.cpp
index 0c8ea7465..b849cfb92 100644
--- a/host/utils/usrp_x3xx_fpga_burner.cpp
+++ b/host/utils/usrp_x3xx_fpga_burner.cpp
@@ -92,7 +92,7 @@ void sig_int_handler(int){
}
else{
std::cout << std::endl << "Aborting. Your USRP X-Series device will be bricked." << std::endl
- << "Refer to http://files.ettus.com/uhd_docs/manual/html/usrp_x3x0.html#use-jtag-to-load-fpga-images" << std::endl
+ << "http://files.ettus.com/manual/page_usrp_x3x0.html#x3x0_load_fpga_imgs_jtag" << std::endl
<< "for details on restoring your device." << std::endl;
exit(EXIT_FAILURE);
}