Syvecs / RealDash How to Write the XML

I just bought a Khadas but this time I’m having problems purchasing gauges etc.
“Oh something went wrong” shi**y

When will you release 1.7.7 stable on microsoft?

Hopefully during next two days.

1.7.7 works great! Thanks for the update!

https://youtu.be/EjKAwjqmG6Q

If you have follow the links above there is the instructions how to do it.
I’m running x86 based mini itx computer + lcd board + seed usbcan
The app is pretty fast very well coded actually!
Response is better than the video as video recorder has some noise cancellation making latency between audio and video.

The dashboard I’m using is “Data Engineers dream”
For the ones looking to get datas I have collected 40 or 50 datas from Syvecs.
Here is the XML code

<?xml version="1.0" encoding="utf-8"?>
<!-- RealDash CAN XML description file, version 2 Requires RealDash version 1.5.8 or newer -->
<RealDashCAN version="2">
  <frames>
    <!-- PARAMETERS FOR 'frame' -->
    <!-- 'id' can identifier (= baseId + id). Use 0x prefix to enter id as hexadesimal value. For example <frame id="3200"> is equal to <frame id="0x0c80">. The first twenty frames for Syvecs Ecu's is typicall 600 to 613, however this needs to be checked as it is customisable in your SCal.-->
    <!-- 'writeInterval' [optional] this CAN frame is written to CAN bus in this interval (milliseconds) -->
    <!-- 'endianess' [optional] the endianess of all frame values (big | little [default]). Syvecs is all "big". -->
    <!-- 'signed' [optional, from 1.7.4] set to true to force RealDash to handle all values in frame as signed values. Default in this template set to signed.-->
    <!-- PARAMETERS FOR 'value' -->
    <!-- 'targetId' links value to RealDash input, see RealDash manuals www for a complete list -->
    <!-- OR -->
    <!-- 'name' links value to RealDash input, input appears in 'ECU Specific' input category -->
    <!-- 'units' [optional] is used for post calculations, "F", "mph", "psi", "bit" which need to be specified for dashboard conversions to work properly -->
    <!-- 'offset' byte offset of the value in frame -->
    <!-- 'length' value length in bytes -->
    <!-- 'startbit' [optional] the index of the first bit of the value -->
    <!-- 'bitcount' [optional] number of bits used by the value -->
    <!-- 'endianess' [optional] the endianess of value (big | little [default]).  -->
    <!-- 'signed' [optional, from 1.7.4] set to true to force RealDash to handle this value as signed.  -->
    <!-- 'rangeMin' and 'rangeMax' [optional] if 'name' is used instead of 'targetId', this is the recommended value range in RealDash editor -->
    <!-- 'initialValue' [optional] if this parameter is present, value is written to CAN after connection has been made to the CAN bus -->
    <!-- 'conversion' [optional] if omitted, value is read 'as-is'.

           Otherwise variables 'B0', 'B1', 'B2', 'B3', 'V' and 'ID#' can be used within conversion formula, for example;

           conversion="V/10" - result is incoming value / 10

           conversion="B0+15*(B1-43)" - result is 'first byte + 15 * (second byte - 43)

           conversion="V+ID200-74.3" - result is incoming value + 'Body Electronics->Gear' - 74.3 -->
    <!-- From RealDash version 1.6.6, 'conversionABC' is an option to 'conversion' and uses A,B,C,...AA,AB,AC,...,etc format to distinquish the individual bytes on the reply.

           This makes it easier to convert the Equation from other apps.

           Example: conversion="B0+15*(B1-43)" and conversionABC="A+15*(B-43)" produce the same result -->
    <frame id="0x600" endianess="big">
      <value targetId="38" units="deg" offset="0" length="2" conversion="V/32" signed="true"></value>
      <!-- ignFinalPri1 -->
      <value name="ignBase1" units="deg" offset="2" length="2" conversion="V/32" signed="true"></value>
      <!-- ignBase1 -->
      <value name="cllTarg1" units="Lambda" offset="4" length="2" conversion="V/1000" signed="true"></value>
      <!-- cllTarg1 -->
      <value name="cllError1" offset="6" length="2" conversion="V/1000" signed="true"></value>
      <!-- cllError1 -->
    </frame>
    <frame id="0x601" endianess="big">
      <value targetId="37" units="RPM" offset="0" length="2" signed="true"></value>
      <!-- RPM -->
      <value targetId="0" units="AFR" offset="2" length="2" signed="true" conversion="V/1000*14.7"></value>
      <!--Lam1 value converted to AFR based on 14.7 stoich.-->
      <value name="latG" units="G" offset="4" length="2" conversion="V/1000" signed="true"></value>
      <!-- latG -->
      <value name="calSelect" offset="6" length="2" enum="0:CAL1,1:CAL2,2:CAL3,3:CAL4,4:CAL5,5:CAL6,6:CAL7,7:CAL8,8:CAL9,9:CAL10,10:CAL11,11:CAL12" signed="true"></value>
	  <!-- calSelect -->
    </frame>
    <frame id="0x602" endianess="big">
      <value targetId="42" units="%" offset="0" length="2" conversion="V/81.92" signed="true"></value>
      <!--tps1-->
      <value targetId="12" units="Volts" offset="2" length="2" signed="true" conversion="V/1000"></value>
      <!--vbat-->
      <value name="bap" units="mbar" offset="4" length="2" conversion="V/1" signed="true"></value> 
	  <!-- Baro -->
      <value targetId="64" units="kph" offset="6" length="2" conversion="V*.036" signed="true"></value>
      <!--vehicleSpeed-->
    </frame>
    <frame id="0x603" endianess="big">
      <value targetId="152" units="Celcius" offset="0" length="2" conversion="V/10" signed="true"></value> 
	  <!-- eot -->
      <value targetId="27" units="Celcius" offset="2" length="2" conversion="V/10" signed="true"></value> 
	  <!-- act1 -->
      <value targetId="14" units="Celsius" offset="4" length="2" signed="true" conversion="V/10"></value>
      <!--ect1-->
      <value targetId="109" offset="6" length="2" conversion="V/10" signed="true"></value> 
	  <!-- egt1 -->
    </frame>
    <frame id="0x604" endianess="big">
      <value targetId="151" offset="0" length="2" conversion="V/1000" signed="true"></value>
	  <!-- eop1 -->
      <value targetId="64" units="bar" offset="2" length="2" signed="true" conversion="V/1000"></value>
      <!--map1 (converts mbar to kPa)-->
      <value targetId="202" offset="4" length="2" conversion="V/1000" signed="true"></value> 
	  <!-- fp1 (converted to bar) -->
      <value targetId="20" units="%" offset="6" length="2" conversion="V/10" signed="true"></value>
	  <!-- fuelComp -->
    </frame>
    <frame id="0x605" endianess="big">
      <value targetId="200" offset="0" length="2" enum="0:UNKNOWN,1:REVERSE,2:NEUTRAL,3:FIRST,4:SECOND,5:THIRD,6:FOURTH,7:FIFTH,8:SIXTH,9:SEVENTH,10:EIGHT" signed="true"></value> 
	  <!-- gear -->
      <value targetId="153" offset="2" units="onff" length="2" enum="0:OFF,1:ON,2:RUNON,3:DISABLED"></value> 
	  <!-- fan1 -->
      <value name="wgFinalDuty1" offset="4" units="%" length="2" conversion="V/81.92" signed="true"></value> 
	  <!-- wgFinalDuty1 -->
      <value name="mapMax" units="kPa" offset="6" length="2" signed="true" conversion="V/10"></value>
      <!--mapMax-->
    </frame>
    <frame id="0x606" endianess="big">
      <value targetId="placeholder" offset="0" length="2" units="placeholder" conversion="placeholder" signed="true"></value>
      <value targetId="placeholder" offset="2" length="2" units="placeholder" conversion="placeholder" signed="true"></value>
      <value name="limpMode" offset="0" length="2" enum="0:OFF,1:LIMPSWON,2:ECT COLD,3:EOT COLD,4:SENSOR WARNING LEVEL,5:AUTO TRANS,6:EOP TRIP,7:CCP TRIP,8:KNOCK SHUTDOWN,9:EOT TRIP,10:ECT TRIP,11:FP TRIP,12:PREIGN SHUTDOWN,13:TIME ON LOAD LIMIT,14:TRQ LIM TRIP,15:VVT FAIL,16:VBAT TRIP,17:LEAN TRIP,18:ACT TRIP,19:ECP TRIP" signed="true"></value>
	  <!--limpMode-->
      <value name="wgMapMax1" units="kPa" offset="6" length="2" signed="true" conversion="V/10"></value>
      <!--wgMapMax1-->
    </frame>
    <frame id="0x607" endianess="big">
      <value targetId="placeholder" offset="0" length="2" units="placeholder" conversion="placeholder" signed="true"></value>
      <value targetId="placeholder" offset="2" length="2" units="placeholder" conversion="placeholder" signed="true"></value>
      <value targetId="placeholder" offset="4" length="2" units="placeholder" conversion="placeholder" signed="true"></value>
      <value targetId="placeholder" offset="6" length="2" units="placeholder" conversion="placeholder" signed="true"></value>
    </frame>
    <frame id="0x608" endianess="big">
      <value name="cyl01Knock" offset="0" units="%" length="2" conversion="V/40.96" signed="true"></value>
	  <!--cyl01Knock-->
      <value name="cyl02Knock" offset="2" units="%" length="2" conversion="V/40.96" signed="true"></value>
	  <!--cyl02Knock-->
      <value name="cyl03Knock" offset="4" units="%" length="2" conversion="V/40.96" signed="true"></value>
	  <!--cyl03Knock-->
      <value name="cyl04Knock" offset="6" units="%" length="2" conversion="V/40.96" signed="true"></value>
	  <!--cyl04Knock-->
    </frame>
    <frame id="0x609" endianess="big">
      <value name="cyl01KnockIgnRtd" offset="0" units="deg" length="2" conversion="V/32" signed="true"></value>
	  <!--cyl01KnockIgnRtd-->
      <value name="cyl02KnockIgnRtd" offset="2" units="deg" length="2" conversion="V/32" signed="true"></value>
	  <!--cyl02KnockIgnRtd-->
      <value name="cyl03KnockIgnRtd" offset="4" units="deg" length="2" conversion="V/32" signed="true"></value>
	  <!--cyl03KnockIgnRtd-->
      <value name="cyl04KnockIgnRtd" offset="6" units="deg" length="2" conversion="V/32" signed="true"></value>
	  <!--cyl04KnockIgnRtd-->
    </frame>
    <frame id="0x60A" endianess="big">
      <value name="fuelFinalPri1" offset="0" units="ms" length="2" conversion="V/1000"></value>
	  <!--fuelFinalPri1-->
      <value name="fuelDutyPri1" offset="2" units="%" length="2" conversion="V/40.96" signed="true"></value>
	  <!--fuelDutyPri1-->
      <value targetId="43" offset="4" length="2" conversion="V/4096" signed="true"></value>
      <!--fuelMltCll1-->
      <value name="fuelBase1" offset="6" units="ms" length="2" conversion="V/1000"></value>
	  <!--fuelBase1-->
    </frame>
    <frame id="0x60B" endianess="big">
      <value name="vvtIn1" offset="0" units="deg" length="2" conversion="V/32" signed="true"></value>
      <!-- vvt1In -->
      <value name="vvtIn2" offset="2" units="deg" length="2" conversion="V/32" signed="true"></value>
      <!-- vvt2In -->
      <value name="dpcMode" offset="4" length="2" enum="0:OFF,1:ACTIVE,2:BRAKING,3:LEFTFOOTBRAKING,4:HANDBRAKE"></value>
      <!-- dpcMode -->
      <value name="dpcDuty" offset="6" length="2" units="%" conversion="V/81.92" signed="true"></value>
      <!-- dpcDuty -->
    </frame>
    <frame id="0x60C" endianess="big">
      <value name="launchState" offset="0" units="onff" length="2"></value> 
	  <!-- launchState -->
      <value name="launchSwitch" offset="2" units="onff" length="2" enum="0:OFF,1:ON"></value> 
	  <!-- launchSwitch -->
      <value name="altState" offset="4" units="onff" length="2"></value> 
	  <!-- altState -->
      <value name="alsSwitch" offset="6" units="onff" length="2" enum="0:OFF,1:ON"></value> 
	  <!-- alsSwitch -->
    </frame>
    <frame id="0x60D" endianess="big">
      <value name="calSwitch" offset="0" units="onff" length="2"></value> 
	  <!-- calSwitch -->
      <value name="runMode" offset="2" length="2" enum="0:INITIAL,1:PREINJECT,2:STOP,3:CRANK,4:RUN"></value> 
	  <!-- runMode -->
      <value targetId="65" offset="4" length="2" enum="0:OFF,1:ON"></value> 
	  <!-- knockWarnLight -->
      <value name="syncFault" offset="6" units="onff" length="2" enum="0:NONE,1:LONGTOOTHGAP,2:SHORTTOOTHGAP,3:TIMEROVERFLOW,4:CAMERROR,5:UNKNOWN"></value> 
	  <!-- syncFault -->
    </frame>
    <frame id="0x60E" endianess="big">
      <value targetId="placeholder" offset="0" length="2" units="placeholder" conversion="placeholder" signed="true"></value>
      <value targetId="placeholder" offset="2" length="2" units="placeholder" conversion="placeholder" signed="true"></value>
      <value targetId="placeholder" offset="4" length="2" units="placeholder" conversion="placeholder" signed="true"></value>
      <value targetId="placeholder" offset="6" length="2" units="placeholder" conversion="placeholder" signed="true"></value>
    </frame>
    <frame id="0x60F" endianess="big">
      <value targetId="placeholder" offset="0" length="2" units="placeholder" conversion="placeholder" signed="true"></value>
      <value targetId="placeholder" offset="2" length="2" units="placeholder" conversion="placeholder" signed="true"></value>
      <value targetId="placeholder" offset="4" length="2" units="placeholder" conversion="placeholder" signed="true"></value>
      <value targetId="placeholder" offset="6" length="2" units="placeholder" conversion="placeholder" signed="true"></value>
    </frame>
    <frame id="0x610" endianess="big">
      <value targetId="placeholder" offset="0" length="2" units="placeholder" conversion="placeholder" signed="true"></value>
      <value targetId="placeholder" offset="2" length="2" units="placeholder" conversion="placeholder" signed="true"></value>
      <value targetId="placeholder" offset="4" length="2" units="placeholder" conversion="placeholder" signed="true"></value>
      <value targetId="placeholder" offset="6" length="2" units="placeholder" conversion="placeholder" signed="true"></value>
    </frame>
    <frame id="0x611" endianess="big">
      <value targetId="placeholder" offset="0" length="2" units="placeholder" conversion="placeholder" signed="true"></value>
      <value targetId="placeholder" offset="2" length="2" units="placeholder" conversion="placeholder" signed="true"></value>
      <value targetId="placeholder" offset="4" length="2" units="placeholder" conversion="placeholder" signed="true"></value>
      <value targetId="placeholder" offset="6" length="2" units="placeholder" conversion="placeholder" signed="true"></value>
    </frame>
    <frame id="0x612" endianess="big">
      <value targetId="placeholder" offset="0" length="2" units="placeholder" conversion="placeholder" signed="true"></value>
      <value targetId="placeholder" offset="2" length="2" units="placeholder" conversion="placeholder" signed="true"></value>
      <value targetId="placeholder" offset="4" length="2" units="placeholder" conversion="placeholder" signed="true"></value>
      <value targetId="placeholder" offset="6" length="2" units="placeholder" conversion="placeholder" signed="true"></value>
    </frame>
    <frame id="0x613" endianess="big">
      <value targetId="placeholder" offset="0" length="2" units="placeholder" conversion="placeholder" signed="true"></value>
      <value targetId="placeholder" offset="2" length="2" units="placeholder" conversion="placeholder" signed="true"></value>
      <value targetId="placeholder" offset="4" length="2" units="placeholder" conversion="placeholder" signed="true"></value>
      <value targetId="placeholder" offset="6" length="2" units="placeholder" conversion="placeholder" signed="true"></value>
    </frame>
  </frames>
