Chrysler 300M Enthusiasts Club
  • Steering Wheel Audio Controls - Project

  • General Discussions about the 300M and other LHs
Membership Banner

General Discussions about the 300M and other LHs

Moderator: Moderators

 #392355  by Evon Trizmo
Hey guys, been a while but glad to be back! After giving my 300m to a family member years ago I finally was able to find a mint condition 98 Concorde to get me back into the game! Only problem is it's a base model and doesn't support or have steering wheel radio controls which, let's be honest, are something you never thought you needed until you had them and once you had them you can't live without; sad but true I know.

Anyways let me cut to the chase. I installed a factory RB1 radio and a woodgrain/leather steering wheel that of course has the radio control buttons on it. I wired up the buttons through the clockspring to the BCM C2 pins 3 and 16 just like they are on 2001+ models but alas no worky worky. I can't really change BCMs since the odometer info is stored in it and I read the OTIS and other things may or may not work right either.

This is where I would appreciate any and all of your guys' help! To have my cake and eat it too I think there are only two options left. Option the first would be to wire in the 2001+ BCM, isolate the PCI bus from the radio to said BCM and hookup the buttons to it which will probably work but then I thought now how do I get the dimmer signal to the radio? So, I'm looking for help with a much more effective and elegant solution.
Which brings us to option the second, create a PCI bus transmitter to inject the radio button command codes into the data stream. I successfully was able to control the radio's function with an ELM327 and by sending AT commands directly through it. I also have an Autel bi-directional scanner which can do the same thing; and of course, a BCM can do this as well but the problem with that is that is also wants to broadcast its odometer reading, and lots of other things over the same PCI bus as well. So, then we'd just have two BCMs screaming at the rest of the car with all kinds of useless watching The View on TV.
Anyway! I'm looking to program this code into an Arduino or even better yet an ESP8266. I believe I could use an ELM327 chip or output to an SPI bus and then use an SPI to PCI bus interface chip to get the signals into the PCI bus, but I'm no electronics expert so if anyone knows a better way, by all means please share. So now that everyone is thoroughly bored after reading all that, I just wanted to throw my idea out there. Thanks for reading!!
User avatar
 #392358  by FIREM
Your project is a little out of my wheelhouse however it can be done. StanWalker (RIP buddy) had all the “goodies” in his 2000M. Piggybacked an 01 BCM and had Steering Wheel controls, RB1, U Connect and Siri’s all in his car.
I do not know the details of how he did it but I do remember a small toggle switch in the ash tray was the only external evidence of his set up.
I’m thinking Steve 00R/T can help with this set up.
 #392359  by Evon Trizmo
Thanks for the replay and now that sounds like a neat setup!

I did something similar with adding radio buttons, RB1, ATC and Uconnect in my 02 Sebring. In 04 they added steering wheel audio controls and ATC to those cars using the same 7 wire clockspring the LH cars use but these JR cars always had two stage airbags so four wires were always used for the driver's airbag. This left only three wires left for the Chrysler engineers to work with which were cruise control to the PCM on a 5volt pull down reference signal, horn to the BCM on a 12 volt pull down signal and ground. I'm guessing changing the NGC PCM to accept cruise and radio button input on the same wire was too expensive, so they changed the BCM to now supply a 5volt reference signal to the horn and connected the radio buttons to that wire with the horn still working by pulling that line to ground.

Now without going too far down the rabbit hole basically I had a relay that powered up the second newer BCM and also switched the horn wire between my original BCM and a second BCM depending on if the key was on or off, so I didn't have to keep both powered on all the time. For the dimmer, I desoldered a resistor in the second BCM that supplied 5volts to the dimmer wire and just connected those two wires together between both BCMs. Everything worked perfectly! Only downside was no scan tools could talk to the radio, DVD changer, Sirius module or ATC through the DLC since all those PCI wires were now only connected to the second BCM.

Once again useless information but maybe someone might find it to be a good read.
 #392363  by 00R/T
Injecting signals on the PCI bus is a bit tricky because it really doesn’t like having multiple masters. My recommendation for a simpler solution is to put together a custom interface that controls an isolated PCI bus. The steering wheel radio switches are resistor multiplexed, so you would just need to feed them into an A/D converter on an Arduino (you may need to knock the voltage down. I can’t remember). You could do the same with the dimming signal to a GPIO with a level shifter. There is a dimming signal wire at the radio, so it may not even use the PCI bus for that info.

