[[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. [[dev_ettus_usrp1]] === Ettus USRP1 The binary _osmo-trx-usrp1_ is used to drive this device, see <>. [[dev_ettus_b200]] === Ettus B200 The binary _osmo-trx-uhd_ is used to drive this device, see <>. Comes only with 1 RF channel. It can still be used in a multi-TRX setup by using the <> feature. By using this feature, one can drive up to 3 TRX (with the restrictions explained there). [[dev_ettus_b200]] === Ettus B210 The binary _osmo-trx-uhd_ is used to drive this device, see <>. Comes with 2 RF channels, which can be used to set up a multi-TRX BTS. However, due to a shared local oscillator for both RF channels, ARFCN separation can be up about 25 MHz. This device also supports the <> feature. By using this feature, one can drive up to 3 TRX (with the restrictions explained there). Please note that the above configurations cannot be combined, which means maximum number of TRX one can achieve is 2 by using separate physical RF channels, or 3 by using multi-ARFCN method. You cannot support, for example, 6 ARFCN operation on B210 using 3 TRX on side A and another 3 TRX on side B. [[dev_limesdr_usb]] === LimeSDR-USB The binary _osmo-trx-lms_ is used to drive this device, see <>. This device comes with 2 RF channels, so it should theoretically be possible to run a multi-TRX setup with it, but there are yet no records that this kind of setup was tested with this device. This device has 3 different Rx paths with different antenna connectors in the PCB, each with a different frequency and bandwidth range. One should make sure the physical antenna is connected to the correct connector matching the Rx path you want to use. If one wants to be able to use the device in both 900 and 1800 MHz GSM bands and easily switch between them, then Rx Path `LNAW` should be used ,since it is the only one covering both bands, and the antenna physically plugged accordingly. Following example shows how to then configure _osmo-trx-lms_ to use that Rx path to read samples. .Example: Configure osmo-trx-lms to use LNAW as Rx path and BAND1 as Tx Path ---- trx ... chan 0 tx-path BAND1 rx-path LNAW ---- [[dev_limesdr_mini]] === LimeSDR-mini The binary _osmo-trx-lms_ is used to drive this device, see <>. As a smaller brother of the [[dev_limesdr_usb]], this device comes only with 1 RF channel. As a result, it can only hold 1 TRX as of today.