Skip to main content

HDFury API Client

An asynchronous Python client for communicating with HDFury devices via their HTTP API. This lightweight library provides methods for fetching device information, configuration, and issuing control commands such as reboot, hotplug, and mode changes.

Features

  • Asynchronous communication using aiohttp
  • Fetch device information and configuration
  • Issue control commands (reboot, hotplug, relay, mute, etc.)
  • Built-in error handling for connection and parsing failures
  • Designed for easy integration into automation tools or async workflows

Requirements

  • Python 3.11+
  • aiohttp library

Usage Example

import asyncio
from hdfury import HDFuryAPI, HDFuryError

async def main():
    client = HDFuryAPI("192.168.1.100")  # Replace with your device IP

    try:
        info = await client.get_info()
        print("Device Info:", info)

        board = await client.get_board()
        print("Board Info:", board)

        config = await client.get_config()
        print("Configuration:", config)

        # Example command: reboot the device
        await client.issue_reboot()
        print("Reboot command sent!")

    except HDFuryError as err:
        print(f"Error communicating with HDFury device: {err}")

    finally:
        await client.close()

asyncio.run(main())

API Reference

Class: HDFuryAPI

Initialization

HDFuryAPI(host: str, session: aiohttp.ClientSession | None = None)
  • host – IP address or hostname of the HDFury device.
  • session (optional) – existing aiohttp.ClientSession to reuse.

Fetch Methods

Method Description
get_board() Get board information (/ssi/brdinfo.ssi)
get_info() Get general device info (/ssi/infopage.ssi)
get_config() Get configuration data (/ssi/confpage.ssi) and CEC data (if provided) (/ssi/cecpage.ssi)

Command Methods

Method Description
issue_reboot() Reboot the device
issue_hotplug() Trigger HDMI hotplug
set_operation_mode(mode) Set device operation mode
set_port_selection(tx0, tx1) Set HDMI input routing for TX0/TX1
set_auto_switch_inputs(state) Toggle auto input switching
set_htpc_mode_rx0(state) → set_htpc_mode_rx3(state) Enable/disable HTPC mode per input
set_mute_tx0_audio(state) → set_mute_tx1_audio(state) Mute/unmute TX audio
set_audio_unmute(value) Set SINK audio unmute delay (milliseconds)
set_earc_unmute(value) Set eARC audio unmute delay (milliseconds)
set_tx0_force_5v(state) → set_tx1_force_5v(state) Force +5V output on TX ports
set_oled(state) Enable/disable OLED display
set_oled_fade(value) Set OLED fade timeout (seconds)
set_ir_active(state) Enable/disable IR receiver
set_relay(state) Enable/disable relay state
set_cec(state) Enable/disable global CEC
set_cec_rx0(state) → set_cec_rx3(state) Enable/disable CEC per input
set_reboot_timer(value) Set reboot timer (hours)

Cleanup

await client.close()

Closes any open HTTP sessions.

Exception Handling

All exceptions inherit from HDFuryError.

Exception Description
HDFuryError Base exception for the HDFury client
HDFuryConnectionError Connection-related errors (timeouts, bad responses, etc.)
HDFuryParseError Raised when JSON decoding fails

Constants

OPERATION_MODES

Defined in const.py, this dictionary maps known operation mode identifiers to their human-readable descriptions.

from hdfury import OPERATION_MODES

for mode, description in OPERATION_MODES.items():
    print(f"{mode}: {description}")
Key Description
"0" Mode 0 - Splitter TX0/TX1 FRL5 VRR
"1" Mode 1 - Splitter TX0/TX1 UPSCALE FRL5
"2" Mode 2 - Matrix TMDS
"3" Mode 3 - Matrix FRL→TMDS
"4" Mode 4 - Matrix DOWNSCALE
"5" Mode 5 - Matrix RX0:FRL5 + RX1-3:TMDS

These can be used to display or interpret the current operating mode returned by the device.

TX0_INPUT_PORTS

Maps available TX0 input port IDs to human-readable labels.

from hdfury import TX0_INPUT_PORTS

print(TX0_INPUT_PORTS["1"])  # Output: Input 1
Key Description
"0" Input 0
"1" Input 1
"2" Input 2
"3" Input 3
"4" Copy TX1

TX1_INPUT_PORTS

Maps available TX1 input port IDs to human-readable labels.

from hdfury import TX1_INPUT_PORTS

print(TX1_INPUT_PORTS["3"])  # Output: Input 3
Key Description
"0" Input 0
"1" Input 1
"2" Input 2
"3" Input 3
"4" Copy TX0

License

MIT

Metadata

Release files for hdfury 1.6.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for hdfury 1.6.1
File Size Uploaded
hdfury-1.6.1.tar.gz 8.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for hdfury 1.6.1
File Interpreter ABI Platform
hdfury-1.6.1-py3-none-any.whl Python 3 none any Details

Total release size: 15.7 kB

Release files / hdfury-1.6.1.tar.gz

Download URL hdfury-1.6.1.tar.gz
Size 8.9 kB
Tags Source
SHA-256 checksum
How to use checksums
c47f8ef20b5a49d8780ecbf3eb642f05ef1e7abf55a6cff9e39d99141ea463b4
BLAKE2b-256 checksum
How to use checksums
515154119b36a55a0264335fbec1aa5475a568b7e0d9b8ce70bb99258931b282
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / hdfury-1.6.1-py3-none-any.whl

Download URL hdfury-1.6.1-py3-none-any.whl
Size 6.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
14e421e34ebcf26ed0e206f8142cdc193c68408c11f262454474cd2d1b1b2a40
BLAKE2b-256 checksum
How to use checksums
a51ba4db32a02bcd50ff2e952c005c72c5e558837e107bc574742db3da5a8d35
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.6.1 This release

2 release files

1.6.0

2 release files

1.5.0

2 release files

1.4.2

2 release files

1.4.1

2 release files

1.4.0

2 release files

1.3.1

2 release files

1.3.0

2 release files

1.2.0

2 release files

1.1.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page