The Chrysler Minivan Fan Club Forums banner

DIY Uconnect

5K views 17 replies 4 participants last post by  Turbo84 
#1 ·
Sorry a bit of a play on the words of a another thread but Ive been frustrated by the absolute crappiness of the factory Uconnect and its very dubious bluetooth capability in my 2008 Grand Voyager with an MyGig REZ headunit.

Sooo Ive decided to have a go at making my own which will support modern Bluetooth versions including the ability to stream music.

Ive been working on this for a couple of weeks now and have finally made some in roads and thought I shold share what Ive got on the off chance someone else wants to have a go at it or has done it and can help fill in some holes in my work.

Ive started documenting the process on hackaday.io but will try and update this thread as well as I go.

I could just go and but a new headunit with everything built in but wheres the fun in that......

 
#2 ·
The Uconnect Module contains a Bluetooth devices fro connecting to the phone - it connects to the microphones in the rearvision mirror to pick up the audio and connects to the Head unit to send the audio. The Uconnect module "talks" to the Head unit via the CAN bus.

The first thing to do is work out the commands required by the Head unit to switch to "Phone" mode and display any necesarry data - ie call time, battery level and signal strength.

To connect to the the CAN bus I have soldered connections into the Uconnect module to the CAN bus lines which connects to an MCP2515 CAN bus interface and from there to a Raspeberry PI (small single board computer).
The Raspberry Pi runs the Linux opperating system which has built in tools for talking to the CAN bus. It allows you to monitor al the data, capture the data to a log file and send commands to the CAN bus.

The can bus data when logged looks something like this (see the table below)

This is the first 1/2 second of data on the bus when a phone call is made.

There is around 200 messages per second on the bus with just the ignition in the ACC position and nothing else happening.


