• 28.04.2024, 20:58
  • Registrieren
  • Anmelden
  • Sie sind nicht angemeldet.

 

Aquaero + Linux

Donnerstag, 22. September 2005, 17:19

Hallo beisammen,

nun werd ich mal meine Erfahrungen dazu zum Besten geben. Bei dieser Gelegenheit möchte ich mich nochmal bei den beiden freiwilligen Testern x-stars und giffi bedanken ;-) :-)

Tja, der letzte Stand ist nun, dass das aquaero und der Linux-Kernel nicht so recht miteinander klar kommen. Bei den Tests kamen zwei verschiedene Systeme zum Einsatz:
- x-stars' AMD-Rechner mit Ubuntu (2.6.10-5-386)
- giffi's 64-bit AMD-Maschine mit SuSE (2.6.11)

In den 10 Testläufen konnten zwar Daten aus dem aquaero gelesen werden, diese waren aber bestenfalls unbrauchbar. Hier das beste Resultat bei x-stars:

Quellcode

1
Case     ase     ase    Pase    Pase    Pase    Pase    Pase    Pase    Pase    Pase    Pase    Pase    Pase    Pase    Pase    Pase    Pase    Pase    1ase    1ase    1ase    1ase    1ase    1ase    1ase    1ase    1ase    1ase    1ase    1ase     ase     ase     ase     ase     ase     ase     ase     ase     ase     ase    case    case    case    case    case    case    case    case    case    case    case    case    Hase    Hase    Hase    Hase    Hase    Hase    Hase    Hase    Hase    Hase    Hase    Hase    Hase    Hase    Hase    Hase
(irgendwie witzig, die "Hasen" *g*)

Sowie bei giffi:

Quellcode

1
2
3
4
5
Radi 1   adi 1   adi 1   adi 1   adi 1   adi 1   adi 1   adi 1  ?????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????


Also es "rührt" sich schon was - ein Lüftername wird korrekt extrahiert (oder um genau zu sein: die ersten 8 Byte der Daten)..

Die Kommunikation und der generelle Zugriff klappt (Descriptor-Krempel) - der Vorgang des Auslesens ebenso (laut Rückgabewerte) - nur eben die Daten die am Ende im Puffer stehen sind nicht zu gebrauchen...
Bemerkenswert ist vielleicht noch, dass während der Testreihen drei verschiedene API's/Ansätze ausprobiert wurden und alle im selben Fehlerbild endeten...

Diagnose: Entweder ich hab was übersehen (wovon ich inzwischen nicht mehr ausgehe), oder der Linux-Kernel kommt mitm aquaero nicht zurecht (vielleicht packt er einfach ein 552 Byte langes Feld nicht), oder die Hardware nicht mit dem Kernel... Ist natürlich auch etwas schwierig zu beurteilen, wenn man kein aquaero besitzt :-/

Naja, ich denke ich werd das nun (trotz einschlägiger Linux-Erfahrung incl. Kernel-Patching ;-)) erst mal still legen... :-/

cheers chris

Re: Aquaero + Linux

Donnerstag, 22. September 2005, 18:27

Hi,
bis auf die Lüfter- und Sensornamen solltest du da auch nix für Menschen lesbares vorfinden *g*.
Du musst dir halt die Doku/Source zur Datenstruktur anschauen, und dann den gelesenen string stück für stück zerlegen. In bytes, integer und strings.
Im Supportbereich gibt es das aquasuite SDK zum Download, dort sind die Member erläutert und in den Sourcen der myTranslationClasses ist dann der Quellcode dazu wie man die Daten die vom USB gelesen wurden zerlegen muss.
Methode:
public bool CreateStructureFromString(string RawData);

Der Input Report sollte 553 byte lang sein , und der Output Report 377bytes.
so sollten die gelesenen Daten aussehen wenn am ae gerade ein EEprom Reset gemacht worden ist und keine Sensoren angeschlossen sind.

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
Lõfter 1  Lõfter 2  Lõfter 3  Lõfter 4  DurchflussSensor 1  Sensor 2  Sensor 3  Sensor 4  Sensor 5  Sensor 6   aquaero@@@@ý–´x€€€€€€€€€€€€„„„„„„t‡ÿÿÿ2
ÿÿÿÿÿÿÿÿèèüüúúúúúúôôôôôô^^^^^^

ÿ
ÿ
ÿ
ÿ))ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ*ªÿÿÿÿÿÿÿÿÿ*ªN N N N N N …




4.07aË—Deu


Sebastian

Re: Aquaero + Linux

