I created a dbc
https://github.com/dzid26/opendbc-BMW-E8x-E9x/blob/master/bmw_e9x_e8x.dbc for BMW. All the CANs messages are in a single dbc since the same messages appear in multiple buses.
(You can see the CANbus
log after logging in with google.
Also it will expire from the server after 2 weeks.)
I put up the
opendbc repo to automatically pull signals database for my other project (i.e. integrate
Comma's level 2 autonomy to E82/E90).
If anyone has anything to add, I would encourage you to fork my repo and I will be happy to do pull request.
(You don't have to use Cabana web editor, there are free softwares to edit dbc such a
kvaser editor)
about incoming 0x198.
0 byte: ppppxxxx
where four higher BITS (pppp) of first byte represents m3 stick position/move - 0000xxxx, 0001xxxx [R], 0010xxxx [SHIFT LEFT], 0011xxxx [D/S], 0100xxxx [M-], 0101xxxx [M+] and 0110xxxx [M?], xxxx is packet sync counter
1 byte: ddddkkkk
where kkkk =1111 XOR pppp (crc like), dddd is 335 stick position/move you know which one
2 byte: kkaakkkk
where kkkk =1111 XOR dddd (crc like - can not be 0x00, dddd can not be 0x0F), aa - param1 (all params can not be 0x03!), kk is just xor crc aa
3 byte: kkddccbb
bb - 335 ParkButton, cc - 335 ParkButton mirror, dd - 335 SideButton, kk is just xor crc dd
4 byte: 11ggffee
ee - param5, ff - 335 SPORT, gg - M3 POWER (?)
5 byte: 11111111
From my experiment, the shifter position didn't match exactly what was proposed earlier]. Perhaps M3 is slightly different than my 135i.
0001 = N|R;
0010 = R;
0011 = N|D;
0100 = D;
0101 = -1;
0110 = +1;
0111 = ManualMode;
1000 = inBetween;
@amg6975 Btw, the counter goes only 0 to E not F. To be honest, I am not sure if you need such detail of the signal, if your device would only need to scale wheel speed signals and copy all the others. But anyway, if you happen to have Sport button state or shift lever state (PRND) and actual gears, you could add it to database, as they are missing and they could be useful.
@amg6975 @aus335iguy You were wondering about how transmission knows when to finish the shift. I know the answer to common questions as I worked on a few autos and DCT control software.
Normally control looks at gear slip calculated from output shaft speed sensor and input shaft speed sensor. The input sensor on many transmissions is not present and instead engine speed from CAN is used (which adds annoying aliasing and ~20ms delay), but the output sensor was not removed before due to safety and would be too imprecise due to output shaft dynamic flex.
The reason the transmission fails the shifting with the different final drive is likely due to cross-correlation diagnostics of the input signals. If the sensor failure is suspected, another signal can is used (wheel speed in this case).
@Olza it would be great if you could create a
repository with instructions of software used, files and settings kept in a single place with a spirit of open-source! It would allow for issue tracking and collaboration. This stuff is already hard to pickup by new people. Only few that worked on it for manufacturers or tuners know even where to start. I would like to learn how to get to the point where you are.
Regarding the RSA key. The TC1766 doesn't have hardcore secure element (HSM), but it still has some protections
7.2.7. Am I right to think that the full dump will
not be possible due to these?
We used to have DLL file with protection routines for flashing ZF's (also Tricore) TCU. I would imagine that they would even have different keys for different customers. Similar could be with Getrag.