# hdaps <----> khdapsmon problem mit 2.6.20-r6

## curator

hi,

ich habe ein problem mit hdaps, ich habe das als Modul im kernel und kann es auch mit modprobe starten:

dmesg:

```

hdaps: IBM ThinkPad X40 detected.

input: hdaps as /class/input/input4

hdaps: driver successfully loaded.

```

Dann habe ich versucht, hdapsd also festplattenschutz zu installieren, der läuft, bemerkt aber keine bewegung, khdapsmon liefert das gleiche ergebnis, der standwaert (128,1) ändert sich nicht.

Hat wer ne Idee, warum hdaps keine Werte ausspuckt, obwohl es läuft? Oder kann noch was anderes nicht stimmen.

MfG

AlexLast edited by curator on Tue Apr 24, 2007 11:16 am; edited 2 times in total

----------

## Necoro

für hdapsd musst du wenn ich mich richtig erinnere, nach dem installieren ein "emerge --config hdapsd" machen

----------

## schmutzfinger

Die Daten liest das Teil aus /sys/devices/platform/hdaps/position, das kann man sich auch mit cat angucken. Ich habe bei meinem Thinkpad nicht den hdaps Treiber aus dem Kernel sondern den von app-laptop/tp_smapi (mit hdaps useflag). Das muss man sowieso nehmen wenn man smapi support haben will, wenn nicht ist es trotzdem ne Alternative zu dem aus dem kernel.

----------

## curator

ok, hab das mit dem tp_smai versucht, hab auch in make.conf hdaps eingetragen, mit folgendem Misserfolg:

```

Calculating dependencies  ..... ...... done!

>>> Emerging (1 of 1) app-laptop/tp_smapi-0.20 to /

 * tp_smapi-0.20.tgz RMD160 ;-) ...                                       [ ok ]

 * tp_smapi-0.20.tgz SHA1 ;-) ...                                         [ ok ]

 * tp_smapi-0.20.tgz SHA256 ;-) ...                                       [ ok ]

 * tp_smapi-0.20.tgz size ;-) ...                                         [ ok ]

 * checking ebuild checksums ;-) ...                                      [ ok ]

 * checking auxfile checksums ;-) ...                                     [ ok ]

 * checking miscfile checksums ;-) ...                                    [ ok ]

 * checking tp_smapi-0.20.tgz ;-) ...                                     [ ok ]

 * Determining the location of the kernel source code

 * Found kernel source directory:

 *     /usr/src/linux

 * Found kernel object directory:

 *     /lib/modules/2.6.19-gentoo-r5/build

 * Found sources for kernel version:

 *     2.6.19-gentoo-r5

>>> Unpacking source...

>>> Unpacking tp_smapi-0.20.tgz to /var/tmp/portage/app-laptop/tp_smapi-0.20/work

>>> Source unpacked.

>>> Compiling source in /var/tmp/portage/app-laptop/tp_smapi-0.20/work/tp_smapi-0.20 ...

 * Preparing tp_base module

patch -d /usr/src/linux -i /var/tmp/portage/app-laptop/tp_smapi-0.20/work/tp_smapi-0.20/diff/hdaps.diff -p1 -o /var/tmp/portage/app-laptop/tp_smapi-0.20/work/tp_smapi-0.20/hdaps.c

patching file drivers/hwmon/hdaps.c

Hunk #1 FAILED at 33.

Hunk #11 FAILED at 500.

Hunk #12 succeeded at 541 (offset 15 lines).

Hunk #13 succeeded at 574 (offset 19 lines).

Hunk #14 succeeded at 586 (offset 19 lines).

Hunk #15 succeeded at 596 (offset 19 lines).

2 out of 15 hunks FAILED -- saving rejects to file /var/tmp/portage/app-laptop/tp_smapi-0.20/work/tp_smapi-0.20/hdaps.c.rej

make: *** [hdaps.c] Error 1

!!! ERROR: app-laptop/tp_smapi-0.20 failed.

Call stack:

  ebuild.sh, line 1614:   Called dyn_compile

  ebuild.sh, line 971:   Called qa_call 'src_compile'

  environment, line 4024:   Called src_compile

  ebuild.sh, line 1304:   Called linux-mod_src_compile

  linux-mod.eclass, line 516:   Called die

!!! Unable to make  KSRC=/usr/src/linux HDAPS=1 default.

!!! If you need support, post the topmost build error, and the call stack if relevant.

!!! A complete build log is located at '/var/tmp/portage/app-laptop/tp_smapi-0.20/temp/build.log'.

            
```

