analogdevicesinc / pyadi-iio

Python interfaces for ADI hardware with IIO drivers (aka peyote)

Home Page:https://analogdevicesinc.github.io/pyadi-iio

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

AttributeError: 'Channel' object has no attribute 'data_format'

777arc opened this issue · comments

Using the Pluto seems to be broken as of a recent commit, possibly this one b1e6daf

import adi
sdr = adi.Pluto('ip:192.168.2.1')
Traceback (most recent call last):
File "", line 1, in
File "/usr/local/lib/python3.8/dist-packages/pyadi_iio-0.0.14-py3.8.egg/adi/rx_tx.py", line 831, in init
File "/usr/local/lib/python3.8/dist-packages/pyadi_iio-0.0.14-py3.8.egg/adi/rx_tx.py", line 767, in init
File "/usr/local/lib/python3.8/dist-packages/pyadi_iio-0.0.14-py3.8.egg/adi/rx_tx.py", line 112, in init
File "/usr/local/lib/python3.8/dist-packages/pyadi_iio-0.0.14-py3.8.egg/adi/rx_tx.py", line 73, in _check_type_conversion
File "/usr/local/lib/python3.8/dist-packages/pyadi_iio-0.0.14-py3.8.egg/adi/rx_tx.py", line 63, in _needs_type_conversion
AttributeError: 'Channel' object has no attribute 'data_format'

What versions of libiio, pylibiio, and Pluto firmware are you using?

libiio v0.23
libad9361-iio and pyadi-iio off master as of yesterday, not sure about the Pluto firmware sorry

and swapping to v0.0.10 of pyadi-iio fixed it (chose v0.0.10 arbitrarily, that wasn't the most recent version that fixed it)

The error is not repeatable in our test system.

Can you provide the output of this code:

import iio

ctx = iio.Context('ip:192.168.2.1')

for dev in ctx.devices:
	for chan in dev.channels:
		print('--------')
		print(chan.id, dir(chan))
-----------------
altvoltage0 ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_attrs', '_channel', '_id', '_name', '_output', '_scan_element', 'attrs', 'enabled', 'id', 'name', 'output', 'read', 'scan_element', 'write']
-----------------
altvoltage1 ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_attrs', '_channel', '_id', '_name', '_output', '_scan_element', 'attrs', 'enabled', 'id', 'name', 'output', 'read', 'scan_element', 'write']
-----------------
out ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_attrs', '_channel', '_id', '_name', '_output', '_scan_element', 'attrs', 'enabled', 'id', 'name', 'output', 'read', 'scan_element', 'write']
-----------------
temp0 ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_attrs', '_channel', '_id', '_name', '_output', '_scan_element', 'attrs', 'enabled', 'id', 'name', 'output', 'read', 'scan_element', 'write']
-----------------
voltage0 ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_attrs', '_channel', '_id', '_name', '_output', '_scan_element', 'attrs', 'enabled', 'id', 'name', 'output', 'read', 'scan_element', 'write']
-----------------
voltage0 ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_attrs', '_channel', '_id', '_name', '_output', '_scan_element', 'attrs', 'enabled', 'id', 'name', 'output', 'read', 'scan_element', 'write']
-----------------
voltage2 ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_attrs', '_channel', '_id', '_name', '_output', '_scan_element', 'attrs', 'enabled', 'id', 'name', 'output', 'read', 'scan_element', 'write']
-----------------
voltage2 ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_attrs', '_channel', '_id', '_name', '_output', '_scan_element', 'attrs', 'enabled', 'id', 'name', 'output', 'read', 'scan_element', 'write']
-----------------
voltage3 ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_attrs', '_channel', '_id', '_name', '_output', '_scan_element', 'attrs', 'enabled', 'id', 'name', 'output', 'read', 'scan_element', 'write']
-----------------
temp0 ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_attrs', '_channel', '_id', '_name', '_output', '_scan_element', 'attrs', 'enabled', 'id', 'name', 'output', 'read', 'scan_element', 'write']
-----------------
voltage0 ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_attrs', '_channel', '_id', '_name', '_output', '_scan_element', 'attrs', 'enabled', 'id', 'name', 'output', 'read', 'scan_element', 'write']
-----------------
voltage1 ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_attrs', '_channel', '_id', '_name', '_output', '_scan_element', 'attrs', 'enabled', 'id', 'name', 'output', 'read', 'scan_element', 'write']
-----------------
voltage2 ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_attrs', '_channel', '_id', '_name', '_output', '_scan_element', 'attrs', 'enabled', 'id', 'name', 'output', 'read', 'scan_element', 'write']
-----------------
voltage3 ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_attrs', '_channel', '_id', '_name', '_output', '_scan_element', 'attrs', 'enabled', 'id', 'name', 'output', 'read', 'scan_element', 'write']
-----------------
voltage4 ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_attrs', '_channel', '_id', '_name', '_output', '_scan_element', 'attrs', 'enabled', 'id', 'name', 'output', 'read', 'scan_element', 'write']
-----------------
voltage5 ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_attrs', '_channel', '_id', '_name', '_output', '_scan_element', 'attrs', 'enabled', 'id', 'name', 'output', 'read', 'scan_element', 'write']
-----------------
voltage6 ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_attrs', '_channel', '_id', '_name', '_output', '_scan_element', 'attrs', 'enabled', 'id', 'name', 'output', 'read', 'scan_element', 'write']
-----------------
voltage7 ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_attrs', '_channel', '_id', '_name', '_output', '_scan_element', 'attrs', 'enabled', 'id', 'name', 'output', 'read', 'scan_element', 'write']
-----------------
voltage8 ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_attrs', '_channel', '_id', '_name', '_output', '_scan_element', 'attrs', 'enabled', 'id', 'name', 'output', 'read', 'scan_element', 'write']
-----------------
altvoltage0 ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_attrs', '_channel', '_id', '_name', '_output', '_scan_element', 'attrs', 'enabled', 'id', 'name', 'output', 'read', 'scan_element', 'write']
-----------------
altvoltage1 ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_attrs', '_channel', '_id', '_name', '_output', '_scan_element', 'attrs', 'enabled', 'id', 'name', 'output', 'read', 'scan_element', 'write']
-----------------
altvoltage2 ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_attrs', '_channel', '_id', '_name', '_output', '_scan_element', 'attrs', 'enabled', 'id', 'name', 'output', 'read', 'scan_element', 'write']
-----------------
altvoltage3 ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_attrs', '_channel', '_id', '_name', '_output', '_scan_element', 'attrs', 'enabled', 'id', 'name', 'output', 'read', 'scan_element', 'write']
-----------------
voltage0 ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_attrs', '_channel', '_id', '_name', '_output', '_scan_element', 'attrs', 'enabled', 'id', 'name', 'output', 'read', 'scan_element', 'write']
-----------------
voltage1 ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_attrs', '_channel', '_id', '_name', '_output', '_scan_element', 'attrs', 'enabled', 'id', 'name', 'output', 'read', 'scan_element', 'write']
-----------------
voltage0 ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_attrs', '_channel', '_id', '_name', '_output', '_scan_element', 'attrs', 'enabled', 'id', 'name', 'output', 'read', 'scan_element', 'write']
-----------------
voltage1 ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_attrs', '_channel', '_id', '_name', '_output', '_scan_element', 'attrs', 'enabled', 'id', 'name', 'output', 'read', 'scan_element', 'write']

It looks like you have very old python bindings. Can you create a virtualenv and just install pyadi-iio through pip so it grabs the correct bindings?

'''
virtualenv venv
source venv/bin/activate
pip install pyadi-iio==0.0.13
...
'''

Worked, ty!!!