zoompilot

zoompilot

Mazda-specific sunnypilot fork.

A sunnypilot fork aimed at the best steering on EPS-limited vehicles, with extra tuning and full alpha longitudinal for Mazda.

  • 2022+ CX-5
  • CX-9
  • EPS-swapped Mazdas
  • sunnypilot cars

46G machine gray

what zoompilot adds

zoompilot keeps everything sunnypilot does and adds these.

Mazda Torque Limit Integration
Mazda’s speed-dependent EPS torque limits are integrated into openpilot. This delivers more torque at low speed, smoother highway steering, and more confident turns with less overshoot and unwinding.
Smart Cruise Reimplementation
Smart Cruise is reimplemented with a new solver. It slows down for curves earlier, reaches the target speed at the apex more accurately, and returns to the set speed faster.
Speed Limit Assist
Speed Limit Assist reads speed signs from the Mazda camera when a nav SD card is fitted. It can adjust the cruise set speed as you pass speed limit changes.
Lane Change Smoothing
Lane Change Smoothing reduces jerkiness when changing lanes. Lane changes can be slower and smoother, with configurable speeds.
Updated Steering Tune
A new tune based on v0. It turns in earlier for curves and reduces steering oscillations and micro-adjustments on the highway.
Alpha Longitudinal disables radar and AEB
A stable, software-only implementation of Alpha Longitudinal and Experimental Mode for the CX-5 and CX-9. It disables the radar and AEB. Read the safety notes.

install

installation

Start with a new or factory-reset device. If you are switching from another fork, factory-reset first to remove the old settings. If you are already on zoompilot, use the on-device updater.

Use a comma device and harness that sunnypilot supports. See the sunnypilot docs for the hardware list.

  1. Open device setup. Select the option to install custom software.
  2. Enter the install URL. The device downloads a prebuilt release.
    zoompilot/main
  3. Complete setup. Keep the device powered and online. Wait for it to install and reboot.
  4. Check the defaults. On a supported Mazda, my basic defaults are already configured.

    Model

    Firehose
    The default model, for the best steering.

    Steering settings

    Torque Control
    On.
    Self-Tune
    On.
    Speed-Dependent Self-Tune
    On.
  5. Enable the recommended settings. These are off by default. I recommend turning them on.

    Cruise settings

    ICBM
    Required for Smart Cruise. It uses the cruise set speed to slow down for curves.
    Smart Cruise Vision
    Slows down for curves the camera sees. Turn on this, Maps, or both.
    Smart Cruise Maps
    Slows down for curves from map data. Download maps in sunnylink first.
    Deceleration Overshoot
    Better deceleration before a curve.

    Steering settings

    Road Edge Block
    Aims to prevent lane changes and turns off the edge of the road.
    Lane Change Smoothing
    Smooths and slows down your lane changes, with a configurable speed.

This is experimental software. You drive the car, follow the law, and carry all the risk.

technical

implementation notes

Open these notes for controller values, cruise behavior, and CAN inputs. You do not need them to install zoompilot.

show implementation notes

01

steering control

I measured the Mazda EPS from drive logs. The controller now follows the EPS limits.

Mazda limits EPS torque by vehicle speed. The EPS accepts more torque at low speed and less torque as speed rises. One fixed limit wastes low-speed torque and can cause poor highway control.

Speed-dependent torque
zoompilot uses the full torque curve. This adds low-speed torque and reduces highway oscillation.
Speed-dependent tuning
Self-tune learns a separate steering value in seven speed ranges. This matches the non-linear EPS response.
Rate-matched commands
zoompilot sends up to 12 torque units per frame, the EPS maximum. Stock openpilot sends 10.
Factory-matched specs
zoompilot uses Mazda steering ratio, mass, wheelbase, and delay. I refined the values with drive logs.

02

stock radar cruise

I rewrote the Mazda cruise logic. Curve control and speed-limit assist now share one set-speed manager.

Intelligent-Cruise-Button-Management (ICBM)
ICBM tracks the target and current set speeds. It sends Mazda cruise-button commands to close the gap.
Speed-Limit-Assist (SLA)
SLA changes the set speed after you pass a speed sign. It uses nav SD or OpenStreetMap data and supports an offset.
Smart Cruise
Smart Cruise slows for curves, then returns to the set speed. It uses vision or map data.
Deceleration Overshoot (Alpha)
Deceleration Overshoot requests a larger speed drop before a curve. This offsets the slow MRCC response.

03

alert handling

Place hands on wheel alert
On 2022+ models, LKAS_BLOCK does not stop steering. zoompilot hides this false alert and keeps other steering faults active.
Steering override hysteresis
The filter removes short torque spikes from potholes and rough roads. These spikes no longer trigger a false driver override.

04

additional CAN inputs

The stock port ignores some Mazda sensor messages. zoompilot reads these inputs.