----------

## schmutzfinger

Probier halt mal die neuste Version.

----------

## curator

Was soll ich sagen, de RMann hat Recht!!

emerge tp_smapi-0.30 hilft  :Smile: 

Danke

[edit]

Alles läuft sogar der hdaps-gl

leider stimmt die vorne-hinten Richtung nicht, sie ist invertiert. Das ist für das parken der Platte ganz egal, aber für joystick Spielereien net. hab was von nem inverted gelesen, der invertiert aber leider beide Achsen, kann ich nur eine drehen?

----------

## bbgermany

Hi,

über das Kernelmodul hdaps kann man das Invertieren steuern. Das hat nämlich eine kleine Option dafür, IIRC.

Einfach mal "modinfo hdaps" machen.

MfG. Stefan

----------

## curator

ehm ja, was sagt mir das jetzt?

```

filename:       /lib/modules/2.6.19-gentoo-r5/extra/hdaps.ko

author:         Robert Love

description:    IBM Hard Drive Active Protection System (HDAPS) driver

license:        GPL v2

vermagic:       2.6.19-gentoo-r5 preempt mod_unload PENTIUMM

depends:        thinkpad_ec

parm:           invert:invert data along each axis (bool)

```

Das sieht ja fast gut aus, aber each axis?

```

parm:           invert:invert data along each axis (bool)

```

----------

## bbgermany

Ich würde sagen: Einfach mal ausprobieren  :Very Happy: 

MfG. Stefan

----------

## curator

Einfach probieren ohne Ahnung zu haben was man da macht, klingt fürchterlich, muss ich in die hdaps.c irgnedwas eintragen?

Ich versuch einfach mal

einfach mal in hdaps.c eingefügt:

*x=-*x

mal sehen

----------

## bbgermany

Nein, in die hdaps.c muss garnichts eingetragen werden. Einfach das Modul wie folgt entladen und dann wieder neu laden mit einer Optionsangabe:

```

# modprobe -r hdaps

# modprobe -v hdpas invert=1

```

Wenn dann das Invert den gewünschten Effekt erzeugt, kannst du in /etc/modules.d/hdaps die Option eintragen und ein "modules-update" laufen lassen

MfG. Stefan

----------

## curator

HI,

genau das habe ich schonmal versucht.

Das Ding invertiert leider beide Axen, das heißt: jetzt stimmt zwar vorne hinten, aber links rechts ist invertiert. Ich suche also eine Möglichkeit, genau EINE Achse zu invertieren, welche ist letztlich egal, da ich ja mit o.g. Prinzip wieder beide invertieren kann.

In der hdaps.conf hab ich folgendes gefunden:

```

static int __hdaps_read_pair(unsigned int port1, unsigned int port2,

              int *x, int *y)

{

   /* do a sync refresh -- we need to be sure that we read fresh data */

   if (__device_refresh_sync())

      return -EIO;

   *y = inw(port2);

   *x = inw(port1);

   km_activity = inb(HDAPS_PORT_KMACT);

   __device_complete();

   /* if hdaps_invert is set, negate the two values */

   if (hdaps_invert) {

      *x = -*x;

      *y = -*y;

   }

   return 0;

}

```

Doch auch wenn ich da die zeile *x = -*x; auskommandiere, ändert sich seltsamerweise nichts, obwohl ich nachher:

