top of page
Search

EasierCan – BMW R1300GS Smart Backlight & Fog Light Controller

  • hagayb
  • Mar 9
  • 2 min read

A fully custom, CAN-bus-integrated lighting controller for the BMW R1300GS motorcycle. Reads factory CAN bus signals directly from the XDWA connector to control rear LED strips, fog lights, and an air horn — no wire cutting or relay splicing into the original harness.

GitHub Repository: https://github.com/HagayBT/BMW-R1300GS-Smart-Backlight-Fog-Light-Controller

Features

  • Wave-style sequential turn signals — 9x SK6812 RGBW LEDs per side, filling left-to-right/right-to-left in sequence

  • Brake light — first 3 LEDs dim red at idle, full bright red when braking

  • Fog light control — left and right fog lights via MOSFET switches, auto-enable 10 seconds after engine start

  • Fog turn-signal blink — fog lights blink in sync with the active turn signal

  • Emergency strobe — triple-press the high-beam flash for a 5-second full strobe on both fog lights

  • Knight Rider startup animation — red sweep across all 18 LEDs on boot

  • Serial diagnostics — 2-second heartbeat report via USB showing CAN bus health, error counters, and state summary

  • CAN bus isolated — uses SN65HVD230 transceiver; reads-only, never writes to the bus

Bill of Materials

  • Arduino Nano ESP32 — Main controller

  • SN65HVD230 CAN Bus Transceiver — 3.3V logic, connects to XDWA

  • 872-861-501 6P OBD Connector (BMW/VW/MB) — Plugs into R1300GS XDWA port

  • DC-DC Buck Converter 5V-30V to 5V 3A — Powers Arduino + LEDs from 12V bike battery

  • 3x LR7843 Isolated MOSFET Module (HW-532B) — Fog light left, fog light right, air horn

  • 18x SK6812 RGBW LED (addressable) — 9 per side, rear tail/turn strip

  • Silicone Wire 22 AWG — All signal and power wiring

  • 3D Printed Parts — BackLightBody, BackLightRod, BackLightScreen (PETG or ASA recommended)

CAN Bus Messages (BMW R1300GS at 500 kbps)

  • 0x3FA — Engine state (Byte 5 > 0 = engine running)

  • 0x2D0 — High beam flash (Byte 6, bit 4 = 0 when flashed)

  • 0x2D2 — Switches: Byte 0 bit 2 = Left signal, bit 3 = Right signal, bit 5 = Brake

Note: CAN High/Low voltages on this bike are inverted from typical convention. If you see no CAN traffic, try swapping CANH/CANL wires first. These IDs were reverse-engineered on a specific R1300GS — confirm with a CAN scanner on your own bike.

3D Printed Parts

All STL files are in the /STL folder of the GitHub repo. Print in PETG or ASA for outdoor/UV resistance, 20-30% infill. No supports needed for Body and Screen; Rod may need supports depending on orientation.

Software Setup

  • Install Adafruit NeoPixel library via Arduino Library Manager

  • Install ESP32 Arduino Core (Board Manager — search 'esp32' by Espressif)

  • Select board: Arduino Nano ESP32, then upload EasyerCan.ino

  • Open Serial Monitor at 115200 baud to see diagnostics and CAN bus health

Safety Notes

  • Reads CAN bus only — never transmits, cannot interfere with bike ECU operation

  • Always fuse the 12V input line (5A inline fuse recommended)

  • Test all connections on the bench before installing on the bike

  • Fog lights auto-enable 10 seconds after engine start — ensure they are properly mounted before first test

License: MIT — free to use, modify, and share. Credit appreciated! PRs and Issues welcome on GitHub.

 
 
 

Comments


bottom of page