Notices
JK Electrical, Lighting & Sound Systems Bulletin board forum regarding topics such as stereo head units, CD players, MP3 players, speaker systems, amplifiers, hardmounted GPS devices, computers, headlight upgrades, fog lights, off-road lights, general wiring and anti-theft devices.

Successful 2010 Jeep Wrangler JK Steering Wheel Upgrade

Thread Tools
 
Old Mar 6, 2026 | 08:02 AM
  #1  
ACoupleJeeps's Avatar
Thread Starter
JK Newbie
 
Joined: Mar 2026
Posts: 3
Likes: 0
From: Manchester, TN
Default Successful 2010 Jeep Wrangler JK Steering Wheel Upgrade

2011 Jeep Wrangler Steering Wheel Upgrade for 2010 JK with Aftermarket Radio — Complete Guide

Background

So, for awhile now I've been interested in swapping the steering wheel in my 2010 Wrangler. My wife has a 2011 with the upgraded interior which included a new steering wheel and steering wheel controls (SWC). Last year I bit the bullet and bought an AWESAFE Android Radio off Amazon because my OEM RES Nav radio started having issues with the hard drive and was frankly very outdated. Around the same time my Cruise control stalk started not always responding to pushes. Sometimes it would turn on Cruise but sometimes I had to press it multiple times. Anyways, about a month ago I grabbed a steering wheel from a 2011 Jeep Liberty out of the local Pick-N-Pull and got to work. This is basically the same steering wheel and SWC modules that are in the 2011 Wrangler.

The problem is the 2010 never had this as an option. The 2011 uses a LIN bus network between various internal systems, such as the instrument cluster, SWC module, compass, switch bank, etc. The instrument cluster controls the data from these modules and rebroadcasts any relevent data on the IHS CAN Bus to the TIPM. The 2010 instrument cluster does the same but is missing the programming for SWCs.




Investigation

I had to slice wires from the turn signal switch to the clockspring. I removed the two horn wires from the clockspring's C1 connector and wired GND, B+, and LIN to it. Copying the wiring in my wife's Jeep. This allowed the SWC module to be wired into the LIN network.

I used JSCAN to initially scan both the 2011 and 2012 Wrangler's OBD2 and under instrument cluster, Live Data, I could monitor for button commands on the LIN network and CAN network/ Obviously the 2011 showed when buttons were pressed. However, the 2010 also showed buttons pressed even though nothing happened. The next step was to replace my instrument cluster with my wife's old one that I had replaced a while back due to a faulty dome light control circuit. Still, no buttons worked but the SWC would light up when I turned on the headlights. Interesting, so communication is present with the newer Instrument cluster. I thought maybe the Menu, and Compass buttons would at least work because they didn't need anything sent on the IHS CAN bus but they didn't change the EVIC. Next I wired in the clockspring from the 2012 Liberty to see if there was any difference and a new module did show up in JSCAN. Still nothing worked.




Reverse Engineering

At this point, I decided to focus on the Cruise Control module first. Using ALLDATA.com, I was able to determine that the Cruise control module was wired directly to the Powertrain Control Module (PCM). The PCM monitors a voltage that is adjusted by resistors inside the Cruise control stalk on the 2010 and inside the right SWC module on the 2011. After, a lot of tinkering and switching resistors and rewiring the SWC module using jumpers, I was able to get the Cruise control to function properly. First problem solved.

While I was inside the right SWC module, I could see that there was a TJA1021 LIN transciver also on the board but in it's own separate circuit. So now I knew that this module control the left module and the audio controls on the back on the steering wheel. So, how to use that without replacing every ECU in my Jeep? I needed a way to listen and talk to the LIN and CAN buses.

After, some research online and on Amazon, I found a few options. First was module from Copperhill Technologies that had built-in CAN and LIN bus transceivers and was controlled by an ESP32 microcontroller. However, they want $90 for this module. Looking on Amazon, I found a 2 pack of ESP32-S3 Development boards, LIN transceiver module, and a pack of 5 CAN bus transceivers for a grand total of $39. So I wired them together using some breadboard wires and hooked them up by splicing the LIN board into the compass module wiring and the CAN board into the second connector on the pigtail for my Radio( it came with a pigtail for stock amplifier and non-amplified radio Jeeps).

I then downloaded Arduino IDE and began a long 3 week process of interacting with ChatGPT and ClaudeAI. For God's sake, really? Artificial Intelligence my fourth point of contact. After many, many, many iteration of code that almost worked, I learned that if you treated ClaudeAI like a super genius child you could direct it to produce useable code. Also, by this time I had picked up enough from reading through all the previous coding attempts to recognize what the code meant and what was happening. On a basic level at least.




LIN Bus Decoding

Sorry, this gets really nerdy. My knowledge of all this is still new and getting better, so I apologize if I explain something unclear.

