From: Andreas M. <an...@us...> - 2013-08-19 18:31:56
|
Hi, I just found the following likely correlation for SQFlash SMART attributes: . [231 DriveTemperature "Temperature_Celsius"] . 232? SQEnduranceRemainLife? "Available_Reservd_Space" 100 . 233? SQPowerOnTime? "Media_Wearout_Indicator" 2021164 (clearly a value incrementing in seconds) . 234? SQECCLog? "Unknown_Attribute" 0 . 235? SQGoodBlockRate? "Unknown_Attribute" 99 . [240 HeadFlyingHours "Head_Flying_Hours"] (smartmontools ID strings as shown by a 6.1+svn3812-1 log). judging from the following: identifiers of *generic* attributes in smartmontools: case 225: if (ssd) return Unknown_SSD_Attribute; return "Load_Cycle_Count"; case 226: if (ssd) return Unknown_SSD_Attribute; return "Load-in_Time"; case 227: if (ssd) return Unknown_SSD_Attribute; return "Torq-amp_Count"; case 228: return "Power-off_Retract_Count"; case 230: // seen in IBM DTPA-353750 if (ssd) return Unknown_SSD_Attribute; return "Head_Amplitude"; case 231: return "Temperature_Celsius"; case 232: // seen in Intel X25-E SSD return "Available_Reservd_Space"; case 233: // seen in Intel X25-E SSD if (hdd) return Unknown_HDD_Attribute; return "Media_Wearout_Indicator"; case 240: if (ssd) return Unknown_SSD_Attribute; return "Head_Flying_Hours"; case 241: return "Total_LBAs_Written"; case 242: return "Total_LBAs_Read"; case 250: return "Read_Error_Retry_Rate"; case 254: if (ssd) return Unknown_SSD_Attribute; return "Free_Fall_Sensor"; default: Partial section of a list of identifiers in SQFlash-SMART.exe: LoadUnloadCycleCount LoadInTime TorqueAmplificationCount PowerOffRetractCycle GMRHeadAmplitude DriveTemperature SQEnduranceRemainLife SQPowerOnTime SQECCLog SQGoodBlockRate HeadFlyingHours TransferErrorRateFujitsu TotalLBAsWritten TotalLBAsRead ReadErrorRetryRate FreeFallProtection Since the relevant SQ* IDs are clearly surrounded by the very narrow DriveTemperature (231) and HeadFlyingHours (240) integer range, it's very obvious that the interim values must be SQ*, quite likely in incrementing order, since all the other (not pasted) values in the SQFlash-SMART.exe list do correspond to smartmontools values in proper sort order, too. BTW the non-advertised TransferErrorRateFujitsu identifier is "interesting" since it sits it in the middle between Head_Flying_Hours 240 and Total_LBAs_Written 241 - huh?? So, what to do? And any additional advice how to implement the new identifiers? :) Andreas Mohr |
From: Christian F. <Chr...@t-...> - 2013-08-20 20:24:56
|
Andreas Mohr wrote: > Hi, > > I just found the following likely correlation for SQFlash SMART attributes: > > > . [231 DriveTemperature "Temperature_Celsius"] > . 232? SQEnduranceRemainLife? "Available_Reservd_Space" 100 > . 233? SQPowerOnTime? "Media_Wearout_Indicator" 2021164 (clearly a value incrementing in seconds) > . 234? SQECCLog? "Unknown_Attribute" 0 > . 235? SQGoodBlockRate? "Unknown_Attribute" 99 > . [240 HeadFlyingHours "Head_Flying_Hours"] > > > (smartmontools ID strings as shown by a 6.1+svn3812-1 log). > > > judging from the following: > > identifiers of *generic* attributes in smartmontools: > > case 225: > if (ssd) return Unknown_SSD_Attribute; > return "Load_Cycle_Count"; > case 226: BTW: The defaults are also listed (as -v options) in the /usr/share/smartmontools/drivedb.h file. > ... > > So, what to do? And any additional advice how to implement the new > identifiers? :) There is no need to actually implement anything in the smartmontools source. Create a local drive database entry in /etc/smart_drivedb.h, e.g: { "SQFlash CompactFlash Cards", "... ATA_IDENTIFY_REGEXP ...", "", "", "-v 232,raw48,Endurance_Remain_Life " "-v 233,raw48,Power_On_Seconds " ... }, (see also -B option on smartctl man page) If it works as expected, please send the entry and a sample smartctl -x output. Thanks, Christian |
From: Andreas M. <an...@us...> - 2013-08-20 20:58:12
|
Hi, On Tue, Aug 20, 2013 at 10:24:45PM +0200, Christian Franke wrote: > Andreas Mohr wrote: [...] > >. [231 DriveTemperature "Temperature_Celsius"] > >. 232? SQEnduranceRemainLife? "Available_Reservd_Space" 100 > >. 233? SQPowerOnTime? "Media_Wearout_Indicator" 2021164 (clearly a > >value incrementing in seconds) > >. 234? SQECCLog? "Unknown_Attribute" 0 > >. 235? SQGoodBlockRate? "Unknown_Attribute" 99 > >. [240 HeadFlyingHours "Head_Flying_Hours"] [...] > >So, what to do? And any additional advice how to implement the new > >identifiers? :) > > There is no need to actually implement anything in the smartmontools source. > Create a local drive database entry in /etc/smart_drivedb.h, e.g: > > { "SQFlash CompactFlash Cards", > "... ATA_IDENTIFY_REGEXP ...", > "", "", > "-v 232,raw48,Endurance_Remain_Life " > "-v 233,raw48,Power_On_Seconds " > ... > }, Sorry for the naive question - probably could have looked it up on my own anyway how to do all these things ;) [Thanks!!] However, I now do have an actually valuable question remaining: given that SQFlash uses "SQEnduranceRemainLife" (and "SQxxx" in general), shouldn't we be using that very string proper, rather than the Endurance_Remain_Life etc. that you're using above? But that's somewhat of a policy question - it's a matter of whether certain tools might happen to parse this output (or library results) and then expect to encounter the original, unaltered attribute identifier string. An additional purpose would be to clearly keep having marked it as vendor-specific - "Endurance_Remain_Life" would come dangerously close to suggesting that it's a generic SMART attribute identifier... So, what to do, and are there any precedents for certain devices? Myself, I'm tending towards keeping the original strings - they *are* vendor-specific, thus it seems useful to keep the nicely cleanly specific prefix. The way we are going about this, we would eventually come close to munging several device-specific attributes into one accidentally matching "generic" attribute naming, where the actual *behaviour* of these very-similar vendor-specific attributes might be completely different however! (PowerOnTime measured in milliseconds on foobar VSPowerOnTime, and measured in hours on DonutsCo DCPowerOnTime) - however I *know* that your next argument will be that we have that kind of time-units mess with existing standardized generic attributes already ;-P However for your current translation string Power_On_Seconds of SQPowerOnTime there's an argument to be made that this translation is actually useful, since it specifies the (missing) value unit. But in such cases I'd suggest perhaps simply extending the original specific ID to become SQPowerOnTimeSeconds (or perhaps better: SQPowerOnTime_In_Seconds). > If it works as expected, please send the entry and a sample smartctl > -x output. Will do! BTW I've been told by my contact that there occurred a vendor inquiry about some more specific meaning of certain attributes, yet that the precision of the reply was not overly useful. But perhaps I should feel happy that this was still quite a bit better than the overwhelming majority of other vendor inquiries that I did (almost always no reply at all, even in case of repeated attempts with nice inquiries...). What a sad state of affairs. At least I'm then trying hard to have the results (Status Quo) documented as precisely as possible. Andreas Mohr |
From: Andreas M. <an...@us...> - 2013-08-26 17:48:04
|
On Tue, Aug 20, 2013 at 10:24:45PM +0200, Christian Franke wrote: > Andreas Mohr wrote: > >So, what to do? And any additional advice how to implement the new > >identifiers? :) > > There is no need to actually implement anything in the smartmontools source. > Create a local drive database entry in /etc/smart_drivedb.h, e.g: > > { "SQFlash CompactFlash Cards", > "... ATA_IDENTIFY_REGEXP ...", > "", "", > "-v 232,raw48,Endurance_Remain_Life " > "-v 233,raw48,Power_On_Seconds " > ... > }, > > (see also -B option on smartctl man page) > > If it works as expected, please send the entry and a sample smartctl > -x output. { "Advantech SQFlash CompactFlash Cards", "SQF-P10S2-(2|4|8|16)G-ET2", // tested with SQF-P10S2-8G-ET2 "", "", " -v 232,raw48,SQEnduranceRemainLife " " -v 233,raw48,SQPowerOnTime " " -v 234,raw48,SQECCLog " " -v 235,raw48,SQGoodBlockRate " }, There are various other card signatures (S4 instead of S2, [M]LC rather than [S]LC, ETE instead of ET2), thus it's quite likely that the regex will need adjusting, or alternative entries to be added. I might be able to come up with some more facts eventually (or even some strongly differing log values examples), but for now let's gets this in quickly since it's high time to achieve the very first parts of SQFlash support. smartctl 6.2 2013-04-20 r3812 [i586-linux-3.9-0.slh.4-aptosid-686] (local build) Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org === START OF INFORMATION SECTION === Model Family: Advantech SQFlash CompactFlash Cards Device Model: SQF-P10S2-8G-ET2 Serial Number: 843B07230272000xxxxx Firmware Version: Ver2.A0O User Capacity: 8.069.677.056 bytes [8,06 GB] Sector Size: 512 bytes logical/physical Device is: In smartctl database [for details use: -P show] ATA Version is: ATA/ATAPI-5 (minor revision not indicated) Local Time is: Mon Aug 26 16:33:20 2013 CEST SMART support is: Available - device has SMART capability. SMART support is: Enabled AAM feature is: Unavailable APM feature is: Unavailable Rd look-ahead is: Unavailable Write cache is: Enabled ATA Security is: Unavailable === START OF READ SMART DATA SECTION === SMART overall-health self-assessment test result: PASSED General SMART Values: Offline data collection status: (0xff) Offline data collection activity is in a Vendor Specific state. Auto Offline Data Collection: Enabled. Total time to complete Offline data collection: ( 0) seconds. Offline data collection capabilities: (0x00) Offline data collection not supported. SMART capabilities: (0x0002) Does not save SMART data before entering power-saving mode. Supports SMART auto save timer. Error logging capability: (0x00) Error logging NOT supported. No General Purpose Logging support. SMART Attributes Data Structure revision number: 16 Vendor Specific SMART Attributes with Thresholds: ID# ATTRIBUTE_NAME FLAGS VALUE WORST THRESH FAIL RAW_VALUE 232 SQEnduranceRemainLife -O---- 100 100 002 - 100 233 SQPowerOnTime -O---- 100 100 000 - 2235300 234 SQECCLog -O---- 100 100 000 - 0 235 SQGoodBlockRate -O---- 253 253 003 - 99 9 Power_On_Hours -O---- 109 109 000 - 620 203 Run_Out_Cancel -O---- 100 100 000 - 0 ||||||_ K auto-keep |||||__ C event count ||||___ R error rate |||____ S speed/performance ||_____ O updated online |______ P prefailure warning Read SMART Log Directory failed: scsi error aborted command ATA_READ_LOG_EXT (addr=0x00:0x00, page=0, n=1) failed: scsi error aborted command Read GP Log Directory failed SMART Extended Comprehensive Error Log (GP Log 0x03) not supported SMART Error Log not supported SMART Extended Self-test Log (GP Log 0x07) not supported SMART Self-test Log not supported Selective Self-tests/Logging not supported SCT Commands not supported Device Statistics (GP Log 0x04) not supported SATA Phy Event Counters (GP Log 0x11) not supported Thanks! (as always :) Andreas Mohr |