Syvecs / RealDash How to Write the XML

Information you will need to get out of your SCal file and where to find it;

Datastreams → CAN → Transmit Identifier:
Here you will find your Frames 1 → 20, 40 etc., depending on your ECU with Frame IDs, given as Hex Values, i.e. 600h, 601h,… 60Ah… etc.
You will not need the “h” in the .xml. Where frame “id” is required, you will need to prefix the Syvecs value with “0x”.

e.g. Frame 1, could be id = “0x600” in the .XML. The template XML I will post will have the most common frame id’s for the first 20 frames. They need to be checked against your SCal.
If you have 40 frames available then you go ahead and cut and paste…. But I doubt that 20 frames x 4 slots (80 potential parameters) isn’t enough for what you want out of realdash!

Datastreams → CAN → Transmit Content:
Here you will find both the content and information about the content (units, conversion formula, range, signed or unsigned).
The table is arranged with Frames and “Slots”. The only thing relevant with the arrangement of the table for the XML is how to derive the XML “Offset” value which corresponds to the Slots;

Slot 1, Offset = 0.
Slot 2, Offset = 2.
Slot 3, Offset = 4.
Slot 4, Offset = 6.

In the template XML, I have pre-populated the 4 slots for every frame. Delete them if not required.

When you click on the cell (frame and slot) with the data you want the top left of the Syvecs SCal screen will show important information;

e.g. Convert using y = (x/1000)+0 to engineering units in the range of 0.5 – 1.5 (Combustion Ratio, Lambda, Signed).

In this example the Parameter is “Lam1”. The important information to use from this is;

“x/1000 + 0” will become conversion = “v/1000”
Signed will be used for signed=“true” (or otherwise excluded).
Lambda will become units = “Lambda”.

