CAN bus shift light · MINI Cooper S R53 · 2002–06

Eyes up.
The bar
tells you.

Eight LEDs on the column shroud, dead centre in your sightline, fed by the engine's own CAN bus. No tach signal to run, no phone required. Three seconds after the RPM frames stop, it goes dark instead of lying.

CAN 0x316 · bytes 2–3 · ÷ 6.4 · 100 frames/s
start 3500 · colour shift 6000 · redline 7100 · blink 200 ms

2600
RPM · simulated pull
2ND
Drag to turn the housing · live from the STL
  1. Print itHousingThe printed shroud on its own, for the open-source build.
  2. Bolt it inShift lightCarrier board, module, strip and housing, assembled and tested.
  3. FreeCompanion appAndroid and iPhone. Thresholds, colours, a live CAN monitor.
  4. Want moreLogger · FlasherLog, analyse and flash the EMS2000. Three Play unlocks. Runs on a K+DCAN cable; runs better on the bridge.
  5. Top of the rangeK-line + CAN bridgeReads the ECU, watches the bus, runs the light. One board, one OBD2 plug.

01 · The housing

Clips to the column shroud. Moves with the wheel.

Directly under the tach pod, so the flashing bar and the needle land in the same glance. The shroud shades the LEDs enough to kill windscreen reflections, and because it rides on the column, the wheel rim never blocks it.

The printed housing clipped to the column shroud, directly below the tach pod, in a red R53 interior
Installed · under the tach podR53 · column shroud
Outer
105.1 × 23.3 × 54.9 mm
Windows
8 slots in the top face · 6.64 mm pitch · 5.75 mm wide
Fits
8 × WS2812B stick (the common 8-LED bar)
Mount
clips over the column shroud under the tach pod, no drilling
File
the same STL we print from, on Cults3D
  • Buy it printed if you are building the open-source light yourself and just want the part in your hand.
  • Print it yourself from the STL on Cults3D. Same file we print from.
$19housing only Add to order STL on Cults3D

02 · The shift light, assembled

One board instead of a knot of jumper wires.

The carrier replaces a dev board, a CAN breakout, a USB buck module and the harness between them, every joint of which is a thing that vibrates loose in a car. Twelve volts in on a screw terminal; the strip and the bus on two more.

Carrier · rev A · 54 × 48 mm · 4 layer Drag to turn · scroll to zoom
Loading the board from KiCad…
J1+12V GND J2CANH CANL J3+5V DATA GND

Every terminal pin is labelled above the pin it belongs to. You wire one of these upside down under a dash with a torch in your teeth.

Power
12 V screw terminal · fused · TVS-clamped · reverse-blocked · R-78E5.0 switching regulator
CAN
SN65HVD230 on the board with bus clamps · listen-only, never ACKs · termination jumper ships open
Strip drive
74AHCT1G125 level shifter and 330 Ω, not the ESP32 pin bare
Brain
ESP32-C3 SuperMini, soldered flat, USB-C overhanging the top edge
RPM
CAN id 0x316, bytes 2–3, ÷ 6.4 · a 2 s silence blanks the bar
Mount
M3 at the four corners
$125light + housing · tested Add to order

03 · The companion app · free

Set the redline while watching the redline.

The strip along the top of the screen is the real one, mirrored at 10 Hz from live RPM. Drag the redline down to 6,800 and the bar fills sooner, right there, before you have moved the car. Nothing on the Bluetooth side sits between the CAN bus and the LEDs.

Shift light screen: 5300 rpm, the mimic bar, and sliders for LEDs start, colour shift, redline and blink

Thresholds · live mimic

Strip settings: colours, brightness, LED count and fill direction

Colours · fill · brightness

Graph screen plotting RPM off the bus over time

Graph · RPM off the bus

CAN bus monitor listing every id with its rate and latest bytes

CAN monitor · every id

Apply

Writes to RAM. The strip changes now; the change is gone at the next power cycle. Dragging a slider does not burn a flash write per frame.

Save

Commits what the board is running to flash. The board reports when the two differ, including first boot on a blank board, so your first edit is never lost.

QR code for the Android APKScan for
the APK
Version 1.1 · Android 8.0 or newer · about 1 MB · one permission (Nearby devices), no internet permission at all.

iPhone: Safari has never shipped Web Bluetooth, so the app runs in Bluefy, a free browser that bridges it. Same board, same screens, nothing to install from the App Store.

04 · For those who want more · R53 Logger · Flasher

Log it. Read the surface. Flash it.

An Android app that pulls engine telemetry straight from ECU RAM over K-line, fuses it with wideband AFR from the bridge into one time-aligned log, and then writes the calibration changes you decide on back to the EMS2000. Three one-time unlocks on Google Play: the app, the tune options, and the factory software.

AFR 3D surface over RPM and load, with the current sample marked

AFR surface · rpm × load

Live line graph of a pull: RPM, throttle, knock energy, spark advance, trims and AFR

Live graph · a pull

Flash options screen with pedal map and fan toggles

Flash options · pedal · fan

Garage screen choosing which car a log belongs to

Garage · per-car bins and logs

Unlock 1 · the base · $25
App

