Sponsored
OP
OP
jmccorm

jmccorm

Well-Known Member
First Name
Josh
Joined
Sep 15, 2021
Threads
54
Messages
1,151
Reaction score
1,275
Location
Tulsa, OK
Vehicle(s)
2021 JLUR
Build Thread
Link
Occupation
Systems Engineering
I have no idea or knowledge about any of this but it leads to me asking, why? What’s the purpose of what your doing.😱
SHORT ANSWER:
We're figuring out how the Wrangler's components talk to each other (via the CAN bus). While everyone else is focused on hardware mods, we're starting a new focus on software mods. And further down the road, maybe we'll collaborate on new mods that have both hardware AND software components. (Smart hardware mods that know the status of your vehicle and respond appropriately.)

LONG ANSWER:
For me, it all started with a complaint. It was cold outside. I remote started the Wrangler. Once I let it warm up, I came outside and hopped in. And you know what? THE CABIN WAS AS COLD AS ANYTHING!

As it turns out, when you remote-start the Wrangler (perhaps for safety reasons) it doesn't turn on the AC blower fan and it doesn't do any kind of cabin heating. Best you'll get, if the temperature is below a pre-set level, is that it'll turn on your seat warmers and steering wheel warmer. My Wrangler is parked outside (making it safe for the heater to run), and I wanted to have a nice warm cab in the winter (and cool in the summer, too). So I set out to figure out how that might work.

