Skip to content

Arduino Due solution for adding vin-coded modules to BMW cars

License

Notifications You must be signed in to change notification settings

petrunov/BMWCanBridge

 
 

Repository files navigation

BMWCanBridge

Retrofiting/swapping night vision NIVI and other modules to modern bmws

Did you damage the very expensive night vision camera on your bmw? Or are you, like me, blind as a bat when it's dark out and would like to have a night vision camera? It turns out with an arduino and some C++ you can retrofit the system to most modern bmws:

Bit of technical info

The night vision module, along with others that connect to k-bus (CIC, NBT navigation etc), is coded directly to the vin number of the original car and refuses to work if it receives another vin. Specifically, all these modules look for 7 byte long 0x380 frames that encode the last 7 digits of the vin as ascii hex values.

Arduino to the rescue

The good folks at CopperHill Technologies make a dual channel can bus shield for the Arduino Due that allows you to intercept and change the vin frames to match whatever the modules are expecting.

One caveat for the night vision application: both the camera and the module have to come from the same donor. There is an extra layer of security between the two and the communication doesn't happen over k-can bus.

Wiring and setup

To wire up the arduino, tap any k-can wires (yellow/black twisted pair on e60 cars, there's one right under the glovebox) and run that into CAN1 port on the module, without any terminating resistance. Then run another set of can high/can low wires from the module you'd like to install (eg the night vision controller) to CAN2 port and add 120ohm resistor from each wire to ground. The K-can lines on bmws use low speed / fault tolerant can-bus spec, so termination does not happen across the two can lines. To power the arduino, you can use something like the amplifier 12v pin on the CCC nav unit (pin 13) that goes hot whenever you unlock the car.

Wiring diagram

Once it's all wired up, grab the BMWCanBridge sketch code from github, edit the values of DONOR_VIN array with your donor vin and upload the sketch to your Arduino Due. The new module will be happy and, more importantly, all factory diagnostics will see it as if it were OEM.

Night vision parts list
  • 66549164992 Night vision controller
  • 66549167255 Night vision camera, hopefully with the bracket
  • 61316946321 Headlight switch with night vision button (and hud)
  • 61138373632 Connector for the camera
  • 61130005199 6x pins for the camera connector
  • 61138364666 18 pol connector for the night vision controller (AMP 1-963616-1) - tons of bmws use them
  • 61138364662 Cap thingy with lever for the connector above
Retrofitting with CIC

There's a slight difference in wiring - pins 2 (-) and 4 (+) are feeding the composite video on the CCC unit, compared to pins 2 (+) and 12 (-) on the CIC. In other words, going from CCC to CIC, pin 4 wire goes to pin 2 and pin 2 wire goes to pin 12.

To enable the compositive video feed, CIC needs to be coded with NCSExpert with the following:

NVC wert_21

TV wert_21

And a handy factory retrofit guide

NVE Module NVC Camera

About

Arduino Due solution for adding vin-coded modules to BMW cars

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 99.6%
  • C 0.4%