SparkShift ECU documentation
Install and setup guide
Use this guide to wire the ECU, perform the first power-up, connect the Android app and configure the first ignition map safely.
Before you start
SparkShift controls ignition output. Incorrect wiring, timing or polarity can damage the ECU, ignition coil, pickup, battery system or engine. Test on the bench first, keep the spark plug grounded during ignition tests, and do not tune a running engine unless the vehicle is stable and safe.
1. Hardware overview
SparkShift is a programmable ignition ECU for 2 stroke engines. The firmware measures the pickup signal, calculates RPM, looks up the ignition angle from the map and generates the output pulse with timer precision.
Main functions
- RPM based ignition timing map
- Adjustable ignition pulse width
- Rev limiter
- Input denoiser
- Double-spark RPM correction
Advanced functions
- Bluetooth configuration
- Live telemetry
- 8 stored presets
- PIN protected settings
- IMU based launch control
2. Wiring
Follow the labels printed on the ECU enclosure. Wire colors and signal names can vary between engines, so verify the function of each wire with the bike wiring diagram before connecting it to SparkShift.
| ECU label | Purpose | Install note |
|---|---|---|
BAT+ |
12V power supply positive (optional) | Use a 1A fused switched 12V supply with stable voltage if you want to power on the ECU with the engine turned off. |
BAT- |
12V power supply negative (optional) | Connect to battery negative or a clean chassis/engine ground. |
COIL OUT |
Ignition output | Connect to the ignition coil input expected by your setup. |
COIL GND |
Coil ground reference | Connect to the ignition coil ground expected by your setup. |
PVL IN |
HV stator input | Connect to the high voltage output wire of your 2-wires stator, such like PVL or Selettra. |
PVL GND |
HV stator ground | Connect to the high voltage ground wire of your 2-wires stator. |
OFF |
Kill / stop switch | Connect this pin to ground with a switch to turn off the engine, but be careful, this is an high voltage output, never touch when the engine is on. |
Red-White-Green IN |
Piaggio stator input | If your engine has a stock Piaggio stator with 3 colored wires, connect them to this interface, matching the colors.
Red = Pickup, White = Ground, Green = High Voltage |
Red-White-Green OUT |
Piaggio coil output | If your engine has a stock Piaggio sparkplug coil with 3 colored wires, connect them to this interface, matching the colors.
Red = Pickup, White = Ground, Green = High Voltage |
BAT-, PVL GND, COIL GND, White IN and White OUT are all internally connected with eachother but have different roles, please do not swap the wirings or it will affect electromagnetic integrity of the ECU due to bad return currents.
Wiring checklist
- (optional) Battery positive is fused and switched.
- Ground is low resistance and shared correctly with the ignition system.
- Pickup signal polarity and ground reference are confirmed.
- Ignition coil output is connected to the correct coil terminal.
- High voltage and coil wiring are kept away from pickup and Bluetooth wiring.
- All terminals are insulated and strain relieved.
3. First power-up
- Disconnect the ignition coil output or remove the spark plug and ground it safely.
- If you are not powering the ECU from an external 12V supply, check that the ECU green LED powers up when trying to start the engine.
- If the red LED doesn't blink, turn counter-clockwise the trimmer of the used input interface until it works, left for standard Red-White-Green Piaggio stators or right trimmer for PVL/Selettra stators.
- Reconnect the ignition coil output or spark plug and start the engine at low RPM.
- If the input signal is noisy, turn clockwise the trimmer until the engine turns off, then go back by 1-2 turns to make it start again.
- Open the Android Bluetooth settings and pair with
SparkShiftusing PIN0000. - Open the dedicated app, selected your SparkShift device from the list and use PIN
0000to connect, unless you already changed it. - Enjoy.
After connection, the app should show connected state, firmware version and runtime telemetry. If the engine doesn't start, check the pickup input wiring and signal polarity first.
4. App setup
The Android app is the normal configuration interface. Download it from the app page, pair the ECU over Bluetooth, then connect from inside the app.
Initial settings
- Unlock the interface with the current PIN.
- Read all settings from the ECU.
- Set a conservative rev limit.
- Set the ignition pulse width required by your ignition hardware.
- Save the setup to preset 1.
Useful defaults
- Default PIN:
0000 - Default pulse width:
100 us - Default rev limit:
14000 rpm - Default launch minimum RPM:
5000 rpm
5. Ignition map setup
The ignition map is a list of RPM and angle points. The ECU interpolates between points, so the curve changes smoothly as RPM changes.
Start with a conservative map. Make small changes, test under controlled conditions and save known-good maps as separate presets.
| RPM | Angle |
|---|---|
| 0 | 0 |
| 7000 | 0 |
| 13000 | 20 |
| 15000 | 20 |
- Use lower advance while validating the installation.
- Do not copy timing values from a different engine without verification.
- Use the global angle offset only for small whole-map corrections.
- If the engine produces two pickup events per revolution, enable double-spark RPM correction.
6. Launch control
Launch control uses the ECU IMU. When RPM first rises above the configured launch minimum RPM, SparkShift samples the current bike angle as the start reference. The configured wheelie angle is then relative to that start position, so uphill or downhill roads do not shift the limit.
- Mount the ECU firmly so it cannot move relative to the bike.
- Select the IMU axis that matches your mounting orientation.
- Use axis inversion if the angle moves in the wrong direction.
- Set a conservative maximum launch angle.
- Increase PID gains gradually only after basic behavior is correct.
When RPM drops below the launch minimum RPM, the reference angle resets. The next acceleration samples a new start angle.
7. Presets and security
SparkShift stores 8 complete presets in external flash. Use presets for different engines, tracks, fuel, exhaust setups or test maps.
- Load: applies a stored preset immediately.
- Save: writes the current setup into the selected preset slot.
- Name: give each preset a clear name before testing.
- PIN: writable settings require the interface to be unlocked.
Keep at least one conservative preset available so you can quickly return to a safe baseline.
8. Troubleshooting
| Symptom | Likely cause | What to check |
|---|---|---|
| App cannot connect | Bluetooth pairing, HC-05 state or baud setup | Pair again, power cycle the ECU, keep only one client connected. |
| RPM always reads zero | No pickup signal | Check pickup wiring, ground reference and cranking signal with a meter or scope. |
| RPM reads about double | Engine generates one spark event every 180 degrees | Enable Double Spark RPM in the app extras/settings page. |
| Engine cuts early | Rev limiter, launch control or wrong RPM scaling | Check limiter RPM, launch minimum RPM, double-spark option and live telemetry. |
| Launch angle is wrong on hills | Start reference not sampled in the expected position | Let RPM drop below launch minimum, then accelerate again to sample a new reference. |
| Settings do not save | Interface locked or flash write failed | Unlock with the PIN, save again and confirm the active preset. |
Need help?
For installation support, include your engine model, ignition type, pickup wiring, coil type, app screenshot and a short description of the behavior.