diff options
-rw-r--r-- | README.md | 9 | ||||
-rw-r--r-- | host/README.md | 9 | ||||
-rw-r--r-- | host/docs/coding.dox | 12 | ||||
-rw-r--r-- | host/docs/octoclock_firmware_burner.1 | 2 | ||||
-rw-r--r-- | host/docs/uhd_cal_rx_iq_balance.1 | 2 | ||||
-rw-r--r-- | host/docs/uhd_cal_tx_dc_offset.1 | 2 | ||||
-rw-r--r-- | host/docs/uhd_cal_tx_iq_balance.1 | 2 | ||||
-rw-r--r-- | host/docs/uhd_find_devices.1 | 2 | ||||
-rw-r--r-- | host/docs/uhd_images_downloader.1 | 2 | ||||
-rw-r--r-- | host/docs/uhd_usrp_probe.1 | 2 | ||||
-rw-r--r-- | host/docs/usrp2_card_burner.1 | 2 | ||||
-rw-r--r-- | host/docs/usrp_n2xx_simple_net_burner.1 | 2 | ||||
-rw-r--r-- | host/docs/usrp_x3xx_fpga_burner.1 | 2 | ||||
-rw-r--r-- | host/lib/usrp/b200/b200_impl.cpp | 5 | ||||
-rw-r--r-- | host/lib/usrp/usrp2/usrp2_impl.cpp | 9 | ||||
-rw-r--r-- | host/lib/usrp/x300/x300_impl.cpp | 28 | ||||
-rw-r--r-- | host/lib/usrp/x300/x300_impl.hpp | 4 | ||||
-rw-r--r-- | host/utils/b2xx_fx3_utils.cpp | 4 | ||||
-rw-r--r-- | host/utils/octoclock_firmware_burner.cpp | 2 | ||||
-rw-r--r-- | host/utils/query_gpsdo_sensors.cpp | 9 | ||||
-rw-r--r-- | host/utils/usrp_burn_mb_eeprom.cpp | 5 | ||||
-rw-r--r-- | host/utils/usrp_n2xx_simple_net_burner.cpp | 2 | ||||
-rw-r--r-- | host/utils/usrp_x3xx_fpga_burner.cpp | 2 |
23 files changed, 76 insertions, 44 deletions
@@ -16,13 +16,12 @@ information, is the primary source of UHD documentation and "Getting Started"-type guides. For technical documentation related to USRP™ hardware or UHD system -design, check out the [UHD Manual](http://files.ettus.com/uhd_docs/manual/html/). +design, 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 @@ -44,7 +43,7 @@ UHD can be used to build stand-alone applications with USRP™ hardware, or with third-party applications. Some common toolkits / frameworks are: * [GNURadio](http://code.ettus.com/redmine/ettus/projects/uhd/wiki/GNU_Radio_UHD) -* [LabVIEW](http://www.ni.com/download/ni-usrp-1.2/3696/en/) +* [LabVIEW](http://www.ni.com/download/ni-usrp-1.3/4711/en/) * [Simulink](http://www.mathworks.com/discovery/sdr/usrp.html) * [OpenBTS](http://wush.net/trac/rangepublic/wiki/BuildInstallRun) * [Iris](http://www.softwareradiosystems.com/redmine/projects/iris/wiki) 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); } |