i8kutils/fanonbsd für Laptops von Dell

Tronar

aus Überzeugung altmodisch
'n Abend!

Wer einen "Dell Inspiron" oder "Latitude" hat, dem sind die im Titel genannten Namen vielleicht schon begegnet. Beides sind Programme, die entweder interaktiv oder automatisiert das Ansteuern der Laptop-Lüfter gestatten. Und da es die "i8kutils" nur für Linux gibt und "fanonbsd" schon vor langer Zeit verschwunden ist, sitzen FreeBSD-User diesbezüglich auf dem Trockenen und müssen die Arbeit dem unbefriedigenden BIOS überlassen.

Deshalb habe ich das hier geschrieben:
http://www.scheinast.homepage.t-online.de/i8ktools-1.tar.gz

Es ist, sagen wir mal, ein Nachbau eines Teils der "i8kutils", statt mit Tcl/Tk aber mit Xlib und C, ohne Kernelmodul - und zwangsweise GPL- statt BSD-lizenziert.
Es kompiliert sich unter FreeBSD wie auch unter Linux (noch ungetestet).

Wer will, kann es mal antesten. Bei mir ("Inspiron 8200") läuft es ohne Probleme.

MfG
Tronar

PS: Mich würde besonders interessieren, auf welchen Modellen es inwieweit läuft. Wer ängstlich ist, kann ja man mit "i8ktemp" anfangen; das mach nur eine Abfrage.
 
Hallo Tronar,

dein Tool lässt sich unter 7.2-PRERELEASE/amd64 nicht bauen:

gcc -I/usr/local/include -L/usr/local/lib -lX11 i8kgear.c -o i8kgear
/var/tmp//cc9HFzfT.s: Assembler messages:
/var/tmp//cc9HFzfT.s:19: Error: suffix or operands invalid for `push'
/var/tmp//cc9HFzfT.s:20: Error: `0(%eax)' is not a valid 64 bit base/index expression
/var/tmp//cc9HFzfT.s:22: Error: `4(%eax)' is not a valid 64 bit base/index expression
/var/tmp//cc9HFzfT.s:23: Error: `8(%eax)' is not a valid 64 bit base/index expression
/var/tmp//cc9HFzfT.s:24: Error: `12(%eax)' is not a valid 64 bit base/index expression
/var/tmp//cc9HFzfT.s:25: Error: `16(%eax)' is not a valid 64 bit base/index expression
/var/tmp//cc9HFzfT.s:26: Error: `20(%eax)' is not a valid 64 bit base/index expression
/var/tmp//cc9HFzfT.s:27: Error: suffix or operands invalid for `pop'
/var/tmp//cc9HFzfT.s:30: Error: `(%esp)' is not a valid 64 bit base/index expression
/var/tmp//cc9HFzfT.s:31: Error: `4(%eax)' is not a valid 64 bit base/index expression
/var/tmp//cc9HFzfT.s:32: Error: `8(%eax)' is not a valid 64 bit base/index expression
/var/tmp//cc9HFzfT.s:33: Error: `12(%eax)' is not a valid 64 bit base/index expression
/var/tmp//cc9HFzfT.s:34: Error: `16(%eax)' is not a valid 64 bit base/index expression
/var/tmp//cc9HFzfT.s:35: Error: `20(%eax)' is not a valid 64 bit base/index expression
/var/tmp//cc9HFzfT.s:36: Error: suffix or operands invalid for `pop'
/var/tmp//cc9HFzfT.s:37: Error: `0(%eax)' is not a valid 64 bit base/index expression
/var/tmp//cc9HFzfT.s:38: Error: suffix or operands invalid for `lahf'
*** Error code 1

Thomas
 
dein Tool lässt sich unter 7.2-PRERELEASE/amd64 nicht bauen:
Hallo, Thomas!

Verdammt! Die 64-bit-Prozessoren hatte ich ganz vergessen. Das kommt davon, wenn man an einer alten Kiste sitzt. :)

Probier mal, das Header-File "i8k.h" gegen das hier angehängte auszutauschen. (Entferne bitte die Endung ".txt"!) Damit sollten dann zumindest "i8kgear", "i8ktemp" und "i8kfans" gehen, bei "i8kprobe" weiß ich nicht so recht ...

