Set up centralized PDU management for a Cyclades AlterPath PM10i (10
controllable AC outlets) connected to pfv-tsys1 via a Prolific USB-to-DB9
serial adapter. powermand is now listening on 0.0.0.0:10101, making the
PDU manageable over the network from any host on the tailnet.
Scripts (powerman/):
- discover.sh: gather USB adapter, powerman state, device definitions
- setup.sh: idempotent setup — udev rule (stable symlink by serial number),
powerman.conf with 10 outlet nodes, fix powermand dialout group, restart
service. Overridable via env vars for other hosts/PDU types
- test-pdu.sh: validate control by cycling outlet 10 off then on (8/8 pass)
- status.sh: quick PDU status check
Issues fixed during setup:
- Config pointed at /dev/ttyUSB0 but adapter is at /dev/ttyUSB1 (fixed
with udev symlink /dev/cyclades-pm10 pinned to adapter serial)
- powermand (user:powerman) lacked dialout group membership to open the
serial device (fixed with usermod + udev GROUP="dialout")
Validation: outlet 10 turned off (confirmed), turned on (confirmed), then
cycled. All 10 outlets currently ON and manageable.
TODO tracked for Friday: rename outlets from generic (outlet-1..10) to
match physical devices, and change PDU admin password from factory default.
💘 Generated with Crush
Assisted-by: Crush:glm-5.2
112 lines
3.3 KiB
Markdown
112 lines
3.3 KiB
Markdown
# Powerman PDU Management
|
|
|
|
Centralized power management for the Cyclades AlterPath PM10i PDU via
|
|
[Powerman](https://github.com/chaos/powerman), running on pfv-tsys1.
|
|
|
|
## Hardware
|
|
|
|
| Component | Details |
|
|
|-----------|---------|
|
|
| **PDU** | Cyclades AlterPath PM10i (10 controllable AC outlets) |
|
|
| **Firmware** | v1.9.0 (Aug 4, 2006) |
|
|
| **Connection** | USB-to-DB9 adapter (Prolific pl2303, serial BJAAb144J07) |
|
|
| **Host** | pfv-tsys1 (OptiPlex 9020, Proxmox) |
|
|
| **Serial** | 9600 baud, 8N1, raw mode |
|
|
| **Credentials** | Factory defaults: `admin` / `pm8` (in cyclades-pm10.dev) |
|
|
| **Network access** | powermand listens on `0.0.0.0:10101` |
|
|
|
|
## Device mapping
|
|
|
|
```
|
|
USB adapter (067b:23a3, serial BJAAb144J07)
|
|
└─ pl2303 driver → /dev/ttyUSB1
|
|
└─ udev symlink → /dev/cyclades-pm10 (stable across reboots)
|
|
└─ powermand reads/writes serial → Cyclades PM10i
|
|
└─ 10 outlets (factory default names: 1-10)
|
|
```
|
|
|
|
The udev rule (`/etc/udev/rules.d/99-cyclades-pdu.rules`) pins the adapter
|
|
by its USB serial number, so the symlink survives replugs and reboots.
|
|
|
|
## Scripts
|
|
|
|
All scripts run on the target host (pfv-tsys1) via `tests/remote.sh`:
|
|
|
|
```bash
|
|
# Setup (idempotent — safe to re-run):
|
|
PROX_HOST=pfv-tsys1 bash tests/remote.sh prox-file powerman/setup.sh
|
|
|
|
# Validate PDU control (cycles outlet 10 off → on):
|
|
PROX_HOST=pfv-tsys1 bash tests/remote.sh prox-file powerman/test-pdu.sh
|
|
|
|
# Status check:
|
|
PROX_HOST=pfv-tsys1 bash tests/remote.sh prox-file powerman/status.sh
|
|
```
|
|
|
|
### Customizing for other hosts/PDUs
|
|
|
|
The setup script accepts environment overrides:
|
|
|
|
```bash
|
|
PDU_SERIAL=XXXX PDU_VENDOR=067b PDU_OUTLETS=20 PDU_TYPE=pm20 \
|
|
PROX_HOST=other-host bash tests/remote.sh prox-file powerman/setup.sh
|
|
```
|
|
|
|
## Usage (daily operations)
|
|
|
|
From pfv-tsys1 (or any host with network access to port 10101):
|
|
|
|
```bash
|
|
# List all outlets
|
|
powerman -l
|
|
|
|
# Query status (all outlets)
|
|
powerman -q
|
|
|
|
# Turn outlet off
|
|
powerman -0 outlet-10
|
|
|
|
# Turn outlet on
|
|
powerman -1 outlet-10
|
|
|
|
# Cycle outlet (off → 4s delay → on)
|
|
powerman -c outlet-10
|
|
|
|
# Query a specific outlet
|
|
powerman -q outlet-10
|
|
```
|
|
|
|
### Remote access from other hosts
|
|
|
|
powermand listens on `0.0.0.0:10101`. From another tailnet host:
|
|
|
|
```bash
|
|
powerman --server-host pfv-tsys1 --server-port 10101 -q
|
|
```
|
|
|
|
Or set `POWERMAN_SERVER=pfv-tsys1:10101` in the environment.
|
|
|
|
## Configuration files on pfv-tsys1
|
|
|
|
| File | Purpose |
|
|
|------|---------|
|
|
| `/etc/udev/rules.d/99-cyclades-pdu.rules` | Stable symlink for USB-DB9 adapter |
|
|
| `/etc/powerman/powerman.conf` | Device definition + 10 outlet nodes |
|
|
| `/etc/powerman/cyclades-pm10.dev` | Cyclades PM10 protocol spec (shipped with powerman) |
|
|
|
|
## Validation results
|
|
|
|
2026-07-28: All 8 checks passed.
|
|
Outlet 10 turned OFF (confirmed), turned ON (confirmed), then cycled.
|
|
|
|
## TODO (Friday onsite)
|
|
|
|
- [ ] **Rename outlets** in `/etc/powerman/powerman.conf` to match the
|
|
physical devices plugged into each outlet (e.g., `node "tsys4-psu"
|
|
"cyclades-pm10" "3"`). Currently all outlets are generically named
|
|
`outlet-1` through `outlet-10`.
|
|
- [ ] **Change PDU admin password** from factory default (`pm8`) if
|
|
security-sensitive. Update `/etc/powerman/cyclades-pm10.dev` login
|
|
script to match.
|
|
- [ ] **Verify all 10 outlets** individually once device mapping is known.
|