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

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hdfury-1.6.1.tar.gz (8.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hdfury-1.6.1-py3-none-any.whl (6.8 kB view details)

Uploaded Python 3

File details

Details for the file hdfury-1.6.1.tar.gz.

File metadata

  • Download URL: hdfury-1.6.1.tar.gz
  • Upload date:
  • Size: 8.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for hdfury-1.6.1.tar.gz
Algorithm Hash digest
SHA256 c47f8ef20b5a49d8780ecbf3eb642f05ef1e7abf55a6cff9e39d99141ea463b4
MD5 2dfda8d237e3f00ffc1adb3210790ddf
BLAKE2b-256 515154119b36a55a0264335fbec1aa5475a568b7e0d9b8ce70bb99258931b282

See more details on using hashes here.

Provenance

The following attestation bundles were made for hdfury-1.6.1.tar.gz:

Publisher: publish.yml on glenndehaan/python-hdfury

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file hdfury-1.6.1-py3-none-any.whl.

File metadata

  • Download URL: hdfury-1.6.1-py3-none-any.whl
  • Upload date:
  • Size: 6.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for hdfury-1.6.1-py3-none-any.whl
Algorithm Hash digest
SHA256 14e421e34ebcf26ed0e206f8142cdc193c68408c11f262454474cd2d1b1b2a40
MD5 df0988b4281ae7c41321264c5015870e
BLAKE2b-256 a51ba4db32a02bcd50ff2e952c005c72c5e558837e107bc574742db3da5a8d35

See more details on using hashes here.

Provenance

The following attestation bundles were made for hdfury-1.6.1-py3-none-any.whl:

Publisher: publish.yml on glenndehaan/python-hdfury

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

1.6.1 This release

2 files

1.6.0

2 files

1.5.0

2 files

1.4.2

2 files

1.4.1

2 files

1.4.0

2 files

1.3.1

2 files

1.3.0

2 files

1.2.0

2 files

1.1.1

2 files

1.0.0

2 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