Forward radar
zoompilot reads distance, angle, and closing speed for four vehicles ahead.
Blind-spot monitors
zoompilot sends blind-spot data to openpilot. Automatic lane changes can use it for safety checks.
Speed-limit signs
zoompilot reads speed signs from the LKAS camera. This needs a nav SD card and supplies Speed-Limit-Assist.

experimental, work in progress

alpha longitudinal

openpilot controls the gas and brakes instead of Mazda’s stock radar cruise.

Alpha longitudinal turns off the car’s radar. The car also turns off Automatic Emergency Braking (AEB) and Forward Collision Alerts.

Experimental mode
Alpha longitudinal uses the openpilot model for gas and brake control. It can stop for signs and lights. Some models do not reach the set speed.
Known issues
If the dash shows cruise, LKAS, or radar errors, turn off the car for 15 minutes. This resets the modules.

Credit: Alex Frutkin (@yummydirt) completed most of the reverse engineering and initial implementation for this feature.

release notes

current release

2026.09.05-10 ca095f4f96 · 2026-09-05

all release notes
  1. 2026.09.05-10
    New steering tune, Smart Cruise reimplemented, Alpha Longitudinal stop-and-go fixed I feel like this is the most smooth and clean release yet. I’m very proud of the improvements and recommend anyone be on the latest release.
    • Speed-dependent torque tune v2 is the default. Rewritten on the v0 base. It turns in earlier for curves and reduces oscillations and micro-adjustments on the highway. v0 and v1 are unchanged if you prefer them.
    • Mazda torque limits in openpilot. The controller follows the EPS’s measured torque ceiling at each speed and winds down at the rate the EPS accepts. More torque at low speed, steadier steering on the highway.
    • Lane Change Smoothing. New toggle under Steering settings. Lane changes are slower and smoother, with a configurable pace. Off by default.
    • Smart Cruise Vision reimplemented. A new solver plans the slowdown for the whole curve from the model path and the map. It slows earlier, reaches the target speed at the apex more accurately, and returns to your set speed sooner. It also corrects the model’s under-read of curves far ahead and no longer commits to false slowdowns on highway bends.
    • Deceleration Overshoot front-loaded. The extra deceleration is requested at curve entry, where the stock cruise is slowest to respond.
    • ICBM restores your set speed sooner. After a curve or a speed zone the dash is walked back within about a second. A press of yours hands control back at once, and a speed limit prompt can no longer bank an overshoot.
    • TJA button as the MADS switch. New toggle under Steering, MADS. When on, the wheel’s TJA button is the only steering switch and MRCC main only controls cruise. Off by default.
    • Fixed the camera’s LKAS error. Pushing against the wheel at low speed could get the torque command rejected by the panda until the EPS gave up and the camera faulted. The controller and panda now agree on the limits.
    • Fixed steering engaging on its own at startup. MADS armed lateral before the panda did, which also dropped steering for two seconds with an LKAS error. Both arm on the same frame now, steering disengages when MRCC main is turned off, and you get a warning if the panda has not armed.
    • Fixed the false “Steering Assist Temporarily Unavailable” on launch. A brisk pull-away from a stop no longer trips the alert.
    • Alpha longitudinal only.
      • Stop-and-go resumes on its own. Two root causes fixed. The car reported a stock cruise standstill under openpilot longitudinal, which pinned the controller in stopping forever, and the resume pulse carried a bad checksum that faulted the camera every time. The car now pulls away when the lead departs, without the SCBS warnings afterwards.
      • Smoother acceleration. Throttle builds at close to the stock rate, lifts off gently, and uses the same ceiling as stock at each speed. The harsh push-off is gone, and the pull-away from a hold is gentler.
      • Cruise arms on a driver button only. openpilot no longer arms cruise by itself after the radar hand-back.
      • The toggle applies at a standstill. Flipping alpha longitudinal or force offroad while rolling used to take the device offroad under a moving car.
      • Stock camera frames pass through when disengaged. The dash behaves like stock while openpilot is off.
      • Offered on any Mazda with the 2022+ CX-5 EPS. Not just the CX-9 swap. The pre-2021 CX-9 is excluded.
      • A full review of the longitudinal stack: radar hand-back, hold release and fault handling are all more robust.
    • Device.
      • Fingerprinting is VIN-first. Export VINs fall back to the engine and EPS firmware.
      • Steering Arc and Display Turn Signals are hidden on the comma 4, where they do nothing.
      • Force offroad follows upstream again, and a noisy ignition signal no longer flickers the device on and off road.
      • The torque pickers show the value that is actually set.
      • No more offline update nags.
    • Synced sunnypilot as of 2026-09-03. See the sunnypilot docs.
      • Initial support for Chestnut and big models. The eGPU’s big model downloads and runs next to the on-device model, with a fallback to the small model when the big one is not ready, an alert when it is, and an eGPU icon in the sidebar and on the home screen.
      • Model Selector upgrades. Your selection is kept per catalog when Chestnut is plugged or unplugged.
      • Downloaded maps can be deleted from sunnylink.
      • The sunnylink pill moved and was restyled in comma 4 settings.
      • Scrolling labels run at the right speed on non-60 Hz screens.
      • Two openpilot syncs: UI cleanups and Chestnut power fault logging.
  2. 2026.08.25-8
    • Fingerprint Mazdas on VIN and EPS. Supports more Mazda models more reliably by using the VIN for fingerprinting. EPS fingerprinting determines whether an EPS-swapped car can steer to zero. By @mzdnick.
    • zoompilot branding in the UI. By @mzdnick.
    • Speed-limit assist on metric cars. Fixed reading speed limits on cars set to km/h.
    • Updated speed-dependent torque seeds. Refreshed the seeds using my latest learned values. Self-tune may converge a little faster now.
    • Comma 4 toggles for new sunnypilot features. Screensaver and road edge lane change.
    • Synced sunnypilot as of 2026-08-24. See the sunnypilot docs.
      • Block lane changes at road edge. Prevents a lane change from activating when the road’s edge is detected.
      • Jerk-aware steering. A torque controller that tries to solve for jerky steering. This doesn’t seem to improve anything for Mazdas; it hurts performance because speed-dependent torque already solves for this.
      • Support for comma’s chestnut eGPU.
      • The driving path changes color with what the car is doing and keeps its width when you override with gas or steering.
      • The “openpilot unavailable” flash at startup is fixed.
      • New screensaver function.
      • Switching models no longer asks to reset calibration.
      • AGNOS 19.6.
    • Alpha longitudinal only.
      • Improved stop and go, but not totally fixed. Cruise may disengage after stopping for a lead car.
      • The bogus “Cruise Fault: Restart the Car” on a cold start is gone. The fault alert now only fires when the radar genuinely drops out mid-drive.
      • Fixed canceling cruise whilst braking. Thank you @mzdnick.
      • Alpha longitudinal enabled on EPS-swapped models (CX-9).
  3. 2026.08.02-5
    Alpha longitudinal handoff More reliable handoff when you override acceleration with the pedal, and more reliable stop and hold.
  4. 2026.08.01-4
    First release on the zoompilot channel zoompilot has its own home, its own build, and the biggest batch of changes yet.
    • New home, new install URL. The fork lives at zoompilot/zoompilot and installs from zoompilot/main. If you are already running zoompilot you don’t need to do anything: your device repoints itself on its next start.
    • Prebuilt releases. Every release is built ahead of time on a real comma device, so installing no longer means sitting through the better part of an hour of compiling.
    • Alpha longitudinal on the CX-5. openpilot can drive the gas and brakes on the 2022+ CX-5. Read section 05 first: it shuts the stock radar down, which takes automatic emergency braking and forward collision alerts with it.
    • Torque control out of the box. Fresh installs on 22+ EPS Mazdas arrive with torque control, self-tune, and speed-dependent self-tune already on.
    • Fresher steering seeds. The CX-5 2022 starting values come straight off my car’s learned data, so a new install steers like a tuned car much sooner.
    • Cruise buttons, rebuilt. The speed you set is the speed you get back after every curve and speed zone, down to the exact number. Confirming a speed limit is one tap and the answer sticks. Press a button mid-adjustment and zoompilot hands control straight back. Big changes hold the button down the way you would.
    • Cruise features under one roof. Speed-limit assist and smart cruise now work the same way whether the stock radar or openpilot has the gas and brakes, and a speed limit prompt no longer nudges your set speed while you are still deciding.
    • Latest sunnypilot and openpilot. New alert sounds and softer driver monitoring nags. Lane changes arm right away if your blinker is already on. Map-based curve slowdowns are more accurate, map hiccups no longer trip false warnings, the false NO PANDA flash on screen wake is gone, and you can switch software branches from the device screen.
    • Leaner install. Setup no longer downloads a 1.8GB driving model the device never uses.
  5. Smart cruise and EPS swaps Curve slowdowns get usable, and older Mazdas with a 2022+ rack join in.
    • Smart cruise decel overshoot. New alpha toggle. The Mazda ECU is slow to obey a lower set speed, so this asks for more than the model wants and gets the deceleration the curve needs.
    • ICBM fixes. Fixed set-speed desync with the stock ECU and the target-chasing oscillation. Button presses are suppressed while you press yours, and pacing adapts to how far the target is.
    • EPS swap support. 2022+ racks in older Mazdas fingerprint by the rack’s firmware and steer to a stop.
    • Upstream sync. Merged sunnypilot master and the opendbc upstream into zoompilot.