phase 1-5

This commit is contained in:
Jason Wen
2026-03-11 15:19:36 -04:00
parent 2e82908c07
commit 27dfd5cbf0
51 changed files with 2535 additions and 0 deletions
+66
View File
@@ -0,0 +1,66 @@
name: sunnypilot docs
on:
push:
branches:
- docs
paths:
- 'docs_sp/**'
- 'mkdocs-sp.yml'
pull_request:
paths:
- 'docs_sp/**'
- 'mkdocs-sp.yml'
concurrency:
group: docs-sp-${{ github.event_name == 'push' && github.ref == 'refs/heads/docs' && github.run_id || github.head_ref || github.ref }}
cancel-in-progress: true
jobs:
build:
name: build sunnypilot docs
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v6
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Install dependencies
run: |
pip install uv
uv pip install --system zensical
- name: Build docs
run: zensical build -f mkdocs-sp.yml
# Push to docs.sunnypilot.ai
- uses: actions/checkout@v6
if: github.ref == 'refs/heads/docs' && github.repository == 'sunnypilot/sunnypilot'
with:
path: sunnypilot-docs
ssh-key: ${{ secrets.OPENPILOT_DOCS_KEY }}
repository: sunnypilot/sunnypilot-docs
- name: Push to GitHub Pages
if: github.ref == 'refs/heads/docs' && github.repository == 'sunnypilot/sunnypilot'
run: |
set -x
source release/identity.sh
cd sunnypilot-docs
git checkout --orphan tmp
git rm -rf .
cp -r ../docs_site_sp/ docs/
touch docs/.nojekyll
echo -n docs.sunnypilot.ai > docs/CNAME
git add -f .
git commit -m "build sunnypilot docs"
git push -f origin tmp:gh-pages
+1
View File
@@ -15,6 +15,7 @@ a.out
.cache/
/docs_site/
/docs_site_sp/
*.mp4
*.dylib
+31
View File
@@ -0,0 +1,31 @@
# sunnypilot Documentation
Source files for [docs.sunnypilot.ai](https://docs.sunnypilot.ai).
## Local Development
### Install dependencies
```bash
uv pip install .[docs]
```
### Build
```bash
zensical build -f mkdocs-sp.yml
```
### Serve locally
```bash
zensical serve -f mkdocs-sp.yml
```
The site will be available at `http://127.0.0.1:8000`.
## Structure
- `docs_sp/` — Source markdown files
- `docs_site_sp/` — Build output (gitignored)
- `mkdocs-sp.yml` — Zensical configuration
+3
View File
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:bc053ad72154ff5fa23d3f7eaa8132943328991c706b1f7ed56f4bb833853528
size 271
+27
View File
@@ -0,0 +1,27 @@
---
title: Contributing
---
# Contributing to sunnypilot
We welcome contributions from the community! Here's how you can help.
## Ways to Contribute
- **Report bugs** — See [Reporting a Bug](reporting-a-bug.md)
- **Submit code** — Follow the [Workflow](workflow.md) guide
- **Improve documentation** — Submit PRs to the `docs` branch
- **Help others** — Join the [Discord Community](https://discord.sunnypilot.ai)
## Code of Conduct
Be respectful, constructive, and helpful. We're all here to make driving safer and more enjoyable.
## Getting Started
1. Fork the [sunnypilot repository](https://github.com/sunnypilot/sunnypilot)
2. Create a feature branch
3. Make your changes
4. Submit a pull request
See [Workflow](workflow.md) for detailed steps.
+32
View File
@@ -0,0 +1,32 @@
---
title: Reporting a Bug
---
# Reporting a Bug
Help us improve sunnypilot by reporting issues you encounter.
## Before Reporting
1. Check if the issue has already been reported on [GitHub Issues](https://github.com/sunnypilot/sunnypilot/issues)
2. Try the latest version — the bug may already be fixed
3. Check the [Discord Community](https://discord.sunnypilot.ai) for known issues
## What to Include
- **Device info** — Hardware model, software version, branch
- **Vehicle info** — Make, model, year
- **Steps to reproduce** — What you did leading up to the issue
- **Expected behavior** — What should have happened
- **Actual behavior** — What actually happened
- **Logs** — If possible, include relevant log files
## How to Report
1. Go to [GitHub Issues](https://github.com/sunnypilot/sunnypilot/issues/new)
2. Use the bug report template
3. Fill in all requested information
4. Submit the issue
!!! tip
The more detail you provide, the faster we can diagnose and fix the issue.
+37
View File
@@ -0,0 +1,37 @@
---
title: Workflow
---
# Development Workflow
How to contribute code to sunnypilot.
## Prerequisites
- Git installed
- Python 3.12+
- A GitHub account
## Steps
1. **Fork** the repository on GitHub
2. **Clone** your fork locally
3. **Create a branch** from the appropriate base branch
4. **Make changes** and test locally
5. **Push** your branch to your fork
6. **Open a pull request** against the main repository
## Branch Naming
Use descriptive branch names:
- `feat/feature-name` — New features
- `fix/bug-description` — Bug fixes
- `docs/topic` — Documentation changes
## Pull Request Guidelines
- Keep PRs focused on a single change
- Include a clear description of what and why
- Reference any related issues
- Ensure tests pass
+52
View File
@@ -0,0 +1,52 @@
---
title: Auto Lane Change
---
# Auto Lane Change
## What It Does
Automatically executes lane changes when you activate the turn signal. You can choose between nudge-based confirmation, nudgeless (immediate), or timed delays before the lane change begins.
## How It Works
1. Activate your turn signal in the desired direction
2. Depending on your setting:
- **Nudge:** Give a light steering nudge to confirm the lane change
- **Nudgeless:** The lane change begins immediately
- **Timed (0.5s3s):** The lane change begins after the configured delay
3. If BSM Delay is enabled and a vehicle is detected in your blind spot, the lane change waits until the path is clear
## Requirements
!!! info "Requirements"
- Lateral control must be active (sunnypilot must be engaged)
- Vehicle must be traveling above a minimum speed threshold
## How to Enable
**Settings****sunnypilot****Steering****Lane Change Settings**
## Modes
| Mode | Behavior |
|------|----------|
| **Off** | Auto lane change is disabled |
| **Nudge** | Requires a light steering nudge to confirm |
| **Nudgeless** | Lane change begins as soon as you signal |
| **0.5s 3s** | Lane change begins after a set delay |
## Blind Spot Monitoring Integration
If your vehicle supports BSM and the BSM Delay option is enabled, the system checks for vehicles in your blind spot before executing the lane change. The lane change is delayed until the adjacent lane is clear.
!!! info "BSM Requirements"
- Vehicle must support Blind Spot Monitoring
- Auto Lane Change Timer must be set beyond Nudge mode
## Settings Reference
See [Lane Change Settings](../settings/lane-change.md) for all options.
!!! warning "Safety"
Always check your mirrors and blind spots before initiating a lane change. The system assists but does not replace driver awareness.
+28
View File
@@ -0,0 +1,28 @@
---
title: Custom ACC Increments
---
# Custom ACC Increments
## What It Does
Customize the speed increments when you press the cruise control buttons. Instead of the default step sizes, set your own preferred values for both short and long button presses.
## How It Works
- **Short press:** Changes speed by your configured short press increment (110 km/h or mph)
- **Long press:** Changes speed by your configured long press increment (1, 5, or 10 km/h or mph)
## Requirements
!!! info "Requirements"
- Longitudinal control must be available, **or** [ICBM](icbm.md) must be enabled
- PCM Cruise must not be active (factory cruise control must not override)
## How to Enable
**Settings****sunnypilot****Cruise Control****Custom ACC Increments**
## Settings Reference
See [Cruise Control Settings](../settings/cruise.md) for all increment options.
@@ -0,0 +1,39 @@
---
title: Dynamic Experimental Control
---
# Dynamic Experimental Control (DEC)
## What It Does
DEC automatically switches between openpilot's standard and experimental driving modes based on real-time road conditions. Instead of manually toggling between modes, the system chooses the most appropriate mode for the current situation.
## How It Works
DEC monitors multiple driving signals and conditions:
- **Current speed** — Lower speeds suggest city driving
- **Turn detection** — Upcoming turns may need experimental mode
- **Stop signs and traffic lights** — Intersections benefit from experimental mode
- **Road type** — Highway vs. urban driving
Based on these signals, DEC switches between:
| Mode | Best For |
|------|----------|
| **Standard Mode** | Highway driving with steady speeds and clear lanes |
| **Experimental Mode** | City driving with stops, turns, and complex intersections |
## Requirements
!!! info "Requirements"
- Longitudinal control must be available
- Device must be offroad to enable/disable
## How to Enable
**Settings****sunnypilot****Cruise Control****Dynamic Experimental Control**
## Settings Reference
See [Cruise Control Settings](../settings/cruise.md) for configuration details.
+32
View File
@@ -0,0 +1,32 @@
---
title: HUD & Visuals
---
# HUD & Visuals
## What It Does
Customize the heads-up display (HUD) elements and visual overlays shown on the driving screen. Toggle individual elements on or off to create your preferred driving view.
## Available HUD Elements
| Element | Description |
|---------|-------------|
| **Blind Spot Indicator** | Visual warning when a vehicle is in your blind spot |
| **Torque Bar** | Shows current steering torque |
| **Standstill Timer** | Shows how long you've been stopped |
| **Road Name** | Displays the current road name |
| **Green Light Alert** | Alerts when a traffic light turns green |
| **Lead Depart Alert** | Alerts when the car ahead starts moving |
| **True Vehicle Speed** | CAN bus speed (may differ from GPS) |
| **Turn Signals** | Shows turn signal status on the HUD |
| **Chevron Info** | Distance, speed, or time gap to lead vehicle |
| **Developer UI** | Debug information for diagnostics |
## How to Configure
**Settings****sunnypilot****Visuals & HUD**
## Settings Reference
See [Visuals & HUD Settings](../settings/visuals.md) for all toggle options and multi-button selectors.
+43
View File
@@ -0,0 +1,43 @@
---
title: Intelligent Cruise Button Management
---
# Intelligent Cruise Button Management (ICBM)
## What It Does
ICBM allows sunnypilot to intercept and dynamically manage your vehicle's cruise control button presses. Instead of directly changing the set speed, button presses are routed through sunnypilot's logic, enabling features like Speed Limit Control and Smart Cruise Control on vehicles that don't natively support sunnypilot longitudinal control.
This is particularly useful for vehicles where sunnypilot cannot directly control the gas and brakes — ICBM gives you many of the same benefits by intelligently managing the cruise buttons.
## How It Works
1. You press the cruise speed button on your steering wheel
2. ICBM intercepts the button press
3. sunnypilot applies its logic (speed limits, map curves, etc.) to determine the appropriate speed change
4. The adjusted command is sent to the vehicle's cruise system
This happens transparently — from your perspective, the buttons work normally but with smarter behavior.
## Requirements
!!! info "Requirements"
- Your vehicle must support ICBM — not all vehicles are compatible
- If the ICBM toggle does not appear in settings, your vehicle is not supported
## How to Enable
**Settings****sunnypilot****Cruise Control****Intelligent Cruise Button Management**
## Features Unlocked by ICBM
When ICBM is enabled, the following features become available even on vehicles without native longitudinal control:
- **[Smart Cruise Control — Vision](scc-v.md)** — Vision-based adaptive speed adjustments
- **[Smart Cruise Control — Map](scc-m.md)** — Map-aware speed adjustments
- **[Custom ACC Increments](custom-acc-increments.md)** — Custom button press speed steps
- **[Speed Limit Control](speed-limit.md)** — Automatic speed limit matching
## Settings Reference
See [Cruise Control Settings](../settings/cruise.md) for all available options.
+60
View File
@@ -0,0 +1,60 @@
---
title: Modular Assistive Driving System
---
# Modular Assistive Driving System (MADS)
## What It Does
MADS decouples lateral (steering) and longitudinal (speed) controls. In standard openpilot, engaging cruise control activates both steering and speed control together, and disengaging turns both off. With MADS, steering assistance can remain active independently — even when cruise control is off.
This means you can have lane-keeping assistance while controlling the gas and brakes yourself.
## How It Works
With MADS enabled:
- **Steering stays active** even when you cancel cruise control
- You can engage steering assistance independently of cruise
- You choose what happens to steering when cruise disengages (remain active, pause, or fully disengage)
- You can configure whether the main cruise button also activates steering
## Requirements
!!! info "Requirements"
- Supported on most vehicles with sunnypilot lateral control
## How to Enable
**Settings****sunnypilot****Steering** → enable **M.A.D.S.**
Then configure the sub-settings in **MADS Settings**.
## Key Settings
| Setting | What It Controls |
|---------|-----------------|
| **Main Cruise Allowed** | Whether the cruise on/off button can activate MADS |
| **Unified Engagement Mode** | Whether engaging cruise also engages MADS automatically |
| **Steering Mode on Disengage** | What happens to steering when cruise disengages |
## Vehicle-Specific Behavior
Some vehicles operate in **limited MADS mode** where certain settings are locked:
=== "Tesla (without vehicle bus)"
- Main Cruise Allowed: forced OFF
- Unified Engagement Mode: forced ON
- Steering Mode: forced to Disengage
=== "Rivian"
- Main Cruise Allowed: forced OFF
- Unified Engagement Mode: forced ON
- Steering Mode: forced to Disengage
## Settings Reference
See [MADS Settings](../settings/mads.md) for all configuration options.
!!! warning "Safety"
Always be ready to take full manual control. MADS allows more flexible use of driver assistance, but you remain responsible for safe driving at all times.
+30
View File
@@ -0,0 +1,30 @@
---
title: Models & AI
---
# Models & AI
## What It Does
Select and configure the driving model used by sunnypilot. Different models offer different driving characteristics — some may be smoother, others more responsive. Advanced parameters let you fine-tune model behavior.
## Key Features
- **Model Selection** — Choose from available driving models (offroad only)
- **Lane Turn Desire** — Enhance lane positioning during turns
- **LAGD (Look-Ahead Generative Driving)** — Anticipate road conditions ahead using generative AI
## Advanced Parameters
Advanced parameters are only visible when **Show Advanced Controls** is enabled in [Developer Settings](../settings/developer.md):
- **Lane Turn Value** — Intensity of lane turn desire (5002000)
- **LAGD Delay** — Look-ahead distance configuration (550)
## How to Configure
**Settings****sunnypilot****Models & AI**
## Settings Reference
See [Models & AI Settings](../settings/models.md) for all configuration options.
+41
View File
@@ -0,0 +1,41 @@
---
title: Neural Network Lateral Control
---
# Neural Network Lateral Control (NNLC)
## What It Does
NNLC replaces the traditional PID or torque-based steering controller with a neural network trained on real driving data. This can provide smoother, more natural-feeling lane keeping that adapts to your vehicle's steering characteristics.
## How It Works
Instead of using fixed mathematical formulas (PID controller), NNLC uses a machine learning model to calculate steering commands. The neural network has been trained on real-world driving data and can handle a wider variety of driving scenarios with smoother output.
## Requirements
!!! info "Requirements"
- Vehicle must not use angle-based steering (`steerControlType` must not be `angle`)
- Mutually exclusive with [Torque Control](torque-control.md) — only one can be active at a time
- Device must be offroad to enable/disable
## How to Enable
**Settings****sunnypilot****Steering****Neural Network Lateral Control**
!!! tip
Not all vehicles have NNLC models available. If the toggle does not appear, your vehicle may use angle-based steering which is not compatible with NNLC.
## NNLC vs. Torque Control
| Feature | NNLC | Torque Control |
|---------|------|---------------|
| **Approach** | Neural network (learned) | Mathematical formula (tuned) |
| **Customization** | Automatic | Manual tuning available |
| **Best for** | Smooth, adaptive steering | Precise, configurable steering |
These two features are mutually exclusive — enabling one automatically disables the other.
## Settings Reference
See [Steering Settings](../settings/steering.md) for configuration details.
+23
View File
@@ -0,0 +1,23 @@
---
title: Onroad Display
---
# Onroad Display
## What It Does
Control the screen brightness, timeout behavior, and touch interactivity while driving. These settings help reduce distraction and manage power consumption.
## Key Features
- **Screen brightness control** — Choose from Auto, Auto Dark, Screen Off, or a fixed percentage (5%100%)
- **Brightness delay** — Set how long the screen stays bright before dimming
- **Interactivity timeout** — Make the screen non-interactive after a set period to prevent accidental touches
## How to Configure
**Settings****sunnypilot****Display**
## Settings Reference
See [Display Settings](../settings/display.md) for all configuration options.
+45
View File
@@ -0,0 +1,45 @@
---
title: OSM Maps
---
# OSM Maps
## What It Does
Integrates OpenStreetMap (OSM) data to provide speed limit information, road geometry, and other map attributes. This data powers features like Speed Limit Control and Smart Cruise Control — Map.
## How It Works
1. Select your country (and state, if in the US)
2. Download the map data to your device
3. The map daemon processes the data and makes it available to driving features
4. Periodically check for updates to keep your map data current
## Requirements
!!! info "Requirements"
- Internet connection for initial download and updates
- Storage space on the device for map data
## How to Set Up
**Settings****sunnypilot****OSM Maps**
1. Select your **Country**
2. If in the US, select your **State**
3. Tap **Database Update** to download
4. Wait for the download to complete
## Features That Use OSM Data
- **[Speed Limit Control](speed-limit.md)** — Reads speed limits from map data
- **[Smart Cruise Control — Map](scc-m.md)** — Uses road geometry for proactive speed adjustment
## Managing Map Data
- **Update:** Tap "Database Update" to check for newer map data
- **Delete:** Tap "Delete Maps" to remove downloaded data and free storage
## Settings Reference
See [OSM Maps Settings](../settings/osm.md) for all options and status information.
+30
View File
@@ -0,0 +1,30 @@
---
title: Smart Cruise Control - Map
---
# Smart Cruise Control — Map (SCC-M)
## What It Does
SCC-M uses downloaded OpenStreetMap data to anticipate road changes — curves, speed limits, and intersections — and adjusts cruise speed proactively through [ICBM](icbm.md).
## How It Works
1. OSM map data provides information about upcoming road geometry
2. SCC-M calculates appropriate speeds for curves, speed zones, and intersections
3. Speed commands are sent through ICBM to adjust cruise before reaching these road features
## Requirements
!!! info "Requirements"
- [ICBM](icbm.md) must be enabled
- Vehicle must support ICBM
- [OSM Maps](osm-maps.md) must be configured and downloaded
## How to Enable
**Settings****sunnypilot****Cruise Control****Smart Cruise Control — Map**
## Settings Reference
See [Cruise Control Settings](../settings/cruise.md) for configuration details.
+28
View File
@@ -0,0 +1,28 @@
---
title: Smart Cruise Control - Vision
---
# Smart Cruise Control — Vision (SCC-V)
## What It Does
SCC-V uses the device's camera to detect lead vehicles and make smarter cruise control decisions. It provides vision-based adaptive speed adjustments for vehicles that rely on ICBM for cruise management.
## How It Works
The camera continuously monitors the road ahead. When a lead vehicle is detected, SCC-V adjusts cruise speed commands through [ICBM](icbm.md) to maintain safe following distances and react to speed changes of the vehicle ahead.
## Requirements
!!! info "Requirements"
- [ICBM](icbm.md) must be enabled
- Vehicle must support ICBM
- Camera must have a clear view of the road ahead
## How to Enable
**Settings****sunnypilot****Cruise Control****Smart Cruise Control — Vision**
## Settings Reference
See [Cruise Control Settings](../settings/cruise.md) for configuration details.
+51
View File
@@ -0,0 +1,51 @@
---
title: Speed Limit Control
---
# Speed Limit Control
## What It Does
Speed Limit Control detects the current speed limit using map data and can automatically adjust your cruise speed to match. It offers four operating modes ranging from passive information display to active speed management.
## How It Works
1. sunnypilot reads speed limit data from downloaded OSM maps
2. Based on your chosen mode, it displays, warns, or actively adjusts your set speed
3. An optional offset (fixed or percentage) lets you cruise slightly above or below the limit
## Requirements
!!! info "Requirements"
- Longitudinal control must be available, **or** [ICBM](icbm.md) must be enabled
- For map-based limits: [OSM Maps](osm-maps.md) must be configured and downloaded
## How to Enable
**Settings****sunnypilot****Cruise Control****Speed Limit Control**
## Operating Modes
| Mode | Behavior |
|------|----------|
| **Off** | Speed limit data is not used |
| **Info** | Shows the current speed limit on the driving display |
| **Warning** | Shows the speed limit and alerts you when you're exceeding it |
| **Assist** | Automatically adjusts cruise speed to match the speed limit |
## Speed Offset
You can set an offset so your cruise speed differs from the exact limit:
- **Fixed offset:** Add or subtract a set number of km/h or mph (range: -30 to +30)
- **Percentage offset:** Apply a percentage above or below the limit
## Vehicle Restrictions
!!! warning "Vehicle Restrictions"
- **Tesla:** Assist mode is disabled on release branches (Info and Warning still work)
- **Rivian:** Assist mode is always disabled
## Settings Reference
See [Speed Limit Settings](../settings/speed-limit.md) for all configuration options.
+48
View File
@@ -0,0 +1,48 @@
---
title: Torque Control
---
# Torque Control
## What It Does
Torque Control lets you fine-tune how aggressively or gently sunnypilot steers your vehicle. It provides advanced parameters for lateral acceleration, friction compensation, and self-tuning options.
## How It Works
Torque-based lateral control applies steering commands as torque (rotational force) to the steering motor. The key parameters are:
- **Lateral Acceleration Factor** — How strongly the system turns the wheel (higher = more aggressive)
- **Friction** — How much the system compensates for steering resistance
- **Self-Tune** — Automatically adjusts these values based on your driving
## Requirements
!!! info "Requirements"
- Vehicle must not use angle-based steering
- **Enforce Torque Control** must be enabled in [Steering Settings](../settings/steering.md)
- Mutually exclusive with [NNLC](nnlc.md) — only one can be active at a time
- Device must be offroad to change settings
## How to Enable
1. Go to **Settings****sunnypilot****Steering**
2. Enable **Enforce Torque Control**
3. Open the **Torque Settings** sub-panel to fine-tune
## Tuning Options
| Option | Description |
|--------|-------------|
| **Self-Tune** | Automatic real-time parameter adjustment |
| **Relaxed Self-Tune** | Less aggressive auto-tuning for smoother feel |
| **Custom Tune** | Manual parameter override |
| **Lat Accel Factor** | 0.015.00 (steering aggressiveness) |
| **Friction** | 0.011.00 (friction compensation) |
!!! tip
Start with Self-Tune enabled. Only switch to Custom Tune if you want precise control over steering feel and are willing to experiment.
## Settings Reference
See [Torque Settings](../settings/torque.md) for all tuning parameters.
@@ -0,0 +1,42 @@
---
title: Use sunnypilot in a car
---
# Use sunnypilot in a car
## What You Need
1. **A supported vehicle** — Check the compatibility list for your car's make, model, and year
2. **A comma device** — comma 3X or compatible hardware
3. **A vehicle harness** — Connects the device to your car's systems
4. **An internet connection** — For initial setup and software updates
## Getting Started
1. Mount the device on your windshield
2. Connect the harness to your car
3. Install sunnypilot using one of the setup methods:
- [URL Method](../setup/url-method.md) — Easiest, recommended for most users
- [SSH Method](../setup/ssh-method.md) — For advanced users
## First Drive
After installation:
1. Power on the device
2. Wait for the system to calibrate (drive straight for a few minutes)
3. Enable cruise control as you normally would
4. The system will begin assisting with steering and speed control
!!! tip
Give the system time to calibrate. Steering assistance improves after the first few minutes of straight driving.
## Configuring Settings
sunnypilot offers many configurable options. Access settings through the on-device interface:
- **Cruise Control** — Speed management, gap settings, and cruise behavior
- **Steering** — Lane keeping, MADS, and steering tuning
- **Display & Visuals** — Customize the on-screen display
See the [Settings Reference](../settings/cruise.md) for a complete guide to all options.
@@ -0,0 +1,31 @@
---
title: What is sunnypilot?
---
# What is sunnypilot?
sunnypilot is an open-source driver assistance system that enhances your car's existing features. It provides adaptive cruise control, lane centering, and many additional driving assists — all configurable to your preferences.
## Key Features
- **Adaptive Cruise Control** — Automatically adjusts speed to maintain distance from the car ahead
- **Lane Centering** — Keeps your car centered in the lane on highways and well-marked roads
- **Modular Assistive Driving System (MADS)** — Decouple lateral and longitudinal controls for flexible driving
- **Speed Limit Control** — Automatically adjust speed based on map and sign data
- **Neural Network Lateral Control** — AI-based steering for smoother lane keeping
## How It Works
sunnypilot runs on a compatible device mounted in your car. It connects to your vehicle through a supported harness and uses cameras, radar, and other sensors to assist with driving.
!!! warning "Safety First"
sunnypilot is a **driver assistance** system, not a self-driving system. You must keep your hands on the wheel and eyes on the road at all times. See [Safety Information](../safety/safety.md) for details.
## Supported Vehicles
sunnypilot supports a wide range of vehicles. Check the [openpilot vehicle compatibility list](https://github.com/commaai/openpilot/blob/master/docs/CARS.md) for base compatibility, plus additional sunnypilot-specific enhancements for select brands.
## Next Steps
- [Use sunnypilot in a car](use-sunnypilot-in-a-car.md) — Overview of what you need
- [Read before installing](../setup/read-before-installing.md) — Important pre-installation info
+29
View File
@@ -0,0 +1,29 @@
---
title: Home
---
# sunnypilot Documentation
Welcome to the official sunnypilot documentation. Find everything you need to get started, configure your system, and get the most out of your driving experience.
## Quick Links
<div class="grid cards" markdown>
- :material-rocket-launch: **[Getting Started](getting-started/what-is-sunnypilot.md)**
Learn what sunnypilot is and how to set it up
- :material-cog: **[Settings Reference](settings/cruise.md)**
Complete guide to every configurable option
- :material-car: **[Features](features/mads.md)**
Explore all features and how they work
- :material-shield: **[Safety](safety/safety.md)**
Important safety information for all users
</div>
+27
View File
@@ -0,0 +1,27 @@
---
title: Branch Definitions
---
# Branch Definitions
Understanding sunnypilot's branching strategy.
## Branch Types
| Branch | Stability | Purpose |
|--------|----------|---------|
| Release | Stable | Production-ready releases |
| Staging | Beta | Pre-release testing |
| Dev | Alpha | Active development |
| Main | Development | Latest code, may be unstable |
## Naming Convention
Branches follow the pattern: `<type>-<version>` (e.g., `release-0.9.x`)
## Which Branch Should I Use?
- **Daily driving** → Release branch
- **Want new features early** → Staging branch
- **Helping test** → Dev branch
- **Contributing code** → Main branch
@@ -0,0 +1,21 @@
---
title: Recommended Branches
---
# Recommended Branches
Choose the right branch for your needs.
## For Most Users
Use the latest **stable** release branch. This provides the best balance of features and reliability.
## For Testers
Use the **staging** or **dev** branch to test upcoming features and provide feedback.
## For Developers
Use the **main** branch for the latest development code.
See [Branch Definitions](branch-definitions.md) for detailed descriptions of each branch type.
@@ -0,0 +1,22 @@
---
title: Prohibited Modifications
---
# Prohibited Modifications
Certain modifications to sunnypilot are prohibited for safety reasons.
!!! danger
Modifying safety-critical components can result in dangerous driving behavior, vehicle damage, or personal injury.
## What Is Prohibited
- Disabling or bypassing driver monitoring
- Removing steering torque limits
- Modifying braking safety thresholds
- Bypassing vehicle safety interlocks
- Any modification that reduces the driver's ability to take manual control
## Why These Restrictions Exist
These restrictions protect you, your passengers, and other road users. Safety-critical systems have been carefully tuned and tested. Unauthorized modifications can have unpredictable and dangerous consequences.
+38
View File
@@ -0,0 +1,38 @@
---
title: Safety Information
---
# Safety Information
!!! danger "Important"
sunnypilot is a **driver assistance** system. It is **NOT** a self-driving system. The driver must maintain attention at all times.
## Driver Responsibilities
- **Keep your hands on the wheel** at all times
- **Keep your eyes on the road** — do not rely on the system to detect all hazards
- **Be ready to take over** immediately at any time
- **Follow all traffic laws** — the system does not replace your judgment
## System Limitations
sunnypilot may not perform well in:
- Heavy rain, snow, or fog
- Construction zones
- Unmarked or poorly marked roads
- Unusual traffic situations
- Night driving with poor lighting
## When to Disengage
Immediately take manual control if:
- The system behaves unexpectedly
- Road conditions change suddenly
- You enter an unfamiliar or complex driving situation
- Emergency vehicles are present
## Prohibited Use
See [Prohibited Modifications](prohibited-modifications.md) for modifications and uses that are not allowed.
+135
View File
@@ -0,0 +1,135 @@
---
title: Cruise Control Settings
---
# Cruise Control Settings
Settings for adaptive cruise control behavior, including intelligent button management, smart cruise features, and custom speed increments.
**Location:** Settings → sunnypilot → Cruise Control
---
## Intelligent Cruise Button Management (ICBM)
| Property | Value |
|----------|-------|
| **Param** | `IntelligentCruiseButtonManagement` |
| **Type** | Toggle (On/Off) |
| **Default** | Off |
Allows sunnypilot to dynamically manage cruise speed by intercepting button presses on the steering wheel. When enabled, speed adjustments are handled intelligently to support features like Speed Limit Control.
!!! info "Requirements"
- Vehicle must support ICBM (shown only when `intelligentCruiseButtonManagementAvailable` is true in car parameters)
!!! note "Vehicle Compatibility"
Not all vehicles support ICBM. If this toggle does not appear, your vehicle does not support this feature.
---
## Smart Cruise Control — Vision (SCC-V)
| Property | Value |
|----------|-------|
| **Param** | `SmartCruiseControlVision` |
| **Type** | Toggle (On/Off) |
| **Default** | Off |
Uses vision-based data to make smarter cruise control decisions, such as adjusting speed based on detected lead vehicles.
!!! info "Requirements"
- ICBM must be enabled
- Vehicle must support ICBM
---
## Smart Cruise Control — Map (SCC-M)
| Property | Value |
|----------|-------|
| **Param** | `SmartCruiseControlMap` |
| **Type** | Toggle (On/Off) |
| **Default** | Off |
Uses map data (curves, speed limits) to adjust cruise speed proactively.
!!! info "Requirements"
- ICBM must be enabled
- Vehicle must support ICBM
---
## Custom ACC Increments
| Property | Value |
|----------|-------|
| **Param** | `CustomAccIncrementsEnabled` |
| **Type** | Toggle (On/Off) |
| **Default** | Off |
Enables customization of how much the set speed changes with short and long button presses on the steering wheel.
!!! info "Requirements"
- Longitudinal control must be available, **or** ICBM must be enabled
- PCM Cruise must not be active
### Short Press Increment
| Property | Value |
|----------|-------|
| **Param** | `CustomAccShortPressIncrement` |
| **Type** | Option selector |
| **Range** | 110 |
| **Default** | 1 |
Sets the speed change (in your unit preference: km/h or mph) for a short press of the cruise speed button.
### Long Press Increment
| Property | Value |
|----------|-------|
| **Param** | `CustomAccLongPressIncrement` |
| **Type** | Option selector |
| **Options** | 1 → 1, 2 → 5, 3 → 10 |
| **Default** | 1 (value: 1) |
Sets the speed change for a long press. The mapping is:
| Selection | Speed Change |
|-----------|-------------|
| 1 | 1 km/h (or mph) |
| 2 | 5 km/h (or mph) |
| 3 | 10 km/h (or mph) |
---
## Dynamic Experimental Control (DEC)
| Property | Value |
|----------|-------|
| **Param** | `DynamicExperimentalControl` |
| **Type** | Toggle (On/Off) |
| **Default** | Off |
Automatically switches between openpilot and experimental mode based on driving conditions. When enabled, the system uses real-time signals (speed, turn detection, stop signs, traffic lights) to determine the most appropriate driving mode.
!!! info "Requirements"
- Longitudinal control must be available
- Device must be offroad to toggle
---
## Speed Limit Control
Speed Limit Control settings are located in a sub-panel within Cruise Control. See the dedicated [Speed Limit Settings](speed-limit.md) page for full details.
---
## Related Features
- [Intelligent Cruise Button Management](../features/icbm.md)
- [Smart Cruise Control — Vision](../features/scc-v.md)
- [Smart Cruise Control — Map](../features/scc-m.md)
- [Custom ACC Increments](../features/custom-acc-increments.md)
- [Dynamic Experimental Control](../features/dynamic-experimental-control.md)
+74
View File
@@ -0,0 +1,74 @@
---
title: Developer Settings
---
# Developer Settings
Advanced settings for developers and power users. Most of these settings are hidden behind the Advanced Controls toggle.
**Location:** Settings → sunnypilot → Developer
---
## Show Advanced Controls
| Property | Value |
|----------|-------|
| **Param** | `ShowAdvancedControls` |
| **Type** | Toggle (On/Off) |
| **Default** | Off |
Master toggle that reveals advanced settings throughout the sunnypilot UI. Many settings across different panels are only visible when this is enabled.
**Settings gated by Advanced Controls:**
- Models & AI → Lane Turn Value, LAGD Delay
- Software → Disable Updates
- Developer → GitHub Runner, Error Log, Copyparty, Quick Boot
---
## Enable GitHub Runner
| Property | Value |
|----------|-------|
| **Param** | `EnableGithubRunner` |
| **Type** | Toggle (On/Off) |
| **Default** | Off |
Enables the GitHub Actions self-hosted runner on the device. This allows the device to execute CI/CD jobs.
!!! info "Requirements"
- Advanced Controls must be enabled
- Only available on non-release branches
---
## Enable Copyparty
| Property | Value |
|----------|-------|
| **Param** | `EnableCopyparty` |
| **Type** | Toggle (On/Off) |
| **Default** | Off |
Enables the Copyparty file sharing server on the device, allowing easy file transfer to and from the device over the network.
!!! info "Requirements"
- Advanced Controls must be enabled
---
## Quick Boot
| Property | Value |
|----------|-------|
| **Param** | `QuickBootToggle` |
| **Type** | Toggle (On/Off) |
| **Default** | Off |
Enables a faster boot sequence by skipping certain initialization steps. Can reduce the time from power-on to driving readiness.
!!! info "Requirements"
- Advanced Controls must be enabled
- Updates must not be disabled (`DisableUpdates` must be Off)
+94
View File
@@ -0,0 +1,94 @@
---
title: Device Settings
---
# Device Settings
Configure device-level behavior including power management, upload settings, and boot options.
**Location:** Settings → sunnypilot → Device
---
## Max Time Offroad
| Property | Value |
|----------|-------|
| **Param** | `MaxTimeOffroad` |
| **Type** | Option selector |
| **Range** | 011 |
| **Default** | 0 |
Controls how long the device stays powered on after the vehicle is turned off (offroad). Useful for preserving battery or keeping the device ready for quick starts.
| Value | Duration |
|-------|----------|
| 0 | Immediate shutdown |
| 1 | 5 minutes |
| 2 | 15 minutes |
| 3 | 30 minutes |
| 4 | 1 hour |
| 5 | 2 hours |
| 6 | 3 hours |
| 7 | 6 hours |
| 8 | 12 hours |
| 9 | 24 hours |
| 10 | 48 hours |
| 11 | 30 hours (1800 minutes) |
---
## Device Boot Mode
| Property | Value |
|----------|-------|
| **Param** | `DeviceBootMode` |
| **Type** | Multi-button selector |
| **Options** | Default · Offroad |
| **Default** | Default |
Controls the device's boot behavior:
| Mode | Behavior |
|------|----------|
| **Default** | Normal boot process — device initializes all driving systems on start |
| **Offroad** | Boot into offroad-only mode — useful for configuration and updates without driving |
---
## Quiet Mode
| Property | Value |
|----------|-------|
| **Param** | `QuietMode` |
| **Type** | Dual-button toggle |
| **Default** | Off |
Silences non-critical audible alerts from the device. Safety-critical alerts are never silenced.
---
## Onroad Uploads
| Property | Value |
|----------|-------|
| **Param** | `OnroadUploads` |
| **Type** | Dual-button toggle |
| **Default** | Off |
When enabled, allows the device to upload driving data (logs, video segments) while you're actively driving. When disabled, uploads only occur while parked.
---
## Always Offroad
| Property | Value |
|----------|-------|
| **Param** | `OffroadMode` |
| **Type** | Button |
| **Default** | N/A |
Forces the device into offroad mode, even if the vehicle is running. This is useful for changing settings that require the device to be offroad (like torque tuning or NNLC).
!!! tip
Some vehicle-specific settings (e.g., Tesla Cooperative Steering, Subaru Stop and Go) require the device to be offroad. Use this button to access those settings without turning off the vehicle.
+67
View File
@@ -0,0 +1,67 @@
---
title: Display Settings
---
# Display Settings
Control screen brightness, timeout, and interactivity behavior while driving.
**Location:** Settings → sunnypilot → Display
---
## Onroad Screen Off Brightness
| Property | Value |
|----------|-------|
| **Param** | `OnroadScreenOffBrightness` |
| **Type** | Option selector |
| **Range** | 022 |
| **Default** | 0 (Auto) |
Controls the screen brightness level when the display times out during driving.
| Value | Label | Behavior |
|-------|-------|----------|
| 0 | Auto | Adjusts brightness automatically based on ambient conditions |
| 1 | Auto Dark | Same as Auto, but dims more aggressively |
| 2 | Screen Off | Turns the screen completely off |
| 322 | 5%100% | Fixed brightness percentage (increments of 5%) |
---
## Onroad Brightness Delay
| Property | Value |
|----------|-------|
| **Param** | `OnroadScreenOffTimer` |
| **Type** | Option selector |
| **Range** | 015 |
| **Default** | 0 |
Sets how long the screen stays at full brightness before dimming to the "Screen Off Brightness" level. The values map to specific time durations.
!!! info "Requirements"
- This setting is disabled when **Onroad Screen Off Brightness** is set to Auto or Auto Dark (values 0 or 1), since those modes manage brightness continuously
---
## Interactivity Timeout
| Property | Value |
|----------|-------|
| **Param** | `InteractivityTimeout` |
| **Type** | Option selector |
| **Range** | 0120 seconds (step: 10) |
| **Default** | 0 (disabled) |
Sets how long the screen remains interactive after the last touch. After this timeout, the screen becomes non-interactive (touch inputs are ignored) until you tap to wake it.
- **0:** Disabled — screen always remains interactive
- **10120:** Screen becomes non-interactive after the specified number of seconds
---
## Related Features
- [Onroad Display](../features/onroad-display.md)
+54
View File
@@ -0,0 +1,54 @@
---
title: Lane Change Settings
---
# Lane Change Settings
Configure automatic lane change behavior and blind spot monitoring integration.
**Location:** Settings → sunnypilot → Steering → Lane Change Settings
---
## Auto Lane Change Timer
| Property | Value |
|----------|-------|
| **Param** | `AutoLaneChangeTimer` |
| **Type** | Option selector |
| **Options** | Off · Nudge · Nudgeless · 0.5s · 1s · 2s · 3s |
| **Default** | Off (value: -1) |
Controls how lane changes are initiated when the turn signal is activated:
| Option | Value | Behavior |
|--------|-------|----------|
| **Off** | -1 | Auto lane change is disabled |
| **Nudge** | 0 | Requires a light steering nudge in the desired direction to start the lane change |
| **Nudgeless** | 1 | Lane change begins immediately when the turn signal is activated (no nudge needed) |
| **0.5s** | 2 | Lane change begins 0.5 seconds after the turn signal is activated |
| **1s** | 3 | Lane change begins 1 second after activation |
| **2s** | 4 | Lane change begins 2 seconds after activation |
| **3s** | 5 | Lane change begins 3 seconds after activation |
---
## BSM Delay
| Property | Value |
|----------|-------|
| **Param** | `AutoLaneChangeBsmDelay` |
| **Type** | Toggle (On/Off) |
| **Default** | Off |
When enabled, the system waits for the blind spot to clear before executing a lane change. If a vehicle is detected in the blind spot, the lane change is delayed until the path is clear.
!!! info "Requirements"
- Vehicle must support Blind Spot Monitoring (BSM) — only shown when `enableBsm` is true in car parameters
- Auto Lane Change Timer must be set to a mode beyond Nudge (i.e., Nudgeless or a timed option)
---
## Related Features
- [Auto Lane Change](../features/auto-lane-change.md)
+73
View File
@@ -0,0 +1,73 @@
---
title: MADS Settings
---
# MADS Settings
Fine-tune how the Modular Assistive Driving System (MADS) engages and disengages steering assistance.
**Location:** Settings → sunnypilot → Steering → MADS Settings
!!! info "Prerequisite"
The main **MADS** toggle must be enabled in [Steering Settings](steering.md) to access these settings.
---
## Main Cruise Allowed
| Property | Value |
|----------|-------|
| **Param** | `MadsMainCruiseAllowed` |
| **Type** | Toggle (On/Off) |
| **Default** | Off |
When enabled, pressing the main cruise button (the on/off button on the steering wheel) can activate MADS steering assistance.
!!! warning "Vehicle Restrictions"
- **Rivian:** Always forced OFF (limited settings mode)
- **Tesla (without vehicle bus):** Always forced OFF (limited settings mode)
---
## Unified Engagement Mode
| Property | Value |
|----------|-------|
| **Param** | `MadsUnifiedEngagementMode` |
| **Type** | Toggle (On/Off) |
| **Default** | Off |
When enabled, engaging cruise control also automatically engages MADS lateral control in a single action, rather than requiring separate activation.
!!! warning "Vehicle Restrictions"
- **Rivian:** Always forced ON (limited settings mode)
- **Tesla (without vehicle bus):** Always forced ON (limited settings mode)
---
## Steering Mode on Disengage
| Property | Value |
|----------|-------|
| **Param** | `MadsSteeringMode` |
| **Type** | Multi-button selector |
| **Options** | Remain Active · Pause · Disengage |
| **Default** | Remain Active |
Controls what happens to MADS steering assistance when you disengage cruise control:
| Mode | Behavior |
|------|----------|
| **Remain Active** | Steering assistance continues even after cruise is disengaged |
| **Pause** | Steering assistance pauses but can be quickly resumed |
| **Disengage** | Steering assistance fully disengages with cruise |
!!! warning "Vehicle Restrictions"
- **Rivian:** Always forced to Disengage (limited settings mode)
- **Tesla (without vehicle bus):** Always forced to Disengage (limited settings mode)
---
## Related Features
- [Modular Assistive Driving System](../features/mads.md)
+78
View File
@@ -0,0 +1,78 @@
---
title: Models & AI Settings
---
# Models & AI Settings
Configure driving model behavior and advanced AI parameters.
**Location:** Settings → sunnypilot → Models & AI
---
## Model Selection
Select which driving model to use. Different models may have different driving characteristics and capabilities.
!!! warning "Offroad Only"
Model selection can only be changed while the vehicle is offroad (parked with ignition off).
---
## Lane Turn Desire
| Property | Value |
|----------|-------|
| **Param** | `LaneTurnDesire` |
| **Type** | Toggle (On/Off) |
| **Default** | Off |
Enables lane-aware turn desire signals to the driving model. When active, the model receives enhanced lane positioning cues during turns.
### Lane Turn Value
| Property | Value |
|----------|-------|
| **Param** | `LaneTurnValue` |
| **Type** | Option selector |
| **Range** | 5002000 (displayed with float scaling) |
| **Default** | 500 |
Adjusts the intensity of the lane turn desire signal sent to the model. Higher values produce a stronger turn desire.
!!! info "Requirements"
- Lane Turn Desire must be enabled
- Advanced Controls must be enabled (`ShowAdvancedControls`)
---
## LAGD (Look-Ahead Generative Driving)
| Property | Value |
|----------|-------|
| **Param** | `LagdToggle` |
| **Type** | Toggle (On/Off) |
| **Default** | Off |
Enables the Look-Ahead Generative Driving feature, which uses generative AI to anticipate road conditions ahead.
### LAGD Delay
| Property | Value |
|----------|-------|
| **Param** | `LagdToggleDelay` |
| **Type** | Option selector |
| **Range** | 550 (displayed with float scaling) |
| **Default** | 5 |
Configures the look-ahead delay for LAGD. Higher values make the system look further ahead.
!!! info "Requirements"
- LAGD must be **disabled** (this setting is shown when LAGD is off to configure its parameters before enabling)
- Advanced Controls must be enabled (`ShowAdvancedControls`)
---
## Related Features
- [Models & AI](../features/models.md)
+79
View File
@@ -0,0 +1,79 @@
---
title: OSM Maps Settings
---
# OSM Maps Settings
Manage OpenStreetMap (OSM) data used for speed limit information, curve detection, and other map-aware features.
**Location:** Settings → sunnypilot → OSM Maps
---
## Overview
The OSM Maps panel provides tools for downloading and managing offline map data. Unlike other settings panels, this section is primarily action-based rather than toggle-based.
---
## Country Selection
Select the country for which you want to download map data. This sets the regional map database used by sunnypilot for speed limit lookups and road information.
| Property | Value |
|----------|-------|
| **Param (state)** | `OsmLocationName`, `OsmLocationTitle` |
| **Type** | Selector |
---
## State Selection (US Only)
If you selected the United States as your country, you can further narrow the download to a specific state. This reduces download size and improves performance.
| Property | Value |
|----------|-------|
| **Param (state)** | `OsmStateName`, `OsmStateTitle` |
| **Type** | Selector |
| **Visibility** | Only shown when country is United States |
---
## Database Update
Check for and download updates to your selected region's OSM map data.
| Property | Value |
|----------|-------|
| **Param (state)** | `OsmDbUpdatesCheck` |
| **Type** | Action button |
---
## Delete Maps
Remove all downloaded map data from the device to free up storage space.
| Property | Value |
|----------|-------|
| **Type** | Action button |
---
## Status Information
The panel displays the following read-only information:
| Field | Param | Description |
|-------|-------|-------------|
| **Local Maps** | `OsmLocal` | Whether map data is stored locally |
| **Last Downloaded** | `OsmDownloadedDate` | When the map data was last downloaded |
| **Map Daemon Version** | `MapdVersion` | Version of the map processing daemon |
---
## Related Features
- [OSM Maps](../features/osm-maps.md)
- [Speed Limit Control](../features/speed-limit.md)
- [Smart Cruise Control — Map](../features/scc-m.md)
+45
View File
@@ -0,0 +1,45 @@
---
title: Software Settings
---
# Software Settings
Manage software updates and branch selection.
**Location:** Settings → sunnypilot → Software
---
## Disable Updates
| Property | Value |
|----------|-------|
| **Param** | `DisableUpdates` |
| **Type** | Toggle (On/Off) |
| **Default** | Off |
Prevents sunnypilot from checking for and applying software updates. When enabled, the device will remain on the current version indefinitely.
!!! warning "Reboot Required"
Changing this setting requires a device reboot to take effect.
!!! info "Requirements"
- Device must be offroad
- Advanced Controls must be enabled (`ShowAdvancedControls`)
---
## Branch Switching
The Software panel also allows switching between different sunnypilot branches.
| Property | Value |
|----------|-------|
| **Param (target)** | `UpdaterTargetBranch` |
| **Param (available)** | `UpdaterAvailableBranches` |
| **Type** | Branch selector |
Select from available branches to switch your device to a different version of sunnypilot. See [Branch Definitions](../references/branch-definitions.md) and [Recommended Branches](../references/recommended-branches.md) for guidance on which branch to use.
!!! tip
For daily driving, stick with the latest **release** branch. Only switch to staging or dev branches if you want to test new features.
+84
View File
@@ -0,0 +1,84 @@
---
title: Speed Limit Settings
---
# Speed Limit Settings
Configure how sunnypilot responds to detected speed limits from maps, signs, and navigation data.
**Location:** Settings → sunnypilot → Cruise Control → Speed Limit Control
---
## Speed Limit Mode
| Property | Value |
|----------|-------|
| **Param** | `SpeedLimitMode` |
| **Type** | Multi-button selector |
| **Options** | Off · Info · Warning · Assist |
| **Default** | Off |
Controls how sunnypilot uses speed limit information:
| Mode | Behavior |
|------|----------|
| **Off** | Speed limit data is not used |
| **Info** | Displays the current speed limit on the HUD |
| **Warning** | Displays speed limit and alerts you when exceeding it |
| **Assist** | Automatically adjusts cruise speed to match the speed limit (with optional offset) |
!!! info "Requirements"
- Longitudinal control must be available, **or** ICBM must be enabled
!!! warning "Vehicle Restrictions"
- **Tesla:** Speed Limit Assist mode is disabled on release branches
- **Rivian:** Speed Limit Assist mode is always disabled
---
## Speed Limit Offset Type
| Property | Value |
|----------|-------|
| **Param** | `SpeedLimitOffsetType` |
| **Type** | Multi-button selector |
| **Options** | None · Fixed · % |
| **Default** | None |
Choose how the speed offset is calculated:
| Type | Description |
|------|-------------|
| **None** | No offset — cruise matches exact speed limit |
| **Fixed** | A fixed value (in km/h or mph) is added to or subtracted from the limit |
| **%** | A percentage is applied to the speed limit |
---
## Speed Limit Value Offset
| Property | Value |
|----------|-------|
| **Param** | `SpeedLimitValueOffset` |
| **Type** | Option selector |
| **Range** | -30 to +30 |
| **Default** | 0 |
The offset value applied to the detected speed limit. Only active when **Offset Type** is set to Fixed or %.
- **Positive values:** Cruise faster than the limit (e.g., +5 means 5 over)
- **Negative values:** Cruise slower than the limit (e.g., -5 means 5 under)
---
## Speed Limit Policy
Speed Limit Policy is a sub-panel that controls the priority of speed limit data sources. See your device for available options.
---
## Related Features
- [Speed Limit Control](../features/speed-limit.md)
- [OSM Maps](../features/osm-maps.md)
+116
View File
@@ -0,0 +1,116 @@
---
title: Steering Settings
---
# Steering Settings
Configure lateral (steering) control behavior including MADS, lane changes, and torque settings.
**Location:** Settings → sunnypilot → Steering
---
## M.A.D.S. (Modular Assistive Driving System)
| Property | Value |
|----------|-------|
| **Param** | `Mads` |
| **Type** | Toggle (On/Off) |
| **Default** | Off |
Enables the Modular Assistive Driving System, which decouples lateral (steering) control from longitudinal (speed) control. This means steering assistance can remain active even when cruise control is not engaged.
See the dedicated [MADS Settings](mads.md) page for sub-panel options.
---
## Blinker Pause Lateral Control
| Property | Value |
|----------|-------|
| **Param** | `BlinkerPauseLateralControl` |
| **Type** | Toggle (On/Off) |
| **Default** | Off |
When enabled, lateral (steering) control is temporarily paused while the turn signal is active. This gives you full manual steering control during turns without needing to disengage.
---
## Blinker Minimum Lateral Control Speed
| Property | Value |
|----------|-------|
| **Param** | `BlinkerMinLateralControlSpeed` |
| **Type** | Option selector |
| **Range** | 0255 km/h (step: 5) |
| **Default** | 0 |
Sets the minimum speed (in your preferred unit) below which lateral control pauses when the blinker is active. At 0, lateral control pauses at all speeds when the blinker is on.
---
## Blinker Lateral Re-engage Delay
| Property | Value |
|----------|-------|
| **Param** | `BlinkerLateralReengageDelay` |
| **Type** | Option selector |
| **Range** | 010 seconds |
| **Default** | 0 |
Configures the delay (in seconds) before lateral control re-engages after the turn signal is turned off. Useful for completing a turn before steering assistance resumes.
---
## Enforce Torque Control
| Property | Value |
|----------|-------|
| **Param** | `EnforceTorqueControl` |
| **Type** | Toggle (On/Off) |
| **Default** | Off |
Forces torque-based lateral control on your vehicle, even if it natively uses angle-based control.
!!! info "Requirements"
- Not available on vehicles with angle-based steering (`steerControlType == angle`)
- Mutually exclusive with NNLC — enabling Torque Control disables NNLC
- Device must be offroad to toggle
See the dedicated [Torque Settings](torque.md) page for advanced tuning.
---
## Neural Network Lateral Control (NNLC)
| Property | Value |
|----------|-------|
| **Param** | `NeuralNetworkLateralControl` |
| **Type** | Toggle (On/Off) |
| **Default** | Off |
Enables a neural network model to handle lateral control instead of the traditional PID/torque controller. NNLC can provide smoother steering in some situations.
!!! info "Requirements"
- Not available on vehicles with angle-based steering (`steerControlType == angle`)
- Mutually exclusive with Enforce Torque Control — enabling NNLC disables Torque Control
- Device must be offroad to toggle
---
## Sub-Panels
The Steering section contains these additional sub-panels with their own settings:
- **[MADS Settings](mads.md)** — Configure MADS engagement modes and behavior
- **[Lane Change Settings](lane-change.md)** — Configure auto lane change timing and BSM integration
- **[Torque Settings](torque.md)** — Fine-tune torque lateral control parameters
---
## Related Features
- [Modular Assistive Driving System](../features/mads.md)
- [Neural Network Lateral Control](../features/nnlc.md)
- [Auto Lane Change](../features/auto-lane-change.md)
- [Torque Control](../features/torque-control.md)
+124
View File
@@ -0,0 +1,124 @@
---
title: Torque Settings
---
# Torque Settings
Advanced tuning parameters for torque-based lateral (steering) control. These settings allow fine-grained control over how the steering motor responds.
**Location:** Settings → sunnypilot → Steering → Torque Settings
!!! info "Prerequisite"
**Enforce Torque Control** must be enabled in [Steering Settings](steering.md) to access these settings. Not available on vehicles with angle-based steering.
!!! warning "Offroad Only"
All torque settings can only be changed while the vehicle is offroad (parked with ignition off).
---
## Self-Tune (Live Torque)
| Property | Value |
|----------|-------|
| **Param** | `LiveTorqueParamsToggle` |
| **Type** | Toggle (On/Off) |
| **Default** | Off |
Enables real-time self-tuning of torque parameters based on driving behavior. The system continuously adjusts lateral acceleration factor and friction values for optimal steering feel.
---
## Relaxed Self-Tune
| Property | Value |
|----------|-------|
| **Param** | `LiveTorqueParamsRelaxedToggle` |
| **Type** | Toggle (On/Off) |
| **Default** | Off |
Uses a more relaxed (less aggressive) self-tuning profile. May provide a smoother but less responsive steering feel.
!!! info "Requirements"
- Self-Tune (Live Torque) must be enabled
---
## Custom Tune
| Property | Value |
|----------|-------|
| **Param** | `CustomTorqueParams` |
| **Type** | Toggle (On/Off) |
| **Default** | Off |
Enables manual override of torque control parameters. When enabled, you can set specific values for lateral acceleration and friction instead of relying on self-tuning.
---
## Override Enabled
| Property | Value |
|----------|-------|
| **Param** | `TorqueParamsOverrideEnabled` |
| **Type** | Toggle (On/Off) |
| **Default** | Off |
Master switch for applying your custom torque parameter overrides.
!!! info "Requirements"
- Custom Tune must be enabled
---
## Lateral Acceleration Factor
| Property | Value |
|----------|-------|
| **Param** | `TorqueParamsOverrideLatAccelFactor` |
| **Type** | Option selector |
| **Range** | 1500 (displayed as value ÷ 100) |
| **Default** | 100 (displayed as 1.00) |
Controls the lateral acceleration gain. Higher values produce more aggressive steering response; lower values produce softer response.
- Display: The raw value is divided by 100 (e.g., 250 → 2.50)
- Example: A value of 150 means 1.50× lateral acceleration factor
!!! info "Requirements"
- Custom Tune must be enabled
---
## Friction
| Property | Value |
|----------|-------|
| **Param** | `TorqueParamsOverrideFriction` |
| **Type** | Option selector |
| **Range** | 1100 (displayed as value ÷ 100) |
| **Default** | 50 (displayed as 0.50) |
Controls the friction compensation factor. Adjusts how much the system compensates for steering friction in the vehicle.
- Display: The raw value is divided by 100 (e.g., 75 → 0.75)
!!! info "Requirements"
- Custom Tune must be enabled
---
## Torque Control Tune Version
| Property | Value |
|----------|-------|
| **Param** | `TorqueControlTune` |
| **Type** | Version selector |
| **Default** | Latest available |
Select which version of the torque control tuning algorithm to use. Newer versions may offer improved performance but can behave differently than what you're accustomed to.
---
## Related Features
- [Torque Control](../features/torque-control.md)
+41
View File
@@ -0,0 +1,41 @@
---
title: Hyundai Settings
---
# Hyundai / Kia / Genesis Vehicle Settings
Settings specific to Hyundai, Kia, and Genesis vehicles. These settings only appear when a supported vehicle is connected.
**Location:** Settings → sunnypilot → Vehicle
---
## Custom Longitudinal Tuning
| Property | Value |
|----------|-------|
| **Param** | `HyundaiLongitudinalTuning` |
| **Type** | Multi-button selector |
| **Options** | Off · Dynamic · Predictive |
| **Default** | Off (value: 0) |
Selects a longitudinal (speed) control tuning profile optimized for Hyundai/Kia/Genesis vehicles:
| Option | Behavior |
|--------|----------|
| **Off** | Default longitudinal tuning — standard acceleration and braking behavior |
| **Dynamic** | More responsive acceleration and braking for a sportier feel |
| **Predictive** | Smoother, anticipatory speed changes that prioritize comfort |
!!! info "Requirements"
- sunnypilot Longitudinal Control (Alpha) must be enabled
- Device must be offroad to change
- Vehicle platform must support Alpha Longitudinal (not all Hyundai/Kia/Genesis models support this)
!!! note "Platform Compatibility"
This setting is hidden for vehicles in the `UNSUPPORTED_LONGITUDINAL_CAR` or `CANFD_UNSUPPORTED_LONGITUDINAL_CAR` lists. If you don't see this option, your specific model does not support sunnypilot longitudinal control.
When the setting is unavailable, the description indicates the reason:
- "This feature is unavailable while the car is onroad." — Park and turn off the vehicle first
- "This feature is unavailable because sunnypilot Longitudinal Control (Alpha) is not enabled." — Enable Alpha Longitudinal in openpilot settings
+60
View File
@@ -0,0 +1,60 @@
---
title: Subaru Settings
---
# Subaru Vehicle Settings
Settings specific to Subaru vehicles. These settings only appear when a Subaru vehicle is connected.
**Location:** Settings → sunnypilot → Vehicle
---
## Stop and Go (Beta)
| Property | Value |
|----------|-------|
| **Param** | `SubaruStopAndGo` |
| **Type** | Toggle (On/Off) |
| **Default** | Off |
Enables auto-resume during stop-and-go traffic for certain supported Subaru platforms. Without this, you must manually resume after a full stop.
!!! info "Requirements"
- Device must be offroad to toggle
- Vehicle platform must support Stop and Go (not available on Global Gen2 or Hybrid platforms)
---
## Stop and Go for Manual Parking Brake (Beta)
| Property | Value |
|----------|-------|
| **Param** | `SubaruStopAndGoManualParkingBrake` |
| **Type** | Toggle (On/Off) |
| **Default** | Off |
Enables stop-and-go for Subaru Global models equipped with a **manual handbrake** (lever-type parking brake).
!!! warning "Important"
Models with an **electric parking brake** should keep this **disabled**. This setting is specifically designed for vehicles with a manual/lever parking brake.
!!! info "Requirements"
- Device must be offroad to toggle
- Vehicle platform must support Stop and Go (not available on Global Gen2 or Hybrid platforms)
!!! note "Credits"
Thanks to martinl for this implementation.
---
## Platform Compatibility
Both Stop and Go features are **not available** on:
- Subaru Global Gen2 platforms
- Subaru Hybrid platforms
If your vehicle falls into these categories, the toggles will be hidden or disabled with the message: "This feature is currently not available on this platform."
If the vehicle is onroad, you'll see: "Enable 'Always Offroad' in Device panel, or turn vehicle off to toggle."
+53
View File
@@ -0,0 +1,53 @@
---
title: Tesla Settings
---
# Tesla Vehicle Settings
Settings specific to Tesla vehicles. These settings only appear when a Tesla vehicle is connected.
**Location:** Settings → sunnypilot → Vehicle
---
## Cooperative Steering (Beta)
| Property | Value |
|----------|-------|
| **Param** | `TeslaCoopSteering` |
| **Type** | Toggle (On/Off) |
| **Default** | Off |
Allows the driver to provide limited steering input while sunnypilot is engaged. Without this feature, the driver must fully override or disengage to steer manually.
!!! warning "Important"
**May experience steering oscillations below 48 km/h (30 mph) during turns.** Recommend disabling this feature if you experience oscillations.
- Only works above **23 km/h** (14 mph)
- Speed thresholds are displayed in your preferred unit (km/h or mph)
!!! info "Requirements"
- Device must be offroad to toggle
- Use "Always Offroad" in [Device Settings](../device.md) if you need to change this while the vehicle is running
---
## MADS Limitations
Tesla vehicles **without a vehicle bus connection** operate in limited MADS mode:
| Setting | Forced Value |
|---------|-------------|
| Main Cruise Allowed | Off (locked) |
| Unified Engagement Mode | On (locked) |
| Steering Mode on Disengage | Disengage (locked) |
See [MADS Settings](../mads.md) for details on these settings.
---
## Speed Limit Control Restrictions
On **release branches**, the Speed Limit Assist mode is disabled for Tesla vehicles. Info and Warning modes remain available.
See [Speed Limit Settings](../speed-limit.md) for details.
+59
View File
@@ -0,0 +1,59 @@
---
title: Toyota Settings
---
# Toyota / Lexus Vehicle Settings
Settings specific to Toyota and Lexus vehicles. These settings only appear when a Toyota or Lexus vehicle is connected.
**Location:** Settings → sunnypilot → Vehicle
---
## Enforce Factory Longitudinal Control
| Property | Value |
|----------|-------|
| **Param** | `ToyotaEnforceStockLongitudinal` |
| **Type** | Toggle (On/Off) |
| **Default** | Off |
When enabled, sunnypilot will **not** take over control of gas and brakes. The factory Toyota/Lexus adaptive cruise control system handles all longitudinal (speed) control.
!!! warning "Side Effects"
Enabling this will:
- Disable sunnypilot longitudinal control
- Disable Alpha Longitudinal if it was enabled
- Force Stop and Go Hack to Off
- Trigger an onroad cycle (system restarts driving processes)
!!! info "Requirements"
- Cannot be changed while the system is engaged (driving)
- A confirmation dialog is shown before enabling
---
## Stop and Go Hack (Alpha)
| Property | Value |
|----------|-------|
| **Param** | `ToyotaStopAndGoHack` |
| **Type** | Toggle (On/Off) |
| **Default** | Off |
Allows some Toyota/Lexus cars to automatically resume from a stop during stop-and-go traffic. Without this, you must press the resume button or tap the gas to resume after a full stop.
!!! warning "Alpha Feature"
This is an alpha feature. Use at your own risk. Only applicable to certain models that support sunnypilot longitudinal control.
!!! info "Requirements"
- sunnypilot Longitudinal Control must be available and enabled
- Enforce Factory Longitudinal Control must be **Off**
- Cannot be changed while the system is engaged (driving)
- A confirmation dialog is shown before enabling
When requirements are not met, the toggle is disabled and a message indicates what's needed:
- If the vehicle is not connected: "Start the vehicle to check vehicle compatibility."
- If longitudinal control is not available: "sunnypilot Longitudinal Control must be available and enabled for your vehicle to use this feature."
+79
View File
@@ -0,0 +1,79 @@
---
title: Visuals & HUD Settings
---
# Visuals & HUD Settings
Customize what information is displayed on the driving screen (HUD) while driving.
**Location:** Settings → sunnypilot → Visuals & HUD
---
## Toggles
These are on/off toggles for individual HUD elements.
| Toggle | Param | Description |
|--------|-------|-------------|
| **Blind Spot Indicator** | `BlindSpot` | Shows a visual indicator when a vehicle is detected in your blind spot |
| **Torque Bar** | `TorqueBar` | Displays a bar showing the current steering torque applied |
| **Rainbow Mode** | `RainbowMode` | Adds a colorful visual effect to the driving path |
| **Standstill Timer** | `StandstillTimer` | Shows how long you've been stopped at a standstill |
| **Road Name** | `RoadNameToggle` | Displays the name of the road you're currently on |
| **Green Light Alert** | `GreenLightAlert` | Alerts you when a traffic light turns green while you're stopped |
| **Lead Depart Alert** | `LeadDepartAlert` | Alerts you when the car ahead starts moving while you're stopped |
| **True Vehicle Speed** | `TrueVEgoUI` | Shows the true vehicle speed from the CAN bus (may differ from GPS speed) |
| **Hide Speed** | `HideVEgoUI` | Hides the speed display from the HUD entirely |
| **Turn Signals** | `ShowTurnSignals` | Shows the turn signal status on the HUD |
| **Rocket Fuel** | `RocketFuel` | Enables the Rocket Fuel visual theme for the driving path |
---
## Chevron Info
| Property | Value |
|----------|-------|
| **Param** | `ChevronInfo` |
| **Type** | Multi-button selector |
| **Options** | Off · Distance · Speed · Time · All |
| **Default** | Off |
Controls what information is displayed near the lead vehicle chevron (the triangle marker shown above the car ahead of you):
| Option | What's Shown |
|--------|-------------|
| **Off** | No additional info near the chevron |
| **Distance** | Distance to the lead vehicle |
| **Speed** | Speed of the lead vehicle |
| **Time** | Time gap to the lead vehicle |
| **All** | All of the above |
!!! info "Requirements"
- Longitudinal control must be available
---
## Developer UI Info
| Property | Value |
|----------|-------|
| **Param** | `DevUIInfo` |
| **Type** | Multi-button selector |
| **Options** | Off · Bottom · Right · Right & Bottom |
| **Default** | Off |
Shows developer/debug information on the driving screen. Useful for diagnostics and troubleshooting.
| Option | Display Location |
|--------|-----------------|
| **Off** | No developer info shown |
| **Bottom** | Developer info at the bottom of the screen |
| **Right** | Developer info on the right side |
| **Right & Bottom** | Developer info on both right and bottom |
---
## Related Features
- [HUD & Visuals](../features/hud-visuals.md)
+42
View File
@@ -0,0 +1,42 @@
---
title: Read Before Installing
---
# Read Before Installing
Before installing sunnypilot, please review the following important information.
## Prerequisites
- A supported comma device (comma 3X or compatible)
- A compatible vehicle harness for your car
- A stable internet connection for the initial setup
- Your vehicle must be in the supported list
## Important Notes
!!! warning
- sunnypilot is a **driver assistance** system — always pay attention to the road
- Ensure your device firmware is up to date before installing
- Installation will replace any existing openpilot installation on your device
## Choosing an Installation Method
| Method | Difficulty | Best For |
|--------|-----------|----------|
| [URL Method](url-method.md) | Easy | Most users |
| [SSH Method](ssh-method.md) | Advanced | Developers and power users |
## After Installation
1. The device will download and install the software
2. A reboot may be required
3. Follow the on-screen setup wizard
4. Take a test drive to calibrate the system
## Getting Help
If you run into issues:
- Join the [Discord Community](https://discord.sunnypilot.ai)
- Check [Reporting a Bug](../community/reporting-a-bug.md) for how to submit issues
+35
View File
@@ -0,0 +1,35 @@
---
title: SSH Method
---
# SSH Method
The SSH method provides more control over the installation process. Recommended for advanced users.
## Prerequisites
- SSH access to your comma device
- Basic familiarity with the command line
## Steps
1. Connect to your device via SSH
2. Clone the sunnypilot repository:
```bash
cd /data
git clone https://github.com/sunnypilot/sunnypilot.git openpilot
```
3. Check out the desired branch:
```bash
cd openpilot
git checkout <branch-name>
```
4. Reboot the device
See [Branch Definitions](../references/branch-definitions.md) for available branches.
## Troubleshooting
- **SSH connection refused**: Ensure SSH is enabled in device settings
- **Git clone fails**: Check internet connectivity
- **Branch not found**: Verify the branch name in [Recommended Branches](../references/recommended-branches.md)
+28
View File
@@ -0,0 +1,28 @@
---
title: URL Method
---
# URL Method
The URL method is the easiest way to install sunnypilot on your comma device.
## Steps
1. On your comma device, navigate to **Settings** > **Software**
2. Tap **Uninstall** if you have an existing installation
3. Enter the sunnypilot installation URL when prompted
4. Wait for the download and installation to complete
5. The device will reboot automatically
## Recommended Branches
See [Recommended Branches](../references/recommended-branches.md) for which branch to install based on your needs.
!!! tip
Most users should install the latest stable branch for the best experience.
## Troubleshooting
- **Download stalls**: Check your internet connection and try again
- **Device doesn't reboot**: Manually reboot by holding the power button
- **Installation fails**: Try the [SSH Method](ssh-method.md) as an alternative
+6
View File
@@ -0,0 +1,6 @@
/**
* Copyright (c) 2021-, Haibin Wen, sunnypilot, and a number of other contributors.
*
* This file is part of sunnypilot and is licensed under the MIT License.
* See the LICENSE.md file in the root directory for more details.
*/
+151
View File
@@ -0,0 +1,151 @@
site_name: sunnypilot docs
repo_name: sunnypilot/sunnypilot
repo_url: https://github.com/sunnypilot/sunnypilot/
site_description: sunnypilot Documentation
site_url: https://docs.sunnypilot.ai
edit_uri: blob/docs/docs_sp
exclude_docs: README.md
strict: true
docs_dir: docs_sp
site_dir: docs_site_sp/
theme:
name: material
palette:
- media: "(prefers-color-scheme)"
toggle:
icon: material/brightness-auto
name: Switch to light mode
- scheme: default
media: "(prefers-color-scheme: light)"
primary: deep purple
accent: teal
toggle:
icon: material/brightness-7
name: Switch to dark mode
- scheme: slate
media: "(prefers-color-scheme: dark)"
primary: deep purple
accent: teal
toggle:
icon: material/brightness-4
name: Switch to system preference
font:
text: Open Sans
code: Fira Code
logo: assets/sp_logo.svg
favicon: assets/sp_logo.svg
features:
- content.code.copy
- navigation.tabs
- navigation.tabs.sticky
- navigation.sections
- navigation.expand
- navigation.top
- search.suggest
- search.highlight
- content.tabs.link
extra_css:
- stylesheets/style.css
markdown_extensions:
- admonition
- attr_list
- def_list
- footnotes
- md_in_html
- tables
- pymdownx.details
- pymdownx.emoji:
emoji_index: !!python/name:material.extensions.emoji.twemoji
emoji_generator: !!python/name:material.extensions.emoji.to_svg
- pymdownx.highlight:
anchor_linenums: true
line_spans: __span
pygments_lang_class: true
- pymdownx.inlinehilite
- pymdownx.magiclink:
normalize_issue_symbols: true
repo_url_shorthand: true
user: sunnypilot
repo: sunnypilot
- pymdownx.snippets
- pymdownx.superfences
- pymdownx.tabbed:
alternate_style: true
- pymdownx.tasklist:
custom_checkbox: true
clickable_checkbox: true
- toc:
permalink: true
plugins:
- search
nav:
- Home: index.md
- Getting Started:
- What is sunnypilot?: getting-started/what-is-sunnypilot.md
- Use sunnypilot in a car: getting-started/use-sunnypilot-in-a-car.md
- Setup:
- Read before installing: setup/read-before-installing.md
- URL Method: setup/url-method.md
- SSH Method: setup/ssh-method.md
- Features:
- Cruise Control:
- Intelligent Cruise Button Management: features/icbm.md
- Smart Cruise Control - Vision: features/scc-v.md
- Smart Cruise Control - Map: features/scc-m.md
- Custom ACC Increments: features/custom-acc-increments.md
- Dynamic Experimental Control: features/dynamic-experimental-control.md
- Speed Limit Control: features/speed-limit.md
- Steering:
- Modular Assistive Driving System: features/mads.md
- Neural Network Lateral Control: features/nnlc.md
- Auto Lane Change: features/auto-lane-change.md
- Torque Control: features/torque-control.md
- Display & Visuals:
- Onroad Display: features/onroad-display.md
- HUD & Visuals: features/hud-visuals.md
- Models & AI: features/models.md
- OSM Maps: features/osm-maps.md
- Settings Reference:
- Cruise Control: settings/cruise.md
- Speed Limit: settings/speed-limit.md
- Steering: settings/steering.md
- MADS: settings/mads.md
- Lane Change: settings/lane-change.md
- Torque: settings/torque.md
- Display: settings/display.md
- Visuals & HUD: settings/visuals.md
- Device: settings/device.md
- Models & AI: settings/models.md
- OSM Maps: settings/osm.md
- Software: settings/software.md
- Developer: settings/developer.md
- Vehicle-Specific:
- Tesla: settings/vehicle/tesla.md
- Toyota: settings/vehicle/toyota.md
- Hyundai: settings/vehicle/hyundai.md
- Subaru: settings/vehicle/subaru.md
- Community:
- Contributing: community/contributing.md
- Workflow: community/workflow.md
- Reporting a Bug: community/reporting-a-bug.md
- Discord Community: https://discord.sunnypilot.ai
- Safety:
- Safety Information: safety/safety.md
- Prohibited Modifications: safety/prohibited-modifications.md
- References:
- Recommended Branches: references/recommended-branches.md
- Branch Definitions: references/branch-definitions.md
extra:
social:
- icon: fontawesome/brands/github
link: https://github.com/sunnypilot/sunnypilot
- icon: fontawesome/brands/discord
link: https://discord.sunnypilot.ai
+1
View File
@@ -83,6 +83,7 @@ dependencies = [
docs = [
"Jinja2",
"mkdocs",
"zensical",
]
testing = [