(1606285710.961159)can02D0#82F124F501
(1606285710.962015)can0217#827B0E0044FE
(1606285710.962802)can0244#02C0000080
(1606285710.963723)can020E#1305806050FF0C
(1606285710.964763)can0211#0000FFFFFFFFFFFF
(1606285710.965604)can02A8#000000000000
(1606285710.966498)can0292#004B000000002C
(1606285710.967531)can02CE#FFFF000000000000
(1606285710.969301)can0293#400558F102000000
(1606285710.975399)can0214#16681600196000
(1606285710.978516)can0219#0150583842313533
(1606285710.979148)can02E9#00000000
(1606285710.984854)can03A3#0000
(1606285710.989349)can03B0#1D1000001D100000
(1606285710.994919)can0308#0300C8
(1606285710.999371)can03B3#0000000000000000
(1606285711.003694)can0211#0000FFFFFFFFFFFF
(1606285711.004697)can019F#03FF000000FF0000
(1606285711.005312)can02E3#000000
(1606285711.007584)can02EB#000000FF
(1606285711.009257)can03D9#0C0A0A080C0A00
(1606285711.014832)can02E1#00
(1606285711.039350)can0416#FD25BFFFFFFFFFFF
(1606285711.053852)can02CE#FFFF000000000000
(1606285711.054840)can019F#03FF000000FF0000
(1606285711.055848)can02C4#000000FFFFFF0000
(1606285711.056694)can0286#0382C0000000
(1606285711.057702)can02CD#000000000000FF00
(1606285711.058314)can02EB#000000FF
(1606285711.059285)can0208#00A2090000002D
(1606285711.059898)can020B#6100
(1606285711.060688)can0217#827C0E0043FE
(1606285711.061739)can0211#0000FFFFFFFFFFFF
(1606285711.065221)can02A8#000000000000
(1606285711.075272)can0214#16681600196000
(1606285711.078547)can0219#0235333700000000
(1606285711.104538)can0211#0000FFFFFFFFFFFF
(1606285711.105533)can019F#03FF000000FF0000
(1606285711.107515)can02EB#000000FF
(1606285711.108672)can03ED#00
(1606285711.135844)can02D1#000800
(1606285711.137654)can0425#FD30BFFFFFFFFFFF
(1606285711.154621)can02CE#FFFF000000000000
(1606285711.155613)can019F#03FF000000FF0000
(1606285711.156653)can02C4#000000FFFFFF0000
(1606285711.157500)can0286#0382C0000000
(1606285711.158117)can02EB#000000FF
(1606285711.159163)can02CD#000000000000FF00
(1606285711.160090)can0208#00A2090000002D
(1606285711.160703)can020B#6100
(1606285711.161495)can0217#837A0E0045FE
(1606285711.162536)can0211#0000FFFFFFFFFFFF
(1606285711.165271)can02A8#000000000000
(1606285711.175284)can0214#16681600196000
(1606285711.178538)can0219#0031413847544834
(1606285711.204863)can0211#0000FFFFFFFFFFFF
(1606285711.205864)can019F#03FF000000FF0000
(1606285711.207595)can02EB#000000FF
(1606285711.223120)can0430#FD3F3FFFFFFFFFFF
(1606285711.242457)can02C8#A00000000000
(1606285711.254743)can02CE#FFFF000000000000
(1606285711.255733)can019F#03FF000000FF0000
(1606285711.256739)can02C4#000000FFFFFF0000
(1606285711.257586)can0286#0382C0000000
(1606285711.258198)can02EB#000000FF
(1606285711.259248)can02CD#000000000000FF00
(1606285711.260176)can0208#00A2090000002D
(1606285711.260789)can020B#6100
(1606285711.261595)can0217#827C0E0044FE
(1606285711.262630)can0211#0000FFFFFFFFFFFF
(1606285711.265303)can02A8#000000000000
(1606285711.275412)can0214#16681600196000
(1606285711.278534)can0219#0150583842313533
(1606285711.304892)can0211#0000FFFFFFFFFFFF
(1606285711.305886)can019F#03FF000000FF0000
(1606285711.307567)can02EB#000000FF
(1606285711.311577)can043F#FD023FFFFFFFFFFF
(1606285711.354672)can02CE#FFFF000000000000
(1606285711.355661)can019F#03FF000000FF0000
(1606285711.356685)can02C4#000000FFFFFF0000
(1606285711.357532)can0286#0382C0000000
(1606285711.358146)can02EB#000000FF
(1606285711.359196)can02CD#000000000000FF00
(1606285711.360123)can0208#00A2090000002D
(1606285711.360738)can020B#6100
(1606285711.361536)can0217#827B0E0044FE
(1606285711.362563)can0211#0000FFFFFFFFFFFF
(1606285711.364385)can0240#06000088
(1606285711.365226)can02A8#000000000000
(1606285711.366019)can03E6#111A28
(1606285711.369850)can02CF#000800
(1606285711.375268)can0214#16681600196000
(1606285711.376375)can02D9#00C126C227C000
(1606285711.378569)can0219#0235333700000000
(1606285711.395361)can0402#FD083FFFFFFFFFFF
(1606285711.404920)can0211#0000FFFFFFFFFFFF
(1606285711.405926)can019F#03FF000000FF0000
(1606285711.407542)can02EB#000000FF
(1606285711.454543)can02D2#000700
(1606285711.455531)can019F#03FF000000FF0000
(1606285711.456506)can01C0#0C7FF37F007FC0FF
(1606285711.457530)can01E7#0000000000000000
(1606285711.458146)can02EB#000000FF
(1606285711.459202)can02C4#000000FFFFFF0000
(1606285711.460051)can0286#0382C0000000
(1606285711.461056)can02CD#000000000000FF00
(1606285711.461915)can0249#002002000000
(1606285711.462828)can0208#00A2090000002D
(1606285711.463435)can020B#6100
(1606285711.464245)can0217#817C0E0044FE
(1606285711.465047)can0244#02C0000080
(1606285711.465872)can02A8#000000000000
(1606285711.466873)can0283#0000000000000000
(1606285711.467776)can020E#1305806050FF0C
(1606285711.468816)can0211#0000FFFFFFFFFFFF
(1606285711.469751)can0292#004B000000002C
(1606285711.470783)can02CE#FFFF000000000000
(1606285711.475283)can0214#16681600196000
(1606285711.478553)can0219#0031413847544834
(1606285711.484836)can03A3#0000
(1606285711.493218)can0408#FD093FFFFFFFFFFF
(1606285711.494951)can0308#0300C8
(1606285711.505020)can0211#0000FFFFFFFFFFFF
(1606285711.505635)can02E3#000000
(1606285711.506623)can019F#03FF000000FF0000
(1606285711.507778)can02EB#000000FF
(1606285711.514966)can02E1#00
(1606285711.525332)can0370#0000000000000000
(1606285711.535300)can02E7#8400000000000279
(1606285711.539622)can0293#500558F102000000
(1606285711.545095)can02B0#03000000
(1606285711.555078)can02CE#FFFF000000000000
(1606285711.556064)can021B#10000000007F0010
(1606285711.557055)can019F#03FF000000FF0000
(1606285711.557669)can02EB#000000FF
(1606285711.558727)can02C4#000000FFFFFF0000
(1606285711.559638)can0286#0382C0000000
(1606285711.560646)can02CD#000000000000FF00
(1606285711.561574)can0208#00A2090000002D
(1606285711.562190)can020B#6100
(1606285711.562983)can0217#827B0E0044FE
(1606285711.564012)can0211#0000FFFFFFFFFFFF
(1606285711.565302)can02A8#000000000000
(1606285711.569476)can0293#400558F102000000
(1606285711.575425)can0214#16681600196000
(1606285711.578555)can0219#0150583842313533
(1606285711.579523)can03D9#000A0A080C0A00
(1606285711.589487)can0293#510558F102000000
(1606285711.590913)can0409#FD0ABFFFFFFFFFFF
(1606285711.593220)can03F5#05436F6E6E656374
(1606285711.599770)can0293#410558F102000000
(1606285711.605418)can0211#0000FFFFFFFFFFFF
(1606285711.606424)can019F#03FF000000FF0000
(1606285711.607743)can02EB#000000FF
(1606285711.620644)can03F5#02696E6720202020
(1606285711.635462)can02D1#000800
(1606285711.655614)can02CE#FFFF000000000000
(1606285711.656607)can019F#03FF000000FF0000
(1606285711.657615)can02C4#000000FFFFFF0000
(1606285711.658232)can02EB#000000FF
(1606285711.659128)can0286#0382C0000000
(1606285711.660131)can02CD#000000000000FF00
(1606285711.661060)can0208#00A2090000002D
(1606285711.661677)can020B#6100
(1606285711.662474)can0217#827B0E0044FE
(1606285711.663498)can0211#0000FFFFFFFFFFFF
(1606285711.665299)can02A8#000000000000
(1606285711.675350)can0214#16681600196000
(1606285711.676329)can040A#FD0B3FFFFFFFFFFF
(1606285711.678586)can0219#0235333700000000
(1606285711.705818)can0211#0000FFFFFFFFFFFF
(1606285711.706810)can019F#03FF000000FF0000
(1606285711.707712)can02EB#000000FF
(1606285711.742403)can02C8#A00000000000
(1606285711.755636)can02CE#FFFF000000000000
(1606285711.756626)can019F#03FF000000FF0000
(1606285711.757631)can02C4#000000FFFFFF0000
(1606285711.758247)can02EB#000000FF
(1606285711.759144)can0286#0382C0000000
(1606285711.760151)can02CD#000000000000FF00
(1606285711.761079)can0208#00A2090000002D
(1606285711.761695)can020B#6100
(1606285711.762488)can0217#837C0E0044FE
(1606285711.763524)can0211#0000FFFFFFFFFFFF
(1606285711.765347)can02A8#000000000000
(1606285711.766341)can040B#FD0FBFFFFFFFFFFF
(1606285711.775280)can0214#16681600196000
(1606285711.778567)can0219#0031413847544834
(1606285711.802542)can03A2#0005000700000007
(1606285711.806324)can0211#0000FFFFFFFFFFFF
(1606285711.807330)can019F#03FF000000FF0000
(1606285711.807945)can02EB#000000FF
(1606285711.812535)can0284#0670000000000000
(1606285711.840445)can02D0#82F124F501
 
