ACPI Werte lesen und schreiben...
Verfasst: Freitag 19. Februar 2010, 16:09
Ich hab ein kleines Problem. Bei meinem Asus A8J Notebook läuft der Lüfter unter Linux ständig und das nervt, siehe auch: http://forum.ubuntuusers.de/topic/lueft ... 8j-laptop/
Nun hab ich ein wenig gesucht. Das Problem ist wohl, das der Lüfter nicht direkt unterstützt wird. Aber ich hab das gefunden:
http://code.google.com/p/asusfan/
Es ist ein kleines Kernel Modul. Aber ich kann es nicht nutzten, weil es zu diesem Fehler kommt: "asus_fan: Unknown symbol __udivdi3"
In asus_fan.c habe ich das gefunden:
Nun Frage ich mich, ob ich nicht auch mit Python die Werte lesen und setzten kann?
Nun hab ich ein wenig gesucht. Das Problem ist wohl, das der Lüfter nicht direkt unterstützt wird. Aber ich hab das gefunden:
http://code.google.com/p/asusfan/
Es ist ein kleines Kernel Modul. Aber ich kann es nicht nutzten, weil es zu diesem Fehler kommt: "asus_fan: Unknown symbol __udivdi3"
In asus_fan.c habe ich das gefunden:
Code: Alles auswählen
static void set_fan_speed(int speed)
{
struct acpi_object_list params;
union acpi_object in_objs[2], in_obj;
acpi_status status;
//Set temperature when manual control will be disabled
params.count = 2;
params.pointer = in_objs;
in_objs[0].type = in_objs[1].type = ACPI_TYPE_INTEGER;
in_objs[0].integer.value = zone[NUM_ZONES-1].tmp; //temp
in_objs[1].integer.value = 0;
status = acpi_evaluate_object(NULL, "\\_TZ.WTML",
¶ms, NULL);
if (status != AE_OK)
printk("_TZ.WTML error\n");
//Set fan speed
params.count = 1;
params.pointer = &in_obj;
in_obj.type = ACPI_TYPE_INTEGER;
in_obj.integer.value = ((0x84 << 16)
+ (speed << 8) + (0xc4));
status = acpi_evaluate_object(NULL, "\\_SB.ATKD.ECRW",
¶ms, NULL);
if (status != AE_OK) printk("_SB.ATKD.ECRW error\n");
}