17ebd8b66SMauro Carvalho Chehab=============== 27ebd8b66SMauro Carvalho ChehabuGuru datasheet 37ebd8b66SMauro Carvalho Chehab=============== 47ebd8b66SMauro Carvalho Chehab 57ebd8b66SMauro Carvalho ChehabFirst of all, what I know about uGuru is no fact based on any help, hints or 67ebd8b66SMauro Carvalho Chehabdatasheet from Abit. The data I have got on uGuru have I assembled through 77ebd8b66SMauro Carvalho Chehabmy weak knowledge in "backwards engineering". 87ebd8b66SMauro Carvalho ChehabAnd just for the record, you may have noticed uGuru isn't a chip developed by 97ebd8b66SMauro Carvalho ChehabAbit, as they claim it to be. It's really just an microprocessor (uC) created by 107ebd8b66SMauro Carvalho ChehabWinbond (W83L950D). And no, reading the manual for this specific uC or 117ebd8b66SMauro Carvalho Chehabmailing Windbond for help won't give any useful data about uGuru, as it is 127ebd8b66SMauro Carvalho Chehabthe program inside the uC that is responding to calls. 137ebd8b66SMauro Carvalho Chehab 147ebd8b66SMauro Carvalho ChehabOlle Sandberg <ollebull@gmail.com>, 2005-05-25 157ebd8b66SMauro Carvalho Chehab 167ebd8b66SMauro Carvalho Chehab 177ebd8b66SMauro Carvalho ChehabOriginal version by Olle Sandberg who did the heavy lifting of the initial 187ebd8b66SMauro Carvalho Chehabreverse engineering. This version has been almost fully rewritten for clarity 197ebd8b66SMauro Carvalho Chehaband extended with write support and info on more databanks, the write support 207ebd8b66SMauro Carvalho Chehabis once again reverse engineered by Olle the additional databanks have been 217ebd8b66SMauro Carvalho Chehabreverse engineered by me. I would like to express my thanks to Olle, this 227ebd8b66SMauro Carvalho Chehabdocument and the Linux driver could not have been written without his efforts. 237ebd8b66SMauro Carvalho Chehab 247ebd8b66SMauro Carvalho ChehabNote: because of the lack of specs only the sensors part of the uGuru is 257ebd8b66SMauro Carvalho Chehabdescribed here and not the CPU / RAM / etc voltage & frequency control. 267ebd8b66SMauro Carvalho Chehab 277ebd8b66SMauro Carvalho ChehabHans de Goede <j.w.r.degoede@hhs.nl>, 28-01-2006 287ebd8b66SMauro Carvalho Chehab 297ebd8b66SMauro Carvalho Chehab 307ebd8b66SMauro Carvalho ChehabDetection 317ebd8b66SMauro Carvalho Chehab========= 327ebd8b66SMauro Carvalho Chehab 337ebd8b66SMauro Carvalho ChehabAs far as known the uGuru is always placed at and using the (ISA) I/O-ports 347ebd8b66SMauro Carvalho Chehab0xE0 and 0xE4, so we don't have to scan any port-range, just check what the two 357ebd8b66SMauro Carvalho Chehabports are holding for detection. We will refer to 0xE0 as CMD (command-port) 367ebd8b66SMauro Carvalho Chehaband 0xE4 as DATA because Abit refers to them with these names. 377ebd8b66SMauro Carvalho Chehab 387ebd8b66SMauro Carvalho ChehabIf DATA holds 0x00 or 0x08 and CMD holds 0x00 or 0xAC an uGuru could be 397ebd8b66SMauro Carvalho Chehabpresent. We have to check for two different values at data-port, because 407ebd8b66SMauro Carvalho Chehabafter a reboot uGuru will hold 0x00 here, but if the driver is removed and 417ebd8b66SMauro Carvalho Chehablater on attached again data-port will hold 0x08, more about this later. 427ebd8b66SMauro Carvalho Chehab 437ebd8b66SMauro Carvalho ChehabAfter wider testing of the Linux kernel driver some variants of the uGuru have 447ebd8b66SMauro Carvalho Chehabturned up which will hold 0x00 instead of 0xAC at the CMD port, thus we also 457ebd8b66SMauro Carvalho Chehabhave to test CMD for two different values. On these uGuru's DATA will initially 467ebd8b66SMauro Carvalho Chehabhold 0x09 and will only hold 0x08 after reading CMD first, so CMD must be read 477ebd8b66SMauro Carvalho Chehabfirst! 487ebd8b66SMauro Carvalho Chehab 497ebd8b66SMauro Carvalho ChehabTo be really sure an uGuru is present a test read of one or more register 507ebd8b66SMauro Carvalho Chehabsets should be done. 517ebd8b66SMauro Carvalho Chehab 527ebd8b66SMauro Carvalho Chehab 537ebd8b66SMauro Carvalho ChehabReading / Writing 547ebd8b66SMauro Carvalho Chehab================= 557ebd8b66SMauro Carvalho Chehab 567ebd8b66SMauro Carvalho ChehabAddressing 577ebd8b66SMauro Carvalho Chehab---------- 587ebd8b66SMauro Carvalho Chehab 597ebd8b66SMauro Carvalho ChehabThe uGuru has a number of different addressing levels. The first addressing 607ebd8b66SMauro Carvalho Chehablevel we will call banks. A bank holds data for one or more sensors. The data 617ebd8b66SMauro Carvalho Chehabin a bank for a sensor is one or more bytes large. 627ebd8b66SMauro Carvalho Chehab 637ebd8b66SMauro Carvalho ChehabThe number of bytes is fixed for a given bank, you should always read or write 647ebd8b66SMauro Carvalho Chehabthat many bytes, reading / writing more will fail, the results when writing 657ebd8b66SMauro Carvalho Chehabless then the number of bytes for a given bank are undetermined. 667ebd8b66SMauro Carvalho Chehab 677ebd8b66SMauro Carvalho ChehabSee below for all known bank addresses, numbers of sensors in that bank, 687ebd8b66SMauro Carvalho Chehabnumber of bytes data per sensor and contents/meaning of those bytes. 697ebd8b66SMauro Carvalho Chehab 707ebd8b66SMauro Carvalho ChehabAlthough both this document and the kernel driver have kept the sensor 714776b9e3SBrandon Jiangterminology for the addressing within a bank this is not 100% correct, in 727ebd8b66SMauro Carvalho Chehabbank 0x24 for example the addressing within the bank selects a PWM output not 737ebd8b66SMauro Carvalho Chehaba sensor. 747ebd8b66SMauro Carvalho Chehab 757ebd8b66SMauro Carvalho ChehabNotice that some banks have both a read and a write address this is how the 767ebd8b66SMauro Carvalho ChehabuGuru determines if a read from or a write to the bank is taking place, thus 777ebd8b66SMauro Carvalho Chehabwhen reading you should always use the read address and when writing the 787ebd8b66SMauro Carvalho Chehabwrite address. The write address is always one (1) more than the read address. 797ebd8b66SMauro Carvalho Chehab 807ebd8b66SMauro Carvalho Chehab 817ebd8b66SMauro Carvalho ChehabuGuru ready 827ebd8b66SMauro Carvalho Chehab----------- 837ebd8b66SMauro Carvalho Chehab 847ebd8b66SMauro Carvalho ChehabBefore you can read from or write to the uGuru you must first put the uGuru 857ebd8b66SMauro Carvalho Chehabin "ready" mode. 867ebd8b66SMauro Carvalho Chehab 877ebd8b66SMauro Carvalho ChehabTo put the uGuru in ready mode first write 0x00 to DATA and then wait for DATA 887ebd8b66SMauro Carvalho Chehabto hold 0x09, DATA should read 0x09 within 250 read cycles. 897ebd8b66SMauro Carvalho Chehab 907ebd8b66SMauro Carvalho ChehabNext CMD _must_ be read and should hold 0xAC, usually CMD will hold 0xAC the 917ebd8b66SMauro Carvalho Chehabfirst read but sometimes it takes a while before CMD holds 0xAC and thus it 927ebd8b66SMauro Carvalho Chehabhas to be read a number of times (max 50). 937ebd8b66SMauro Carvalho Chehab 947ebd8b66SMauro Carvalho ChehabAfter reading CMD, DATA should hold 0x08 which means that the uGuru is ready 957ebd8b66SMauro Carvalho Chehabfor input. As above DATA will usually hold 0x08 the first read but not always. 967ebd8b66SMauro Carvalho ChehabThis step can be skipped, but it is undetermined what happens if the uGuru has 977ebd8b66SMauro Carvalho Chehabnot yet reported 0x08 at DATA and you proceed with writing a bank address. 987ebd8b66SMauro Carvalho Chehab 997ebd8b66SMauro Carvalho Chehab 1007ebd8b66SMauro Carvalho ChehabSending bank and sensor addresses to the uGuru 1017ebd8b66SMauro Carvalho Chehab---------------------------------------------- 1027ebd8b66SMauro Carvalho Chehab 1037ebd8b66SMauro Carvalho ChehabFirst the uGuru must be in "ready" mode as described above, DATA should hold 1047ebd8b66SMauro Carvalho Chehab0x08 indicating that the uGuru wants input, in this case the bank address. 1057ebd8b66SMauro Carvalho Chehab 1067ebd8b66SMauro Carvalho ChehabNext write the bank address to DATA. After the bank address has been written 1077ebd8b66SMauro Carvalho Chehabwait for to DATA to hold 0x08 again indicating that it wants / is ready for 1087ebd8b66SMauro Carvalho Chehabmore input (max 250 reads). 1097ebd8b66SMauro Carvalho Chehab 1107ebd8b66SMauro Carvalho ChehabOnce DATA holds 0x08 again write the sensor address to CMD. 1117ebd8b66SMauro Carvalho Chehab 1127ebd8b66SMauro Carvalho Chehab 1137ebd8b66SMauro Carvalho ChehabReading 1147ebd8b66SMauro Carvalho Chehab------- 1157ebd8b66SMauro Carvalho Chehab 1167ebd8b66SMauro Carvalho ChehabFirst send the bank and sensor addresses as described above. 1177ebd8b66SMauro Carvalho ChehabThen for each byte of data you want to read wait for DATA to hold 0x01 1187ebd8b66SMauro Carvalho Chehabwhich indicates that the uGuru is ready to be read (max 250 reads) and once 1197ebd8b66SMauro Carvalho ChehabDATA holds 0x01 read the byte from CMD. 1207ebd8b66SMauro Carvalho Chehab 1217ebd8b66SMauro Carvalho ChehabOnce all bytes have been read data will hold 0x09, but there is no reason to 1227ebd8b66SMauro Carvalho Chehabtest for this. Notice that the number of bytes is bank address dependent see 1237ebd8b66SMauro Carvalho Chehababove and below. 1247ebd8b66SMauro Carvalho Chehab 1257ebd8b66SMauro Carvalho ChehabAfter completing a successful read it is advised to put the uGuru back in 1267ebd8b66SMauro Carvalho Chehabready mode, so that it is ready for the next read / write cycle. This way 1277ebd8b66SMauro Carvalho Chehabif your program / driver is unloaded and later loaded again the detection 1287ebd8b66SMauro Carvalho Chehabalgorithm described above will still work. 1297ebd8b66SMauro Carvalho Chehab 1307ebd8b66SMauro Carvalho Chehab 1317ebd8b66SMauro Carvalho Chehab 1327ebd8b66SMauro Carvalho ChehabWriting 1337ebd8b66SMauro Carvalho Chehab------- 1347ebd8b66SMauro Carvalho Chehab 1357ebd8b66SMauro Carvalho ChehabFirst send the bank and sensor addresses as described above. 1367ebd8b66SMauro Carvalho ChehabThen for each byte of data you want to write wait for DATA to hold 0x00 1377ebd8b66SMauro Carvalho Chehabwhich indicates that the uGuru is ready to be written (max 250 reads) and 1387ebd8b66SMauro Carvalho Chehabonce DATA holds 0x00 write the byte to CMD. 1397ebd8b66SMauro Carvalho Chehab 1407ebd8b66SMauro Carvalho ChehabOnce all bytes have been written wait for DATA to hold 0x01 (max 250 reads) 1417ebd8b66SMauro Carvalho Chehabdon't ask why this is the way it is. 1427ebd8b66SMauro Carvalho Chehab 1437ebd8b66SMauro Carvalho ChehabOnce DATA holds 0x01 read CMD it should hold 0xAC now. 1447ebd8b66SMauro Carvalho Chehab 1457ebd8b66SMauro Carvalho ChehabAfter completing a successful write it is advised to put the uGuru back in 1467ebd8b66SMauro Carvalho Chehabready mode, so that it is ready for the next read / write cycle. This way 1477ebd8b66SMauro Carvalho Chehabif your program / driver is unloaded and later loaded again the detection 1487ebd8b66SMauro Carvalho Chehabalgorithm described above will still work. 1497ebd8b66SMauro Carvalho Chehab 1507ebd8b66SMauro Carvalho Chehab 1517ebd8b66SMauro Carvalho ChehabGotchas 1527ebd8b66SMauro Carvalho Chehab------- 1537ebd8b66SMauro Carvalho Chehab 1547ebd8b66SMauro Carvalho ChehabAfter wider testing of the Linux kernel driver some variants of the uGuru have 1557ebd8b66SMauro Carvalho Chehabturned up which do not hold 0x08 at DATA within 250 reads after writing the 1567ebd8b66SMauro Carvalho Chehabbank address. With these versions this happens quite frequent, using larger 1577ebd8b66SMauro Carvalho Chehabtimeouts doesn't help, they just go offline for a second or 2, doing some 1584776b9e3SBrandon Jianginternal calibration or whatever. Your code should be prepared to handle 1597ebd8b66SMauro Carvalho Chehabthis and in case of no response in this specific case just goto sleep for a 1607ebd8b66SMauro Carvalho Chehabwhile and then retry. 1617ebd8b66SMauro Carvalho Chehab 1627ebd8b66SMauro Carvalho Chehab 1637ebd8b66SMauro Carvalho ChehabAddress Map 1647ebd8b66SMauro Carvalho Chehab=========== 1657ebd8b66SMauro Carvalho Chehab 1667ebd8b66SMauro Carvalho ChehabBank 0x20 Alarms (R) 1677ebd8b66SMauro Carvalho Chehab-------------------- 1687ebd8b66SMauro Carvalho ChehabThis bank contains 0 sensors, iow the sensor address is ignored (but must be 1697ebd8b66SMauro Carvalho Chehabwritten) just use 0. Bank 0x20 contains 3 bytes: 1707ebd8b66SMauro Carvalho Chehab 1717ebd8b66SMauro Carvalho ChehabByte 0: 1727ebd8b66SMauro Carvalho Chehab This byte holds the alarm flags for sensor 0-7 of Sensor Bank1, with bit 0 1737ebd8b66SMauro Carvalho Chehab corresponding to sensor 0, 1 to 1, etc. 1747ebd8b66SMauro Carvalho Chehab 1757ebd8b66SMauro Carvalho ChehabByte 1: 1767ebd8b66SMauro Carvalho Chehab This byte holds the alarm flags for sensor 8-15 of Sensor Bank1, with bit 0 1777ebd8b66SMauro Carvalho Chehab corresponding to sensor 8, 1 to 9, etc. 1787ebd8b66SMauro Carvalho Chehab 1797ebd8b66SMauro Carvalho ChehabByte 2: 1807ebd8b66SMauro Carvalho Chehab This byte holds the alarm flags for sensor 0-5 of Sensor Bank2, with bit 0 1817ebd8b66SMauro Carvalho Chehab corresponding to sensor 0, 1 to 1, etc. 1827ebd8b66SMauro Carvalho Chehab 1837ebd8b66SMauro Carvalho Chehab 1847ebd8b66SMauro Carvalho ChehabBank 0x21 Sensor Bank1 Values / Readings (R) 1857ebd8b66SMauro Carvalho Chehab-------------------------------------------- 1867ebd8b66SMauro Carvalho ChehabThis bank contains 16 sensors, for each sensor it contains 1 byte. 1877ebd8b66SMauro Carvalho ChehabSo far the following sensors are known to be available on all motherboards: 1887ebd8b66SMauro Carvalho Chehab 1897ebd8b66SMauro Carvalho Chehab- Sensor 0 CPU temp 1907ebd8b66SMauro Carvalho Chehab- Sensor 1 SYS temp 1917ebd8b66SMauro Carvalho Chehab- Sensor 3 CPU core volt 1927ebd8b66SMauro Carvalho Chehab- Sensor 4 DDR volt 1937ebd8b66SMauro Carvalho Chehab- Sensor 10 DDR Vtt volt 1947ebd8b66SMauro Carvalho Chehab- Sensor 15 PWM temp 1957ebd8b66SMauro Carvalho Chehab 1967ebd8b66SMauro Carvalho ChehabByte 0: 1977ebd8b66SMauro Carvalho Chehab This byte holds the reading from the sensor. Sensors in Bank1 can be both 1987ebd8b66SMauro Carvalho Chehab volt and temp sensors, this is motherboard specific. The uGuru however does 1997ebd8b66SMauro Carvalho Chehab seem to know (be programmed with) what kindoff sensor is attached see Sensor 2007ebd8b66SMauro Carvalho Chehab Bank1 Settings description. 2017ebd8b66SMauro Carvalho Chehab 2027ebd8b66SMauro Carvalho ChehabVolt sensors use a linear scale, a reading 0 corresponds with 0 volt and a 2037ebd8b66SMauro Carvalho Chehabreading of 255 with 3494 mV. The sensors for higher voltages however are 2047ebd8b66SMauro Carvalho Chehabconnected through a division circuit. The currently known division circuits 2057ebd8b66SMauro Carvalho Chehabin use result in ranges of: 0-4361mV, 0-6248mV or 0-14510mV. 3.3 volt sources 2067ebd8b66SMauro Carvalho Chehabuse the 0-4361mV range, 5 volt the 0-6248mV and 12 volt the 0-14510mV . 2077ebd8b66SMauro Carvalho Chehab 2087ebd8b66SMauro Carvalho ChehabTemp sensors also use a linear scale, a reading of 0 corresponds with 0 degree 2097ebd8b66SMauro Carvalho ChehabCelsius and a reading of 255 with a reading of 255 degrees Celsius. 2107ebd8b66SMauro Carvalho Chehab 2117ebd8b66SMauro Carvalho Chehab 2127ebd8b66SMauro Carvalho ChehabBank 0x22 Sensor Bank1 Settings (R) and Bank 0x23 Sensor Bank1 Settings (W) 2137ebd8b66SMauro Carvalho Chehab--------------------------------------------------------------------------- 2147ebd8b66SMauro Carvalho Chehab 2157ebd8b66SMauro Carvalho ChehabThose banks contain 16 sensors, for each sensor it contains 3 bytes. Each 2167ebd8b66SMauro Carvalho Chehabset of 3 bytes contains the settings for the sensor with the same sensor 2177ebd8b66SMauro Carvalho Chehabaddress in Bank 0x21 . 2187ebd8b66SMauro Carvalho Chehab 2197ebd8b66SMauro Carvalho ChehabByte 0: 2207ebd8b66SMauro Carvalho Chehab Alarm behaviour for the selected sensor. A 1 enables the described 2217ebd8b66SMauro Carvalho Chehab behaviour. 2227ebd8b66SMauro Carvalho Chehab 2237ebd8b66SMauro Carvalho ChehabBit 0: 2247ebd8b66SMauro Carvalho Chehab Give an alarm if measured temp is over the warning threshold (RW) [1]_ 2257ebd8b66SMauro Carvalho Chehab 2267ebd8b66SMauro Carvalho ChehabBit 1: 2277ebd8b66SMauro Carvalho Chehab Give an alarm if measured volt is over the max threshold (RW) [2]_ 2287ebd8b66SMauro Carvalho Chehab 2297ebd8b66SMauro Carvalho ChehabBit 2: 2307ebd8b66SMauro Carvalho Chehab Give an alarm if measured volt is under the min threshold (RW) [2]_ 2317ebd8b66SMauro Carvalho Chehab 2327ebd8b66SMauro Carvalho ChehabBit 3: 2337ebd8b66SMauro Carvalho Chehab Beep if alarm (RW) 2347ebd8b66SMauro Carvalho Chehab 2357ebd8b66SMauro Carvalho ChehabBit 4: 2367ebd8b66SMauro Carvalho Chehab 1 if alarm cause measured temp is over the warning threshold (R) 2377ebd8b66SMauro Carvalho Chehab 2387ebd8b66SMauro Carvalho ChehabBit 5: 2397ebd8b66SMauro Carvalho Chehab 1 if alarm cause measured volt is over the max threshold (R) 2407ebd8b66SMauro Carvalho Chehab 2417ebd8b66SMauro Carvalho ChehabBit 6: 2427ebd8b66SMauro Carvalho Chehab 1 if alarm cause measured volt is under the min threshold (R) 2437ebd8b66SMauro Carvalho Chehab 2447ebd8b66SMauro Carvalho ChehabBit 7: 2457ebd8b66SMauro Carvalho Chehab - Volt sensor: Shutdown if alarm persist for more than 4 seconds (RW) 2467ebd8b66SMauro Carvalho Chehab - Temp sensor: Shutdown if temp is over the shutdown threshold (RW) 2477ebd8b66SMauro Carvalho Chehab 2487ebd8b66SMauro Carvalho Chehab.. [1] This bit is only honored/used by the uGuru if a temp sensor is connected 2497ebd8b66SMauro Carvalho Chehab 2507ebd8b66SMauro Carvalho Chehab.. [2] This bit is only honored/used by the uGuru if a volt sensor is connected 2517ebd8b66SMauro Carvalho Chehab Note with some trickery this can be used to find out what kinda sensor 2527ebd8b66SMauro Carvalho Chehab is detected see the Linux kernel driver for an example with many 2537ebd8b66SMauro Carvalho Chehab comments on how todo this. 2547ebd8b66SMauro Carvalho Chehab 2557ebd8b66SMauro Carvalho ChehabByte 1: 2567ebd8b66SMauro Carvalho Chehab - Temp sensor: warning threshold (scale as bank 0x21) 2577ebd8b66SMauro Carvalho Chehab - Volt sensor: min threshold (scale as bank 0x21) 2587ebd8b66SMauro Carvalho Chehab 2597ebd8b66SMauro Carvalho ChehabByte 2: 2607ebd8b66SMauro Carvalho Chehab - Temp sensor: shutdown threshold (scale as bank 0x21) 2617ebd8b66SMauro Carvalho Chehab - Volt sensor: max threshold (scale as bank 0x21) 2627ebd8b66SMauro Carvalho Chehab 2637ebd8b66SMauro Carvalho Chehab 2647ebd8b66SMauro Carvalho ChehabBank 0x24 PWM outputs for FAN's (R) and Bank 0x25 PWM outputs for FAN's (W) 2657ebd8b66SMauro Carvalho Chehab--------------------------------------------------------------------------- 2667ebd8b66SMauro Carvalho Chehab 2677ebd8b66SMauro Carvalho ChehabThose banks contain 3 "sensors", for each sensor it contains 5 bytes. 2687ebd8b66SMauro Carvalho Chehab - Sensor 0 usually controls the CPU fan 2697ebd8b66SMauro Carvalho Chehab - Sensor 1 usually controls the NB (or chipset for single chip) fan 2707ebd8b66SMauro Carvalho Chehab - Sensor 2 usually controls the System fan 2717ebd8b66SMauro Carvalho Chehab 2727ebd8b66SMauro Carvalho ChehabByte 0: 2737ebd8b66SMauro Carvalho Chehab Flag 0x80 to enable control, Fan runs at 100% when disabled. 2747ebd8b66SMauro Carvalho Chehab low nibble (temp)sensor address at bank 0x21 used for control. 2757ebd8b66SMauro Carvalho Chehab 2767ebd8b66SMauro Carvalho ChehabByte 1: 2777ebd8b66SMauro Carvalho Chehab 0-255 = 0-12v (linear), specify voltage at which fan will rotate when under 2787ebd8b66SMauro Carvalho Chehab low threshold temp (specified in byte 3) 2797ebd8b66SMauro Carvalho Chehab 2807ebd8b66SMauro Carvalho ChehabByte 2: 2817ebd8b66SMauro Carvalho Chehab 0-255 = 0-12v (linear), specify voltage at which fan will rotate when above 2827ebd8b66SMauro Carvalho Chehab high threshold temp (specified in byte 4) 2837ebd8b66SMauro Carvalho Chehab 2847ebd8b66SMauro Carvalho ChehabByte 3: 2857ebd8b66SMauro Carvalho Chehab Low threshold temp (scale as bank 0x21) 2867ebd8b66SMauro Carvalho Chehab 2877ebd8b66SMauro Carvalho Chehabbyte 4: 2887ebd8b66SMauro Carvalho Chehab High threshold temp (scale as bank 0x21) 2897ebd8b66SMauro Carvalho Chehab 2907ebd8b66SMauro Carvalho Chehab 2917ebd8b66SMauro Carvalho ChehabBank 0x26 Sensors Bank2 Values / Readings (R) 2927ebd8b66SMauro Carvalho Chehab--------------------------------------------- 2937ebd8b66SMauro Carvalho Chehab 2947ebd8b66SMauro Carvalho ChehabThis bank contains 6 sensors (AFAIK), for each sensor it contains 1 byte. 2957ebd8b66SMauro Carvalho Chehab 2967ebd8b66SMauro Carvalho ChehabSo far the following sensors are known to be available on all motherboards: 2977ebd8b66SMauro Carvalho Chehab - Sensor 0: CPU fan speed 2987ebd8b66SMauro Carvalho Chehab - Sensor 1: NB (or chipset for single chip) fan speed 2997ebd8b66SMauro Carvalho Chehab - Sensor 2: SYS fan speed 3007ebd8b66SMauro Carvalho Chehab 3017ebd8b66SMauro Carvalho ChehabByte 0: 3027ebd8b66SMauro Carvalho Chehab This byte holds the reading from the sensor. 0-255 = 0-15300 (linear) 3037ebd8b66SMauro Carvalho Chehab 3047ebd8b66SMauro Carvalho Chehab 3057ebd8b66SMauro Carvalho ChehabBank 0x27 Sensors Bank2 Settings (R) and Bank 0x28 Sensors Bank2 Settings (W) 3067ebd8b66SMauro Carvalho Chehab----------------------------------------------------------------------------- 3077ebd8b66SMauro Carvalho Chehab 3087ebd8b66SMauro Carvalho ChehabThose banks contain 6 sensors (AFAIK), for each sensor it contains 2 bytes. 3097ebd8b66SMauro Carvalho Chehab 3107ebd8b66SMauro Carvalho ChehabByte 0: 3117ebd8b66SMauro Carvalho Chehab Alarm behaviour for the selected sensor. A 1 enables the described behaviour. 3127ebd8b66SMauro Carvalho Chehab 3137ebd8b66SMauro Carvalho ChehabBit 0: 3147ebd8b66SMauro Carvalho Chehab Give an alarm if measured rpm is under the min threshold (RW) 3157ebd8b66SMauro Carvalho Chehab 3167ebd8b66SMauro Carvalho ChehabBit 3: 3177ebd8b66SMauro Carvalho Chehab Beep if alarm (RW) 3187ebd8b66SMauro Carvalho Chehab 3197ebd8b66SMauro Carvalho ChehabBit 7: 3207ebd8b66SMauro Carvalho Chehab Shutdown if alarm persist for more than 4 seconds (RW) 3217ebd8b66SMauro Carvalho Chehab 3227ebd8b66SMauro Carvalho ChehabByte 1: 3237ebd8b66SMauro Carvalho Chehab min threshold (scale as bank 0x26) 3247ebd8b66SMauro Carvalho Chehab 3257ebd8b66SMauro Carvalho Chehab 3267ebd8b66SMauro Carvalho ChehabWarning for the adventurous 3277ebd8b66SMauro Carvalho Chehab=========================== 3287ebd8b66SMauro Carvalho Chehab 3297ebd8b66SMauro Carvalho ChehabA word of caution to those who want to experiment and see if they can figure 3307ebd8b66SMauro Carvalho Chehabthe voltage / clock programming out, I tried reading and only reading banks 3317ebd8b66SMauro Carvalho Chehab0-0x30 with the reading code used for the sensor banks (0x20-0x28) and this 3327ebd8b66SMauro Carvalho Chehabresulted in a _permanent_ reprogramming of the voltages, luckily I had the 3337ebd8b66SMauro Carvalho Chehabsensors part configured so that it would shutdown my system on any out of spec 3344776b9e3SBrandon Jiangvoltages which probably safed my computer (after a reboot I managed to 3357ebd8b66SMauro Carvalho Chehabimmediately enter the bios and reload the defaults). This probably means that 3367ebd8b66SMauro Carvalho Chehabthe read/write cycle for the non sensor part is different from the sensor part. 337