#3 ·
The first thing to do is work out the commands required by the Head unit to switch to "Phone" mode and display any necesarry data - ie call time, battery level and signal strength.
There was a guy on the forums a while back that was trying to make another AlfaOBD style app. He posted up a lot of research on CAN addresses. Sadly I can't remember any details that would help narrow down the search.

Saabman said:
To connect to the the CAN bus I have soldered connections into the Uconnect module to the CAN bus lines which connects to an MCP2515 CAN bus interface and from there to a Raspeberry PI (small single board computer).
The Raspberry Pi runs the Linux opperating system which has built in tools for talking to the CAN bus. It allows you to monitor al the data, capture the data to a log file and send commands to the CAN bus.
Does the Pi distro you're running include the CAN interface packages already? If not are they in a repository or just a direct download? Been wanting to get into CAN tinkering myself.
 
#5 ·
I’ve collected a fair bit of data from the car and sifting through it try and make sense of it. Now I’ve pulled the uconnect module out and set it up on the bench to try and narrow down my findings by trying to get the uconnect to turn on the module and see what happens.
this is my current setup
60346

By playing back logs I had made from the van I have been able to get it to power up and I can connect to it via Bluetooth.
Now I need to narrow down the commands required to do that.

I suspect there is a sequence of commandthat need to be sent every 100ms or so-
Things like key position
0x20B#0000 ( key out)
0x20B#0100 (Key in)
0x20B#6100 (Accessories position)

