For automotive enthusiasts and DIY mechanics, the ability to customize vehicle settings is a significant advantage. Discover how to directly program tire size and pressure settings in JK model Electronic Control Units (ECUs) using an OBD2 interface, eliminating the need for commercial programmers. This guide delves into the process, successfully executed on a 2018 JK, providing insights into the communication protocols and command structures involved in recalibrating your speedometer and related systems for accurate readings after tire modifications.
Understanding OBD2 Programming for Tire Size
The key to this DIY approach lies in utilizing the OBDII Data Link Connector (DLC), conveniently located near the driver’s knee. The communication foundation is built upon ISO 15765-4 CAN protocol, operating at 11 bit ID and 500 kbaud. Layered on top is a protocol akin to Keyword Protocol 2000, ISO 14230-3, facilitating specific diagnostic and programming commands.
In JK vehicles, the speedometer ratio, crucial for accurate speed and mileage calculations, is primarily configured within the TIPM (Totally Integrated Power Module) at “local identifier” 0x0c. This value is also mirrored in the TCM (Transmission Control Module) at local identifier 0xb1, alongside other related parameters. By directly writing to these identifiers, you can effectively adjust the vehicle’s tire size settings.
Step-by-Step Command Stream for Tire Size Adjustment
The following command stream outlines the sequence required to program tire size. Each line represents a command sent via the OBD2 interface, with hexadecimal values specifying controller IDs (CID), service identifiers (SID), and parameter identifiers (PID), followed by data bytes for writing new values.
01C 3E 02 // to unkn2, tester present
7DF 3E 02 // to general, tester present
620 10 92 // to tipm, diagnostic session control
// to tipm, write local ID 0x0c
620 3B 0C 0E 92 03 E8 0F A0 p1 p2 FF FF 00 03 11 1B A0 01 00 01 02
01C 3E 02 // to unkn2, tester present
7DF 3E 02 // to general, tester present
620 10 92 // to tipm, diagnostic session control
7E1 10 92 // to tcm, diagnostic session control
// write tcm local ID 0xb1
7E1 3B B1 6A 64 34 72 05 01 00 0A 02 00 05 10 27 27 01 06 02 02 0C 00 00 01 00 02 00 02 00 00 4F 01 92 0E E8 03 A0 0F p2 p1 23 00 qq rr 41 56 43 2D
784 11 82 // to unkn4, reset
620 11 82 // to tipm, reset
784 11 82 // to unkn4, reset
7E0 11 82 // to ecm, reset
Within this command stream, p1
, p2
, qq
, and rr
are the variable parameters directly related to tire diameter. Understanding how to calculate and determine these values is crucial for accurate programming.
Calculating p1 and p2 Values
The parameters p1
and p2
represent the tire diameter in a specific encoded format. They are derived from a value ‘pp’, which is calculated using the following formula:
pp = diameter (in inches) * 80 – 8
For instance, if you have 32.75-inch diameter tires:
pp = 32.75 * 80 – 8 = 2612
Converting 2612 to hexadecimal yields 0x0a34. Therefore, p1
(most significant byte) is 0x0a, and p2
(least significant byte) is 0x34. It’s important to use the rolling diameter of the tire, which is the effective diameter when the vehicle’s weight is applied, rather than the unloaded diameter.
Observed qq and rr Values
While the formula for p1
and p2
is straightforward, the exact calculation for qq
and rr
values remains undetermined. Empirical observation provides a table of values that correspond to different tire diameters. These values may relate to analog signal levels or flag settings, but their precise function is not fully understood.
Diameter (inches) | qq rr (hex) |
---|---|
31.2875 | 35 29 |
32.0 | 21 9d |
32.25 | e3 ad |
32.5 | eb 3d |
32.75 | ee cd |
33.0 | f7 5d |
34.0 | cf 9d |
35.0 | d5 5d |
Hardware and Software Considerations
This DIY programming was successfully achieved using affordable and widely accessible OBDII interfaces, including Bafx and OBDLink SX USB. The Bafx interface utilizes a clone of the ELM327 chip, while the OBDLink SX employs the STN1110 chip.
A noted challenge with these interfaces is their imperfect handling of multi-frame writes, with STN1110 exhibiting slightly better performance than ELM327 in this regard. Workarounds involving toggling Auto Format (caf0/caf1) and Response (r0/r1) modes were necessary to overcome these limitations. For a more streamlined and robust solution, a Raspberry Pi coupled with a CAN bus interface could provide a cleaner and more reliable platform. However, for basic tire size programming, ELM327 or STN1110 based interfaces can be sufficient with careful manipulation.
Conclusion
This exploration demonstrates the feasibility of programming tire size settings in JK vehicles directly via the OBD2 port, without relying on proprietary commercial tools. By understanding the underlying communication protocols, command structures, and parameter calculations, informed users can recalibrate their vehicle’s speedometer and related systems. While accessible OBDII interfaces can be utilized, potential limitations in multi-frame write handling should be considered. This DIY approach empowers enthusiasts to take control of their vehicle’s configuration, ensuring accurate performance and readings after tire size modifications.