If you intend on making custom gauges within real dash and use Syvecs data that is not easily transferrable to RealDash Target IDs (see RealDash Target Identifiers
Then you will need to exchange “targetId” for “name” and make name = “Syvecs Parameter Abbreviation” (e.g. name = “pps”). You can then consider adding range (see XML comments within template file).

Creating the .xml file;

I used “XML Notepad” which lays out the required information nicely and builds the file for you, but there are many options here I think.
If you start with the template I posted – all of the “placeholder” text needs to be exchanged for the correct text from your SCal (Syvecs file) and TargetID table (realdash website).
If you do not need a frame, delete it.

Here is the Lambda example continued;

  • All frames will be “big” endianness.
  • All lengths will be “2”.
  • Id, value signed, offset, units and conversion are as per earlier description and are derived from your SCal file.
  • targetId will the value from the corresponding table

If Syvecs is sending data that measures the same aspect of a TargetID you want to use but with different units, you can adjust the conversion formula to transpose the data to the required units as used by the TargetID.

e.g. if you are sending lambda but wanted to display AFR with a base stoich of 14.7 in the real dash display, then the above example could be modified to;

  • units changed to “AFR”
  • targetId changed to “0” from online realdash table.
  • conversion changed with the “*14.7” as Lambda stoich = 1, now will be displayed as 14.7.

Additionally, RealDash can use the same frame data for both AFR and Lambda, in this case you could do this;

Realdash may also use its TargetIDs to calculate other parameters – in this case the calculated parameter will only be correct if the correct units are sent. This may be another reason to adjust the conversion formula, for instance Syvecs may send pressure in mbar and realdash requires it in kPa.

Note – to get the most out of your CAN data, its likely you will want to modify the “Datastreams → CAN → Transmit Content” section within your SCal.
Simply find a SPARE, or parameter that you do not need with a sending frequency that suits you (check Datastreams → CAN → Transmit Frequency), hit ENTER and choose the desired output parameter.


Here is the blank template to customise your own CAN output, and a short working example file with just a few parameters.
Syvecs S7Plus Short Example File.xml (1.56 KB)
Syvecs Template.xml (13.8 KB)

hi all,

to connect to your syvecs ecu you need an seeed can analyzer,
ive used this one:

they come in different versions but this is the one ive got and this works for sure.

you need to connect this to your can ouput on your ecu.
1; can low
2; can high
3; ground or sensor ground

if you have dual can make sure your using can stream 1 or the one you can change.

once you have this set up its time to connect to realdash.

to connect to realdash you need the appropriate usb cable and you MUST have an OTG adapter/cable.
once you have evrything connected open realdash,

go to garage, click on door, click on dash and ad an new connection.
click adapters can/lin, can analyzer, serial port, and in the next screen you need to see an device in the screen.
once you have selected this device set baudrate in the next screen to 2000000 this is de default baudrate from this type can analyzer, this can be changed if neccecery.

in my case ive set the can speed to 1000kbp/s sins an s7 plus broadcasts this, you can check your speed in Datastreams → CAN → Transmit, Identifier, in the description screen.

next you need to select an can chanel discription file,( ROD )made an excelent write up in the previous post how to do this and posted an example file.

and once you get this al done you can click on the can monitior and check if you have an good connection and set evrything up right.

if evrything is correct you see alot of green numbers an letters, this is the hexadecimal code the ecu sends out.

now its time to check if it works, go to the dash and start up the car.

Thanks for the efforts! I’ll try it once my seeed can analyzer arrives.

I will try it on a x86 based computer. The question is how fast it is? Did you tried it on Android?

Seeed arrived and it worked with the template above.

I’m thinking to stream around 20 data. I’ll see how fast it is with 20 data.
I’ll upload my scal and *.xml file once finished.

Syvecs streams shifted gears are not numeric. It is text based. (First,second etc.)
Also calswitch values (CAL1, CAL2, CAL3 etc…) are text based.

Any example on that?

sorry no we didn’t test those out.

if you look on the GitHub there are a lot of examples for other ecu’s - going through those you might find some examples that use text etc., and then copy the same method;


since I looked at my SCal for your other post, I checked gear as well, my SCal sends Gear with a numeric range of 0 - 10 and for that example it is signed. when you select the frame/slot with gear or calswitch etc., double check the top left corner of your screen which has the conversion formula, range, units etc. the range will show you what information you are supposed to be getting back “0…10” for example for gear.

Yes! I realized that newly but I don’t know which numeric value meets which text.

For example just for the limpMode there are 114 text messages mapped.

Okay I found some of “enumerations” in Liferacing datasheet

Enumeration items below:
100=EOP_TRIP, 101=CCP_TRIP, 102=EOT_TRIP, 103=ECT_TRIP, 104=FP_TRIP,
0=OFF, 1=ON
0=OFF, 1=ON
© Life Racing Ltd Page 11 of 26
0=OFF, 1=ON
0=OFF, 1=ON
0=U, 1=R, 2=N, 3=1, 4=2, 5=3, 6=4, 7=5, 8=6, 9=7, 10=8
0=NONE, 1=DOWN, 2=UP, 3=BOTH
†Bit Flag items below:
dbwStatus B0=PPS, B1=TPS1, B2=TPS2, B3=DBW1, B4=DBW2
knockStatus B0=cyl1 B1=cyl2 etc

Enumerations can be viewed in the information panel of Life View with a particular channel
highlighted. Okay all numeration can be viewed in Sview.

if you manage to get the text conversion working be good to update this thread with an example for others to follow your work!

Yeap. I’m working on it. I’ll share the XML file, Syvecs calibration and *.rd design file here.

This is my info page.
Gallery: Engineer Dream

I will update according to these datas when I finish

I was thinking that I could be quite easy to add an ‘enum’ parameter to XML. An example how it could work:

In this example if value is 0 text ‘Zero’ is shown, if value is 1 text ‘One’ is shown and so on. The # could be a optional default text to show.

Do you think this could be helpful to get some text values from CAN?

It would be awesome really!

I already started to sort xml by your example for the next update. :mrgreen:

It would be awesome really!

I already started to sort xml by your example for the next update. :mrgreen:

Alright, I will try to get the next beta for tomorrow.

What if the number is not exactly 1.0
Say if it is 1.2 or 1.01
how would decimals effect ?

ps. Most of the enums I see are exact numbers

I think I will implement the enum with only integers as comparing floating point values would require epsilon with comparison and that adds extra complexity.

I will implement ranges though, like:
enum=“1~9:One to Nine,10:Ten,#:Something else”

The enum parameter is now available in 1.7.7-BETA2. See instructions here:

Oh I’m running 1.7.6 on Windows 10.
How can I access windows beta? Github? Any link?

Microsoft does not have Beta program so Beta is available for Android only :frowning: