VW MQB: Volkswagen Tiguan Mk2
diff --git a/README.md b/README.md
index a70cb6eca9e3ed..693682a32725ae 100644
--- a/README.md
+++ b/README.md
@@ -174,6 +174,7 @@ Community Maintained Cars and Features
 | Subaru    | Forester 2019-20              | EyeSight          | Stock            | 0mph               | 0mph         |
 | Subaru    | Impreza 2017-19               | EyeSight          | Stock            | 0mph               | 0mph         |
 | Volkswagen| Golf 2015-19                  | Driver Assistance | Stock            | 0mph               | 0mph         |
+| Volkswagen| Tiguan 2020                   | Driver Assistance | Stock            | 0mph               | 0mph         |
 
 <sup>1</sup>Requires an [OBD-II car harness](https://comma.ai/shop/products/comma-car-harness) and [community built ASCM harness](https://github.com/commaai/openpilot/wiki/GM#hardware). ***NOTE: disconnecting the ASCM disables Automatic Emergency Braking (AEB).*** <br />
 
diff --git a/selfdrive/car/volkswagen/interface.py b/selfdrive/car/volkswagen/interface.py
index 1a0755206d30ff..e57efe4756a3c7 100644
--- a/selfdrive/car/volkswagen/interface.py
+++ b/selfdrive/car/volkswagen/interface.py
@@ -62,6 +62,11 @@ def get_params(candidate, fingerprint=gen_empty_fingerprint(), car_fw=None):
       ret.mass = 1500 + STD_CARGO_KG
       ret.wheelbase = 2.64
 
+    if candidate == CAR.TIGUAN_MK2:
+      # Average of SWB and LWB variants
+      ret.mass = 1715 + STD_CARGO_KG
+      ret.wheelbase = 2.74
+
     ret.centerToFront = ret.wheelbase * 0.45
 
     ret.enableCamera = True  # Stock camera detection doesn't apply to VW
diff --git a/selfdrive/car/volkswagen/values.py b/selfdrive/car/volkswagen/values.py
index 146f2690c70e02..b93796da537bc1 100644
--- a/selfdrive/car/volkswagen/values.py
+++ b/selfdrive/car/volkswagen/values.py
@@ -55,18 +55,24 @@ class CANBUS:
 # FW_VERSIONS for that existing CAR.
 
 class CAR:
-  GOLF = "VOLKSWAGEN GOLF"              # Chassis 5G/AU/BA/BE, Mk7 VW Golf and variants
-  AUDI_A3 = "AUDI A3"                   # Chassis 8V/FF, Mk3 Audi A3 and variants
+  GOLF = "VOLKSWAGEN GOLF"                    # Chassis 5G/AU/BA/BE, Mk7 VW Golf and variants
+  TIGUAN_MK2 = "VOLKSWAGEN TIGUAN 2ND GEN"    # Chassis AD/BW, Mk2 VW Tiguan and variants
+  AUDI_A3 = "AUDI A3"                         # Chassis 8V/FF, Mk3 Audi A3 and variants
 
 FINGERPRINTS = {
   CAR.GOLF: [{
     64: 8, 134: 8, 159: 8, 173: 8, 178: 8, 253: 8, 257: 8, 260: 8, 262: 8, 264: 8, 278: 8, 279: 8, 283: 8, 286: 8, 288: 8, 289: 8, 290: 8, 294: 8, 299: 8, 302: 8, 346: 8, 385: 8, 418: 8, 427: 8, 668: 8, 679: 8, 681: 8, 695: 8, 779: 8, 780: 8, 783: 8, 792: 8, 795: 8, 804: 8, 806: 8, 807: 8, 808: 8, 809: 8, 870: 8, 896: 8, 897: 8, 898: 8, 901: 8, 917: 8, 919: 8, 927: 8, 949: 8, 958: 8, 960: 4, 981: 8, 987: 8, 988: 8, 991: 8, 997: 8, 1000: 8, 1019: 8, 1120: 8, 1122: 8, 1123: 8, 1124: 8, 1153: 8, 1162: 8, 1175: 8, 1312: 8, 1385: 8, 1413: 8, 1440: 5, 1514: 8, 1515: 8, 1520: 8, 1529: 8, 1600: 8, 1601: 8, 1603: 8, 1605: 8, 1624: 8, 1626: 8, 1629: 8, 1631: 8, 1646: 8, 1648: 8, 1712: 6, 1714: 8, 1716: 8, 1717: 8, 1719: 8, 1720: 8, 1721: 8
   }],
+  CAR.TIGUAN_MK2: [{
+    64: 8, 134: 8, 159: 8, 173: 8, 178: 8, 253: 8, 257: 8, 260: 8, 262: 8, 278: 8, 279: 8, 283: 8, 286: 8, 288: 8, 289: 8, 290: 8, 294: 8, 299: 8, 302: 8, 346: 8, 376: 8, 418: 8, 427: 8, 573: 8, 679: 8, 681: 8, 684: 8, 695: 8, 779: 8, 780: 8, 783: 8, 787: 8, 788: 8, 789: 8, 792: 8, 795: 8, 804: 8, 806: 8, 807: 8, 808: 8, 809: 8, 828: 8, 870: 8, 879: 8, 884: 8, 888: 8, 891: 8, 896: 8, 897: 8, 898: 8, 901: 8, 913: 8, 917: 8, 919: 8, 949: 8, 958: 8, 960: 4, 981: 8, 987: 8, 988: 8, 991: 8, 997: 8, 1000: 8, 1019: 8, 1122: 8, 1123: 8, 1124: 8, 1153: 8, 1156: 8, 1157: 8, 1158: 8, 1162: 8, 1175: 8, 1312: 8, 1343: 8, 1385: 8, 1413: 8, 1440: 5, 1471: 4, 1514: 8, 1515: 8, 1520: 8, 1600: 8, 1601: 8, 1603: 8, 1605: 8, 1624: 8, 1626: 8, 1629: 8, 1631: 8, 1635: 8, 1646: 8, 1648: 8, 1712: 6, 1714: 8, 1716: 8, 1717: 8, 1719: 8, 1720: 8, 1721: 8
+  }],
   CAR.AUDI_A3: [{
     64: 8, 134: 8, 159: 8, 173: 8, 178: 8, 253: 8, 257: 8, 260: 8, 262: 8, 278: 8, 279: 8, 283: 8, 285: 8, 286: 8, 288: 8, 289: 8, 290: 8, 294: 8, 295: 8, 299: 8, 302: 8, 346: 8, 418: 8, 427: 8, 506: 8, 679: 8, 681: 8, 695: 8, 779: 8, 780: 8, 783: 8, 787: 8, 788: 8, 789: 8, 792: 8, 802: 8, 804: 8, 806: 8, 807: 8, 808: 8, 809: 8, 846: 8, 847: 8, 870: 8, 896: 8, 897: 8, 898: 8, 901: 8, 917: 8, 919: 8, 949: 8, 958: 8, 960: 4, 981: 8, 987: 8, 988: 8, 991: 8, 997: 8, 1000: 8, 1019: 8, 1122: 8, 1123: 8, 1124: 8, 1153: 8, 1162: 8, 1175: 8, 1312: 8, 1385: 8, 1413: 8, 1440: 5, 1514: 8, 1515: 8, 1520: 8, 1600: 8, 1601: 8, 1603: 8, 1624: 8, 1629: 8, 1631: 8, 1646: 8, 1648: 8, 1712: 6, 1714: 8, 1716: 8, 1717: 8, 1719: 8, 1720: 8, 1721: 8, 1792: 8, 1872: 8, 1976: 8, 1977: 8, 1982: 8, 1985: 8
   }],
 }
 
+IGNORED_FINGERPRINTS = [CAR.TIGUAN_MK2]
+
 FW_VERSIONS = {
   CAR.AUDI_A3: {
     (Ecu.engine, 0x7e0, None): [
@@ -101,10 +107,28 @@ class CAR:
     (Ecu.fwdRadar, 0x757, None): [
       b'\xf1\x875Q0907572J \xf1\x890654',
     ],
-  }
+  },
+  CAR.TIGUAN_MK2: {
+    (Ecu.engine, 0x7e0, None): [
+      b'\xf1\x8783A907115B \xf1\x890005',
+    ],
+    (Ecu.transmission, 0x7e1, None): [
+      b'\xf1\x8709G927158DT\xf1\x893698',
+    ],
+    (Ecu.srs, 0x715, None): [
+      b'\xf1\x875Q0959655BM\xf1\x890403\xf1\x82\02316143231313500314641011750179333423100',
+    ],
+    (Ecu.eps, 0x712, None): [
+      b'\xf1\x875QM909144C \xf1\x891082\xf1\x82\00521A60804A1',
+    ],
+    (Ecu.fwdRadar, 0x757, None): [
+      b'\xf1\x872Q0907572R \xf1\x890372',
+    ],
+  },
 }
 
 DBC = {
   CAR.GOLF: dbc_dict('vw_mqb_2010', None),
+  CAR.TIGUAN_MK2: dbc_dict('vw_mqb_2010', None),
   CAR.AUDI_A3: dbc_dict('vw_mqb_2010', None),
 }
diff --git a/selfdrive/test/test_car_models.py b/selfdrive/test/test_car_models.py
index 65e0f84f49dd2b..cf5ee1a83bb113 100755
--- a/selfdrive/test/test_car_models.py
+++ b/selfdrive/test/test_car_models.py
@@ -207,7 +207,7 @@ def get_route_log(route_name):
   },
   "c75a59efa0ecd502|2021-03-11--20-52-55": {
     'carFingerprint': HYUNDAI.KIA_SELTOS,
-    'enableCamera': True,  
+    'enableCamera': True,
   },
   "5b7c365c50084530|2020-04-15--16-13-24": {
     'carFingerprint': HYUNDAI.SONATA,
@@ -441,6 +441,10 @@ def get_route_log(route_name):
     'carFingerprint': VOLKSWAGEN.GOLF,
     'enableCamera': True,
   },
+  "2cef8a0b898f331a|2021-03-25--20-13-57": {
+    'carFingerprint': VOLKSWAGEN.TIGUAN_MK2,
+    'enableCamera': True,
+  },
   "07667b885add75fd|2021-01-23--19-48-42": {
     'carFingerprint': VOLKSWAGEN.AUDI_A3,
     'enableCamera': True,

**New MQB Model**

This CAR will cover all variants of the second generation Tiguan. 2018-current in North America, 2016-current RoW.

- [x] added to README
- [x] test route added to [test_car_models](../../selfdrive/test/test_car_models.py)
- [x] route with openpilot: 2cef8a0b898f331a|2021-03-25--20-13-57

