From 7631381a987264599675ebdfa4cf303b0c5e0c38 Mon Sep 17 00:00:00 2001
From: Florian Kaltenberger <florian.kaltenberger@eurecom.fr>
Date: Fri, 10 Mar 2023 22:02:43 +0100
Subject: [PATCH] adding documentation for USRP

---
 radio/USRP/README.md | 36 ++++++++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)
 create mode 100644 radio/USRP/README.md

diff --git a/radio/USRP/README.md b/radio/USRP/README.md
new file mode 100644
index 00000000000..131be064366
--- /dev/null
+++ b/radio/USRP/README.md
@@ -0,0 +1,36 @@
+USRP device documentation
+
+OAI works with the most common USRP models like, B200, B200mini, B210, X310, N300, N310, N320, X410. This is achieved by using the Ettus Universal Hardware Driver (UHD) (https://github.com/EttusResearch/uhd). The file usrp_lib.cpp provides an abstraction layer of UHD to OAI.
+
+The USRP can be configured in the RU section of the config file. The field "sdr_addrs" uses the same syntax as the USRP device identification string (https://files.ettus.com/manual/page_identification.html). Here are a few examples
+
+sdr_addrs = "addr=192.168.10.2" # uses a single 10Gb Ethernet interface on an N3x0 or X3x0 or X4x0
+
+sdr_addrs = "addr=192.168.10.2,second_addr=192.168.20.2" # uses 2 10Gb Ethernet interfaces on a N3x0 or X3x0 or X4x0 (requires that you flashed the FPGA wth the XG image)
+
+you can also use the multi USRP feature and specify multiple USRPs, in which case you will get the aggregated number of channels on all the devices
+
+sdr_addrs = "addr0=192.168.10.2,addr1=192.168.30.2"
+
+You can specify if you want to use external or interal clock or time source either by adding the parameters in the sdr_addrs field or by using the fields clock_src or time_src
+
+sdr_addrs = "addr=192.168.10.2,clock_source=external,time_source=external"
+
+is equivalent to
+
+sdr_addrs = "addr=192.168.10.2"
+clock_src = "external"
+time_src  = "external"
+
+Valid choices for clock and time source are "internal", "external", and "gpsdo"
+
+Careful: the USRP remembers the choice of the clock source. If you want to make sure it uses always the same, always specify the clock_source and time_source.
+
+Last but not least you may specify that only a specfic subdevice of the USRP is used. See also https://files.ettus.com/manual/page_configuration.html#config_subdev
+
+For example on a USRP N310 the following fields will specify that you use channel 0 of subdevice A.
+
+tx_subdev = "A:0"
+rx_subdev = "A:0"
+
+When combining this with the multi USRP feature you can easily create a distributed antenna array with only 1 channel used at each USRP.
\ No newline at end of file
-- 
GitLab