skillfed

arcam-fmj

A python library for speaking to Arcam receivers

arcam-fmj v2.1.1 74.8K downloads/30d#14,783 on PyPI12
Permissive license MIT Active released

What it is and what it does

arcam-fmj is an async Python library for controlling Arcam FMJ audio receivers and compatible processors (JBL, AudioControl) over a network connection. It was built primarily for Home Assistant integration but works as a standalone library. The package provides both a programmatic API (using aiohttp for async network communication) and a command-line utility for direct device control.

The library handles the low-level protocol for setting receiver state—volume, source selection, and other parameters—across network zones. It depends on aiohttp for async HTTP requests, attrs for data structures, and defusedxml for safe XML parsing. The code is actively maintained, requires Python 3.11 or later, and carries an MIT license with no known security vulnerabilities.

Use it for:

  • Integrate Arcam FMJ receiver control into Home Assistant automation workflows.
  • Build custom audio system dashboards that adjust volume and source selection over the network.
  • Script one-time or scheduled receiver configuration changes via the CLI utility.
  • Monitor and control multi-zone audio setups programmatically in async applications.

Worth the install?

AI-flagged interpretation of the facts on this page — verify before relying

Provides async network control of Arcam FMJ receivers and compatible audio processors (JBL, AudioControl) over IP, with both library and CLI interfaces.

Yes, if you own an Arcam FMJ receiver or compatible processor and need network control. Low install friction, active maintenance, permissive license, and no known vulnerabilities make it a safe choice. The async design fits well into Home Assistant and other event-driven systems. Not relevant for non-Arcam audio hardware.

Install

arcam-fmj on PyPI

pip

pip install arcam-fmj

uv

uv add arcam-fmj

poetry

poetry add arcam-fmj

Installing arcam-fmj

Before you install

Low friction: pure Python wheel with three lightweight async dependencies (aiohttp, attrs, defusedxml). Active maintenance with recent commits; last release 134 days ago.

License in practice

MIT license permits unrestricted use, modification, and distribution with minimal attribution requirement.

Quickstart

import asyncio
from arcam_fmj import Client, ClientContext, State, SourceCodes

async def run():
    client = Client('192.168.0.2', '50000')
    async with ClientContext(client):
        state = State(client, 1)
        await state.set_volume(50)
        await state.set_source(SourceCodes.PVR)

asyncio.run(run())

Requires Python 3.11 or later; target Arcam device must be reachable on the specified host and port.

Verify before relying

  • Whether JBL and AudioControl processor support is feature-complete or limited to a subset of operations.
  • Whether the CLI utility (arcam-fmj) requires additional system dependencies beyond the Python runtime.

Package facts

License MIT (permissive)
Python support supports the current Python release (>=3.11)
Install friction low — pure-Python wheel
Runtime dependencies 3 — aiohttp, attrs, defusedxml
Maintenance actively maintained — 134 days since the last release
Last repo commit
First released
Downloads 74,847/month — #14,783 on PyPI (30-day window, as of 2026-08-14)
Known vulnerabilities none known (OSV.dev, checked 2026-08-14)

Evidence: arcam_fmj-2.1.1-py3-none-any.whl

Development Status :: 4 - BetaEnvironment :: ConsoleEnvironment :: PluginsFramework :: AsyncIO

Tags

arcam receiver controlaudio processor network controlasync home automation audioFMJ receiver IP controlnetwork audio device control
audio-controlhome-automationasync-io

More Networking packages