--- id: arcam-fmj version: "2.1.1" license: MIT license_treatment: permissive maintenance: active --- # arcam-fmj — A python library for speaking to Arcam receivers License: permissive · Maintenance: active · Downloads: 74.8K/mo ## 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 above — 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 pip install arcam-fmj uv add arcam-fmj 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_current - Install friction: low - Maintenance: active - Downloads: 74.8K/month (top 15,000 on PyPI) - Known vulnerabilities: none known ## Tags arcam receiver control, audio processor network control, async home automation audio, FMJ receiver IP control, network audio device control, audio-control, home-automation, async-io [View on SkillFed](https://skillfed.io/packages/arcam-fmj) · [View on PyPI](https://pypi.org/project/arcam-fmj/)