Search for a Raspberry Pi PA system and you mostly find forum threads: someone wiring a Pi to a relay board, gluing together a Python script and espeak, or standing up a whole PBX just to make a building talk. It works, but it’s a project you then have to maintain forever. Multilarm is the missing piece — the scheduling and control software that turns a bare Pi into a finished, offline public-address and paging system without you writing any of the glue.
Flash Raspberry Pi OS Lite, copy the Linux-ARM64 Multilarm build across, and run it. There’s no compiler step and no package soup — it’s a self-contained binary. The downloads page has the exact one-line install and the systemd unit that makes it start on boot and restart if it ever exits. To find which audio device is which, press Ctrl+O for the device table, plug a labelled dongle in, and read off its index.
This is the whole difference between a finished PA system and a pile of cron jobs. Times on the left, a folder of audio per slot on the right:
<MAConfig><RecurEveryDay>True</RecurEveryDay></MAConfig>
<MAConfig><DateAndTimeData>08:45|10:30|12:15|13:00|15:30</DateAndTimeData></MAConfig>
<MAConfig><AlarmPath>/home/pi/PA/OpenChime|/home/pi/PA/Break|/home/pi/PA/Announce</AlarmPath></MAConfig>
<MAConfig><AlarmIndexData>1|2|3|2|1</AlarmIndexData></MAConfig>
<MAConfig><AlarmFileFormat>mp3</AlarmFileFormat></MAConfig>
Each time maps through AlarmIndexData to a folder in AlarmPath. Because every slot is a folder, the chime can rotate or be swapped without touching the timetable. Edit the file and Multilarm hot-reloads in about a second — no restart. If you’re building this specifically for a school, the school bell write-up goes deeper on period schedules; for a factory, see shift bells on the shop floor.
The trick that lets a single Pi cover a corridor, a hall and a yard is MirrorDevices: one decode, one clock, every output in lock-step. Pin each USB dongle to a zone and list them:
<MAConfig><PlaybackDevice>1</PlaybackDevice></MAConfig>
<MAConfig><MirrorDevices>2|3|4</MirrorDevices></MAConfig>
No matrix amplifier, no networked speaker controllers — just dongles and a $35 board.
Two ways to talk to the building. For anything you can type, the built-in text-to-speech speaks it on demand — British and American neural voices, no internet, generated instantly. For your own voice, open the Web Remote in a phone browser on the same Wi-Fi, hit record, preview, and transmit out of every zone. Add the optional Cloud Relay and you can do the same from anywhere, with no ports opened on the building’s firewall.
espeak + GPIO script is fun for a weekend and a liability by next term. Multilarm gives you the scheduler, the multi-zone mixer, the TTS, the REST/MQTT triggers and the remote as one maintained binary — so the Pi stays a finished appliance, not an open project.
If the announcement should fire from something else — a door system, a BMS, a nurse-call, a button — the Pi exposes a token-protected HTTP trigger (POST /api/trigger/fire), an opt-in MQTT bridge, and outbound webhooks on every event. A wall button or another system can set the building talking without anyone at the keyboard.
MirrorDevices drives multiple speaker zones from one board, in sync.Free for personal, non-commercial use; a single-site licence covers a school, mosque or business. Get the Raspberry Pi build or see pricing.