</RealDashCAN>

Here is the Syvecs setup

If anyone also interested with my modified dashboard I can sent *.RD design file but you may have some problems with aspect ratio etc…

** Only SPEED data is not working on me. Not sure why. I will try value name=“” next time because I’ve tried vss1,vss2, vehiclespeed target id’s with no success

Have you checked that ‘Settings->Units & Values’ has speed source set to Vehicle VSS? With that setting the VSS1 input should be mapped to vehicle speed.

Could this thread be moved to a Syvecs folder on the forum landing page so it’s easier for new users to find?

Created new Syvecs specific discussion and moved the topic.

hi !

Do you think Syvecs can accept the inputs through Realdash?
While I was reading Syvecs X4 canbus expander unit’s manual, I found Xcan protocol for custom projects section.
http://www.syvecs.com/downloads/Syvecs_X4.pdf

Just wondering if we could activate ALS or Launch control on/off through Realdash?

regards

Should work ‘out of the box’. Any value that is specified in XML and is changed by RealDash actions is written back to CAN bus.

Hi mate. Hope you re fine!

I couldn’t find examples on the website(XMLs).
Can you show an example sending data so I could try.

I will try AC switch from realdash.

There is no need to set anything to XML. If you have specified a value there, just set that value with a button and action and it will be written to CAN bus.