{"library":"pylibiio","title":"pylibiio","description":"pylibiio is the Python binding for the libiio library, which provides a robust interface for interacting with Linux Industrial I/O (IIO) devices. These devices include a wide range of ADCs, DACs, accelerometers, gyros, and various sensors. The library facilitates both local communication on embedded Linux targets and remote communication over USB, Ethernet, or Serial, and is actively maintained by Analog Devices, Inc. The current stable version available on PyPI is 0.25, with frequent updates to the underlying C library.","language":"python","status":"active","last_verified":"Mon May 18","install":{"commands":["pip install pylibiio"],"cli":null},"imports":["import iio","import iio\nctx = iio.Context('local')","import iio\nctx = iio.Context('local')\ndev = ctx.find_device('some_device_name')"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import iio\nimport os\n\n# Try to connect to a local or remote IIO context\n# Use 'local' for devices on the same machine, or 'ip:address' for remote\n# For testing without hardware, you can often use 'dummy'\n# The URI can also be 'usb', 'serial', or an IP address (e.g., 'ip:192.168.1.100')\n# For robust examples, use an environment variable or default to local\nuri = os.environ.get('IIO_URI', 'local') \n\ntry:\n    ctx = iio.Context(uri)\n    print(f\"Connected to IIO context: {ctx.description}\")\n\n    # Scan for available devices\n    print(\"\\nAvailable IIO devices:\")\n    for dev in ctx.devices:\n        print(f\"  - Device: {dev.name} (ID: {dev.id})\")\n        for channel in dev.channels:\n            print(f\"    - Channel: {channel.name} (ID: {channel.id}, Output: {channel.output})\")\n            # Example: Try to read an attribute if it exists\n            try:\n                sample_rate = channel.attrs['sampling_frequency'].value\n                print(f\"      Sampling Frequency: {sample_rate}\")\n            except KeyError:\n                pass\n            except Exception as e:\n                print(f\"      Error reading attribute: {e}\")\n\n    # Example: Find a specific device (replace with a known device on your system)\n    # For a dummy device, you might use 'iio:device0'\n    target_device_name = os.environ.get('IIO_TARGET_DEVICE', 'iio:device0') \n    device = ctx.find_device(target_device_name)\n    if device:\n        print(f\"\\nFound target device: {device.name}\")\n        # Example: Set a device attribute (e.g., gain, if supported)\n        # try:\n        #     if 'gain_control' in device.attrs:\n        #         device.attrs['gain_control'].value = 'manual'\n        #         print(f\"Set gain_control on {device.name}\")\n        # except KeyError:\n        #     pass\n        # except Exception as e:\n        #     print(f\"Error setting device attribute: {e}\")\n\n        # Example: Enable a channel and create a buffer to read data\n        input_channel = device.find_channel('voltage0', is_output=False)\n        if input_channel:\n            input_channel.enabled = True\n            print(f\"Enabled channel: {input_channel.name}\")\n            buffer = iio.Buffer(device, 4096) # 4096 samples\n            print(f\"Created buffer for {device.name}\")\n            # Read data (replace with actual processing)\n            data = buffer.read()\n            print(f\"Read {len(data)} bytes from buffer.\")\n            buffer.close()\n        else:\n            print(f\"Channel 'voltage0' not found on {device.name}.\")\n    else:\n        print(f\"Target device '{target_device_name}' not found.\")\n\n    ctx.close()\n    print(\"\\nDisconnected from IIO context.\")\n\nexcept Exception as e:\n    print(f\"Failed to connect to IIO context or interact with devices: {e}\")\n    print(\"Ensure the libiio C library is installed and IIO devices are available/accessible.\")","lang":"python","description":"This quickstart demonstrates how to establish a connection to an IIO context (local or remote), scan for available devices and their channels, and perform a basic buffered read operation. It includes error handling for common connection issues.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-18","installed_version":"0.25","pypi_latest":"0.25","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":1.6,"avg_import_s":null,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"pylibiio","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"17.9M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"pylibiio","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":1.6,"import_time_s":null,"mem_mb":null,"disk_size":"18M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"pylibiio","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"19.7M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"pylibiio","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":1.6,"import_time_s":null,"mem_mb":null,"disk_size":"20M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"pylibiio","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"11.6M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"pylibiio","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":1.6,"import_time_s":null,"mem_mb":null,"disk_size":"12M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"pylibiio","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"11.3M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"pylibiio","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":1.5,"import_time_s":null,"mem_mb":null,"disk_size":"12M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"pylibiio","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"17.4M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"pylibiio","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":1.7,"import_time_s":null,"mem_mb":null,"disk_size":"18M"}]}}