Initial commit - Phase 3/4
🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
69
pi-gen/stageDangerousPi/04-pisugar/00-run-chroot.sh
Executable file
69
pi-gen/stageDangerousPi/04-pisugar/00-run-chroot.sh
Executable file
@@ -0,0 +1,69 @@
|
||||
#!/bin/bash -e
|
||||
# PiSugar UPS Support - Native I2C Driver
|
||||
#
|
||||
# This enables native I2C support for PiSugar UPS devices.
|
||||
# NO pisugar-server daemon is required - we communicate directly with
|
||||
# the battery management chip via I2C for minimal CPU usage.
|
||||
#
|
||||
# Supported hardware:
|
||||
# - PiSugar 2 (4-LEDs) - IP5209 chip at I2C address 0x75
|
||||
# - PiSugar 2 Pro - IP5209 chip at I2C address 0x75
|
||||
# - PiSugar 3 / 3 Plus - IP5312 chip at I2C address 0x57
|
||||
#
|
||||
# Features:
|
||||
# - Battery voltage/current/percentage reading
|
||||
# - Charging status detection
|
||||
# - Button tap detection
|
||||
# - RTC alarm for scheduled wake-up (SD3078 at 0x32)
|
||||
# - Force shutdown capability
|
||||
#
|
||||
# Disable this substage by creating a SKIP file if you don't use PiSugar
|
||||
|
||||
echo "Configuring native PiSugar I2C support..."
|
||||
|
||||
# Ensure I2C is enabled (already done in 03-dangerous-pi, but verify)
|
||||
BOOT_CONFIG="/boot/firmware/config.txt"
|
||||
if [ ! -f "$BOOT_CONFIG" ]; then
|
||||
BOOT_CONFIG="/boot/config.txt"
|
||||
fi
|
||||
|
||||
if [ -f "$BOOT_CONFIG" ]; then
|
||||
if ! grep -q "^dtparam=i2c_arm=on" "$BOOT_CONFIG"; then
|
||||
echo "dtparam=i2c_arm=on" >> "$BOOT_CONFIG"
|
||||
echo "Enabled I2C in boot config"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Ensure i2c-dev module loads at boot
|
||||
mkdir -p /etc/modules-load.d
|
||||
echo "i2c-dev" > /etc/modules-load.d/i2c-dev.conf
|
||||
|
||||
# smbus2 is already installed by 03-dangerous-pi stage
|
||||
# Verify it's available
|
||||
python3 -c "import smbus2; print('smbus2 available')" || {
|
||||
echo "Installing smbus2..."
|
||||
pip3 install --break-system-packages smbus2==0.4.3
|
||||
}
|
||||
|
||||
# Install i2c-tools for debugging (optional but useful)
|
||||
apt-get update
|
||||
apt-get install -y i2c-tools
|
||||
|
||||
echo ""
|
||||
echo "=============================================="
|
||||
echo "PiSugar Native I2C Support Configured"
|
||||
echo "=============================================="
|
||||
echo ""
|
||||
echo "The Dangerous Pi backend will automatically detect PiSugar hardware"
|
||||
echo "via I2C when UPS_TYPE=auto (default) is set."
|
||||
echo ""
|
||||
echo "Supported PiSugar models:"
|
||||
echo " - PiSugar 2 (4-LEDs) at I2C 0x75"
|
||||
echo " - PiSugar 2 Pro at I2C 0x75"
|
||||
echo " - PiSugar 3 / 3 Plus at I2C 0x57"
|
||||
echo ""
|
||||
echo "RTC (SD3078) detected at I2C 0x32 for wake-up alarms"
|
||||
echo ""
|
||||
echo "NOTE: pisugar-server daemon is NOT installed."
|
||||
echo "This native driver uses <1% CPU vs 350%+ for the daemon."
|
||||
echo ""
|
||||
102
pi-gen/stageDangerousPi/04-pisugar/README.md
Normal file
102
pi-gen/stageDangerousPi/04-pisugar/README.md
Normal file
@@ -0,0 +1,102 @@
|
||||
# PiSugar UPS Support - Native I2C Driver
|
||||
|
||||
This substage configures native I2C support for PiSugar 2/3 series UPS HATs.
|
||||
|
||||
**NO pisugar-server daemon is required** - we communicate directly with the battery management chip via I2C for minimal CPU usage (<1% vs 350%+ for the daemon).
|
||||
|
||||
## Enabling PiSugar Support
|
||||
|
||||
PiSugar configuration is **disabled by default**. To enable it during build:
|
||||
|
||||
```bash
|
||||
# Remove the SKIP file
|
||||
rm pi-gen/stageDangerousPi/04-pisugar/SKIP
|
||||
|
||||
# Then build the image
|
||||
./build-image.sh
|
||||
```
|
||||
|
||||
## How It Works
|
||||
|
||||
Dangerous Pi includes a native I2C driver that communicates directly with the PiSugar hardware:
|
||||
|
||||
- **IP5209** (PiSugar 2 series) at I2C address `0x75`
|
||||
- **IP5312** (PiSugar 3 series) at I2C address `0x57`
|
||||
- **SD3078** RTC at I2C address `0x32`
|
||||
|
||||
The driver auto-detects the hardware when `UPS_TYPE=auto` (default).
|
||||
|
||||
## Features
|
||||
|
||||
- Battery voltage, current, and percentage reading
|
||||
- Charging status detection (AC/battery power source)
|
||||
- Button tap detection (single, double, long press)
|
||||
- RTC read/write for scheduled wake-up alarms
|
||||
- Force shutdown capability
|
||||
- Low battery warnings and automatic safe shutdown
|
||||
|
||||
## Configuring Dangerous Pi for PiSugar
|
||||
|
||||
By default, PiSugar is auto-detected. You can explicitly configure it in `/opt/dangerous-pi/.env`:
|
||||
|
||||
```bash
|
||||
# Auto-detect UPS hardware (default, recommended)
|
||||
UPS_TYPE=auto
|
||||
|
||||
# Or explicitly use native I2C driver
|
||||
UPS_TYPE=pisugar
|
||||
```
|
||||
|
||||
Then restart Dangerous Pi:
|
||||
|
||||
```bash
|
||||
sudo systemctl restart dangerous-pi
|
||||
```
|
||||
|
||||
## Supported Hardware
|
||||
|
||||
| Model | Chip | I2C Address | Notes |
|
||||
|-------|------|-------------|-------|
|
||||
| PiSugar 2 (4-LEDs) | IP5209 | 0x75 | For Pi Zero |
|
||||
| PiSugar 2 Pro | IP5209 | 0x75 | For larger Pis |
|
||||
| PiSugar 3 | IP5312 | 0x57 | For Pi Zero 2W |
|
||||
| PiSugar 3 Plus | IP5312 | 0x57 | For Pi 4/5 |
|
||||
|
||||
## Verifying Installation
|
||||
|
||||
Check if PiSugar hardware is detected:
|
||||
|
||||
```bash
|
||||
# List I2C devices
|
||||
i2cdetect -y 1
|
||||
|
||||
# Expected output for PiSugar 2:
|
||||
# 0 1 2 3 4 5 6 7 8 9 a b c d e f
|
||||
# 30: -- -- 32 -- -- -- -- -- -- -- -- -- -- -- -- -- <- RTC
|
||||
# 70: -- -- -- -- -- 75 -- -- <- Battery
|
||||
```
|
||||
|
||||
Check UPS status via API:
|
||||
|
||||
```bash
|
||||
curl http://localhost:8000/api/system/ups/status
|
||||
```
|
||||
|
||||
## Migrating from pisugar-server
|
||||
|
||||
If you previously installed pisugar-server:
|
||||
|
||||
```bash
|
||||
# Stop and disable the daemon
|
||||
sudo systemctl stop pisugar-server
|
||||
sudo systemctl disable pisugar-server
|
||||
|
||||
# The native driver will automatically take over
|
||||
sudo systemctl restart dangerous-pi
|
||||
```
|
||||
|
||||
## Additional Resources
|
||||
|
||||
- [PiSugar GitHub](https://github.com/PiSugar/PiSugar)
|
||||
- [PiSugar Wiki](https://github.com/PiSugar/PiSugar/wiki)
|
||||
- Native driver source: `app/backend/managers/ups_drivers/pisugar_i2c_driver.py`
|
||||
2
pi-gen/stageDangerousPi/04-pisugar/SKIP
Normal file
2
pi-gen/stageDangerousPi/04-pisugar/SKIP
Normal file
@@ -0,0 +1,2 @@
|
||||
# Remove this file to enable PiSugar installation
|
||||
# PiSugar support is optional and disabled by default
|
||||
Reference in New Issue
Block a user