Native Support for Speeduino

Hi Guys,

Great job with the app. I can see that this is already being discussed on various forums, but it would be way easier if Speeduino XML and .ini could just be included natively in your app like Megasquirt.

Are there any plans coming up for this?

Also, is the best plan at the moment just to use Speeduino on “Serial 3”, then select “Megasquirt” from the Realdash dropdown menus and to use the Speeduino.ini file?

Thanks and hopefully get a reply from you soon.

Currently only way to use Speeduino is via Megasquirt connection. Although I see no reason why we couldn’t add it to the connections list as separate entry. I will investigate this.

Thanks very much or the reply…

I have forked to Speeduino Github Repo and I’m busy changing the “comms.ino” and “comms.h” files to accept a new command (“Y”)… and Speeduino then outputs RealDashCAN data as per your Github example… I am done with the mods, but just need to test it using my Speeduino before I do the Pull Request to Noisymime…

I am currently also busy editing your example XML file from your Arduino Example on your Github… I have done all the framing and addressing… But I’m a little confused as to how to get RealDash to send the required “Y” command to Speeduino… I need Realdash to wait for a couple seconds to make sure that the Speeduino has power and is ready to accept “Y”… can you maybe just help by editing the front section of this XML…?

<RealDashCAN version="2">
  <!-- baseId [optional] is added to each frame canId. -->
  <!-- frames baseId="3200" -->
	<!-- Command "Y" has been added to the Speeduino Source Code, to output data in RealDashCAN format... -->
		<command send="Y"></command>

<frame id="3200">
      <!-- 1st CAN frame -->
      <value targetId="93" name="Counter" units="sec" offset="0" length="2" </value>
      <value targetId="94" name="Status1 Bitfield" units="bit" offset="2" length="2" </value>
      <value targetId="95" name="Engine Status Bitfield" units="bit" offset="4" length="2" </value>
      <value targetId="96" name="Sync Loss Counter" units="cnt" offset="6" length="2" </value>
 <frame id="3201">
      <!-- 2nd CAN frame -->
      <value targetId="37" name="Arduino Example: Digital 1" units="RPM" offset="0" length="2"></value>
      <value targetId="31" name="Arduino Example: Digital 1" units="kPA" offset="2" length="2" </value>
      <value targetId="14" name="Arduino Example: Digital 1" units="C" offset="4" length="2" </value>
      <value targetId="42" name="Arduino Example: Digital 1" units="%" offset="6" length="2" </value>

If you can give me some pointers on how to delay by a couple seconds, then to send “Y”, before receiving the CAN frames from the Speeduino, it would be a great help and I can get the XML tested and fully commented, scaled/converted, etc.


The RealDash CAN XML has no means to affect the transport of the data, it just specifies the CAN frame data so RD can interpret it correctly on receive.

I can make an unique parser for the Speeduino which handles the connection initiation with the delay. BUT, is this a best way to implement the support? Should RealDash implement a existing Speeduino protocol?


I hear you… valid point. The only other possibility then is to set up the Speeduino Comms to just start transferring RealDash CAN packets on power-up…

You think I should rather refer this to Speeduino to perhaps add a board jumper to select this, or even just to use a Speeduino GPIO pin to trigger RealDashCAN data…?

Edit: Thinking about it now… it would be easier to Trigger RealDash comms from Speeduino hardware… that way, if the Speeduino protocol ever changes, it doesn’t need to be updated on RealDash too…

Thanks for the help/advice either way…