I have recently bought a GIGABYTE 7VTXE+ motherboard and an Athlon XP 1600+. This is the first system I ever had with a temperature high enough to make me worry. With a room temperature of 20C, my motherboard after a couple of hours was at 36C and my CPU at 53C. During the summer, my room temperature will go to 35C. Will my CPU melt? And this was in more or less idle conditions!
Fortunately, I can report that using free software-only methods, I am now operating at motherboard:27C and CPU:28C. This is of course, a difference big enough to justify this text. I hope some other soul will find this description helpful (GIGABYTE, put this in your web site!). I'm also very pleased to report that this works for Windows 2000, Windows 98 AND LINUX.
So, before doing anything else, make sure that both your BIOS and your OS have ACPI enabled (for 7VTXE+ owners, the BIOS is fine).
Read byte 0x95 from the configuration space of PCI device 1106:3099 (KT266) Set bit 1 (2nd from the right) to 1 Write the new value to the same register in the configuration space
/sbin/modprobe i2c-isa /sbin/modprobe it87 temp_type=0x38 /usr/local/bin/sensors -sand run
sensorsto see your cooled CPUs temperature.
Hope these help your feverish 7VTXE+.
/******************************************************** begin : Fri Jul 6 10:13:24 CEST 2001 copyright : (C) 2001 by Martin Peters email : m...@bigfoot.de URL : http://mpet.freeservers.com/VCool.html Mon Mar 18 2002: Changes performed by Thanassis Tsiodras for GIGABYTE 7VTXE+ motherboards running under ACPI kernels. ********************************************************/ /******************************************************** This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. ********************************************************/ #include <stdlib.h> #include <sys/io.h> #include <unistd.h> #include <stdio.h> #define DWORD unsigned long int nb_b = 0, nb_d = 0, nb_f = 0; DWORD PCIRead(int reg, int fn, int dev, int bus) { DWORD r = 0x80000000; DWORD ret, org; int port = 0xcf8; r |= ((bus & 0xff) << 16); r |= ((dev & 0x1f) << 11); r |= ((fn & 0x7) << 8); r |= ((reg & 0xfc)); org = inl(port); outl(r, port); ret = inl(port + 4); outl(org, port); return ret; } void PCIWrite(DWORD val, int reg, int fn, int dev, int bus) { DWORD r = 0x80000000; DWORD org; int port = 0xcf8; r |= ((bus & 0xff) << 16); r |= ((dev & 0x1f) << 11); r |= ((fn & 0x7) << 8); r |= ((reg & 0xfc)); org = inl(port); outl(r, port); outl(val, port + 4); outl(org, port); } void InitPCI() // Search for KT266 chipset { DWORD res; int bus, dev, fun; int found = 0; for (bus = 0; bus < 255; bus++) { for (dev = 0; dev < 32; dev++) { for (fun = 0; fun < 7; fun++) { res = PCIRead(0, fun, dev, bus); if (res == 0xffffffff) continue; if (res == 0x30991106) { nb_b = bus; nb_d = dev; nb_f = fun; found = 1; goto adios; } } } } adios: if (!found) perror("KT266 Chipset not found"); res = PCIRead(0x95, nb_f, nb_d, nb_b); // printf("Old: %x\n", res); res |= 0x00000200; // printf("New: %x\n", res); printf("Enabling HALT Command Detect on KT266\n"); PCIWrite(res, 0x95, nb_f, nb_d, nb_b); } int main(int argc, char *argv[]) { if (iopl(3) < 0) perror("must run as root"); InitPCI(); return EXIT_SUCCESS; }
Index | CV | Updated: Sat Oct 8 12:33:59 2022 |