@@ -23,20 +23,20 @@ g_product_lut_idx = {
2323 "ALIAS_STYLE" : 4
2424}
2525
26- g_chassis_sizes = ["?" ,"AV15" ,"Q30" ,"S45" ,"XL60" ,"F8X1" ,"F8X2" ,"F8X3" ,"2U" ,"2UGW" ,"1UGW" ,"F2" ,"HL15" ,"VM8" ,"VM16" ,"VM32" ,"HL4" ,"HL8" ,"PRO4" ,"PRO8" ,"PRO15" ,"STUDIO8" ,"HL15_BEAST" ,"F16" ,"VM2" ]
26+ g_chassis_sizes = ["?" ,"AV15" ,"Q30" ,"S45" ,"XL60" ,"F8X1" ,"F8X2" ,"F8X3" ,"2U" ,"2UGW" ,"1UGW" ,"F2" ,"HL15" ,"VM8" ,"VM16" ,"VM32" ,"HL4" ,"HL8" ,"PRO4" ,"PRO8" ,"PRO15" ,"STUDIO8" ,"HL15_BEAST" ,"F16" ,"VM2" , "2UGW_REV2" ]
2727
2828g_mobo_to_version_lut = {
29- "Base" : ["X11SSH-CTF" ,"X11SSM-F" ,"ME03-CE0-000" ,"MS03-6L0-000" ,"MS73-HB0-000" ,"MZ73-LM0-000" ,"MC13-LE1-000" ,"B550I AORUS PRO" ,"EC266D2I-2T/AQC" ,"ROMED8-2T/BCM" ,"ROMED8-2T" , "ProArt X870E-CREATOR WIFI" ],
30- "Base-B" : ["X11SPL-F" ,"ME03-CE0-000" ,"MS03-6L0-000" ,"MS73-HB0-000" ,"MZ73-LM0-000" ,"MC13-LE1-000" ,"B550I AORUS PRO" ,"EC266D2I-2T/AQC" ,"ROMED8-2T/BCM" ,"ROMED8-2T" , "ProArt X870E-CREATOR WIFI" ],
31- "Enhanced" : ["X11SPL-F" ,"X10SRL-F" ,"ME03-CE0-000" ,"MS03-6L0-000" ,"MS73-HB0-000" ,"MZ73-LM0-000" ,"MC13-LE1-000" ,"B550I AORUS PRO" ,"EC266D2I-2T/AQC" ,"ROMED8-2T/BCM" ,"ROMED8-2T" , "ProArt X870E-CREATOR WIFI" ],
32- "Enhanced-S" :["X11SPL-F" ,"ME03-CE0-000" ,"MS03-6L0-000" ,"MS73-HB0-000" ,"MZ73-LM0-000" ,"MC13-LE1-000" ,"B550I AORUS PRO" ,"EC266D2I-2T/AQC" ,"ROMED8-2T/BCM" ,"ROMED8-2T" , "ProArt X870E-CREATOR WIFI" ],
33- "Enhanced-AMD" :["H11SSL-i" ,"ME03-CE0-000" ,"MS03-6L0-000" ,"MS73-HB0-000" ,"MZ73-LM0-000" ,"MC13-LE1-000" ,"B550I AORUS PRO" ,"EC266D2I-2T/AQC" ,"ROMED8-2T/BCM" ,"ROMED8-2T" , "ProArt X870E-CREATOR WIFI" ],
34- "Turbo" : ["X11DPL-i" ,"X10DRL-i" ,"X12DPi-N6" ,"ME03-CE0-000" ,"MS03-6L0-000" ,"MS73-HB0-000" ,"MZ73-LM0-000" ,"MC13-LE1-000" ,"B550I AORUS PRO" ,"EC266D2I-2T/AQC" ,"ROMED8-2T/BCM" ,"ROMED8-2T" , "ProArt X870E-CREATOR WIFI" ],
35- "Turbo-G" :["X11SPL-F" ,"X12DPi-N6" ,"ME03-CE0-000" ,"MS03-6L0-000" ,"MS73-HB0-000" ,"MZ73-LM0-000" ,"MC13-LE1-000" ,"B550I AORUS PRO" ,"EC266D2I-2T/AQC" ,"ROMED8-2T/BCM" ,"ROMED8-2T" , "ProArt X870E-CREATOR WIFI" ],
36- "Good" : ["H12SSL-i" ,"H12SSL-I" ,"ME03-CE0-000" ,"MS03-6L0-000" ,"MS73-HB0-000" ,"MZ73-LM0-000" ,"MC13-LE1-000" ,"B550I AORUS PRO" ,"EC266D2I-2T/AQC" ,"ROMED8-2T/BCM" ,"ROMED8-2T" , "ProArt X870E-CREATOR WIFI" ],
37- "Better" : ["H12SSL-i" ,"H12SSL-I" ,"ME03-CE0-000" ,"MS03-6L0-000" ,"MS73-HB0-000" ,"MZ73-LM0-000" ,"MC13-LE1-000" ,"B550I AORUS PRO" ,"EC266D2I-2T/AQC" ,"ROMED8-2T/BCM" ,"ROMED8-2T" , "ProArt X870E-CREATOR WIFI" ],
38- "Best" : ["H12SSL-i" ,"H12SSL-I" ,"ME03-CE0-000" ,"MS03-6L0-000" ,"MS73-HB0-000" ,"MZ73-LM0-000" ,"MC13-LE1-000" ,"B550I AORUS PRO" ,"EC266D2I-2T/AQC" ,"ROMED8-2T/BCM" ,"ROMED8-2T" , "ProArt X870E-CREATOR WIFI" ],
39- "Super" : ["H12SSL-i" ,"H12SSL-I" ,"ME03-CE0-000" ,"MS03-6L0-000" ,"MS73-HB0-000" ,"MZ73-LM0-000" ,"MC13-LE1-000" ,"B550I AORUS PRO" ,"EC266D2I-2T/AQC" ,"ROMED8-2T/BCM" ,"ROMED8-2T" , "ProArt X870E-CREATOR WIFI" ]
29+ "Base" : ["X11SSH-CTF" ,"X11SSM-F" ,"ME03-CE0-000" ,"MS03-6L0-000" ,"MS73-HB0-000" ,"MZ73-LM0-000" ,"MC13-LE1-000" ,"B550I AORUS PRO" ,"EC266D2I-2T/AQC" ,"ROMED8-2T/BCM" ,"ROMED8-2T" , "ProArt X870E-CREATOR WIFI" , "MH53-G40-000" ],
30+ "Base-B" : ["X11SPL-F" ,"ME03-CE0-000" ,"MS03-6L0-000" ,"MS73-HB0-000" ,"MZ73-LM0-000" ,"MC13-LE1-000" ,"B550I AORUS PRO" ,"EC266D2I-2T/AQC" ,"ROMED8-2T/BCM" ,"ROMED8-2T" , "ProArt X870E-CREATOR WIFI" , "MH53-G40-000" ],
31+ "Enhanced" : ["X11SPL-F" ,"X10SRL-F" ,"ME03-CE0-000" ,"MS03-6L0-000" ,"MS73-HB0-000" ,"MZ73-LM0-000" ,"MC13-LE1-000" ,"B550I AORUS PRO" ,"EC266D2I-2T/AQC" ,"ROMED8-2T/BCM" ,"ROMED8-2T" , "ProArt X870E-CREATOR WIFI" , "MH53-G40-000" ],
32+ "Enhanced-S" :["X11SPL-F" ,"ME03-CE0-000" ,"MS03-6L0-000" ,"MS73-HB0-000" ,"MZ73-LM0-000" ,"MC13-LE1-000" ,"B550I AORUS PRO" ,"EC266D2I-2T/AQC" ,"ROMED8-2T/BCM" ,"ROMED8-2T" , "ProArt X870E-CREATOR WIFI" , "MH53-G40-000" ],
33+ "Enhanced-AMD" :["H11SSL-i" ,"ME03-CE0-000" ,"MS03-6L0-000" ,"MS73-HB0-000" ,"MZ73-LM0-000" ,"MC13-LE1-000" ,"B550I AORUS PRO" ,"EC266D2I-2T/AQC" ,"ROMED8-2T/BCM" ,"ROMED8-2T" , "ProArt X870E-CREATOR WIFI" , "MH53-G40-000" ],
34+ "Turbo" : ["X11DPL-i" ,"X10DRL-i" ,"X12DPi-N6" ,"ME03-CE0-000" ,"MS03-6L0-000" ,"MS73-HB0-000" ,"MZ73-LM0-000" ,"MC13-LE1-000" ,"B550I AORUS PRO" ,"EC266D2I-2T/AQC" ,"ROMED8-2T/BCM" ,"ROMED8-2T" , "ProArt X870E-CREATOR WIFI" , "MH53-G40-000" ],
35+ "Turbo-G" :["X11SPL-F" ,"X12DPi-N6" ,"ME03-CE0-000" ,"MS03-6L0-000" ,"MS73-HB0-000" ,"MZ73-LM0-000" ,"MC13-LE1-000" ,"B550I AORUS PRO" ,"EC266D2I-2T/AQC" ,"ROMED8-2T/BCM" ,"ROMED8-2T" , "ProArt X870E-CREATOR WIFI" , "MH53-G40-000" ],
36+ "Good" : ["H12SSL-i" ,"H12SSL-I" ,"ME03-CE0-000" ,"MS03-6L0-000" ,"MS73-HB0-000" ,"MZ73-LM0-000" ,"MC13-LE1-000" ,"B550I AORUS PRO" ,"EC266D2I-2T/AQC" ,"ROMED8-2T/BCM" ,"ROMED8-2T" , "ProArt X870E-CREATOR WIFI" , "MH53-G40-000" ],
37+ "Better" : ["H12SSL-i" ,"H12SSL-I" ,"ME03-CE0-000" ,"MS03-6L0-000" ,"MS73-HB0-000" ,"MZ73-LM0-000" ,"MC13-LE1-000" ,"B550I AORUS PRO" ,"EC266D2I-2T/AQC" ,"ROMED8-2T/BCM" ,"ROMED8-2T" , "ProArt X870E-CREATOR WIFI" , "MH53-G40-000" ],
38+ "Best" : ["H12SSL-i" ,"H12SSL-I" ,"ME03-CE0-000" ,"MS03-6L0-000" ,"MS73-HB0-000" ,"MZ73-LM0-000" ,"MC13-LE1-000" ,"B550I AORUS PRO" ,"EC266D2I-2T/AQC" ,"ROMED8-2T/BCM" ,"ROMED8-2T" , "ProArt X870E-CREATOR WIFI" , "MH53-G40-000" ],
39+ "Super" : ["H12SSL-i" ,"H12SSL-I" ,"ME03-CE0-000" ,"MS03-6L0-000" ,"MS73-HB0-000" ,"MZ73-LM0-000" ,"MC13-LE1-000" ,"B550I AORUS PRO" ,"EC266D2I-2T/AQC" ,"ROMED8-2T/BCM" ,"ROMED8-2T" , "ProArt X870E-CREATOR WIFI" , "MH53-G40-000" ]
4040}
4141
4242g_product_lut = {
@@ -45,7 +45,14 @@ g_product_lut = {
4545 "Gateway-2UGW-Enhanced" : [g_mobo_to_version_lut ["Enhanced" ],0 ,0 ,"2UGW" ,"2UGW" ],
4646 "Gateway-2UGW-Enhanced-S" : [g_mobo_to_version_lut ["Enhanced" ],0 ,0 ,"2UGW" ,"2UGW" ],
4747 "Gateway-2UGW-Turbo-G" : [g_mobo_to_version_lut ["Turbo" ],0 ,0 ,"2UGW" ,"2UGW" ],
48-
48+
49+ "Gateway-2UGW_REV2-Base" : [g_mobo_to_version_lut ["Base" ],0 ,0 ,"2UGW_REV2" ,"2UGW_REV2" ],
50+ "Gateway-2UGW_REV2-Base-B" : [g_mobo_to_version_lut ["Base" ],0 ,0 ,"2UGW_REV2" ,"2UGW_REV2" ],
51+ "Gateway-2UGW_REV2-Enhanced" : [g_mobo_to_version_lut ["Enhanced" ],0 ,0 ,"2UGW_REV2" ,"2UGW_REV2" ],
52+ "Gateway-2UGW_REV2-Enhanced-S" : [g_mobo_to_version_lut ["Enhanced" ],0 ,0 ,"2UGW_REV2" ,"2UGW_REV2" ],
53+ "Gateway-2UGW_REV2-Turbo-G" : [g_mobo_to_version_lut ["Turbo" ],0 ,0 ,"2UGW_REV2" ,"2UGW_REV2" ],
54+
55+
4956 "Gateway-1UGW-Base" : [g_mobo_to_version_lut ["Base" ],0 ,0 ,"1UGW" ,"1UGW" ],
5057 "Gateway-1UGW-Base-B" : [g_mobo_to_version_lut ["Base" ],0 ,0 ,"1UGW" ,"1UGW" ],
5158 "Gateway-1UGW-Enhanced" : [g_mobo_to_version_lut ["Enhanced" ],0 ,0 ,"1UGW" ,"1UGW" ],
@@ -1180,6 +1187,21 @@ def infer_homelab_model_from_sysfs_ports(allowed_mobos=None, detected_mobo_name=
11801187
11811188 return (None , None )
11821189
1190+ def normalize_model_key (model_name ):
1191+ # Some firmware revisions report REV2 with dashes instead of underscores.
1192+ # Normalize to the LUT naming so lookups remain stable.
1193+ if model_name in g_product_lut :
1194+ return model_name
1195+ if "-REV2-" in model_name :
1196+ return model_name .replace ("-REV2-" , "_REV2-" )
1197+ return model_name
1198+
1199+ def normalize_chassis_size (chassis_size ):
1200+ # Normalize REV2 part numbers to match internal LUT/template naming.
1201+ if chassis_size == "2UGW-REV2" :
1202+ return "2UGW_REV2"
1203+ return chassis_size
1204+
11831205def main ():
11841206 server = {
11851207 "Motherboard" :"?" ,
@@ -1210,7 +1232,7 @@ def main():
12101232 if not server ["VM" ]:
12111233 serial_result = serial_check ()
12121234 server ["Serial" ] = serial_result ["Product Serial" ].upper ()
1213- server ["Chassis Size" ] = serial_result ["Product Part Number" ].upper ()
1235+ server ["Chassis Size" ] = normalize_chassis_size ( serial_result ["Product Part Number" ].upper () )
12141236 server ["Model" ] = determine_model (server ["Motherboard" ]["Product Name" ],server ["HBA" ],server ["Chassis Size" ]) if old_serial (serial_result ) else serial_result ["Product Name" ]
12151237
12161238 # If we don't have IPMI and fell back to a generic Product Name,
@@ -1232,7 +1254,14 @@ def main():
12321254 if len (server ["HBA" ]) > 0 and server ["VM" ]:
12331255 vm_passthrough (server ) # VM with hba pass through detected, update server accordingly
12341256
1235- server ["Alias Style" ] = g_product_lut [server ["Model" ]][g_product_lut_idx ["ALIAS_STYLE" ]]
1257+ server ["Model" ] = normalize_model_key (server ["Model" ])
1258+ server ["Chassis Size" ] = normalize_chassis_size (server ["Chassis Size" ])
1259+ if server ["Model" ] in g_product_lut :
1260+ server ["Alias Style" ] = g_product_lut [server ["Model" ]][g_product_lut_idx ["ALIAS_STYLE" ]]
1261+ else :
1262+ server ["Alias Style" ] = "?"
1263+ print ("/opt/45drives/tools/server_identifier: !! WARNING !!" )
1264+ print (" Unrecognized model \" {m}\" . Alias style and HBA expectations are unknown." .format (m = server ["Model" ]))
12361265
12371266 # set auto alias flag for servers that are automatically aliased using udev rules.
12381267 if server ["Alias Style" ] in ["F2STORNADO" ,"STORINATORUBM" ]:
@@ -1252,10 +1281,11 @@ def main():
12521281 update_json_file (server ,scan_time )
12531282
12541283 # warn user if improper number of HBA cards are detected.
1255- if len (server ["HBA" ]) != g_product_lut [server ["Model" ]][g_product_lut_idx ["24I_COUNT" ]] + g_product_lut [server ["Model" ]][g_product_lut_idx ["16I_COUNT" ]]:
1256- print ("/opt/45drives/tools/server_identifier: !! WARNING !!" )
1257- print (" Quantity of HBA Cards detected does not match the quantity expected" )
1258- print (" for a \" {m}\" . Drive aliasing may not work as desired. " .format (m = server ["Model" ]))
1284+ if server ["Model" ] in g_product_lut :
1285+ if len (server ["HBA" ]) != g_product_lut [server ["Model" ]][g_product_lut_idx ["24I_COUNT" ]] + g_product_lut [server ["Model" ]][g_product_lut_idx ["16I_COUNT" ]]:
1286+ print ("/opt/45drives/tools/server_identifier: !! WARNING !!" )
1287+ print (" Quantity of HBA Cards detected does not match the quantity expected" )
1288+ print (" for a \" {m}\" . Drive aliasing may not work as desired. " .format (m = server ["Model" ]))
12591289 exit (0 )
12601290
12611291if __name__ == "__main__" :
0 commit comments