Added the hard drive firmware version to the report. This could be important if the SMART attribute layout changes with firmware versions on some drives.
3 Version: MPL 1.1/GPL 2.0/LGPL 2.1
5 The contents of this file are subject to the Mozilla Public License Version
6 1.1 (the "License"); you may not use this file except in compliance with
7 the License. You may obtain a copy of the License at
9 http://www.mozilla.org/MPL/
11 Software distributed under the License is distributed on an "AS IS" basis,
12 WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
13 for the specific language governing rights and limitations under the License.
15 The Original Code is the Open Hardware Monitor code.
17 The Initial Developer of the Original Code is
18 Roland Reinl <roland-reinl@gmx.de>.
19 Portions created by the Initial Developer are Copyright (C) 2011
20 the Initial Developer. All Rights Reserved.
23 Michael Möller <m.moeller@gmx.ch>
25 Alternatively, the contents of this file may be used under the terms of
26 either the GNU General Public License Version 2 or later (the "GPL"), or
27 the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
28 in which case the provisions of the GPL or the LGPL are applicable instead
29 of those above. If you wish to allow use of your version of this file only
30 under the terms of either the GPL or the LGPL, and not to allow others to
31 use your version of this file under the terms of the MPL, indicate your
32 decision by deleting the provisions above and replace them with the notice
33 and other provisions required by the GPL or the LGPL. If you do not delete
34 the provisions above, a recipient may use your version of this file under
35 the terms of any one of the MPL, the GPL or the LGPL.
39 namespace OpenHardwareMonitor.Hardware.HDD {
41 /// Localization class for SMART attribute names.
43 internal static class SmartAttributeNames {
45 public static string AirflowTemperature {
46 get { return "Airflow Temperature"; }
49 public static string Temperature {
50 get { return "Temperature"; }
53 public static string RetiredBlockCount {
54 get { return "Retired Block Count"; }
57 public static string ProgramFailCount {
58 get { return "Program Fail Count"; }
61 public static string EraseFailCount {
62 get { return "Erase Fail Count"; }
65 public static string UnexpectedPowerLossCount {
66 get { return "Unexpected Power Loss Count"; }
69 public static string WearRangeDelta {
70 get { return "Wear Range Delta"; }
73 public static string AlternativeProgramFailCount {
74 get { return "Alternative Program Fail Count"; }
77 public static string AlternativeEraseFailCount {
78 get { return "Alternative Erase Fail Count"; }
81 public static string UnrecoverableEcc {
82 get { return "Unrecoverable ECC"; }
85 public static string ReallocationEventCount {
86 get { return "Reallocation Event Count"; }
89 public static string RemainingLife {
90 get { return "Remaining Life"; }
93 public static string AvailableReservedSpace {
94 get { return "Available Reserved Space"; }
97 public static string CalibrationRetryCount {
98 get { return "Calibration Retry Count"; }
101 public static string CommandTimeout {
102 get { return "Command Timeout"; }
105 public static string CurrentPendingSectorCount {
106 get { return "Current Pending Sector Count"; }
109 public static string DataAddressMarkErrors {
110 get { return "Data Address Mark errors"; }
113 public static string DiskShift {
114 get { return "Disk Shift"; }
117 public static string DriveTemperature {
118 get { return "Drive Temperature"; }
121 public static string EmergencyRetractCycleCount {
122 get { return "Emergency Retract Cycle Count"; }
125 public static string EndToEndError {
126 get { return "End-to-End error"; }
129 public static string EnduranceRemaining {
130 get { return "Endurance Remaining"; }
133 public static string FlyingHeight {
134 get { return "Flying Height"; }
137 public static string FreeFallProtection {
138 get { return "Free Fall Protection"; }
141 public static string GmrHeadAmplitude {
142 get { return "GMR Head Amplitude"; }
145 public static string GSenseErrorRate {
146 get { return "G-sense Error Rate"; }
149 public static string HardwareEccRecovered {
150 get { return "Hardware ECC Recovered"; }
153 public static string HeadFlyingHours {
154 get { return "Head Flying Hours"; }
157 public static string HeadStability {
158 get { return "Head Stability"; }
161 public static string HighFlyWrites {
162 get { return "High Fly Writes"; }
165 public static string InducedOpVibrationDetection {
166 get { return "Induced Op-Vibration Detection"; }
169 public static string LoadedHours {
170 get { return "Loaded Hours"; }
173 public static string LoadFriction {
174 get { return "Load Friction"; }
177 public static string LoadInTime {
178 get { return "Load 'In'-time"; }
181 public static string LoadUnloadCycleCount {
182 get { return "Load/Unload Cycle Count"; }
185 public static string LoadUnloadCycleCountFujitsu {
186 get { return "Load/Unload Cycle Count (Fujitus)"; }
189 public static string LoadUnloadRetryCount {
190 get { return "Load/Unload Retry Count"; }
193 public static string MediaWearoutIndicator {
194 get { return "Media Wearout Indicator"; }
197 public static string MultiZoneErrorRate {
198 get { return "Multi-Zone Error Rate"; }
201 public static string OfflineSeekPerformance {
202 get { return "Offline Seek Performance"; }
205 public static string PowerCycleCount {
206 get { return "Power Cycle Count"; }
209 public static string PowerOffRetractCycle {
210 get { return "Power-Off Retract Cycle"; }
213 public static string PowerOnHours {
214 get { return "Power-On Hours (POH)"; }
217 public static string ReadChannelMargin {
218 get { return "Read Channel Margin"; }
221 public static string ReadErrorRate {
222 get { return "Read Error Rate"; }
225 public static string ReadErrorRetryRate {
226 get { return "Read Error Retry Rate"; }
229 public static string ReallocatedSectorsCount {
230 get { return "Reallocated Sectors Count"; }
233 public static string ReportedUncorrectableErrors {
234 get { return "Reported Uncorrectable Errors"; }
237 public static string RunOutCancel {
238 get { return "Run Out Cancel"; }
241 public static string SataDownshiftErrorCount {
242 get { return "SATA Downshift Error Count"; }
245 public static string SeekErrorRate {
246 get { return "Seek Error Rate"; }
249 public static string SeekTimePerformance {
250 get { return "Seek Time Performance"; }
253 public static string ShockDuringWrite {
254 get { return "Shock During Write"; }
257 public static string SoftEccCorrection {
258 get { return "Soft ECC Correction"; }
261 public static string SoftReadErrorRate {
262 get { return "Soft Read Error Rate"; }
265 public static string SpinBuzz {
266 get { return "Spin Buzz"; }
269 public static string SpinHighCurrent {
270 get { return "Spin High Current"; }
273 public static string SpinRetryCount {
274 get { return "Spin Retry Count"; }
277 public static string SpinUpTime {
278 get { return "Spin-Up Time"; }
281 public static string StartStopCount {
282 get { return "Start/Stop Count"; }
285 public static string TaCounterDetected {
286 get { return "TA Counter Detected"; }
289 public static string TemperatureDifferenceFrom100 {
290 get { return "Temperature Difference from 100"; }
293 public static string ThermalAsperityRate {
294 get { return "Thermal Asperity Rate (TAR)"; }
297 public static string ThroughputPerformance {
298 get { return "Throughput Performance"; }
301 public static string TorqueAmplificationCount {
302 get { return "Torque Amplification Count"; }
305 public static string TotalLbasRead {
306 get { return "Total LBAs Read"; }
309 public static string TotalLbasWritten {
310 get { return "Total LBAs Written"; }
313 public static string TransferErrorRate {
314 get { return "Transfer Error Rate"; }
317 public static string UltraDmaCrcErrorCount {
318 get { return "UltraDMA CRC Error Count"; }
321 public static string UncorrectableSectorCount {
322 get { return "Uncorrectable Sector Count"; }
325 public static string Unknown {
326 get { return "Unknown"; }
329 public static string VibrationDuringWrite {
330 get { return "Vibration During Write"; }
333 public static string WriteErrorRate {
334 get { return "Write Error Rate"; }
337 public static string RecalibrationRetries {
338 get { return "Recalibration Retries"; }
341 public static string LoadCycleCount {
342 get { return "Load Cycle Count"; }
345 public static string AlternativeGSenseErrorRate {
346 get { return "Alternative G-Sense Error Rate"; }
349 public static string InitialBadBlockCount {
350 get { return "Initial Bad Block Count"; }
353 public static string ProgramFailure {
354 get { return "Program Failure"; }
357 public static string EraseFailure {
358 get { return "Erase Failure"; }
361 public static string ReadFailure {
362 get { return "Read Failure"; }
365 public static string SectorsRead {
366 get { return "Sectors Read"; }
369 public static string SectorsWritten {
370 get { return "Sectors Written"; }
373 public static string ReadCommands {
374 get { return "Read Commands"; }
377 public static string WriteCommands {
378 get { return "Write Commands"; }
381 public static string BitErrors {
382 get { return "Bit Errors"; }
385 public static string CorrectedErrors {
386 get { return "Corrected Errors"; }
389 public static string BadBlockFullFlag {
390 get { return "Bad Block Full Flag"; }
393 public static string MaxCellCycles {
394 get { return "Max Cell Cycles"; }
397 public static string MinErase {
398 get { return "Min Erase"; }
401 public static string MaxErase {
402 get { return "Max Erase"; }
405 public static string AverageEraseCount {
406 get { return "Average Erase Count"; }
409 public static string UnknownUnique {
410 get { return "Unknown Unique"; }
413 public static string SataErrorCountCrc {
414 get { return "SATA Error Count CRC"; }
417 public static string SataErrorCountHandshake {
418 get { return "SATA Error Count Handshake"; }
421 public static string UnsafeShutdownCount {
422 get { return "Unsafe Shutdown Count"; }
425 public static string HostWrites {
426 get { return "Host Writes"; }
429 public static string UsedReservedBlockCountChip {
430 get { return "Used Reserved Block Count Chip"; }
433 public static string UsedReservedBlockCountTotal {
434 get { return "Used Reserved Block Count Total"; }
437 public static string RuntimeBadBlockTotal {
438 get { return "Runtime Bad Block Total"; }
441 public static string HostReads {
442 get { return "Host Reads"; }
445 public static string MediaWearOutIndicator {
446 get { return "Media Wear Out Indicator"; }