Robert McMahon
667880f82a
Fix RRH power scripts to handle serial-connected hubs and relay hosts.
...
This updates keep/all-off control to toggle local and remote Acroname ports correctly, explicitly powers the keep target back on, and aligns mapping helper toggles with BrainStem connect-by-serial behavior.
Made-with: Cursor
2026-04-23 19:19:45 -07:00
Robert McMahon
2034da7185
Add RRH mapping and power-control workflows for local and relay Acronames.
...
This updates the fabric builder and system scripts so operators can isolate ports, power local+remote RRHs, discover PCI chip candidates, and write radio-to-BDF mappings with documented commands.
Made-with: Cursor
2026-04-23 19:01:21 -07:00
Robert McMahon
42e2a39559
Add ClubHouse fabric JSON, power-only RRH script, and Wi-Fi PCI discovery
...
- Snapshot FabricDefinition for ClubHouse lab
- power_only_7915.py: isolate one RRH on Acroname power
- discover_wifi_pci.py: optional pcie_bdf hints from lspci
- Refresh system-test-scripts harness and tooling docs
Made-with: Cursor
2026-04-17 12:22:58 -07:00
Robert McMahon
376616808e
Add fabric/concentrator packages, FDIR, and lab documentation
...
Introduce fiwicontrol.fabric (definition, merge, builder CLI, fingerprint checks)
and fiwicontrol.concentrator for local workstation snapshots. Add system scripts
(fabric_realize, dump_concentrator, pcie_hotswap_harness, acroname discovery).
Document architecture (docs/architecture.md) and fault handling (docs/fdir.md);
expand fabric-builder, system-test-scripts, pcie-hotswap-setup, install, and
README with env vars, security boundaries, and intended-use limits.
Harden INI merge and serial resolution for pcie_bdf and patch_panel_ports;
bound patch-panel JSON reads; gate remote SSH tests behind FIWI_RUN_REMOTE_TESTS.
fabric_realize: exit codes, --realize-discovery-timeout, --patch-panel-json,
and [FiWi-FDIR] stderr lines. Fabric.realize supports discovery timeout and
FDIR logging; binding_cache_status logs fault paths.
Made-with: Cursor
2026-04-12 20:33:54 -07:00
Robert McMahon
db3cb7a92a
docs: align install and guides with package layout
...
- install.md: fiwicontrol subpackages, scripts/system vs pytest, test_package_layout imports
- power-control-and-inventory.md: related fronthaul, telemetry, radio packages
- flows.md, spc.md: See also points to README full layout
Made-with: Cursor
2026-04-12 12:29:28 -07:00
Robert McMahon
7b57568176
refactor: fronthaul, telemetry, radio packages; system harness dir
...
- Add fiwicontrol.fronthaul (FrontHaul link) and fiwicontrol.telemetry
(FrontHaulTelemetry + retimer/SFP structs; common placeholder).
- Move RadioHead to fiwicontrol.radio; lab is discovery + INI only.
- Rename FrontHaulSnapshot to FrontHaulTelemetry; FrontHaul.snapshot
to telemetry field.
- Add scripts/system/ for long-running hardware harnesses (vs pytest).
- README and pyproject describe the new layout; Power docstring path fix.
Made-with: Cursor
2026-04-12 12:27:51 -07:00
Robert McMahon
ed8020ecc3
docs(html): static Fi-Wi L4S spec for local browser viewing
...
- Replace Fi-Wi-L4S.php (session_start preamble) with Fi-Wi-L4S.html
- README: .html path and note to open file locally
Made-with: Cursor
2026-04-10 20:24:59 -07:00
Robert McMahon
a4b99f70d6
docs(readme): relate FiWiControl to Fi-Wi architecture spec
...
Add a section that connects concentrator/RRH/fronthaul/L4S narrative
from html/Fi-Wi-L4S.php to inventory, SSH, power, flows, and SPC tooling.
Made-with: Cursor
2026-04-10 20:05:53 -07:00
Robert McMahon
ad94e5d77b
docs: Umber concentrator deployment; add Fi-Wi L4S spec to repo
...
- README: where FiWiControl runs (Umber concentrator), link spec path
- README: repo tree includes html/Fi-Wi-L4S.php
- Add html/Fi-Wi-L4S.php (architecture / L4S specification page)
Made-with: Cursor
2026-04-10 20:01:09 -07:00
Robert McMahon
ab345cbae8
refactor(flows): rename async iperf entrypoints for clarity
...
Replace a-prefixed coroutines with descriptive names: run_traffic,
start_traffic, stop_traffic, plot_histograms, shutdown_async_generators,
analyze_ks_clusters. Sync helpers unchanged; update flows package docstring,
README, and docs/flows.md.
Made-with: Cursor
2026-04-10 19:47:51 -07:00
Robert McMahon
1bcefa93c8
docs: align SPC with code; document pip extras and API
...
- README: remove claim that SPC is not in-tree; add spc/flows install lines
- install.md: bring-up table mentions optional [flows] and [spc]
- docs/spc.md: match Hotelling keyword-only alpha, mean_/covariance_, MR span
- spc package docstring: lazy NumPy/SciPy loading clarified
Made-with: Cursor
2026-04-10 19:41:48 -07:00
Robert McMahon
6bf0535aa5
docs: add flows.md (iperf flows package)
...
Made-with: Cursor
2026-04-10 19:39:04 -07:00
Robert McMahon
958465baf6
feat(spc): ShewhartControlChart and HotellingT2 under fiwicontrol.spc
...
- Add spc/ package (not under flows): shewhart.py, hotelling.py, lazy __init__.
- Optional [spc] extra (numpy, scipy); extend layout test; add test_spc.py.
- README: fifth package bullet, tree includes flows/ and spc/.
Made-with: Cursor
2026-04-10 19:39:00 -07:00
Robert McMahon
2dfbecc3f8
build: flows optional extra; test imports fiwicontrol.flows
...
Made-with: Cursor
2026-04-10 19:33:40 -07:00
Robert McMahon
f683c1cbae
refactor(flows): Python 3.11 asyncio (timeout, gather, async entrypoints)
...
- Remove global/class event loop and invalid classmethod+property loop.
- Add arun/acommence/aplot/acease/acompute_ks_table; sync wrappers use asyncio.run
only when no loop is running (_run_coro).
- Replace ensure_future+wait+run_until_complete with asyncio.timeout+gather;
_sleep_logs for awaits; get_running_loop().subprocess_exec for SSH iperf.
- logging.warn -> warning; fix KS table async and bare except scope.
- Document async API in flows package docstring and README.
Made-with: Cursor
2026-04-10 19:33:30 -07:00
Robert McMahon
d7ec1950c7
docs(flows): attribution year 2026 (replace 2016–2023 range)
...
Made-with: Cursor
2026-04-10 19:17:51 -07:00
Robert McMahon
48d7618506
chore: remove Broadcom references; Umber Apache header on flows.py
...
Made-with: Cursor
2026-04-10 19:17:03 -07:00
Robert McMahon
8be4e66c85
license: Umber copyright header and complete Apache-2.0 appendix
...
Made-with: Cursor
2026-04-10 19:16:02 -07:00
Robert McMahon
faeb255a5e
docs(readme): clarify telemetry as 802.11-centric e.g. ESP32 data
...
Made-with: Cursor
2026-04-10 19:10:08 -07:00
Robert McMahon
b99157a2a8
docs(readme): Pi5 fleet as controllers and actuators (not lab rig controllers)
...
Made-with: Cursor
2026-04-10 19:09:24 -07:00
Robert McMahon
2db7d822cc
docs(readme): explicit Pi5+iperf2 and ESP32 802.11 telemetry sections
...
Made-with: Cursor
2026-04-10 19:07:35 -07:00
Robert McMahon
13c3e4cf0d
docs(readme): product angle on advanced telemetry and iperf 2
...
Made-with: Cursor
2026-04-10 19:05:35 -07:00
Robert McMahon
4b4c4ec8dd
docs(readme): Pi 5 fleet runs iperf 2 for synthetic traffic
...
Made-with: Cursor
2026-04-10 19:04:40 -07:00
Robert McMahon
de0be52a87
docs(readme): fleet of Raspberry Pi 5 lab controllers on roadmap
...
Made-with: Cursor
2026-04-10 19:04:27 -07:00
Robert McMahon
49d251e715
docs(readme): immediate roadmap for ESP32 telemetry and ush control
...
Made-with: Cursor
2026-04-10 19:03:44 -07:00
Robert McMahon
354657591d
docs(readme): near-term PCIe hot-swap focus; tie SPC to cycle testing
...
Made-with: Cursor
2026-04-10 19:02:15 -07:00
Robert McMahon
46b0ca4ffc
docs(readme): broaden tagline; add planned SPC (Hotelling, Shewhart) section
...
Made-with: Cursor
2026-04-10 18:57:15 -07:00
Robert McMahon
a7759317f1
docs: refresh pytest examples, SSH notes, and default.ini paths
...
- README: whole-suite example (27 passed, 1 skipped), single-test id example,
python3 -m pytest throughout, remote power -v transcript, clarify
FIWI_VERIFY_POWER_INI skip behavior, fix commands bootstrap wording.
- install.md: table step 5/6 wording (no section symbols), full-suite note,
python3 -m pytest in verify steps.
- node-control-asyncio-design.md: FIWI_SSH_CONFIG / conftest note, python3
in examples, replace obsolete --setup-remote checklist wording.
- power-control-and-inventory.md: default.ini in verify transcript and
live pytest INI; FIWI_SSH_CONFIG first for ssh_config.d noise; python3
pytest commands; checklist expected remote test result.
Made-with: Cursor
2026-04-10 18:51:17 -07:00
Robert McMahon
58489091c3
test: always run remote power integration tests (remove skipUnless)
...
Remote tests fail loudly when SSH or the rig is misconfigured; FIWI_SSH_CONFIG
defaults remain via conftest and unittest module setup.
Made-with: Cursor
2026-04-10 18:46:31 -07:00
Robert McMahon
14ba9783fe
fix(ssh): FIWI_SSH_CONFIG -F for tests; skip remote tests without pubkey auth
...
- node_control: honor FIWI_SSH_CONFIG (insert -F after ssh) so clients skip
broken /etc/ssh/ssh_config.d drop-ins; use same argv for clean/pkill helpers.
- tests/conftest.py: setdefault FIWI_SSH_CONFIG to tests/fixtures/ssh_config_minimal.
- Fixture: writable UserKnownHostsFile, BatchMode, accept-new.
- test_remote_power_dependencies: skipUnless passwordless root@FIWI_REMOTE_IP;
setdefault fixture path for unittest runs; FIWI_FORCE_REMOTE_TESTS to always run.
- docs/install.md: document FIWI_SSH_CONFIG for Fedora-style ssh_config.d errors.
Made-with: Cursor
2026-04-10 18:45:18 -07:00
Robert McMahon
4ad0b4b249
refactor: move lab discovery to fiwicontrol.lab; remote setup to commands
...
- Add fiwicontrol.lab package (discovery, inventory_config, inventory_verify)
with default lab INI configs/default.ini (FIWI_LAB_INI override).
- Move remote_setup to fiwicontrol.commands; add python -m fiwicontrol.commands.
- Power CLI keeps --discovery-json, --list-power-devices, --verify-inventory;
add -c/--config for inventory paths; drop --setup-remote (use commands module).
- Re-export lab symbols from fiwicontrol.power for compatibility.
- Update docs, scripts, and tests.
Made-with: Cursor
2026-04-10 18:39:43 -07:00
Robert McMahon
72048e8a62
docs: real verify-inventory OK transcript and ssh_config.d fix hint
...
Made-with: Cursor
2026-04-10 18:29:22 -07:00
Robert McMahon
c50aa5dced
docs: verify-inventory success example; align clubhouse.ini with Pi discovery
...
- Document successful vs MISMATCH output, exit codes, ssh_config stderr pitfall
- Pi inventory acroname multiset matches documented discovery (2x USBHub3p:8 + USBHub2x4:4)
- Update test_load_clubhouse_ini expectations
Made-with: Cursor
2026-04-10 18:27:58 -07:00
Robert McMahon
cf166350f5
docs: example discovery JSON for Pi (Acroname + sysfs Monsoon)
...
Made-with: Cursor
2026-04-10 18:26:19 -07:00
Robert McMahon
3244f68d67
Monsoon discovery via Linux sysfs; lab INI docs and --list-power-devices
...
- discovery: count Monsoon HVPM from /sys/bus/usb/devices when pyserial has no TTY
(matches lsusb 2ab9:0001; official stack uses libusb/HID not ttyACM)
- power CLI: --list-power-devices INI; inventory_verify dump helpers
- docs: lab INI reference, verification checklist, Monsoon note; README/install pointers
- tests: sysfs monsoon unit test, dump_inventory local-only test
Made-with: Cursor
2026-04-10 18:22:33 -07:00
Robert McMahon
c3df0145ea
Document bring-up; fix SSH as root; remote power setup tweaks
...
- docs/install.md: add Bring up systems checklist; generic clone URL; keep remote/PEP668 notes
- README and power design doc: point new operators at the checklist
- node_control: always use root@host for sshtype ssh (not bare host / local username)
- power: FIWI_REMOTE_PYTHON and --remote-python for setup-remote and discovery; tests honor env
- remote_setup: apply pip flags to both pip lines; optional remote python in script
Made-with: Cursor
2026-04-10 17:33:31 -07:00
Robert McMahon
be9cc4c7b5
major work
2026-04-10 17:14:15 -07:00
Robert McMahon
e5b5010aaa
Rename remote_nodes module to node_control
...
- Move remote_nodes.py to node_control.py; update commands __init__
- Rename design doc and test file; refresh README references
Made-with: Cursor
2026-04-10 16:26:36 -07:00
Robert McMahon
1f3803c75a
Use orchestrator package layout; docs and tests for remote_nodes
...
- Move src/fiwicontrol to src/orchestrator; imports orchestrator.*
- Remove REFACTOR-REVIEW.md; expand Running tests in design doc
- README: distribution fiwicontrol, link to test instructions
Made-with: Cursor
2026-04-10 11:37:34 -07:00
Robert McMahon
5874253359
Initial import: fiwicontrol package (commands + power scaffold)
...
Made-with: Cursor
2026-04-10 11:36:23 -07:00
rjmcmahon
0ffe139de7
Initial commit
2026-04-10 18:03:12 +00:00