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.
# USRP device documentation
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
## General
```bash
OAI works with most common USRP models, like B200, B200mini/B205mini, B210,
sdr_addrs ="addr=192.168.10.2"# uses a single 10Gb Ethernet interface on an N3x0 or X3x0 or X4x0
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`](./usrp_lib.cpp) provides an abstraction layer of UHD to OAI.
Example files can be found in the `ci-scripts/conf_files/` directory with a
The USRP can be configured in the RU section of the config file. The field
`sdr_addrs` uses the [USRP device identification
string](https://files.ettus.com/manual/page_identification.html). Here are a
few examples
```bash
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)
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)
sdr_addrs ="serial=ABC1234"# globally unique identifier of this device
```
```
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
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
...
@@ -17,7 +32,9 @@ you can also use the multi USRP feature and specify multiple USRPs, in which cas
...
@@ -17,7 +32,9 @@ you can also use the multi USRP feature and specify multiple USRPs, in which cas
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
You can specify to use external or interal clock or time source either by
adding the parameters in the `sdr_addrs` field or by using the fields
Valid choices for clock and time source are "internal", "external", and "gpsdo".
Valid choices for clock and time source are `internal`, `external`, and `gpsdo`.
Note 1: 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.
Note 1: 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`.
Note 2: when using multiple USRPs they always have to be synchronized using "external" or "gpsdo"
Note 2: when using multiple USRPs they always have to be synchronized using
`external` or `gpsdo`
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
Last but not least you may specify that only a specfic subdevice of the USRP is
For example on a USRP N310 the following fields will specify that you use channel 0 of subdevice A. You can enter this information after providing the ip addresses of the USRPs in sdr_addrs.
For example, on a USRP N310, the following fields will specify that you use
channel 0 of subdevice A. You can enter this information after providing the ip
addresses of the USRPs in `sdr_addrs`.
```bash
```bash
tx_subdev ="A:0"
tx_subdev ="A:0"
...
@@ -67,9 +92,8 @@ RUs = (
...
@@ -67,9 +92,8 @@ RUs = (
}
}
);
);
```
```
Hint:
You cannot see TX/RX spread over multiple USRPs, if you use "internal" as a refrence of the clock and time source.
Hint: You cannot see TX/RX spread over multiple USRPs, if you use `internal` as a refrence of the clock and time source.
Furthur information about synchronization on the USRP N3xx devices can be found here: https://kb.ettus.com/Using_Ethernet-Based_Synchronization_on_the_USRP%E2%84%A2_N3xx_Devices
Furthur information about synchronization on the USRP N3xx devices can be found here: https://kb.ettus.com/Using_Ethernet-Based_Synchronization_on_the_USRP%E2%84%A2_N3xx_Devices