I suspect there is a command from the headunit that is the status of the head uni which may help - will keep chugging away - it will all come together eventually..
 
#6 ·
After a few days of experimenting with the logs I captured from the Car Ive managed to get the Uconnect module to power up and function on the bench.

All it requires is 208#00A2090000002D to be sent to it every 100ms

to do this I created a text file (Ucconect.txt) containing the following
Code:
(1607033557.000000) can0 208#00A2090000002D
(1607033557.100000) can0 208#00A2090000002D
(1607033557.200000) can0 208#00A2090000002D
(1607033557.300000) can0 208#00A2090000002D
(1607033557.400000) can0 208#00A2090000002D
(1607033557.500000) can0 208#00A2090000002D
then used canplayer to send it repeatedly
Code:
canplayer -I Ucconect.txt -l i -v
It takes about 30 seconds for the phone to automatically connect via blue tooth - though the Uconnect module is configured via voice commands it is necessary to pair the phone while its in the car.

The next step is to find the command that is sent when the uconnect setup button is pressed so I can use that as a trigger for pairing the phone.
 
#7 ·
After the phone connects to the Uconnect the uconnect sends a a string of commands back but of interest is 2D0#xxxxxxxxxx after looking at it for a while I noticed a bit of a pattern develop.
2D0# ID comprises of 5 Bytes
once the phone has connected looks something like
E1 E0 23 F2 01

Byte 1 represents the Phone has successfully paired and Changes to E0 when a phone call is made then 82 followed by 84

Byte 2 To be determined, becomes F1 when Byte 1 becomes 82

Byte 3 Phone cellular signal strength 2x where x is 0-4

Byte 4 Phone Battery states Fx where x is 1-5. (1 == 0-20%) (2 == 21-40%) (3 == 41-60%) (4==61 -80%) (5 == 81-100%)

Byte 5 always seems to be 01, My current suspicion is this is phone 1. other paired phones would have their appropriate no. assigned. ( to be tested)
 
#9 ·
In playing with the Uconnect on the bench I noticed the uconnect didnt send any of the text that is displayed on the headunit - after a bit of playing Ive traced this down to the headunit sending a 293#410240F202000000 after it gets the phone call initiated string from the uconnect module.
 
#10 ·
After some trial an error and late nights sitting in the car trying different codes I think I have come to a point where I can start on the firmware for the module.
To turn the head unit to Phone mode is as simple as sending
2D0#82F12xFy01
where x is the cellular signal strength (1-5)
y is the phone battery level (1-5)
If x or y is set to F then the applicable icon is not displayed.
To exit phone mode sending
2D0#E1E0xFy01
Two 14 character lines of text can be displayed by sending
line 1 3F5#05xxxxxxxxxxxxxx
3F5#02xxxxxxxxxxxxxx
line 2 3F5#15xxxxxxxxxxxxxx
3F5#13xxxxxxxxxxxxxx (x is the ascii code for the text)
 
