title: Reading temperature and fan speeds on chipset without WMI support in Windows, from Delphi
body: <p>I have searched and searched but found nothing about how in Delphi, and I am using XE2 how to read sensor information from the Unvoton NCT6776F chip.  I am guessing I need some assembly somewhere but there is nothing I can find on how to even begin.  Here are the registry details of the chip.</p>
  
  <blockquote>
  <pre><code>Bus Type = ISAIO
  One NCT6776F
  
  Unvoton NCT6776F, IndexReg=A35, DataReg=A36
  =============================================================
  Fan1 Fan Speed, Bank 6, Offset 0x30, 0x31 RPM = 1350000/(Data=HighByte[12:5], LowByte
  
  [4:0])
  Fan2 Fan Speed, Bank 6, Offset 0x32, 0x33 RPM = 1350000/(Data=HighByte[12:5], LowByte
  
  [4:0])
  Fan3 Fan Speed, Bank 6, Offset 0x34, 0x35 RPM = 1350000/(Data=HighByte[12:5], LowByte
  
  [4:0])
  CPU Voltage, Bank 0, Offset 0x20      Voltage = Data* 0.008
  VCCSA Voltage, Bank 0, Offset 0x21        Voltage = Data* 0.008
  +3.3V Voltage, Bank 0, Offset 0x22        Voltage = Data* 0.016
  Gfx Voltage, Bank 0, Offset 0x24      Voltage = Data* 0.008
  +5V Voltage, Bank 0, Offset 0x25      Voltage = Data* 0.008/ (10./40.)
  +12V Voltage, Bank 0, Offset 0x26     Voltage = Data* 0.008/ (10./66.2)
  3.3VSB Voltage, Bank 5, Offset 0x50       Voltage = Data* 0.016
  VBAT Voltage, Bank 5, Offset 0x51     Voltage = Data* 0.016
  CPU Temperature, Bank 7, Offset 0x17, 0x18    PECI Count = (Data=HighByte,LowByte&lt;15:6&gt; 
  
  hightest bit as sign bit)
  High: PECI Count&gt;-15; Midium: -40&lt;PECI Count&lt;=-15; Low: PECI Count&lt;=-40
  System Temperature, Bank 0, Offset 0x27   Temperature = Data
  Peripheral Temperature, Bank 1, Offset 0x50   Temperature = Data
  Chassis Intrusion, Bank 0, Offset 0x42, BitMask 0x10  1 = Bad, 0 = Good
            (Clear Bit: Bank 0, Offset 0x46, BitMask 0x80)
  
  Power Supply Failure, NCT6776F, Logical Device 0x0B, CRF7h, BitMask 0x01  0 = Good, 1 
  
  = Bad
  </code></pre>
  </blockquote>
  
  <p>If anyone has any idea how I can read these addresses and get the required information I would be very grateful.  If anyone could post some example code, that would be even better.  What I am in fact trying to do is add a Temperature sensor gauge to my server software for monitoring purposes.  I need to integrate the data directly and not use a third party application due to the nature of the application I am building.</p>
  
  <p>Thanks.</p>
  
  <p>Alex.</p>