The 2011 steering wheel communicates on the LIN bus at 9600 baud. Each frame starts with a break/sync sequence (0x00 0x55) followed by the PID and data bytes. The steering wheel uses PID 0x1F with the following structure:
Code:
0x00 0x55 0x1F [B0] [B1] [B2] [B3] [B4] [CHK]
B1 is normally 0xC7 and B2 is always 0xFF. Button presses change B0, B3 or B4 and the horn changes B1. The last bit is a checksum so that the module knows the data is correct.



CAN Bus Decoding

When the instrument cluster detects the LIN messages it send data on the CAN bus on PID 0x3A3 for the SWC button presses. It send messages on PID 0x2A8 for the Horn. SO if I send the following message on the IHS CAN bus when the horn is pressed it honks: 0x2A8 [6] 0x80 0x00 0x00 0x00 0x00 0x00. When it is released this message is sent: 0x2A8 [6] 0x00 0x00 0x00 0x00 0x00 0x00. Now we're getting somewhere. So I compiled a list of the SWC button presses and sent those messages on PID 0x3A3. And the radio went bananas. Sometimes it would register the correct button press but mostly it just changed the radio mode (i.e. from Radio to Bluetooth to Aux, etc). I tried.....and tried.....quit for a few days and tried again. Same behavior.




NEVER Give UP

So after a few arguments with 'ol ClaudeAI ( I know! At this point I may have been losing my mind), I remembered that the radio had wires for KEY1 and KEY2. This is the method used prior to all the LIN nonsense to send SWC commands to Radios. Basically, the radio monitors a voltage on these two lines and when it detect a drop it performs the function you learned into the SWC section of the radio. Sound familiar? Just like the Cruise Control and PCM!

This method is called a “resistive ladder”. So I purchased some Perf boards and header pins from Amazon. Watched some videos on what the hell all that was and got to soldering. The result was a board that the ESP32 plugged into and the LIN and CAN bus modules were attached to to clean up my dangly wire nightmare that I had been using. I then selected 12 GPIO pins and connected them to the resistive ladders I soldered onto the perf board. Six buttons to KEY1 and six to KEY2. Basically, there are wires running from the GPIO pin to two rows of resistors soldered onto the perf board.

These resistors are connected together on one side to the KEY1 or KEY2 wires. The resistors I used were 20, 300, 510,910,1.2k and 1.5k Ohm. One set for each KEY wire. This allowed the voltage detected by the radio to change enough to differentiate separate button presses.

Back to ClaudeAI and Arduino IDE to reprogram the ESP32 to detect the button presses over the LIN bus. When the horn is detected, it send the command over the IHS bus. When a button press is detected, it brings the corresponding GPIO pin “LOW” or to ground thus increasing the resistance on that WIRE and changing the voltage. I mapped the Audio controls and then the Left hand module buttons to also work with the Radio seeing as my stock instrument cluster doesn't use them. So, I have Vol Up, Vol Down, Mute, Next Track, Previous Track, Mode Select, Home, Play/Pause, VR, Call, Back and Navigation mapped. And.....it all works!




What's Left

The horn currently pulses slightly when held rather than blowing continuously. I think this is a timing issue with the message being sent over the IHS CAN bus. I'm going to have to gather more data from the 2011 to see exactly what is supposed to happen when the horn is held down. Also, sometimes a SWC button press registers twice even for a quick press. Also, a timing issue I think. I'm going to record more data from the 2011 Wrangler to see if I can't find the correct pattern for a flawless experience.

Well, if you made it this far, I've uploaded a few video to YouTube showing the work and I am currently working on making a tutorial video also. Search for AcoupleJeeps. Also you can check out my Google drive for documents relating to this project. I'll be updating them until everything is done.

https://drive.google.com/drive/folde...3T?usp=sharing
Reply
Old Mar 7, 2026 | 10:41 AM
  #2  
resharp001's Avatar
JK Jedi
FJOTM Winner
10 Year Member
Loved
Community Favorite
 
Joined: Jun 2013
Posts: 11,346
Likes: 2,086
From: Willow Park, TX
Default

Thank you for sharing! That is some indepth PDF documentation in your drive link!
Reply
Old Mar 7, 2026 | 05:15 PM
  #3  
ACoupleJeeps's Avatar
Thread Starter
JK Newbie
 
Joined: Mar 2026
Posts: 3
Likes: 0
From: Manchester, TN
Default

I thought I should share after spending a month going down this rabbit hole. Maybe save someone else a little time. I had to learn a lot of new skills to figure this out, not to mention dealing with "AI" chatbots. The guide for the SWC interface should be up within the week. I just wanted steering wheel controls.
Reply
Old Mar 27, 2026 | 11:26 AM
  #4  
ACoupleJeeps's Avatar
Thread Starter
JK Newbie
 
Joined: Mar 2026
Posts: 3
Likes: 0
From: Manchester, TN
Default

I've uploaded a preliminary guide of setting up the actual hardware for the LIN/CAN bus adapter to google drive.
Reply




All times are GMT -8. The time now is 09:34 PM.