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