{"id":11194,"date":"2026-02-16T00:27:32","date_gmt":"2026-02-16T00:27:32","guid":{"rendered":"https:\/\/purplemeanie.co.uk\/?p=11194"},"modified":"2026-03-02T20:32:31","modified_gmt":"2026-03-02T20:32:31","slug":"gvret-and-bdc668-disectors-for-wireshark","status":"publish","type":"post","link":"https:\/\/purplemeanie.co.uk\/index.php\/2026\/02\/16\/gvret-and-bdc668-disectors-for-wireshark\/","title":{"rendered":"GVRET and BDC668 Dissectors for Wireshark"},"content":{"rendered":"\n<p>This is a quick post about another non-quick rabbit hole.<\/p>\n\n\n\n<p>This Wireshark plugin sits on the same PC as SavvyCan and sniffs the interaction between SavvyCan and an ESP32RET CANbus sniffer. It uses the Wireshark SocketCAN format to expose the GVRET can packets to further Wireshark dissectors such as ISO-TP etc.<\/p>\n\n\n\n<p>If you\u2019re just after the code, then its here:<\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/Purplemeanie\/wireshark_packet_gvret.git\">https:\/\/github.com\/Purplemeanie\/wireshark_packet_gvret.git<\/a><\/p>\n\n\n\n<p>The README.md file on GitHub give more technical detail and some help with building and installing the plugin &#8211; at least on a Mac \u00af\\_(\u30c4)_\/\u00af <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">TLDR;<\/h2>\n\n\n\n<p>As part of my Project sEVen EV conversion, I&#8217;ve been playing about with CANBuses a lot. And in the previous post I talked about getting a CANBus sniffer working on an Adafruit ESP32-S3 TFT board, with some graphics.&nbsp;<\/p>\n\n\n\n<p>Well towards then end of that ESP32 project I decided to get into a long-wished-for-but-too-lazy-to-go-at project of getting a CANbus dissector working on Wireshark.<\/p>\n\n\n\n<p>I&#8217;ve done some CANBus stuff in Wireshark before and in 2019 (I think) even got a patch accepted into the core Wireshark CANBus dissector &#8211; it wasn&#8217;t handling extended CAN ID&#8217;s properly at the time.<\/p>\n\n\n\n<p>So, I&#8217;ve got a bit of a track record with CANBus and Wireshark.&nbsp;<\/p>\n\n\n\n<p>But, unless you want to fork out some money for a dedicated CANbus sniffer, there&#8217;s not really a way of getting CANBus data sniffed into a Mac. There are SocketCAN interfaces on Linux, but I tend to work mainly on Mac&#8217;s these days so wanted a way of getting CAN frames into Wireshark so I could watch live traffic with all the fancy filtering and plotting that Wireshark can do.<\/p>\n\n\n\n<p>Side note: it&#8217;s a sorry day when Ethereal turned into Wireshark and they stopped selling their T-shirts. I had, and loved, their &#8220;Ethereal &#8211; Sniffing the glue that holds the internet together&#8221;! \ud83e\udd23&nbsp;<\/p>\n\n\n\n<p>Back to the topic of this post though. I had a few home grown and open source packet sniffers lying around. And they connected to the SavvyCan.com packet analyser, so I could poke around at what was going on on the bus.&nbsp;<\/p>\n\n\n\n<p>But I find SavvyCan a bit limiting. Don\u2019t get me wrong, SavvyCan is awesome (thanks Colin). It&#8217;s great for reverse engineering stuff you don&#8217;t have the documentation for, but I wasn&#8217;t finding it useful for working out sequences of events. My EV project has lots of devices sat on a CANbus, many of which require complex configuration sequences with many many CANbus messages and fields within the messages. So I just wasn\u2019t \u201cgetting\u201d SavvyCan for that sort of workflow.<\/p>\n\n\n\n<p>(BTW&#8230; I&#8217;m probably going to interchange CANBus frames, packets and message with gay abandon. Don&#8217;t shoot me!).<\/p>\n\n\n\n<p>So a packet reverse engineering tool, like SavvyCan, is great, but not totally what I need.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Wireshark<\/h2>\n\n\n\n<p>And so to <a href=\"http:\/\/wireshark.org\" data-type=\"link\" data-id=\"wireshark.org\">Wireshark<\/a>.&nbsp;<\/p>\n\n\n\n<p>Wireshark does understand CAN. But it does so in a rather unhelpful set of dissectors when working on a Mac. (I really should go and checkout the SocketCAN support on a Mac again \ud83e\udd14)<\/p>\n\n\n\n<p>Therefore, my plan was to have my <a href=\"https:\/\/github.com\/collin80\/ESP32RET.git\">ESP32RET<\/a> packet sniffer, sending GVRET packets over TCP to SavvyCan, and for Wireshark to sniff the packets as they are sent to SavvyCan.<\/p>\n\n\n\n<p>One of the advantages of that approach is that SavvyCan can do all the configuration of the ESP32RET Sniffer and Wireshark can just watch, and sniff&#8230; Wireshark is good at sniffing packets, but it&#8217;s not very good at controlling other devices.. I.e. generating rather than sniffing. So it worked well to leave that to SavvyCan.<\/p>\n\n\n\n<p>So\u2026 my Wireshark sniffing will only work if it&#8217;s sat on the same computer as SavvyCan is running on&#8230; for the moment!<\/p>\n\n\n\n<p>But Wireshark doesn&#8217;t know any of the protocols that SavvyCan talks. Especially not the GVRET protocol that ESP32RET uses.<\/p>\n\n\n\n<p>And so the first part of my project is to get Wireshark to decode GVRET packets sent over TCP.<\/p>\n\n\n\n<p>The next part of the project would be to then get Wireshark to further decode those GVRET packets and disect them into Brusa BDC668 CANBus messaging &#8211; breaking out all the voltages, currents, error flags, statuses and modes&#8230; etc. See later in this post.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">GVRET Wireshark Dissector<\/h3>\n\n\n\n<p>And so to ChatGPT again. As I&#8217;ve said above, I&#8217;ve worked with Wireshark code in the past. I know how to compile it, debug it and make changes. But that took weeks of learning, though those weeks were spread out over the past 20 years of using Ethereal and now Wireshark. And I didn&#8217;t want to spend weeks on this project. So&#8230; I use ChatGPT to speed the process up. It doesn&#8217;t get everything right, and there are endless iterations as you get it to home in a solution, but for the complexity of this project it was a massive speed boost. There I said it! I use AI to write code!<\/p>\n\n\n\n<p>Back to the point. Between ChatGPT and myself we got a GVRET dissector plugin created. At the moment the plugin has to be built &#8220;in tree&#8221; meaning you have to build it inside the Wireshark directory structure. I did try &#8220;out of tree&#8221; building, but &#8220;we&#8221; failed. I may come back to that at some point but for the moment that&#8217;s a problem for future John and what I have is definitely &#8220;Good enough TM&#8221;.<\/p>\n\n\n\n<p>You can find the basic files here:&nbsp;<a href=\"https:\/\/github.com\/Purplemeanie\/wireshark_packet_gvret.git\">https:\/\/github.com\/Purplemeanie\/wireshark_packet_gvret.git<\/a><\/p>\n\n\n\n<p>Instructions on the basic idea of building this plugin can be found in the README.<\/p>\n\n\n\n<p>Note: this is now CAN dissector (it wasn\u2019t in the first commit). It now creates a GVRET and CAN protocol that further CAN dissectors can pull apart.<\/p>\n\n\n\n<p>Note2: if you&#8217;re looking to do this sort of thing then I can say that I first created a LUA script of the GVRET protocol to make sure I could iterate quickly to a working dissector. It was then a lot easier to go to a .c\/.so plugin once that was all working.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">BDC668 Wireshark Dissector<\/h3>\n\n\n\n<p>Now this is probably what I was really after.&nbsp;<\/p>\n\n\n\n<p>I wanted a way of showing the messaging going to, and coming back from, the big Brusa BDC668 DC to DC Converter that I have in my project. And further along in the bigger EV conversion project I&#8217;ll also want to decode all the traffic to and from the Helix CTi4 inverter. But for the moment I&#8217;m going just with the 668 messaging.<\/p>\n\n\n\n<p>And so it was back to ChatGPT again. This time to create a LUA script that acts as a Wireshark dissector for the BDC668 CANBus messaging.&nbsp;<\/p>\n\n\n\n<p>First of all I got CANMatrix to generate a LUA script from a DBC file I have from Brusa. This gave me the basic CAN ID&#8217;s, fields and flags that I needed. But that didn&#8217;t work straight away in Wireshark.&nbsp;<\/p>\n\n\n\n<p>Between ChatGPT and myself we then set about fixing the problems with the basic port of the DBC file, as well as adding all the scaling and offsetting needed to turn the raw CANBus fields into voltages, currents etc. We also converted all the states and modes into textual fields to be displayed in Wireshark.<\/p>\n\n\n\n<p>Unfortunately, I can&#8217;t publish this LUA script as the contents are covered under an NDA. But here&#8217;s a screenshot of it in action.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"2048\" height=\"1701\" data-attachment-id=\"11176\" data-permalink=\"https:\/\/purplemeanie.co.uk\/screenshot-2026-02-15-at-16-56-02\/\" data-orig-file=\"https:\/\/purplemeanie.co.uk\/wp-content\/uploads\/2026\/02\/Screenshot-2026-02-15-at-16.56.02-scaled.png\" data-orig-size=\"2560,2126\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"Screenshot 2026-02-15 at 16.56.02\" data-image-description=\"\" data-image-caption=\"&lt;p&gt;Wireshark directing GVRET protocol followed by Brusa BDC668 CANBus messaging&lt;\/p&gt;\n\" data-large-file=\"https:\/\/purplemeanie.co.uk\/wp-content\/uploads\/2026\/02\/Screenshot-2026-02-15-at-16.56.02-2048x1701.png\" src=\"http:\/\/purplemeanie.co.uk\/wp-content\/uploads\/2026\/02\/Screenshot-2026-02-15-at-16.56.02-2048x1701.png\" alt=\"\" class=\"wp-image-11176\" srcset=\"https:\/\/purplemeanie.co.uk\/wp-content\/uploads\/2026\/02\/Screenshot-2026-02-15-at-16.56.02-2048x1701.png 2048w, https:\/\/purplemeanie.co.uk\/wp-content\/uploads\/2026\/02\/Screenshot-2026-02-15-at-16.56.02-600x498.png 600w, https:\/\/purplemeanie.co.uk\/wp-content\/uploads\/2026\/02\/Screenshot-2026-02-15-at-16.56.02-768x638.png 768w, https:\/\/purplemeanie.co.uk\/wp-content\/uploads\/2026\/02\/Screenshot-2026-02-15-at-16.56.02-1536x1276.png 1536w\" sizes=\"auto, (max-width: 2048px) 100vw, 2048px\" \/><figcaption class=\"wp-element-caption\">Wireshark directing GVRET protocol followed by Brusa BDC668 CANBus messaging<\/figcaption><\/figure>\n\n\n\n<p>And there we go. That probably took about a week of work to get the GVRET dissector plugin and then the BDC668 messaging stack LUA script going.<\/p>\n\n\n\n<p>One thing I nearly got into but didn&#8217;t quite (yet), is to switch the ESP32RET project over to doing UDP rather than TCP. One of the limitations of the setup I have is that when the wifi stack on the ESP32RET device gets busy, its concatenates GVRET frames together so I get a compound frame arriving in Wireshark. Meaning I have many different BDC668 messages in the same Wireshark window\/frame\/buffer. So looking at what&#8217;s going on is less intuitive. I tried to force ESP32RET to send more often (and therefore less compounding), but I failed so far. And one solution to this problem would be to use UDP rather than TCP as the transport &#8211; making sure to send one CANBus frame per UDP packet. I&#8217;m on a high speed Wifi&#8230; so I probably won&#8217;t get a lot of loss that TCP is typically protecting against (again I spent 30 odd years sending audio and video over UDP&#8230; I think I understand some of the problems and pitfalls there \ud83d\ude09 ). And of course one CANBus frame per UDP packet would be a lot of overhead (UDP headers etc), but for what I want to do, it probably would be ok. But that&#8217;s for future John to worry about&#8230; it&#8217;s mostly working fine as it is now!<\/p>\n\n\n\n<p>This is still early days on these two dissectors, but I thought it would be useful to document a bit of the process before I get bogged down in the stuff.<\/p>\n\n\n\n<p>Happy Blatting, J<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This is a quick post about another non-quick rabbit hole. This Wireshark plugin sits on the same PC as SavvyCan and sniffs the interaction between SavvyCan and an ESP32RET CANbus sniffer. It uses the Wireshark SocketCAN format to expose the GVRET can packets to further Wireshark dissectors such as ISO-TP etc. If you\u2019re just after [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":11176,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"Ultra nerdy look at using Wireshark to decode CANBus messaging in my EV project.","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[51,20,38],"tags":[],"class_list":["post-11194","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-caterham-blog","category-ecu-diagnostics","category-electric-vehicles"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/purplemeanie.co.uk\/wp-content\/uploads\/2026\/02\/Screenshot-2026-02-15-at-16.56.02-scaled.png","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p8yl38-2Uy","jetpack-related-posts":[{"id":4782,"url":"https:\/\/purplemeanie.co.uk\/index.php\/2019\/09\/07\/ecu-diagnostics-part-4-wireshark-patching-and-obd-ii-results\/","url_meta":{"origin":11194,"position":0},"title":"ECU Diagnostics &#8211; part 4 : Wireshark Patching and OBD-II Results","author":"John Martin","date":"September 7, 2019","format":false,"excerpt":"When Wireshark first appeared, it was called Ethereal... and its motto was: \"Sniffing the glue that holds the internet together\" Wireshark sniffs the packet-glue that holds the internet together and is one of the most influential pieces of open source software there is.\u00a0 That's a pretty bold statement and I\u2026","rel":"","context":"In &quot;Caterham Blog&quot;","block_context":{"text":"Caterham Blog","link":"https:\/\/purplemeanie.co.uk\/index.php\/category\/caterham-blog\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/purplemeanie.co.uk\/wp-content\/uploads\/2019\/08\/cano7-OBD-II-working.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/purplemeanie.co.uk\/wp-content\/uploads\/2019\/08\/cano7-OBD-II-working.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/purplemeanie.co.uk\/wp-content\/uploads\/2019\/08\/cano7-OBD-II-working.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/purplemeanie.co.uk\/wp-content\/uploads\/2019\/08\/cano7-OBD-II-working.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/purplemeanie.co.uk\/wp-content\/uploads\/2019\/08\/cano7-OBD-II-working.png?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/purplemeanie.co.uk\/wp-content\/uploads\/2019\/08\/cano7-OBD-II-working.png?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":11168,"url":"https:\/\/purplemeanie.co.uk\/index.php\/2026\/02\/15\/esp32ret-on-an-adafruit-esp32-s3-tft\/","url_meta":{"origin":11194,"position":1},"title":"ESP32RET on an Adafruit ESP32-S3 TFT","author":"John Martin","date":"February 15, 2026","format":false,"excerpt":"Well, this was another one of those rabbit hole projects. I'd got myself a home grown CANbus sniffer that talked in the Lawicel format to SavvyCan and allowed me to sniff CANbus data reasonably reliably.\u00a0 BUT, I had to be connected to the sniffer over a serial interface and that\u2026","rel":"","context":"In &quot;Caterham Blog&quot;","block_context":{"text":"Caterham Blog","link":"https:\/\/purplemeanie.co.uk\/index.php\/category\/caterham-blog\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/purplemeanie.co.uk\/wp-content\/uploads\/2026\/02\/ES32RET-on-S3-TFT-scaled.jpeg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/purplemeanie.co.uk\/wp-content\/uploads\/2026\/02\/ES32RET-on-S3-TFT-scaled.jpeg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/purplemeanie.co.uk\/wp-content\/uploads\/2026\/02\/ES32RET-on-S3-TFT-scaled.jpeg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/purplemeanie.co.uk\/wp-content\/uploads\/2026\/02\/ES32RET-on-S3-TFT-scaled.jpeg?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/purplemeanie.co.uk\/wp-content\/uploads\/2026\/02\/ES32RET-on-S3-TFT-scaled.jpeg?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/purplemeanie.co.uk\/wp-content\/uploads\/2026\/02\/ES32RET-on-S3-TFT-scaled.jpeg?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":4769,"url":"https:\/\/purplemeanie.co.uk\/index.php\/2019\/09\/01\/ecu-diagnostics-part-3-test-setup\/","url_meta":{"origin":11194,"position":2},"title":"ECU Diagnostics &#8211; part 3 : Test Setup","author":"John Martin","date":"September 1, 2019","format":false,"excerpt":"Ok, so we have an OBD port\/connector on our cars that connects directly to the ECU. How are we going to figure out how to talk the right communications protocols to the car to get at its internal data? We need a test rig to do some experiments with. If\u2026","rel":"","context":"In &quot;Caterham Blog&quot;","block_context":{"text":"Caterham Blog","link":"https:\/\/purplemeanie.co.uk\/index.php\/category\/caterham-blog\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/purplemeanie.co.uk\/wp-content\/uploads\/2019\/08\/Test-Setup-Diagram.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/purplemeanie.co.uk\/wp-content\/uploads\/2019\/08\/Test-Setup-Diagram.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/purplemeanie.co.uk\/wp-content\/uploads\/2019\/08\/Test-Setup-Diagram.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/purplemeanie.co.uk\/wp-content\/uploads\/2019\/08\/Test-Setup-Diagram.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/purplemeanie.co.uk\/wp-content\/uploads\/2019\/08\/Test-Setup-Diagram.png?resize=1050%2C600&ssl=1 3x"},"classes":[]},{"id":8125,"url":"https:\/\/purplemeanie.co.uk\/index.php\/2022\/09\/30\/seven-index\/","url_meta":{"origin":11194,"position":3},"title":"Putting the EV in sEVen &#8211; Index","author":"John Martin","date":"September 30, 2022","format":false,"excerpt":"In this project we're converting a Caterham Seven Supersport SV from being powered by an Internal Combustion Engine (ICE), into one powered by an electric motor and batteries (BEV - Battery Electric Vehicle) This page is an index of articles relating to Putting the EV in sEVen. You can find\u2026","rel":"","context":"In &quot;Caterham Blog&quot;","block_context":{"text":"Caterham Blog","link":"https:\/\/purplemeanie.co.uk\/index.php\/category\/caterham-blog\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/purplemeanie.co.uk\/wp-content\/uploads\/2022\/09\/Cartoon-Seven-Vector-with-EV-Purple-Bumper.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/purplemeanie.co.uk\/wp-content\/uploads\/2022\/09\/Cartoon-Seven-Vector-with-EV-Purple-Bumper.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/purplemeanie.co.uk\/wp-content\/uploads\/2022\/09\/Cartoon-Seven-Vector-with-EV-Purple-Bumper.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/purplemeanie.co.uk\/wp-content\/uploads\/2022\/09\/Cartoon-Seven-Vector-with-EV-Purple-Bumper.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/purplemeanie.co.uk\/wp-content\/uploads\/2022\/09\/Cartoon-Seven-Vector-with-EV-Purple-Bumper.png?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/purplemeanie.co.uk\/wp-content\/uploads\/2022\/09\/Cartoon-Seven-Vector-with-EV-Purple-Bumper.png?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":5008,"url":"https:\/\/purplemeanie.co.uk\/index.php\/2019\/09\/15\/ecu-diagnostics-part-8-easimap-uses-isotp\/","url_meta":{"origin":11194,"position":4},"title":"ECU Diagnostics &#8211; part 8 : Easimap uses ISOTP (sort of)","author":"John Martin","date":"September 15, 2019","format":false,"excerpt":"Ok, that's enough of the theory about mapping. Lets get back to what Easimap is doing when it talks to the car. When we left this subject last we had got to the point where we could see what Easimap was sending and receiving on the CAN bus, but we\u2026","rel":"","context":"In &quot;Caterham Blog&quot;","block_context":{"text":"Caterham Blog","link":"https:\/\/purplemeanie.co.uk\/index.php\/category\/caterham-blog\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/purplemeanie.co.uk\/wp-content\/uploads\/2019\/09\/CANBus-Header-Diagram.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/purplemeanie.co.uk\/wp-content\/uploads\/2019\/09\/CANBus-Header-Diagram.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/purplemeanie.co.uk\/wp-content\/uploads\/2019\/09\/CANBus-Header-Diagram.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/purplemeanie.co.uk\/wp-content\/uploads\/2019\/09\/CANBus-Header-Diagram.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/purplemeanie.co.uk\/wp-content\/uploads\/2019\/09\/CANBus-Header-Diagram.png?resize=1050%2C600&ssl=1 3x"},"classes":[]},{"id":4765,"url":"https:\/\/purplemeanie.co.uk\/index.php\/2019\/08\/31\/ecu-diagnostics-part-2-ecu-obd-and-can\/","url_meta":{"origin":11194,"position":5},"title":"ECU Diagnostics \u2013 part 2 : ECU, OBD and CAN","author":"John Martin","date":"August 31, 2019","format":false,"excerpt":"ECU Caterhams, like all modern cars, have an Engine Control Unit (ECU) - a black box full of electronics, controlled by a microprocessor that manages how the engine runs. \u00a0And because it has a microprocessor it means it runs some software to control everything. It also connects to a bunch\u2026","rel":"","context":"In &quot;Caterham Blog&quot;","block_context":{"text":"Caterham Blog","link":"https:\/\/purplemeanie.co.uk\/index.php\/category\/caterham-blog\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/purplemeanie.co.uk\/wp-content\/uploads\/2019\/08\/9A4.jpg?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]}],"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/purplemeanie.co.uk\/index.php\/wp-json\/wp\/v2\/posts\/11194","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/purplemeanie.co.uk\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/purplemeanie.co.uk\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/purplemeanie.co.uk\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/purplemeanie.co.uk\/index.php\/wp-json\/wp\/v2\/comments?post=11194"}],"version-history":[{"count":18,"href":"https:\/\/purplemeanie.co.uk\/index.php\/wp-json\/wp\/v2\/posts\/11194\/revisions"}],"predecessor-version":[{"id":11271,"href":"https:\/\/purplemeanie.co.uk\/index.php\/wp-json\/wp\/v2\/posts\/11194\/revisions\/11271"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/purplemeanie.co.uk\/index.php\/wp-json\/wp\/v2\/media\/11176"}],"wp:attachment":[{"href":"https:\/\/purplemeanie.co.uk\/index.php\/wp-json\/wp\/v2\/media?parent=11194"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/purplemeanie.co.uk\/index.php\/wp-json\/wp\/v2\/categories?post=11194"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/purplemeanie.co.uk\/index.php\/wp-json\/wp\/v2\/tags?post=11194"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}