Audi Q3 8U Drive Select retrofit: Difference between revisions
| Line 99: | Line 99: | ||
=== Single Mode Data deconstruction === | === Single Mode Data deconstruction === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! | ! | ||
! 1 !! 2 !! 3 !! 4 !! 5 !! 6 !! 7 !! 8 !! 9 !! 10 !! 11 !! 12 !! 13 !! 14 !! 15 !! 16 !! 17 | ! 0 !! 1 !! 2 !! 3 !! 4 !! 5 !! 6 !! 7 !! 8 !! 9 !! 10 !! 11 !! 12 !! 13 !! 14 !! 15 !! 16 !! 17 | ||
|- | |- | ||
| individual | | individual | ||
| 02 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 | | style="background:#ff8800" | 02 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 | ||
|- | |- | ||
| comfort | | comfort | ||
| FF || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || 11 || style="color:#bbbbbb"| 00 || 01 || 01 || 01 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || 11 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || 11 | | style="background:#000000; color:#ffffff" | FF || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="background:#ffff00" | 11 || style="color:#bbbbbb"| 00 || style="background:#ffff00" | 01 || style="background:#ffff00" | 01 || style="background:#ffff00" | 01 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="background:#ffff00" | 11 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="background:#ffff00" | 11 | ||
|- | |- | ||
| auto | | auto | ||
| FF || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || 22 || style="color:#bbbbbb"| 00 || 02 || 02 || 02 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || 22 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || 12 | | style="background:#000000; color:#ffffff" | FF || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="background:#ff8800" | 22 || style="color:#bbbbbb"| 00 || style="background:#ff8800" | 02 || style="background:#ff8800" | 02 || style="background:#ff8800" | 02 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="background:#ff8800" | 22 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="background:#ff8800" | 12 | ||
|- | |- | ||
| dynamic | | dynamic | ||
| FF || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || 33 || style="color:#bbbbbb"| 00 || 03 || 03 || 03 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || 33 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || 13 | | style="background:#000000; color:#ffffff" | FF || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="background:#ff0000" | 33 || style="color:#bbbbbb"| 00 || style="background:#ff0000" | 03 || style="background:#ff0000" | 03 || style="background:#ff0000" | 03 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="background:#ff0000" | 33 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="background:#ff0000" | 13 | ||
|- | |- | ||
| offroad | | offroad | ||
| 02 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 | | style="background:#ff8800" | 02 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 | ||
|- | |- | ||
| efficiency | | efficiency | ||
| 02 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || 55 || style="color:#bbbbbb"| 00 || 02 || 05 || 02 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || 55 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || 12 | | style="background:#ff8800" | 02 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="background:#00ff00" | 55 || style="color:#bbbbbb"| 00 || style="background:#ff8800" | 02 || style="background:#00ff00" | 05 || style="background:#ff8800" | 02 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="background:#00ff00" | 55 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="background:#ff8800" | 12 | ||
|- | |- | ||
| race | | race | ||
| 02 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 | | style="background:#ff8800" | 02 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 | ||
|- | |- | ||
| ??? | | ??? | ||
| 02 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 | | style="background:#ff8800" | 02 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 || style="color:#bbbbbb"| 00 | ||
|} | |||
What's that? Greyed-out <code>00</code>s, marked in black <code>FF</code>s. | |||
{| class="wikitable" | |||
|- | |||
| style="background:#bbbbbb" | 00 | |||
| style="background:#ffff00" | comfort | |||
| style="background:#ff8800" | auto | |||
| style="background:#ff0000" | dynamic | |||
| style="background:#00ff00" | eco | |||
| style="background:#000000; color:#ffffff" | FF | |||
|} | |} | ||
Can you notice two things? | |||
# Efficiency mode is using auto settings for some things. | |||
# byte <code>0</code> is set to <code>0xFF</code> for 3 out of 4 modes. | |||
Revision as of 20:52, 24 March 2025
Audi Drive Select can be retrofitted into Audi Q3 8U letting the driver to choose from 3 or 4 modes.
Parts
- button
- wire
Gateway Parameterisation
Upload proper dataset to module 0x19, offset 0x1200. Use VCP or ODIS.
no Drive Select
313100000200000000000000000000000000000000000200000000000000000000000000000000000200000000000000000000000000000000000200000000000000000000000000000000000200000000000000000000000000000000000200000000000000000000000000000000000200000000000000000000000000000000000200000000000000000000000000000000000C020C00010200003A1773E5
Drive Select 3 modes (Comfort, Auto, Dynamic)
31310E0E020000000000000000000000000000000000FF0000110001010100000011000000000011FF0000220002020200000022000000000012FF00003300030303000000330000000000130200000000000000000000000000000000000200000000000000000000000000000000000200000000000000000000000000000000000200000000000000000000000000000000000C020C0001020000B738A86A
Drive Select 4 modes (Efficiency, Comfort, Auto, Dynamic)
31312E0E020000000000000000000000000000000000FF0000110001010100000011000000000011FF0000220002020200000022000000000012FF00003300030303000000330000000000130200000000000000000000000000000000000200005500020502000000550000000000120200000000000000000000000000000000000200000000000000000000000000000000000C020C000102000011009760
Coding and Adaptation
Infotainment System
RMC
Audi RMC requires parameterisation to enable menu options. It can be done with VCP, ODIS, OBDeleven for Android.
Module 0x5F, offset 0xF00610. Replace 00E1F0 with 05B155 to enable the Audi Drive Select menu in the CAR menu.
MMI
[Audi MMI 3G]] can also be done via parameterisation, but there's no need for this complicated procedure. You can access those values from the Green Engineering Menu.
- Enabling developer mode:
Module 0x5F → Adaptation → Channel: 6 → Value: 1 - Reboot the unit with button combination: BACK + Control Wheel + Upper-Right.
- Enter GEM with button combination CAR + MENU.
- Go to
car → cardevicelist → carismaand enable it. This tells the unit to be open for Audi Drive Select communication. - Go to
car → carmenuoperation → carismaand set it to5. This tells the unit when the ADS menu should be accessible for the driver.5Means that it should be available both when stationary and when the vehicle is moving. - Press BACK couple times to exit GEM.
- Reboot the unit with button combination: BACK + Control Wheel + Upper-Right.
BCM
TODOOO? Not sure if required...?
Headlight Range
Module 0x55 → Long Coding → Byte: 06 → Bit: 7 (Charisma) → enable
Dashboard Drive Select Button
ADS Button Installation
- Remove Climatronic unit by prying it in the top corner.
- With the Climatronic unit removed, access back of the buttons assembly and push out the button panel.
- Disconnect the connector.
- Review wiring (see ADS Button Wiring below).
- Connect new button panel and push it back in place.
ADS Button Wiring
ADS button can be found on wiring diagrams as element E735. It shares the T10f 10-pin connector with Engine Auto Start/Stop button and Park Assist Button (if equipped).
3 connections are required for the ADS button:
T10f/1- GND (ground)T10f/5- Term58 (button backlight)T10f/9- SIG (button pressed short to ground)
Most likely you will need to wire only the SIG line from the button E735: T10f/9 to the BCM module J519: T52c/37.
Parameterisation Research
How many mods are possible?
It looks like 4 is not the limit. When looking at how it's handled in Audi A6 C7[1] we can see (in order):
- Individual
- Comfort
- Auto
- Dynamic
- Offroad
- Efficiency
- Race
- empty?
Dataset Deconstruction
Newer cars from the MQB platform can use FPA Editor[2]. Those are much more complicated and allow a lot more customisation.[3]
Let's go back to Audi Q3 8U. Dataset without ADS is mostly filled with 00, so let's skip it for now and let's focus on on the dataset with 4 modes.
By comparing the 3- and 4-mode datasets, I can see which values are constant and which vary. This allowed me to divide the dataset into couple sections:
31 31 // start 2E // enabled modes (0x2E = 0010 1110) 0E // ??? (0x0E = 0000 1110) 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 // individual FF 00 00 11 00 01 01 01 00 00 00 11 00 00 00 00 00 11 // comfort FF 00 00 22 00 02 02 02 00 00 00 22 00 00 00 00 00 12 // auto FF 00 00 33 00 03 03 03 00 00 00 33 00 00 00 00 00 13 // dynamic 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 // offroad 02 00 00 55 00 02 05 02 00 00 00 55 00 00 00 00 00 12 // efficiency 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 // race 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 // empty? 0C 02 0C 00 01 02 00 00 // ??? (same in all) 11 00 97 60 // CRC-32 checksum[4]
Single Mode Data deconstruction
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| individual | 02 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 |
| comfort | FF | 00 | 00 | 11 | 00 | 01 | 01 | 01 | 00 | 00 | 00 | 11 | 00 | 00 | 00 | 00 | 00 | 11 |
| auto | FF | 00 | 00 | 22 | 00 | 02 | 02 | 02 | 00 | 00 | 00 | 22 | 00 | 00 | 00 | 00 | 00 | 12 |
| dynamic | FF | 00 | 00 | 33 | 00 | 03 | 03 | 03 | 00 | 00 | 00 | 33 | 00 | 00 | 00 | 00 | 00 | 13 |
| offroad | 02 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 |
| efficiency | 02 | 00 | 00 | 55 | 00 | 02 | 05 | 02 | 00 | 00 | 00 | 55 | 00 | 00 | 00 | 00 | 00 | 12 |
| race | 02 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 |
| ??? | 02 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 |
What's that? Greyed-out 00s, marked in black FFs.
| 00 | comfort | auto | dynamic | eco | FF |
Can you notice two things?
- Efficiency mode is using auto settings for some things.
- byte
0is set to0xFFfor 3 out of 4 modes.