+ Welcome to the libIIO
+ Thanks for your interest in the libIIO, a
+ C/C++ library that provides generic access to Industrial Input Output (IIO)
+ devices. IIO started as a Linux
+ kernel subsystem to support for devices that that included
+ analog-to-digital convertors (ADCs) and/or digital-to-analog convertors
+ (DACs). While the libIIO continues to provide an easy interface to the
+ Linux kernel IIO subsystem, it has also expanded beyond that, and is now
+ just as common to see this used inside an embedded system or hypervisor as
+ it is on a host PC.
+ It is portable: Using a single cross-platform
+ API, it provides access to IIO devices on Linux, macOS, Windows, etc across
+ local and remote (USB, Network, Serial) devices. The library is composed by
+ one high-level API, and several backends:
+
+ - the local backend, which interfaces the Linux kernel
+ through the sysfs virtual filesystem,
+ - the remote backend, which communicates to an
+ iiod server through a network, usb or serial (wired, USB
+ CDC, or
+ Bluetooth SPP) link. The iiod server can run on a:
+
+ - Linux host (an IIO
+ daemon is included part of libIIO), this would typically
+ communicate to a libIIO client over the network or USB; or
+
+ - a deeply embedded, resource constrained system (like Arduino)
+ managed separately as tiny-iiod; this
+ would typically communicate to a libIIO client over the network, or
+ serial.
+
+
+
+
+ It is entirely user-mode: No special privilege or elevation is required
+ for the application to communicate with a device. One of the most powerful
+ things about libiio is its Remote Procedure
+ Call style interface. Moving backends from USB to Networking to local
+ embedded does not require any code changes. The users of the libIIO do not
+ need to code any differently for the remote interaction, making it easy to
+ move from remote (debug on PC over Ethernet) to local (deployed on embedded
+ Linux).
+ What platforms are supported?
+ Any host running Linux, macOS, Windows, or OpenBSD/NetBSD, should be
+ trivial to get libIIO running on. If you are interested in porting to other
+ hosts that support either networking (socket interface), libusb or serial, it should be very
+ straightforward. Pull Requests are
+ always reviewed, and well written ones are normally accepted.
+ The local backend and Linux daemon can run on any embedded Linux based
+ system, from purpose built systems like PlutoSDR or ADALM2000 to Raspberry Pi or BeagleBoard to Jetson.
+ tiny-iiod
+ requires a modern C compiler and is known to work on a variety of non-Linux
+ frameworks including Mbed and FreeRTOS.
+ Sounds good! How do I get started?
+ If you are using Linux, chances are your distribution already includes
+ libIIO, so you probably just need to reference the iio.h
+ header in your source.
+ For other platforms, you are encouraged to use one of our release
+ builds. If if you want to use the very latest, you have the option to
+ use a nightly build or build from source. Please check the Downloads
+ menu.
+ If you prefer, you can also access the source directly from github.
+ Once you have secured your access to the library and its header, please
+ check the libIIO API or the libIIO examples.
+ Where is (insert my favourite language) support?
+ The mainline library is built in C, can be used in C++, and has built in
+ bindings for Python and C# (C-Sharp). Node.js and Rust are maintained
+ outside the main repo. If you are interested in creating more language
+ bindings, please reach out to the
+ developers by posting an issue on github.
+
+