From owner-freebsd-mobile@FreeBSD.ORG Wed Mar 9 02:30:21 2005 Return-Path: Delivered-To: freebsd-mobile@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 666E816A4CE for ; Wed, 9 Mar 2005 02:30:21 +0000 (GMT) Received: from vms048pub.verizon.net (vms048pub.verizon.net [206.46.252.48]) by mx1.FreeBSD.org (Postfix) with ESMTP id 17E1D43D5A for ; Wed, 9 Mar 2005 02:30:21 +0000 (GMT) (envelope-from Alex.Kovalenko@verizon.net) Received: from RabbitsDen ([138.89.61.25])0.04 <0ID20063XCAJH8O1@vms048.mailsrvcs.net> for freebsd-mobile@freebsd.org; Tue, 08 Mar 2005 20:30:20 -0600 (CST) Date: Tue, 08 Mar 2005 21:30:08 -0500 From: "Alexandre \"Sunny\" Kovalenko" In-reply-to: To: jesse@wingnet.net Message-id: <1110335408.881.24.camel@RabbitsDen> MIME-version: 1.0 X-Mailer: Evolution 2.0.3 FreeBSD GNOME Team Port Content-type: text/plain; charset=iso-8859-5 Content-transfer-encoding: 8BIT References: <20050304223630.1CCD15D07@ptavv.es.net> cc: freebsd-mobile@freebsd.org Subject: Re: Thinkpad Thermals X-BeenThere: freebsd-mobile@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Mobile computing with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 Mar 2005 02:30:21 -0000 On Mon, 2005-03-07 at 02:18 -0500, Jesse Guardiani wrote: > Jesse Guardiani wrote: > > > Kevin Oberman wrote: > > [...] > > >>> Is 66C acceptable temp for a laptop? It's definitely a better temp, but > >>> It would really stink if my 1.2ghz had to be run at just 800mhz all the > >>> time to avoid cooking things. > >> > >> Once again, I can't define "acceptable". It is not so hot as to be > >> frightening, but it does sound like it's running warmer than I would > >> expect. Dust? Blocked air intake/outlet? > > > > Absolutely not. I just replaced the motherboard myself. It took 2 hours. > > I was very careful to examine the heatsink for blockage or excessive dust. > > It's clean, and the fan spins freely. > > > > > >> Those can real impact thermals. And, of course, fan problems can be > >> a big issue. > > > > I'm starting to think that my fan should be running, but isn't. The > > whole purpose of this post is to see if I can figure out what went wrong > > last year when my GPU cooked. If the fan should be running, but isn't, > > then that certainly gives me a place to start. > > OK, I can't find any fan speed settings in the BIOS. I have LCD settings, CPU > settings, and performance profiles, but nothing for fan speed. I think the fan > is running, as I can hear a faint humming from the vent port, even when the > HDD is sleeping. I can't feel any air on my hand though. > > Where should I start looking to tweak this thing via ACPI? > First, you might want to see if your ASL defines any thermal levels and what the values are. Since I am unfamiliar with Linux way of doing these things (and this is FreeBSD mailing list ;), I would use FreeBSD way and you will have to do the mapping. On my laptop (with hacked ASL) output of sysctl hw.acpi.thermal is as follows hw.acpi.thermal.min_runtime: 10 hw.acpi.thermal.polling_rate: 10 hw.acpi.thermal.tz0.temperature: 48.0C hw.acpi.thermal.tz0.active: -1 hw.acpi.thermal.tz0.thermal_flags: 0 hw.acpi.thermal.tz0._PSV: 90.0C hw.acpi.thermal.tz0._HOT: -1 hw.acpi.thermal.tz0._CRT: 110.0C hw.acpi.thermal.tz0._ACx: 75.0C 70.0C 55.0C -1 -1 -1 -1 -1 -1 -1 Important to your research is '_ACx' line above. It states temperatures that would trigger change in the cooling levels. In my case, they simply change speed of both fans simultaneously. If such line has some sensible values in it and you would like to change them one way or another, you will have to extract your ASL (see ACPI section of the handbook), find something that looks like Method(_AC0) { Return (KELV(0x4B)) } and change value it returns. Actual value must be in 1/10th of Kelvin, so 0C becomes 2733. Remember that lover ACx number corresponds to the higher temperature. In my case AC0 is set to 75C, AC1 to 70C and AC2 to 55C. In my ASL, following method is used to make Kelvin numbers: Method (KELV, 1, NotSerialized) { Store (Arg0, Local1) Multiply (0x0A, Local1, Local1) Add (Local1, 0x0AAC, Local1) Return (Local1) } If your ASL does not provide thermal levels, with some luck you might find your fan control directives tucked somewhere else. In my case (Averatec 3150H) they were called from method responsible for reporting of the current temperature (_TMP). If you can find them, it would be pretty simple to cobble together set of _ACx levels. If you are at that point, let me know and I will send you my ASL before and after the change so you can see what is involved. Good example of building _ACx level and corresponding objects exist in thermal section of the ACPI specification, which IMHO is well written and worth reading prior to attempting any ASL modifications. Finally, way to check whether fan is running is to stick small strip of paper through the fan grill ;) HTH, -- Alexandre "Sunny" Kovalenko (Олександр Коваленко)