| | 1 | == Multi channel sample collection with x310 == |
| | 2 | |
| | 3 | === Description === |
| | 4 | We'll demonstrate using multiple USRPs to collect samples. |
| | 5 | |
| | 6 | === Set up === |
| | 7 | 1. [https://www.orbit-lab.org/schedule Make a reservation] of the grid console. |
| | 8 | 2. Verify availability of x310s of the grid, then power cycle the x310s with omf commands. |
| | 9 | {{{ |
| | 10 | grid> omf stat -t [23,1..8] |
| | 11 | grid> omf tell -a offh -t [23,1..8] |
| | 12 | grid> omf tell -a on -t [23,1..8] |
| | 13 | }}} |
| | 14 | |
| | 15 | 3. In this example we'll use node21-1 to run the application to collect samples. This node will have access to all usrps on the grid's RF device column ie. ''-t [23,1..8]'' |
| | 16 | |
| | 17 | Load ''baseline-sdr.ndz'' image and then ssh into node21-1 |
| | 18 | {{{ |
| | 19 | grid> omf load -i baseline-sdr.ndz -t node21-1 |
| | 20 | grid> omf tell -a on -t node21-1 |
| | 21 | grid> ssh root@node21-1 |
| | 22 | }}} |
| | 23 | |
| | 24 | 4. [Optional] Test the PPS input to x310s |
| | 25 | {{{ |
| | 26 | root@node21-1:~/uhd/host/build/examples# ./test_pps_input --args="addr=10.10.23.1" --source external |
| | 27 | }}} |
| | 28 | Output text should indicate "Success!" |
| | 29 | |
| | 30 | === Collect samples === |
| | 31 | 1. The application to collect samples is ''rx_multi_receive''. Run this with --help to get a list of options. |
| | 32 | {{{ |
| | 33 | root@node21-1:~/RX_MULTI_RECEIVE# ./rx_multi_receive --help |
| | 34 | linux; GNU C++ version 4.8.4; Boost_105400; UHD_003.009.003-0-unknown |
| | 35 | |
| | 36 | UHD RX Multi Samples Allowed options: |
| | 37 | --help help message |
| | 38 | --args arg single uhd device address args |
| | 39 | --secs arg (=1.5) number of seconds in the future to receive |
| | 40 | --nsamps arg (=10000) total number of samples to receive |
| | 41 | --freq arg (=900000000) RF center frequency in Hz for all channels |
| | 42 | --rate arg (=6250000) rate of incoming samples for all channels |
| | 43 | --gain arg (=0) gain for the RF chain for all channels |
| | 44 | --prefix arg enables file output with filename prefix |
| | 45 | --addr arg udp address: 10.10.0.10 |
| | 46 | --port arg (=1337) udp port: 1337 |
| | 47 | --sync arg (=now) synchronization method: now, pps, mimo |
| | 48 | --subdev arg subdev spec (homogeneous across motherboards) |
| | 49 | --dilv specify to disable inner-loop verbose |
| | 50 | --int-n tune USRP with integer-N tuning |
| | 51 | --channels arg (=0) which channel(s) to use (specify "0", "1", "0,1", |
| | 52 | etc) |
| | 53 | |
| | 54 | }}} |
| | 55 | |
| | 56 | This app is very similar to ''rx_multi_sample'' provided in the UHD examples directory but with a few additional arguments: |
| | 57 | * The values given with options --freq and --gain are specified across all channels. |
| | 58 | * Use the option --prefix to collect samples from all channels to a file name tagged with the prefix and channel number. |
| | 59 | * The samples can also be sent out via UDP by providing --addr and --port. |
| | 60 | |
| | 61 | 2. To collect samples with 3 x310s with both daughter boards (for a total of 6 channels) |
| | 62 | {{{ |
| | 63 | root@node21-1:~/RX_MULTI_RECEIVE# now="date +%Y%m%d"T"%H%M%S"Z" " |
| | 64 | root@node21-1:~/RX_MULTI_RECEIVE# ./rx_multi_receive --nsamps 1024 --rate 5e6 --args="addr0=10.10.23.1,addr1=10.10.23.3,addr2=10.10.23.4" --subdev "A:0 B:0" --channels "0,1,2,3,4,5" --prefix "x310_`$now`_" --sync "pps" --secs 5 |
| | 65 | }}} |
| | 66 | |
| | 67 | Each channel data is collected into an ascii file with meta information and a binary file with only sample data: |
| | 68 | {{{ |
| | 69 | -rw-r--r-- 1 root root 27262 May 6 14:28 x310_20160506T142807Z_ch_0_meta |
| | 70 | -rw-r--r-- 1 root root 8192 May 6 14:28 x310_20160506T142807Z_ch_0_binary |
| | 71 | -rw-r--r-- 1 root root 27643 May 6 14:28 x310_20160506T142807Z_ch_2_meta |
| | 72 | -rw-r--r-- 1 root root 8192 May 6 14:28 x310_20160506T142807Z_ch_2_binary |
| | 73 | -rw-r--r-- 1 root root 27735 May 6 14:28 x310_20160506T142807Z_ch_1_meta |
| | 74 | -rw-r--r-- 1 root root 8192 May 6 14:28 x310_20160506T142807Z_ch_1_binary |
| | 75 | -rw-r--r-- 1 root root 27360 May 6 14:28 x310_20160506T142807Z_ch_4_meta |
| | 76 | -rw-r--r-- 1 root root 8192 May 6 14:28 x310_20160506T142807Z_ch_4_binary |
| | 77 | -rw-r--r-- 1 root root 27678 May 6 14:28 x310_20160506T142807Z_ch_3_meta |
| | 78 | -rw-r--r-- 1 root root 8192 May 6 14:28 x310_20160506T142807Z_ch_3_binary |
| | 79 | -rw-r--r-- 1 root root 26868 May 6 14:28 x310_20160506T142807Z_ch_5_meta |
| | 80 | -rw-r--r-- 1 root root 8192 May 6 14:28 x310_20160506T142807Z_ch_5_binary |
| | 81 | }}} |
| | 82 | |
| | 83 | 3. Details of each channel in the meta file. The channel sample data is also appended in ascii text if the samples collected is less than ~16000. |
| | 84 | {{{ |
| | 85 | root@node21-1:~/RX_MULTI_RECEIVE# more x310_20160506T142807Z_ch_0_meta |
| | 86 | channel : 0 |
| | 87 | mboard id : X310 |
| | 88 | mboard_serial : 30A3570 |
| | 89 | mboard_name : Mercury |
| | 90 | rx_id : UBX-160 v1 (0x007a) |
| | 91 | rx_subdev_name : UBX RX |
| | 92 | rx_subdev_spec : A:0 B:0 |
| | 93 | total samples : 1024 |
| | 94 | sample size : 8 |
| | 95 | RX frequency (MHz) : 900 |
| | 96 | RX sample rate (MHz) : 5 |
| | 97 | RX gain (dB) : 0 |
| | 98 | }}} |
| | 99 | |
| | 100 | 4. The channels complete sample data is located in the files labeled binary. To quickly view contents of the binary file: |
| | 101 | {{{ |
| | 102 | root@node21-1:~/RX_MULTI_RECEIVE# hexdump -v -e '"%010_ad [" 2/4 "%f " "]\n"' x310_20160506T142807Z_ch_0_binary |
| | 103 | 0000000000 [0.000000 0.000031] |
| | 104 | 0000000008 [-0.000244 -0.000092] |
| | 105 | 0000000016 [-0.000153 0.000061] |
| | 106 | 0000000024 [-0.000214 0.000061] |
| | 107 | 0000000032 [-0.000122 0.000061] |
| | 108 | 0000000040 [0.000031 0.000153] |
| | 109 | 0000000048 [-0.000122 -0.000061] |
| | 110 | 0000000056 [-0.000183 -0.000061] |
| | 111 | 0000000064 [-0.000092 0.000153] |
| | 112 | 0000000072 [-0.000031 0.000031] |
| | 113 | 0000000080 [-0.000153 0.000000] |
| | 114 | 0000000088 [0.000031 0.000061] |
| | 115 | : |
| | 116 | : |
| | 117 | : |
| | 118 | }}} |