Sag mir, ob's klappt; dann tausche ich das im Archiv auf der Web-Seite oben ebenfalls aus.

Gruß zur Mitternacht
Tronar
 

Anhänge

  • i8k.h.txt
    4,2 KB · Aufrufe: 471
Hallo Tronar,

da stimmt noch was nicht:

Code:
gcc -I/usr/local/include -L/usr/local/lib -lX11 i8kgear.c -o i8kgear
/var/tmp//ccAvbVNE.s: Assembler messages:
/var/tmp//ccAvbVNE.s:38: Error: suffix or operands invalid for `lahf'
*** Error code 1

[EDIT: will noch mal explizit klarstellen, dass ich das unter FreeBSD ausprobiere]

Gruß
Thomas
 
Zuletzt bearbeitet:
also die Temperatur gibt er bei mir richtig aus. Die anderen Sachen habe ich nicht versucht. Ich bin eigentlich aber auch ganz zufrieden mit meiner Lüftersteuerung. Mein Dell-Laptop ist leise und kühl (normalerweise < 40°).

Bei hoher Last wird es ein wenig wärmer, aber auch noch besser als fast alle anderen Notebooks die ich kenne. Hab aber auch gehört, dass es bei anderen Dells, gerade mit NVidia-Grafik das ganz anders seien soll. Mein Mitbewohner hat so eins. Der hat im normalen Betrieb so einen extra-Notebookkühler drunter, damit die Temperaturen unter 70° bleiben... und das Ding macht so viel Lärm als würde es ein Atomkraftwerk kühlen.
 
Die Lüfter meines Dell Studio 1535 bieten trotz aktivem powerd die ganze Zeit eine unschöne Geräuschkulisse, auch wenn das Notebooks quasi nichts zu tun hat. hw.acpi.thermal.tz0.temperature zeigt Werte um 45°C an.

Da wäre mir ein Tool, das dem ein Ende bereitet, sehr willkommen ;-)
 
Hier auf nem Inspiron 6000 funktioniert es. Lüftersteuerung mit "./i8kfans 0 x" wobei x für den einen Lüfter im System steht. i8ktemp liefert auch korrekte Werte.

EDIT:
Code:
#!/bin/sh

# i8k fan control daemon

# Copyright (c) 2009 FreeBSDuser
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted providing that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
#    notice, this list of conditions and the following disclaimer in the
#    documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR``AS IS'' AND ANY EXPRESS OR 
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY 
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
# IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
# POSSIBILITY OF SUCH DAMAGE.

I8KTEMP=/opt/bin/i8ktemp
I8KFANS=/opt/bin/i8kfans
STATE0=36
STATE1=45
STATE2=55
INTERVAL=10

while true; do
	TEMP=`$I8KTEMP | cut -d ' ' -f 1`
	STATE=`$I8KFANS | cut -d ' ' -f 2`
	
	if [ $TEMP -le $STATE0 ]; then
                if [ $STATE != '0' ]; then
			$I8KFANS 0 0
			echo CPU is at $TEMP degrees Celsius, switching OFF
                fi
	elif [ $TEMP -ge $STATE2 ]; then
		if [ $STATE != '2' ]; then
			$I8KFANS 0 2
			echo CPU is at $TEMP degrees Celsius, switching to Level 2
		fi
	elif [ $TEMP -ge $STATE1 -a $STATE != '1' ]; then
			$I8KFANS 0 1
			echo CPU is at $TEMP degrees Celsius, switching to Level 1
	fi
	sleep $INTERVAL
done
 
Zuletzt bearbeitet:
Da wäre mir ein Tool, das dem ein Ende bereitet, sehr willkommen ;-)

Hallo, Schlesi!

Den 64-bit-Code habe ich aus dem Programm "dellfand" entnommen, das angeblich auch auf x86-64 läuft.
Vielleicht kannst Du mal versuchen, das zu besorgen und zu kompilieren.
Was ich beobachtet habe: Mit Compiler-Optimierung (-O2 oder so) wird mindestens eines meiner Tools falsch (ohne Fehlermeldung, aber nicht lauffähig) kompiliert. Hast Du also optimiert?

Ansonsten fällt mir gerade nichts ein. Werde noch mal grübeln ...

Gruß
Tronar
 
Zurück
Oben