{"id":11168,"date":"2026-02-15T23:21:50","date_gmt":"2026-02-15T23:21:50","guid":{"rendered":"https:\/\/purplemeanie.co.uk\/?p=11168"},"modified":"2026-02-15T23:34:45","modified_gmt":"2026-02-15T23:34:45","slug":"esp32ret-on-an-adafruit-esp32-s3-tft","status":"publish","type":"post","link":"https:\/\/purplemeanie.co.uk\/index.php\/2026\/02\/15\/esp32ret-on-an-adafruit-esp32-s3-tft\/","title":{"rendered":"ESP32RET on an Adafruit ESP32-S3 TFT"},"content":{"rendered":"\n<p>Well, this was another one of those rabbit hole projects. I&#8217;d got myself a home grown CANbus sniffer that talked in the Lawicel format to SavvyCan and allowed me to sniff <a href=\"https:\/\/purplemeanie.co.uk\/index.php\/2019\/08\/31\/ecu-diagnostics-part-1-introduction\/\" data-type=\"link\" data-id=\"https:\/\/purplemeanie.co.uk\/index.php\/2019\/08\/31\/ecu-diagnostics-part-1-introduction\/\">CANbus data<\/a> reasonably reliably.\u00a0<\/p>\n\n\n\n<p>BUT, I had to be connected to the sniffer over a serial interface and that was becoming a problem in my crowded office\/lab environment. My current sniffer was also running out of steam (there&#8217;s a mental image) and so I needed more grunt too.<\/p>\n\n\n\n<p>I also want my Sniffers to have a locally attached display on them&#8230; it&#8217;s good to be able to see how many packets are flowing and to be able to have a semi-intelligent sniffer showing other things locally without having to have a PC connected to them. An attached display is also great for some quick diagnostics when things aren&#8217;t going the way you thought they would.<\/p>\n\n\n\n<p>So I decided to see if I could get the ESP32RET project (wifi streaming of CAN frames over WiFi) running on an Adafruit ESP32-S3 TFT board&#8230; what could possibly go wrong!<\/p>\n\n\n\n<p>And before we get too far into this&#8230; here&#8217;s the GitHub repo for anyone who doesn&#8217;t want to read any further&#8230; don&#8217;t blame you TBH!<\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/Purplemeanie\/ESP32RET.git\">https:\/\/github.com\/Purplemeanie\/ESP32RET.git<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The OG CANBus Sniffer<\/h2>\n\n\n\n<p class=\"wp-block-heading\">But before we get into the ESP32RET project&#8230; here&#8217;s what I&#8217;d done already. A couple of CANBus projects, one a packet generator and one a sniffer. Both based around the Adafruit RP2040 CAN Feather &#8211; I really like these boards!<\/p>\n<p class=\"wp-block-heading\">I worked for a few months with these devices sniffing the various CANBuses I was playing with.<\/p>\n<p>The Sniffer gets connected to a PC (Mac) and was controlled by the <a href=\"https:\/\/www.savvycan.com\">SavvyCan<\/a> software using a Lawicel\/SLCAN protocol. All was fine, but it did need a serial connection and topped out at about 800 packets\/sec.<\/p>\n<p>Here&#8217;s the two projects connected together, being tested back to back.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"2048\" height=\"1152\" data-attachment-id=\"11170\" data-permalink=\"https:\/\/purplemeanie.co.uk\/rp2040-sniff-and-gen\/\" data-orig-file=\"https:\/\/purplemeanie.co.uk\/wp-content\/uploads\/2026\/02\/RP2040-Sniff-and-Gen-scaled.jpg\" data-orig-size=\"2560,1440\" 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;1&quot;}\" data-image-title=\"RP2040 Sniff and Gen\" data-image-description=\"\" data-image-caption=\"&lt;p&gt;RP2040 Sniffer and Generator&lt;\/p&gt;\n\" data-large-file=\"https:\/\/purplemeanie.co.uk\/wp-content\/uploads\/2026\/02\/RP2040-Sniff-and-Gen-2048x1152.jpg\" src=\"http:\/\/purplemeanie.co.uk\/wp-content\/uploads\/2026\/02\/RP2040-Sniff-and-Gen-2048x1152.jpg\" alt=\"\" class=\"wp-image-11170\" srcset=\"https:\/\/purplemeanie.co.uk\/wp-content\/uploads\/2026\/02\/RP2040-Sniff-and-Gen-2048x1152.jpg 2048w, https:\/\/purplemeanie.co.uk\/wp-content\/uploads\/2026\/02\/RP2040-Sniff-and-Gen-600x338.jpg 600w, https:\/\/purplemeanie.co.uk\/wp-content\/uploads\/2026\/02\/RP2040-Sniff-and-Gen-768x432.jpg 768w, https:\/\/purplemeanie.co.uk\/wp-content\/uploads\/2026\/02\/RP2040-Sniff-and-Gen-1536x864.jpg 1536w\" sizes=\"auto, (max-width: 2048px) 100vw, 2048px\" \/><figcaption class=\"wp-element-caption\">RP2040 Sniffer and Generator<\/figcaption><\/figure>\n\n\n\n<p>As you can see the displays are really useful.<\/p>\n\n\n\n<p>The generator also had a &#8220;command over serial&#8221; interface. So, via the serial interface to my Mac, I could turn on and off any of 4 different frame generation patterns, with data length, data content (fixed, count, random) and frequency all configurable. It&#8217;s been really useful at loading up a bus to see what breaks.<\/p>\n\n\n\n<p>The sniffer was also really useful, getting me through the early stages of my test bench setup&#8230; setting up the VCU, PDM, DCDC and BMS (if you know you know).<\/p>\n\n\n\n<p>Anyway back to the main topic&#8230; ESP32RET on ESP32-S3.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Why ESPRET on ESP32-S3<\/h3>\n\n\n\n<p>&#8230; because I over-engineer stuff&#8230; that should be obvious by now.<\/p>\n\n\n\n<p>I&#8217;d seen the ESP32RET project being used by other automotive peeps and it looked cool, but I had my RP2040 based boards and that was enough to be going on with.<\/p>\n\n\n\n<p>But, with the Lawicel ascii CAN-frame over serial protocol that SavvyCan uses and fact that my boards needed to be tethered to a serial port, these things started to become problems.<\/p>\n\n\n\n<p>My Brusa DCDC converter generates over 600 CAN packets a second just doing nothing, and I was only getting about 800 frames\/sec between my Generator and Sniffer. So that could be a bottle neck.<\/p>\n\n\n\n<p>And&#8230; I was having to drape a 3m USB3 cable across my office so I could connect my desktop Mac to my Sniffer boards. That wasn&#8217;t ideal.<\/p>\n\n\n\n<p>So I thought I&#8217;d have a look at getting the ESP32RET project running.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">ESP32RET<\/h3>\n\n\n\n<p>This is a very cool project, here:\u00a0<a href=\"https:\/\/github.com\/collin80\/ESP32RET.git\">https:\/\/github.com\/collin80\/ESP32RET.git<\/a><\/p>\n\n\n\n<p>It runs on an ESP32 (so already pretty powerful) and can do a bunch of stuff, including:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Serial command and control interface (enable\/disable can busses, set speed, listen only etc etc)<\/li>\n\n\n\n<li>Binary CAN over serial and Wifi (TCP)<\/li>\n\n\n\n<li>Ascii CAN over serial<\/li>\n\n\n\n<li>Some CAN Lawicel protocol support (not tested).<\/li>\n<\/ul>\n\n\n\n<p>I was mainly interested in the CAN over Wifi. This particular mode uses a fairly simple wrapper around the CANbus frames, with the protocol being known as GVRET:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>0xF1 as a framer, <\/li>\n\n\n\n<li>a command byte, <\/li>\n\n\n\n<li>CAN-ID, <\/li>\n\n\n\n<li>data size, <\/li>\n\n\n\n<li>bus, <\/li>\n\n\n\n<li>data <\/li>\n\n\n\n<li>and a CRC (not currently used).<\/li>\n<\/ul>\n\n\n\n<p>Note: there&#8217;s some packing of data into single bytes, so don&#8217;t take that list a the data structure.<\/p>\n\n\n\n<p>That all looked pretty simple and snappy and comes with the benefit that SavvyCan not only works with it, but also auto discovers GVRET endpoints on a network.<\/p>\n\n\n\n<p>All good so far.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u00a0ESP32-S3<\/h3>\n\n\n\n<p>Now in my ignorance of a new project, and for that matter a new processor I really didn&#8217;t appreciate what I was getting into&#8230; yes, yes, I know everyone and their dog has worked with ESP32&#8217;s but I&#8217;d only done a little bit of work on the Adafruit Hazah boards quite a few years ago and so I wasn&#8217;t up to speed with just how different ESP32 processors can be.<\/p>\n\n\n\n<p>But in my haste I had a look around at the ESP32 processor boards that were being sold and found the Adafruit ESP32-S3 TFT. And I&#8217;m a big fan of Lada Ada&#8217;s Adarfruit stuff so I ordered a board, and the Adafruit CAN Pal that I&#8217;d need to connect it to a CANbus.<\/p>\n\n\n\n<p>And there my journey began.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Getting the ESP32RET onto the Adafruit ESP32-S3 TFT Board<\/h3>\n\n\n\n<p>All was well at the start.\u00a0And I probably should have done more research on ESP32-S3 running ESP32RET (there are other forks of ESP32RET &#8211; but none for the Adafruit board I don&#8217;t think).<\/p>\n\n\n\n<p>The ESP32RET project comes with a well put together platformio.ini file that I now knew how to use (having spent way too much time on the <a href=\"https:\/\/purplemeanie.co.uk\/index.php\/2026\/02\/01\/debugging-the-zombieverter-webinterface\/\" data-type=\"post\" data-id=\"11079\">esp8266-web-server<\/a> project trying to get familiar with PlatformIO).<\/p>\n\n\n\n<p>So a few clicks later and I had my Adafruit S3 TFT board connected to the CAN Pal and loaded with the ESP32RET code.<\/p>\n\n\n\n<p>First job was to test it all out, and so I obviously connected it to my RP2040 CAN Generator from above and stuffed it&#8217;s output into the S3 board.<\/p>\n\n\n\n<p>And all was well and good&#8230; CAN frames were generated, captured on the S3 and I was able to connect to the Wifi of the S3 using Savvy Can. Even connecting it to my home Wifi network was trivial.<\/p>\n\n\n\n<p>Then the problems began.<\/p>\n\n\n\n<p>Next up I connected this new ESP32RET S3 sniffer to my EV test bench. At the time of writing this the test bench just comprises the ZombieVerter VCU, an AIM Tech PDM32, a Brusa BDC668 DCDC converter and an EMUS G1 BMS. So just 4 devices on a CANbus.<\/p>\n\n\n\n<p>And it didn&#8217;t work.<\/p>\n\n\n\n<p>The ESP32RET code just started to reboot, time after time. Ooops!<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Debugging ESP32RET on ESP32-S3<\/h3>\n\n\n\n<p>Bugger! I was hoping this was going to be a trivial install.<\/p>\n\n\n\n<p>It turned into almost a week of head scratching, ChatGPT sessions and tweaking just when I thought it was all working&#8230; but wasn&#8217;t.<\/p>\n\n\n\n<p>It took almost two days to get my head around what was going on. I had to add a bunch of code to the ESP32RET project to see what was happening. I added some code to show me why the rebooting was happening (it was PANIC&#8217;ing&#8230; as suspected) and a lot more code to try and binary cut where the panic was hitting.<\/p>\n\n\n\n<p>I then got into coredumps. Thankfully the ESP32RET project is well set up, and it already created a flash partition for a 64kB coredump. It took an hour or two to get the exact incantation to extract and decode the coredump, but eventually ChatGPT and I got there.<\/p>\n\n\n\n<p>And of course, as of early 2026 it goes without saying that ChatGPT massively increases the speed that you can iterate these problems. I know all the stuff about coredumps and panics and multi-threading and locking&#8230; I&#8217;ve been doing multi-threaded projects for over 35 years. But on a new processor and development environment I would have spent days researching what tools to use and the various command line options. I knew the route that needed to be taken but ChatGPT carried me down the road SO MUCH FASTER than I would have done with just Google searches.<\/p>\n\n\n\n<p>And the coredump was telling us that we were getting code being called as null pointers. I.e the object being referenced had dissapeared behind the calling environment&#8217;s back. That wasn&#8217;t a surprise.<\/p>\n\n\n\n<p>But that led to another couple of days of trying to figure out where that was happening in the four different projects that ESP32RET is made from.<\/p>\n\n\n\n<p>In the end we got there. There may be other such problems in the code base, but the one that fixed my particular panic was around the enabling and disabling of CANbuses. As the board boots it obviously starts up the CANbuses. But it also bounces the busses a couple of times to do stuff like set baudrates and listenonly modes. And as the bus was bounced it was trying to set up two different ISR callback routines for each bounce, as well as set up a bunch of queues etc.<\/p>\n\n\n\n<p>And the task creating and teardown was racing the bus bouncing.\u00a0<\/p>\n\n\n\n<p>So between ChatGPT and myself we added a bunch of mutexes around the enable() and disable() functions (that create the tasks) and also around the higher level set baudrate and listenonly functions. It was also obvious to not do the enable()\/disable() dance if the baudrate or listen mode weren&#8217;t actually changing.&nbsp;<\/p>\n\n\n\n<p>We also added a bunch of fallback code in the enable() code. Probably not particularly useful in this context. i.e. If the CANbus doesn&#8217;t get set up correctly then we&#8217;ve got a bigger problem than whether we survive that attempt. Anyway we added it.<\/p>\n\n\n\n<p>So, after a few days I had a running ESP32RET project on an Adafruit S3 TFT board.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Some Graphics<\/h3>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"2048\" height=\"1536\" data-attachment-id=\"11175\" data-permalink=\"https:\/\/purplemeanie.co.uk\/es32ret-on-s3-tft\/\" data-orig-file=\"https:\/\/purplemeanie.co.uk\/wp-content\/uploads\/2026\/02\/ES32RET-on-S3-TFT-scaled.jpeg\" data-orig-size=\"2560,1920\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;2.2&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;iPhone 16 Pro&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1771005231&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;2.2200000286119&quot;,&quot;iso&quot;:&quot;80&quot;,&quot;shutter_speed&quot;:&quot;0.02&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;1&quot;}\" data-image-title=\"ES32RET on S3 TFT\" data-image-description=\"\" data-image-caption=\"&lt;p&gt;ESP32RET on Adafruit ESP32-S3 TFT with some Graphics&lt;\/p&gt;\n\" data-large-file=\"https:\/\/purplemeanie.co.uk\/wp-content\/uploads\/2026\/02\/ES32RET-on-S3-TFT-2048x1536.jpeg\" src=\"http:\/\/purplemeanie.co.uk\/wp-content\/uploads\/2026\/02\/ES32RET-on-S3-TFT-2048x1536.jpeg\" alt=\"\" class=\"wp-image-11175\" srcset=\"https:\/\/purplemeanie.co.uk\/wp-content\/uploads\/2026\/02\/ES32RET-on-S3-TFT-2048x1536.jpeg 2048w, https:\/\/purplemeanie.co.uk\/wp-content\/uploads\/2026\/02\/ES32RET-on-S3-TFT-600x450.jpeg 600w, https:\/\/purplemeanie.co.uk\/wp-content\/uploads\/2026\/02\/ES32RET-on-S3-TFT-768x576.jpeg 768w, https:\/\/purplemeanie.co.uk\/wp-content\/uploads\/2026\/02\/ES32RET-on-S3-TFT-1536x1152.jpeg 1536w\" sizes=\"auto, (max-width: 2048px) 100vw, 2048px\" \/><figcaption class=\"wp-element-caption\">ESP32RET on Adafruit ESP32-S3 TFT with some Graphics<\/figcaption><\/figure>\n\n\n\n<p>And that just left some graphics to get displayed on the TFT. I&#8217;d left that well alone while the board was panic&#8217;ing&#8230; I didn&#8217;t want to be making that worse by introducing another bus (SPI) and some timing changes.<\/p>\n\n\n\n<p>But once the board was stable it was trivial to get ChatGPT to write the code to create some graphical stuff on the TFT. There&#8217;s more to come on this, but this is really useful at the moment:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>CPU loading of the two cores<\/li>\n\n\n\n<li>CAN frame rate (fps)<\/li>\n\n\n\n<li>Heap usage<\/li>\n<\/ul>\n\n\n\n<p>As it happens the cores are both pretty underutilised &#8211; even at about 700 frames\/sec on the CANbus.<\/p>\n<p>Side Note: As part of the debugging, I&#8217;d also made sure I wasn&#8217;t running the various tasks and main Arduino stack on different cores&#8230; without the mutex protections I eventually put in anyway, running on multiple cores could certainly be causing my panics.<\/p>\n<p>But in the end, as I write, I have all the code (including graphics) and IRSs running on just one core, it barely registers.<\/p>\n<p>And that&#8217;s it, ESP32RET on an Adafruit S3 TFT sniffing packets from my EV test bench into SavvyCan. Now wouldn&#8217;t it be nice to have a (better\/different) way of analysing these packets&#8230; ohh.. you&#8217;d like another rabbit hole into Wireshark plugins would you&#8230; well have I got a post for you.<\/p>\n<p>Happy Blatting. J<\/p>\n\n\n\n<p>&nbsp;<\/p>\n\n\n\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Well, this was another one of those rabbit hole projects. I&#8217;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 was becoming a problem in [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":11175,"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":"CANBus sniffing on a ESP32-S3 rabbit hole! Hopefully some of you understood that that means :-)","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,38],"tags":[],"class_list":["post-11168","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-caterham-blog","category-electric-vehicles"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/purplemeanie.co.uk\/wp-content\/uploads\/2026\/02\/ES32RET-on-S3-TFT-scaled.jpeg","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p8yl38-2U8","jetpack-related-posts":[{"id":11194,"url":"https:\/\/purplemeanie.co.uk\/index.php\/2026\/02\/16\/gvret-and-bdc668-disectors-for-wireshark\/","url_meta":{"origin":11168,"position":0},"title":"GVRET and BDC668 Dissectors for Wireshark","author":"John Martin","date":"February 16, 2026","format":false,"excerpt":"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\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\/Screenshot-2026-02-15-at-16.56.02-scaled.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/purplemeanie.co.uk\/wp-content\/uploads\/2026\/02\/Screenshot-2026-02-15-at-16.56.02-scaled.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/purplemeanie.co.uk\/wp-content\/uploads\/2026\/02\/Screenshot-2026-02-15-at-16.56.02-scaled.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/purplemeanie.co.uk\/wp-content\/uploads\/2026\/02\/Screenshot-2026-02-15-at-16.56.02-scaled.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/purplemeanie.co.uk\/wp-content\/uploads\/2026\/02\/Screenshot-2026-02-15-at-16.56.02-scaled.png?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/purplemeanie.co.uk\/wp-content\/uploads\/2026\/02\/Screenshot-2026-02-15-at-16.56.02-scaled.png?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":4765,"url":"https:\/\/purplemeanie.co.uk\/index.php\/2019\/08\/31\/ecu-diagnostics-part-2-ecu-obd-and-can\/","url_meta":{"origin":11168,"position":1},"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":[]},{"id":4769,"url":"https:\/\/purplemeanie.co.uk\/index.php\/2019\/09\/01\/ecu-diagnostics-part-3-test-setup\/","url_meta":{"origin":11168,"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":5119,"url":"https:\/\/purplemeanie.co.uk\/index.php\/2019\/09\/20\/ecu-diagnostics-part-13-1-mbe-broadcast\/","url_meta":{"origin":11168,"position":3},"title":"ECU Diagnostics &#8211; part 13.1 : MBE-Broadcast","author":"John Martin","date":"September 20, 2019","format":false,"excerpt":"The simplest of the three Caterham OBD port diagnostic protocols we know about is what I've called MBE-Broadcast. As soon as the car is put into ignition switch position 2, the ECU starts to spit out a this stream of data on the CAN bus. Unlike the OBD-II protocol and\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\/Fig-8.-MBE-Broadcast-Protocol-e1597310343226.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/purplemeanie.co.uk\/wp-content\/uploads\/2019\/09\/Fig-8.-MBE-Broadcast-Protocol-e1597310343226.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/purplemeanie.co.uk\/wp-content\/uploads\/2019\/09\/Fig-8.-MBE-Broadcast-Protocol-e1597310343226.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/purplemeanie.co.uk\/wp-content\/uploads\/2019\/09\/Fig-8.-MBE-Broadcast-Protocol-e1597310343226.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":8652,"url":"https:\/\/purplemeanie.co.uk\/index.php\/2024\/04\/11\/putting-the-ev-in-seven-lowflying-part-5-spring-24-progress\/","url_meta":{"origin":11168,"position":4},"title":"Putting the EV in sEVen \u2013 Lowflying part 5 : Spring &#8217;24 Progress","author":"John Martin","date":"April 11, 2024","format":false,"excerpt":"So, it was about time I did an update for the Caterham and Lotus Seven Club magazine, Low Flying. This article is the Spring 2024 progress update and covers: Scanning the Car Component Configuration CANbus Configuration Suspension Logger","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":"Putting the EV in Seven - Low Flying Part 5 Progress 1","src":"https:\/\/i0.wp.com\/purplemeanie.co.uk\/wp-content\/uploads\/2024\/04\/PTEVIS-5-Fanfold.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/purplemeanie.co.uk\/wp-content\/uploads\/2024\/04\/PTEVIS-5-Fanfold.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/purplemeanie.co.uk\/wp-content\/uploads\/2024\/04\/PTEVIS-5-Fanfold.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/purplemeanie.co.uk\/wp-content\/uploads\/2024\/04\/PTEVIS-5-Fanfold.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/purplemeanie.co.uk\/wp-content\/uploads\/2024\/04\/PTEVIS-5-Fanfold.png?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/purplemeanie.co.uk\/wp-content\/uploads\/2024\/04\/PTEVIS-5-Fanfold.png?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":5155,"url":"https:\/\/purplemeanie.co.uk\/index.php\/2019\/09\/20\/ecu-diagnostics-part-13-3-mbe-isotp\/","url_meta":{"origin":11168,"position":5},"title":"ECU Diagnostics &#8211; part 13.3 : MBE-ISOTP","author":"John Martin","date":"September 20, 2019","format":false,"excerpt":"SUMMARY We now understand the communications protocol used by Easimap (the Windows software supplied by the ECU manufacturer) and can use it to ask the ECU for whatever data the car has to offer. We can then manipulate the responses we get back from the car and format them to\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":"","width":0,"height":0},"classes":[]}],"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/purplemeanie.co.uk\/index.php\/wp-json\/wp\/v2\/posts\/11168","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=11168"}],"version-history":[{"count":22,"href":"https:\/\/purplemeanie.co.uk\/index.php\/wp-json\/wp\/v2\/posts\/11168\/revisions"}],"predecessor-version":[{"id":11193,"href":"https:\/\/purplemeanie.co.uk\/index.php\/wp-json\/wp\/v2\/posts\/11168\/revisions\/11193"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/purplemeanie.co.uk\/index.php\/wp-json\/wp\/v2\/media\/11175"}],"wp:attachment":[{"href":"https:\/\/purplemeanie.co.uk\/index.php\/wp-json\/wp\/v2\/media?parent=11168"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/purplemeanie.co.uk\/index.php\/wp-json\/wp\/v2\/categories?post=11168"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/purplemeanie.co.uk\/index.php\/wp-json\/wp\/v2\/tags?post=11168"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}