Continue to Site

Welcome to our site!

Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

  • Welcome to our site! Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

Simple Circuit Reverse Engineering (steering wheel radio controls)

dvm

New Member
Project Description:
I'm adapting the OEM BMW (E46 generation) steering wheel controls to work with an after market (Alpine) head unit. This design will be stand alone and will not be attached to the cruise control circuitry on the other side of the steering wheel as per the OEM configuration.

The PCB itself uses a resistance ladder / voltage divider (?) which I assume was interpretted by the electronics on the other board where it usually plugs in ... this in turn would send the BMW K-bus signals for the OEM radio to consume.

So rather than designing a new PCB entirely I simply want to use what is already there as I will be writing the Arduino code to suit. This is based on the assumption I can simply read the various voltages when buttons are pressed.

What I Know So Far:
There is a 4 pin header (goes to the cruise control 'master' usually) of which pins 1 and 4 seem to be used for the LED back lighting only and their circuitry appears to be completely isolated from the button circuitry. Pin 1 looks like a ground plane on the PCB and measures 32 ohms to the vehicle ground (again this is via the cruise control 'master').

Pins 2 and 3 are for the button circuitry and in the car with no buttons pressed they both measured 4.3V. The wires that connect to those pins (coming from the cruise control 'master') measure 5V when the board is not plugged in.
The small lights (assume LED ?) are getting 1.85V in the car (with 11.6V measured on pin 4) as well as using a 13.8V bench top supply to the board only.

Resistance between pins 2 and 3 is 17.25 kohm with no buttons pressed. Resistance changes with different button pad bridgings.

Voltages measured when buttons pressed are as below (as per OEM, connected in the car):

StatePin 2 (red)Pin 3 (yellow)
Nothing pressed4.3V4.3V
Volume +No Change (4.3V)3.13V
Volume -No Change (4.3V)0.80V
Track +No Change (4.3V)1.52V
Track -No Change (4.3V)2.41V
Phone2.81VNo Change (4.3V)
R/T1.48VNo Change (4.3V)

My Question:
At the moment I'm just looking to replicate the functionality that i see when its installed in the car when its on my desk being powered by my Arduino +5V, so seeing a measured voltage change on pin 2 or 3 when button pressed. Which ever way I connect things I don't see the voltage change from the 4.8x supply voltage.

The images below are likely the most interesting to anybody has stuck with me thus far :) Have cropped and flipped so that you can ALT-Tab between the two and see what aligns with what on both sides of the board.

I'm new to electronics so any pointers would be greatly appreciated.
Radio Back Overlay.jpg

Radio.jpg
 
Last edited:
There would be load resistors in the original radio or ECU.

The buttons connect the various resistors to the pin 1 ground.

Try connecting 1K resistors from pins 2 & 3 to the Arduino 5V (or 3.3v?) power, with pin 1 grounded.

That makes a kind of potentiometer, with the selected resistance from a pressed switch and the fixed 1K load together making a voltage divider.

The 1K is a guess from looking at the resistor range on the PCB. If the resulting voltages are not evenly spread out through the supply voltage range, it may need a slightly higher or lower value.

Don't go too low or you could burn up the PCB resistors.
 
  • Love
Reactions: dvm
So stoked, thanks rjenkinsgb !! I had some 1.5k resistors handy so popped those inline as you suggested and now have been able to sample the below values ... will be perfect to work with via Arduino !!

StatePins 1 & 2Pins 1 & 3
Nothing Pressed4.12V4.19V
Volume + (S2)No Change (4.12V)3.22V
Volume - (S3)No Change (4.12V)0.68V
Track + (S1)No Change (4.12V)1.45V
Track - (S4)No Change (4.12V)2.34V
Phone (S6)2.74VNo Change (4.19V)
R/T (S5)1.42VNo Change (4.19V)
 
Last edited:

Latest threads

New Articles From Microcontroller Tips

Back
Top