```
make

make modules_install

make install 

```

gemacht  habe..........

----------

## firefly

 *curator wrote:*   

> HI,
> 
> genau das habe ich schonmal versucht.
> 
> Das Ding invertiert leider beide Axen, das heißt: jetzt stimmt zwar vorne hinten, aber links rechts ist invertiert. Ich suche also eine Möglichkeit, genau EINE Achse zu invertieren, welche ist letztlich egal, da ich ja mit o.g. Prinzip wieder beide invertieren kann.
> ...

 

auch das modul neu geladen nach der änderung?

----------

## curator

ehm, ich da gerade etwas versucht. 

leider kann ich jetzt weder hdaps noch tp_smapi starten.

```

thinkpad_ec: cannot claim io ports 0x1600-0x161f

hdaps: Unknown symbol thinkpad_ec_unlock

hdaps: Unknown symbol thinkpad_ec_invalidate

hdaps: Unknown symbol thinkpad_ec_try_lock

hdaps: Unknown symbol thinkpad_ec_read_row

hdaps: Unknown symbol thinkpad_ec_try_read_row

hdaps: Unknown symbol thinkpad_ec_prefetch_row

hdaps: Unknown symbol thinkpad_ec_lock

thinkpad_ec: cannot claim io ports 0x1600-0x161f

tp_smapi: Unknown symbol thinkpad_ec_unlock

tp_smapi: Unknown symbol thinkpad_ec_invalidate

tp_smapi: Unknown symbol thinkpad_ec_read_row

tp_smapi: Unknown symbol thinkpad_ec_lock

```

Aber dennoch läuft khdapsmonitor und hdaps-gl luft allerdings noch

----------

## curator

Ok, Problem gelöst, also:

Ich hatte einen neuen Kernel installiert [2.6.20-r6] seit dem die Fehler mit dem tp_smapi etc, weiß net woher, aber zurpck zu 2.19:

Also,

hdaps vom Kernel wird ÜBERSCHRIEBEN von tp_smapi, das ist nicht gut.

 emerge -C tp_smapi deinstalliert das, klar

dann emerge tp_smapi und nach dem entpacken STRG^C drücken

dann in den Odner wechseln -> /var/...../tp_smapi und die hdaps.c bearbeiten (*y=-*y)

dann make install HDAPS=1 und fertig, alles läuft mit richtigen koordinaten

----------

## curator

Ich hab ne Idee, waran das mit dem 2.6.20er Kernel liegen könnte.

Selbst wenn ich alles hdaps mäßige aus dem Kernel ausbaue, kommt sofort nach dem boot noch folgende Meldung:

dmesg | gerp hdaps

```

hdaps: IBM Thinkpad X40 detekted

input: hdaps as /class/input/input6

hdaps: driver successfully loaded.

```

Hab schon häufiger gelesen, dass tp_smapi (was ich ja nutzen will) sich mit dem orginal hdaps beißt, wie kann ich das eingebaute hdaps also "noch weiter" deaktivieren?

```

tp_base: cannot claim ports 0x1600-0x161f (conflict with old hdaps driver?)

tp_smapi: Unknown symbol tp_controller_invalidate

tp_smapi: Unknown symbol tp_controller_read_row

tp_smapi: Unknown symbol tp_controller_unlock

tp_smapi: Unknown symbol tp_controller_lock

```

Danke

----------

## bbgermany

 *curator wrote:*   

> dann emerge tp_smapi und nach dem entpacken STRG^C drücken
> 
> dann in den Odner wechseln -> /var/...../tp_smapi und die hdaps.c bearbeiten (*y=-*y)
> 
> dann make install HDAPS=1 und fertig, alles läuft mit richtigen koordinaten

 

Hi,

die bessere Lösung ist: STRG+Z nach dem Entpacken drücken. Dann die Datei editieren und danach in der Konsole "fg" eingeben und "Enter" drücken.

