From 557e928d911ba4c456a383908a415eec87add040 Mon Sep 17 00:00:00 2001 From: Pau Espin Pedrol Date: Thu, 5 Jul 2018 18:26:52 +0200 Subject: trx: Add Hardware device support section Change-Id: I87fc54cf1751f31a3e92d6503625e984f9a6130f --- OsmoTRX/chapters/trx-backends.adoc | 67 ++++++++++++++++++++++++++++++++++++++ OsmoTRX/osmotrx-usermanual.adoc | 2 ++ 2 files changed, 69 insertions(+) create mode 100644 OsmoTRX/chapters/trx-backends.adoc (limited to 'OsmoTRX') diff --git a/OsmoTRX/chapters/trx-backends.adoc b/OsmoTRX/chapters/trx-backends.adoc new file mode 100644 index 0000000..32ff82a --- /dev/null +++ b/OsmoTRX/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_. diff --git a/OsmoTRX/osmotrx-usermanual.adoc b/OsmoTRX/osmotrx-usermanual.adoc index f2ccbaf..7d04f78 100644 --- a/OsmoTRX/osmotrx-usermanual.adoc +++ b/OsmoTRX/osmotrx-usermanual.adoc @@ -25,6 +25,8 @@ include::chapters/configuration.adoc[] include::chapters/trx-architectures.adoc[] +include::chapters/trx-backends.adoc[] + include::../common/chapters/trx_if.adoc[] include::../common/chapters/port_numbers.adoc[] -- cgit v1.2.3