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+
aiohttplibrary
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.ClientSessionto 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)
| File | Size | Uploaded | |
|---|---|---|---|
| hdfury-1.6.1.tar.gz | 8.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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 logRelease 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