#11 ·
Been a bit slow on the progress with this (I get distracted by new projects VERY easily :oops:)
Over the last couple of days have shifted attention to the Bluetooth part of the project Im using a module from Microchip, the RN52 which does Mic in Audio out and serial comms to a microcontroller and all the appropriate bluetooth protocols for Hands free and Music streaming. Ive got it connected to my computer via USB at the moment to familiarise myself with its opperation and try out some ideas before I move to programing a microcontroller to handle it all in the car and do the CAN bus stuff.
heres the current setup
61561


And with some simple commands in a terminal program I can get the track names etc.
61562


So far I havent been able to display more than about a dozen characters on the HeadUnit so I will need to Parse the song title to display it in sections - at least untill I can work out how to add more text on the screen.
 
#13 ·
Slow going COVID means Im VERY busy at work (Health Facility )

Currently laying out the PCB for it so its still in progress.

Ive also decided to try out a new method (for me) of PCB production using a router to engrave the boards - so another distraction getting the tool chain set up for it :)
 
#14 ·
Read your post and interested in your progress with canbus/mygig
I have been using arduino/nano with can bus shield and a 5 volt power regulator and reverse polarity protection diode
about total $10 in hardware
can sniff both CAN IHS 125 and CAN B 83.3 using free canhacker windows software
Have arduino sketches
1) for can sniffer with single line change to add shield crystal constants for 83.3 if 20 is selected in dropdown
2) IHS bus program to turn on and keep on any high bus MYGIG radio (RER REN RBZ RHR RHB)on benchtop and keep it on and broadcast park signal so it can display video on radio screen
3) can low bus program to turn on and keep on any low bus mygig radio (RER REN RBZ RHR RHB) on benchtop and park signal for on screen radio video display also works on earlier can bus radios like RAQ RAK and added code to let you select VES on these early can bus radios for aux audio input as well as keep sirius sat module working on benchtop with radio

Interested in your uconnect module work and wondering why you did not try a newer uconnect can IHS module like used in 2011-2018 that does allow bluetooth music streaming

Would also like to better understand how aftermarket can bus modules like lockpick v5 activates rear view camera mode and Backseat TV mode and VES (input and output) on both low bus and high bus mygig radios
I Can send reverse signal with sketch to get a mygig that came out of a car with rear camera to go to rear camera mode but would like to understand can message(s) to get mygig to accept it can do rear camera if it never did it before
 
#15 ·
That sounds great you’ve got a lot going on.
i was going down the path of building my own because getting mygig stuff in Australia is nearly impossible. The Grandvoyager etc are rare as hens teeth here-I believe mine is the only one in the town I live in.
I ended up stopping work on my project because the head unit DVD failed and I ended up putting Nakamchi headunit inand interfaced it with a PAC C2R-CHY4 CAN-BUS Adapter. It mostly works even with the rear screen.
My understanding of how the lock pick gets the head unit to work is by interrupting the CAN bus between the car and the radio and feeding the radio with the appropriate messages to activate the appropriate functions. just like your bench top setup.
 
#16 ·
Around here non nav mygig at junkyard is $40 (any that don't have an obvious nav button ie all but RER RHR) nav goes for $80
uconect module about $20
if you wanted to play more I could probably find you a spare DVD/CD mygig drive and a newer uconnect module

AS for the HDD in mygig
The mitibushi (RBZ RHB)ones lock the HDD until the change to sata in 2016 or so but for the pata ones if you use a SSD HDD from kings spec they cannot be locked so can copy/clone with DD command in Linux
None of the sata ones are locked
Never could make the Harmon ones RER REN RHR take a SSD but a simple desktop stand alone cloner can clone their pata HDDs since none are locked
 
#18 ·

maybe 1 too many "s" king spec not kings spec

I found this out on post 8 and 10 (where it says new information added at bottom) in this thread and it is true

 
This is an older thread, you may not receive a response, and could be reviving an old thread. Please consider creating a new thread.
Top