You really don’t need an ELM327 or anything like that because the J1850 VPW protocol is very simple. You can bit-bang it on a GPIO with a simple discrete interface circuit.
 #392387  by Evon Trizmo
Thanks for the replies! I've considered just trying to bit bang the PCI signals into the bus as well but really didn't know how to translate the AT commands I've inputted into the ELM327 command line to PCI.

I was thinking of inputting the button voltages into an arduino or similar like you said with an ADC and from there having the arduino outputting messages over it's SPI interface to a 04745748 part number chip, which can be found in almost any PCI communicating module in the car and I believe can translate SPI to PCI to talk with the bus. So Buttons>Arduino>04745748 chip>PCI bus>radio. Not sure of all the exact details or even if this is possible but I'll give it a try for sure!
 #392425  by Evon Trizmo
Alright guys, quick update on where I am and what I learned. Where? Back to square one. What I learned? Quite a bit, let me share. To save you all from reading everything, there's only one option really, make a custom PCI signal injector module to make it work, either emulating a scan tool that's hooked up all the time or a very low priority module with a high resistor valve on the PCI line.
I've been thinking of ways to get the buttons to work using all junkyard parts since I'm not sure on where to even begin in making a custom PCI module.

Idea 1: Just find an 02+ BCM and with lower miles than my car and connect a PCM and a pulse generator to the output speed sensor signal to count up the miles on the BCM. This worked out great until I went to the start the car and accidently enabled VTSS with the newer BCM. Not having any supporting wiring harnesses for key cylinder switches, sun sensor/VTSS LED, this option was a total fail.

Idea 2: Find the EEPROM chip in the BCM and just swap it over to another BCM. This didn't work out also because one 8 pin chip was a PCI translator I think and the other I swapped and nothing changed. Not sure exactly where the mileage is stored and also if the same chip stores the BCMs programed features like....VTSS.

Idea 3: Desolder and swap all extra chips and resistors from the newer BCM to the old BCM. Again this didn't change the functionality of the BCM. And with most of the chips having custom part numbers on them, finding datasheets was impossible. The inputs run into a Philips SOP-16 chip, and spending days looking up random datasheets and matching up known pins I'm guessing this chip is some kind of 74 logic demultiplexer?

Idea 4: I was successfully able to demultiplex all the steering wheel buttons in an arduino and started reading datasheet on an elm327 chip. The issue I was having was connecting the two together so they could talk to each other. SPI, serial? Not sure.

Idea 5: Add a second BCM, here is how far I am with this idea right now. Hooked up powers and grounds, moved the PCI wire going to the radio from the old BCM to the new BCM, steering wheel buttons work! The buttons will illuminate and even dim from having the orange "Panel lamps driver" wire hooked up, however, the screen on the RB1...the screen will not dim and just stays at full brightness day or night, which I much rather have a dimmable screen than radio controls anyday...or night. So I thought the screen was controlled by the PCI bus and I thought right! I tapped into the dimmer switch wire and connected to the new BCM also but now with both BCMs putting out their own pull down voltage, nothing is working right with the dome lights and dash lights freaking out. I tried to find the pull down voltage supply resistor in the new BCM to desolder it but no luck, it seems a chip is suppling the 5v signal directly. Then I tried moving all the orange "Panel lamp driver" wires to the new BCM and having that BCM do all the illumination by disconnecting the dimmer switch from the old BCM but now the cluster and OTIS screens won't dim. I also tried a bunch of other small work arounds but this post is already too long, I know.

So that's where I'm at so far. I'm still not giving up hope though. Maybe I might get it working great someday but in the meantime I'll keep trying everything I can. I did a forum-wide search for PCI bus and Steering wheel controls. Opened about 70 new tabs on every topic that came up in the search. I still have about 10 tabs to go reading every post. If anyone would like to chime in though with any info or experience, please do. Thanks again guys!!
User avatar
 #392426  by EasyRider300M
All I can say is you have the patience and fortitude of a Saint. "Where there's a will, there's a way." Hope you achieve your goal ;)
User avatar
 #392436  by FIREM
