{"id":5119,"date":"2019-09-20T09:00:48","date_gmt":"2019-09-20T08:00:48","guid":{"rendered":"https:\/\/www.purplemeanie.co.uk\/?p=5119"},"modified":"2026-05-28T11:50:54","modified_gmt":"2026-05-28T10:50:54","slug":"ecu-diagnostics-part-13-1-mbe-broadcast","status":"publish","type":"post","link":"https:\/\/purplemeanie.co.uk\/index.php\/2019\/09\/20\/ecu-diagnostics-part-13-1-mbe-broadcast\/","title":{"rendered":"ECU Diagnostics &#8211; part 13.1 : MBE-Broadcast"},"content":{"rendered":"\n<p>The simplest of the three Caterham OBD port diagnostic protocols we know about is what I&#8217;ve called MBE-Broadcast.<\/p>\n\n\n\n<p>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 the MBE-ISOTP protocol, this a not a request\/response protocol&#8230;. the car &#8220;broadcasts&#8221; these CANbus frames all the time with no provocation from anything other than turning the car on.<\/p>\n\n\n\n<p>The protocol is very simple and consists of individual CAN bus frames where the first byte is a message type. After the message byte are up to 7 more bytes containing the ECU data, as follows:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>CAN Bus<br>Frame<\/td><td><\/td><td><\/td><td><\/td><td><\/td><td><\/td><td><\/td><td><\/td><td><\/td><\/tr><tr><td>Byte <br>Number<\/td><td>0<\/td><td>1<\/td><td>2<\/td><td>3<\/td><td>4<\/td><td>5<\/td><td>6<\/td><td>7<\/td><\/tr><tr><td>Data <br>Type<\/td><td>Message<br>Type<\/td><td>D0<\/td><td>D1<\/td><td>D2<\/td><td>D3<\/td><td>D4<\/td><td>D5<\/td><td>D6<\/td><\/tr><\/tbody><\/table><figcaption>Where D0-D6 are the data bytes<\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">MBE-Broadcast CAN Bus Protocol Key Information<\/h3>\n\n\n\n<p>From Simon in Birmingham, Alabama, USA (sf4018 on Blatchat)&#8230;<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-default\"><img loading=\"lazy\" decoding=\"async\" width=\"955\" height=\"874\" data-attachment-id=\"6896\" data-permalink=\"https:\/\/purplemeanie.co.uk\/index.php\/2019\/09\/20\/ecu-diagnostics-part-13-1-mbe-broadcast\/fig-8-mbe-broadcast-protocol\/\" data-orig-file=\"https:\/\/purplemeanie.co.uk\/wp-content\/uploads\/2019\/09\/Fig-8.-MBE-Broadcast-Protocol-e1597310343226.png\" data-orig-size=\"955,874\" 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=\"Fig 8. MBE Broadcast Protocol\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/purplemeanie.co.uk\/wp-content\/uploads\/2019\/09\/Fig-8.-MBE-Broadcast-Protocol-e1597310343226.png\" src=\"https:\/\/www.purplemeanie.co.uk\/wp-content\/uploads\/2019\/09\/Fig-8.-MBE-Broadcast-Protocol-e1597310343226.png\" alt=\"MBE broadcast protocol frame diagram with byte fields and sensor values.\" class=\"wp-image-6896\" srcset=\"https:\/\/purplemeanie.co.uk\/wp-content\/uploads\/2019\/09\/Fig-8.-MBE-Broadcast-Protocol-e1597310343226.png 955w, https:\/\/purplemeanie.co.uk\/wp-content\/uploads\/2019\/09\/Fig-8.-MBE-Broadcast-Protocol-e1597310343226-600x549.png 600w, https:\/\/purplemeanie.co.uk\/wp-content\/uploads\/2019\/09\/Fig-8.-MBE-Broadcast-Protocol-e1597310343226-768x703.png 768w\" sizes=\"auto, (max-width: 955px) 100vw, 955px\" \/><\/figure>\n\n\n\n<p>Huge thanks to Simon for supplying this info. It had been on my list to take a look at but he knocked it out of the park with this analysis!<\/p>\n\n\n\n<p>Simon also provided this info on his car in case it is useful for anyone else (he has a 420R Left-Hand-Drive):<\/p>\n\n\n\n<p><strong>MAP Sensor Technical Data (Bosch p\/n 0261230044):<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Pressure Range: 0.1-1.15 Bar (i.e. measures vacuum)<\/li><li>Voltage Limitation: 380-4700mV<\/li><\/ul>\n\n\n\n<p><strong>MAP Scaling:<\/strong><\/p>\n\n\n\n<p>Extrapolating the technical data:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong style=\"font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-size: inherit; letter-spacing: normal;\">Volts<\/strong><\/td><td><strong style=\"font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-size: inherit; letter-spacing: normal;\">Bar<\/strong><\/td><td><strong style=\"font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-size: inherit; letter-spacing: normal;\">kPa<\/strong><\/td><td><strong style=\"font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-size: inherit; letter-spacing: normal;\">Dec<\/strong><\/td><\/tr><tr><td> <span style=\"font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-size: inherit; letter-spacing: normal;\">0.00<\/span><\/td><td> <span style=\"font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-size: inherit; letter-spacing: normal;\">0.00<\/span><\/td><td><span style=\"font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-size: inherit; letter-spacing: normal;\">0<\/span><\/td><td> <span style=\"font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-size: inherit; letter-spacing: normal;\">0<\/span><\/td><\/tr><tr><td> <span style=\"font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-size: inherit; letter-spacing: normal;\">0.38<\/span><span style=\"font-family: inherit; font-size: inherit; letter-spacing: -0.015em;\"> <\/span><\/td><td><span style=\"font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-size: inherit; letter-spacing: normal;\">0.10<\/span><span style=\"font-family: inherit; font-size: inherit; letter-spacing: -0.015em;\"> <\/span><\/td><td><span style=\"font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-size: inherit; letter-spacing: normal;\">10<\/span><\/td><td><\/td><\/tr><tr><td><span style=\"font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-size: inherit; letter-spacing: normal;\">4.70<\/span><span style=\"font-family: inherit; font-size: inherit; letter-spacing: -0.015em;\"> <\/span><\/td><td><span style=\"font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-size: inherit; letter-spacing: normal;\">1.15<\/span><span style=\"font-family: inherit; font-size: inherit; letter-spacing: -0.015em;\"> <\/span><\/td><td><span style=\"font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-size: inherit; letter-spacing: normal;\">115<\/span><\/td><td><\/td><\/tr><tr><td><span style=\"font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-size: inherit; letter-spacing: normal;\">5.00<\/span><\/td><td><span style=\"font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-size: inherit; letter-spacing: normal;\">1.22<\/span><span style=\"font-family: inherit; font-size: inherit; letter-spacing: -0.015em;\"> <\/span><\/td><td><span style=\"font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-size: inherit; letter-spacing: normal;\">122<\/span><\/td><td><span style=\"font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-size: inherit; letter-spacing: normal;\">255<\/span><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>So scaling is 122\/255 for kPA. Or 1.22\/255 for Bar. So the scaling is correct, but doesn\u2019t match what I was seeing from the CANbus sniffer (it was showing 200kPA\/2 Bar when stopped which makes no sense).<\/p>\n\n\n\n<p><strong>Operation:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Engine<\/li><li>Stopped:<\/li><li>~ 1.0 Bar<\/li><li>Engine Idling: 0.1-0.2 Bar (Throttle valve is closed, creating a vacuum).<\/li><li>Throttle Open: Pressure increases with throttle position 0.1\u00e00.9 Bar.<\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Example MBE-Broadcast Communication<\/h3>\n\n\n\n<p>Here&#8217;s some example CAN bus frames that we&#8217;ll decode from a running car. Notice that they are about 10ms apart and therefore they repeat every 80ms ms.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Time         CAN ID     Data\n23.622742805 0x0cbb0001 ff 00 00 00 00 00 00 00\n23.632726855 0x0cbb0001 ff 00 00 00 00 00 00 00\n23.642685921 0x0cbb0001 ff 44 00 00 00 00 00 00\n23.652859619 0x0cbb0001 ff b3 00 00 00 00 00 00\n23.662872375 0x0cbb0001 04 b3 ff 28 00 00 00 00\n23.673586904 0x0cbb0001 03 27 00 0d 00 0d 00 00\n23.682952338 0x0cbb0001 02 87 87 00 df 35 00 00\n23.692835008 0x0cbb0001 01 56 67 06 4a 6d a9 44\n23.703545091 0x0cbb0001 ff 00 00 00 00 00 00 00\n23.712846871 0x0cbb0001 ff 00 00 00 00 00 00 00\n23.722881278 0x0cbb0001 ff 44 00 00 00 00 00 00\n23.733459089 0x0cbb0001 ff aa 00 00 00 00 00 00\n23.742902975 0x0cbb0001 04 aa ff 28 00 00 00 00\n23.752933955 0x0cbb0001 03 27 00 0d 00 0d 00 00\n23.763345214 0x0cbb0001 02 87 87 00 bf 35 00 00\n23.772954746 0x0cbb0001 01 56 63 06 4a 6e b2 44<\/pre>\n\n\n\n<p>Unfortunately we don&#8217;t know yet what the messages starting with 0xff mean, hopefully we can come back to this post and update that info later.<\/p>\n\n\n\n<p>Lets concentrate on the ones we know something about:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">23.662872375 0x0cbb0001 04 b3 ff 28 00 00 00 00 \n23.673586904 0x0cbb0001 03 27 00 0d 00 0d 00 00 \n23.682952338 0x0cbb0001 02 87 87 00 df 35 00 00 \n23.692835008 0x0cbb0001 01 56 67 06 4a 6d a9 44<\/pre>\n\n\n\n<p>We only know anything at the moment about message types 1, 2 and 4:<\/p>\n\n\n\n<p>Message Type 4:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>Byte 0<\/td><td>Byte 1<\/td><td>Byte 2<\/td><td>Byte 3<\/td><td>Byte 4<\/td><td>Byte 5<\/td><td>Byte 6<\/td><td>Byte 7<\/td><\/tr><tr><td>4<\/td><td>BAT2<\/td><td>?<\/td><td>?<\/td><td>&nbsp;<\/td><td>&nbsp;<\/td><td>&nbsp;<\/td><td>&nbsp;<\/td><\/tr><tr><td>Values<\/td><td>0xb3<\/td><td>&nbsp;<\/td><td>&nbsp;<\/td><td>&nbsp;<\/td><td>&nbsp;<\/td><td>&nbsp;<\/td><td>&nbsp;<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Message Type 2:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>Byte 0<\/td><td>Byte 1<\/td><td>Byte 2<\/td><td>Byte 3<\/td><td>Byte 4<\/td><td>Byte 5<\/td><td>Byte 6<\/td><td>Byte 7<\/td><\/tr><tr><td>2<\/td><td>&nbsp;<\/td><td>&nbsp;<\/td><td>&nbsp;<\/td><td>?<\/td><td>MAP<\/td><td>&nbsp;<\/td><td>&nbsp;<\/td><\/tr><tr><td>Values<\/td><td>&nbsp;<\/td><td>&nbsp;<\/td><td>&nbsp;<\/td><td>&nbsp;<\/td><td>0x35<\/td><td>&nbsp;<\/td><td>&nbsp;<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Message Type 1:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>Byte 0<\/td><td>Byte 1<\/td><td>Byte 2<\/td><td>Byte 3<\/td><td>Byte 4<\/td><td>Byte 5<\/td><td>Byte 6<\/td><td>Byte 7<\/td><\/tr><tr><td>1<\/td><td>CT<\/td><td>RPML<\/td><td>RPMH<\/td><td>TP<\/td><td>CEL<\/td><td>BAT<\/td><td>IAT<\/td><\/tr><tr><td>Values<\/td><td>0x56<\/td><td>0x67<\/td><td>0x06<\/td><td>0x4a<\/td><td>0x6d<\/td><td>0xa9<\/td><td>0x44<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Now feeding those values into the offset and scale table:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong>Data List<\/strong><\/td><td>&nbsp;<\/td><td>&nbsp;<\/td><td>&nbsp;<\/td><\/tr><tr><td>&nbsp;<\/td><td><strong>Data Variable<\/strong><\/td><td><strong>Units<\/strong><\/td><td><strong>Scale<\/strong><\/td><td><strong>Value<\/strong><\/td><td><strong>Result<\/strong><\/td><\/tr><tr><td>TP<\/td><td>Throttle Position<\/td><td>%<\/td><td>100\/255<\/td><td>0x4a<\/td><td>29%<\/td><\/tr><tr><td>CEL<\/td><td>Calculated Engine Load<\/td><td>%<\/td><td>100\/255<\/td><td>0x6d<\/td><td>42%<\/td><\/tr><tr><td>CT<\/td><td>Coolant Temp<\/td><td>C<\/td><td>(160\/255)-30<\/td><td>0x56<\/td><td>23.9C<\/td><\/tr><tr><td>RPM<\/td><td>Engine Speed<\/td><td>RPM<\/td><td>(256*H)+L<\/td><td>0x667<\/td><td>1639<\/td><\/tr><tr><td>IAT<\/td><td>Intake Air Temp<\/td><td>C<\/td><td>(160\/255)-30<\/td><td>0x44<\/td><td>12.67C<\/td><\/tr><tr><td>MAP<\/td><td>Manifold Pressure<\/td><td>kPA<\/td><td>120\/255<\/td><td>0x35<\/td><td>24.9kPA<\/td><\/tr><tr><td>BAT<\/td><td>Battery Volts<\/td><td>V<\/td><td>(16\/255)+2.5<\/td><td>0xa9<\/td><td>13.1V<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>This compares well with the data taken in the same packet capture and requested by Easimap using the&nbsp;MBE ISOTP protocol:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">RT_BAROFUELCOMP=3.5294 ( Barometric Pressure Fuel Compensation )\nRT_CRANKCOUNT=1.414e+04 - ( Crank Count )\nRT_ENGINERUNTIME=3.9094e+04 Hours ( ERT )\nRT_THROTTLEANGLE1(RAW)=1.4583 V ( Throttle Angle 1 (Raw) )\nRT_AIRTEMP1(LIM)=13.07 ( Air Temp )\nRT_COOLANTTEMP1(LIM)=23.914 ( Coolant Temp )\nRT_COOLANTFUELFACTOR=21.828 ( Coolant Fuel Factor )\nRT_AIRTEMPFUELFACTOR=4.3351 ( Air Temp Fuel Factor )\nRT_THROTTLEANGLEINCREASING=1.4583 V ( Throttle Angle Increasing )\nRT_TPSFUEL+TRIMBANK1=3.8709 ms ( TPS Fuel + Trim )\nRT_TPSVSSPEEDIGN+TRIM1=16.513 ( TPS vs Speed Ign + Trim )\nRT_THROTTLESITE1=6.8392 Site ( Throttle Site 1 )\nRT_BAROSCALEDLIM=1.04 Bar ( Baro Pressure )\nRT_ENGINESPEED=1639.0 RPM ( Engine Speed )\nRT_BATTERYVOLTAGE(LIM)=13.281 V ( Battery Voltage )\nRT_BATTERYVOLTAGECOMP=0.31295 ms ( Battery Voltage Comp )\nRT_MAPPINGPOT1LIM=0.0015259 ( Mapping Pot 1 )\nRT_MAPPINGPOT2LIM=0.0015259 ( Mapping Pot 2 )<\/pre>\n\n\n\n<p>Battery, RPM and the temperature readings match up well. But I&#8217;m not so sure about the barometric pressure readings, that&#8217;ll take a bit more investigation.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Documents the MBE-Broadcast protocol, where the Caterham ECU continuously emits CAN bus frames containing diagnostic data once the ignition is on.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":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":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[51,20],"tags":[58,66,34,60],"class_list":["post-5119","post","type-post","status-publish","format-standard","hentry","category-caterham-blog","category-ecu-diagnostics","tag-can-bus","tag-caterham","tag-ecu-diagnostics","tag-mbe"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p8yl38-1kz","jetpack-related-posts":[{"id":5112,"url":"https:\/\/purplemeanie.co.uk\/index.php\/2019\/09\/20\/ecu-diagnostics-part-13-three-diagnostic-protocols-in-the-mbe-9a4-ecu\/","url_meta":{"origin":5119,"position":0},"title":"ECU Diagnostics &#8211; part 13 : Three Diagnostic Protocols in the MBE 9A4 ECU","author":"John Martin","date":"September 20, 2019","format":false,"excerpt":"Introduces the three diagnostic protocols found on the Caterham MBE 9A4 ECU: MBE-Broadcast, OBD-II, and the MBE ISO-TP protocol used by Easimap.","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":[]},{"id":4726,"url":"https:\/\/purplemeanie.co.uk\/index.php\/2019\/08\/31\/ecu-diagnostics-part-1-introduction\/","url_meta":{"origin":5119,"position":1},"title":"ECU Diagnostics &#8211; part 1 : Introduction","author":"John Martin","date":"August 31, 2019","format":false,"excerpt":"Introduction and index for the Caterham ECU diagnostics series, covering MBE ECU traffic, CAN bus, OBD-II, ISO-TP, test setup, protocol decoding, and supporting Python and Wireshark tooling.","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":[]},{"id":5086,"url":"https:\/\/purplemeanie.co.uk\/index.php\/2019\/09\/16\/ecu-diagnostics-part-12-osi-7-layers-for-caterham-diagnostics\/","url_meta":{"origin":5119,"position":2},"title":"ECU Diagnostics &#8211; part 12 : OSI 7 Layers for Caterham Diagnostics","author":"John Martin","date":"September 16, 2019","format":false,"excerpt":"Maps the Caterham diagnostics stack onto the OSI model, from CAN bus hardware through MBE ISO-TP layers up to Python tooling and applications.","rel":"","context":"In &quot;ECU Diagnostics&quot;","block_context":{"text":"ECU Diagnostics","link":"https:\/\/purplemeanie.co.uk\/index.php\/category\/caterham-blog\/ecu-diagnostics\/"},"img":{"alt_text":"Layered diagram mapping the MBE ECU protocol stack to OSI layers and CAN bus.","src":"https:\/\/i0.wp.com\/purplemeanie.co.uk\/wp-content\/uploads\/2019\/09\/ECU-OSI-Layers.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/purplemeanie.co.uk\/wp-content\/uploads\/2019\/09\/ECU-OSI-Layers.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/purplemeanie.co.uk\/wp-content\/uploads\/2019\/09\/ECU-OSI-Layers.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/purplemeanie.co.uk\/wp-content\/uploads\/2019\/09\/ECU-OSI-Layers.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/purplemeanie.co.uk\/wp-content\/uploads\/2019\/09\/ECU-OSI-Layers.png?resize=1050%2C600&ssl=1 3x"},"classes":[]},{"id":5134,"url":"https:\/\/purplemeanie.co.uk\/index.php\/2019\/09\/20\/ecu-diagnostics-part-13-2-obd-ii\/","url_meta":{"origin":5119,"position":3},"title":"ECU Diagnostics &#8211; part 13.2 : OBD-II","author":"John Martin","date":"September 20, 2019","format":false,"excerpt":"Summarises what standard OBD-II services and PID data the Caterham MBE 9A4 ECU supports and how that data appears on the CAN bus.","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":[]},{"id":4765,"url":"https:\/\/purplemeanie.co.uk\/index.php\/2019\/08\/31\/ecu-diagnostics-part-2-ecu-obd-and-can\/","url_meta":{"origin":5119,"position":4},"title":"ECU Diagnostics \u2013 part 2 : ECU, OBD and CAN","author":"John Martin","date":"August 31, 2019","format":false,"excerpt":"Explains the Caterham MBE 9A4 ECU, how it exposes diagnostic data, and how OBD and CAN bus concepts fit into the ECU diagnostics project.","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":"MBE 9A4 ECU module label on a purple background.","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":5192,"url":"https:\/\/purplemeanie.co.uk\/index.php\/2019\/09\/20\/ecu-diagnostics-part-14-software-framework-mbe-py\/","url_meta":{"origin":5119,"position":5},"title":"ECU Diagnostics &#8211; part 14 : Software Framework mbe.py","author":"John Martin","date":"September 20, 2019","format":false,"excerpt":"Introduces the Python mbe.py framework for sending requests to the Caterham MBE 9A4 ECU and formatting diagnostic responses into readable values.","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\/5119","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=5119"}],"version-history":[{"count":3,"href":"https:\/\/purplemeanie.co.uk\/index.php\/wp-json\/wp\/v2\/posts\/5119\/revisions"}],"predecessor-version":[{"id":11527,"href":"https:\/\/purplemeanie.co.uk\/index.php\/wp-json\/wp\/v2\/posts\/5119\/revisions\/11527"}],"wp:attachment":[{"href":"https:\/\/purplemeanie.co.uk\/index.php\/wp-json\/wp\/v2\/media?parent=5119"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/purplemeanie.co.uk\/index.php\/wp-json\/wp\/v2\/categories?post=5119"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/purplemeanie.co.uk\/index.php\/wp-json\/wp\/v2\/tags?post=5119"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}