Home > Programming > New S.M.A.R.T Monitor Tool for Hard Drive Health

New S.M.A.R.T Monitor Tool for Hard Drive Health

Simon's SmartInfo Monitor

Simon's SmartInfo Monitor

Further to my post on S.M.A.R.T, I got around to making a simple little HTA which uses my SMART class to display useful info on your drives. You can get it from CTOGoneWild. It gives you an example of how to make a useful HTA, and how to embed VBScript classes in a way where they can be used in either a normal VBScript, or a HTA itself. You can also find the SmartDump script which does much the same thing, but outputs to a file name (either set on the command line, or in the script itself).

Categories: Programming Tags:
  1. Stéphane Pautrel
    March 7, 2017 at 03:52

    Hi Simon,

    Since a few years, i have been interested in your studies on the recovery of SMART information from a hard drive and I like your work “SmartDisplay.hta” (nice aspect and very clear display).

    Unfortunately, on all the drives I was able to test and concerning the number of hours of operation (id009 – POH), the displayed value is bad for me.

    For the POH, the correct syntax (current for SATA drives) seems to be:

    sData = Split(Join(.VendorSpecific, “,”), “,”)
    item = 9
    (sData(item + 8) * 65536 + sData(item + 7) * 4096 + sData(item + 6) * 256 + sData(item + 5))

    and not (line 805) : tmpArray(4,j)

    For the pleasure of your many fans I am, I hope this information will make you want to update your scripting work on SMART disks…

    Best regards,

    • Simon Hunt
      March 7, 2017 at 19:28

      Good catch! I didn’t realize that the value could span multiple bytes. The actual oversight is in the section “calculate and display smart attributes for current drive number” – the arrDriveRawData should be set as below.

      Let me know if that works for you and gives the desired result.

      arrDriveRawData(arrVendorSpecificData(i*12+2))= (arrVendorSpecificData(i*12+12)*2^40) + (arrVendorSpecificData(i*12+11)*2^32) +(arrVendorSpecificData(i*12+10)*2^24) + (arrVendorSpecificData(i*12+9)*2^16) + (arrVendorSpecificData(i*12+8)*2^8) + (arrVendorSpecificData(i*12+7))

      • Stéphane Pautrel
        March 8, 2017 at 03:07

        I just made the test, with your modification the return of the value of id 009 (POH) is now GOOD.

        But, now this has distorted the return of several IDs that have erroneous values, such as (in my case, same problem with HDD SATA and SSD):

        ID001: 226117360 instead of 240
        ID004: 1940 instead of 148
        ID007: 10157225 instead of 169
        ID012: 640 instead of 128
        ID190: 454361115 instead of 29 (it’s very hot !)
        ID192: 446 instead of 190
        ID193: 3863 instead of 23
        ID194: 68719476763 instead of 29 (idem)

  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: