{"id":4317,"date":"2023-08-16T12:32:38","date_gmt":"2023-08-16T12:32:38","guid":{"rendered":"https:\/\/www.canbushack.com\/?p=4317"},"modified":"2024-07-23T07:46:55","modified_gmt":"2024-07-23T07:46:55","slug":"compatibility-in-revisions-of-j2534","status":"publish","type":"post","link":"https:\/\/canbushack.com\/web\/compatibility-in-revisions-of-j2534\/","title":{"rendered":"Compatibility in revisions of J2534"},"content":{"rendered":"\n<p>The J2534 standard was established by the Society of Automotive Engineers (SAE) to facilitate communication between a vehicle&#8217;s onboard diagnostics (OBD) system and external diagnostic tools or programming devices. The goal of the standard is to make it possible for any ECU reprogramming software application from any vehicle manufacturer (in the United States) to work with any aftermarket vehicle data link tool from any supplier. However, in a bit of irony, the multiple revisions of the J2534 standard often introduce breaking changes, leaving tool interoperability at the mercy of whatever revision the vehicle manufacturer and tool supplier decided to implement. This blog post will go over some of the differences with each revision, as well as some possible strategies to overcome this hurdle.<\/p>\n\n\n\n<p><strong>J2534_200202<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>API version: 02.02<\/li>\n\n\n\n<li>Registry key name: PassThruSupport<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<p>This is the initial release of the J2534 standard. Connection is straightforward, using only the PassThruConnect and PassThruDisconnect functions. PassThruReadVersion can be called before connecting to read version strings from the DLL, and the returned API version <em>must<\/em> be 02.02.<\/p>\n\n\n<style>\/*! elementor - v3.15.0 - 09-08-2023 *\/<br \/>\n.elementor-widget-image{text-align:center}.elementor-widget-image a{display:inline-block}.elementor-widget-image a img[src$=\".svg\"]{width:48px}.elementor-widget-image img{vertical-align:middle;display:inline-block}<\/style>\n<p style=\"text-align: center\">\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/www.canbushack.com\/wp-content\/uploads\/2023\/09\/j2534_1.png\" title=\"Initialization flow for 02.02\" alt=\"Initialization flow for 02.02\" loading=\"lazy\" \/><\/p>\n\n\n<p><strong>J2534\/1_200412<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>API version: 04.04<\/li>\n\n\n\n<li>Registry key name: PassThruSupport.04.04<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<p>This version of the standard adds PassThruOpen and PassThruClose\nfunctions, as a way to support global initialization and cleanup in the\nDLL. PassThruOpen takes a name parameter that <em>must<\/em> be null.<\/p>\n\n\n<p style=\"text-align: center\">\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/www.canbushack.com\/wp-content\/uploads\/2023\/09\/j2534_2.png\" title=\"Initialization flow for 04.04\" alt=\"Initialization flow for 04.04\" loading=\"lazy\" \/><\/p>\n\n\n<p>Unlike the first revision, the host is not allowed to call\nPassThruReadVersion before calling PassThruOpen. Because of this,\nwhere in the first version you could call PassThruReadVersion before\ndoing anything else to verify that the API version is what you expect,\non this version calling PassThruReadVersion on an unopened device will\n(or at least <em>should<\/em>) generate an error.<\/p>\n\n\n\n<p><strong>J2534\/1_201510<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>API version: 05.00<\/li>\n\n\n\n<li>Registry key name: PassThruSupport.05.00<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<p>Unlike in the previous revisions, this version of the standard was built\nto facilitate accessing multiple devices (from the same tool supplier)\nfrom a single DLL. PassThruScanForDevices and PassThruGetNextDevice\nhave been added for multi-device support. In addition, the name\nparameter to PassThruOpen that was required to be null in the previous\nrevision is now required to be <em>not null<\/em>, as it is used to\ndifferentiate between which device is being opened.<\/p>\n\n\n<p style=\"text-align: center\">\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/www.canbushack.com\/wp-content\/uploads\/2023\/09\/j2534_3.png\" title=\"Initialization flow for 05.00\" alt=\"Initialization flow for 05.00\" loading=\"lazy\" \/><\/p>\n\n\n<p>As you can see, things have gotten significantly more complex here with\nthe addition of &#8220;logical&#8221; connections, connections for higher-level\nprotocols. Previously protocols like CAN and ISO 15765 were treated\nequally, but in this version of the standard, ISO 15765 is a\nhigher-level protocol that operates as a logical connection on top of\nthe CAN physical connection.<\/p>\n\n\n\n<p><strong>J2534_201907<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>API version: 02.02<\/li>\n\n\n\n<li>Registry key name: PassThruSupport<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<p>Confusingly, in July of 2019, the original, first revision\n(J2534_200202) was stabilized by SAE. No additional modifications have\nbeen made. So now, when searching for the latest version of the\nspecification, you are likely to actually end up with the earliest\nversion.<\/p>\n\n\n\n<p><strong>Which version to use?<\/strong><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>If you are a tool supplier, and you are wondering which revision of\nJ2534 to support for a given vehicle manufacturer&#8217;s reprogramming\nsoftware, your best bet is to use a tool like Procmon from Microsoft&#8217;s\nSysinternals Suite, and look to see what registry keys are being\nenumerated.<\/p>\n\n\n\n<p>If you are trying to use a specific J2534 tool, you should look in the\nregistry to see which API version the DLL is using. The tool&#8217;s registry\nkeys should be under\nHKEY_LOCAL_MACHINE\\SOFTWARE\\PassThruSupport.XX.XX, but on 64-bit\nWindows, the path becomes\nHKEY_LOCAL_MACHINE\\SOFTWARE\\WOW6432Node\\PassThruSupport.XX.XX.<\/p>\n\n\n\n<p>If you have a DLL and you don&#8217;t know what API version it is using, it\nmay be possible to determine it by checking for the presence of\nPassThruScanForDevices and PassThruOpen. If both are missing, it&#8217;s\n02.02. If PassThruOpen is present and PassThruScanForDevices is\nabsent, it&#8217;s likely 04.04. And if both are present, it should be\n05.00.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The J2534 standard was established by the Society of Automotive Engineers (SAE) to facilitate communication between a vehicle&#8217;s onboard diagnostics (OBD) system and external diagnostic tools or programming devices. The goal of the standard is to make it possible for any ECU reprogramming software application from any vehicle manufacturer (in the United States) to work [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":4378,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[7],"tags":[],"class_list":["post-4317","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog"],"_links":{"self":[{"href":"https:\/\/canbushack.com\/web\/wp-json\/wp\/v2\/posts\/4317","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/canbushack.com\/web\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/canbushack.com\/web\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/canbushack.com\/web\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/canbushack.com\/web\/wp-json\/wp\/v2\/comments?post=4317"}],"version-history":[{"count":0,"href":"https:\/\/canbushack.com\/web\/wp-json\/wp\/v2\/posts\/4317\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/canbushack.com\/web\/wp-json\/wp\/v2\/media\/4378"}],"wp:attachment":[{"href":"https:\/\/canbushack.com\/web\/wp-json\/wp\/v2\/media?parent=4317"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/canbushack.com\/web\/wp-json\/wp\/v2\/categories?post=4317"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/canbushack.com\/web\/wp-json\/wp\/v2\/tags?post=4317"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}