@ -37,7 +37,7 @@ class CarControllerParams:
# To determine the limit for your car, find the maximum value that the stock LKAS will request.
# If the max stock LKAS request is <384, add your car to this list.
elif CP . carFingerprint in ( CAR . GENESIS_G80 , CAR . GENESIS_G90 , CAR . ELANTRA , CAR . IONIQ ,
elif CP . carFingerprint in ( CAR . GENESIS_G80 , CAR . GENESIS_G90 , CAR . ELANTRA , CAR . ELANTRA_GT_I30 , CAR . IONIQ ,
CAR . IONIQ_EV_LTD , CAR . SANTA_FE_PHEV_2022 , CAR . SONATA_LF , CAR . KIA_FORTE , CAR . KIA_NIRO_PHEV ,
CAR . KIA_OPTIMA_H , CAR . KIA_OPTIMA_H_G4_FL , CAR . KIA_SORENTO ) :
self . STEER_MAX = 255
@ -72,6 +72,7 @@ class CAR(StrEnum):
AZERA_6TH_GEN = " HYUNDAI AZERA 6TH GEN "
AZERA_HEV_6TH_GEN = " HYUNDAI AZERA HYBRID 6TH GEN "
ELANTRA = " HYUNDAI ELANTRA 2017 "
ELANTRA_GT_I30 = " HYUNDAI I30 N LINE 2019 & GT 2018 DCT "
ELANTRA_2021 = " HYUNDAI ELANTRA 2021 "
ELANTRA_HEV_2021 = " HYUNDAI ELANTRA HYBRID 2021 "
HYUNDAI_GENESIS = " HYUNDAI GENESIS 2015-2016 "
@ -160,7 +161,11 @@ CAR_INFO: Dict[str, Optional[Union[HyundaiCarInfo, List[HyundaiCarInfo]]]] = {
CAR . AZERA_6TH_GEN : HyundaiCarInfo ( " Hyundai Azera 2022 " , " All " , car_parts = CarParts . common ( [ CarHarness . hyundai_k ] ) ) ,
CAR . AZERA_HEV_6TH_GEN : HyundaiCarInfo ( " Hyundai Azera Hybrid 2020 " , " All " , car_parts = CarParts . common ( [ CarHarness . hyundai_k ] ) ) ,
CAR . ELANTRA : [
HyundaiCarInfo ( " Hyundai Elantra 2017-19 " , min_enable_speed = 19 * CV . MPH_TO_MS , car_parts = CarParts . common ( [ CarHarness . hyundai_b ] ) ) ,
# TODO: 2017-18 could be Hyundai G
HyundaiCarInfo ( " Hyundai Elantra 2017-18 " , min_enable_speed = 19 * CV . MPH_TO_MS , car_parts = CarParts . common ( [ CarHarness . hyundai_b ] ) ) ,
HyundaiCarInfo ( " Hyundai Elantra 2019 " , min_enable_speed = 19 * CV . MPH_TO_MS , car_parts = CarParts . common ( [ CarHarness . hyundai_g ] ) ) ,
] ,
CAR . ELANTRA_GT_I30 : [
HyundaiCarInfo ( " Hyundai Elantra GT 2017-19 " , car_parts = CarParts . common ( [ CarHarness . hyundai_e ] ) ) ,
HyundaiCarInfo ( " Hyundai i30 2017-19 " , car_parts = CarParts . common ( [ CarHarness . hyundai_e ] ) ) ,
] ,
@ -298,9 +303,6 @@ class Buttons:
CANCEL = 4 # on newer models, this is a pause/resume button
FINGERPRINTS = {
CAR . ELANTRA : [ {
66 : 8 , 67 : 8 , 68 : 8 , 127 : 8 , 273 : 8 , 274 : 8 , 275 : 8 , 339 : 8 , 356 : 4 , 399 : 8 , 512 : 6 , 544 : 8 , 593 : 8 , 608 : 8 , 688 : 5 , 790 : 8 , 809 : 8 , 897 : 8 , 832 : 8 , 899 : 8 , 902 : 8 , 903 : 8 , 905 : 8 , 909 : 8 , 916 : 8 , 1040 : 8 , 1056 : 8 , 1057 : 8 , 1078 : 4 , 1170 : 8 , 1265 : 4 , 1280 : 1 , 1282 : 4 , 1287 : 4 , 1290 : 8 , 1292 : 8 , 1294 : 8 , 1312 : 8 , 1314 : 8 , 1322 : 8 , 1345 : 8 , 1349 : 8 , 1351 : 8 , 1353 : 8 , 1363 : 8 , 1366 : 8 , 1367 : 8 , 1369 : 8 , 1407 : 8 , 1415 : 8 , 1419 : 8 , 1425 : 2 , 1427 : 6 , 1440 : 8 , 1456 : 4 , 1472 : 8 , 1486 : 8 , 1487 : 8 , 1491 : 8 , 1530 : 8 , 1532 : 5 , 2001 : 8 , 2003 : 8 , 2004 : 8 , 2009 : 8 , 2012 : 8 , 2016 : 8 , 2017 : 8 , 2024 : 8 , 2025 : 8
} ] ,
CAR . HYUNDAI_GENESIS : [ {
67 : 8 , 68 : 8 , 304 : 8 , 320 : 8 , 339 : 8 , 356 : 4 , 544 : 7 , 593 : 8 , 608 : 8 , 688 : 5 , 809 : 8 , 832 : 8 , 854 : 7 , 870 : 7 , 871 : 8 , 872 : 5 , 897 : 8 , 902 : 8 , 903 : 6 , 916 : 8 , 1024 : 2 , 1040 : 8 , 1056 : 8 , 1057 : 8 , 1078 : 4 , 1107 : 5 , 1136 : 8 , 1151 : 6 , 1168 : 7 , 1170 : 8 , 1173 : 8 , 1184 : 8 , 1265 : 4 , 1280 : 1 , 1287 : 4 , 1292 : 8 , 1312 : 8 , 1322 : 8 , 1331 : 8 , 1332 : 8 , 1333 : 8 , 1334 : 8 , 1335 : 8 , 1342 : 6 , 1345 : 8 , 1363 : 8 , 1369 : 8 , 1370 : 8 , 1371 : 8 , 1378 : 4 , 1384 : 5 , 1407 : 8 , 1419 : 8 , 1427 : 6 , 1434 : 2 , 1456 : 4
} ,
@ -1702,6 +1704,33 @@ FW_VERSIONS = {
] ,
} ,
CAR . ELANTRA : {
( Ecu . fwdCamera , 0x7c4 , None ) : [
b ' \xf1 \x00 ADP LKAS AT USA LHD 1.00 1.03 99211-F2000 X31 ' ,
b ' \xf1 \x00 AD LKAS AT USA LHD 1.01 1.01 95895-F2000 251 ' ,
] ,
( Ecu . transmission , 0x7e1 , None ) : [
b ' \xf1 \x00 6T6K0_C2 \x00 \x00 6T6S2051 \x00 \x00 TAD0N20NSD( \xfc A \x9d ' ,
b ' \xf1 \x00 6T6K0_C2 \x00 \x00 6T6S2051 \x00 \x00 TAD0N20NSD \x00 \x00 \x00 \x00 ' ,
b ' \xf1 \x00 6T6J0_C2 \x00 \x00 6T6F0051 \x00 \x00 TAD0N20NS2 \x00 \x00 \x00 \x00 ' ,
b ' \xf1 \x00 6T6J0_C2 \x00 \x00 6T6F0051 \x00 \x00 TAD0N20NS2 \xc5 \x92 \x9e \x8a ' ,
b ' \xf1 \x00 6T6J0_C2 \x00 \x00 6T6F0051 \x00 \x00 TAD0N20SS2.~ \x90 \x87 ' ,
] ,
( Ecu . engine , 0x7e0 , None ) : [
b ' \xf1 \x81 61698051 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 ' ,
b ' \xf1 \x81 61657051 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 ' ,
b ' \xf1 \x81 6165D051 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 ' ,
b ' \xf1 \x81 6165E051 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 ' ,
] ,
( Ecu . abs , 0x7d1 , None ) : [
b ' \xf1 \x00 AD ESC \x11 11 \x18 \x05 \x06 58910-F2840 ' ,
b ' \xf1 \x00 AD ESC \x11 12 \x15 \t \t 58920-F2810 ' ,
] ,
( Ecu . fwdRadar , 0x7d0 , None ) : [
b ' \xf1 \x00 AD__ SCC H-CUP 1.00 1.00 99110-F2100 ' ,
b ' \xf1 \x00 AD__ SCC H-CUP 1.00 1.01 96400-F2100 ' ,
] ,
} ,
CAR . ELANTRA_GT_I30 : {
( Ecu . fwdCamera , 0x7c4 , None ) : [
b ' \xf1 \x00 PD LKAS AT USA LHD 1.01 1.01 95740-G3100 A54 ' ,
b ' \xf1 \x00 PD LKAS AT KOR LHD 1.00 1.02 95740-G3000 A51 ' ,
@ -2065,7 +2094,7 @@ CHECKSUM = {
CAN_GEARS = {
# which message has the gear. hybrid and EV use ELECT_GEAR
" use_cluster_gears " : { CAR . ELANTRA , CAR . KONA } ,
" use_cluster_gears " : { CAR . ELANTRA , CAR . ELANTRA_GT_I30 , CAR . KONA } ,
" use_tcu_gears " : { CAR . KIA_OPTIMA_G4 , CAR . KIA_OPTIMA_G4_FL , CAR . SONATA_LF , CAR . VELOSTER , CAR . TUCSON } ,
}
@ -2094,7 +2123,7 @@ EV_CAR = {CAR.IONIQ_EV_2020, CAR.IONIQ_EV_LTD, CAR.KONA_EV, CAR.KIA_NIRO_EV, CAR
# these cars require a special panda safety mode due to missing counters and checksums in the messages
LEGACY_SAFETY_MODE_CAR = { CAR . HYUNDAI_GENESIS , CAR . IONIQ_EV_LTD , CAR . KIA_OPTIMA_G4 ,
CAR . VELOSTER , CAR . GENESIS_G70 , CAR . GENESIS_G80 , CAR . KIA_CEED , CAR . ELANTRA , CAR . IONIQ_HEV_2022 ,
CAR . KIA_OPTIMA_H }
CAR . KIA_OPTIMA_H , CAR . ELANTRA_GT_I30 }
# these cars have not been verified to work with longitudinal yet - radar disable, sending correct messages, etc.
UNSUPPORTED_LONGITUDINAL_CAR = LEGACY_SAFETY_MODE_CAR | { CAR . KIA_NIRO_PHEV , CAR . KIA_SORENTO , CAR . SONATA_LF , CAR . KIA_OPTIMA_G4_FL ,
@ -2106,6 +2135,7 @@ DBC = {
CAR . AZERA_6TH_GEN : dbc_dict ( ' hyundai_kia_generic ' , None ) ,
CAR . AZERA_HEV_6TH_GEN : dbc_dict ( ' hyundai_kia_generic ' , None ) ,
CAR . ELANTRA : dbc_dict ( ' hyundai_kia_generic ' , None ) ,
CAR . ELANTRA_GT_I30 : dbc_dict ( ' hyundai_kia_generic ' , None ) ,
CAR . ELANTRA_2021 : dbc_dict ( ' hyundai_kia_generic ' , None ) ,
CAR . ELANTRA_HEV_2021 : dbc_dict ( ' hyundai_kia_generic ' , None ) ,
CAR . GENESIS_G70 : dbc_dict ( ' hyundai_kia_generic ' , None ) ,