Dual ECU Support
Version 1.1 of SDC introduces a new feature which enables it to support data from multiple Speeduino ECU’s. There are two possible scenarios where this might be required:
- Running a V12 with a pair of ECU’s (typically a pair of 4x4 boards)
- Some sort of twin engine build
This feature requires a canbus to work. Its purpose is to enable the data from both ECU’s to be displayed on a single screen.
To implement a cluster with this arrangement, you need the following:
- A Primary Raspberry Pi with I/O Hat including canbus hardware connected by serial to ECU 1
- A Secondary Raspberry Pi with I/O Hat including canbus hardware connected by serial to ECU 2
- A Canbus network connecting the two Pi’s together
- As a minimum, a single display but there is nothing to stop you having a display on the secondary Pi as well
The two ECU’s and associated Pi’s are designated the Primary and the Secondary. The Primary Pi will be configured with pages that can display data concurrently from both the Primary and the Secondary ECU. The secondary Pi will be configured as a secondary system in its configuration file (sdc.ini), and will put the data it receives onto the CANBus network.
Then, using the screen editor on the primary Pi, you can use the attribute of any control to define whether it references the primary ECU or the secondary ECU by adding #2
to the end of the attribute name. For example, if you want the rpm from the secondary ECU, then use rpm#2
as the attribute name.
Limitations:
- If you enable rebroadcast on the canbus from the primary, and also have a secondary ECU, then the canbus will probably get flooded.
- You can’t access the primary ECU’s dataset if you connect a screen to the secondary ECU.
- You can’t use the canbus datasource on a Pi designated as a secondary ECU device. It has to be a serial datasource with rebroadcast enabled (serialcanbusbridge or serialcanbusbridgeauxin).
- You can’t use this feature with any ECU other than for a pair of Speeduino’s.
Configuring Dual ECU Support
Primary SDC Installation
The Primary SDC installation is the one designated as the display device for data from both ECUs. This device should be connected to the SDC CANBus and also connected to a Speeduino ECU using any of the following datamodes:
- serialcanbusauxin
- tsusbserialcanbusauxin
In other words, the datamode must be either serial or usb-serial, and must have a canbus auxiliary input component in order to receive ECU data from SDC instance connected to the secondary ECU. You cannot select other canbus datamodes because the traffic from multiple devices will result in attribute values from multiple sources overwriting each other.
Although the tsusbserialcanbusauxin
datamode is suppported, I do not recommend it for anything other than bench testing. You should be using the speeduino secondary serial port for a live installation so that your usb port is free for tuning. USBSerial can disconnect from time to time as well, which may not be ideal.
In the [datasource]
section, the following entry must also be present:
showsecondaryattributes=1
This will allow the #2 attributes to be selected inside SDC tools. Do not include the secondaryecuenabled
setting in the ini file for the primary device, or if it is present make sure the value is set to zero.
The Primary SDC Installation must have a screen connected to it so that it can display both its own data (from the Speeduino it is connected to) and the data being received from the Secondary ECU.
Secondary SDC Installation
The Secondary SDC Installation is the one designated as being connected to the second Speeduino ECU. This device will take data from the Speeduino it is connected to and transmit it over the CANBus so that the Primary SDC Installation can read and display it.
The Secondary ECU must be configured with one of the following datamodes:
- serialcanbusbridgeauxin
- tsusbserialcanbusbridgeauxin
In other words, the datamode must have a canbus bridge included so that there is a means by which the secondary ECU can send data to the primary.
As in the previous section, I do not recommend usbserial for anything other than bench testing.
The following setting must also be included in the [datasource]
section:
secondaryecuenabled=1
If you are using the tsusbserialcanbusbridgeauxin
datamode then you must also follow the instructions for configuring SDC to use the tunerstudio connection method.
Testing
Once everything is up and running, you should be able to do any of the following:
- If you have a screen connected to the secondary device, you can use SDC Tools to design pages and be able to display the attributes from the second ECU (the one this SDC is connected to) directly. To do that, you will use the standard attribute names. So for example, manifold pressure is called ‘map’.
- On the console of the secondary SDC device, the
attr
shell command will show the values of all of the attributes coming from the secondary ECU. - On the primary SDC device, you can use both primary and secondary attributes. So for exmaple
map
is the value of the primary’s manifold pressure (the one the primary SDC instance is connected to by serial). Andmap#2
is the manifold pressure from the secondary ECU which is being received over the CANBus. - The
attr
shell command on the primary ECU will show the value of both the standard and #2 attributes. For example,attr batteryv
will report bothbatteryv
andbatteryv#2
.
Don’t forget that if you have a display connected to the Pi which is in turn connected to the secondary ECU, and you want to display that ECU’s rpm, you should just use rpm
on that device, even though it is the secondary data source. This is because the values only become secondary at the moment they are written onto the CANBus. Likewise, the primary ECU’s data is not available on the secondary ECU’s screen.