@@ -0,0 +1,1553 @@
+/*
+ * drivedb.h - smartmontools drive database file
+ *
+ * Home page of code is: http://smartmontools.sourceforge.net
+ *
+ * Copyright (C) 2003-10 Philip Williams, Bruce Allen
+ * Copyright (C) 2008-10 Christian Franke <smartmontools-support@lists.sourceforge.net>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * You should have received a copy of the GNU General Public License
+ * (for example COPYING); If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+/*
+ * Structure used to store drive database entries:
+ *
+ * struct drive_settings {
+ * const char * modelfamily;
+ * const char * modelregexp;
+ * const char * firmwareregexp;
+ * const char * warningmsg;
+ * const char * presets;
+ * };
+ *
+ * The elements are used in the following ways:
+ *
+ * modelfamily Informal string about the model family/series of a
+ * device. Set to "" if no info (apart from device id)
+ * known. The entry is ignored if this string starts with
+ * a dollar sign.
+ * modelregexp POSIX extended regular expression to match the model of
+ * a device. This should never be "".
+ * firmwareregexp POSIX extended regular expression to match a devices's
+ * firmware. This is optional and should be "" if it is not
+ * to be used. If it is nonempty then it will be used to
+ * narrow the set of devices matched by modelregexp.
+ * warningmsg A message that may be displayed for matching drives. For
+ * example, to inform the user that they may need to apply a
+ * firmware patch.
+ * presets String with vendor-specific attribute ('-v') and firmware
+ * bug fix ('-F') options. Same syntax as in smartctl command
+ * line. The user's own settings override these.
+ *
+ * The regular expressions for drive model and firmware must match the full
+ * string. The effect of "^FULLSTRING$" is identical to "FULLSTRING".
+ * The form ".*SUBSTRING.*" can be used if substring match is desired.
+ *
+ * The table will be searched from the start to end or until the first match,
+ * so the order in the table is important for distinct entries that could match
+ * the same drive.
+ */
+
+/*
+const drive_settings builtin_knowndrives[] = {
+ */
+ { "$Id$",
+ "-", "-",
+ "This is a dummy entry to hold the SVN-Id of drivedb.h",
+ ""
+ },
+ { "Apple SSD SM128",
+ "APPLE SSD SM128",
+ "", "", ""
+ },
+ { "Asus-Phison SSD",
+ "ASUS-PHISON SSD",
+ "", "", ""
+ },
+ { "SandForce Driven SSDs",
+ "SandForce 1st Ed\\.|" // Demo Drive, tested with firmware 320A13F0
+ "Corsair CSSD-F(40|60|80|120|160|240)GBP?2.*|" // Corsair Force, tested with
+ // Corsair CSSD-F40GB2/1.1
+ "OCZ[ -](AGILITY2|VERTEX2|VERTEX-LE)( .*)?|" // tested with
+ // OCZ-VERTEX2/1.11, OCZ-VERTEX2 3.5/1.11
+ "UGB(88P|99S)GC...H[BF].", // Unigen, tested with
+ // UGB88PGC100HF2/MP Rev2, UGB99SGC100HB3/RC Rev3
+ "", "",
+ "-v 1,hex48,Raw_Read_Error_Rate " // raw24/raw32
+ "-v 5,raw48,Retired_Block_Count "
+ "-v 9,hex48,Power_On_Hours_and_Msec " // msec24hour32
+ //"-v 12,raw48,Power_Cycle_Count "
+ "-v 13,hex48,Soft_Read_Error_Rate " // raw24/raw32
+ "-v 100,raw48,Gigabytes_Erased "
+ "-v 170,raw48,Reserve_Block_Count "
+ "-v 171,raw48,Program_Fail_Count "
+ "-v 172,raw48,Erase_Fail_Count "
+ "-v 174,raw48,Unexpect_Power_Loss_Ct "
+ "-v 177,raw48,Wear_Range_Delta "
+ "-v 181,raw48,Program_Fail_Count "
+ "-v 182,raw48,Erase_Fail_Count "
+ "-v 184,raw48,IO_Error_Detect_Code_Ct "
+ //"-v 187,raw48,Reported_Uncorrect "
+ //"-v 194,tempminmax,Temperature_Celsius "
+ "-v 195,hex48,ECC_Uncorr_Error_Count " // raw24/raw32
+ //"-v 196,raw48,Reallocated_Event_Count "
+ "-v 198,hex48,Uncorrectable_Sector_Ct "
+ "-v 199,raw48,SATA_CRC_Error_Count "
+ "-v 201,hex48,Unc_Soft_Read_Err_Rate " // raw24/raw32
+ "-v 204,hex48,Soft_ECC_Correct_Rate " // raw24/raw32
+ "-v 230,raw48,Life_Curve_Status "
+ "-v 231,raw48,SSD_Life_Left "
+ //"-v 232,raw48,Available_Reservd_Space "
+ "-v 233,raw48,SandForce_Internal "
+ "-v 234,raw48,SandForce_Internal "
+ "-v 235,raw48,SuperCap_Health "
+ "-v 241,raw48,Lifetime_Writes_GiB "
+ "-v 242,raw48,Lifetime_Reads_GiB"
+ },
+ { "Indilinx Barefoot based SSDs",
+ "CRUCIAL_CT(64|128|256)M225|" // tested with CRUCIAL_CT64M225/1571
+ "OCZ[ -](AGILITY|VERTEX( 1199|-TURBO)?)|" // tested with
+ // OCZ-VERTEX 1199/00.P97, OCZ-VERTEX/1.30, OCZ VERTEX-TURBO/1.5
+ "Patriot[ -]Torqx.*|"
+ "STT_FT[MD](28|32|56|64)GX25H|" // Super Talent Ultradrive, tested with STT_FTM64GX25H/1916
+ "TS(18|25)M(64|128)MLC(16|32|64|128|256|512)GSSD", // ASAX Leopard Hunt II, tested with TS25M64MLC64GSSD/0.1
+ "", "",
+ "-v 1,raw64 " // Raw_Read_Error_Rate
+ "-v 9,raw64 " // Power_On_Hours
+ "-v 12,raw64 " // Power_Cycle_Count
+ "-v 184,raw64,Initial_Bad_Block_Count "
+ "-v 195,raw64,Program_Failure_Blk_Ct "
+ "-v 196,raw64,Erase_Failure_Blk_Ct "
+ "-v 197,raw64,Read_Failure_Blk_Ct "
+ "-v 198,raw64,Read_Sectors_Tot_Ct "
+ "-v 199,raw64,Write_Sectors_Tot_Ct "
+ "-v 200,raw64,Read_Commands_Tot_Ct "
+ "-v 201,raw64,Write_Commands_Tot_Ct "
+ "-v 202,raw64,Error_Bits_Flash_Tot_Ct "
+ "-v 203,raw64,Corr_Read_Errors_Tot_Ct "
+ "-v 204,raw64,Bad_Block_Full_Flag "
+ "-v 205,raw64,Max_PE_Count_Spec "
+ "-v 206,raw64,Min_Erase_Count "
+ "-v 207,raw64,Max_Erase_Count "
+ "-v 208,raw64,Average_Erase_Count "
+ "-v 209,raw64,Remaining_Lifetime_Perc "
+ "-v 210,raw64,Indilinx_Internal "
+ "-v 211,raw64,SATA_Error_Ct_CRC "
+ "-v 212,raw64,SATA_Error_Ct_Handshake "
+ "-v 213,raw64,Indilinx_Internal"
+ },
+ { "Intel X25-E SSDs",
+ "SSDSA2SH(032|064)G1.* INTEL", // G1 = first generation
+ "", "",
+ //"-v 3,raw48,Spin_Up_Time "
+ //"-v 4,raw48,Start_Stop_Count "
+ //"-v 5,raw48,Reallocated_Sector_Ct "
+ //"-v 9,raw48,Power_On_Hours "
+ //"-v 12,raw48,Power_Cycle_Count "
+ "-v 192,raw48,Unsafe_Shutdown_Count "
+ "-v 225,raw48,Host_Writes_32MiB "
+ "-v 226,raw48,Intel_Internal "
+ "-v 227,raw48,Intel_Internal "
+ "-v 228,raw48,Intel_Internal "
+ //"-v 232,raw48,Available_Reservd_Space "
+ //"-v 233,raw48,Media_Wearout_Indicator"
+ },
+ { "Intel X18-M/X25-M G1 SSDs",
+ "INTEL SSDSA[12]MH(080|160)G1.*", // G1 = first generation, 50nm
+ "", "",
+ //"-v 3,raw48,Spin_Up_Time "
+ //"-v 4,raw48,Start_Stop_Count "
+ //"-v 5,raw48,Reallocated_Sector_Ct "
+ //"-v 9,raw48,Power_On_Hours "
+ //"-v 12,raw48,Power_Cycle_Count "
+ "-v 192,raw48,Unsafe_Shutdown_Count "
+ "-v 225,raw48,Host_Writes_32MiB "
+ "-v 226,raw48,Intel_Internal "
+ "-v 227,raw48,Intel_Internal "
+ "-v 228,raw48,Intel_Internal "
+ //"-v 232,raw48,Available_Reservd_Space "
+ //"-v 233,raw48,Media_Wearout_Indicator"
+ },
+ { "Intel X18-M/X25-M/X25-V G2 SSDs", // tested with
+ // INTEL SSDSA2M(080|160)G2GC/2CV102J8 (X25-M),
+ // INTEL SSDSA2M040G2GC/2CV102HD (X25-V)
+ "INTEL SSDSA[12]M(040|080|160)G2.*", // G2 = second generation, 34nm
+ "", "",
+ //"-v 3,raw48,Spin_Up_Time "
+ //"-v 4,raw48,Start_Stop_Count "
+ //"-v 5,raw48,Reallocated_Sector_Ct "
+ //"-v 9,raw48,Power_On_Hours "
+ //"-v 12,raw48,Power_Cycle_Count "
+ //"-v 184,raw48,End-to-End_Error " // G2 only
+ "-v 192,raw48,Unsafe_Shutdown_Count "
+ "-v 225,raw48,Host_Writes_32MiB "
+ "-v 226,raw48,Workld_Media_Wear_Indic " // Timed Workload Media Wear Indicator (percent*1024)
+ "-v 227,raw48,Workld_Host_Reads_Perc " // Timed Workload Host Reads Percentage
+ "-v 228,raw48,Workload_Minutes " // 226,227,228 can be reset by 'smartctl -t vendor,0x40'
+ //"-v 232,raw48,Available_Reservd_Space "
+ //"-v 233,raw48,Media_Wearout_Indicator"
+ },
+ { "Transcend IDE Solid State Drive",
+ "TS(8|16|32|64|128)GSSD25-(M|S)",
+ "", "", ""
|