MaxxECU Race & RPi

Hi,

I currently have a MaxxECU Race working via Bluetooth to a Rpi4 running lineageOS (Android 13). it works a treat and I really like the Realdash app. kudos to the developers it does the job perfectly.

I want to transition from Bluetooth to using CAN from the ECU. what is the best way of doing this? I have one of these…

https://www.amazon.co.uk/Analyzer-CAN-Bus-Intelligent-Converter-Adapter/dp/B07FY6T2WK/ref=sr_1_3?dib=eyJ2IjoiMSJ9.SNaGwzH50Frg9VuLtzzlOnLMBFndnfmTyXxCmJLdHu_XWSNIEx0RDcJFUi5gc4iTD8BwDogJbbl98_wgNj8nSI5HaTJVpZmLyUleHRTwDbmgoA4WuR0EuFgnp5pfLDXuzjj6JkFdaG1bLw9rsXh9i-1ovJSz19MxKw2cLUYCuPHHZMZKD8GRk0gRFfy-Ly3Rz9u_3TQbWWyBKdTe_07U53kdPNlT1akknE7ABqjAdY0dNSdnt-hcEOkMKKCLryc-q71dJe0qytg5s_N7gUGafMIE88k4FfNtt6b9E4Uw4Wo.EGKrCpZw_9DkqDBp4aGxsxJIBPJ73dzNtfxvGlEj1Mg&dib_tag=se&keywords=can+analyser&qid=1711574831&sr=8-3

and I hooked it up previously with not much luck (admittedly I wasn’t as used to Realdash and Mtune as I am now. should I just be able to plug that analyser into the Pi via USB, then put CAN H and CAN L to the other end and configure Mtune ot send the correct information?

I would also like to migrate away from LineageOS too as it takes a minute to boot and I’ve noticed dietPi will allow me to run Realdash and drop the boot down to about 20 seconds? I’m a total novice when it comes to that though and not sure where to start but I’m keen on utilising the pins on the Pi to boot up and boot down as I currently have a complex series of relays to maintain power

Anyway, any help is appreciated

What kind of car are you working on? Look at Savvycan there are good videos on how to use it to sniff the can network. I have the same adapter on BMW e93 works well.

It’s on a mk1 Ford focus so there’s no CAN network on the car (aside from the one that uses fords proprietary protocol)

I don’t think it’s a problem with the CAN from the ecu though as I believe that’s configurable, what I don’t know is the best way to connect it to the raspberry pi running realdash

Yes, connect the Adapter to ECU CAN H and CAN L pins, plug the USB to device running RealDash. That adapter probably is ‘Type1’ CAN adapter, so select that in connection settings.

Also in Connection Settings, select MaxxECU Default CAN 1.3.

Then enable CAN output in MTune.

1 Like

This seems to have worked a treat, for the most part.

I have got comms between Maxx and the pi using that adaptor.

I have “can output 2” on the Maxx set to 0x7b, extended, little median, 3 values @ 200hz

Data value 1 is ”main pedal position” unsigned 16bit

Data value 2 is DIN 2 Active (brake switch) unsigned 8bit

Data value 3 is DIN 1 Active (clutch switch) unsigned 8bit.

In realdash can monitor, I have 07b at the top with 4 bytes, the first 2 react to my pushing the throttle pedal, the 3rd reacts to the brake pedal and 4th reacts to the clutch pedal.

So I assume o have done everything correctly?

The problem I have at the moment is in the dash pages there’s a throttle position pointer in the default dash that doesn’t react to the pressing of the throttle pedal. Am I missing a step? I can’t work out how the list I have in MTune correlates to the list I have in the Realdash inputs.

If you add your own custom CAN frames from MTune, you will also need to make an updated RealDash CAN XML file. You can find the documentation and default XML files here:

RealDash-extras/RealDash-CAN at master · janimm/RealDash-extras (github.com)

I only used these 3 inputs to the ECU as they were something I could quickly check without starting the engine.

Do I need to use a custom XML if all I need is coolant temp, RPM, wheelspeed, boost level and fuel level to begin with?

No need for custom for those. Here is a full list that MaxxECU sends thru CAN output:

MaxxECU Default CAN output

got this working yesterday :metal:

thanks for the help! looks like I can use the default CAN for most of what I need.
one question I have is in Realdash it only allows 4 user can channels, I assume this can be multiplied to about 10 which I think the Maxx allows by modifying the XML?

next I need to get off android and onto something that boots a little quicker!

Now that you have established a connection with MaxxECU, you can do pretty much anything you like. For example, in our DEATHFISH 2 demo car, we have configured MaxxECU to output a lot more information that comes by default in 1.3 CAN messages, like; fuel flow, all cruise control related data, etc.

We also send status of clutch pedal, brake pedal, steering wheel buttons etc to MaxxECU via CAN.

Hello, been getting along great with this recently even if i’ve managed to fluke some of it.

I have a few questions to help my understanding of this hopefully someone can help.

So ive just been using the user channels from Maxx to pass information through, and this has worked but all i did was add lines to the XML file to allow up to 12 user channels get sent. but some of those outputs were things like oil pressure and oil temp, fuel pressure etc. when i believe these can be sent outside of the user channels?

taking oil pressure as an example my understanding is Maxx sends the information on 0x536, offset 4, value kpa, is a 16 integer value so takes up 2 spaces at 0.1 scale. So to have realdash read this correctly i need to have a line in the XML that identified the frame 0x536, and then the line item can set the target ID as 151 to map this to the engine oil pressure within realdash.
what i dont understand is realdash indicates it read in BAR, but Maxx sends kpa, and i want psi, so what unit do i use? and then do i need to convert, if i do convert do i convert from kpa to psi? or kpa to bar?

once thats sorted, am i then limited to the standard can outputs of the maxx indicated in the following link, plus the 12 user channel outputs available to me?

MaxxECU Default CAN output

I dont think this is going to be a great concern and if it is its probably on the maxx side as it will need more outputs, but im curious.

Here is the default MaxxECU CAN XML for RealDash:

RealDash-extras/RealDash-CAN/XML-files/MaxxECU/maxxecu_default_can.xml at master · janimm/RealDash-extras · GitHub

You can see the frame:

<frame id="0x536">
   <value targetId="200" offset="0" length="2" signed="true"></value> <!-- gear -->
   <value name="MaxxECU: Boost solenoid duty" offset="2" length="2" conversion="V*0.1"></value>
   <value targetId="151" offset="4" length="2" signed="true" units="bar" conversion="V*0.001"></value> <!-- oil pressure -->
   <value targetId="152" offset="6" length="2" signed="true" units="C" conversion="V*0.1"></value> <!-- oil temperature -->
</frame>

It uses ‘conversion’ to multiply oil pressure with 0.001 essentially converting kPA to bar.

So if I wanted the value as psi on my dash the line would read as follows…

<value targetId="151" offset="4" length="2" signed="true" units="psi" conversion="V*0.145"></value> <!-- oil pressure -->

?

Also what determines what lines are signed and what are unsigned?

No, you would still send value as bar to RealDash and adjust the units setting in ‘Settings->Units & Values’ to PSI.

The one that is sending the data. In this case MaxxECU.

1 Like