@ -85,7 +85,8 @@ class CAR:
KIA_NIRO_EV = " KIA NIRO EV 2020 "
KIA_NIRO_PHEV = " KIA NIRO HYBRID 2019 "
KIA_NIRO_HEV_2021 = " KIA NIRO HYBRID 2021 "
KIA_OPTIMA = " KIA OPTIMA SX 2019 & 2016 "
KIA_OPTIMA = " KIA OPTIMA 2016 "
KIA_OPTIMA_2019 = " KIA OPTIMA 2019 "
KIA_OPTIMA_H = " KIA OPTIMA HYBRID 2017 & SPORTS 2019 "
KIA_SELTOS = " KIA SELTOS 2021 "
KIA_SORENTO = " KIA SORENTO GT LINE 2018 "
@ -156,10 +157,8 @@ CAR_INFO: Dict[str, Optional[Union[HyundaiCarInfo, List[HyundaiCarInfo]]]] = {
HyundaiCarInfo ( " Kia Niro Hybrid 2021 " , harness = Harness . hyundai_f ) , # TODO: could be hyundai_d, verify
HyundaiCarInfo ( " Kia Niro Hybrid 2022 " , harness = Harness . hyundai_h ) ,
] ,
CAR . KIA_OPTIMA : [
HyundaiCarInfo ( " Kia Optima 2017 " , " Advanced Smart Cruise Control " , min_steer_speed = 32. * CV . MPH_TO_MS , harness = Harness . hyundai_b ) ,
HyundaiCarInfo ( " Kia Optima 2019-20 " , " Smart Cruise Control (SCC) " , harness = Harness . hyundai_g ) ,
] ,
CAR . KIA_OPTIMA : HyundaiCarInfo ( " Kia Optima 2017 " , " Advanced Smart Cruise Control " , harness = Harness . hyundai_b ) , # TODO: may support 2016, 2018
CAR . KIA_OPTIMA_2019 : HyundaiCarInfo ( " Kia Optima 2019-20 " , " Smart Cruise Control (SCC) " , harness = Harness . hyundai_g ) ,
CAR . KIA_OPTIMA_H : [
HyundaiCarInfo ( " Kia Optima Hybrid 2017 " , " Advanced Smart Cruise Control " ) , # TODO: may support adjacent years
HyundaiCarInfo ( " Kia Optima Hybrid 2019 " , " Smart Cruise Control (SCC) " ) ,
@ -230,9 +229,6 @@ FINGERPRINTS = {
CAR . SONATA_LF : [
{ 66 : 8 , 67 : 8 , 68 : 8 , 127 : 8 , 273 : 8 , 274 : 8 , 275 : 8 , 339 : 8 , 356 : 4 , 399 : 8 , 447 : 8 , 512 : 6 , 544 : 8 , 593 : 8 , 608 : 8 , 688 : 5 , 790 : 8 , 809 : 8 , 832 : 8 , 884 : 8 , 897 : 8 , 899 : 8 , 902 : 8 , 903 : 6 , 916 : 8 , 1040 : 8 , 1056 : 8 , 1057 : 8 , 1078 : 4 , 1151 : 6 , 1168 : 7 , 1170 : 8 , 1253 : 8 , 1254 : 8 , 1255 : 8 , 1265 : 4 , 1280 : 1 , 1287 : 4 , 1290 : 8 , 1292 : 8 , 1294 : 8 , 1312 : 8 , 1314 : 8 , 1322 : 8 , 1331 : 8 , 1332 : 8 , 1333 : 8 , 1342 : 6 , 1345 : 8 , 1348 : 8 , 1349 : 8 , 1351 : 8 , 1353 : 8 , 1363 : 8 , 1365 : 8 , 1366 : 8 , 1367 : 8 , 1369 : 8 , 1397 : 8 , 1407 : 8 , 1415 : 8 , 1419 : 8 , 1425 : 2 , 1427 : 6 , 1440 : 8 , 1456 : 4 , 1470 : 8 , 1472 : 8 , 1486 : 8 , 1487 : 8 , 1491 : 8 , 1530 : 8 , 1532 : 5 , 2000 : 8 , 2001 : 8 , 2004 : 8 , 2005 : 8 , 2008 : 8 , 2009 : 8 , 2012 : 8 , 2013 : 8 , 2014 : 8 , 2016 : 8 , 2017 : 8 , 2024 : 8 , 2025 : 8 } ,
] ,
CAR . KIA_OPTIMA : [ {
64 : 8 , 66 : 8 , 67 : 8 , 68 : 8 , 127 : 8 , 128 : 8 , 129 : 8 , 273 : 8 , 274 : 8 , 275 : 8 , 339 : 8 , 354 : 3 , 356 : 4 , 399 : 8 , 447 : 8 , 512 : 6 , 544 : 8 , 558 : 8 , 593 : 8 , 608 : 8 , 640 : 8 , 688 : 5 , 790 : 8 , 809 : 8 , 832 : 8 , 884 : 8 , 897 : 8 , 899 : 8 , 902 : 8 , 903 : 6 , 909 : 8 , 912 : 7 , 916 : 8 , 1040 : 8 , 1056 : 8 , 1057 : 8 , 1078 : 4 , 1151 : 6 , 1168 : 7 , 1170 : 8 , 1186 : 2 , 1191 : 2 , 1253 : 8 , 1254 : 8 , 1255 : 8 , 1265 : 4 , 1268 : 8 , 1280 : 1 , 1282 : 4 , 1287 : 4 , 1290 : 8 , 1292 : 8 , 1294 : 8 , 1312 : 8 , 1322 : 8 , 1331 : 8 , 1332 : 8 , 1333 : 8 , 1342 : 6 , 1345 : 8 , 1348 : 8 , 1349 : 8 , 1351 : 8 , 1353 : 8 , 1356 : 8 , 1363 : 8 , 1365 : 8 , 1366 : 8 , 1367 : 8 , 1369 : 8 , 1407 : 8 , 1414 : 3 , 1415 : 8 , 1419 : 8 , 1425 : 2 , 1427 : 6 , 1440 : 8 , 1456 : 4 , 1470 : 8 , 1472 : 8 , 1486 : 8 , 1487 : 8 , 1491 : 8 , 1492 : 8 , 1530 : 8 , 1532 : 5 , 1792 : 8 , 1872 : 8 , 1937 : 8 , 1953 : 8 , 1968 : 8 , 1988 : 8 , 1996 : 8 , 2000 : 8 , 2001 : 8 , 2004 : 8 , 2008 : 8 , 2009 : 8 , 2012 : 8 , 2015 : 8 , 2016 : 8 , 2017 : 8 , 2024 : 8 , 2025 : 8 , 1371 : 8 , 1397 : 8 , 1961 : 8
} ] ,
CAR . KIA_SORENTO : [ {
67 : 8 , 68 : 8 , 127 : 8 , 304 : 8 , 320 : 8 , 339 : 8 , 356 : 4 , 544 : 8 , 593 : 8 , 608 : 8 , 688 : 5 , 809 : 8 , 832 : 8 , 854 : 7 , 870 : 7 , 871 : 8 , 872 : 8 , 897 : 8 , 902 : 8 , 903 : 8 , 916 : 8 , 1040 : 8 , 1042 : 8 , 1056 : 8 , 1057 : 8 , 1064 : 8 , 1078 : 4 , 1107 : 5 , 1136 : 8 , 1151 : 6 , 1168 : 7 , 1170 : 8 , 1173 : 8 , 1265 : 4 , 1280 : 1 , 1287 : 4 , 1290 : 8 , 1292 : 8 , 1294 : 8 , 1312 : 8 , 1322 : 8 , 1331 : 8 , 1332 : 8 , 1333 : 8 , 1342 : 6 , 1345 : 8 , 1348 : 8 , 1363 : 8 , 1369 : 8 , 1370 : 8 , 1371 : 8 , 1384 : 8 , 1407 : 8 , 1411 : 8 , 1419 : 8 , 1425 : 2 , 1427 : 6 , 1444 : 8 , 1456 : 4 , 1470 : 8 , 1489 : 1
} ] ,
@ -1144,25 +1140,40 @@ FW_VERSIONS = {
} ,
CAR . KIA_OPTIMA : {
( Ecu . fwdRadar , 0x7d0 , None ) : [
b ' \xf1 \x00 JF__ SCC F-CUP 1.00 1.00 96400-D411 0 ' ,
b ' \xf1 \x00 JF__ SCC F-CUP 1.00 1.00 96400-D410 0 ' ,
] ,
( Ecu . abs , 0x7d1 , None ) : [
b ' \xf1 \x00 JF ESC \x0b 11 \x18 \x03 0 58920-D51 80 ' ,
b ' \xf1 \x00 JF ESC \x0f 16 \x16 \x06 \x17 58920-D50 80 ' ,
] ,
( Ecu . engine , 0x7e0 , None ) : [
b ' \xf1 \x89 F1JF600AISEIU702 \xf1 \x82 F1JF600AISEIU702 ' ,
( Ecu . fwdCamera , 0x7c4 , None ) : [
b ' \xf1 \x00 JFWGN LDWS AT USA LHD 1.00 1.02 95895-D4100 G21 ' ,
] ,
( Ecu . eps , 0x7d4 , None ) : [
b ' \xf1 \x00 TM MDPS C 1.00 1.00 56340-S2000 8409 ' ,
( Ecu . transmission , 0x7e1 , None ) : [
b ' \xf1 \x87 \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xf1 \x81 6T6J0051 \x00 \x00 \xf1 \x00 6T6J0_C2 \x00 \x00 6T6J0051 \x00 \x00 TJF0T20NSB \x00 \x00 \x00 \x00 ' ,
] ,
} ,
CAR . KIA_OPTIMA_2019 : {
( Ecu . fwdRadar , 0x7d0 , None ) : [
b ' \xf1 \x00 JF__ SCC F-CUP 1.00 1.00 96400-D4110 ' ,
] ,
( Ecu . abs , 0x7d1 , None ) : [
b ' \xf1 \x00 JF ESC \x0b 11 \x18 \x03 0 58920-D5180 ' ,
b " \xf1 \x00 JF ESC \t 11 \x18 \x03 ' 58920-D5260 " ,
] ,
( Ecu . fwdCamera , 0x7c4 , None ) : [
b ' \xf1 \x00 JFA LKAS AT USA LHD 1.00 1.00 95895-D5001 h32 ' ,
b ' \xf1 \x00 JFA LKAS AT USA LHD 1.00 1.02 95895-D5000 h31 ' ,
b ' \xf1 \x00 JFA LKAS AT USA LHD 1.00 1.00 95895-D5100 h32 ' ,
] ,
( Ecu . transmission , 0x7e1 , None ) : [
b ' \xf1 \x00 6U2V0_C2 \x00 \x00 6U2V8051 \x00 \x00 DJF0T16NL0 \t \xd2 GW ' ,
b ' \xf1 \x00 6U2V0_C2 \x00 \x00 6U2VA051 \x00 \x00 DJF0T16NL1 \xca 3 \xeb . ' ,
b ' \xf1 \x00 6U2V0_C2 \x00 \x00 6U2VC051 \x00 \x00 DJF0T16NL2 \x9e A \x80 \x01 ' ,
b ' \xf1 \x00 6U2V0_C2 \x00 \x00 6U2VA051 \x00 \x00 DJF0T16NL1 \x00 \x00 \x00 \x00 ' ,
b ' \xf1 \x81 6U2V8051 \x00 \x00 \xf1 \x00 6U2V0_C2 \x00 \x00 6U2V8051 \x00 \x00 DJF0T16NL0 \t \xd2 GW ' ,
b ' \xf1 \x81 6U2VA051 \x00 \x00 \xf1 \x00 6U2V0_C2 \x00 \x00 6U2VA051 \x00 \x00 DJF0T16NL1 \xca 3 \xeb . ' ,
b ' \xf1 \x81 6U2VC051 \x00 \x00 \xf1 \x00 6U2V0_C2 \x00 \x00 6U2VC051 \x00 \x00 DJF0T16NL2 \x9e A \x80 \x01 ' ,
b ' \xf1 \x81 6U2VA051 \x00 \x00 \xf1 \x00 6U2V0_C2 \x00 \x00 6U2VA051 \x00 \x00 DJF0T16NL1 \x00 \x00 \x00 \x00 ' ,
b ' \xf1 \x87 \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xff \xf1 \x81 6T6B8051 \x00 \x00 \xf1 \x00 6T6H0_C2 \x00 \x00 6T6B8051 \x00 \x00 TJFSG24NH27 \xa7 \xc2 \xb4 ' ,
] ,
} ,
CAR . ELANTRA_2021 : {
@ -1358,7 +1369,7 @@ CHECKSUM = {
FEATURES = {
# which message has the gear
" use_cluster_gears " : { CAR . ELANTRA , CAR . ELANTRA_GT_I30 , CAR . KONA } ,
" use_tcu_gears " : { CAR . KIA_OPTIMA , CAR . SONATA_LF , CAR . VELOSTER , CAR . TUCSON } ,
" use_tcu_gears " : { CAR . KIA_OPTIMA , CAR . KIA_OPTIMA_2019 , CAR . SONATA_LF , CAR . VELOSTER , CAR . TUCSON } ,
" use_elect_gears " : { CAR . KIA_NIRO_EV , CAR . KIA_NIRO_PHEV , CAR . KIA_NIRO_HEV_2021 , CAR . KIA_OPTIMA_H , CAR . IONIQ_EV_LTD , CAR . KONA_EV , CAR . IONIQ , CAR . IONIQ_EV_2020 , CAR . IONIQ_PHEV , CAR . ELANTRA_HEV_2021 , CAR . SONATA_HYBRID , CAR . KONA_HEV , CAR . IONIQ_HEV_2022 , CAR . SANTA_FE_HEV_2022 , CAR . SANTA_FE_PHEV_2022 , CAR . IONIQ_PHEV_2019 , CAR . KONA_EV_2022 } ,
# these cars use the FCA11 message for the AEB and FCW signals, all others use SCC12
@ -1374,7 +1385,7 @@ HYBRID_CAR = {CAR.IONIQ_PHEV, CAR.ELANTRA_HEV_2021, CAR.KIA_NIRO_PHEV, CAR.KIA_N
EV_CAR = { CAR . IONIQ_EV_2020 , CAR . IONIQ_EV_LTD , CAR . KONA_EV , CAR . KIA_NIRO_EV , CAR . KONA_EV_2022 }
# 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_2020 , CAR . IONIQ_EV_LTD , CAR . IONIQ_PHEV , CAR . IONIQ , CAR . KONA_EV , CAR . KIA_SORENTO , CAR . SONATA_LF , CAR . KIA_OPTIMA , CAR . VELOSTER , CAR . KIA_STINGER , CAR . GENESIS_G70 , CAR . GENESIS_G80 , CAR . KIA_CEED , CAR . ELANTRA , CAR . IONIQ_HEV_2022 }
LEGACY_SAFETY_MODE_CAR = { CAR . HYUNDAI_GENESIS , CAR . IONIQ_EV_2020 , CAR . IONIQ_EV_LTD , CAR . IONIQ_PHEV , CAR . IONIQ , CAR . KONA_EV , CAR . KIA_SORENTO , CAR . SONATA_LF , CAR . KIA_OPTIMA , CAR . KIA_OPTIMA_2019 , CAR . VELOSTER , CAR . KIA_STINGER , CAR . GENESIS_G70 , CAR . GENESIS_G80 , CAR . KIA_CEED , CAR . ELANTRA , CAR . IONIQ_HEV_2022 }
# If 0x500 is present on bus 1 it probably has a Mando radar outputting radar points.
# If no points are outputted by default it might be possible to turn it on using selfdrive/debug/hyundai_enable_radar_points.py
@ -1400,6 +1411,7 @@ DBC = {
CAR . KIA_NIRO_PHEV : dbc_dict ( ' hyundai_kia_generic ' , ' hyundai_kia_mando_front_radar ' ) ,
CAR . KIA_NIRO_HEV_2021 : dbc_dict ( ' hyundai_kia_generic ' , None ) ,
CAR . KIA_OPTIMA : dbc_dict ( ' hyundai_kia_generic ' , None ) ,
CAR . KIA_OPTIMA_2019 : dbc_dict ( ' hyundai_kia_generic ' , None ) ,
CAR . KIA_OPTIMA_H : dbc_dict ( ' hyundai_kia_generic ' , None ) ,
CAR . KIA_SELTOS : dbc_dict ( ' hyundai_kia_generic ' , None ) ,
CAR . KIA_SORENTO : dbc_dict ( ' hyundai_kia_generic ' , None ) , # Has 0x5XX messages, but different format