Files
pi-pm3/TEST_RESULTS_2026-03-03_v2.md
michael a9acdb85ce Build optimization: pre-built PM3 binaries, ARM64 CI, base image caching
Replace PM3 compile-from-source in pi-gen with pre-built tarball extraction
(saves 43-58 min). Merge stagePM3 into stageDangerousPi as 02-pm3-install
substage, renumber all subsequent substages. Switch CI PM3 build to native
ARM64 runner (ubuntu-24.04-arm64) eliminating QEMU overhead. Add weekly
base-image workflow for pre-baking stages 0-2. Support PM3_TARBALL,
BASE_IMAGE, and APT_PROXY env vars in build-image.sh.

Also includes prior Phase 5 work: theme system, design system integration,
component update system, OS updates, CI build pipeline, and test results.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 12:01:01 -08:00

8.1 KiB

Dangerous Pi - Hardware Test Results

Test Date: 2026-03-03 12:17:58 Target: dangerous-pi.local (http://dangerous-pi.local:8000/api) Serial: /dev/ttyUSB0 @ 115200 Tester: Automated (test_hardware_2026-03-03.py)


Summary

Metric Count
Total Tests 77
PASS 53
FAIL 3
WARN 10
SKIP 11
Pass Rate 68.8% (excl. skips: 80.3%)

Phase 1: Regression - Jan 23 Issues

# Test Status Detail
1.1 WiFi status reports connected PASS ssid=XFSETUP-0D80, ip=10.0.0.249
1.2 UPS detected at boot FAIL UPS not available: Failed to initialize I2C Fuel Gauge (MAX17040/MAX17048)
1.3 BLE advertising active PASS name=DangerousPi
1.4 Pydantic namespace warning PASS No warning found or logs unavailable

Phase Summary: 3 pass, 1 fail, 0 warn, 0 skip


Phase 2: Core Health & System Endpoints

# Test Status Detail
2.1 Health check PASS 18ms
2.2 Readiness check PASS 10ms
2.3 System info PASS temp=46.698°C, mem=162.0MB
2.4 System config PASS 10ms
2.5 Pi model info PASS {'model': 'Raspberry Pi Zero 2 W Rev 1.0', 'model_short': 'Pi Zero 2 W', 'total_cores': 4, 'default_active_cores': 2, 'm
2.6 CPU cores PASS total=4, online=2
2.7 Power restrictions PASS 9ms
2.8 Header widgets PASS 0 widgets
2.9 Response time < 100ms avg PASS avg=13ms, min=8ms, max=26ms

Phase Summary: 9 pass, 0 fail, 0 warn, 0 skip


⚠️ Phase 3: PM3 Hardware Integration

# Test Status Detail
3.1 Device discovery PASS 1 device(s), id=pm3_119fea49
3.2 Device status PASS {'device_id': 'pm3_119fea49', 'device_path': '/dev/ttyACM0', 'friendly_name': 'ttyACM0', 'serial_number': 'iceman', 'con
3.3 PM3 overall status PASS connected=None
3.4 Create session PASS id=ddebed0f-ac41-4894-b2c2-823de334f4e8
3.5 Execute hw version ⚠️ WARN Unexpected output:
3.6 Execute hw status PASS 382ms
3.7 Execute hw tune ⚠️ WARN No tune data in output (419ms)
3.8 HF search PASS 609ms
3.9 LF search PASS 665ms
3.10 LED identify PASS 5620ms
3.11 Command history PASS ? entries
3.12 Session release PASS 10ms
3.14 Command time < 1s ⏭️ SKIP hw version not tested

Phase Summary: 10 pass, 0 fail, 2 warn, 1 skip


⚠️ Phase 4: WiFi Manager

# Test Status Detail
4.1 WiFi status PASS mode=client, ssid=XFSETUP-0D80
4.2 Interface detection (wlan0) PASS mac=2c:cf:67:87:db:13, up=True
4.3 Network scan PASS 17 networks found
4.4 Saved networks ⚠️ WARN HTTP 404
4.5 Current connection PASS ip=10.0.0.249
4.6 WiFi mode report PASS mode=client

Phase Summary: 5 pass, 0 fail, 1 warn, 0 skip


⚠️ Phase 5: HTTPS & SSL

# Test Status Detail
5.1 SSL info endpoint PASS 19ms
5.2 SSL enabled field present PASS enabled=False
5.3 Certificate SANs ⚠️ WARN No certificate generated yet
5.4 HTTPS access ⚠️ WARN HTTPS not responding (may not be enabled): timeout
5.5 SSL toggle endpoint ⏭️ SKIP Skipped to avoid disrupting connection
5.6 Cert regeneration ⏭️ SKIP Skipped to avoid disrupting HTTPS state
5.7 SSL cert script exists ⚠️ WARN Script not at expected path
5.8 nginx config files PASS Found configs

Phase Summary: 3 pass, 0 fail, 3 warn, 2 skip


Phase 6: Authentication & WebSocket

# Test Status Detail
6.1 Auth status check FAIL HTTP 404
6.2 Enable auth via serial ⏭️ SKIP Auth is disabled, skipping auth toggle tests (use --phase 6 to run interactively)
6.3 Auth test 6.3 ⏭️ SKIP Auth disabled on Pi
6.4 Auth test 6.4 ⏭️ SKIP Auth disabled on Pi
6.5 Auth test 6.5 ⏭️ SKIP Auth disabled on Pi
6.6 Auth test 6.6 ⏭️ SKIP Auth disabled on Pi
6.7 Auth test 6.7 ⏭️ SKIP Auth disabled on Pi
6.8 Auth test 6.8 ⏭️ SKIP Auth disabled on Pi
6.9 Auth test 6.9 ⏭️ SKIP Auth disabled on Pi
6.10 WebSocket event stream FAIL Connection failed: server rejected WebSocket connection: HTTP 403

Phase Summary: 0 pass, 2 fail, 0 warn, 8 skip


Phase 7: Plugin System & Hooks

# Test Status Detail
7.1 Plugin discovery PASS Found: ['hello_world']
7.2 Plugin list PASS 1 plugin(s)
7.3 Plugin info (hello_world) PASS version=1.0.0
7.4 Load plugin PASS 72ms
7.5 Enable plugin PASS 15ms
7.6 Hook trigger (pm3_command) PASS PM3 command executed with plugin enabled
7.7 Plugin widgets PASS 11ms
7.8 Disable plugin PASS 12ms
7.9 Unload plugin PASS 15ms
7.10 Invalid plugin returns 404 PASS 81ms

Phase Summary: 10 pass, 0 fail, 0 warn, 0 skip


⚠️ Phase 8: BLE & UPS Hardware

# Test Status Detail
8.1 BLE status API PASS enabled=True, advertising=True, name=DangerousPi
8.2 BLE scan from laptop ⚠️ WARN DangerousPi not found in scan (may need longer scan)
8.3 Start BLE advertising PASS 5259ms
8.4 Stop BLE advertising PASS 224ms
8.5 Send BLE notification ⚠️ WARN HTTP 400
8.7 UPS status ⚠️ WARN UPS not available: Failed to initialize I2C Fuel Gauge (MAX17040/MAX17048)
8.8 UPS thresholds PASS 11ms
8.9 Power source detection ⚠️ WARN Power source unknown (UPS may not be detected)
8.10 I2C device at 0x75 PASS PiSugar responds

Phase Summary: 5 pass, 0 fail, 4 warn, 0 skip


Phase 9: Frontend & Performance

# Test Status Detail
9.1 Frontend loads PASS 9964 bytes, has app markup
9.2 Dashboard page PASS 9964 bytes, has app markup
9.3 Commands page PASS 7226 bytes, has app markup
9.4 Settings page PASS 7588 bytes, has app markup
9.5 Logs page PASS 5584 bytes, has app markup
9.6 Response time (10 requests) PASS avg=10ms, p95=15ms, min=7ms, max=15ms
9.7 Memory usage PASS system total used: 171MB
9.8 CPU temperature PASS 48.312°C (target < 70°C idle)

Phase Summary: 8 pass, 0 fail, 0 warn, 0 skip


Issues Found (FAIL)

1.2: UPS detected at boot

  • Detail: UPS not available: Failed to initialize I2C Fuel Gauge (MAX17040/MAX17048)
  • Data: {"battery_percentage": 0.0, "voltage": 0.0, "current": 0.0, "power_source": "unknown", "battery_status": "unknown", "time_remaining": null, "temperature": null, "last_updated": null, "is_available": false, "error_message": "Failed to initialize I2C Fuel Gauge (MAX17040/MAX17048)"}

6.1: Auth status check

  • Detail: HTTP 404

6.10: WebSocket event stream

  • Detail: Connection failed: server rejected WebSocket connection: HTTP 403

Warnings

  • 3.5 Execute hw version: Unexpected output:
  • 3.7 Execute hw tune: No tune data in output (419ms)
  • 4.4 Saved networks: HTTP 404
  • 5.3 Certificate SANs: No certificate generated yet
  • 5.4 HTTPS access: HTTPS not responding (may not be enabled): timeout
  • 5.7 SSL cert script exists: Script not at expected path
  • 8.2 BLE scan from laptop: DangerousPi not found in scan (may need longer scan)
  • 8.5 Send BLE notification: HTTP 400
  • 8.7 UPS status: UPS not available: Failed to initialize I2C Fuel Gauge (MAX17040/MAX17048)
  • 8.9 Power source detection: Power source unknown (UPS may not be detected)

Generated by test_hardware_2026-03-03.py