Attention is currently required from: Hoernchen, Timur Davydov, fixeria, laforge, osmith. pespin has posted comments on this change by Timur Davydov. ( https://gerrit.osmocom.org/c/osmo-trx/+/42198?usp=email ) Change subject: feat(usdr): add USDR backend support (osmo-trx-usdr) ...................................................................... Patch Set 5: (40 comments) File Transceiver52M/device/usdr/USDRDevice.h: https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/471c550a_e5761512?usp=... : PS4, Line 12: This program is distributed in the hope that it will be useful,
Added the `*` prefix. and the indentation still differs from the the lines above.
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/f2a82332_9a4aa5a4?usp=... : PS4, Line 46: struct DeviceParameters {
Yes, replaced with `struct dev_desc` for consistency with the other devices. Done
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/4f8422fd_5ab50155?usp=... : PS4, Line 48: * time correction for TX timestamp, in seconds, to align it with RX timestamp, which is needed to achieve correct
Fixed, wrapped to stay under 120 chars. Done
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/a1ead6bb_441d4300?usp=... : PS4, Line 54: using DeviceParametersMap = std::map<std::string, DeviceParameters>;
Yes, replaced with `dev_map_t` for consistency with the other devices. Done
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/de9c7bca_dcdef9eb?usp=... : PS4, Line 86: public:
Reordered the class members to match the structure used in the other device classes (public section […] Done
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/644d6824_42434013?usp=... : PS4, Line 115: /**
Removed trailing whitespace. Done
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/f70ef8e2_893ba916?usp=... : PS4, Line 116: * @brief Read samples from the USDR.
Ack. […] Done
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/096ba097_1347a43d?usp=... : PS4, Line 126: bool *underrun = nullptr);
Aligned as suggested. Done
File Transceiver52M/device/usdr/USDRDevice.h: https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/4f484909_a53aac39?usp=... : PS3, Line 54: int txsps; ///< samples count per GSM symbol for Tx
Replaced with `tx_sps` and `rx_sps` from `RadioDevice` Done
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/b7f10edb_6afd13dc?usp=... : PS3, Line 60: int timeTxCorr = 0; ///< time correction for TX timestamp, in samples, to align it with RX timestamp, which is needed to achieve correct timing of the transmitted signal. This is a device-specific parameter that can be configured via dev_args and defaults to 0 if not specified.
Done Done
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/3cc3340a_949321a6?usp=... : PS3, Line 63: TIMESTAMP ts_last_recv = 0;
Fixed indentation throughout the file Done
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/62a9520e_10e54542?usp=... : PS3, Line 90: Read samples from the USDR.
Fixed comments throughout the file Done
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/311fa05a_4ce46b10?usp=... : PS3, Line 100: TIMESTAMP timestamp = 0xffffffff, bool *underrun = NULL);
Fixed indentation throughout the file Done
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/0b5e83b1_0deddbd0?usp=... : PS3, Line 121:
Fixed whitespaces throughout the file Done
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/a876a8be_93671360?usp=... : PS3, Line 132: TIMESTAMP initialReadTimestamp(void) { return ts_initial;}
Fixed indentation throughout the file Done
File Transceiver52M/device/usdr/USDRDevice.cpp: https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/bac9759b_0fd0ecd1?usp=... : PS3, Line 49: {"limemini", {tx_offset: 86.769us}}, /* 94 samples at 1083333.33333 sps corresponds to 86.769 us */
Thanks, good catch — I indeed lost xSDR in that section. […] Done
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/f653d980_0f9b118c?usp=... : PS3, Line 52: enum {
Replaced the enum with #define constants as suggested Done
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/7d6b5694_b0e53434?usp=... : PS3, Line 85: std::string msg = std::string("Error creating USDR device with connection string '") + connection_string + "' res: " + std::to_string(res) + "(" + strerror(res) + ")";
Reformatted the file to ensure all lines are within the 120-character limit Done
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/02b41a8a_c8939e46?usp=... : PS3, Line 180: dev = NULL;
Fixed indentation throughout the file Done
File Transceiver52M/device/usdr/USDRDevice.cpp: https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/7ea8e927_577d51c6?usp=... : PS4, Line 191: const int loglevel = parse_config(args, "loglevel", 3);
I’ve added a logging callback similar to the other backends. […] Ack, fine.
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/28da068b_0e6c779f?usp=... : PS4, Line 199: const double rate = 0.27083333333e6 * tx_sps;
It comes from 1083333.33333 sps / 4. […] Done
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/e716211c_775c711d?usp=... : PS4, Line 203: uint64_t val;
I've moved the variable declarations to the top of the function, except for const ones in some funct […] Done
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/f643e89a_41df4ba3?usp=... : PS4, Line 221: usdr_dme_set_uint_exception(dev, "/dm/sdr/0/tx/gain", 0);
Added the suggested macros and replaced the hardcoded paths accordingly. Done
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/a85b9b60_4c86ab55?usp=... : PS4, Line 228: const char* fmt = "ci16";
Moved it to a #define at the top of the file. Done
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/d95d074a_b34067c2?usp=... : PS4, Line 246: usdr_dms_sync_exception(dev, "rx", ped.size(), ped.data());
Replaced the remaining hardcoded strings with defines. Done
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/c909c799_7310ba57?usp=... : PS4, Line 260: if (dev) {
Implemented as suggested. Done
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/357dcc50_1169f130?usp=... : PS4, Line 269: return false;
Added an error message. Done
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/1866d804_334efc44?usp=... : PS4, Line 296: return !started;
Implemented as suggested. Done
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/0290b35e_e83b0182?usp=... : PS4, Line 327: double USDRDevice::setTxGain(double dB, size_t chan)
Removed all unused functions. Done
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/f8dcbd92_80861407?usp=... : PS4, Line 382: try {
Reworked it to follow the other backends: values are now cached per channel in arrays (rx_gains, tx_ […] Done
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/dca9c323_be9e8e78?usp=... : PS4, Line 392: TIMESTAMP timestamp, bool *underrun)
Fixed the indentation. Done
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/86153742_bcaf52f6?usp=... : PS4, Line 394: if (!started)
Replaced the check with the same bufs. […] Done
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/69188723_e0f9b0ed?usp=... : PS4, Line 421: bool *underrun, TIMESTAMP timestamp)
Fixed Done
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/fcecb741_2a71b9bc?usp=... : PS4, Line 475: std::string USDRDevice::getTxAntenna(size_t chan )
Removed Not removed ;)
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/2b5e005a_9307955e?usp=... : PS4, Line 492: return GSM::Time(6,7);
Added space Done
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/3268480a_2f30223f?usp=... : PS4, Line 610: return new USDRDevice(iface, cfg);
I don’t think additional device-specific checks are needed here. […] Done
File debian/osmo-trx-usdr.install: https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/f38b6ad5_542ad2da?usp=... : PS4, Line 3: /usr/bin/osmo-trx-usdr
It surprised me as well. […] @osmith@sysmocom.de CC
File doc/manuals/chapters/trx-backends.adoc: https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/81873d67_72d8b6ae?usp=... : PS3, Line 86: where multiple small SDRs are combined to present one or more TRX instances
Updated the documentation according to your remarks. SO IIUC that means you didn't actually yet try/succeed to run multi-trx BTS with these devices, correct?
File doc/manuals/chapters/trx-devices.adoc: https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/b71db28d_36b06576?usp=... : PS3, Line 102: scale the number of TRX instances.
Good point, thanks. […] As mentioned in the other comment, multi-trx for a given BTS running multiple osmo-trx processes is not supported nowadays. Can you actually provide information on how did you test such a setup? Otherwise please update the documentation in this file.
File doc/manuals/chapters/trx-devices.adoc: https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/da8c8ccb_8fdf65ed?usp=... : PS4, Line 127: instances. The current _osmo-trx-usdr_ backend operates in single-channel mode.
Added the missing newline at the end of the file. Done
-- To view, visit https://gerrit.osmocom.org/c/osmo-trx/+/42198?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email Gerrit-MessageType: comment Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Change-Id: I5d1d25921514954c4929ae6e7352168b3ceb05df Gerrit-Change-Number: 42198 Gerrit-PatchSet: 5 Gerrit-Owner: Timur Davydov <dtv.comp@gmail.com> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: pespin <pespin@sysmocom.de> Gerrit-CC: Hoernchen <ewild@sysmocom.de> Gerrit-CC: fixeria <vyanitskiy@sysmocom.de> Gerrit-CC: laforge <laforge@osmocom.org> Gerrit-CC: osmith <osmith@sysmocom.de> Gerrit-Attention: osmith <osmith@sysmocom.de> Gerrit-Attention: Hoernchen <ewild@sysmocom.de> Gerrit-Attention: laforge <laforge@osmocom.org> Gerrit-Attention: fixeria <vyanitskiy@sysmocom.de> Gerrit-Attention: Timur Davydov <dtv.comp@gmail.com> Gerrit-Comment-Date: Mon, 02 Mar 2026 10:59:02 +0000 Gerrit-HasComments: Yes Gerrit-Has-Labels: No Comment-In-Reply-To: pespin <pespin@sysmocom.de> Comment-In-Reply-To: Timur Davydov <dtv.comp@gmail.com>