Logging, diagnostics and the 512 KB ECU backup read. Live graph, DTCs with cause and fix, autolog on wide-open throttle, AFR surface, fuel, trims and knock maps, CSV and Datazap export.

Unlock 2 · add-on · $50
Flash

The tune options: pops, injector size, redline, pedal map, idle RPM, cooling-fan kick-on. Checksum recomputed before every write.

Unlock 3 · add-on · $50
Factory software

Bundled US S, JCW and GP1 images as flash bases. Put a car back to stock, or start a tune from a different factory map.

ECU write needs the App unlock plus either add-on. Flash write needs the facelift silver-cover ECU; logging works on the other boxes. Reads and writes are done key on, engine off, on a battery charger.

Get it on Google Play $25app unlock $50flash unlock $50factory software Works with a K+DCAN USB cable and USB-C OTG. Works better with the bridge: wideband AFR, CAN channels and the shift light in one log.

Off-road and competition use. An ECU flash can brick a car; the app backs up the stock BIN first and refuses to write on a shared wire. R53 Coding, the module-coding companion, is a separate app with its own unlock.

05 · Top of the range · K-line + CAN bridge

The shift light grew a second job. Then a third.

One board in the footwell that reads the Siemens EMS2000 over K-line, listens to the CAN bus, and drives the shift light. It plugs into the OBD2 socket and ships raw ECU blocks to your phone over Bluetooth, where the logger does the decoding. It is the best input the logger can have: wideband, CAN channels and the shift light, all in the same time-aligned log.

  • K-line, properly. An ST L9637D transceiver behind a 1 kΩ 1 W pull-up and a 1.5KE27A clamp. DS2 at 9600 baud, 8E1, the ECU's native dialect.
  • CAN, listen-only. RPM, throttle, coolant and road speed off the car's bus, plus AEMnet lambda from a wideband gauge on the same pair. It never ACKs, so it cannot disturb the bus.
  • The shift light, still. Same eight LEDs, straight off CAN RPM. Works with no phone connected and no app running.
  • XIAO ESP32-S3. 8 MB flash, 8 MB PSRAM, BLE to the phone.
OBD2 pinWireSignal
4orangechassis ground
5light bluesignal ground
6greenCAN H
7blackK-line
14green / whiteCAN L
16redbattery +12 V
$189bridge · OBD2 pigtail Add to order Hardware on GitHub
Isometric render of the K-line and CAN bridge carrier: XIAO ESP32-S3 sockets, L9637D, CAN transceiver, test points and the six-way harness header
Bridge carrier · from the KiCad fileRyanRacing silk
Pictorial wiring diagram of the bridge with every net in its own colour and the six car-side wires in the OBD2 pigtail colours
Every net in its own coloura bridge is never a join

Order

Start where you are.

The housing fits the assembled light. The logger runs on a K+DCAN cable and runs best on the bridge, which includes the light. The bridge is the top of the range.

Print it
Housing
  • Printed shroud, matte black
  • Fits the 8-LED stick, 6.64 mm pitch
$19
Add
Bolt it in
Shift light
  • Housing
  • Carrier rev A, assembled
  • ESP32-C3, firmware loaded
  • 8-LED strip, 12 V harness
$125
Add
Free
App
  • Android APK
  • iPhone via Bluefy
  • Thresholds, colours, CAN monitor
$0
Get it
Want more
Logger · Flasher
  • K+DCAN cable or the bridge
  • App unlock $25: log, diagnose, back up
  • Flash unlock $50: tune options
  • Factory software $50: US S, JCW, GP1
$75app + flash · $125 with factory software
Google Play
Top of the range
Bridge
  • Shift light
  • K-line transceiver
  • CAN listen-only
  • OBD2 pigtail, wired
  • The logger's best input
$189
Add

Shift light $125 and the three logger unlocks ($25 app, $50 flash, $50 factory software) are confirmed. Housing and bridge prices are placeholders. Shipping and lead time to be confirmed.

Fitment

Built on one car. Ours.

2002–06

First-generation MINI Cooper S, chassis R53, the supercharged one. Siemens EMS2000 ECU.

0x316

The CAN id the RPM rides on. The id and the divisor are settings, so a different car is a config change, not a rebuild.

6 of 16

OBD2 pins the bridge uses. CAN is run to pins 6 and 14 so the socket is the single service point.

Does the light work without the phone?

Yes. The strip runs from CAN with no phone and no app. The app only configures and observes. Thresholds saved to the board survive power-off.

Will it upset the car's CAN bus?

No. The node is configured listen-only and never drives a dominant bit, so it cannot acknowledge or disturb the bus. The 120 Ω termination jumper ships open because a vehicle bus is already terminated at both ends.

Why is the iPhone app a web page?

Because Safari has never had Web Bluetooth and every iOS browser has to use Safari's engine. Bluefy bridges it. The web app is the same three screens as Android and is free.

Is the flashing safe?

It is a flash tool for a twenty-year-old ECU, so treat it that way. The app reads and backs up the stock BIN before any write, recomputes the checksum, and refuses to write if anything else is on the K-line. Off-road and competition use only.

Not AWS Route 53?

Not AWS Route 53. R53 is the chassis code.