| 1 | == Getting started with RFNoC X310 == |
| 2 | |
| 3 | [[TOC(Tutorials/k0SDR*)]] |
| 4 | |
| 5 | === Description === |
| 6 | This tutorial is a guide for getting started with RFNoC using an USRP X310 on ORBIT grid. |
| 7 | Before starting to experiment with RFNoC, here are a couple of useful presentations, write ups from Ettus Research, that one should go through. |
| 8 | https://github.com/EttusResearch/uhd/wiki/RFNoC:-Getting-Started |
| 9 | |
| 10 | |
| 11 | |
| 12 | |
| 13 | |
| 14 | === Set up === |
| 15 | * Make a reservation on the [https://www.orbit-lab.org/schedule/ Orbit Scheduler] for using the grid. |
| 16 | * Load baseline-rfnoc-labtools.ndz on an ORBIT node with USRP X310. |
| 17 | {{{ |
| 18 | omf load -i baseline-rfnoc-labtools.ndz -t node18-20 |
| 19 | }}} |
| 20 | * Once imaging is done, turn the node on |
| 21 | {{{ |
| 22 | omf tell -a on -t node18-20 |
| 23 | }}} |
| 24 | * Wait for the node to turn on and log in |
| 25 | {{{ |
| 26 | ssh root@node18-20 |
| 27 | }}} |
| 28 | |
| 29 | === Testing the installation === |
| 30 | The image that was loaded, contains UHD rfnoc-devel branch installation as mentioned in the RFNoC getting started guide. |
| 31 | * Run uhd_find_devices - you can see that the UHD version is shown as UHD_003.010.rfnoc-285-gb9765c42 |
| 32 | {{{ |
| 33 | root@node18-20:~# uhd_find_devices --args="addr=192.168.10.2" |
| 34 | linux; GNU C++ version 4.8.2; Boost_105400; UHD_003.010.rfnoc-285-gb9765c42 |
| 35 | |
| 36 | -------------------------------------------------- |
| 37 | -- UHD Device 0 |
| 38 | -------------------------------------------------- |
| 39 | Device Address: |
| 40 | type: x300 |
| 41 | addr: 192.168.10.2 |
| 42 | fpga: HGS |
| 43 | name: hakuna matata |
| 44 | serial: F4FD2A |
| 45 | product: X310 |
| 46 | }}} |
| 47 | * Run uhd_usrp_probe. This might throw an error as shown below, as the X310 might contain a firmware build that is not compatible with the RFNoC UHD installation. |
| 48 | |
| 49 | {{{ |
| 50 | root@node18-20:~# uhd_usrp_probe --args="addr=192.168.10.2" |
| 51 | linux; GNU C++ version 4.8.2; Boost_105400; UHD_003.010.rfnoc-285-gb9765c42 |
| 52 | |
| 53 | -- X300 initialization sequence... |
| 54 | -- Determining maximum frame size... 8000 bytes. |
| 55 | -- Setup basic communication... |
| 56 | ========================================================= |
| 57 | Warning: |
| 58 | Expected FPGA compatibility number 1000, but got 9: |
| 59 | The FPGA image on your device is not compatible with this host code build. |
| 60 | Download the appropriate FPGA images for this version of UHD. |
| 61 | Please run: |
| 62 | |
| 63 | "/usr/local/lib/uhd/utils/uhd_images_downloader.py" |
| 64 | |
| 65 | Then burn a new image to the on-board flash storage of your |
| 66 | USRP X3xx device using the image loader utility. Use this command: |
| 67 | |
| 68 | "/usr/local/bin/uhd_image_loader" --args="type=x300,addr=192.168.10.2" |
| 69 | |
| 70 | For more information, refer to the UHD manual: |
| 71 | |
| 72 | http://files.ettus.com/manual/page_usrp_x3x0.html#x3x0_flash========================================================= |
| 73 | Error: RuntimeError: Expected firmware compatibility number 4.0, but got 3.0: |
| 74 | The firmware build is not compatible with the host code build. |
| 75 | Please run: |
| 76 | |
| 77 | "/usr/local/lib/uhd/utils/uhd_images_downloader.py" |
| 78 | }}} |
| 79 | |
| 80 | * In case of the above error, you can burn the appropriate FPGA image using uhd_image_loader as shown above, or using usrp_x3xx_fpga_jtag_programmer.sh found in uhd/tools. |
| 81 | When the jtag programmer is used, the FPGA image is lost on power cycling. |
| 82 | |
| 83 | {{{ |
| 84 | root@node18-20:~/uhd/tools# ./usrp_x3xx_fpga_jtag_programmer.sh --fpga-path="/usr/local/share/uhd/images/usrp_x310_fpga_HGS.bit" |
| 85 | ======================================= |
| 86 | Copyright 2014 Ettus Research LLC |
| 87 | |
| 88 | JTAG Programming Tool |
| 89 | ======================================= |
| 90 | |
| 91 | ==== Generating impact batch file 1eRfmtCb.impact.cmd... |
| 92 | ==== Running impact -- loading /usr/local/share/uhd/images/usrp_x310_fpga_HGS.bit into the FPGA... |
| 93 | }}} |
| 94 | |
| 95 | * Now running uhd_usrp_probe should print out a lot of messages with this at the end : the list of RFNoC blocks in the current FPGA image. |
| 96 | |
| 97 | {{{ |
| 98 | -- ========== Full list of RFNoC blocks: ============ |
| 99 | -- * 0/Radio_0 |
| 100 | -- * 0/Radio_1 |
| 101 | -- * 0/AddSub_0 |
| 102 | -- * 0/FIR_0 |
| 103 | -- * 0/FFT_0 |
| 104 | -- * 0/Window_0 |
| 105 | -- * 0/NullSrcSink_0 |
| 106 | -- * 0/LogPwr_0 |
| 107 | -- * 0/MovingAverage_0 |
| 108 | -- * 0/VectorIIR_0 |
| 109 | -- * 0/KeepOneInN_0 |
| 110 | -- * 0/fosphor_0 |
| 111 | -- * 0/FIFO_0 |
| 112 | }}} |