Cross-platform Crestron processor provisioning console
Project description
Crestron Processor Setup
Cross-platform interactive console for Crestron processor provisioning. Discovers devices on the LAN, creates accounts, configures settings, and manages firmware — all from a terminal menu.
Features
- Device Discovery — CIP protocol broadcast (UDP 41794) finds Crestron processors on the local network, with first-boot detection
- Interactive Console — Arrow-key menus, checkbox device selection, progress bars
- Cross-Platform — Python + paramiko (works on macOS, Linux, and Windows — no
expectdependency) - Firmware Management — Download firmware from configurable URLs and upload to processors
- 5-Phase Provisioning:
- Account Creation — Detects first-boot state; creates admin account or verifies existing credentials
- Public Key Upload — SFTP
.pubkey to/user/ - Configuration — Timezone, NTP, web ports, login lockout policy, FIPS mode
- Firmware Upload — Version comparison; uploads
.pufto/firmware/only if newer - Reboot — Sends
REBOOTand polls until back online
Requirements
- Python 3.10+
- Root/admin privileges for device discovery (UDP broadcast)
Installation
python3 -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e .
Usage
# Launch the interactive console
python -m crestron_setup
# Discovery requires elevated privileges
sudo .venv/bin/python -m crestron_setup
The console presents a main menu with options to discover devices, set up a device by IP, download firmware, or edit settings.
Configuration
Settings are stored in ~/.config/crestron-setup/config.yaml (macOS/Linux) or %APPDATA%\crestron-setup\config.yaml (Windows). A local config.yaml in the working directory takes priority.
Copy config.example.yaml to get started. Key settings:
| Setting | Default | Description |
|---|---|---|
timezone |
33 (GMT Standard Time) |
Crestron timezone ID |
ntp_server |
pool.ntp.org |
NTP server address |
pubkey_file |
~/.ssh/id_rsa.pub |
SSH public key to upload |
firmware_dir |
~/Sync/Crestron Firmware |
Local firmware directory (fallback) |
web_port |
8080 |
Web server port |
secure_web_port |
8443 |
Secure web server port |
firmware_urls |
(empty) | Per-model firmware download URLs |
Files
| Path | Purpose |
|---|---|
crestron_setup/ |
Python package — CLI, discovery, SSH, provisioning, firmware |
config.example.yaml |
Template configuration file |
setup_processor.sh |
Legacy bash script (macOS only, requires expect) |
crestron_command_reference.md |
CLI command reference (414 commands) from a live CP4 |
example commands.txt |
Reference log of a manual setup session |
Legacy Bash Script
The original setup_processor.sh is still included for reference. It requires macOS with expect and takes a single hostname argument:
./setup_processor.sh <hostname-or-ip>
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file crestron_setup-0.0.0.tar.gz.
File metadata
- Download URL: crestron_setup-0.0.0.tar.gz
- Upload date:
- Size: 81.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
156749ad3d02ed883d55938507c6aa37dda65c0392c3d78d5889b951cc65c2f8
|
|
| MD5 |
f75a7f6713a55004b5adf86ff0ac6923
|
|
| BLAKE2b-256 |
82eb01d8385da9092c68be4a44ac900a445aed37a1ce2ece7668779558ccbb0c
|
Provenance
The following attestation bundles were made for crestron_setup-0.0.0.tar.gz:
Publisher:
release.yml on mikejobson/Crestron-Processor-Setup
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
crestron_setup-0.0.0.tar.gz -
Subject digest:
156749ad3d02ed883d55938507c6aa37dda65c0392c3d78d5889b951cc65c2f8 - Sigstore transparency entry: 1484786381
- Sigstore integration time:
-
Permalink:
mikejobson/Crestron-Processor-Setup@5d68cdb21b73c7ddd6d07a3616d383867f2379e1 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/mikejobson
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@5d68cdb21b73c7ddd6d07a3616d383867f2379e1 -
Trigger Event:
push
-
Statement type:
File details
Details for the file crestron_setup-0.0.0-py3-none-any.whl.
File metadata
- Download URL: crestron_setup-0.0.0-py3-none-any.whl
- Upload date:
- Size: 27.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9548f1b7a38060fb320f66f5c2830b992da63459c10087594412d824769ad0ea
|
|
| MD5 |
d9e24c7788121032a73e5bc6598c148d
|
|
| BLAKE2b-256 |
0ae2d9e25612d2303e75aa2e0426146813d0be2a79217346a4ff2eb97c52c370
|
Provenance
The following attestation bundles were made for crestron_setup-0.0.0-py3-none-any.whl:
Publisher:
release.yml on mikejobson/Crestron-Processor-Setup
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
crestron_setup-0.0.0-py3-none-any.whl -
Subject digest:
9548f1b7a38060fb320f66f5c2830b992da63459c10087594412d824769ad0ea - Sigstore transparency entry: 1484786414
- Sigstore integration time:
-
Permalink:
mikejobson/Crestron-Processor-Setup@5d68cdb21b73c7ddd6d07a3616d383867f2379e1 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/mikejobson
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@5d68cdb21b73c7ddd6d07a3616d383867f2379e1 -
Trigger Event:
push
-
Statement type: