Any possibility of Real Dash support?

rac
Posts: 45
Joined: Tue Aug 14, 2018 6:06 am

Re: Any possibility of Real Dash support?

Post by rac »

I got some test coding done for another user and we tested it out to work well.

It doesn't require any support from Syvecs as such, but you need some general understanding of how to work your way around the datastream tables within SCal to understand what it is you are trying to achieve.

The Real Dash developer helped me understand their XML file format and so I've written a "how to" post with example and blank syvecs XML files that need to be loaded to RealDash so that it understands what it is receiving. The blank template obviously requires a bit of patience in filling out if your wanting to transfer a lot of parameters. But if you only want 1/2 dozen or so its pretty painless. Unfortunately I did not make a default XML because syvecs has multiple "default" CAN data streams and its quite time consuming to fill them all out. I hope I made enough sense in the link below that most can follow....

Information here:

http://www.realdash.net/forum/viewtopic ... 993a#p2966

Have fun! ;)
secure
Posts: 254
Joined: Tue Apr 21, 2009 7:38 am

Re: Any possibility of Real Dash support?

Post by secure »

Thanks!
4 days lock down! I will try it.
secure
Posts: 254
Joined: Tue Apr 21, 2009 7:38 am

Re: Any possibility of Real Dash support?

Post by secure »

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

Code: Select all

<?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

Image

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. I'll fix it.
matt-c
Posts: 28
Joined: Wed Jul 06, 2016 3:54 pm

Re: Any possibility of Real Dash support?

Post by matt-c »

I'd forgotten about this.

Going to pick it up again, thanks for the xml.

Do you have any info on your mini itx computer?

I am looking to use an Intel compute stick, it's fine, but power is an issue (remembering to shut it down each time is annoying).
matt-c
Posts: 28
Joined: Wed Jul 06, 2016 3:54 pm

Re: Any possibility of Real Dash support?

Post by matt-c »

Got this working on PX5 based Android head unit, works very well.

Looking forward to the development restarting in August.
secure
Posts: 254
Joined: Tue Apr 21, 2009 7:38 am

Re: Any possibility of Real Dash support?

Post by secure »

matt-c wrote: Sun Mar 28, 2021 1:04 pm I'd forgotten about this.

Going to pick it up again, thanks for the xml.

Do you have any info on your mini itx computer?

I am looking to use an Intel compute stick, it's fine, but power is an issue (remembering to shut it down each time is annoying).
I am using Asrock j3355b itx /8GBram/250gb ssd with. Powering up with Intelligent DC to DC psu and it takes 20 seconds cold boot time.
If you don't care about powering off your compute stick manually you can use it. Alternatively you can check Chuwi Larkbox, Intel Nuc or LattePanda series.

Do you have S6? I'm wondering if we could activate ALS or Launch control via canbus<-realdash? All my AR inputs full and I want to add a clutch sw. :?
TimH
JT Innovations
Posts: 718
Joined: Wed Sep 01, 2010 3:51 pm

Re: Any possibility of Real Dash support?

Post by TimH »

secure wrote: Wed Sep 22, 2021 2:50 amDo you have S6? I'm wondering if we could activate ALS or Launch control via canbus<-realdash? All my AR inputs full and I want to add a clutch sw. :?
On an S6 you can use the Syvecs extensions to the Bosch M4 protocol as follows:

0x777

Byte0 – Oil Pressure
Byte1 – Oil Pressure (MSB)
Byte2 - Bit(3..0) (0=U 1=R 2=N 3=1 4=2 .. – Gear Position

Byte4 –
Bit2 – Cruise Control Switch
Byte5 –
Bit0 – Blip request.
Bit1 – GearCut request
Bit2 – A/C request
Bit3 – ALS Request
Bit4 – Limp Switch
Bit5 – Cal Up Flag
Bit6 – Cal Down Flag
Bit7 – Cal Override Sw

Byte6 – Torque Limit
Byte7 – Torque Limit (MSB)

0x778

Byte0 – Target Engine Speed
Byte1 – Target Engine Speed (MSB)
Byte2 – Trans Oil Temp
Byte3 – Trans Oil Temp (MSB)
Byte4 – Trans Oil Pressure
Byte5 – Trans Oil Pressure (MSB)
Byte6 – Brake Pressure 2 (In also been picked up on S8 in Identifer 0x5C0)
Byte7 - Brake Pressure 2 (In also been picked up on S8 in Identifer 0x5C0) (MSB)


No way to send Launch on/off unfortunately.

These are all deprecated in favour of Generic RX in the S7 (and S8 and S12 of course).
secure
Posts: 254
Joined: Tue Apr 21, 2009 7:38 am

Re: Any possibility of Real Dash support?

Post by secure »

TimH wrote: Wed Sep 22, 2021 10:42 am
secure wrote: Wed Sep 22, 2021 2:50 amDo you have S6? I'm wondering if we could activate ALS or Launch control via canbus<-realdash? All my AR inputs full and I want to add a clutch sw. :?
On an S6 you can use the Syvecs extensions to the Bosch M4 protocol as follows:

0x777

Byte0 – Oil Pressure
Byte1 – Oil Pressure (MSB)
Byte2 - Bit(3..0) (0=U 1=R 2=N 3=1 4=2 .. – Gear Position

Byte4 –
Bit2 – Cruise Control Switch
Byte5 –
Bit0 – Blip request.
Bit1 – GearCut request
Bit2 – A/C request
Bit3 – ALS Request
Bit4 – Limp Switch
Bit5 – Cal Up Flag
Bit6 – Cal Down Flag
Bit7 – Cal Override Sw

Byte6 – Torque Limit
Byte7 – Torque Limit (MSB)

0x778

Byte0 – Target Engine Speed
Byte1 – Target Engine Speed (MSB)
Byte2 – Trans Oil Temp
Byte3 – Trans Oil Temp (MSB)
Byte4 – Trans Oil Pressure
Byte5 – Trans Oil Pressure (MSB)
Byte6 – Brake Pressure 2 (In also been picked up on S8 in Identifer 0x5C0)
Byte7 - Brake Pressure 2 (In also been picked up on S8 in Identifer 0x5C0) (MSB)


No way to send Launch on/off unfortunately.

These are all deprecated in favour of Generic RX in the S7 (and S8 and S12 of course).
Thanks Tim. All my inputs are assigned. Best bet would be to try AC switch.
TimH
JT Innovations
Posts: 718
Joined: Wed Sep 01, 2010 3:51 pm

Re: Any possibility of Real Dash support?

Post by TimH »

secure wrote: Tue Sep 28, 2021 2:10 am
TimH wrote: Wed Sep 22, 2021 10:42 am
secure wrote: Wed Sep 22, 2021 2:50 amDo you have S6? I'm wondering if we could activate ALS or Launch control via canbus<-realdash? All my AR inputs full and I want to add a clutch sw. :?
On an S6 you can use the Syvecs extensions to the Bosch M4 protocol as follows...
Thanks Tim. All my inputs are assigned. Best bet would be to try AC switch.
You can send ALS request, for example, via CAN from the real dash and also cal up/down messages and free up 2 inputs. Or get a cheap input-to-CAN converter: I'm sure someone has mentioned one that's only £100 or so?
secure
Posts: 254
Joined: Tue Apr 21, 2009 7:38 am

Re: Any possibility of Real Dash support?

Post by secure »

I think this was the board mentioned.

https://ecumasterusa.com/collections/po ... 8139170877

CalSW is a must for me =) It has valet and thief modes and connected to a hidden switch. If hidden sw is off, syvecs retards ignition -45.
Post Reply