I'm running gnuradio on my PC and trying to create a gnuradio grc which can send/receive data from a adrv9009 on a zcu102 (running the analog's latest 2018 image) but can't seem to find the appropriate source or sink block. I installed the latest gnuradio (from their repo) and gr-iio (from analog's) but only see fmcommsX blocks and a generic iio_device block. None of which seem to recognize the adrv9009. I can use iio-oscilloscope with this setup without any issue.
How do I use the adrv9009 with gnuradio, either remotely from a PC or locally on the zcu102 soc?
There are no device specific blocks for ADRV9009. You can use the IIO Devices blocks to build one if you want. The device specific blocks are just instantiations of that one.
Be aware that continuous streaming isn't really possible due to the default data rate of the ADRV9009. Remotely it far exceeds gigabit ethernet.
Great, are there any examples of building a device block with the generic iio blocks? I tried to look through the gr-iio code for an example but didn't see any. Also, I can't "open heir" on the fmcommsX blocks.
Here is an example for AD9371: https://gist.github.com/tfcollins/ac10e4ebb57c76f1c27e737b4b9d1120
Changing the part number in the attributes should just work since the drivers are near identical.
The blocks are not GRC hierarchical, they are inherited in C++: https://github.com/analogdevicesinc/gr-iio/blob/e9d12b559c3efa085304fffba4a4310bb1297367/lib/fmcomms2_source_impl.cc#L135
Thanks travis. With this info I was able to create a GRC and use it to set hardwaregain and the LO frequency. Interestingly, I had to set the LO frequency in the iio-source block's parameters ([ "out_altvoltage0_TRX_LO_frequency=" + lo_freq]) and hardware gain in an iio-attribute block.
Glad to hear things worked.
Have you achieve to set a slider that changes the LO freq while the GRC is running?
I mean, instead of set a fixed parameter like 'lo_freq=2000000000' use, for example, a QT GUI Range.