| | 1 | == Basic usage == |
| | 2 | |
| | 3 | === Desciption === |
| | 4 | In this tutorial we'll demonstrate how to navigate from the COSMOS sandbox to a single SDR on a node and run an application to read samples from the SDR. |
| | 5 | |
| | 6 | === Prerequisites === |
| | 7 | Before getting started you'll need the following: |
| | 8 | 1. sign up for a [https://cosmos-lab.org/portal-2/ COSMOS account] |
| | 9 | 2. create a reservation for sandbox 1 using the [https://wiki.cosmos-lab.org/cPanel/controlPanel/start scheduler]. |
| | 10 | 3. some minimal knowledge or interest of Linux |
| | 11 | |
| | 12 | === Set up === |
| | 13 | * After your reservation request has been approved, you'll receive access to the sandbox1 console. |
| | 14 | Open a terminal into console.sb1.cosmos-lab.org with a tunnel set up from localhost:5000 to srv1-lg1.sb1.cosmos-lab.org:9002 |
| | 15 | {{{ |
| | 16 | Welcome to |
| | 17 | _____ ____ _____ __ __ ____ _____ _ ____ |
| | 18 | / ____/ __ \ / ____| \/ |/ __ \ / ____| | | /\ | _ \ |
| | 19 | | | | | | | (___ | \ / | | | | (___ _____| | / \ | |_) | ___ _ __ __ _ |
| | 20 | | | | | | |\___ \| |\/| | | | |\___ \_____| | / /\ \ | _ < / _ \| '__/ _` | |
| | 21 | | |___| |__| |____) | | | | |__| |____) | | |____ / ____ \| |_) | (_) | | | (_| | |
| | 22 | \_____\____/|_____/|_| |_|\____/|_____/ |______/_/ \_\____(_)___/|_| \__, | |
| | 23 | __/ | |
| | 24 | |___/ |
| | 25 | Hostname : console.sb1.cosmos-lab.org |
| | 26 | Operating system : Ubuntu 16.04.5 LTS; Kernel: 4.15.0-45-generic; Arch: x86_64; |
| | 27 | CPU : 6 x Intel(R) Xeon(R) CPU E5-2630 v2 @ 2.60GHz |
| | 28 | 1 socket(s) with 6 core(s) per socket and 1 thread(s) per core |
| | 29 | Memory : 3.9G |
| | 30 | Uptime : up 4 days, 14 hours, 15 minutes |
| | 31 | Users logged in : 0 |
| | 32 | Last login: Tue Feb 26 19:06:09 2019 from 165.230.132.125 |
| | 33 | }}} |
| | 34 | |
| | 35 | * We can see the available nodes under this sandbox using the ''omf stat -t all'' command. The nodes list below should coinside with the [https://wiki.cosmos-lab.org/cPanel/controlPanel/start Inventory/Status page]. |
| | 36 | {{{ |
| | 37 | nilanjan@console:~$ omf stat -t all |
| | 38 | |
| | 39 | ----------------------------------------------- |
| | 40 | Node: srv1-lg1.sb1.cosmos-lab.org State: POWEROFF |
| | 41 | Node: srv2-lg1.sb1.cosmos-lab.org State: POWEROFF |
| | 42 | ----------------------------------------------- |
| | 43 | }}} |
| | 44 | |
| | 45 | * For this example we'll use the node ''srv1-lg1.sb1.cosmos-lab.org'' and load the ''baseline-sdr.ndz'' image onto it. This image already has the applications pre-compiled and drivers installed. |
| | 46 | {{{ |
| | 47 | console:~$ omf load -i baseline-sdr.ndz -t srv1-lg1.sb1.cosmos-lab.org |
| | 48 | }}} |
| | 49 | After the image is successfully loaded turn on the node, give it some time to boot and then ssh into it. |
| | 50 | {{{ |
| | 51 | console:~$ omf tell -a on -t srv1-lg1.sb1.cosmos-lab.org |
| | 52 | console:~$ ssh native@srv1-lg1.sb1.cosmos-lab.org |
| | 53 | }}} |
| | 54 | |
| | 55 | * Once you're in ''srv1-lg1.sb1.cosmos-lab.org'' configure the network interface so it can talk to the N310's data interface. |
| | 56 | {{{ |
| | 57 | sudo ifconfig enp1s0 192.168.20.1 |
| | 58 | }}} |
| | 59 | |
| | 60 | Run ''uhd_find_devices' and check if the N310 is detected |
| | 61 | {{{ |
| | 62 | native@localhost:~$ uhd_find_devices |
| | 63 | |
| | 64 | [INFO] [UHD] linux; GNU C++ version 7.3.0; Boost_106501; UHD_3.13.1.0-0-unknown |
| | 65 | -------------------------------------------------- |
| | 66 | -- UHD Device 0 |
| | 67 | -------------------------------------------------- |
| | 68 | Device Address: |
| | 69 | serial: 315A35A |
| | 70 | addr: 192.168.20.2 |
| | 71 | claimed: False |
| | 72 | mgmt_addr: 10.110.1.3 |
| | 73 | mgmt_addr: 192.168.20.2 |
| | 74 | product: n310 |
| | 75 | type: n3xx |
| | 76 | }}} |
| | 77 | |
| | 78 | We can also use ''uhd_usrp_probe'' to get more details. |
| | 79 | {{{ |
| | 80 | native@localhost:~$ uhd_usrp_probe --args="mgmt_addr=10.110.1.3,addr=192.168.20.2" |
| | 81 | [INFO] [UHD] linux; GNU C++ version 7.3.0; Boost_106501; UHD_3.13.1.0-0-unknown |
| | 82 | [INFO] [MPMD] Initializing 1 device(s) in parallel with args: mgmt_addr=10.110.1.3,type=n3xx,product=n310,serial=315A35A,claimed=False,addr=192.168.22 |
| | 83 | |
| | 84 | [INFO] [0/DmaFIFO_0] Initializing block control (NOC ID: 0xF1F0D00000000004) |
| | 85 | [INFO] [0/DmaFIFO_0] BIST passed (Throughput: 1350 MB/s) |
| | 86 | [INFO] [0/DmaFIFO_0] BIST passed (Throughput: 1341 MB/s) |
| | 87 | [INFO] [0/DmaFIFO_0] BIST passed (Throughput: 1340 MB/s) |
| | 88 | [INFO] [0/DmaFIFO_0] BIST passed (Throughput: 1349 MB/s) |
| | 89 | [INFO] [MPM.PeriphManager] init() called with device args `mgmt_addr=10.110.1.3,product=n310'. |
| | 90 | [INFO] [0/Radio_0] Initializing block control (NOC ID: 0x12AD100000011312) |
| | 91 | [INFO] [0/Radio_1] Initializing block control (NOC ID: 0x12AD100000011312) |
| | 92 | [INFO] [0/DDC_0] Initializing block control (NOC ID: 0xDDC0000000000000) |
| | 93 | [INFO] [0/DDC_1] Initializing block control (NOC ID: 0xDDC0000000000000) |
| | 94 | [INFO] [0/DUC_0] Initializing block control (NOC ID: 0xD0C0000000000002) |
| | 95 | [INFO] [0/DUC_1] Initializing block control (NOC ID: 0xD0C0000000000002) |
| | 96 | _____________________________________________________ |
| | 97 | / |
| | 98 | | Device: N300-Series Device |
| | 99 | | _____________________________________________________ |
| | 100 | | / |
| | 101 | | | Mboard: ni-n3xx-315A35A |
| | 102 | | | eeprom_version: 1 |
| | 103 | | | pid: 16962 |
| | 104 | | | product: n310 |
| | 105 | | | rev: 5 |
| | 106 | | | rpc_connection: remote |
| | 107 | | | serial: 315A35A |
| | 108 | | | type: n3xx |
| | 109 | | | MPM Version: 1.2 |
| | 110 | | | FPGA Version: 5.2 |
| | 111 | | | FPGA git hash: UNKNOWN |
| | 112 | | | RFNoC capable: Yes |
| | 113 | | | |
| | 114 | | | Time sources: internal, external, gpsdo, sfp0 |
| | 115 | | | Clock sources: external, internal, gpsdo |
| | 116 | | | Sensors: gps_locked, ref_locked, fan, get_gps_sky_sensor, temp, get_gps_time_sensor, get_gps_tpv_sensor |
| | 117 | | | _____________________________________________________ |
| | 118 | | | / |
| | 119 | | | | RX Dboard: A |
| | 120 | | | | _____________________________________________________ |
| | 121 | | | | / |
| | 122 | | | | | RX Frontend: 0 |
| | 123 | | | | | Name: Magnesium |
| | 124 | | | | | Antennas: TX/RX, RX2, CAL, LOCAL |
| | 125 | | | | | Sensors: lo_locked, ad9371_lo_locked, lowband_lo_locked |
| | 126 | | | | | Freq range: 1.000 to 6000.000 MHz |
| | 127 | | | | | Gain range all: 0.0 to 75.0 step 0.5 dB |
| | 128 | | | | | Gain range rfic: 0.0 to 0.0 step 0.0 dB |
| | 129 | | | | | Gain range dsa: 0.0 to 0.0 step 0.0 dB |
| | 130 | | | | | Gain range amp: 0.0 to 0.0 step 0.0 dB |
| | 131 | | | | | Bandwidth range: 20000000.0 to 100000000.0 step 0.0 Hz |
| | 132 | | | | | Connection Type: IQ |
| | 133 | | | | | Uses LO offset: No |
| | 134 | | | | _____________________________________________________ |
| | 135 | | | | / |
| | 136 | | | | | RX Frontend: 1 |
| | 137 | | | | | Name: Magnesium |
| | 138 | | | | | Antennas: TX/RX, RX2, CAL, LOCAL |
| | 139 | | | | | Sensors: lo_locked, ad9371_lo_locked, lowband_lo_locked |
| | 140 | | | | | Freq range: 1.000 to 6000.000 MHz |
| | 141 | | | | | Gain range all: 0.0 to 75.0 step 0.5 dB |
| | 142 | | | | | Gain range rfic: 0.0 to 0.0 step 0.0 dB |
| | 143 | | | | | Gain range dsa: 0.0 to 0.0 step 0.0 dB |
| | 144 | | | | | Gain range amp: 0.0 to 0.0 step 0.0 dB |
| | 145 | | | | | Bandwidth range: 20000000.0 to 100000000.0 step 0.0 Hz |
| | 146 | | | | | Connection Type: IQ |
| | 147 | | | | | Uses LO offset: No |
| | 148 | | | | _____________________________________________________ |
| | 149 | | | | / |
| | 150 | | | | | RX Codec: A |
| | 151 | | | | | Name: AD9371 Dual ADC |
| | 152 | | | | | Gain Elements: None |
| | 153 | | | _____________________________________________________ |
| | 154 | | | / |
| | 155 | | | | RX Dboard: B |
| | 156 | | | | _____________________________________________________ |
| | 157 | | | | / |
| | 158 | | | | | RX Frontend: 0 |
| | 159 | | | | | Name: Magnesium |
| | 160 | | | | | Antennas: TX/RX, RX2, CAL, LOCAL |
| | 161 | | | | | Sensors: lo_locked, ad9371_lo_locked, lowband_lo_locked |
| | 162 | | | | | Freq range: 1.000 to 6000.000 MHz |
| | 163 | | | | | Gain range all: 0.0 to 75.0 step 0.5 dB |
| | 164 | | | | | Gain range rfic: 0.0 to 0.0 step 0.0 dB |
| | 165 | | | | | Gain range dsa: 0.0 to 0.0 step 0.0 dB |
| | 166 | | | | | Gain range amp: 0.0 to 0.0 step 0.0 dB |
| | 167 | | | | | Bandwidth range: 20000000.0 to 100000000.0 step 0.0 Hz |
| | 168 | | | | | Connection Type: IQ |
| | 169 | | | | | Uses LO offset: No |
| | 170 | | | | _____________________________________________________ |
| | 171 | | | | / |
| | 172 | | | | | RX Frontend: 1 |
| | 173 | | | | | Name: Magnesium |
| | 174 | | | | | Antennas: TX/RX, RX2, CAL, LOCAL |
| | 175 | | | | | Sensors: lo_locked, ad9371_lo_locked, lowband_lo_locked |
| | 176 | | | | | Freq range: 1.000 to 6000.000 MHz |
| | 177 | | | | | Gain range all: 0.0 to 75.0 step 0.5 dB |
| | 178 | | | | | Gain range rfic: 0.0 to 0.0 step 0.0 dB |
| | 179 | | | | | Gain range dsa: 0.0 to 0.0 step 0.0 dB |
| | 180 | | | | | Gain range amp: 0.0 to 0.0 step 0.0 dB |
| | 181 | | | | | Bandwidth range: 20000000.0 to 100000000.0 step 0.0 Hz |
| | 182 | | | | | Connection Type: IQ |
| | 183 | | | | | Uses LO offset: No |
| | 184 | | | | _____________________________________________________ |
| | 185 | | | | / |
| | 186 | | | | | RX Codec: B |
| | 187 | | | | | Name: AD9371 Dual ADC |
| | 188 | | | | | Gain Elements: None |
| | 189 | | | _____________________________________________________ |
| | 190 | | | / |
| | 191 | | | | TX Dboard: A |
| | 192 | | | | _____________________________________________________ |
| | 193 | | | | / |
| | 194 | | | | | TX Frontend: 0 |
| | 195 | | | | | Name: Magnesium |
| | 196 | | | | | Antennas: TX/RX |
| | 197 | | | | | Sensors: lo_locked, ad9371_lo_locked, lowband_lo_locked |
| | 198 | | | | | Freq range: 1.000 to 6000.000 MHz |
| | 199 | | | | | Gain range all: 0.0 to 65.0 step 0.5 dB |
| | 200 | | | | | Gain range rfic: 0.0 to 0.0 step 0.0 dB |
| | 201 | | | | | Gain range dsa: 0.0 to 0.0 step 0.0 dB |
| | 202 | | | | | Gain range amp: 0.0 to 0.0 step 0.0 dB |
| | 203 | | | | | Bandwidth range: 20000000.0 to 100000000.0 step 0.0 Hz |
| | 204 | | | | | Connection Type: IQ |
| | 205 | | | | | Uses LO offset: No |
| | 206 | | | | _____________________________________________________ |
| | 207 | | | | / |
| | 208 | | | | | TX Frontend: 1 |
| | 209 | | | | | Name: Magnesium |
| | 210 | | | | | Antennas: TX/RX |
| | 211 | | | | | Sensors: lo_locked, ad9371_lo_locked, lowband_lo_locked |
| | 212 | | | | | Freq range: 1.000 to 6000.000 MHz |
| | 213 | | | | | Gain range all: 0.0 to 65.0 step 0.5 dB |
| | 214 | | | | | Gain range rfic: 0.0 to 0.0 step 0.0 dB |
| | 215 | | | | | Gain range dsa: 0.0 to 0.0 step 0.0 dB |
| | 216 | | | | | Gain range amp: 0.0 to 0.0 step 0.0 dB |
| | 217 | | | | | Bandwidth range: 20000000.0 to 100000000.0 step 0.0 Hz |
| | 218 | | | | | Connection Type: IQ |
| | 219 | | | | | Uses LO offset: No |
| | 220 | | | | _____________________________________________________ |
| | 221 | | | | / |
| | 222 | | | | | TX Codec: A |
| | 223 | | | | | Name: AD9371 Dual DAC |
| | 224 | | | | | Gain Elements: None |
| | 225 | | | _____________________________________________________ |
| | 226 | | | / |
| | 227 | | | | TX Dboard: B |
| | 228 | | | | _____________________________________________________ |
| | 229 | | | | / |
| | 230 | | | | | TX Frontend: 0 |
| | 231 | | | | | Name: Magnesium |
| | 232 | | | | | Antennas: TX/RX |
| | 233 | | | | | Sensors: lo_locked, ad9371_lo_locked, lowband_lo_locked |
| | 234 | | | | | Freq range: 1.000 to 6000.000 MHz |
| | 235 | | | | | Gain range all: 0.0 to 65.0 step 0.5 dB |
| | 236 | | | | | Gain range rfic: 0.0 to 0.0 step 0.0 dB |
| | 237 | | | | | Gain range dsa: 0.0 to 0.0 step 0.0 dB |
| | 238 | | | | | Gain range amp: 0.0 to 0.0 step 0.0 dB |
| | 239 | | | | | Bandwidth range: 20000000.0 to 100000000.0 step 0.0 Hz |
| | 240 | | | | | Connection Type: IQ |
| | 241 | | | | | Uses LO offset: No |
| | 242 | | | | _____________________________________________________ |
| | 243 | | | | / |
| | 244 | | | | | TX Frontend: 1 |
| | 245 | | | | | Name: Magnesium |
| | 246 | | | | | Antennas: TX/RX |
| | 247 | | | | | Sensors: lo_locked, ad9371_lo_locked, lowband_lo_locked |
| | 248 | | | | | Freq range: 1.000 to 6000.000 MHz |
| | 249 | | | | | Gain range all: 0.0 to 65.0 step 0.5 dB |
| | 250 | | | | | Gain range rfic: 0.0 to 0.0 step 0.0 dB |
| | 251 | | | | | Gain range dsa: 0.0 to 0.0 step 0.0 dB |
| | 252 | | | | | Gain range amp: 0.0 to 0.0 step 0.0 dB |
| | 253 | | | | | Bandwidth range: 20000000.0 to 100000000.0 step 0.0 Hz |
| | 254 | | | | | Connection Type: IQ |
| | 255 | | | | | Uses LO offset: No |
| | 256 | | | | _____________________________________________________ |
| | 257 | | | | / |
| | 258 | | | | | TX Codec: B |
| | 259 | | | | | Name: AD9371 Dual DAC |
| | 260 | | | | | Gain Elements: None |
| | 261 | | | _____________________________________________________ |
| | 262 | | | / |
| | 263 | | | | RFNoC blocks on this device: |
| | 264 | | | | |
| | 265 | | | | * DmaFIFO_0 |
| | 266 | | | | * Radio_0 |
| | 267 | | | | * Radio_1 |
| | 268 | | | | * DDC_0 |
| | 269 | | | | * DDC_1 |
| | 270 | | | | * DUC_0 |
| | 271 | | | | * DUC_1 |
| | 272 | |
| | 273 | |
| | 274 | }}} |
| | 275 | |
| | 276 | === Run application === |
| | 277 | From root/SPECTRUM_VIEW directory run the pre-compiled application that can read samples from the N310. |
| | 278 | {{{ |
| | 279 | native@localhost:~$ cd SPECTRUM_VIEW/ |
| | 280 | native@localhost:~/SPECTRUM_VIEW$ ./app_read_n310_samples |
| | 281 | INFO 11:51:08.262 (main.cpp:623) - Starting command server at 5180 |
| | 282 | INFO 11:51:08.262 (main.cpp:175) - Starting websock server at 9002 |
| | 283 | ........... |
| | 284 | }}} |
| | 285 | In short the application runs a server listening for commands. Just to briefly demonstrate the functionality, open the spectrum_view.html file in a Chrome browser, this will issues commands to configure the N310 and display a short spectrum width. |
| | 286 | When the viewer is first opened, you should see the text CONNECTED below the plot. |
| | 287 | || [[Image(basic_usage_spectrum_view_1, width=125px)]] || |
| | 288 | |
| | 289 | Keep the default values for RATE, FREQ, GAIN and click on the HALTED button. This should display the spectrum if all went well. |
| | 290 | || [[Image(basic_usage_spectrum_view_2, width=125px)]] || |
| | 291 | |
| | 292 | === Troubleshooting === |