Hi @Jones (cc: @JColvin in case other people ask):
Software:
GNURADIO (gnuradio.org) is to SDR what gcc/gpp is to C/C++ (see also: radioconda).
Much of Ettus' most readable how-to documentation for the B210 (and other USRP devices) is in the form of presentations at GRCON.
GNURADIO is written in C/C++ (core API / tools) and Python (high-level interface and tools).
MATLAB has lots of SDR-related toolboxes that are easy-to-use, convenient, and remarkably slow.
MATLAB code for SDR can be made more performant by spending $12,000 (per seat) on their C++ cross-compiler. I wish I was kidding.
radioconda (https://github.com/ryanvolz/radioconda) is exactly what it sounds like: a superset of conda that serves as a drop-in replacement for your regular conda distribution. It contains the latest version of GNURADIO and other open-source SDR tools, and works out-of-the box for Linux, Windows, and Mac, including Arm64.
Not just python: it includes C/C++ tools and apis
It contains the full set of Ettus USRP/UHD drivers, tools and APIs.
What's the catch? Python version is usually 1 or 2 points behind, e.g. current radioconda python version is 3.10.13, latest stable release is 3.12.2
What are the benefits? Radioconda "just works:" until a couple of years ago, GNURADIO was very hard to install on any platform that's not Ubuntu - back then, it made MATLAB a viable choice for SDR.
Can GPIO be used for Signals? (short answer: no, and do not connect your TTL output to the SMA antenna port):
The relevant page for electrical characteristics of B2x0 is here: https://files.ettus.com/manual/page_usrp_b200.html#b200_hw_ref_ext
The 'definitive' guide to USRP GPIO (including B210) is here: https://events.gnuradio.org/event/18/contributions/234/attachments/74/186/GPIOs on USRPs.pdf
On newer B210s GPIO header 504 is populated, so you can indeed use it, but not for signal.
B2x0 GPIO is used for:
controlling and monitoring the 'state' of the radio: e.g., which banks are transmitting or receiving, which lights are blinking, etc.
communicating with the built-in FPGA.
10MHz clock ref (which, except on B200-mini, already has an SMA connector on the front panel).
WARNING: "RX power -15 dBm max" (from the above electrical characteristics manual).
Applying a signal with greater than about 0.03 milliwatts of power to the Rx2 or Rx/Tx SMA connectors risks "magic smoke"-level damage to your B210.
Other Resources:
The most comprehensive description of USRP, UHD, SDR, and gnuradio tools (somewhat dated, but still basically true):
https://kb.ettus.com/images/4/47/Workshop_GnuRadio_Slides_20190507.pdf
If you're new to SDR, watch Michael Ossman's video series on intro to SDR (using HackRF):
https://www.youtube.com/playlist?list=PLu0BPYzTjiHru1KmPThmbY-8rRm3EWvUQ
You can follow along and do the exercises with a USRP instead of a Hackrf.
(Disclaimer: I do not work for Ettus/NI/Emerson/Digilent and I am sometimes wrong)