Thanks Ken.  As you suggested, I added -DCMAKE_EXE_LINKER_FLAGS="-latomic"
to the CMake call.

The good news is that the UHD build & installation process completed
successfully.

The bad news is that when I try to import the uhd module in Python3, I
get the following error:

pi@raspberrypi:~ $ python3
Python 3.7.3 (default, Jan 22 2021, 20:04:44)
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import uhd
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3/dist-packages/uhd/__init__.py", line 10, in
<module>
    from . import types
  File "/usr/local/lib/python3/dist-packages/uhd/types.py", line 10, in
<module>
    from . import libpyuhd as lib
ImportError: /usr/local/lib/libuhd.so.4.0.0: undefined symbol:
__atomic_fetch_add_8
>>>

Did you encounter this problem too?

I guess the next step is to hack the "CMakeLists.txt" files as per the link
you sent me.  Just to clarify one point first:  If I modify the
CMakeLists.txt files, do I still need to include
-DCMAKE_EXE_LINKER_FLAGS="-latomic" in the CMake call?

Thanks,
Brendan.



On Sat, Apr 3, 2021 at 10:29 PM Clark (US), Kenneth C <
kenneth.c.cla...@boeing.com> wrote:

>
> I had the same problem build UHD on RPi4
>
> Answer here:
> https://gitlab.kitware.com/cmake/cmake/-/issues/21174
>
> Add to CMake call:
> -DCMAKE_EXE_LINKER_FLAGS="-latomic"
>
> Regards,
>
> Ken
>
>
> -----Original Message-----
> From: usrp-users-requ...@lists.ettus.com [mailto:
> usrp-users-requ...@lists.ettus.com]
> Sent: Saturday, April 3, 2021 11:13
> To: usrp-users@lists.ettus.com
> Subject: [EXTERNAL] USRP-users Digest, Vol 128, Issue 7
>
> EXT email: be mindful of links/attachments.
>
>
>
> Send USRP-users mailing list submissions to
>         usrp-users@lists.ettus.com
>
> To subscribe or unsubscribe via email, send a message with subject or body
> 'help' to
>         usrp-users-requ...@lists.ettus.com
>
> You can reach the person managing the list at
>         usrp-users-ow...@lists.ettus.com
>
> When replying, please edit your Subject line so it is more specific than
> "Re: Contents of USRP-users digest..."
>
> Today's Topics:
>
>    1. Re: Problem with interfacing Raspberry Pi 4 to USRP B210 with Python
> API
>       (Brendan Horsfield)
>    2. Re: Intermittent problem with GPS synchronization for multiple E310
> units
>       (Ofer Saferman)
>
>
> ----------------------------------------------------------------------
>
> Message: 1
> Date: Sat, 3 Apr 2021 21:07:59 +1000
> From: Brendan Horsfield <brendan.horsfi...@vectalabs.com>
> Subject: [USRP-users] Re: Problem with interfacing Raspberry Pi 4 to
>         USRP B210 with Python API
> To: Marcus D Leech <patchvonbr...@gmail.com>
> Cc: USRP-users@lists.ettus.com
> Message-ID:
>         <
> calnmz8wg3gqnkaomrhhcbpagttfubm3fkmzjhcwhuaghrlu...@mail.gmail.com>
> Content-Type: multipart/alternative;
>         boundary="000000000000dc3aeb05bf0f7ace"
>
> Hi Marcus,
>
> I have tried your suggestion, but unfortunately without success:
>
> Per your advice, I have edited the file "cmake.lwt" in the folder
> /usr/local/lib/python3.7/dist-packages/pybombs/templates to include the
> option "-DENABLE_PYTHON_API=ON" in the calls to cmake.  The modified
> commands are as follows:
>
> configure: cmake .. -DENABLE_PYTHON_API=ON
> -DCMAKE_BUILD_TYPE=$cmakebuildtype -DCMAKE_INSTALL_PREFIX=$prefix
> $config_opt -Wno-dev
> configure_static: cmake .. -DENABLE_PYTHON_API=ON
> -DCMAKE_BUILD_TYPE=$cmakebuildtype -DCMAKE_INSTALL_PREFIX=$prefix
> -DENABLE_STATIC_LIBS=True $config_opt
>
> I removed the previous UHD installation and re-ran "pybombs install uhd",
> but the end result was much the same:  the installation process completed
> without errors, but the Python API was not included in the installation.
>
> QUESTION 1:  Can you tell me if PyBOMBS actually builds the UHD driver
> from source, or does it simply copy a pre-compiled binary onto my system?
> The reason I ask is that PyBOMBS is quite quick to install the UHD driver,
> whereas the non-PyBOMBS approach is VERY slow (i.e. around 60 minutes to
> get to 53%, at which point it crashes out with an error).
>
> QUESTION 2:  This whole process feels more difficult than it should be.
> Why isn't the Python API installed with the UHD driver by default?  Would
> I be better off using another language (like C++) to control the USRP?
>
> Thanks,
> Brendan.
>
>
>
> On Fri, Apr 2, 2021 at 11:25 PM Marcus D Leech <patchvonbr...@gmail.com>
> wrote:
>
> > Perhaps look at the PyBombs recipe for your platform—there’s probably
> > a compiler flag that needs to be set that you’re missing, but I don’t
> > know what that is.
> >
> > Also, in general, you don’t need to become root to compile and build
> > code—only needed during the “make install”
> >
> >
> >
> > Sent from my iPhone
> >
> > On Apr 2, 2021, at 7:19 AM, Brendan Horsfield <
> > brendan.horsfi...@vectalabs.com> wrote:
> >
> > 
> > Hi Folks,
> >
> > I would like to interface my Raspberry Pi 4 to a USRP B210 via the
> > Python API.  This requires the UHD driver to be built from source.
> > Unfortunately, whenever I try this I encounter some errors that stop
> > the build process in its tracks.
> >
> > Details of the error are as follows:
> >
> > [ 53%] Linking CXX executable test_clock_synch
> > /usr/bin/ld: ../lib/libuhd.so.4.0.0: undefined reference to
> > `__atomic_compare_exchange_8'
> > /usr/bin/ld: ../lib/libuhd.so.4.0.0: undefined reference to
> > `__atomic_load_8'
> > /usr/bin/ld: ../lib/libuhd.so.4.0.0: undefined reference to
> > `__atomic_store_8'
> > /usr/bin/ld: ../lib/libuhd.so.4.0.0: undefined reference to
> > `__atomic_fetch_add_8'
> > collect2: error: ld returned 1 exit status
> > make[2]: *** [examples/CMakeFiles/test_clock_synch.dir/build.make:95:
> > examples/test_clock_synch] Error 1
> > make[1]: *** [CMakeFiles/Makefile2:1039:
> > examples/CMakeFiles/test_clock_synch.dir/all] Error 2
> > make: *** [Makefile:163: all] Error 2
> >
> > The process I have been using is as follows:
> >
> > STEP 1:  INSTALL DEPENDENCIES
> > sudo apt-get install libboost-all-dev libusb-1.0-0-dev doxygen
> > python3-docutils python3-mako python3-numpy python3-requests
> > python3-ruamel.yaml python3-setuptools cmake build-essential
> >
> > STEP 2:  BUILD UHD DRIVER FROM SOURCE
> > cd /home/pi
> > mkdir workarea-uhd
> > cd workarea-uhd
> > git clone https://github.com/EttusResearch/uhd
> > cd uhd
> > git checkout v4.0.0.0
> > cd host
> > mkdir build
> > cd build
> > sudo cmake -DNEON_SIMD_ENABLE=OFF -DENABLE_PYTHON_API=ON ../ sudo make
> > --->  (ERRORS OCCUR DURING "MAKE" PROCESS)
> >
> > My system configuration is as follows:
> > Hardware: Raspberry Pi 4 Model B Rev 1.4
> > OS: Raspbian GNU/Linux 10 (buster) (32-bit, armv7l) Ettus USRP B210
> >
> > Does anyone know what the problem could be, and how I can resolve it?
> >
> > One final note:  Using PyBOMBS, I was able to successfully build &
> > install the UHD driver and connect to the USRP.  Unfortunately the
> > PyBOMBS build does not include the Python API, which is what I really
> > want.  Is there a different version of the PyBOMBS build that includes
> the Python API?
> >
> > Thanks & Regards,
> > Brendan.
> >
> >
> >
> > _______________________________________________
> > USRP-users mailing list -- usrp-users@lists.ettus.com To unsubscribe
> > send an email to usrp-users-le...@lists.ettus.com
> >
> >
> -------------- next part --------------
> A message part incompatible with plain text digests has been removed ...
> Name: not available
> Type: text/html
> Size: 5624 bytes
> Desc: not available
>
> ------------------------------
>
> Message: 2
> Date: Sat, 3 Apr 2021 14:12:35 +0300
> From: Ofer Saferman <o...@navigicom.com>
> Subject: [USRP-users] Re: Intermittent problem with GPS
>         synchronization for multiple E310 units
> To: usrp-users <usrp-users@lists.ettus.com>
> Message-ID:
>         <CACDReSwXUvJ8_LimfVOn4StHQEGhNntY-nCSv0aYdBsX=
> at...@mail.gmail.com>
> Content-Type: multipart/alternative;
>         boundary="000000000000566d1705bf0f8b0e"
>
> Hello Philip,
>
> Thank you for the explanation.
> What would you suggest?
> opkg exists. There must be a way to install ntpd without needing to
> rebuild the image.
> Maybe use pybombs or other methods?
> git also works. Maybe download a different package manager and compile it?
>
> It seems that Marcus pointed out a great benefit of E310 units running
> gpsd, but without ntpd system clock can't sync and it seems that this
> feature can vastly simplify gps synchronization among E310 units.
>
> I would be very grateful if anybody can suggest a solution to install ntpd
> on E310 units running UHD 3.15 SD-card image.
>
> Regards,
> Ofer Saferman.
>
> On Sat, Apr 3, 2021 at 10:30 AM <usrp-users-requ...@lists.ettus.com>
> wrote:
>
> > Send USRP-users mailing list submissions to
> >         usrp-users@lists.ettus.com
> >
> > To subscribe or unsubscribe via email, send a message with subject or
> > body 'help' to
> >         usrp-users-requ...@lists.ettus.com
> >
> > You can reach the person managing the list at
> >         usrp-users-ow...@lists.ettus.com
> >
> > When replying, please edit your Subject line so it is more specific
> > than "Re: Contents of USRP-users digest..."Today's Topics:
> >
> >    1. Re: Intermittent problem with GPS synchronization for multiple
> > E310 units
> >       (Philip Balister)
> >
> >
> >
> > ---------- Forwarded message ----------
> > From: Philip Balister <phi...@balister.org>
> > To: Ofer Saferman <o...@navigicom.com>, "Marcus D. Leech" <
> > patchvonbr...@gmail.com>
> > Cc: Rob Kossler <rkoss...@nd.edu>, usrp-users
> > <usrp-users@lists.ettus.com>
> > Bcc:
> > Date: Fri, 2 Apr 2021 10:09:43 -0400
> > Subject: [USRP-users] Re: Intermittent problem with GPS
> > synchronization for multiple E310 units On 4/2/21 7:17 AM, Ofer
> > Saferman wrote:
> > > Marcus Hi,
> > >
> > > Your suggestion below to install ntpd does not work.
> > > The image does not include it. Although the old thread says
> > > otherwise I think it refers to an older UHD release that did include
> ntpd.
> > > Any accurate instructions on how to install it anyway?
> > > Maybe opkg should be configured to access another repository?
> > > Doing: opkg list | grep ntpd, does not yield anything useful so it
> > > is not just a question of typing it correctly.
> >
> > As far as I know, no image has been setup to use package feeds.
> >
> > I know ntpd worked in release4 images, pretty sure the newer image was
> > redone and things have been left out that used to be there.
> >
> > Philip
> >
> > >
> > > Regards,
> > > Ofer Saferman
> > >
> > > On Thu, Apr 1, 2021 at 4:34 PM Marcus D. Leech
> > > <patchvonbr...@gmail.com>
> > > wrote:
> > >
> > >> On 04/01/2021 06:00 AM, Ofer Saferman wrote:
> > >>
> > >> Hello Marcus,
> > >>
> > >> I am working on E310 with the latest UHD-3.15 SD card image.
> > >> It seems not to include ntpd that is required to synchronize system
> > >> time to GPS time.
> > >> Any idea how to install it on the E310?
> > >>
> > >> Regards,
> > >> Ofer Saferman
> > >>
> > >> sudo opkg install ntpd
> > >>
> > >> should work, but it has been a while since I installed any packages
> > >> on
> > my
> > >> E310.
> > >>
> > >> The E310 is based on OpenEmbedded Linux, so all the info about
> > installing
> > >> and managing packages on OpenEmbedded apply.
> > >>
> > >>
> > >>
> > >> On Wed, Mar 31, 2021 at 11:40 PM Marcus D Leech <
> > patchvonbr...@gmail.com>
> > >> wrote:
> > >>
> > >>> Just use gettimeofday() or any of the myriad subtle variants
> > >>> available
> > in
> > >>> boost to get you the Linux system time, and use that in a call to
> > >>> set_time_next_pps().
> > >>>
> > >>> The fact that all your E310s will be running GPSD means they’ll be
> > >>> adjusting system time appropriately and they’ll all agree on what
> > >>> time
> > it
> > >>> is, depending on the level of precision you need.
> > >>>
> > >>> Sent from my iPhone
> > >>>
> > >>> On Mar 31, 2021, at 3:50 PM, Ofer Saferman <o...@navigicom.com>
> wrote:
> > >>>
> > >>> 
> > >>> Thank you Rob. Your suggestions are always helpful. I will look
> > >>> into using gps_gpgga.
> > >>> Thank you Marcus. I am already adding one, per other examples
> > >>> posted
> > here
> > >>> and sync_to_gps example. Can you please comment how I can benefit
> > >>> from
> > the
> > >>> fact that E310 units use gpsd in Linux?
> > >>>
> > >>> Regards,
> > >>> Ofer Saferman
> > >>>
> > >>> On Wed, Mar 31, 2021 at 10:13 PM Marcus D Leech <
> > patchvonbr...@gmail.com>
> > >>> wrote:
> > >>>
> > >>>>
> > >>>>
> > >>>> Sent from my iPhone
> > >>>>
> > >>>> On Mar 31, 2021, at 2:22 PM, Rob Kossler <rkoss...@nd.edu> wrote:
> > >>>>
> > >>>> 
> > >>>> Hi Ofer,
> > >>>> Take a look at the Ettus source code gps_ctrl.cpp.  In
> > >>>> particular,
> > look
> > >>>> at the get_sentence() usage which in the case of "gps_time" waits
> > >>>> for
> > the
> > >>>> next occurrence (wait=true),  but for the others does not wait.
> > >>>> But
> > this
> > >>>> doesn't fully explain the behavior you are seeing.  If you do the
> > following:
> > >>>> 1) wait for PPS time to change
> > >>>> 2) read the "gps_time" sensor
> > >>>> 3) set_time_next_pps (use the value you just read)
> > >>>>
> > >>>> Add 1 to the time you just read before calling set_time_next_pps.
> > >>>>
> > >>>>
> > >>>> It should still work because the "gps_time" command should just
> > >>>> wait until the next PPS.  I guess it depends upon how
> > >>>> "synchronized" are
> > the
> > >>>> received NMEA string with the PPS edge.  Step 1 above waits for
> > >>>> the
> > PPS
> > >>>> edge, but maybe the NMEA string arrives 0.1 secs before or after
> > that.  I
> > >>>> don't really know.  Perhaps you need to switch to using "gps_gpgga"
> > such
> > >>>> that there is no additional wait added and also perhaps you
> > >>>> should
> > add step
> > >>>> 1B which would be just a fixed delay of perhaps 0.4 secs so that
> > >>>> you
> > will
> > >>>> read the NMEA string in between the PPS edges.
> > >>>> Rob
> > >>>>
> > >>>> On Wed, Mar 31, 2021 at 1:22 PM Rob Kossler <rkoss...@nd.edu>
> wrote:
> > >>>>
> > >>>>> Hi Ofer,
> > >>>>> I don't know why the "gps_time" sensor takes long to read. But,
> > >>>>> can
> > you
> > >>>>> try the other sensors (perhaps there is a "gps_gpgga" sensor?)?
> > >>>>> The
> > time
> > >>>>> is embedded in these as well.
> > >>>>> Rob
> > >>>>>
> > >>>>>
> > >>>>> On Wed, Mar 31, 2021 at 12:21 PM Ofer Saferman
> > >>>>> <o...@navigicom.com>
> > >>>>> wrote:
> > >>>>>
> > >>>>>> Marcus Hi,
> > >>>>>>
> > >>>>>> If the gps_time "sensor" returns a value only once per second
> > >>>>>> how
> > come
> > >>>>>> I manage to read it sometimes in less than 1 second?
> > >>>>>> In my code the situation is worse than the simple example
> > >>>>>> below. It usually takes more than 1 sec. to read it and
> > >>>>>> sometimes even 1.7 or
> > 1.8
> > >>>>>> seconds. I don't understand how the size or complexity of the
> > >>>>>> code
> > affects
> > >>>>>> the time it takes to read gps_time.
> > >>>>>>
> > >>>>>> How to treat your comment about the use of GPSD and good
> > >>>>>> synchronization as it relates to code?
> > >>>>>> Should I not change the time source in code and go through the
> > >>>>>> whole process of synchronization using gps_time?
> > >>>>>> Can I "assume" the systems are synced just by the effect they
> > >>>>>> were connected enough time to a GPS antenna? and then just
> > >>>>>> access their
> > time -
> > >>>>>> radio_ctrl->get_time_last_pps()?
> > >>>>>> How to use this information programmatically?
> > >>>>>>
> > >>>>>> Regards,
> > >>>>>> Ofer Saferman
> > >>>>>>
> > >>>>>>
> > >>>>>> ---------- Forwarded message ----------
> > >>>>>>> From: "Marcus D. Leech" <patchvonbr...@gmail.com>
> > >>>>>>> To: usrp-users@lists.ettus.com
> > >>>>>>> Cc:
> > >>>>>>> Bcc:
> > >>>>>>> Date: Wed, 31 Mar 2021 09:19:20 -0400
> > >>>>>>> Subject: [USRP-users] Re: Intermittent problem with GPS
> > >>>>>>> synchronization for multiple E310 units On 03/31/2021 06:49
> > >>>>>>> AM, Ofer Saferman wrote:
> > >>>>>>>> Hello,
> > >>>>>>>>
> > >>>>>>>> I have a system that uses 4 USRP E310 units.
> > >>>>>>>> Each unit is connected to a GPS antenna.
> > >>>>>>>> Time source is set to gpsdo.
> > >>>>>>>>
> > >>>>>>>> I run the same software remotely on all 4 units from a PC.
> > Software
> > >>>>>>>> runs on the units themselves.
> > >>>>>>>> I print out messages to show if the reference is locked and
> > >>>>>>>> the
> > GPS
> > >>>>>>> is
> > >>>>>>>> locked and also what is the GPS time that each unit was
> > >>>>>>> synchronized to.
> > >>>>>>>> In some cases the units synchronize to the same GPS time and
> > >>>>>>>> in
> > >>>>>>> other
> > >>>>>>>> cases there is 1 second difference between GPS time of
> > >>>>>>>> different
> > >>>>>>> units
> > >>>>>>>> thus causing the units to be unsynchronized.
> > >>>>>>>>
> > >>>>>>>> I was wondering how this was possible.
> > >>>>>>>> The synchronization process (documented by others in the past
> > >>>>>>>> on
> > >>>>>>> the
> > >>>>>>>> mailing list) is:
> > >>>>>>>> * Wait for ref and GPS lock
> > >>>>>>>> * Wait for a pps edge (get_time_last_pps)
> > >>>>>>>> * Read gps_time value
> > >>>>>>>> * Sync system clock to GPS clock on next PPS edge
> > >>>>>>> (set_time_next_pps +
> > >>>>>>>> 1.0 sec)
> > >>>>>>>>
> > >>>>>>>> Something similar is also implemented in the sync_to_gps
> example.
> > >>>>>>>>
> > >>>>>>>> In order to debug the problem I decided to time the reading
> > >>>>>>>> of the gps_time sensor to see if there is a clue why
> > >>>>>>>> different units miss
> > >>>>>>> the
> > >>>>>>>> PPS edge and lock to a time of the next second.
> > >>>>>>>>
> > >>>>>>>> I was very surprised to find out that it takes between 0.9 to
> > >>>>>>>> 1.2 seconds to read the gps_time sensor.
> > >>>>>>>> This explains exactly why it is difficult to synchronize
> > >>>>>>>> multiple units to the same time instance because if one unit
> > >>>>>>>> takes 0.9
> > >>>>>>> seconds
> > >>>>>>>> to read the sensor and the other unit takes 1.2 seconds to
> > >>>>>>>> read
> > the
> > >>>>>>>> sensor then each unit will lock on a different GPS time 1
> > >>>>>>>> second
> > >>>>>>> apart.
> > >>>>>>>>
> > >>>>>>>> Here is a short software I wrote to time the gps_time sensor
> > >>>>>>> reading:
> > >>>>>>>> ---------------------------------------------------------
> > >>>>>>>> #include <uhd/utils/safe_main.hpp> #include <uhd/device3.hpp>
> > >>>>>>>> //#include <uhd/usrp/multi_usrp.hpp> #include
> > >>>>>>>> <uhd/types/sensors.hpp> #include <boost/program_options.hpp>
> > >>>>>>>> #include <boost/format.hpp> #include <chrono> #include
> > >>>>>>>> <iostream>
> > >>>>>>>>
> > >>>>>>>> namespace po = boost::program_options;
> > >>>>>>>>
> > >>>>>>>> int UHD_SAFE_MAIN(int argc, char *argv[]){
> > >>>>>>>>
> > >>>>>>>> std::string args;
> > >>>>>>>>
> > >>>>>>>>     po::options_description desc("Allowed options");
> > >>>>>>>>     desc.add_options()
> > >>>>>>>>         ("help", "help message") ("args",
> > >>>>>>>> po::value<std::string>(&args)->default_value(""), "device
> > >>>>>>>> address args")
> > >>>>>>>>     ;
> > >>>>>>>>
> > >>>>>>>>     po::variables_map vm;
> > >>>>>>>>     po::store(po::parse_command_line(argc, argv, desc), vm);
> > >>>>>>>>     po::notify(vm);
> > >>>>>>>>
> > >>>>>>>>     //print the help message
> > >>>>>>>>     if (vm.count("help")){
> > >>>>>>>>         std::cout << boost::format("Timinig of gps_time: %s")
> > >>>>>>>> %
> > >>>>>>> desc
> > >>>>>>>> << std::endl;
> > >>>>>>>>         return ~0;
> > >>>>>>>>     }
> > >>>>>>>>
> > >>>>>>>> uhd::device3::sptr usrp = uhd::device3::make(args);
> > >>>>>>>> //uhd::usrp::multi_usrp::sptr usrp =
> > >>>>>>> uhd::usrp::multi_usrp::make(args);
> > >>>>>>>>
> > >>>>>>>> uhd::sensor_value_t gps_time =
> > >>>>>>>>
> > >>>>>>>
> > usrp->get_tree()->access<uhd::sensor_value_t>("/mboards/0/sensors/gps_
> > usrp->time").get();
> > >>>>>>>> //uhd::sensor_value_t gps_time =
> > >>>>>>> usrp->get_mboard_sensor("gps_time", 0);
> > >>>>>>>>
> > >>>>>>>> std::chrono::steady_clock::time_point start_time, end_time;
> > >>>>>>>> std::chrono::duration<double> time_diff; // Default unit for
> > >>>>>>> duration
> > >>>>>>>> is seconds.
> > >>>>>>>>
> > >>>>>>>> for(int ii=0 ; ii<20 ; ii++)
> > >>>>>>>> {
> > >>>>>>>> start_time = std::chrono::steady_clock::now(); gps_time =
> > >>>>>>>>
> > >>>>>>>
> > usrp->get_tree()->access<uhd::sensor_value_t>("/mboards/0/sensors/gps_
> > usrp->time").get();
> > >>>>>>>> //gps_time = usrp->get_mboard_sensor("gps_time", 0); end_time
> > >>>>>>>> = std::chrono::steady_clock::now(); time_diff = end_time -
> > >>>>>>>> start_time;
> > >>>>>>>>
> > >>>>>>>> std::cout << "gps_time[" << (boost::format("%02d") % ii) << "]:
> "
> > >>>>>>> <<
> > >>>>>>>> int64_t(gps_time.to_int()) << ". Time to read \"gps_time\": "
> > >>>>>>>> <<
> > >>>>>>>> (boost::format("%0.9f") % time_diff.count()) << " seconds" <<
> > >>>>>>> std::endl;
> > >>>>>>>> }
> > >>>>>>>>
> > >>>>>>>>     return 0;
> > >>>>>>>> }
> > >>>>>>>>
> > >>>>>>>
> > ----------------------------------------------------------------------
> > ----------
> > >>>>>>>> Here are the results of one typical run:
> > >>>>>>>> gps_time[00]: 1617183840. Time to read "gps_time":
> > >>>>>>>> 0.884164380
> > >>>>>>> seconds
> > >>>>>>>> gps_time[01]: 1617183841. Time to read "gps_time":
> > >>>>>>>> 0.877966469
> > >>>>>>> seconds
> > >>>>>>>> gps_time[02]: 1617183842. Time to read "gps_time":
> > >>>>>>>> 1.170869661
> > >>>>>>> seconds
> > >>>>>>>> gps_time[03]: 1617183843. Time to read "gps_time":
> > >>>>>>>> 0.882917987
> > >>>>>>> seconds
> > >>>>>>>> gps_time[04]: 1617183844. Time to read "gps_time":
> > >>>>>>>> 1.172120154
> > >>>>>>> seconds
> > >>>>>>>> gps_time[05]: 1617183845. Time to read "gps_time":
> > >>>>>>>> 0.879271985
> > >>>>>>> seconds
> > >>>>>>>> gps_time[06]: 1617183846. Time to read "gps_time":
> > >>>>>>>> 0.878609099
> > >>>>>>> seconds
> > >>>>>>>> gps_time[07]: 1617183847. Time to read "gps_time":
> > >>>>>>>> 1.115639282
> > >>>>>>> seconds
> > >>>>>>>> gps_time[08]: 1617183848. Time to read "gps_time":
> > >>>>>>>> 1.125365551
> > >>>>>>> seconds
> > >>>>>>>> gps_time[09]: 1617183849. Time to read "gps_time":
> > >>>>>>>> 0.843803231
> > >>>>>>> seconds
> > >>>>>>>> gps_time[10]: 1617183850. Time to read "gps_time":
> > >>>>>>>> 1.125065740
> > >>>>>>> seconds
> > >>>>>>>> gps_time[11]: 1617183851. Time to read "gps_time":
> > >>>>>>>> 0.847519817
> > >>>>>>> seconds
> > >>>>>>>> gps_time[12]: 1617183852. Time to read "gps_time":
> > >>>>>>>> 1.121398945
> > >>>>>>> seconds
> > >>>>>>>> gps_time[13]: 1617183853. Time to read "gps_time":
> > >>>>>>>> 0.844371533
> > >>>>>>> seconds
> > >>>>>>>> gps_time[14]: 1617183854. Time to read "gps_time":
> > >>>>>>>> 1.124722726
> > >>>>>>> seconds
> > >>>>>>>> gps_time[15]: 1617183855. Time to read "gps_time":
> > >>>>>>>> 0.845688380
> > >>>>>>> seconds
> > >>>>>>>> gps_time[16]: 1617183856. Time to read "gps_time":
> > >>>>>>>> 1.129568096
> > >>>>>>> seconds
> > >>>>>>>> gps_time[17]: 1617183857. Time to read "gps_time":
> > >>>>>>>> 0.882436229
> > >>>>>>> seconds
> > >>>>>>>> gps_time[18]: 1617183858. Time to read "gps_time":
> > >>>>>>>> 1.168227593
> > >>>>>>> seconds
> > >>>>>>>> gps_time[19]: 1617183859. Time to read "gps_time":
> > >>>>>>>> 0.881948247
> > >>>>>>> seconds
> > >>>>>>>>
> > >>>>>>>
> > ----------------------------------------------------------------------
> > -------------
> > >>>>>>>> In the code you can find commented out the usual way to
> > >>>>>>>> access the sensor using multi_usrp and get_mboard_sensor. The
> > >>>>>>>> results are
> > >>>>>>> quite
> > >>>>>>>> similar.
> > >>>>>>>>
> > >>>>>>>> I wonder if anybody encountered this issue before or
> > >>>>>>>> addressed it
> > >>>>>>> in
> > >>>>>>>> any way.
> > >>>>>>>> I wonder why it takes so much time to get the value of GPS
> > >>>>>>>> time
> > >>>>>>> when
> > >>>>>>>> it is a simple parsing of an NMEA message coming from the GPS
> > >>>>>>> receiver.
> > >>>>>>>>
> > >>>>>>>> I am trying now various tricks to make the software robust
> > >>>>>>>> and
> > >>>>>>> immune
> > >>>>>>>> to this phenomenon. I can report my findings further if I
> > >>>>>>>> succeed
> > >>>>>>> to
> > >>>>>>>> find a workaround if there is any interest.
> > >>>>>>>>
> > >>>>>>>> Can anyone comment on this? Can this be resolved so that the
> > >>>>>>> reading
> > >>>>>>>> of gps_time will be much faster?
> > >>>>>>>> Is there another way to get GPS time faster indirectly? Maybe
> > >>>>>>>> from parsing NMEA messages ourselves?
> > >>>>>>>>
> > >>>>>>>> Regards,
> > >>>>>>>> Ofer Saferman
> > >>>>>>>>
> > >>>>>>> This probably has to do with the way that particular "sensor"
> > >>>>>>> works--the
> > >>>>>>> NMEA time value is only emitted once per second, and the
> > >>>>>>>    code for that sensor has some heuristic for determining
> > >>>>>>> "freshness"
> > >>>>>>> of the value.
> > >>>>>>>
> > >>>>>>> I'll point out that on E310, the system is configured to use
> > >>>>>>> GPSD,
> > so
> > >>>>>>> that the Linux system time across several systems that have
> > >>>>>>> all
> > been
> > >>>>>>>    "listening" to GPS for a while will all be synchronized
> > >>>>>>> quite
> > well.
> > >>>>>>>
> > >>>>>>>
> > >>>>>>>
> > >>>>>>>
> > >>>>>> --
> > >>>>>> This message has been scanned for viruses and dangerous content
> > >>>>>> by *MailScanner* <http://www.mailscanner.info/>, and is
> > >>>>>> believed to be clean.
> > _______________________________________________
> > >>>>>> USRP-users mailing list -- usrp-users@lists.ettus.com To
> > >>>>>> unsubscribe send an email to usrp-users-le...@lists.ettus.com
> > >>>>>>
> > >>>>> _______________________________________________
> > >>>> USRP-users mailing list -- usrp-users@lists.ettus.com To
> > >>>> unsubscribe send an email to usrp-users-le...@lists.ettus.com
> > >>>>
> > >>>>
> > >>> --
> > >>> This message has been scanned for viruses and dangerous content by
> > >>> *MailScanner* <http://www.mailscanner.info/>, and is believed to
> > >>> be clean.
> > >>>
> > >>>
> > >> --
> > >> This message has been scanned for viruses and dangerous content by
> > >> *MailScanner* <http://www.mailscanner.info/>, and
> > is
> > >> believed to be clean.
> > >>
> > >>
> > >>
> > >
> > >
> > > _______________________________________________
> > > USRP-users mailing list -- usrp-users@lists.ettus.com To unsubscribe
> > > send an email to usrp-users-le...@lists.ettus.com
> > > _______________________________________________
> > USRP-users mailing list -- usrp-users@lists.ettus.com To unsubscribe
> > send an email to usrp-users-le...@lists.ettus.com
> >
>
> --
> This message has been scanned for viruses and dangerous content by
> MailScanner, and is believed to be clean.
>
> -------------- next part --------------
> A message part incompatible with plain text digests has been removed ...
> Name: not available
> Type: text/html
> Size: 27834 bytes
> Desc: not available
>
> ------------------------------
>
> Subject: Digest Footer
>
> _______________________________________________
> USRP-users mailing list -- usrp-users@lists.ettus.com To unsubscribe send
> an email to usrp-users-le...@lists.ettus.com
>
>
> ------------------------------
>
> End of USRP-users Digest, Vol 128, Issue 7
> ******************************************
>
_______________________________________________
USRP-users mailing list -- usrp-users@lists.ettus.com
To unsubscribe send an email to usrp-users-le...@lists.ettus.com

Reply via email to