Content-type: text/html; charset=UTF-8

# INTRO

Section: Misc. Reference Manual Pages (3LIBIIO)
Updated: 06 February 2026
Index Return to Main Contents

## NAME

libiio-0.26 - introduction to libiio, a library for interacting with the Linux IIO subsystem and devices

## SYNOPSIS

#include <iio.h>

cc file.c -liio

## OPTIONS

The define IIO_CHECK_REG will warn if return values are not checked. Most libiio functions, if/when a failure occurs will return a negative error number. this warning will ensure these error numbers are looked at. There is nothing more frustraining than calling a function, debugging some hardware, and then eventually realizing there was a typo in an attribute name. This option will force libraries users to at least capture the return value.

cc file.c -DIIO_CHECK_REG -liio

## DESCRIPTION

libiio is a library used to interface to the Linux Industrial Input/Output (IIO) Subsystem. The Linux IIO subsystem is intended to provide support for devices that in some sense are analog to digital or digital to analog converters (ADCs, DACs). This includes, but is not limited to ADCs, Accelerometers, Gyros, IMUs, Capacitance to Digital Converters (CDCs), Pressure Sensors, Color, Light and Proximity Sensors, Temperature Sensors, Magnetometers, DACs, DDS (Direct Digital Synthesis), PLLs (Phase Locked Loops), Variable/Programmable Gain Amplifiers (VGA, PGA), and RF transceivers. You can use libiio natively on an embedded Linux target (local mode), or use libiio to communicate remotely to that same target from a host Linux, Windows or MAC over USB, Ethernet or Serial.

## DATA TYPES

The library makes use of C structures and typedefs to promote portability, and is known to run on various GNU/Linux distributions, macOS, Windows, and mbed (via tiny-iiod). The main C structures are:

iio_scan_context
  The scanning context
iio_context_info
  The information related to a discovered context
iio_context
  Contains the representation of an IIO context
iio_device
  Represents a device in the IIO context
iio_channel
  Represents an input or output channel of a device
iio_buffer
  An input or output buffer, used to read or write samples
iio_data_format
  Contains the format of a data sample.

## LIST OF ROUTINES

The following routines are part of the library. Consult the Doxygen pages for details on their operation (in the SEE ALSO section).

Scan Functions for scanning available contexts

Function
  Description
iio_create_scan_context
  Create a scan context
iio_scan_context_destroy
  Destroy the given scan context
iio_scan_context_get_info_list
  Enumerate available contexts
iio_context_info_list_free
  Free a context info list
iio_context_info_get_description
  Get a description of a discovered context
iio_context_info_get_uri
  Get the URI of a discovered context
iio_create_scan_block
  Create a scan block
iio_scan_block_destroy
  Destroy the given scan block
iio_scan_block_scan
  Enumerate available contexts via scan block
iio_scan_block_get_info
  Get the iio_context_info for a particular context

TopLevel Top-level functions

Function
  Description
iio_library_get_version
  Get the version of the libiio library
iio_strerror
  Get a string description of an error code
iio_has_backend
  Check if the specified backend is available
iio_get_backends_count
  Get the number of available backends
iio_get_backend
  Retrieve the name of a given backend

Context Context

Function
  Description
iio_create_default_context
  Create a context from local or remote IIO devices
iio_create_local_context
  Create a context from local IIO devices (Linux only)
iio_create_xml_context
  Create a context from XML data in memory
iio_create_xml_context_mem
  Create a context from XML data in memory
iio_create_network_context
  Create a context from the network
iio_create_context_from_uri

iio_context_clone
  Duplicate a pre-existing IIO context
iio_context_destroy
  Destroy the given context
iio_context_get_version
  Get the version of the backend in use
iio_context_get_xml
  Obtain a XML representation of the given context
iio_context_get_name
  Get the name of the given context
iio_context_get_description
  Get a description of the given context
iio_context_get_attrs_count
  Get the number of context-specific attributes
iio_context_get_attr
  Retrieve the value of a context-specific attribute
iio_context_get_attr_value
  Retrieve the value of a context-specific attribute
iio_context_get_devices_count
  Enumerate the devices found in the given context
iio_context_get_device
  Get the device present at the given index
