== Getting started with RFNoC X310 == [[TOC(Tutorials/k0SDR*)]] === Description === This tutorial is a guide for getting started with RFNoC using an USRP X310 on ORBIT grid. Before starting to experiment with RFNoC, here are a couple of useful presentations, write ups from Ettus Research, that one should go through. https://github.com/EttusResearch/uhd/wiki/RFNoC:-Getting-Started === Set up === * Make a reservation on the [https://www.orbit-lab.org/schedule/ Orbit Scheduler] for using the grid. * Load baseline-rfnoc-labtools.ndz on an ORBIT node with USRP X310. {{{ omf load -i baseline-rfnoc-labtools.ndz -t node18-20 }}} * Once imaging is done, turn the node on {{{ omf tell -a on -t node18-20 }}} * Wait for the node to turn on and log in {{{ ssh root@node18-20 }}} === Testing the installation === The image that was loaded, contains UHD rfnoc-devel branch installation as mentioned in the RFNoC getting started guide. * Run uhd_find_devices - you can see that the UHD version is shown as UHD_003.010.rfnoc-285-gb9765c42 {{{ root@node18-20:~# uhd_find_devices --args="addr=192.168.10.2" linux; GNU C++ version 4.8.2; Boost_105400; UHD_003.010.rfnoc-285-gb9765c42 -------------------------------------------------- -- UHD Device 0 -------------------------------------------------- Device Address: type: x300 addr: 192.168.10.2 fpga: HGS name: hakuna matata serial: F4FD2A product: X310 }}} * 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. {{{ root@node18-20:~# uhd_usrp_probe --args="addr=192.168.10.2" linux; GNU C++ version 4.8.2; Boost_105400; UHD_003.010.rfnoc-285-gb9765c42 -- X300 initialization sequence... -- Determining maximum frame size... 8000 bytes. -- Setup basic communication... ========================================================= Warning: Expected FPGA compatibility number 1000, but got 9: The FPGA image on your device is not compatible with this host code build. Download the appropriate FPGA images for this version of UHD. Please run: "/usr/local/lib/uhd/utils/uhd_images_downloader.py" Then burn a new image to the on-board flash storage of your USRP X3xx device using the image loader utility. Use this command: "/usr/local/bin/uhd_image_loader" --args="type=x300,addr=192.168.10.2" For more information, refer to the UHD manual: http://files.ettus.com/manual/page_usrp_x3x0.html#x3x0_flash========================================================= Error: RuntimeError: Expected firmware compatibility number 4.0, but got 3.0: The firmware build is not compatible with the host code build. Please run: "/usr/local/lib/uhd/utils/uhd_images_downloader.py" }}} * 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. When the jtag programmer is used, the FPGA image is lost on power cycling. {{{ root@node18-20:~/uhd/tools# ./usrp_x3xx_fpga_jtag_programmer.sh --fpga-path="/usr/local/share/uhd/images/usrp_x310_fpga_HGS.bit" ======================================= Copyright 2014 Ettus Research LLC JTAG Programming Tool ======================================= ==== Generating impact batch file 1eRfmtCb.impact.cmd... ==== Running impact -- loading /usr/local/share/uhd/images/usrp_x310_fpga_HGS.bit into the FPGA... }}} * 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. {{{ -- ========== Full list of RFNoC blocks: ============ -- * 0/Radio_0 -- * 0/Radio_1 -- * 0/AddSub_0 -- * 0/FIR_0 -- * 0/FFT_0 -- * 0/Window_0 -- * 0/NullSrcSink_0 -- * 0/LogPwr_0 -- * 0/MovingAverage_0 -- * 0/VectorIIR_0 -- * 0/KeepOneInN_0 -- * 0/fosphor_0 -- * 0/FIFO_0 }}}