Speed Limit Controller automatically adjusts your car's cruise set speed to match the posted speed limit, pulling data from up to three configurable sources: navigation, downloaded map data, and your car's dashboard camera. Instead of manually tapping your cruise control buttons every time you pass a speed limit sign, the system handles it for you. It's ideal for any driver who wants their car to respect posted limits (plus a configurable buffer) without constant manual adjustments.
What It Is
Speed Limit Controller keeps your set speed in sync with the real-world speed limit, so you don't have to.
Imagine driving through a city where the limit changes from 45 to 35 to 25 to 45 again in the space of a few miles. Without Speed Limit Controller, you'd need to tap the cruise control buttons at every sign, or risk driving too fast (or too slow) through each zone. With it enabled, the system detects each new limit, applies any personal speed offset you've configured, and updates your cruise set speed automatically.
It's like having a passenger who reads every speed limit sign for you and adjusts the cruise control dial before you even notice the change. You stay focused on the road while the system handles the tedious speed management.
Speed Limit Controller aggregates data from up to three sources (your car's dashboard camera, downloaded Open Street Maps data, and live navigation route data) and checks them in a priority order you choose. If your top source doesn't have a limit for the current road, it falls back to the next source, and so on. You can also configure a Mapbox backup that fills gaps in real time using live API calls.
Before You Start
Speed Limit Controller requires your car to support openpilot gas and brake control (openpilot longitudinal).
If your car relies on its factory cruise control for gas and braking (stock longitudinal), Speed Limit Controller won't appear in your settings. This applies to many older Toyotas with Toyota Safety Sense P (unless you have a comma pedal or Smart Driver Support Unit), some Honda models, and other vehicles where openpilot only handles steering. You can check whether your car supports openpilot longitudinal control on the comma.ai car compatibility page.
To get the most out of Speed Limit Controller, you'll also want:
- Downloaded map data: Go to FrogPilot → Navigation → MAP DATA and download maps for your region. This provides offline speed limit data from Open Street Maps.
- Mapbox API keys: Enter your public and secret Mapbox keys at FrogPilot → Navigation → NAVIGATION. This enables the Mapbox speed limit fallback and the Navigation data source (when using Navigate on openpilot). See the Mapbox & Navigation Setup guide for step-by-step instructions.
- Dashboard source (optional): If you drive a Ford, Hyundai, Kia, Genesis, Toyota, or Lexus, your car's built-in camera can detect speed limit signs and feed that data into Speed Limit Controller. No extra setup needed for this source.
⚠️ Warning: Speed limit databases (both Open Street Maps and Mapbox) are community-maintained and may contain outdated information. Newly posted limits, construction zones, and variable message signs are generally not reflected. Always verify the speed limit yourself and be ready to override the system.
Settings
Speed Limit Controller has a layered settings structure: source priority, fallback behavior, override rules, speed offsets, confirmation preferences, and visual options.
Settings Summary
| Setting | Location | Default | Tuning Level | Type | What you feel |
|---|---|---|---|---|---|
| Speed Limit Controller | GAS / BRAKE | On | Minimal | Toggle | Set speed follows posted limits automatically |
| Fallback Speed | GAS / BRAKE → SLC | Previous Limit | Standard | 3-option selector | What happens when no limit is found |
| Override Speed | GAS / BRAKE → SLC | Set With Gas Pedal | Standard | 3-option selector | How you can temporarily exceed the limit |
| Speed Limit Source Priority | GAS / BRAKE → SLC | Navigation, Map Data, Dashboard | Advanced | Multi-select dialog | Which data source the system trusts most |
| Speed Offset (0–24 mph) | GAS / BRAKE → SLC → Offsets | 5 mph | Minimal | Numeric slider | Buffer above limit on slow streets |
| Speed Offset (25–34 mph) | GAS / BRAKE → SLC → Offsets | 5 mph | Minimal | Numeric slider | Buffer above limit on residential roads |
| Speed Offset (35–44 mph) | GAS / BRAKE → SLC → Offsets | 5 mph | Minimal | Numeric slider | Buffer above limit on urban arterials |
| Speed Offset (45–54 mph) | GAS / BRAKE → SLC → Offsets | 5 mph | Minimal | Numeric slider | Buffer above limit on suburban roads |
| Speed Offset (55–64 mph) | GAS / BRAKE → SLC → Offsets | 10 mph | Minimal | Numeric slider | Buffer above limit on highways |
| Speed Offset (65–74 mph) | GAS / BRAKE → SLC → Offsets | 10 mph | Minimal | Numeric slider | Buffer above limit on freeways |
| Speed Offset (75–99 mph) | GAS / BRAKE → SLC → Offsets | 10 mph | Minimal | Numeric slider | Buffer above limit on high-speed roads |
| Confirm New Speed Limits | GAS / BRAKE → SLC → Quality of Life | Off | Minimal | Toggle with sub-buttons | Ask before applying new limits |
| ↳ Higher Limits | GAS / BRAKE → SLC → Quality of Life | Off | Minimal | Sub-button | Confirm before increasing speed |
| ↳ Lower Limits | GAS / BRAKE → SLC → Quality of Life | Off | Minimal | Sub-button | Confirm before decreasing speed |
| Force MPH from Dashboard | GAS / BRAKE → SLC → Quality of Life | Off | Developer | Toggle | Read dashboard limits as mph (Toyota only) |
| Higher Limit Lookahead Time | GAS / BRAKE → SLC → Quality of Life | 0 seconds | Advanced | Numeric slider | Anticipate higher limits ahead |
| Lower Limit Lookahead Time | GAS / BRAKE → SLC → Quality of Life | 0 seconds | Advanced | Numeric slider | Anticipate lower limits ahead |
| Match Speed Limit on Engage | GAS / BRAKE → SLC → Quality of Life | Off | Standard | Toggle | Snap set speed to limit when engaging |
| Use Mapbox as Fallback | GAS / BRAKE → SLC → Quality of Life | On | Standard | Toggle | Fill gaps with live Mapbox data |
| Show Speed Limit Offset | GAS / BRAKE → SLC → Visual Settings | On | Minimal | Toggle | Show offset on driving screen |
| Show Speed Limit Sources | GAS / BRAKE → SLC → Visual Settings | Off | Developer | Toggle | Show raw source data for debugging |
Related settings in other panels:
| Setting | Location | Default | Tuning Level | What it does |
|---|---|---|---|---|
| Show Speed Limits | Theme and Appearance → APPEARANCE → Navigation Widgets | On | Standard | Displays speed limit sign on driving screen |
| Speed Limit Changed Alert | Alerts and Sounds → MANAGE → Custom Alerts | Off | Minimal | Notification when the detected limit changes |
| Use Vienna-Style Speed Signs | Theme and Appearance → APPEARANCE → Navigation Widgets | Off | Standard | European-style speed limit signs |
Speed Limit Controller (Main Toggle)
| Property | Value |
|---|---|
| Default | On |
| Recommended | On for most drivers |
When On, the system monitors available speed limit sources and adjusts your cruise set speed to match the detected limit (plus any offset you've configured). When Off, you manage your set speed entirely by hand.
What this means for you: This is enabled by default for all users at every tuning level. Most drivers should leave it on. The system only intervenes when it has a confirmed speed limit; if no limit is found, it follows your fallback setting.
Speed Limit Source Priority
| Property | Value |
|---|---|
| Default | Navigation (1st), Map Data (2nd), Dashboard (3rd) |
| Recommended | The defaults work well for most drivers |
| Tuning Level | Advanced |
This setting controls which data source the system trusts most. You select up to three sources in priority order, plus two special options:
| Source | What it provides | Requirements |
|---|---|---|
| Dashboard | Speed limits read from your car's built-in camera | Ford, Hyundai, Kia, Genesis, Toyota, or Lexus vehicle |
| Highest | Compares all available sources and uses the highest limit | At least one source active |
| Lowest | Compares all available sources and uses the lowest limit | At least one source active |
| Map Data | Speed limits from downloaded Open Street Maps data | Offline maps downloaded at FrogPilot → Navigation → MAP DATA |
| Navigation | Speed limits from your active route | Navigate on openpilot with a destination set and Mapbox keys entered |
The system checks your Priority 1 source first. If that source has a valid speed limit (approximately 2 mph or higher), it uses it. If not, it drops to Priority 2, then Priority 3. If all three return nothing, the fallback behavior takes over.
💡 Tip: "Highest" and "Lowest" can only be selected as Priority 1. When chosen, the system skips the priority cascade and instead compares all available sources at once. "Lowest" is the conservative choice for drivers who always want to err on the slower side.
Dashboard availability: The Dashboard source only appears as an option if your car supports it. In FrogPilot, this includes Ford, Hyundai, Kia, Genesis, Toyota, and Lexus vehicles. If you drive a different make, you won't see "Dashboard" in the priority selection dialog.
Fallback Speed
| Property | Value |
|---|---|
| Default | Previous Limit (option 2) |
| Recommended | The default of Previous Limit works well for most drivers |
This determines what happens when none of your priority sources can find a speed limit for the current road.
| Option | Value | Behavior |
|---|---|---|
| Experimental Mode | 1 | Switch to Experimental Mode so the driving model estimates appropriate speed |
| Previous Limit | 2 | Keep using the last confirmed speed limit until a new one is found |
| Set Speed | 0 | Use your current cruise set speed as-is, no adjustment |
At Set Speed, the system simply stops adjusting and leaves your cruise at whatever you've set manually. This is the most hands-off fallback but means you're entirely responsible for speed management on unmapped roads.
At Experimental Mode, the system triggers Experimental Mode through Conditional Experimental Mode (status code 13), letting the camera-based driving model handle speed decisions. This is the most automated option but depends on the driving model's judgment.
At Previous Limit (the default), the system holds the last known speed limit. If you were in a 45 mph zone and enter an unmapped stretch, the system keeps 45 mph (plus your offset) until it finds a new posted limit. This is the safest option for highways where speed limits rarely change abruptly.
Override Speed
| Property | Value |
|---|---|
| Default | Set With Gas Pedal (option 1) |
| Recommended | The default of Set With Gas Pedal works well for most drivers |
This controls what happens when you manually drive faster than the posted limit (plus offset). Sometimes you need to pass a slow vehicle or merge onto a highway faster than the limit allows.
| Option | Value | Behavior |
|---|---|---|
| Max Set Speed | 2 | Use your manually set cruise speed as the override target |
| None | 0 | No override capability. The system always enforces the detected limit plus offset |
| Set With Gas Pedal | 1 | Press the gas pedal to override. The system tracks the highest speed you reach and uses that as the new target |
With Set With Gas Pedal (the default), pressing the gas pedal while above the limit signals that you intentionally want to go faster. The system records your peak speed and maintains it until you disengage. This is like telling the system "I know the limit, but I need to go this fast right now."
With Max Set Speed, the system uses whatever you've set via the cruise buttons as the override, ignoring the detected limit. This gives you simple button control: tap the cruise increase button to go above the limit, and the system uses that new set speed.
With None, you can't override the limit at all. The system strictly caps your speed at the detected limit plus offset.
⚠️ Warning: All overrides clear when openpilot disengages. After re-engaging, the system reverts to the detected speed limit.
Speed Limit Offsets (Offset 1–7)
Speed Limit Controller lets you add a buffer above the posted limit, broken into seven speed ranges so you can fine-tune your offset for different road types.
Speed Offset (0–24 mph)
| Property | Value |
|---|---|
| Default | 5 |
| Recommended | The default of 5 mph works well for most drivers |
| Range | -99 – 99 |
| Units | mph (or kph if metric) |
Speed Offset (25–34 mph)
| Property | Value |
|---|---|
| Default | 5 |
| Recommended | The default of 5 mph works well for most drivers |
| Range | -99 – 99 |
| Units | mph (or kph if metric) |
Speed Offset (35–44 mph)
| Property | Value |
|---|---|
| Default | 5 |
| Recommended | The default of 5 mph works well for most drivers |
| Range | -99 – 99 |
| Units | mph (or kph if metric) |
Speed Offset (45–54 mph)
| Property | Value |
|---|---|
| Default | 5 |
| Recommended | The default of 5 mph works well for most drivers |
| Range | -99 – 99 |
| Units | mph (or kph if metric) |
Speed Offset (55–64 mph)
| Property | Value |
|---|---|
| Default | 10 |
| Recommended | The default of 10 mph works well for highway driving |
| Range | -99 – 99 |
| Units | mph (or kph if metric) |
Speed Offset (65–74 mph)
| Property | Value |
|---|---|
| Default | 10 |
| Recommended | The default of 10 mph works well for freeway driving |
| Range | -99 – 99 |
| Units | mph (or kph if metric) |
Speed Offset (75–99 mph)
| Property | Value |
|---|---|
| Default | 10 |
| Recommended | The default of 10 mph works well for high-speed roads |
| Range | -99 – 99 |
| Units | mph (or kph if metric) |
The system determines which offset to apply based on the detected speed limit itself (not your current driving speed). For example, if you're on a road with a 40 mph limit, the Speed Offset (35–44 mph) applies, adding your configured buffer to that limit.
At low offset values (0–3 mph), you're driving very close to the posted limit. At moderate values (5–7 mph), you have a comfortable buffer that matches how most drivers actually travel. At high values (10+ mph), you're driving noticeably above the posted limit.
Negative offsets are also supported: setting an offset to -5 means the system targets 5 mph below the posted limit, useful for school zones or construction areas where you want extra caution.
💡 Tip: The default offsets are split into two tiers: 5 mph for city speeds (0–54 mph) and 10 mph for highway speeds (55+ mph). This reflects the common pattern where drivers tend to follow posted limits more closely in town but cruise slightly faster on highways.
Confirm New Speed Limits
| Property | Value |
|---|---|
| Default | Off |
| Recommended | Off for most drivers; On if you want full control over every speed change |
When On, Speed Limit Controller asks for your approval before applying a new speed limit. A prompt appears on screen, and you have 30 seconds to respond.
How to accept a new limit: Tap the flashing on-screen speed limit widget, or press the cruise increase button on your steering wheel.
How to deny a new limit: Press the cruise decrease button, or simply ignore the prompt for 30 seconds (it automatically dismisses and keeps your current speed).
This toggle has two sub-buttons that let you choose which direction of change requires confirmation:
Lower Limits
| Property | Value |
|---|---|
| Default | Off |
| Recommended | On if you drive through frequent speed drops and want a veto |
When On, the system asks before reducing your set speed to match a lower posted limit. When Off, lower limits are applied immediately without asking.
Higher Limits
| Property | Value |
|---|---|
| Default | Off |
| Recommended | Off for most drivers |
When On, the system asks before increasing your set speed to match a higher posted limit. When Off, higher limits are applied immediately.
What this means for you: Most drivers leave confirmation off because the whole point of Speed Limit Controller is hands-free speed management. But if you've encountered situations where the system picks up an incorrect limit (for example, a side-road sign read by mistake), enabling confirmation for lower limits gives you a safety net against sudden unexpected speed drops.
Higher Limit Lookahead Time
| Property | Value |
|---|---|
| Default | 0 (disabled) |
| Recommended | 5–10 seconds for proactive highway driving |
| Range | 0 – 30 |
| Units | seconds |
When set above 0, the system looks ahead on the map to find the next speed limit change. If a higher limit is coming up within this many seconds of travel (based on your current speed), it applies the higher limit early.
At low values (1–5 seconds), the transition happens just before you reach the new zone. At moderate values (10–15 seconds), you speed up noticeably before the sign. At high values (20–30 seconds), the system anticipates changes far in advance.
What this means for you: This is useful on highways where you're approaching a zone with a higher limit. Instead of waiting until you pass the sign, the system lets you speed up early, matching the flow of traffic that's already at the higher speed. Requires map data or navigation data to project ahead; camera-only configurations can't provide lookahead.
Lower Limit Lookahead Time
| Property | Value |
|---|---|
| Default | 0 (disabled) |
| Recommended | 5–15 seconds for safety-conscious driving |
| Range | 0 – 30 |
| Units | seconds |
Works like the higher limit lookahead, but for upcoming lower limits. When set above 0, the system begins slowing down before you reach the lower-limit zone.
What this means for you: This is especially important for safety. If you're approaching a 35 mph zone on a 55 mph road, the system starts decelerating before the sign, not after. This gives you and following drivers a smoother, safer transition. This setting is arguably more important than the higher lookahead because arriving too fast in a lower-speed zone is riskier than arriving slightly slow in a higher-speed zone.
Match Speed Limit on Engage
| Property | Value |
|---|---|
| Default | Off |
| Recommended | On for drivers who want automatic set speed on every engagement |
When On, the system automatically sets your cruise speed to the currently detected speed limit (plus offset) the moment you engage openpilot. When Off, openpilot uses whatever set speed was last active.
What this means for you: Enable this if you want a clean start every time you engage. Without it, if you were previously cruising at 75 mph and then disengage and re-engage in a 35 mph zone, your set speed might still be 75 mph until the system detects and applies the new limit.
⚠️ Warning: This setting is hidden on vehicles that use the car's factory cruise control for set speed management (PCM cruise). It only appears when your car has full openpilot gas and brake control.
Use Mapbox as Fallback
| Property | Value |
|---|---|
| Default | On |
| Recommended | On |
When On, and none of your priority sources have a speed limit for the current road, the system makes a live API call to Mapbox to look up the speed limit at your exact GPS coordinates. This works even without an active navigation route, as long as you have a secret Mapbox key entered.
When Off, the system relies solely on your configured priority sources and the fallback behavior (Set Speed, Experimental Mode, or Previous Limit).
What this means for you: This is your safety net for roads where your downloaded maps or navigation route don't have speed limit data. Mapbox maintains its own speed limit database that often covers roads Open Street Maps misses. Leave this on unless you want the system to rely purely on offline data.
⚠️ Warning: This setting only appears when you have a Secret Mapbox Key entered. FrogPilot tracks monthly API usage and caps requests to stay within Mapbox's free tier (approximately 97,200 requests per month).
Force MPH from Dashboard
| Property | Value |
|---|---|
| Default | Off |
| Recommended | Off unless your Toyota shows mph but the system reads limits as kph |
When On, the system always interprets dashboard-detected speed limits as mph, even if the device is set to metric. This is a Toyota-specific fix for situations where the car's dashboard camera reports limits in mph but the system misinterprets them as kph.
This setting only appears on Toyota and Lexus vehicles at the Developer tuning level.
Show Speed Limit Offset
| Property | Value |
|---|---|
| Default | On |
| Recommended | On |
When On, the driving screen shows the current speed offset being applied. For example, if the limit is 55 mph and your offset is 10, you'd see the offset displayed so you know the system is targeting 65 mph.
Show Speed Limit Sources
| Property | Value |
|---|---|
| Default | Off |
| Recommended | Off for daily driving; On for debugging speed limit issues |
When On, the driving screen displays the raw speed limit value from each data source (Dashboard, Map Data, Navigation, Mapbox). This is a Developer-level diagnostic tool for identifying which source is providing incorrect data.
How It Works
Speed Limit Controller checks your configured data sources in priority order, applies your speed offset, and updates the cruise set speed, all happening continuously as you drive.
Here's the decision flow in plain English:
-
Gather limits: The system collects the current speed limit from each available source: your car's dashboard camera, downloaded map data, and navigation route data.
-
Pick the best one: It checks your priority sources in order. If Priority 1 (default: Navigation) has a valid limit, it uses that. If not, it tries Priority 2 (default: Map Data), then Priority 3 (default: Dashboard). If you chose "Highest" or "Lowest" as Priority 1, it compares all available sources and picks accordingly.
-
Fill gaps with Mapbox: If no priority source has a limit, and Use Mapbox as Fallback is on, the system makes a live API call to Mapbox's map matching service. Mapbox uses your GPS coordinates and bearing to identify your road segment and return its speed limit.
-
Apply the fallback: If even Mapbox can't find a limit, the configured fallback kicks in: keep using the last known limit (Previous Limit), leave the set speed alone (Set Speed), or switch to Experimental Mode.
-
Check for changes: If the new limit differs from the previous one by approximately 2 mph or more, the system processes the change. If confirmation is enabled, it prompts you. Otherwise, it applies the new limit immediately.
-
Add your offset: Based on the detected limit's speed range, the matching offset (from Offset 1–7) is added. A 45 mph limit with a 5 mph offset becomes a 50 mph target.
-
Handle overrides: If you press the gas and exceed the target, and override is enabled, the system tracks your override speed and uses that instead until you disengage.
-
Update the set speed: The final target (limit + offset, or override speed if active) becomes your new cruise set speed.
Lookahead Behavior
When you've configured a lookahead time, the system looks at the next speed limit coming up on the map. It calculates the distance to that upcoming limit and compares it against your lookahead time multiplied by your current speed. If you'll reach the new zone within the lookahead window, the system pre-applies the new limit.
For example, with a 10-second lower limit lookahead at 60 mph, the system starts slowing you down approximately 880 feet (10 seconds of travel at 60 mph) before the lower-limit zone begins.
Confirmation Flow
When confirmation is enabled and a new limit is detected:
- The speed limit widget on your driving screen begins flashing to signal a pending change.
- You have 30 seconds to respond.
- To accept: Tap the flashing widget on screen or press the cruise increase button.
- To deny: Press the cruise decrease button, or do nothing for 30 seconds.
- If denied, the system remembers the denied limit and won't prompt again for the same value.
- If the new limit is lower and you have "Lower Limits" confirmation disabled, it applies immediately regardless of the master confirmation toggle.
| With Speed Limit Controller | Without Speed Limit Controller |
|---|---|
| Configurable buffer above the limit per speed range | Fixed set speed until you manually change it |
| Multiple cruise button taps per zone change | No speed limit awareness on screen |
| Set speed adjusts automatically to posted limits | You manage set speed entirely by hand |
| Smooth transitions when entering new speed zones | Sudden realization you're going too fast or too slow |
Feature Interactions
Speed Limit Controller connects with several other FrogPilot features through shared speed data and control outputs.
Conditional Experimental Mode (Enhances)
Speed Limit Controller directly feeds into Conditional Experimental Mode. When Speed Limit Controller is active but can't find a posted speed limit, and its fallback is set to "Experimental Mode," this triggers Conditional Experimental Mode with status code 13. The system enters Experimental Mode to use the driving model's camera-based judgment in areas where no speed limit data is available. This provides automatic coverage for unmapped roads.
Curve Speed Controller (Works alongside)
Both Speed Limit Controller and Curve Speed Controller can limit your speed simultaneously. Speed Limit Controller sets your target based on the posted limit (the upper bound for straight-road cruising), while Curve Speed Controller may reduce speed further when approaching a curve. The system uses whichever target is lower, so you get posted-limit compliance on straightaways and safe curve speeds when the road bends.
Navigate on openpilot (Enhances)
When you have an active navigation route through Navigate on openpilot, the route data includes speed limit information from Mapbox. This feeds into Speed Limit Controller as the "Navigation" source. Without an active route, the Navigation source produces no data, and the system falls to the next priority. Setting a destination before driving gives Speed Limit Controller its most reliable data source for roads along your route.
Custom Alerts: Speed Limit Changed Alert (Works alongside)
The Speed Limit Changed Alert (found under Alerts and Sounds → Custom Alerts) triggers a notification whenever the detected speed limit changes. This alert is independent of Speed Limit Controller: it works whether or not you have Speed Limit Controller enabled, as long as a speed limit is detected. When both are active, you get both an audio/visual notification of the change and an automatic set speed adjustment.
Limitations & Known Issues
Speed Limit Controller is powerful but has boundaries that every driver should understand.
- Construction zone support lacking. Temporary speed limits in construction zones, variable message signs on highways, and dynamic speed advisories are generally not in any database. The system can't read these and will continue using the regular posted limit.
- Dashboard source is car-specific. Only Ford, Hyundai, Kia, Genesis, Toyota, and Lexus vehicles can provide dashboard-detected speed limits. Other car makes don't report speed limit data to the system.
- Database lag. Open Street Maps data is community-maintained and may not reflect recently changed limits. Newly built roads, recent limit changes, and local ordinances may be missing. Download map updates regularly (weekly or monthly) to minimize stale data.
- Lookahead requires map or navigation data. The lookahead feature projects ahead on the downloaded map or route. It doesn't work with camera-only configurations because a camera can't see around corners or over hills.
- Mapbox fallback needs internet and GPS. The Mapbox gap-filling feature requires an active internet connection and accurate GPS signal. In tunnels, parking garages, or areas with poor reception, the fallback won't work. It also pauses requests when the steering angle exceeds 45 degrees (tight turns can cause GPS mismatch).
- Navigation source needs an active route. If you haven't set a destination in Navigate on openpilot, the Navigation source produces no data. For daily commutes without navigation, rely on Map Data or Dashboard as your top priority.
- PCM cruise restrictions. On vehicles where the car's factory cruise control manages the set speed, the Match Speed Limit on Engage and Offset Set Speed (in Quality of Life) settings won't appear, because openpilot can't directly write the set speed value.
Setup Recommendations
Start with the defaults, then adjust offsets and priority sources for your specific driving situation.
| Driving Scenario | Recommended Configuration |
|---|---|
| Conservative/legal driving | Enable confirmation for both higher and lower limits. Fallback: Previous Limit. Set all offsets to 0 mph. |
| Daily commute, no navigation | Download maps for your state. Offsets: 5 mph city, 10 mph highway (defaults). Priority: Map Data (1st), Dashboard (2nd). |
| Highway-focused | Enable higher lookahead (10s) for smooth zone transitions. Increase Offset5–7 to 10–15 mph. Priority: Map Data or Highest. |
| Road trips with navigation | Enable lookahead: 5s higher, 10s lower. Priority: Navigation (1st), Map Data (2nd), Dashboard (3rd) (defaults). Set a destination before driving. |
| Unfamiliar area | Enable Use Mapbox as Fallback. Enable Speed Limit Changed Alert for awareness. Fallback: Previous Limit. Lower offsets until you learn the local norms. |
Q: Speed Limit Controller is enabled, but my set speed doesn't change when I pass a speed limit sign.
A: First, check which sources are available to the system. If your Priority 1 source (default: Navigation) has no data because you haven't set a destination, and your Priority 2 source (Map Data) has no downloaded maps, the system has nothing to work with. Download offline maps for your region at FrogPilot → Navigation → MAP DATA. You can also enable Show Speed Limit Sources at the Developer tuning level to see exactly which sources are returning data and which are blank.
Q: Speed Limit Controller is applying the wrong speed limit.
A: This is usually a data quality issue. Open Street Maps may have an incorrect limit for your road segment, or the system may be picking up a limit from a nearby road (like a frontage road running parallel to a highway). Try changing your source priority: if Map Data is giving wrong values, move Dashboard or Navigation to Priority 1. You can enable Show Speed Limit Sources to see which source is providing the incorrect value. If the dashboard source is wrong, it may be reading a sign on a different road.
Q: Dashboard is not available as a source option in the priority selection.
A: The Dashboard source only appears for Ford, Hyundai, Kia, Genesis, Toyota, and Lexus vehicles. If you drive a different make, your car's built-in camera either doesn't detect speed limit signs or doesn't report them in a way openpilot can read. This is a hardware limitation of the vehicle, not a FrogPilot setting.
Q: I have Navigation set as Priority 1, but it's not providing speed limit data even though I have a route active.
A: Navigation speed limits depend on Mapbox's route data, which doesn't always include speed limit information for every road segment. Some routes, especially on minor roads, may have incomplete speed limit coverage in Mapbox's database. Make sure your Mapbox secret key is valid (test it at FrogPilot → Navigation → NAVIGATION). If the route data lacks limits, the system falls through to your Priority 2 source.
Q: Map Data is returning an outdated or incorrect speed limit for my road.
A: Open Street Maps is community-edited, and some road segments may have stale data. Update your maps regularly: go to FrogPilot → Navigation → MAP DATA and set automatic updates to Weekly. You can also contribute corrections to Open Street Maps directly through their website, and those changes will eventually flow into your downloaded data. In the meantime, use the Override Speed feature to temporarily exceed the incorrect limit.
Q: The speed limit keeps fluctuating rapidly between two values.
A: This typically happens at the boundary between two map segments with different speed limits, or when two sources disagree on the limit. The system triggers a change whenever the detected limit differs from the previous one by approximately 2 mph or more. Try enabling Confirm New Speed Limits so you can manually approve each change, preventing rapid switching. You can also try adjusting your source priority so a more stable source (like Map Data) takes precedence over a flickering source (like Dashboard).
Q: How do I temporarily override Speed Limit Controller without disabling the feature?
A: Use the Override Speed setting. With the default "Set With Gas Pedal," simply press the gas pedal to go faster than the detected limit. The system records your peak speed and maintains it as the new target. Alternatively, set Override Speed to "Max Set Speed" and use your cruise buttons to set a higher speed manually. Both overrides clear automatically when openpilot disengages.
Q: The speed limit sign isn't showing on my driving screen, even though Show Speed Limits is On.
A: Show Speed Limits is located under FrogPilot → Theme and Appearance → APPEARANCE → Navigation Widgets. Make sure that both Navigation Widgets (the parent toggle) and Show Speed Limits are enabled. Also confirm that a speed limit is actually being detected by your sources. If no source has a limit for the current road, there's nothing to display. Enable Show Speed Limit Sources at the Developer tuning level to check.
Q: Speed Limit Controller appears grayed out or doesn't show in my settings.
A: Speed Limit Controller requires your car to support openpilot gas and brake control (openpilot longitudinal). If your car uses its factory cruise control for gas and braking, the feature won't appear. Also check that you haven't disabled openpilot gas and brake control in your Vehicle Settings. The toggle appears at the Minimal tuning level, so tuning level isn't typically the issue.
Q: I set a lookahead time, but the system isn't anticipating speed changes.
A: Lookahead only works with map data, not camera-based detection. Make sure you have offline maps downloaded for your region. The system needs "next speed limit" data from the map to know what's coming up ahead. If the map data doesn't include the next speed limit (because the next segment lacks a recorded limit), the lookahead has nothing to work with. Navigation route data can also provide lookahead, but only along your active route.
Q: Use Mapbox as Fallback is On, but I'm still getting gaps where no speed limit is detected.
A: Several things can prevent Mapbox from filling gaps. First, you need a valid Secret Mapbox Key entered and your device needs an active internet connection. Second, Mapbox itself may not have speed limit data for that road segment (rural or very new roads are common gaps). Third, FrogPilot limits Mapbox API calls to stay within the free tier; if you've hit the monthly cap, no more requests are made until next month. Finally, Mapbox requests are paused when your GPS signal is poor or when you're turning sharply (steering angle above 45 degrees).
Q: I switched to metric units and now my offsets seem wrong.
A: When you change between imperial and metric units, FrogPilot automatically converts all your offset values and the speed range labels update accordingly. After switching, check your offset values at FrogPilot → Driving Controls → GAS / BRAKE → Speed Limit Controller → Speed Limit Offsets to make sure they're still where you want them. The ranges also shift: for example, "Speed Offset (0–24 mph)" becomes "Speed Offset (0–29 km/h)" in metric.
Q: What's the difference between the Speed Limit Offsets (Offset 1–7) and the "Offset Set Speed" under Quality of Life?
A: They're separate settings in different panels. The Speed Limit Offsets (Offset 1–7) are part of Speed Limit Controller and add a tiered buffer on top of the detected speed limit, varying by speed range. The "Offset Set Speed" under Quality of Life (FrogPilot → Driving Controls → GAS / BRAKE → Quality of Life) is a general-purpose offset that increases your cruise set speed by a flat amount regardless of whether Speed Limit Controller is active. They can stack: if your detected limit is 55 mph with a +10 mph Speed Limit Offset and a +5 mph Set Speed Offset, your target becomes 70 mph.
Related Features
Speed Limit Controller works best when paired with features that provide speed data or respond to speed targets.
| Feature | Relationship | How it interacts |
|---|---|---|
| Conditional Experimental Mode | Enhances | When Speed Limit Controller can't find a limit and its fallback is "Experimental Mode," it triggers Conditional Experimental Mode (status code 13), providing automatic coverage for unmapped roads. |
| Curve Speed Controller | Works alongside | Both features can limit your speed simultaneously. Speed Limit Controller sets the posted-limit target, while Curve Speed Controller may enforce a lower target for curves. The system uses whichever is lower. |
| Navigate on openpilot | Enhances | An active navigation route provides speed limit data as the "Navigation" source for Speed Limit Controller's priority system. Setting a destination gives Speed Limit Controller access to route-embedded speed limit data. |