iio_context_find_device
  Try to find a device structure by its ID, label or name
iio_context_set_timeout
  Set a timeout for I/O operations

Device Device

Function
  Description
iio_device_get_context
  Retrieve a pointer to the iio_context structure
iio_device_get_id
  Get whether or not the device is a hardware monitoring device
iio_device_get_name
  Retrieve the device name
iio_device_get_label
  Retrieve the device label
iio_device_get_channels_count
  Enumerate the channels of the given device
iio_device_get_attrs_count
  Enumerate the device-specific attributes of the given device
iio_device_get_buffer_attrs_count
  Enumerate the buffer-specific attributes of the given device
iio_device_get_channel
  Get the channel present at the given index
iio_device_get_attr
  Get the device-specific attribute present at the given index
iio_device_get_buffer_attr
  Get the buffer-specific attribute present at the given index
iio_device_find_channel
  Try to find a channel structure by its name of ID
iio_device_find_attr
  Try to find a device-specific attribute by its name
iio_device_find_buffer_attr
  Try to find a buffer-specific attribute by its name
iio_device_attr_read
  Read the content of the given device-specific attribute
iio_device_attr_read_all
  Read the content of all device-specific attributes
iio_device_attr_read_bool
  Read the content of the given device-specific attribute
iio_device_attr_read_longlong
  Read the content of the given device-specific attribute
iio_device_attr_read_double
  Read the content of the given device-specific attribute
iio_device_attr_write
  Set the value of the given device-specific attribute
iio_device_attr_write_raw
  Set the value of the given device-specific attribute
iio_device_attr_write_all
  Set the values of all device-specific attributes
iio_device_attr_write_bool
  Set the value of the given device-specific attribute
iio_device_attr_write_longlong
  Set the value of the given device-specific attribute
iio_device_attr_write_double
  Set the value of the given device-specific attribute
iio_device_buffer_attr_read
  Read the content of the given buffer-specific attribute
iio_device_buffer_attr_read_all
  Read the content of all buffer-specific attributes
iio_device_buffer_attr_read_bool
  Read the content of the given buffer-specific attribute
iio_device_buffer_attr_read_longlong
  Read the content of the given buffer-specific attribute
iio_device_buffer_attr_read_double
  Read the content of the given buffer-specific attribute
iio_device_buffer_attr_write
  Set the value of the given buffer-specific attribute
iio_device_buffer_attr_write_raw
  Set the value of the given buffer-specific attribute
iio_device_buffer_attr_write_all
  Set the values of all buffer-specific attributes
iio_device_buffer_attr_write_bool
  Set the value of the given buffer-specific attribute
iio_device_buffer_attr_write_longlong
  Set the value of the given buffer-specific attribute
iio_device_buffer_attr_write_double
  Set the value of the given buffer-specific attribute
iio_device_set_data
  Associate a pointer to an iio_device structure
iio_device_get_data
  Retrieve a previously associated pointer of an iio_device structure
iio_device_get_trigger
  Retrieve the trigger of a given device
iio_device_set_trigger
  Associate a trigger to a given device
iio_device_is_trigger
  Return True if the given device is a trigger
iio_device_set_kernel_buffers_count
  Configure the number of kernel buffers for a device

Channel Channel

Function
  Description
iio_channel_get_device
  Retrieve a pointer to the iio_device structure
iio_channel_get_id
  Retrieve the channel ID
iio_channel_get_name
  Retrieve the channel name
iio_channel_is_output
  Return True if the given channel is an output channel
iio_channel_is_scan_element
  Return True if the given channel is a scan element
iio_channel_get_attrs_count
  Enumerate the channel-specific attributes of the given channel
iio_channel_get_attr
  Get the channel-specific attribute present at the given index
iio_channel_find_attr
  Try to find a channel-specific attribute by its name
iio_channel_attr_get_filename
  Retrieve the filename of an attribute
iio_channel_attr_read
  Read the content of the given channel-specific attribute
iio_channel_attr_read_all
  Read the content of all channel-specific attributes
iio_channel_attr_read_bool
  Read the content of the given channel-specific attribute
iio_channel_attr_read_longlong
  Read the content of the given channel-specific attribute
