session logging, build-only mode, park splash, boot logo spinner
- Per-process stderr logging to /data/log2/{session}/ with time-safe
directory naming (boot-xxx renamed once GPS/NTP sets clock)
- Aggregate session.log with major events (start/stop, transitions)
- 30-day log rotation cleanup on manager startup
- build_only.sh: compile without starting manager, non-blocking error
display, kills stale processes
- build.py: copies updated spinner binary after successful build
- Onroad park mode: show splash screen when car is on but in park,
switch to camera view when shifted to drive, honor screen on/off
- Spinner: full-screen boot logo background from /usr/comma/bg.jpg
with white progress bar overlay
- Boot logo: auto-regenerate when boot_logo.png changes, 140% scale
- launch_openpilot.sh: cd to /data/openpilot for reliable execution
- launch_chffrplus.sh: kill stale text error displays on startup
- spinner shell wrapper: prefer freshly built _spinner over prebuilt
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
50
CLAUDE.md
50
CLAUDE.md
@@ -57,17 +57,25 @@ chown -R comma:comma /data/openpilot
|
||||
|
||||
### Testing Changes
|
||||
|
||||
The launch script now self-cleans — it kills other instances of itself, `launch_chffrplus.sh`, and `manager.py` before starting. No need to manually kill first.
|
||||
Always use `build_only.sh` to compile, then start the manager separately. Never compile individual targets with scons directly — always use the full build script. Always use full paths with `su - comma` — the login shell drops into `/home/comma` (volatile tmpfs), not `/data/openpilot`.
|
||||
|
||||
```bash
|
||||
# Fix ownership (we edit as root, openpilot runs as comma)
|
||||
# 1. Fix ownership (we edit as root, openpilot runs as comma)
|
||||
chown -R comma:comma /data/openpilot
|
||||
|
||||
# Remove prebuilt to force recompilation (it is recreated after each successful build)
|
||||
rm -f /data/openpilot/prebuilt
|
||||
# 2. Build (kills running manager, removes prebuilt, compiles, exits)
|
||||
# Shows progress spinner on screen. On failure, shows error on screen
|
||||
# and prints to stderr. Does NOT start the manager.
|
||||
su - comma -c "bash /data/openpilot/build_only.sh"
|
||||
|
||||
# Must use a login shell as comma — sudo -u won't set up the right Python/env (3.11 via pyenv)
|
||||
# 3. If build succeeded ($? == 0), start openpilot
|
||||
su - comma -c "bash /data/openpilot/launch_openpilot.sh"
|
||||
|
||||
# 4. Review the aggregate session log for errors
|
||||
cat /data/log2/$(ls -t /data/log2/ | head -1)/session.log
|
||||
|
||||
# 5. Check per-process stderr logs if needed
|
||||
ls /data/log2/$(ls -t /data/log2/ | head -1)/
|
||||
```
|
||||
|
||||
### Adding New Params
|
||||
@@ -85,6 +93,38 @@ The params system uses a C++ whitelist. Adding a new param name in `manager.py`
|
||||
- OMX encoder object (`omx_encoder.o`) is compiled by the UI build — reference the pre-built `.o` file rather than recompiling (avoids "two environments" scons error)
|
||||
- `prebuilt` is recreated after every successful build — always remove it before rebuilding
|
||||
|
||||
## Session Logging
|
||||
|
||||
Per-process stderr and an aggregate event log are captured in `/data/log2/{session}/`.
|
||||
|
||||
### Log Directory
|
||||
|
||||
- Created at manager import time with timestamp: `/data/log2/YYYY-MM-DD-HH-MM-SS/`
|
||||
- If system clock is invalid (cold boot, no WiFi, RTC stuck at 1970): uses `/data/log2/boot-{monotonic}/`, renamed to real timestamp once GPS/NTP resolves the time
|
||||
- Session directories older than 30 days are deleted on manager startup
|
||||
|
||||
### Per-Process Logs
|
||||
|
||||
- Every `PythonProcess` and `NativeProcess` has stderr redirected to `{name}.log` in the session directory
|
||||
- `DaemonProcess` (athenad) redirects both stdout+stderr (existing behavior)
|
||||
- Stderr is redirected via `os.dup2` inside the forked child process
|
||||
|
||||
### Aggregate Session Log (`session.log`)
|
||||
|
||||
A single `session.log` in each session directory records major events:
|
||||
|
||||
- Manager start/stop/crash
|
||||
- Process starts, deaths (with exit codes), watchdog restarts
|
||||
- Onroad/offroad transitions
|
||||
|
||||
### Key Files
|
||||
|
||||
| File | Role |
|
||||
|------|------|
|
||||
| `selfdrive/manager/process.py` | Log directory creation, stderr redirection, session_log logger |
|
||||
| `selfdrive/manager/manager.py` | Log rotation cleanup, session event logging |
|
||||
| `build_only.sh` | Build-only script (no manager start) |
|
||||
|
||||
## Dashcam (dashcamd)
|
||||
|
||||
### Architecture
|
||||
|
||||
Reference in New Issue
Block a user