CAN bus hacking Jaguar XF
#81
#83
Long long long over due update. Got a bunch to update on the app itself, but I will save that for another time. Last few weeks have been spent playing around with the MOST bus and the os8104A chip. It began like the below
To test I used the set up from a freelander 2, this is far more simple than the xf, but works on the same principal. At this point I was happy with the cabling but was experiencing the MOST stopping every few seconds when fed into the test bench set up. I suspected this was due to the high sensitivity legs on the os8104A/Most chip being too long on the bread board. So I set about designing my first PCB in a raspberry Pi HAT form. This resulted in the below
So I sent this off to JCLPCB and ordered 15 for $9 ($31 including shipping to the uk) also ordered all the components (besides the chip and transceiver) from RsComponents. The chip and transceiver were recycled out of old module bought from ebay. PCB took about 5 days to make, and shipped from china on friday, it turned up today (monday) so I set about soldering it up.
Then inserted it into the MOST ring, and bingo it works! I am now in the middle of writing the driver to actually use it, and will update as I go!
To test I used the set up from a freelander 2, this is far more simple than the xf, but works on the same principal. At this point I was happy with the cabling but was experiencing the MOST stopping every few seconds when fed into the test bench set up. I suspected this was due to the high sensitivity legs on the os8104A/Most chip being too long on the bread board. So I set about designing my first PCB in a raspberry Pi HAT form. This resulted in the below
So I sent this off to JCLPCB and ordered 15 for $9 ($31 including shipping to the uk) also ordered all the components (besides the chip and transceiver) from RsComponents. The chip and transceiver were recycled out of old module bought from ebay. PCB took about 5 days to make, and shipped from china on friday, it turned up today (monday) so I set about soldering it up.
Then inserted it into the MOST ring, and bingo it works! I am now in the middle of writing the driver to actually use it, and will update as I go!
The following users liked this post:
hafren (03-23-2023)
#84
#86
To test I used the set up from a freelander 2, this is far more simple than the xf, but works on the same principal. At this point I was happy with the cabling but was experiencing the MOST stopping every few seconds when fed into the test bench set up. I suspected this was due to the high sensitivity legs on the os8104A/Most chip being too long on the bread board. So I set about designing my first PCB in a raspberry Pi HAT form. This resulted in the below
So I sent this off to JCLPCB and ordered 15 for $9 ($31 including shipping to the uk) also ordered all the components (besides the chip and transceiver) from RsComponents. The chip and transceiver were recycled out of old module bought from ebay. PCB took about 5 days to make, and shipped from china on friday, it turned up today (monday) so I set about soldering it up.
Then inserted it into the MOST ring, and bingo it works! I am now in the middle of writing the driver to actually use it, and will update as I go!
So I sent this off to JCLPCB and ordered 15 for $9 ($31 including shipping to the uk) also ordered all the components (besides the chip and transceiver) from RsComponents. The chip and transceiver were recycled out of old module bought from ebay. PCB took about 5 days to make, and shipped from china on friday, it turned up today (monday) so I set about soldering it up.
Then inserted it into the MOST ring, and bingo it works! I am now in the middle of writing the driver to actually use it, and will update as I go!
#87
New update on the MOST bus side, lots and lots of time has gone into this, low level drivers are written, and I’ve moved onto what the specs call the application layer. This is where each device in the ring has an FBlock, and inside the block are various functions. I’ve managed to do the system blocks, such as network master, and have today finished most of the cd player block. I’ve cobbled together a quick app to give an interface to it. This is all done interfacing to the Freelander 2 hardware, which is most the same as the XF, it’s just simpler to get started on. App shows some of the information from the cd player, such as song name, album name (when text is present) play time. But it also allows control, of changing songs, changing active disk etc etc.
#88
Version 1.1 of the PiMost hat, everything is now much better laid out. The i2s audio pins are now properly routed, audio injection works by emulating a sound card in linux, for an extra benefit it uses the clock signal source from the MOST network rather than the horribly divided internal Pi one. Overall the most stuff is proving very accessible, it just a huge amount of data to have to work through.
#89
given that ive only had my 2013 XF for a short time, im afraid i cannot claim to have been following this for years, however this is simply incredible work being done.
i came across this project when i started looking into whether i could read some info off of the can/obd system in order to display a boost gauge and oil pressure ect when sport mode is selected, i was also interested in fitting and opening a muffler valve/cutout but only if i could trigger it when sport mode was selected.
All of that is fairly unrelated to your project other than your work with the interfacing, I never found the headunit of the XF to be much of a problem other than i REALLY would like android auto. there isnt any good solutions ive found other than the potential found in your project!
i have only one small request, the one single aspect of the original head unit that i dont like is the heat seats. It take multiple button presses to turn them on. i see you have gpio configurable with the new software so what im really hopeful is that you may be able to configure without further programing, the original physical heated seat button, or an aftermarket button fitted, to automatically put the drivers seat on high when pressing it and off again on if pressed again. i rarely use the lower settings but would assume you could still go through the settings to adjust if desired.
Following on from that and back to my own original project, how likely are you to include some tasteful analog gauges? there are a few plug in devices available but they usually look like vapourwave digital readouts much unlike the oem gauges and having them match the original even if on screen would be much nicer.
Thanks either way and following keenly!
i came across this project when i started looking into whether i could read some info off of the can/obd system in order to display a boost gauge and oil pressure ect when sport mode is selected, i was also interested in fitting and opening a muffler valve/cutout but only if i could trigger it when sport mode was selected.
All of that is fairly unrelated to your project other than your work with the interfacing, I never found the headunit of the XF to be much of a problem other than i REALLY would like android auto. there isnt any good solutions ive found other than the potential found in your project!
i have only one small request, the one single aspect of the original head unit that i dont like is the heat seats. It take multiple button presses to turn them on. i see you have gpio configurable with the new software so what im really hopeful is that you may be able to configure without further programing, the original physical heated seat button, or an aftermarket button fitted, to automatically put the drivers seat on high when pressing it and off again on if pressed again. i rarely use the lower settings but would assume you could still go through the settings to adjust if desired.
Following on from that and back to my own original project, how likely are you to include some tasteful analog gauges? there are a few plug in devices available but they usually look like vapourwave digital readouts much unlike the oem gauges and having them match the original even if on screen would be much nicer.
Thanks either way and following keenly!
The following users liked this post:
Rhys Morgan (09-13-2023)
#90
Thanks for the feedback, it may seem a bit quiet on this project, but trust me in the background it’s not! A lot of effort is currently going into making the HAT and drivers OEM agnostic, there’s also a huge amount of work going into the media side such as pulling the microphone stream off of the MOST etc.
For the seats I do agree it’s a strange ui decision, when I get to a full fledged version of the app, I’ll likely look to see what can be done, the beauty of having this full control over the MOST means you can really morph this stuff, the bass and treble adjustments are currently sliders on the app rather than a plus and minus button, so I’m sure something more modern can be done to the seats!
gauges are a also a possibility, it’s not something I’m particularly keen on, but the data is all there so very easy to add!
For the seats I do agree it’s a strange ui decision, when I get to a full fledged version of the app, I’ll likely look to see what can be done, the beauty of having this full control over the MOST means you can really morph this stuff, the bass and treble adjustments are currently sliders on the app rather than a plus and minus button, so I’m sure something more modern can be done to the seats!
gauges are a also a possibility, it’s not something I’m particularly keen on, but the data is all there so very easy to add!
#91
Yes i made my way to your forum and saw the work completed on the PiMOST hat, it looks great!
Understandable why you may not be too interested in gauges, they are hard to make look good on a screen, though just having access to the data and the possibility to add it later on is such a great direction.
i am sorly tempted to pick up a hat while i can, however I'm miles away and it may be better to assemble my own. is the pcb and related component/ donor module info open source?
Understandable why you may not be too interested in gauges, they are hard to make look good on a screen, though just having access to the data and the possibility to add it later on is such a great direction.
i am sorly tempted to pick up a hat while i can, however I'm miles away and it may be better to assemble my own. is the pcb and related component/ donor module info open source?
#92
What a fascinating thread, thank you for documenting all of this! I love this sort of project, and threads like this often inspire me to have a crack myself. I've wondered about this for a while now but I never knew where to start, so thank you again for giving all this info and maybe showing me how I can get started
Cheers
Cheers
#94
Apologies all a huge amount to update really! I struggle to keep up with keeping everywhere up to date as it includes github, slack channels, my forum, other forums and all that double for both MOST and react-carplay projects!
But I'll do my best to update from where it last was on here!
I finally managed to get a benchtop set up going, for those interested, this is much hard than you may think. If you get every module from the same car, then hook up the ICM and ICP on canbus. Then minimum of touchscreen, amplifier, cd player and ICM on MOST and it will go. My problem was that with my almost scrapyard level amount modules kicking around they were all slightly different. And when I did find a combo that worked, as soon as I replayed the can messages from my car, the screen and MOST network refused to stay solid.
Long story short, I had to adjust my CCF messages on the candump to match the modules on the test bench (perhaps VIN too, kind of forgotten!) As we also have a freelander2 in the house hold, and that shares almost the same set up (just simpler so easier to work on) I created a monstrosity to hold them all
Having this set up has truly unlocked the doors to really figure it out. MOST has gone from my worst enemy to my best friend in this project. Everything is so much easier to work with that CAN once you get into it. Some of my MOST findings are below for people that are interested
So a few final updates, I've managed to play around with some stuff, that I won't go into too much detail on, and found a new hidden menu I haven't seen documented anywhere before on the OEM screen
This records debug messages that happen on the touchscreen/most network and outputs them over MOST in text format, unfortunately the main detail of the data part of the message doesn't seem to be there (more investigation needed!)
And as a final snippet if you have a managed to make it this far, I did a small bit of trolling of the XF facebook page, which most people saw it for the joke that it was, and others seemed rather annoyed....
But I'll do my best to update from where it last was on here!
I finally managed to get a benchtop set up going, for those interested, this is much hard than you may think. If you get every module from the same car, then hook up the ICM and ICP on canbus. Then minimum of touchscreen, amplifier, cd player and ICM on MOST and it will go. My problem was that with my almost scrapyard level amount modules kicking around they were all slightly different. And when I did find a combo that worked, as soon as I replayed the can messages from my car, the screen and MOST network refused to stay solid.
Long story short, I had to adjust my CCF messages on the candump to match the modules on the test bench (perhaps VIN too, kind of forgotten!) As we also have a freelander2 in the house hold, and that shares almost the same set up (just simpler so easier to work on) I created a monstrosity to hold them all
Having this set up has truly unlocked the doors to really figure it out. MOST has gone from my worst enemy to my best friend in this project. Everything is so much easier to work with that CAN once you get into it. Some of my MOST findings are below for people that are interested
- MOST is address based like CAN, however messages are sent to an address (or broadcasted, but that's rare)
- The master (ICM) holds a registry of all devices on functions on the network, this can be queried easily and you can build your own registry
- You can register for notifications from a module, this is by far my favourite piece. So rather than CAN being super chatty and having to filter the noise of the same messages being sent every 50ms, you can say to the CD Player - Let me know when you have and update. This then means you get the current play time sent every second, when the track changes, when the disk changes, cd text etc etc. And you can register for as many notifications as you like.
- There's a predefined standard for all messaging, MOSTly JLR follow it (see what I did there) which makes it super easy to work with, things like changing song are as simple as looking at the documentation and sending the right message to the right device. However every module has manufacturer specific functions which are not documented. Worst case some modules, such as the radio are entirely custom (when they don't need to be!)
- Audio streaming works a treat, fairly straight forward to stream digital audio from the pi to the bus, and also to retrieve microphone input from the cars mic.
- It's easier than CAN to reverse engineer the JLR specific messages. You can hijack the same address as the cd player, then using my software most-explorer, record the messages that get sent to the cd player, press skip on the control panel, and you will see the message come in.
So a few final updates, I've managed to play around with some stuff, that I won't go into too much detail on, and found a new hidden menu I haven't seen documented anywhere before on the OEM screen
This records debug messages that happen on the touchscreen/most network and outputs them over MOST in text format, unfortunately the main detail of the data part of the message doesn't seem to be there (more investigation needed!)
And as a final snippet if you have a managed to make it this far, I did a small bit of trolling of the XF facebook page, which most people saw it for the joke that it was, and others seemed rather annoyed....
Last edited by Rhys Morgan; 02-20-2024 at 04:05 PM.
Thread
Thread Starter
Forum
Replies
Last Post
TraxtarXKR
XK / XKR ( X150 )
12
11-13-2019 07:18 PM
Cranston
XF and XFR ( X250 )
5
08-09-2018 05:38 AM
jellisjag14
XF and XFR ( X250 )
11
07-28-2014 10:51 PM
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)