KCC's Quizzes AQQ305 about a mutual exponentiation equation
1. Quote of the month: "A train station is where a train stops. A bus station is where a bus stops. I have a work station on my desk, so..." - unknown
2. Quiz AQQ305 about finding a mutual exponential equation
Good luck, and try to be among the
View All
September Monthly Blog Quiz! Read the blog, take the quiz, and you could win a gift card
Quiz: How Well Do You Know Adaptive Power Switching?
Is your I/O module overheating? The AD74416H's Adaptive Power Switching (APS) can cut heat dissipation by up to 40% — but how well do you really understand how it works?
Read the blog first: Cooling
View All
I'm running Ubuntu 20.04, GNUradio 3.8.1.0 and a PlutoSDR+ (AD9363), trying to get everything to play nice with eachother. My unit has 2 TX and RX, Ethernet and a better clock.
I can ping and change settings on the Pluto with OpenSSH. I unlocked the CPU and set the Pluto to 9361 2x2 mode. I installed GNUradio 3.8.1 with gr-iio from libiio and libad9361. I then made the pythonpath permanent and GNUradio sees both the iio modules directory and the programming blocks. But when I try to execute either flowgraph from this I get the following errors in GNUradio:
FMCOMMS block error:
Warning: failed to XInitThreads()
Traceback (most recent call last):
File "/home/puddle/GNUradio projects/Pluto.py", line 134, in <module>
main()
File "/home/puddle/GNUradio projects/Pluto.py", line 110, in main
tb = top_block_cls()
File "/home/puddle/GNUradio projects/Pluto.py", line 76, in __init__
self.iio_fmcomms2_source_0 = iio.fmcomms2_source_f32c('ip:pluto.local', 2400000000, 2084000, 20000000, True, True, 32768, True, True, True, 'manual', 64, 'manual', 64, 'A_BALANCED', '', True)
File "/usr/local/lib/python3/dist-packages/iio/iio_swig.py", line 199, in make
return _iio_swig.fmcomms2_source_f32c_make(*args, **kwargs)
RuntimeError: Channel not found
PlutoSDR block error:
Warning: failed to XInitThreads()
ERROR: Unable to find host: Temporary failure in name resolution
ERROR: Unable to find host: Name or service not known
Traceback (most recent call last):
File "/home/puddle/GNUradio projects/plutosdrsource.py", line 134, in <module>
main()
File "/home/puddle/GNUradio projects/plutosdrsource.py", line 110, in main
tb = top_block_cls()
File "/home/puddle/GNUradio projects/plutosdrsource.py", line 78, in __init__
self.iio_pluto_sink_0 = iio.pluto_sink('ip:local.pluto', 2400000000, 2084000, 20000000, 32768, False, 10.0, '', True)
File "/usr/local/lib/python3/dist-packages/iio/iio_pluto_sink_swig.py", line 92, in make
return _iio_pluto_sink_swig.pluto_sink_make(*args, **kwargs)
RuntimeError: Unable to create context
And I have no idea where to go from here. I just want throughput in and out to verify that it's working. Any help would be appreciated.
Hi Daniel,
Regarding the error when using Pluto Sink block, it looks like you set the URI to ip:local.pluto instead of ip:pluto.local.
File "/home/puddle/GNUradio projects/plutosdrsource.py", line 78, in __init__
self.iio_pluto_sink_0 = iio.pluto_sink('ip:local.pluto', 2400000000, 2084000, 20000000, 32768, False, 10.0, '', True)
- Srikanth
Regarding accessing 2Tx/2Rx Pluto using an FMCOMMS block, how did you enable the second Tx and Rx? Can you access the attributes for the second channel using iio_attr?
Hello Srikanth
That solved it, thank you. The flowgraph executes now and I can see a signal, but I still get 'Warning: failed to XInitThreads()' - does this matter?
Edit: nevermind.
About channels, I followed this and used:
#fw_setenv attr_name compatible
#fw_setenv attr_val 9361
#fw_setenv compatible ad9361
#fw_setenv mode 2r2t
#reboot
I poked around with the iio_attr but I'm not sure what it's telling me, lots of attributes and channels. Which iio_attr -command should I use?
The flowgraph executes now and I can see a signal, but I still get 'Warning: failed to XInitThreads()' - does this matter?
This is a GNU Radio issue and has to do with X forwarding - github.com/.../4030. It looks for Xlib.
Can you provide the output when you run 'iio_attr -c ad9361-phy' either on the board or from the host machine by providing it the ip/usb context of Pluto?
I will look into Xlib, thank you. I did this on the Pluto:
# iio_attr -c ad9361-phy
dev 'ad9361-phy', channel 'altvoltage0', id 'RX_LO' (output), found 8 channel-specific attributes
dev 'ad9361-phy', channel 'altvoltage1', id 'TX_LO' (output), found 8 channel-specific attributes
dev 'ad9361-phy', channel 'voltage0' (output), found 10 channel-specific attributes
dev 'ad9361-phy', channel 'voltage0' (input), found 15 channel-specific attributes
dev 'ad9361-phy', channel 'voltage 2' (output), found 8 channel-specific attributes
dev 'ad9361-phy', channel 'voltage 2' (input), found 13 channel-specific attributes
dev 'ad9361-phy', channel 'temp0' (input), found 1 channel-specific attributes
dev 'ad9361-phy', channel 'voltage3' (output), found 8 channel-specific attributes
dev 'ad9361-phy', channel 'out' (input), found 1 channel-specific attributes
I assume I would have to use the FMCOMMS blocks to use the extra channel? I corrected the test flowgraph with FMCOMMS blocks to local.pluto but it still gives me errors:
RROR: Unable to find host: Temporary failure in name resolution
ERROR: Unable to find host: Name or service not known
Traceback (most recent call last):
File "/home/puddle/GNUradio projects/Pluto.py", line 136, in <module>
main()
File "/home/puddle/GNUradio projects/Pluto.py", line 112, in main
tb = top_block_cls()
File "/home/puddle/GNUradio projects/Pluto.py", line 76, in __init__
self.iio_fmcomms2_source_0 = iio.fmcomms2_source_f32c('ip:local.pluto', 2400000000, 2084000, samp_rate, True, True, 32768, True, True, True, 'manual', 64, 'manual', 64, 'A_BALANCED', '', True)
File "/usr/local/lib/python3/dist-packages/iio/iio_swig.py", line 199, in make
return _iio_swig.fmcomms2_source_f32c_make(*args, **kwargs)
RuntimeError: Unable to create context
The output of 'iio_attr -c ad9361-phy' shows only one Rx and one Tx channels. So, it appears that the second Tx/Rx channels aren't enabled.
The URI needs to be ip:pluto.local and not ip:local.pluto. But, without the second Tx/Rx channels enabled, you will get "RuntimeError: Channel not found" error as seen in your original post.
When you run "iio_info -s", does it show that you have a Rev. C Pluto and not Rev. B?
It says Rev.C with Z7010 / AD9363.
I just tried setting the mode again and it reverts to 1r1t upon rebooting. Do you know how to make it permanent?
Edit: Making sure that the Pluto was currently in 2r2t mode, GNUradio still gave me the ''RuntimeError: Channel not found''.
Ok idk what happened lol, it needs to be pluto.local indeed.
I currently do not have a Rev. C Pluto. Someone else is looking into answering your question.