The ADI IIO Oscilloscope is a cross platform GUI application, which demonstrates how to interface different evaluation boards from within a Linux system. The application supports plotting of the captured data in four different modes (time domain, frequency domain, constellation and cross-correlation). The application also allows to view and modify several settings of the evaluation board's devices.
Latest releases (goto this page to download the file):
For building on the target, we recommend using the update scripts. This is a tried/proven method that does everything in a quick script.
To build on a host, do not use the script, you must:
adi_update_tools.shshell script, and can be copied/pasted to most Debian based distributions. For others - make sure they are installed, or the below steps will not work. If you are not sure how to do this - consult your distribution documentation. file: adi_update_tools.sh
> apt-get -y install libglib2.0-dev libgtk2.0-dev libgtkdatabox-dev libmatio-dev libfftw3-dev libxml2 libxml2-dev bison flex libavahi-common-dev libavahi-client-dev libcurl4-openssl-dev libjansson-dev cmake libaio-dev libserialport-dev
> git clone https://github.com/analogdevicesinc/iio-oscilloscope.git > cd iio-oscilloscope > git checkout origin/masterOr, download a zip, and uncompress it:
rgetz@pinky:~$ wget https://github.com/analogdevicesinc/iio-oscilloscope/archive/master.zip rgetz@pinky:~$ unzip master.zip rgetz@pinky:~/iio-oscilloscope$ cd iio-oscilloscope
make installof the libiio, the libiio install location needs to be set in your path ie: (PATH=/usr/lib:$PATH“) or else an error “Package libiio not found..” will occur.
rgetz@pinky:~/iio-oscilloscope$ mkdir build && cd build rgetz@pinky:~/iio-oscilloscope$ cmake ../ && make -j $(nproc) rgetz@pinky:~/iio-oscilloscope$ sudo make install
make install(sometimes I don't), you will need to make sure that the most recently built shared libraries can be found, by setting the LD_LIBRARY_PATH environmental variable.
rgetz@pinky:~/iio-oscilloscope$ export LD_LIBRARY_PATH=./otherwise you may get an error like this:
rgetz@pinky:~/iio-oscilloscope$ ./osc ./osc: error while loading shared libraries: libosc.so: cannot open shared object file: No such file or directoryOr, worse case, when you are debugging things, you will see your modified source code, but it will be running/executing the older shared shared object which was loaded (since it didn't find things in the library path).
For macOS install libiio and libad9361 from source or using pkg's on the associated release pages. If you are using the pkg's make the version used by libad9361 is the same as the release of libiio you download.
Then using brew install IIO-Scope:
brew install --HEAD tfcollins/homebrew-formulae/iio-oscilloscope
The application can run locally which means it runs on the same platform where your device is connected.
To start the IIO Oscilloscope open up the start menu of your system and search for “IIO Oscilloscope”. E.g. if you are using a Ubuntu Linux system move your mouse cursor to the left side of your screen and “Dash home” button and type “IIO Oscilloscope” into the search box.
The application can be used to connect to another platform that has a connected device in order to configure the device and read data from it. You can connect in 3 different ways:
This specifies any shell prompt running on the host or target - Run IIO Oscilloscope in remote mode
> export OSC_REMOTE=IP address of the remote platform (old) > export IIOD_REMOTE=IP address of the remote platform (new) > osc
The application can be used to connect to another platform that runs no-OS software: https://wiki.analog.com/resources/tools-software/no-os-software/iio
Each plugin (or tab) can be detached from the main window simply by clicking on the button placed on the right side of the name of the plugin. Close the detached window to attach the plugin back to the main window.
The Main Window is designed to display a configuration panel (plugin) for each device recognized by the system. Additional plugins will be loaded for device debugging and monitoring purposes such as:
The DMM Plugin: The Digital Multimeter continuously displays device specific data once the start button is activated.
Debug Plugin: Is a tool for device debugging. Since “normal” users should not be doing this, features on this tab may not work unless you have started the
osc application as root (try
sudo osc in a terminal).
There may be hardware specific plugins/tabs, specific to the platform you are running on. Here are a few:
Markers are used for plot data measurement in when looking in the frequency domain or cross correlations. To activate the markers right click on the plot and select from the marker menu the type of marker you want to enable. Make sure the capture process is running and the appropriate domain is selected in order to enable the markers properly. The following types of markers are available:
The enabling of a marker will display a set of 5 markers by default. You can add more markers by selecting Add Marker from the marker menu and remove some by selection Remove Maker.
Fixed markers are designed to have their position moved by the user. Once the fixed markers are visible on the plot right click on the marker symbol and while holding the right button pressed move the mouse to the desired location on the plot and release the right button.
To disable the markers select Markers Off from the marker menu.
Once the data is captured, it can be saved using one of the following formats:
Click on File→Save As to open the dialog needed to save the data.
The settings can be applied only in Time domain.
In time domain, it is possible to select a capture channel as the trigger source of the oscilloscope. To do so, right-click on the name of the device used for capture, and select Trigger settings. The pop-up window that will open will allow you to configure the channel used for the trigger, as well as the trigger level and edge.
Several waveforms are provided with the application for demonstration purposes, which can be loaded into different devices. However, these are generally not meant for transceiver characterization or demodulation. If you want to do such tasks, we would recommend creation of your own waveforms from tools such as MATLAB.
If you want to make your own plugin, please refer to the Internals page.