Donnerstag, 22. September 2005, 20:13

Zitat

bis auf die Lüfter- und Sensornamen solltest du da auch nix für Menschen lesbares vorfinden *g*.
Richtig! ;-)

Deshalb sollte der obige Output umso mehr verwundern. Hier ist beispielsweise ein hex-dump der obigen Daten (von x-stars):

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
43 61 73 65 20 20 20 20 20 61 73 65 20 20 20 20
20 61 73 65 20 20 20 20 50 61 73 65 20 20 20 20
50 61 73 65 20 20 20 20 50 61 73 65 20 20 20 20
50 61 73 65 20 20 20 20 50 61 73 65 20 20 20 20
50 61 73 65 20 20 20 20 50 61 73 65 20 20 20 20
50 61 73 65 20 20 20 20 50 61 73 65 20 20 20 20
50 61 73 65 20 20 20 20 50 61 73 65 20 20 20 20
50 61 73 65 20 20 20 20 50 61 73 65 20 20 20 20
50 61 73 65 20 20 20 20 50 61 73 65 20 20 20 20
50 61 73 65 20 20 20 20 31 61 73 65 20 20 20 20
31 61 73 65 20 20 20 20 31 61 73 65 20 20 20 20
31 61 73 65 20 20 20 20 31 61 73 65 20 20 20 20
31 61 73 65 20 20 20 20 31 61 73 65 20 20 20 20
31 61 73 65 20 20 20 20 31 61 73 65 20 20 20 20
31 61 73 65 20 20 20 20 31 61 73 65 20 20 20 20
31 61 73 65 20 20 20 20 20 61 73 65 20 20 20 20
20 61 73 65 20 20 20 20 20 61 73 65 20 20 20 20
20 61 73 65 20 20 20 20 20 61 73 65 20 20 20 20
20 61 73 65 20 20 20 20 20 61 73 65 20 20 20 20
20 61 73 65 20 20 20 20 20 61 73 65 20 20 20 20
20 61 73 65 20 20 20 20 63 61 73 65 20 20 20 20
63 61 73 65 20 20 20 20 63 61 73 65 20 20 20 20
63 61 73 65 20 20 20 20 63 61 73 65 20 20 20 20
63 61 73 65 20 20 20 20 63 61 73 65 20 20 20 20
63 61 73 65 20 20 20 20 63 61 73 65 20 20 20 20
63 61 73 65 20 20 20 20 63 61 73 65 20 20 20 20
63 61 73 65 20 20 20 20 48 61 73 65 20 20 20 20
48 61 73 65 20 20 20 20 48 61 73 65 20 20 20 20
48 61 73 65 20 20 20 20 48 61 73 65 20 20 20 20
48 61 73 65 20 20 20 20 48 61 73 65 20 20 20 20
48 61 73 65 20 20 20 20 48 61 73 65 20 20 20 20
48 61 73 65 20 20 20 20 48 61 73 65 20 20 20 20
48 61 73 65 20 20 20 20 48 61 73 65 20 20 20 20
48 61 73 65 20 20 20 20 48 61 73 65 20 20 20 20
48 61 73 65 20 20 20 20


Die Daten bestehen nur aus Spaces (0x20) dem Teilstring "ase" (0x61 0x73 0x65) sowie ein paar "zufälligen" Bytes, die sich alle kurioserweise nur vor "ase" befinden.
Bei giffi ist die Situation etwas anders (hier stammen die Daten aus einem anderen Ansatz): Am Anfang erkennt man noch Teile des Namens des ersten Lüfters - später kommen dann nur noch 0x00's (oben als Fragezeichen dargestellt).
Hier der hex-dump von giffi:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
52 61 64 69 20 31 20 20 20 61 64 69 20 31 20 20 
20 61 64 69 20 31 20 20 20 61 64 69 20 31 20 20 
20 61 64 69 20 31 20 20 20 61 64 69 20 31 20 20 
20 61 64 69 20 31 20 20 20 61 64 69 20 31 20 20 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00



Ach ja, und laut Report-Descriptor (vom aquaero zurückgegeben) hat der input-report eine länge von 552 Bytes:

Quellcode

1
Item(Global): Report Count, data= [ 0x28 0x02 ] 552


Die 553 Bytes resultieren in Deinem Fall höchst-wahrscheinlich daraus, dass ihr den Report über den Endpoint mittels Interrupt-Transfer liest (dadurch erhöht sich die Report-Größe um eins).
Allerdings erhält man hier unter Linux den Fehler "Message too long"...