aboutsummaryrefslogtreecommitdiffstats
path: root/doc/manuals/chapters/trx-backends.adoc
diff options
context:
space:
mode:
Diffstat (limited to 'doc/manuals/chapters/trx-backends.adoc')
-rw-r--r--doc/manuals/chapters/trx-backends.adoc67
1 files changed, 67 insertions, 0 deletions
diff --git a/doc/manuals/chapters/trx-backends.adoc b/doc/manuals/chapters/trx-backends.adoc
new file mode 100644
index 0000000..32ff82a
--- /dev/null
+++ b/doc/manuals/chapters/trx-backends.adoc
@@ -0,0 +1,67 @@
+[[osmotrx_device_support]]
+== OsmoTRX hardware device support
+
+OsmoTRX consists of a _common_ part that applies to all TRX devices as well as
+_hardware-specific_ parts for each TRX device. The hardware-specific parts are
+usually provided by vendor-specific or device-specific libraries that are then
+handled by some OsmoTRX glue code presenting a unified interface towards the
+rest of the code by means of a _RadioDevice_ class.
+
+The common part includes the core TRX architecture as well as code for
+implementing the external interfaces such as the TRX Manager UDP socket,
+control, and VTY interfaces.
+
+The hardware-specific parts include support for driving one particular
+implementation of a radio modem. Such a physical layer
+implementation can come in many forms. Sometimes it runs on a general
+purpose CPU, sometimes on a dedicated ARM core, a dedicated DSP, a
+combination of DSP and FPGA.
+
+Joining the common part with each of the available backends results in a
+different binary with different suffix for each backend. For instance, when
+OsmoTRX is built with UHD backend, an _osmo-trx-uhd_ binary is generated; when
+OsmoTRX is built with LimeSuite backend, an _osmo-trx-lms_ binary is generated.
+Build of different backend can be enabled and disabled by means of configure
+flags, which can be found in each subsection relative to each backend below.
+
+== `osmo-trx-uhd` for UHD based Transceivers
+
+This OsmoTRX model uses _libuhd_ (UHD, USRP Hardware Driver) to drive the
+device, that is configuring it and reading/writing samples from/to it.
+
+So far, this backend has been mostly used to drive devices such as the Ettus
+B200 family and Fairwaves UmTRX family, and used to be the default backend used
+for legacy @osmo-trx@ binary when per-backend binaries didn't exist yet.
+
+Any device providing generic support for UHD should theoretically be able to be
+run through this backend without much effort, but pracitcal experience showed
+that some devices don't play well with it, such as the LimeSDR family of
+devices, which showed far better results when using its native interface.
+
+Related code can be found in the _Transceiver52M/device/uhd/_ directory in
+_osmo-trx.git_.
+
+== `osmo-trx-lms` for LimeSuite based Transceivers
+
+This OsmoTRX model uses LimeSuite API and library to drive the device, that is
+configuring it and reading/writing samples from/to it.
+
+This backend was developed in order to be used together with LimeSDR-USB and
+LimeSDR-mini devices, due to to the poor results obtained with the UHD backend,
+and to simplify the stack.
+
+Related code can be found in the _Transceiver52M/device/lms/_ directory in
+_osmo-trx.git_.
+
+
+== `osmo-trx-usrp1` for libusrp based Transceivers
+
+This OsmoTRX model uses the legacy libusrp driver provided in GNU Radio 3.4.2.
+
+As this code was dropped from GNU Radio at some point and was found very
+difficult to build, some work was done to create a standalone libusrp which can
+be nowadays found as a separate git repository together with other osmocom git
+repositories, in https://git.osmocom.org/libusrp/
+
+Related code can be found in the _Transceiver52M/device/usrp1/_ directory in
+_osmo-trx.git_.