Wenn du das Kernelmodul, dass mit 2.6.20 nicht haben willst, sondern das aus dem Pakte tp_smapi, dann solltest du es einfach aus der Kernelkonfiguration entfernen.

MfG. Stefan

----------

## curator

```

Hab die .config mal entfernt, glaubt mir, ich hab hdaps net drin............

```

Hab ich das damit nicht?Last edited by curator on Tue Apr 24, 2007 5:02 pm; edited 1 time in total

----------

## schmutzfinger

Also curator das ist schon der 2.Thread den du mit ner kompletten .config zumüllst. Sowas muss doch nicht sein... gibts bestimmt auch ne Forenregel dagegen. Poste relevante Teile, wenn es mal die ganze config sein muss dann lade sie irgendwo hoch und verlinke sie, oder nutze nen pastie-Server.

Und nochmal zum Thema, ein merge unterbrechen und live patchen ist unsauber ganz egal wie man es macht. Der richtige Weg wäre ein patch zu erstellen, das ebuild anzupassen und in ein overlay zu legen. Wenn du das irgendwann mal wiederholen willst dann suchst du am ende diesen thread wieder raus weil du nichtmehr weisst wie du es gemacht hast.

----------

## curator

...

das mit dem emerge abbrechen war nur ein Versuch, ein Vorzeichen zu drehen, das mache ich gerade gar nicht sondern einfach "straight forward" emergen ohne abbruch. hab eben gelesen, dass ein bios update hilfreich sein könnte, die sind bei ibm .exe datein und ich weiß nicht, ob ich mich trauen soll, die mit wine zu starten. Geht das (ich hab ja auch kein Diskettenlaufwerk.)

P.S. Sicherlich ist im Nachhinnein die ganze config etwas viel, aber da du mir ja keine PM geschickt hast dies zu korrigieren, haben wir ja jetzt zum Glück noch was mehr Müll .... scnr

----------

## schmutzfinger

BIOS Update mit wine würde ich unter keinen Umständen machen. Ich habe vor ein paar Monaten ein BIOS Update auf nem Thinkpad gemacht und da gabs ein CD iso für Leute ohne Windows.

----------

## Max Steel

 *schmutzfinger wrote:*   

> BIOS Update mit wine würde ich unter keinen Umständen machen. Ich habe vor ein paar Monaten ein BIOS Update auf nem Thinkpad gemacht und da gabs ein CD iso für Leute ohne Windows.

 

Echt, gibs auch Firmen die nicht von der breiten Masse ausgehen und an uns armen Linuxer denken?

Tschuldigung.

----------

## curator

Hm, Bios Update gemacht, embedded Controller upgedatet, keine veränderung

----------

## bbgermany

Das scheint typisch zu sein für IBM  :Wink:  bei meinem T60 ist das genauso. Man muss aber auch dazu sagen, wofür hdaps eigentlich gemacht wurde; und zwar um die Festplatte anzuhalten im Falle eines Stoßes. Und bei der Aufgabe ist es so ziemlich egal ob die Sensoren die richtige Richtung der Neigung anzeigen, es geht einfach nur darum dass sie eine Bewegung registrieren.

Deswegen wird sich da auch nichts ändern und man muss weiterhin die Hand anlegen um die Neigungsrichtung zu korrigieren.

MfG. Stefan

----------

## curator

Ehm, hdaps läuft ja gar nicht, der vorzeichen Fehler wäre mir ja zunächst mal egal....................

----------

## schmutzfinger

Mal zurück zum Thema.

```
less /proc/ioports
```

Sagt dir was den Port gerade belegt.

----------

## curator

Das hingeben könnte sich mit meiner Vermutung decken, dass hdaps die ports bereits verwendet. oder?

ich will ja das nur tp_smapi bzw der hdaps teil davon da mal läuft.

hab jetzt ma tp_smapi deinstalliert und dennoch existieren hdaps.o files. Wie kann das sein, ohne Kernel support?

----------