This is one of those little things where you might have been saying to yourself, "My Wrangler would be perfect if only it could..." and you've got a problem that could be solved if only the Wrangler's computer acted a little differently. As another example, I think it would be perfect, after taking the doors off of the Wrangler, if it would remote start. (No, it won't do it.) But with a little computer work, we could make that happen.

So what we're actually doing is decoding the vehicle's CAN bus (the electronic bus that ties most of it's components together). The more we figure out about the CAN bus, the more we can change the vehicle's behavior to make it do more of the things we want it to do. And we're more able to add brand new features that nobody has seen before.

Other people have different reasons. For example, they want to replace the built-in radio with a project of their own making, and they still want it to be able to read the current status of the vehicle and make configuration changes just like you can in a uConnect radio. The information we're uncovering helps make that possible. And more.

Hope this helps. We're actually being productive here. One of the other differences is that we're not being secretive and hording the information to ourselves. We're sharing with everyone else along the way. We're hoping other like-minded individuals will join in. Not you? That's fine. You're still welcome to watch, if you're interested!

EDIT: April, 2021 - Grammar.
Sponsored

 
Last edited:

Plasma

New Member
First Name
Kevin
Joined
Dec 5, 2021
Threads
1
Messages
3
Reaction score
1
Location
UK
Vehicle(s)
2019 Wrangler JL Overland
This is one of those little things where you might have been saying to yourself, "My Wrangler would be perfect if only it could..."
Colour me impressed, I only took delivery of my UK 2019 JL Wrangler 3 days ago and already I'm thinking not necessarily "if only it could do this" but sometimes "why the $^$^ does it do that!". As a side hobby I'm a software developer writing various tools and utilities, and also have Apps on the Apple App Store. This interests me so much, I can't tell you. Hopefully when life quietness down for me I can join in the fun, I just added the CAN Bus adapter to my Christmas list. I already have 5 Raspberry Pi's dotted around the house for one thing and another, so maybe I will re-purpose one.

Thanks for documenting and sharing your findings, as you said in a previous post, if everyone kept their findings to them selves progress would be very slow! :P
 
OP
OP
jmccorm

jmccorm

Well-Known Member
First Name
Josh
Joined
Sep 15, 2021
Threads
54
Messages
1,151
Reaction score
1,275
Location
Tulsa, OK
Vehicle(s)
2021 JLUR
Build Thread
Link
Occupation
Systems Engineering
The Raspberry Pi has worked flawlessly as a black box data recorder. I've made some improvements to the playback. As I was going through my own data, I found a sample lasting just a few seconds, and I opted to use a new feature which allowed me to drill in at either 0.1 second or 0.01 second intervals. I chose the former value.

To view this data, you'll probably want to view this with a full-screen browser window.

Code:
0.872291  KEY: Run  BRAKE: 0%  GASPEDAL: 34% (VALVE 33%)  RPM: 2.1k  STEER: R  1%  HEADING: W  GEAR: DRIVE 8  MPH: 72  ODOMETER: 6990.4m  HOOD: 143 F
0.972226  KEY: Run  BRAKE: 0%  GASPEDAL: 34% (VALVE 33%)  RPM: 2.1k  STEER: R  1%  HEADING: W  GEAR: DRIVE 8  MPH: 72  ODOMETER: 6990.4m  HOOD: 143 F
1.072195  KEY: Run  BRAKE: 0%  GASPEDAL: 35% (VALVE 33%)  RPM: 2.1k  STEER: CENTR  HEADING: W  GEAR: DRIVE 8  MPH: 72  ODOMETER: 6990.4m  HOOD: 143 F
1.172197  KEY: Run  BRAKE: 0%  GASPEDAL: 35% (VALVE 33%)  RPM: 2.1k  STEER: CENTR  HEADING: W  GEAR: DRIVE 8  MPH: 72  ODOMETER: 6990.4m  HOOD: 143 F
1.272191  KEY: Run  BRAKE: 0%  GASPEDAL: 69% (VALVE 33%)  RPM: 2.0k  STEER: CENTR  HEADING: W  GEAR: DRIVE 8  MPH: 72  ODOMETER: 6990.4m  HOOD: 143 F
1.372207  KEY: Run  BRAKE: 0%  GASPEDAL: 89% (VALVE 37%)  RPM: 2.1k  STEER: CENTR  HEADING: W  GEAR: DRIVE 6  MPH: 72  ODOMETER: 6990.4m  HOOD: 143 F
1.472423  KEY: Run  BRAKE: 0%  GASPEDAL: 89% (VALVE 42%)  RPM: 2.1k  STEER: CENTR  HEADING: W  GEAR: DRIVE 6  MPH: 72  ODOMETER: 6990.5m  HOOD: 143 F
1.572312  KEY: Run  BRAKE: 0%  GASPEDAL: 90% (VALVE 47%)  RPM: 2.3k  STEER: CENTR  HEADING: W  GEAR: DRIVE 6  MPH: 72  ODOMETER: 6990.5m  HOOD: 143 F
1.673277  KEY: Run  BRAKE: 0%  GASPEDAL: 93% (VALVE 51%)  RPM: 2.6k  STEER: CENTR  HEADING: W  GEAR: DRIVE 6  MPH: 72  ODOMETER: 6990.5m  HOOD: 143 F
1.773205  KEY: Run  BRAKE: 0%  GASPEDAL: 97% (VALVE 55%)  RPM: 3.1k  STEER: CENTR  HEADING: W  GEAR: DRIVE 6  MPH: 72  ODOMETER: 6990.5m  HOOD: 143 F
1.872194  KEY: Run  BRAKE: 0%  GASPEDAL: 97% (VALVE 61%)  RPM: 3.4k  STEER: CENTR  HEADING: W  GEAR: DRIVE 5  MPH: 72  ODOMETER: 6990.5m  HOOD: 143 F
1.972148  KEY: Run  BRAKE: 0%  GASPEDAL: 97% (VALVE 69%)  RPM: 3.9k  STEER: CENTR  HEADING: W  GEAR: DRIVE 5  MPH: 72  ODOMETER: 6990.5m  HOOD: 143 F
2.072149  KEY: Run  BRAKE: 0%  GASPEDAL: 92% (VALVE 75%)  RPM: 4.1k  STEER: CENTR  HEADING: W  GEAR: DRIVE 5  MPH: 72  ODOMETER: 6990.5m  HOOD: 143 F
2.172124  KEY: Run  BRAKE: 0%  GASPEDAL: 89% (VALVE 85%)  RPM: 4.2k  STEER: CENTR  HEADING: W  GEAR: DRIVE 5  MPH: 72  ODOMETER: 6990.5m  HOOD: 143 F
2.272143  KEY: Run  BRAKE: 0%  GASPEDAL: 88% (VALVE 87%)  RPM: 4.3k  STEER: CENTR  HEADING: W  GEAR: DRIVE 5  MPH: 72  ODOMETER: 6990.5m  HOOD: 142 F
2.372129  KEY: Run  BRAKE: 0%  GASPEDAL: 91% (VALVE 87%)  RPM: 4.1k  STEER: CENTR  HEADING: W  GEAR: DRIVE 5  MPH: 72  ODOMETER: 6990.5m  HOOD: 142 F
2.472124  KEY: Run  BRAKE: 0%  GASPEDAL: 89% (VALVE 87%)  RPM: 4.1k  STEER: CENTR  HEADING: W  GEAR: DRIVE 5  MPH: 72  ODOMETER: 6990.5m  HOOD: 142 F
2.572146  KEY: Run  BRAKE: 0%  GASPEDAL: 90% (VALVE 89%)  RPM: 4.1k  STEER: CENTR  HEADING: W  GEAR: DRIVE 5  MPH: 72  ODOMETER: 6990.5m  HOOD: 142 F
2.673076  KEY: Run  BRAKE: 0%  GASPEDAL: 90% (VALVE 90%)  RPM: 4.1k  STEER: CENTR  HEADING: W  GEAR: DRIVE 5  MPH: 72  ODOMETER: 6990.5m  HOOD: 142 F
2.773161  KEY: Run  BRAKE: 0%  GASPEDAL: 90% (VALVE 91%)  RPM: 4.2k  STEER: CENTR  HEADING: W  GEAR: DRIVE 5  MPH: 74  ODOMETER: 6990.5m  HOOD: 142 F
2.872191  KEY: Run  BRAKE: 0%  GASPEDAL: 90% (VALVE 90%)  RPM: 4.2k  STEER: CENTR  HEADING: W  GEAR: DRIVE 5  MPH: 74  ODOMETER: 6990.5m  HOOD: 142 F
2.972115  KEY: Run  BRAKE: 0%  GASPEDAL: 90% (VALVE 91%)  RPM: 4.2k  STEER: CENTR  HEADING: W  GEAR: DRIVE 5  MPH: 74  ODOMETER: 6990.5m  HOOD: 142 F
^^ Use the scrollbar (above) to see more data. ^^

The vehicle begins with the steering wheel edging ever so slightly to the right (1% of maximum) but quickly centering out. The gas pedal is held at a fairly consistent 34% percent, and the vehicle's electronic throttle control valve is also holding steady at 33%. The car is headed west, in 8th gear, at 72mph. The vehicle has been running for a while, which you can deduce from a sensor somewhere in the engine bay (but not next to the engine) that reports a temperature of 143F.

From there, we see the gas pedal smashed to the floor in all of 0.2 seconds, with the Wrangler's sensors annoucing the change to the rest of the vehicle. The vehicle starts to open up it's electronic throttle valve but at nowhere near the rate as commanded. Why? What we don't (yet) see in the data is that the Wrangler has decided to take a different strategy which requires it to work independently of driver input.

When it saw a gas pedal approaching 90%, it knew that it would be lugging it in 8th gear. it was time to downshift, and it chose 6th gear as it's target. This process will require it to work independent of driver input for a while. It commands the throttle value to open slightly more, just enough to match perfectly match RPMs in 6th gear with a vehicle going 72 mph. At 3.1k RPMs, it reaches that target only 0.4 seconds later, and it's ready to release the clutch. But then it sees something wrong!

Over the previous 0.6 seconds, the driver continues to floor the gas pedal. Even at our new target of 3.1k RPMs in 6th gear, we're still going to be lugging it. (Or so it decides.) So instead of releasing the clutch, it's time for another downshift, deciding to go to 5th gear (still better than 4th, which we see in some cases). It opens the throttle valve a bit more, and a half second later... WOAH! We have another problem.

The vehicle's still going 72 MPH, and if we're going to shift into 5th, we'll have to get the engine RPMs up to 4.1K RPMs to make a clean shift. Okay, we hit that many RPMs... and then some more! We've landed at 4.3k RPMs, so we've got to taper that off a bit. The computer takes an additional 0.3 seconds or so to stabilize the engine speed and then it'll be ready to enter 5th gear.

And so it finally releases the clutch and the engine's now in 5th gear. From there, it quickly finds lots of power, accelerating by 2 MPH in just a few tenths of a second. From beginning to end, after being commanded to go full throttle, it finally delivers on the driver's original command... 1.5 seconds later.

I'll have to admit, this wasn't an ideal example of the problem I've had with with acceleration lag. Certainly the data shows it isn't turbo lag (at least, not directly). What it does show is that the vehicle wasn't shifting as efficiently as it could.

Still, this demostrates how reverse engineering CAN bus information help in another way. It provides raw vehicle data that we can use to better understand what's happening when the vehicle starts doing something unexpected.
 
Last edited:
OP
OP
jmccorm

jmccorm

Well-Known Member
First Name
Josh
Joined
Sep 15, 2021
Threads
54
Messages
1,151
Reaction score
1,275
Location
Tulsa, OK
Vehicle(s)
2021 JLUR
Build Thread
Link
Occupation
Systems Engineering
I got a basic version of the Automatic Jeep Heater working.

I added a section to the code that does the black box recorder. The sudocode works like this:

1. Wait 10 more seconds so the vehicle gets started properly.
2. Check the current ignition status (can0, $122) to see if Remote Start was used to turn on the vehicle. If so, continue...
3. Wait 10 seconds to let more things initialize before sending commands.
4. Turn the fan all the way up by sending fan speed up code (can 0, $273) eight times.
5. Turn on the front defroster so we can get a high volume of air going (can0, $2D3).
6. Set the maximum heat setting (can0, $2d3) repeated 20 times. (A specific heat level can then be chosen by lowering it down from there.)

That's all it takes! Now, I'm missing a lot of things that I want to have. There's an ambient temperature sensor and an interior temperature sensor. I want those so that it automatically knows if it should be using AC or heating, and when it should stop. I also would like to directly control the HVAC blower mode selection I prefer the air to come out the vents and not the windshield. But it works!

That's about it. If I have an excess of time, I'll record a video. You can see what's happening from outside the vehicle.
 

redracer

Well-Known Member
First Name
Robert
Joined
Aug 22, 2017
Threads
20
Messages
558
Reaction score
619
Location
Manteca, CA
Vehicle(s)
2023 4xe Rubicon
This is awesome! great work!

One thought about the temperature readings... From my experience, the HVAC system seems to run on stale temperature data for quite a long time after startup. You might want to have a look at what the cabin temp data looks like during this time frame.
 

Sponsored

wolf

Well-Known Member
First Name
Rick
Joined
Oct 17, 2018
Threads
38
Messages
849
Reaction score
885
Location
florida
Vehicle(s)
On my third Rubicon(2dr's 2020, 2015 jetta diesel/2013 mb
Occupation
retired
SHORT ANSWER:
We're figuring out how the Wrangler's components talk to each other (via the CAN bus). While everyone else is focused on hardware mods, we're starting a new focus on software mods. And further down the road, maybe we'll collaborate on new mods that have both hardware AND software components. (Smart hardware mods that know the status of your vehicle and respond appropriately.)

LONG ANSWER:
For me, it all started with a complaint. It was cold outside. I remote started the Wrangler. Once I let it warm up, I came outside and hopped in. And you know what? THE CABIN WAS AS COLD AS ANYTHING!

As it turns out, when you remote-start the Wrangler (perhaps for safety reasons) it doesn't turn on the AC blower fan and it doesn't do any kind of cabin heating. Best you'll get, if the temperature is below a pre-set level, is that it'll turn on your seat warmers and steering wheel warmer. My Wrangler is parked outside (making it safe for the heater to run), and I wanted to have a nice warm cab in the winter (and cool in the summer, too). So I set out to figure out how that might work.

This is one of those little things where you might have been saying to yourself, "My Wrangler would be perfect if only it could..." and you've got a problem that could be solved if only the Wrangler's computer acted a little differently. As another example, I think it would be perfect, after taking the doors off of the Wrangler, if it would remote start. (No, it won't do it.) But with a little computer work, we could make that happen.

So what we're actually doing is decoding the vehicle's CAN bus (the electronic bus that ties most of it's components together). The more we figure out about the CAN bus, the more we can change the vehicle's behavior to make it do more of the things we want it to do. And we're more able to add brand new features that nobody has seen before.

Other people have different reasons. For example, they want to replace the built-in radio with a project of their own making, and they still want it to be able to read the current status of the vehicle and make configuration changes just like you can in a uConnect radio. The information we're uncovering helps make that possible. And more.

Hope this helps. We're actually being productive here. One other the other differences is that we're not being secretive and hording the information to ourselves. We're sharing with everyone else along the way. We're hoping other like-minded individuals will join in. Not you? That's fine. You're still welcome to watch, if you're interested!
After reading your explanation I think it is outstanding what you have undertaken to help the jeep community. Wish I could help but I wasn’t blessed with that ability but will definitely follow your progress. Thanks for doing what you are doing. With your knowledge you could help those of us who want to get rid of the nanny crap. Also a aftermarket solenoid for the differential lockers. Thanks for what your doing.
 

rcadden

Well-Known Member
First Name
Ricky
Joined
May 4, 2021
Threads
85
Messages
2,644
Reaction score
5,575
Location
Fort Worth, TX
Vehicle(s)
2021 Hydro Blue Sahara Altitude
Build Thread
Link
Occupation
Marketing
Clubs
 
Loving this. I have a similar initial complaint - the remote start only turns on the seat heaters and steering wheel heater if the outside temperature is 40 or below. However, I'm a Texan, and a pansy, so I want them to start at about 55 or 60 outdoor temperature.

I also want the heater to turn on and full heat at that outdoor temp trigger. CURRENTLY, between 40 and I believe 80, remote start only enables the heat/AC to kick on to whatever you left it on when you got out of the vehicle. This is poor because by the time I get out, I'm often warm (having driven to my destination) and thus have either turned the heater off entirely, or lowered it dramatically.

Keep on keeping on. I couldn't code my way out of a brown paper bag, so I'm merely here as a cheerleader.
 
OP
OP
jmccorm

jmccorm

Well-Known Member
First Name
Josh
Joined
Sep 15, 2021
Threads
54
Messages
1,151
Reaction score
1,275
Location
Tulsa, OK
Vehicle(s)
2021 JLUR
Build Thread
Link
Occupation
Systems Engineering
Up until now, my eyes have already been bulging out of their sockets with all this new information. Want to guess what someone did? They showed me a vastly different world that exists inside the Wrangler, and I find myself already going down that rabbit hole further and further. But first, a couple of replies...

Loving this. I have a similar initial complaint - the remote start only turns on the seat heaters and steering wheel heater if the outside temperature is 40 or below. However, I'm a Texan, and a pansy, so I want them to start at about 55 or 60 outdoor temperature.
Oklahoman here. I'm 100% right with you on everything. You bet I'm going to do my best to deliver on that. And automatically switch over to A/C mode when the outside temperature changes! I want those seats cold on those 100F+ days!

One thought about the temperature readings... From my experience, the HVAC system seems to run on stale temperature data for quite a long time after startup.
It might, but there's some good news. A month back, I used JScan's Live Data feature to pull the vehicle's interior temperature. However it is getting it, it turned out to be both accurate and frequently refreshed. Which leads into the next topic...

I've noted that all the message IDs I'm coming across seem to stop at $44C. But then I've been seeing the Tazer and JScan both use message IDs even larger than that. Nothing seems to be at those locations, but they're clearly accessing yet another set of functions to perform advances features like viewing and clearing trouble codes, constantly monitoring various vehicle parameters, making permanent configuration changes, and turning various components on and off.

I thought it might have been some of the more obscure OBD-II functions that made this happen. Boy was I wrong. It's something completely different:

UDS - Unified Diagnostic Services

Now, if you thought it was confusing to look at hundreds of unlabeled values which all change in real-time, you haven't seen anything yet! It all gets really complex really fast. You don't have to embrace UDS, but if you do, it offers all the access and control of Jscan and a Tazer combined... and even more.

I'm absorbing a lot of information all at once, so it'll be a while before I'm ready to explain, but I do offer a quick example I reverse engineered from when the Tazer pulses my third brake light. Although UDS is accessed via CAN-C (not CAN-IHS), the message structure is completely different. And what you won't see in the example is that the ECU replies back to every message with results, like the success or failure codes for each command.

So here's a quick way to use UDS to tell it you want to access it's Input/Output Control function, and you'd like to use it to toggle the third brake light off and on:

Code:
#!/bin/bash

# Wake up the CAN bus.
cansend can0 2D3#0700000000000000
sleep 2

# 2 byte message: Enter Diagnostic Session Control
# Subtype: Extended Diagnostic Session
cansend can1 620#0210030000000000

sleep 1

# Perform an infinite loop

while [ 1 ]
do

# 5 byte message: Input/Output Control by Identifier
# Identifier $D1B3, option $0301 (third brake light ON)
echo Third brake light on
cansend can1 620#052FD1B303010000
sleep 0.5

# 5 byte message: Input/Output Control by Identifier
# Identifier $D1B3, option $0300 (third brake light OFF)
echo Third brake light off
cansend can1 620#052FD1B303000000
sleep 0.5

done
I don't know about JScan, but I don't think the Tazer is looking at ECU response codes to it's messages (or it would know which ones hadn't been received). It's going to be difficult to program something which speaks UDS, but I might not have to. This should be a big leg-up for Raspberry Pi's and up: I found a library called udsoncan which appears to offer a fairly robust open-source UDS library in Python 3. Python isn't my language, but I'm willing to learn!

Honestly, there's way too much here for just one person to figure out. Much less make cool things with! I'll be happy to get some new eyeballs on this and figure out what exactly it is that we've gotten ourselves into!
 
Last edited:
OP
OP
jmccorm

jmccorm

Well-Known Member
First Name
Josh
Joined
Sep 15, 2021
Threads
54
Messages
1,151
Reaction score
1,275
Location
Tulsa, OK
Vehicle(s)
2021 JLUR
Build Thread
Link
Occupation
Systems Engineering
Hopefully when life quietness down for me I can join in the fun, I just added the CAN Bus adapter to my Christmas list. I already have 5 Raspberry Pi's dotted around the house for one thing and another, so maybe I will re-purpose one.
Some more notes on using the Raspberry Pi:

Keep it secure. If you're using Wi-Fi, then If at all possible, disable it as much as you can (something I need to do myself). The last thing you want is a mischievous individual to find is a Wi-Fi connection, a easy SSH login, and all the remote access to your vehicle they could want.

If you get one of the Waveshare CAN hats, even though it seems to snugly fit on the 40-pin connector, you may might have to solder the pins onto the connector to create a solid connection. I suspect this is why my Raspberry Pi 4 didn't work, and soldering it in place solved a new issue I encountered on the Raspberry Pi 3B+.

You NEED a quality power source which prevents your Raspberry Pi from encountering those "Under-voltage detected!" errors. Until I figured that out, I was having some real performance problems.

If your Wrangler has an Auxiliary battery, use care. It can deplete it in just a few days. I haven't yet looked into arranging a low-frequency CPU mode or sleep mode. I was looking at using a 12v-to-5v regulator with one of the AUX switches that come in the towing package (also serving as a quick-disconnect), but for now, I'm running it from the USB-C port of a multipurpose portable battery that I've been keeping in my vehicles.

The Raspberry Pi makes a great Swiss army knife (with the power of a blender), but when it comes to making an end product, there's a lot to be said for those low-power and low-cost microcontrollers, too.

Whew! A lot of stuff there (not all necessarily aimed at you, so forgive me for that). Hope to see you join the club soon!
 
OP
OP
jmccorm

jmccorm

Well-Known Member
First Name
Josh
Joined
Sep 15, 2021
Threads
54
Messages
1,151
Reaction score
1,275
Location
Tulsa, OK
Vehicle(s)
2021 JLUR
Build Thread
Link
Occupation
Systems Engineering
I've been spending more of my time learning the UDS protocol and reverse-engineering a set of real-world messages. I managed to come up with two more items for today:

Conserving Power / Monitoring the Ignition Switch

Even more features have coalesced around the code which constantly monitors the position of the Wrangler's (virtual) ignition switch. When it comes time to write your own code, you might want to give some extra consideration to this function.

Originally, the code was designed for a black box recorder. Then I added some custom HVAC settings for cozy interiors on remote starts on cold (and hot) days. Now I've added some changes to the CPU governor to help conserve battery power.

For full CPU performance (vehicle on):
echo "performance" > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
To conserve battery power (vehicle off):
echo "powersave" > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor

I also allowed for an exception for when I'm logged into the Raspberry Pi and actively using it.

Retrieving OBD-II Parameters:

One of the things I've been struggling with from day one was how to get the Wrangler to process standard OBD-II commands when directly connected to the CAN bus. I've finally cracked the code! This is good because it opens up a lot of additional engine parameters (it also makes it easier to reverse engineer some of the other message IDs). Here's what I've figured out:

1. Vehicle must be powered on.
2. You must send your message with the CAN-C (not CAN-IHS).
3. You must send with ID 7E0 but listen for a response on ID 7E8.
4. You must follow the following format (replace "xx" the OBD-II pid):
cansend can1 7E0#0201xx0000000000​
That says you've got a 02 byte long message, you want OBD-II mode 01 ("show current data") and then replace xx with the industry-standard PID of what you want to monitor. I used $05 for coolant temperature.​
5. Look for a response in the following format:
can1 7E8#0341xxAABBCCDD00​
That says it has a three-byte reply, "41" means your "01" command was successful and the results follow. Engine coolant temperature is stored as just one byte, so you'd look in the AA position for a response. Various commands will have different length replies.​
6. Before putting a result to use, know that there are some obtuse
rules of how these values need to be modified before they are used. Consult this list of commands for details. In this case, they want us to subtract 40 (decimal) from the number before I have the coolant temperature in centigrade. It reported 39, so I subtract 40, and my actual result is -1C (which is 30F).​

That's all for now.

UPDATE: I came across the python-OBD package which simplifies the OBD query process and automatically converts it's returned data into useful units of measurement.
 
Last edited:

Sponsored

redracer

Well-Known Member
First Name
Robert
Joined
Aug 22, 2017
Threads
20
Messages
558
Reaction score
619
Location
Manteca, CA
Vehicle(s)
2023 4xe Rubicon
I wonder... Would you be interested in starting a github for this project? Then we can all contribute. It'd be a good updated place to keep the spreadsheet, different code projects, etc....
 

Lapis

Well-Known Member
First Name
Tim
Joined
May 2, 2020
Threads
2
Messages
183
Reaction score
246
Location
SoCal Desert
Vehicle(s)
2019 JLU Rubicon Ocean Blue
So cool you're showing all this. I'm an IT Systems/Network guy so I think I'm following most it. It's interesting all the different metrics coming through there.

To your original issue (no heat on remote start) Would leaving the climate system on auto not turn on heat in the mornings? I don't have remote start so IDK
 
OP
OP
jmccorm

jmccorm

Well-Known Member
First Name
Josh
Joined
Sep 15, 2021
Threads
54
Messages
1,151
Reaction score
1,275
Location
Tulsa, OK
Vehicle(s)
2021 JLUR
Build Thread
Link
Occupation
Systems Engineering
So cool you're showing all this. I'm an IT Systems/Network guy so I think I'm following most it. It's interesting all the different metrics coming through there.
It's a different world, for sure! I'm just glad that there's a kernel module that works like TCP/UDP messaging.
To your original issue (no heat on remote start) Would leaving the climate system on auto not turn on heat in the mornings? I don't have remote start so IDK
Unfortunately, no. With remote start, the HVAC wont normally turn on until you pop in the vehicle and hit the RUN button. But it seems to run through a set of commands if the temperature is below 40F.

I didn't notice what the target temperature was, I just concentrated on vents and fan speed. It starts with Windshield/FULL for a short time, then leaves it at Floor/AUTO which seems to run at a much lower speed.

That's not too bad. But I want it to always activate, and activate the same way, when it is 60F or lower. I also want A/C cooling to run (something it doesn't automatically do) when it's 80F or 85F degress and higher outside. Really, it was those hot 100F+ days that got me started. I want to give the vehicle a chance to cool down before I set foot in there.
 

HempelNet

Well-Known Member
First Name
James
Joined
May 10, 2018
Threads
9
Messages
93
Reaction score
191
Location
Indianapolis, Indiana
Vehicle(s)
2022 JLU Rubicon XR (Crystal Granite)
Occupation
Sr. Security Engineer
Vehicle Showcase
1
I have glanced over this thread in hopes of looking cool if someone passes my desk but all I can say is WOW you are insane taking this on. Best of luck and love the updates!
 
OP
OP
jmccorm

jmccorm

Well-Known Member
First Name
Josh
Joined
Sep 15, 2021
Threads
54
Messages
1,151
Reaction score
1,275
Location
Tulsa, OK
Vehicle(s)
2021 JLUR
Build Thread
Link
Occupation
Systems Engineering
I wonder... Would you be interested in starting a github for this project? Then we can all contribute. It'd be a good updated place to keep the spreadsheet, different code projects, etc....
You know, I realize what I'm doing now isn't such a great way to organize knowledge. It's more evangelism and story telling than it is logically organizing information. But if I start dividing individual topics into their own threads, they'll get lost in this larger sub-forum. And, yes, as poor as this method is for distributing knowledge, it scales even worse with multiple participants.

What's the best way to do this? I'm not sure. I'm open to ideas. I think there's a need for a collaborative spreadsheet (like Google Docs has) for multiple (whitelisted) people to easily and simultaneously update a shared spreadsheet (like with the CAN ID, and later with the more challenging UDS SIDs). I think there's a need for something like a Wiki to coalesce and distribute information, and to act as reference material for new participants. And there's a place for something like GitHub for code contributions and maintenance.

Myself, I think I'm fairly good with geek evangelism (forging new trails, showing what's possible, showing how it is done). I'm good with reverse engineering, sharing knowledge (verbosely), documenting, and architecting solutions. But I should be clear, I'm just stating my strengths here, not laying claim. I'm just as fine with others performing or even owning those same roles. I'm not so good with writing (public) code, and I'd be even worse maintaining a software repository.

It seems like a number of participants are going to jump in here soon, so I don't want to go too far before we get a quorum and consensus. But I think GitHub's a fine decision... it's just I'm going to have to defer to someone else who's more willing and more qualified to run it. Might you be the guy for this?
Sponsored

 
 



Top