#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
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
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( .)?$",
".*",
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
},
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
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,
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)$",
".*",
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)$",
".*",
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$",
".*",
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$",
".*",
".*",
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$",
".*",
".*",
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$",
".*",
".*",
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$",
".*",
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
},
".*",
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
},
".*",
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
},
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
},
".*",
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
".*",
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
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
},
NULL, NULL, NULL, NULL
},
{ NULL, // QUANTUM FIREBALLlct15 20 and QUANTUM FIREBALLlct15 30
- "^QUANTUM FIREBALLlct15 [23]0$",
+ "^QUANTUM FIREBALLlct15 [123]0$",
".*",
NULL, NULL, NULL, NULL
},
".*",
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
},
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
},
".*",
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
},