It is a shame that Stan did not document his install. To the best of my memory and discussions he Piggybacked an 02 BCM
Sounds like you are closing in on duplicating his set up.
 #392444  by Evon Trizmo
Sounds like anyone who really gets into it always ends up at exactly the same place.

I think I may have found exactly what I was looking for in, of all places, the forum wide search function haha!
This post here: viewtopic.php?p=353202#p353202 definitely gives me new hope for this project. Seems like it's already been done before which is great news! But how, that is the question that remains.
 #392464  by 00R/T
Evon Trizmo wrote:Sounds like anyone who really gets into it always ends up at exactly the same place.

I think I may have found exactly what I was looking for in, of all places, the forum wide search function haha!
This post here: viewtopic.php?p=353202#p353202 definitely gives me new hope for this project. Seems like it's already been done before which is great news! But how, that is the question that remains.
Back then when I did it I was but a wee child and just used some crappy MCU on a breadboard with an ELM327. It was more a proof of concept than anything.

If I were to do it again, I’d do it like I’ve done for CAN on other cars and build a gateway. The MCU would have two separate bus connections. One would go to the car and one would go to the radio. Then you can implement logic to selectively pass/block, modify, or generate messages.
 #393060  by Evon Trizmo
That's great information! Using a gateway is kind of the same conclusion that I've come to as well.

Over the last few months I've been trying a bunch of things to make this work. I haven't given up on this project and just wanted to give everyone who's interested an update on my progress so far:

First of all tried to make the EML327 chip work and got really close to doing it but there was one issue that makes it not a feasible option. When I would send a single command to the radio, the radio would do that command a random number of times (usually 3 to 6) so if I sent one volume up command, the radio would turn the volume up 3 or even 6 levels at a time. My setup was connecting an ELM327 chip's RX and TX lines to an ESP8266 board's TX and RX lines. Then I wrote a simple code in Arduino IDE that sent the buffer from the serial monitor to the EML327 chip which worked well but the ELM327 takes your message, sends it to the header you have to set first, then adds its own CRC code as well so maybe that's why the commands were executing multiple times? Maybe the ELM327 keeps sending the message over and over again until it gets a request received message back from the radio? Maybe the messages it sends on the PCI bus aren't really made for controlling things, just requesting data for OBD stuff? I don't know so that's as far as I got there.

After trying a few other small and insignificant things and running out of ideas, I finally thought I should look at the BCM more closely. While it's not super important, it would be nice to have the car send speed information to the RB1 radio for the GPS and dimmer information too which would have to go through a second BCM. Using multiple BCMs is a must anyways because I need one that supports the radio controls to send the correct messages to the radio. The only issue is having the second BCM not send any data out to anything else except the radio.
I've found a chip on the BCM that handles all the PCI bus data and splits it up into two separate lines, data in and out. I'll post a picture at the bottom that shows what I'm talking about in more detail. The PCI line connects to two resistors, one resistor is 10ohms and goes to the data out pin of the chip and the other resistor is 15kohms and connects to the data input to the chip. This chip also has to do something with the data too and I'm assuming it's connected to the BCM processor over two other lines, RX and TX, but without a datasheet for this Harris 3532AC chip, I don't know.
I thought I'll just remove one of those resistors to stop data from either coming in or going out but removing any one of those resistors stops data transmission completely in or out of the BCM so that didn't work. They could also be used as terminating resistors or something? Or the BCM is some kind of master node and needs both lines connected? Not sure. Maybe there's another way to rearrange the resistors or add a second pair to make this work?

So now I'm thinking maybe I could add a second 3532AC chip and connect one to the RX line of the processor and the other to the TX line of the processor. Or maybe both PCI data in and out lines and/or both processor RX and TX lines need to be connected to the same bus because they need to see if the bus is ready to send data first before sending anything or get back some kind of verification data? I don't know. This is where I hit a brick wall and ran out of ideas.

If anyone has any input or information please let me know, it's also very much appreciated as always. Like I said even if I can't make this work it's still a good starting point for the next guy. Thanks again!!
The last thing is those pictures I talked about earlier. Here they are:
You do not have the required permissions to view the files attached to this post.