|author||Pau Espin Pedrol <email@example.com>||2018-07-05 18:26:52 +0200|
|committer||Neels Hofmeyr <firstname.lastname@example.org>||2018-11-27 18:36:18 +0100|
trx: Add Hardware device support section
2 files changed, 69 insertions, 0 deletions
diff --git a/doc/manuals/chapters/trx-backends.adoc b/doc/manuals/chapters/trx-backends.adoc
new file mode 100644
@@ -0,0 +1,67 @@
+== 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-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-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
diff --git a/doc/manuals/osmotrx-usermanual.adoc b/doc/manuals/osmotrx-usermanual.adoc
index f2ccbaf..7d04f78 100644
@@ -25,6 +25,8 @@ include::chapters/configuration.adoc