arcam-fmj
A python library for speaking to Arcam receivers
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-fmjuv
uv add arcam-fmjpoetry
poetry add arcam-fmjInstalling 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
Tags
More Networking packages
h11 is a pure-Python HTTP/1.1 protocol…
permissive · top 100 on PyPI
psutilpsutil retrieves real-time information about…
permissive · top 1,000 on PyPI
pyOpenSSLpyOpenSSL wraps OpenSSL's SSL/TLS functionality…
permissive · top 1,000 on PyPI
uvloopuvloop is a drop-in replacement for Python's…
permissive · top 1,000 on PyPI
execnetexecnet lets you spawn and communicate with…
permissive · top 1,000 on PyPI
pyzmqPyZMQ provides Python bindings for ZeroMQ…
permissive · top 1,000 on PyPI
denonavrProvides async control and monitoring of Denon…
permissive · top 15,000 on PyPI
rxvrxv discovers and controls Yamaha AV receivers…
permissive · top 15,000 on PyPI
fjaraskupanControl Fjäråskupan kitchen fans over Bluetooth…
permissive · top 15,000 on PyPI
wiimwiim provides a Python API to discover,…
permissive · top 15,000 on PyPI
pyatvAn asyncio Python library for controlling Apple…
permissive · top 15,000 on PyPI
aioslimprotoAsync Python implementation of the SLIMProto…
permissive · top 15,000 on PyPI
libsoundtouchControl Bose Soundtouch devices over the…
permissive · top 15,000 on PyPI
python-songpalPython library for controlling Sony audio…
copyleft · top 15,000 on PyPI
idasen-haProvides a Home Assistant helper library for…
permissive · top 15,000 on PyPI
pyswitchbeeA Python library for controlling SwitchBee…
permissive · top 15,000 on PyPI