iio_channel_attr_read_double
  Read the content of the given channel-specific attribute
iio_channel_attr_write
  Set the value of the given channel-specific attribute
iio_channel_attr_write_raw
  Set the value of the given channel-specific attribute
iio_channel_attr_write_all
  Set the values of all channel-specific attributes
iio_channel_attr_write_bool
  Set the value of the given channel-specific attribute
iio_channel_attr_write_longlong
  Set the value of the given channel-specific attribute
iio_channel_attr_write_double
  Set the value of the given channel-specific attribute
iio_channel_enable
  Enable the given channel
iio_channel_disable
  Disable the given channel
iio_channel_is_enabled
  Returns True if the channel is enabled
iio_channel_read_raw
  Demultiplex the samples of a given channel
iio_channel_read
  Demultiplex and convert the samples of a given channel
iio_channel_write_raw
  Multiplex the samples of a given channel
iio_channel_write
  Convert and multiplex the samples of a given channel
iio_channel_set_data
  Associate a pointer to an iio_channel structure
iio_channel_get_data
  Get a pointer to a channel's data format structure
iio_channel_get_type
  Get the type of the given hwmon channel
iio_channel_get_modifier
  Get the modifier type of the given channel

Buffer Buffer

Function
  Description
iio_buffer_get_device
  Retrieve a pointer to the iio_device structure
iio_device_create_buffer
  Create an input or output buffer associated to the given device
iio_buffer_destroy
  Destroy the given buffer
iio_buffer_get_poll_fd
  Get a pollable file descriptor
iio_buffer_set_blocking_mode
  Make iio_buffer_refill() and iio_buffer_push() blocking or not
iio_buffer_refill
  Cancel all buffer operations
iio_buffer_push
  Cancel all buffer operations
iio_buffer_push_partial
  Send a given number of samples to the hardware
iio_buffer_cancel
  Cancel all buffer operations
iio_buffer_start
  Get the start address of the buffer
iio_buffer_first
  Find the first sample of a channel in a buffer
iio_buffer_step
  Get the step size between two samples of one channel
iio_buffer_end
  Get the address that follows the last sample in a buffer
iio_buffer_foreach_sample
  Call the supplied callback for each sample found in a buffer
iio_buffer_set_data
  Associate a pointer to an iio_buffer structure
iio_buffer_get_data
  Retrieve a previously associated pointer of an iio_buffer structure
iio_device_get_sample_size
  Get the current sample size
iio_channel_get_index
  Get the index of the given channel
iio_channel_get_data_format
  Get a pointer to a channel's data format structure
iio_channel_convert
  Convert the sample from host format to hardware format
iio_channel_convert_inverse
  Convert the sample from host format to hardware format
iio_device_get_debug_attrs_count
  Enumerate the debug attributes of the given device
iio_device_get_debug_attr
  Get the debug attribute present at the given index
iio_device_find_debug_attr
  Try to find a debug attribute by its name
iio_device_debug_attr_read
  Read the content of the given debug attribute
iio_device_debug_attr_read_all
  Read the content of all debug attributes
iio_device_debug_attr_write
  Set the value of the given debug attribute
iio_device_debug_attr_write_raw
  Set the value of the given debug attribute
iio_device_debug_attr_write_all
  Set the values of all debug attributes
iio_device_debug_attr_read_bool
  Read the content of the given debug attribute
iio_device_debug_attr_read_longlong
  Read the content of the given debug attribute
iio_device_debug_attr_read_double
  Read the content of the given debug attribute
iio_device_debug_attr_write_bool
  Set the value of the given debug attribute
iio_device_debug_attr_write_longlong
  Set the value of the given debug attribute
iio_device_debug_attr_write_double
  Set the value of the given debug attribute
iio_device_identify_filename
  Identify the channel or debug attribute corresponding to a filename
iio_device_reg_write
  Set the value of a hardware register
iio_device_reg_read
  Get the value of a hardware register

Hwmon Compatibility with hardware monitoring (hwmon) devices

## Index

NAME
SYNOPSIS
OPTIONS
DESCRIPTION
DATA TYPES
LIST OF ROUTINES

This document was created by man2html, using the manual pages.
Time: 20:11:42 GMT, February 06, 2026