]> git.proxmox.com Git - mirror_smartmontools-debian.git/blobdiff - knowndrives.cpp
Imported smartmontools-5.37.cvs20061111
[mirror_smartmontools-debian.git] / knowndrives.cpp
index 9fea5cd69d36c26baabdb93a83ab470367d6dccd..4c204f631cd9cefcc8771ad4bc834e810124f65e 100644 (file)
@@ -26,7 +26,7 @@
 #include "knowndrives.h"
 #include "utility.h" // includes <regex.h>
 
-const char *knowndrives_c_cvsid="$Id: knowndrives.cpp,v 1.144 2006/09/24 16:32:25 chrfranke Exp $"
+const char *knowndrives_c_cvsid="$Id: knowndrives.cpp,v 1.156 2006/10/30 22:35:28 pjwilliams Exp $"
 ATACMDS_H_CVSID ATAPRINT_H_CVSID CONFIG_H_CVSID EXTERN_H_CVSID INT64_H_CVSID KNOWNDRIVES_H_CVSID UTILITY_H_CVSID;
 
 #define MODEL_STRING_LENGTH                         40
@@ -180,25 +180,55 @@ const drivesettings knowndrives[] = {
     vendoropts_9_seconds,
     NULL, NULL
   },
-  { "Fujitsu MHG..MHK, MHT, MHU series",
-    "^FUJITSU MH[GHJKTU]2...ATU?",
+  { "Fujitsu MHG series",
+    "^FUJITSU MHG2...ATU?",
     ".*",
     NULL,
     vendoropts_9_seconds,
     NULL, NULL
   },
-  { NULL, // Fujitsu MHN2300AT
-    "^FUJITSU MHN2300AT$",
+  { "Fujitsu MHH series",
+    "^FUJITSU MHH2...ATU?",
     ".*",
     NULL,
     vendoropts_9_seconds,
     NULL, NULL
   },
-  { NULL, // Fujitsu MHR2040AT
-    "^FUJITSU MHR2040AT$",
-    ".*",    // Tested on 40BA
+  { "Fujitsu MHJ series",
+    "^FUJITSU MHJ2...ATU?",
+    ".*",
     NULL,
-    vendoropts_Fujitsu_MHR2040AT,
+    vendoropts_9_seconds,
+    NULL, NULL
+  },
+  { "Fujitsu MHK series",
+    "^FUJITSU MHK2...ATU?",
+    ".*",
+    NULL,
+    vendoropts_9_seconds,
+    NULL, NULL
+  },
+  { NULL,  // Fujitsu MHL2300AT
+    "^FUJITSU MHL2300AT$",
+    ".*",
+    "This drive's firmware has a harmless Drive Identity Structure\n"
+      "checksum error bug.",
+    vendoropts_9_seconds,
+    NULL, NULL
+  },
+  { NULL,  // MHM2200AT, MHM2150AT, MHM2100AT, MHM2060AT
+    "^FUJITSU MHM2(20|15|10|06)0AT$",
+    ".*",
+    "This drive's firmware has a harmless Drive Identity Structure\n"
+      "checksum error bug.",
+    vendoropts_9_seconds,
+    NULL, NULL
+  },
+  { "Fujitsu MHN series",
+    "^FUJITSU MHN2...AT$",
+    ".*",
+    NULL,
+    vendoropts_9_seconds,
     NULL, NULL
   },
   { NULL, // Fujitsu MHR2020AT
@@ -208,6 +238,13 @@ const drivesettings knowndrives[] = {
     vendoropts_9_seconds,
     NULL, NULL
   },
+  { NULL, // Fujitsu MHR2040AT
+    "^FUJITSU MHR2040AT$",
+    ".*",    // Tested on 40BA
+    NULL,
+    vendoropts_Fujitsu_MHR2040AT,
+    NULL, NULL
+  },
   { "Fujitsu MHSxxxxAT family",
     "^FUJITSU MHS20[6432]0AT(  .)?$",
     ".*",
@@ -215,11 +252,24 @@ const drivesettings knowndrives[] = {
     vendoropts_Fujitsu_MHS2020AT,
     NULL, NULL
   },
-  { NULL, // Fujitsu MHL2300AT, MHM2200AT, MHM2100AT, MHM2150AT
-    "^FUJITSU MH(L230|M2(20|10|15))0AT$",
+  { "Fujitsu MHT series",
+    "^FUJITSU MHT2...(AH|AS|AT|BH)U?",
     ".*",
-    "This drive's firmware has a harmless Drive Identity Structure\n"
-      "checksum error bug.",
+    NULL,
+    vendoropts_9_seconds,
+    NULL, NULL
+  },
+  { "Fujitsu MHU series",
+    "^FUJITSU MHU2...ATU?",
+    ".*",
+    NULL,
+    vendoropts_9_seconds,
+    NULL, NULL
+  },
+  { "Fujitsu MHV series",
+    "^FUJITSU MHV2...(AH|AS|AT|BH|BS|BT)",
+    ".*",
+    NULL,
     vendoropts_9_seconds,
     NULL, NULL
   },
@@ -294,13 +344,35 @@ const drivesettings knowndrives[] = {
     specialpurpose_reverse_samsung,
     same_as_minus_F
   },
+  { NULL, // SAMSUNG SP8004H with QW100-61 firmware
+    "^SAMSUNG SP8004H$",
+    "^QW100-61$",
+    NULL,
+    vendoropts_9_halfminutes,
+    specialpurpose_reverse_samsung,
+    same_as_minus_F
+  },
   { "SAMSUNG SpinPoint T133 series", // tested with HD300LJ/ZT100-12, HD400LJ/ZZ100-14, HD401LJ/ZZ100-15
-    "^SAMSUNG HD[34][02][01]L[DJ]$",
+    "^SAMSUNG HD(250KD|(30[01]|320|40[01])L[DJ])$",
     ".*",
+    NULL, NULL, NULL, NULL
+  },
+  { "SAMSUNG SpinPoint P120 series", // tested with SP2504C/VT100-33
+    "^SAMSUNG SP(16[01]3|2[05][01]4)[CN]$",
+    ".*",
+    NULL, NULL, NULL, NULL
+  },
+  { "SAMSUNG SpinPoint P80 SD series", // tested with HD160JJ/ZM100-33
+    "^SAMSUNG HD(080H|120I|160J)J$",
+    ".*",
+    NULL, NULL, NULL, NULL
+  },
+  { "SAMSUNG SpinPoint P80 series", // firmware *-26 or later, tested with SP1614C/SW100-34
+    "^SAMSUNG SP(0451|08[0124]2|12[0145]3|16[0145]4)[CN]$",
+    ".*-(2[6789]|3[0-9])$",
     NULL,
-    NULL,
-    NULL,
-    NULL
+    vendoropts_9_halfminutes,
+    NULL, NULL
   },
   { 
     NULL, // Any other Samsung disk with *-23 *-24 firmware
@@ -416,8 +488,8 @@ const drivesettings knowndrives[] = {
     vendoropts_9_minutes,
     NULL, NULL
   },
-  { "Maxtor DiamondMax 4320 family",
-    "^Maxtor (91728D8|91512D7|91303D6|91080D5|90845D4|90645D3|90648D4|90432D2)$",
+  { "Maxtor DiamondMax 4320 Ultra ATA family",
+    "^Maxtor (91728D8|91512D7|91303D6|91080D5|90845D4|90645D3|90648D[34]|90432D2)$",
     ".*",
     NULL,
     vendoropts_9_minutes,
@@ -479,6 +551,20 @@ const drivesettings knowndrives[] = {
     vendoropts_9_minutes,
     NULL, NULL
   },
+  { "Maxtor DiamondMax 60 ATA 66 family",
+    "^Maxtor 9(1023U2|1536U2|2049U3|2305U3|3073U4|4610U6|6147U8)$",
+    ".*",
+    NULL,
+    vendoropts_9_minutes,
+    NULL, NULL
+  },
+  { "Maxtor DiamondMax 60 ATA 100 family",
+    "^Maxtor 9(1023H2|1536H2|2049H3|2305H3|3073H4|4610H6|6147H8)$",
+    ".*",
+    NULL,
+    vendoropts_9_minutes,
+    NULL, NULL
+  },
   { "Maxtor DiamondMax Plus 60 family",
     "^Maxtor 5T0(60H6|40H4|30H3|20H2|10H1)$",
     ".*",
@@ -501,19 +587,24 @@ const drivesettings knowndrives[] = {
     NULL, NULL
   },
   { "Maxtor DiamondMax Plus 8 family",
-    "^Maxtor 6E0[234]0L0$",
+    "^Maxtor 6(E0[234]|K04)0L0$",
     ".*",
     NULL,
     vendoropts_9_minutes,
     NULL, NULL
   },
-  { "Maxtor DiamondMax 10 family",
-    "^Maxtor 6(B(30|25|20|16|12|08)0[MPRS]|L(100P|120[MP]|160M|200[MPRS]|250[RS]|300[RS]))0$",
+  { "Maxtor DiamondMax 10 family (ATA/133 and SATA/150)",
+    "^Maxtor 6(B(30|25|20|16|12|08)0[MPRS]|L(080[MLP]|(100|120)[MP]|160[MP]|200[MPRS]|250[RS]|300[RS]))0$",
     ".*",
     NULL,
     vendoropts_9_minutes,
     NULL, NULL
   },
+  { "Maxtor DiamondMax 10 family (SATA/300)",
+    "^Maxtor 6V(080E|160E|200E|250F|300F|320F)0$",
+    ".*",
+    NULL, NULL, NULL, NULL
+  },
   { "Maxtor DiamondMax Plus 9 family",
     "^Maxtor 6Y((060|080|120|160)L0|(060|080|120|160|200|250)P0|(060|080|120|160|200|250)M0)$",
     ".*",
@@ -521,6 +612,11 @@ const drivesettings knowndrives[] = {
     vendoropts_9_minutes,
     NULL, NULL
   },
+  { "Maxtor DiamondMax 11 family",
+    "^Maxtor 6H[45]00[FR]0$",
+    ".*",
+    NULL, NULL, NULL, NULL
+  },
   { "Maxtor MaXLine Plus II",
     "^Maxtor 7Y250[PM]0$",
     ".*",
@@ -535,6 +631,23 @@ const drivesettings knowndrives[] = {
     vendoropts_9_minutes,
     NULL, NULL
   },
+  { "Maxtor MaXLine III family (ATA/133 and SATA/150)",
+    "^Maxtor 7L(25|30)0[SR]0$",
+    ".*",
+    NULL,
+    vendoropts_9_minutes,
+    NULL, NULL
+  },
+  { "Maxtor MaXLine III family (SATA/300)",
+    "^Maxtor 7V(25|30)0F0$",
+    ".*",
+    NULL, NULL, NULL, NULL
+  },
+  { "Maxtor MaXLine Pro 500 family",  // There is also a 7H500R0 model, but I
+    "^Maxtor 7H500F0$",               // haven't added it because I suspect
+    ".*",                             // it might need vendoropts_9_minutes
+    NULL, NULL, NULL, NULL            // and nobody has submitted a report yet
+  },
   { NULL, // HITACHI_DK14FA-20B
     "^HITACHI_DK14FA-20B$",
     ".*",
@@ -566,6 +679,11 @@ const drivesettings knowndrives[] = {
     ".*",
     NULL, NULL, NULL, NULL
   },
+  { "IBM Travelstar 4GT family",
+    "^IBM-DTCA-2(324|409)0$",
+    ".*",
+    NULL, NULL, NULL, NULL 
+  },
   { "IBM Travelstar 25GS, 18GT, and 12GN family",
     "^IBM-DARA-2(25|18|15|12|09|06)000$",
     ".*",
@@ -581,6 +699,11 @@ const drivesettings knowndrives[] = {
     ".*",
     NULL, NULL, NULL, NULL 
   },
+  { "IBM Travelstar 4GN family",
+    "^IBM-DKLA-2(216|324|432)0$",
+    ".*",
+    NULL, NULL, NULL, NULL 
+  },
   { "IBM Deskstar 37GP and 34GXP family",
     "^IBM-DPTA-3(5(375|300|225|150)|7(342|273|205|136))0$",
     ".*",
@@ -611,11 +734,26 @@ const drivesettings knowndrives[] = {
     ".*",
     NULL, NULL, NULL, NULL 
   },
+  { "Hitachi Travelstar E5K100 series",
+    "^HTE541040G9(AT|SA)00$",
+    ".*",
+    NULL, NULL, NULL, NULL 
+  },
   { "Hitachi Travelstar 7K60",
     "^HTS726060M9AT00$",
     ".*",
     NULL, NULL, NULL, NULL 
   },
+  { "Hitachi Travelstar 7K100",
+    "^HTS7210[168]0G9(AT|SA)00$",
+    ".*",
+    NULL, NULL, NULL, NULL 
+  },
+  { "Hitachi Travelstar E7K100",
+    "^HTE7210[168]0G9(AT|SA)00$",
+    ".*",
+    NULL, NULL, NULL, NULL 
+  },
   { "Hitachi Travelstar E7K60 family",
     "^HTE7260[46]0M9AT00$",
     ".*",
@@ -642,7 +780,7 @@ const drivesettings knowndrives[] = {
     NULL, NULL, NULL, NULL
   },
   { "Hitachi Deskstar 7K80 series",
-    "^(Hitachi )?HDS7280([48]0PLAT20|(40)?PLA320)$",
+    "^(Hitachi )?HDS7280([48]0PLAT20|(40)?PLA320|80PLA380)$",
     ".*",
     NULL, NULL, NULL, NULL
   },
@@ -651,28 +789,33 @@ const drivesettings knowndrives[] = {
     ".*",
     NULL, NULL, NULL, NULL
   },
+  { "Hitachi Deskstar T7K250 series",
+    "^(Hitachi )?HDT7225((25|20|16)DLA(T80|380))$",
+    ".*",
+    NULL, NULL, NULL, NULL
+  },
   { "Hitachi Deskstar 7K400 series",
     "^(Hitachi )?HDS724040KL(AT|SA)80$",
     ".*",
     NULL, NULL, NULL, NULL
   },
-  { NULL, // TOSHIBA MK4025GAS
-    "^TOSHIBA MK4025GAS$",
+  { "Hitachi Deskstar 7K500 series",
+    "^(Hitachi )?HDS725050KLA(360|T80)$",
     ".*",
     NULL, NULL, NULL, NULL
   },
-  { "Toshiba 2.5\" HDD series", // TOSHIBA MK6021GAS [Bruce -- use for testing on laptop]
-    "^TOSHIBA MK6021GAS$",
+  { "Toshiba 2.5\" HDD series (30-60 GB)",
+    "^TOSHIBA MK((6034|4032)GSX|(6034|4032)GAX|(6026|4026|4019|3019)GAXB?|(6025|6021|4025|4021|4018|3021|3018)GAS|(4036|3029)GACE?|(4018|3017)GAP)$",
     ".*",
     NULL, NULL, NULL, NULL
   },
-  { NULL, // TOSHIBA MK6022GAX
-    "^TOSHIBA MK6022GAX$",
+  { "Toshiba 2.5\" HDD series (80 GB and above)",
+    "^TOSHIBA MK(80(25GAS|26GAX|32GAX|32GSX)|10(31GAS|32GAX)|12(33GAS|34G[AS]X)|2035GSS)$",
     ".*",
     NULL, NULL, NULL, NULL
   },
-  { NULL, // TOSHIBA MK4019GAX/MK4019GAXB
-    "^TOSHIBA MK4019GAXB?$",
+  { NULL, // TOSHIBA MK6022GAX
+    "^TOSHIBA MK6022GAX$",
     ".*",
     NULL, NULL, NULL, NULL
   },
@@ -691,43 +834,43 @@ const drivesettings knowndrives[] = {
     ".*",
     NULL, NULL, NULL, NULL
   },
-  { NULL, // TOSHIBA MK4018GAS, MK4018GAP
-    "^TOSHIBA MK4018GA[SP]$",
+  { "Seagate Momentus family",
+    "^ST9(20|28|40|48)11A$",
     ".*",
     NULL, NULL, NULL, NULL
   },
-  { NULL, // TOSHIBA MK3017GAP
-    "^TOSHIBA MK3017GAP$",
+  { "Seagate Momentus 42 family",
+    "^ST9(2014|3015|4019)A$",
     ".*",
     NULL, NULL, NULL, NULL
   },
-  { NULL, // TOSHIBA MK8026GAX
-    "^TOSHIBA MK8026GAX$",
+  { "Seagate Momentus 4200.2 Series",
+    "^ST9(100822|808210|60821|50212|402113|30219)A$",
     ".*",
     NULL, NULL, NULL, NULL
   },
-  { "Seagate Momentus family",
-    "^ST9(20|28|40|48)11A$",
+  { "Seagate Momentus 5400.2 series",
+    "^ST9(808211|60822|408114|308110|120821|10082[34]|8823|6812|4813|3811)AS?$",
     ".*",
     NULL, NULL, NULL, NULL
   },
-  { "Seagate Momentus 4200.2 Series",
-    "^ST9(100822|808210|60821|50212|402113|30219)A$",
+  { "Seagate Momentus 7200.1 series",
+    "^ST9(10021|80825|6023|4015)AS?$", 
     ".*",
     NULL, NULL, NULL, NULL
   },
-  { "Seagate Momentus 5400.2 series",
-    "^ST9(9808211|960822|808211|408114|308110|120821|10082[34]|98823|96812|94813|93811|60822)AS?$", 
+  { "Seagate Medalist 2110, 3221, 4321, 6531, and 8641",
+    "^ST3(2110|3221|4321|6531|8641)A$",
     ".*",
     NULL, NULL, NULL, NULL
   },
-  { "Seagate Medalist 8641 family",
-    "^ST3(2110|3221|4312|6531|8641)A$",
+  { "Seagate U Series X family",
+    "^ST3(10014A(CE)?|20014A)$",
     ".*",
     NULL, NULL, NULL, NULL
   },
-  { "Seagate U Series X family",
-    "^ST3(10014A(CE)?|20014A)$",
+  { "Seagate U7 family",
+    "^ST3(30012|40012|60012|80022|120020)A$",
     ".*",
     NULL, NULL, NULL, NULL
   },
@@ -782,12 +925,22 @@ const drivesettings knowndrives[] = {
     NULL, NULL, NULL, NULL
   },
   { "Seagate Barracuda 7200.7 and 7200.7 Plus family",
-    "^ST3(200021A|200822AS?|16002[13]AS?|12002[26]AS?|1[26]0827AS|8001[13]AS?|80817AS|60014A|40014AS?)$",
+    "^ST3(200021A|200822AS?|16002[13]AS?|12002[26]AS?|1[26]082[78]AS|8001[13]AS?|80817AS|60014A|40111AS|40014AS?)$",
     ".*",
     NULL, NULL, NULL, NULL
   },
   { "Seagate Barracuda 7200.8 family",
-    "^ST3(400832|300831|250823|200826)AS?$",
+    "^ST3(400[68]32|300[68]31|250[68]23|200826)AS?$",
+    ".*",
+    NULL, NULL, NULL, NULL
+  },
+  { "Seagate Barracuda 7200.9 family",
+    "^ST3(500[68]41|400[68]33|300[68]22|250[68]24|250[68]24|200827|160[28]12|120814|120[28]13|80[28]110|402111)AS?$",
+    ".*",
+    NULL, NULL, NULL, NULL
+  },
+  { "Seagate Barracuda 7200.10 family",
+    "^ST3(750[68]4|500[68]3|400[68]2|320[68]2|300[68]2|250[68]2|20082)0AS?$",
     ".*",
     NULL, NULL, NULL, NULL
   },
@@ -801,6 +954,11 @@ const drivesettings knowndrives[] = {
     ".*",
     NULL, NULL, NULL, NULL
   },
+  { "Seagate NL35 family",
+    "^ST3(250623|250823|400632|400832|250824|250624|400633|400833|500641|500841)NS$",
+    ".*",
+    NULL, NULL, NULL, NULL
+  },
   { "Western Digital Protege",
   /* Western Digital drives with this comment all appear to use Attribute 9 in
    * a  non-standard manner.  These entries may need to be updated when it
@@ -857,6 +1015,11 @@ const drivesettings knowndrives[] = {
     ".*",
     NULL, NULL, NULL, NULL
   },
+  { "Western Digital Caviar Serial ATA family",
+    "^WDC WD(4|8|20|32)00BD-.*$",
+    ".*",
+    NULL, NULL, NULL, NULL
+  },
   { "Western Digital Caviar SE family",
   /* Western Digital drives with this comment all appear to use Attribute 9 in
    * a  non-standard manner.  These entries may need to be updated when it
@@ -868,17 +1031,27 @@ const drivesettings knowndrives[] = {
     NULL, NULL, NULL, NULL
   },
   { "Western Digital Caviar SE (Serial ATA) family",
-    "^WDC WD(4|8|12|16|20|25)00JD-.*$",
+    "^WDC WD((4|8|12|16|20|25|32)00JD|(12|16|20|25|30|32)00JS|1600AAJS)-.*$",
+    ".*",
+    NULL, NULL, NULL, NULL
+  },
+  { "Western Digital Caviar SE16 family",
+    "^WDC WD((25|32|40|50)00KS|4000KD)-.*$",
     ".*",
     NULL, NULL, NULL, NULL
   },
   { "Western Digital Caviar RE Serial ATA series",
-    "^WDC WD((12|16|25|32)00SD|4000YR)-.*$",
+    "^WDC WD((12|16|25|32)00SD|2500YD|4000Y[RS]|5000YS)-.*$",
     ".*",
     NULL, NULL, NULL, NULL
   },
   { "Western Digital Raptor family",
-    "^WDC WD(360|740)GD",
+    "^WDC WD((360|740|800)GD|(360|740|1500)ADFD)-.*$",
+    ".*",
+    NULL, NULL, NULL, NULL
+  },
+  { "Western Digital Scorpio family",
+    "^WDC WD((12|10|8|6|4)00(UE|VE|BEAS|BEVS))-.*$",
     ".*",
     NULL, NULL, NULL, NULL
   },
@@ -888,7 +1061,7 @@ const drivesettings knowndrives[] = {
     NULL, NULL, NULL, NULL
   },
   { NULL, // QUANTUM FIREBALLlct15 20 and QUANTUM FIREBALLlct15 30
-    "^QUANTUM FIREBALLlct15 [23]0$",
+    "^QUANTUM FIREBALLlct15 [123]0$",
     ".*",
     NULL, NULL, NULL, NULL
   },
@@ -912,8 +1085,8 @@ const drivesettings knowndrives[] = {
     ".*",
     NULL, NULL, NULL, NULL
   },
-  { NULL, // QUANTUM FIREBALLP AS10.2, AS20.5, and AS40.0
-    "^QUANTUM FIREBALLP AS(10.2|20.5|40.0)$",
+  { NULL, // QUANTUM FIREBALLP AS10.2, AS20.5, AS30.0, and AS40.0
+    "^QUANTUM FIREBALLP AS(10.2|20.5|30.0|40.0)$",
     ".*",
     NULL, NULL, NULL, NULL
   },
@@ -923,7 +1096,7 @@ const drivesettings knowndrives[] = {
     NULL, NULL, NULL, NULL
   },
   { NULL, // QUANTUM FIREBALL ST3.2A
-    "^QUANTUM FIREBALL ST3.2A$",
+    "^QUANTUM FIREBALL ST(3.2|4.3)A$",
     ".*",
     NULL, NULL, NULL, NULL
   },
@@ -937,8 +1110,13 @@ const drivesettings knowndrives[] = {
     ".*",
     NULL, NULL, NULL, NULL
   },
-  { NULL, // QUANTUM FIREBALLP KA10.1
-    "^QUANTUM FIREBALLP KA10.1$",
+  { "Quantum Fireball Plus KA series",
+    "^QUANTUM FIREBALLP KA(9|10).1$",
+    ".*",
+    NULL, NULL, NULL, NULL
+  },
+  { "Quantum Fireball SE series",
+    "^QUANTUM FIREBALL SE4.3A$",
     ".*",
     NULL, NULL, NULL, NULL
   },