Skip to main content

Prerequisites

Before you start, make sure you have:
  • Python 3.8 or later — PAI supports Python 3.8 through 3.14
  • pip — Python package installer
  • A Paradox panel — MG/SP/EVO series (EVO firmware must be below 7.50.000 for serial connections)
  • PC Password — A 4-digit hex password ([0-9a-f]). Find it in Babyware: right-click your panel → PropertiesPC Communication (BabyWare) tab
  • Your connection hardware — either a serial cable/USB adapter to the panel’s TTL 5V port, or an IP150 module on your network
Do not upgrade EVO firmware to version 7.50.000 or higher if you use a serial connection. Paradox introduced serial encryption in that version which permanently breaks PAI’s ability to communicate with the panel.

Steps

1

Install PAI

Install the paradox-alarm-interface package from PyPI:
pip install paradox-alarm-interface
This installs the pai-service command and all required dependencies, including paho-mqtt, pyserial-asyncio, and construct.
2

Create a configuration file

Create a file named pai.conf in your current directory. PAI configuration files are Python scripts — values are plain Python assignments.For a serial connection (direct cable or USB adapter):
pai.conf
# Connection
CONNECTION_TYPE = 'Serial'
SERIAL_PORT = '/dev/ttyUSB0'   # adjust to your port
SERIAL_BAUD = 9600             # 9600 for SP/MG; 38400 for EVO

# PC Password (4-digit hex, e.g. '0000')
PASSWORD = '0000'

# MQTT
MQTT_ENABLE = True
MQTT_HOST = '127.0.0.1'
MQTT_PORT = 1883
For an IP150 module (direct connection, firmware < 4.0 or ≥ 4.40.004):
pai.conf
# Connection
CONNECTION_TYPE = 'IP'
IP_CONNECTION_HOST = '192.168.1.100'  # IP150 address on your network
IP_CONNECTION_PORT = 10000
IP_CONNECTION_PASSWORD = 'paradox'    # default IP module password

# PC Password (4-digit hex)
PASSWORD = '0000'

# MQTT
MQTT_ENABLE = True
MQTT_HOST = '127.0.0.1'
MQTT_PORT = 1883
PAI searches for pai.conf in the current directory first, then ~/.local/etc/pai.conf, /etc/pai/pai.conf, and /usr/local/etc/pai/pai.conf. See Installation for the full search order.
3

Run pai-service

Start PAI with the pai-service command:
pai-service
To use a config file in a non-default location:
pai-service --config /path/to/pai.conf
You can also set the PAI_CONFIG_FILE environment variable:
PAI_CONFIG_FILE=/path/to/pai.conf pai-service
4

Verify the connection

On a successful connection, you will see output similar to this in your terminal:
2024-01-15 10:23:01 - INFO     - PAI - Starting Paradox Alarm Interface 2.x.x
2024-01-15 10:23:01 - INFO     - PAI - Config loaded from /home/user/pai.conf
2024-01-15 10:23:01 - INFO     - PAI - Console Log level set to 20
2024-01-15 10:23:01 - INFO     - PAI - Starting...
If PAI cannot reach the panel it will log an error and retry automatically with an increasing back-off delay up to 30 seconds between attempts.
Enable more verbose output by adding LOGGING_LEVEL_CONSOLE = 10 (DEBUG) to your pai.conf while troubleshooting. This will print raw packet data and decoded messages.

Next steps

Connection methods

Detailed serial and IP150 connection setup, including USB adapters, baud rates, and SWAN cloud connection.

MQTT integration

Full MQTT topic hierarchy, partition control, zone states, and output commands.

Home Assistant

Auto-discovery setup and push notification configuration for Home Assistant.

Installation options

Docker, from-source, and optional extras (Signal, Pushbullet, YAML config).

Build docs developers (and LLMs) love