Hardware · How-To

Turn a Raspberry Pi into a Scheduled PA System

Public-address, bells and paging from one board · 7 min read

A practical build guide — representative settings you can adapt, not an account of a specific site.

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.

What you get

The shopping list

Flash, install, point at speakers

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.

A schedule in one file

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.

One Pi, many zones

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.

Live announcements without a recording

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.

Why not a PBX or a Python script? A PBX (FreePBX/Asterisk on a Pi) is a heavy way to get overhead paging and brings a SIP stack you now own. A hand-rolled Python + 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.

Integrate with what you already have

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.

Takeaways

Free for personal, non-commercial use; a single-site licence covers a school, mosque or business. Get the Raspberry Pi build or see pricing.