A quick update for benefit of those following this thread: As a sanity check, I have tried to compile & build one of the C++ examples on the Ettus homepage, only to get exactly the same error messages that I got with the Python API:
pi@raspberrypi:~/cpp-dev/init_usrp/build $ sudo make [ 50%] Linking CXX executable init_usrp /usr/bin/ld: /usr/local/lib/libuhd.so: undefined reference to `__atomic_compare_exchange_8' /usr/bin/ld: /usr/local/lib/libuhd.so: undefined reference to `__atomic_load_8' /usr/bin/ld: /usr/local/lib/libuhd.so: undefined reference to `__atomic_store_8' /usr/bin/ld: /usr/local/lib/libuhd.so: undefined reference to `__atomic_fetch_add_8' collect2: error: ld returned 1 exit status make[2]: *** [CMakeFiles/init_usrp.dir/build.make:88: init_usrp] Error 1 make[1]: *** [CMakeFiles/Makefile2:76: CMakeFiles/init_usrp.dir/all] Error 2 make: *** [Makefile:84: all] Error 2 Clearly the sticking point is the -latomic linking failure. I have still got some suggestions to work through over the next week or so. I'll post another update if I find a working solution. Brendan. On Sun, Apr 4, 2021 at 11:03 AM Marcus D Leech <patchvonbr...@gmail.com> wrote: > The C++ API is the standard API for UHD follows by the legacy C API and > then the Python API. The Python API is still considered experimental, and > it will necessarily have performance issues—that’s just the nature of an > interpreted language trying to do high performance real-time signal > processing—even when you use things like numpy. > > Sent from my iPhone > > On Apr 3, 2021, at 7:37 PM, Brendan Horsfield < > brendan.horsfi...@vectalabs.com> wrote: > > > Your point is well taken, although I confess I am still a bit surprised > that Python support is not the norm, given the popularity of this language > in the scientific & engineering community. > > Getting back to my problem: Am I correct in assuming that the C++ API is > included as standard with every UHD build? If so, rather than spending > days/weeks trying to add Python support to UHD on the Raspberry Pi, would > it be faster for me to just create a C++ function to communicate with the > USRP, and put a Python wrapper around it? > > On Sun, Apr 4, 2021 at 1:15 AM Marcus D Leech <patchvonbr...@gmail.com> > wrote: > >> >> >> Sent from my iPhone >> >> On Apr 3, 2021, at 7:08 AM, Brendan Horsfield <b >> >> 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. >> >> Well, NI/Ettus have zero control over how various distros choose to >> package and build UHD, similarly for PyBombs—PyBombs isn’t maintained by >> NI/Ettus. >> >> So if you “land” on a distro where the packaged UHD doesn’t include >> Python support, then you end up building UHD yourself. Which may entail the >> pain you encountered due to missing compiler flags. >> >> Because the Linux world is so incredibly diverse, it’s rare that the >> developer of a given code base is also responsible for packaging for a >> given distro/platform. That’s why there are “package maintainers” for each >> distro, and they’re the ones who end up making decisions like enabling >> support for various options, turning on “weird” compiler flags, etc. >> >> UHD is no different in this regard. >> >> >> >> 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 >>> >>>
_______________________________________________ USRP-users mailing list -- usrp-users@lists.ettus.com To unsubscribe send an email to usrp-users-le...@lists.ettus.com