Zum Inhalt springen

AlienFX und Linux


Ayron

Empfohlene Beiträge

Hallo!

Da das AlienFX im M14x (187c:0521) nicht mit dem Java-Tool funktioniert hab ich mich mal hingesetzt und mit Hilfe eines USB-Sniffers das Protokoll analysiert.

Hier meine Erkenntnis:

<STX> opcode Adresse Parameter

Ein Befehl ist immer 9 Byte groß!


Befehle:


Mnemonic	opcode	Erklärung

CHG		0x01	Farbwechsel (CHanGe)

BLI		0x02	Blinken (BLInk)

STA		0x03	Statisch (STAtic)

END		0x04	Programmteil Ende

PGE		0x05	Programmende (ProGram End)

CHK		0x06	Bereitschaft prüfen (CHecK)

RST		0x0704	Reset (ReSeT)

ADD		0x08	Programmzeile hinzufügen

SVE		0x09	Programm speichern (SaVE)

SPE		0x0E	Geschwindigkeit (SPEed)


Die Mnemonics hab ich mir selbst ausgedacht.


Die Adresse muss für jedes Programmteil fortlaufend erhöht werden.

Der Befehl ADD nimmt als Adresse die Programmnummer.

Vor SVE kommt kein ADD! Das Programm, das direkt ausgeführt wird, also ohne

ADD-Befehle, wird mit PGE und nicht mit SVE abgeschlossen.


Programmnummern:

1	normal

2	Standby, Netz

5	Netz

6	Laden

7	Standby, Batterie

8	Batterie

9	Batterie leer


Die Farbbefehle CHG, BLI und STA nehmen als Parameter den Bereich und die Farbe.

Farben sind 4-Bit-Werte und 2 Farbwerte werden zu einem Byte zusammengefügt.

Also RG B0 (2 byte) oder bei 2 Farben RG BR GB (3 Byte)


Der Bereich ist ein 24-Bit-Wort, das Big-Endian (MSB first) übertragen wird.

Bit	Bereich

0	Tastatur links (kl)

1	Tastatur mitte links (kml)

2	Tastatur mitte rechts (kmr)

3	Tastatur rechts (kr)

5	Vorne links (fl)

6	Vorne rechts (fr)

8	AW-Schriftzug (aw)

9	Touchpad (tp)

11	Statusleds (sl)

13	Alienhead (Powerbutton) (ah)

14	Alieneyes (HDD-Led) (ae)


Die Bits können kombiniert werden.

ADD muss vor jede Zeile, die zu dem Programm gehört.

Ohne ADD hat ein Befehl sofort Wirkung.


Auf CHK antwortet AlienFX entweder mit 0x1000000000000000 (bereit) oder mit

0x1100000000000000 (nicht bereit)


Beispiel wie es das Alien Command Center übertragen hat:

op				Mnemonic

02 07 04 00 00 00 00 00 00	RST

02 06 00 00 00 00 00 00 00	CHK

<< 11 00 00 00 00 00 00 00

02 06 00 00 00 00 00 00 00	CHK

<< 10 00 00 00 00 00 00 00


				/* Programm 1: normal */

02 08 01 00 00 00 00 00 00	ADD 1

02 03 02 00 03 0f 0f 00 00	STA kl,kml,kmr,kr,tp,aw green

02 08 01 00 00 00 00 00 00	ADD 1

02 04 00 00 00 00 00 00 00	END

02 08 01 00 00 00 00 00 00	ADD 1

02 03 03 00 00 60 f0 00 00	STA fl,fr red

02 08 01 00 00 00 00 00 00	ADD 1

02 04 00 00 00 00 00 00 00	END

02 08 01 00 00 00 00 00 00	ADD 1

02 03 04 00 08 00 00 f0 00	STA sl blue

02 08 01 00 00 00 00 00 00	ADD 1

02 04 00 00 00 00 00 00 00	END

02 09 00 00 00 00 00 00 00	SVE


				/* Reset und Statusabfrage */

02 07 04 00 00 00 00 00 00	RST

02 06 00 00 00 00 00 00 00	CHK

<< 10 00 00 00 00 00 00 00


				/* Programm 2: Standby, Netzbetrieb */

02 08 02 00 00 00 00 00 00	ADD 2

02 01 01 00 60 00 00 f0 00	CHG ah,ae blue to black

02 08 02 00 00 00 00 00 00	ADD 2

02 01 01 00 60 00 00 00 0f	CHG ah,ae black to blue

02 08 02 00 00 00 00 00 00	ADD 2

02 04 00 00 00 00 00 00 00	END

02 08 02 00 00 00 00 00 00	ADD 2

02 03 02 0f 9f ff 00 00 00	STA kl,kml,kmr,kr,fl,fr,aw,sl,tp black

02 08 02 00 00 00 00 00 00	ADD 2

02 04 00 00 00 00 00 00 00	END

02 09 00 00 00 00 00 00 00	SVE


				/* Reset und Statusabfrage */

02 07 04 00 00 00 00 00 00	RST

02 06 00 00 00 00 00 00 00	CHK

<< 10 00 00 00 00 00 00 00


				/* Programm 5: Netzbetrieb */

02 08 05 00 00 00 00 00 00	ADD 5

02 03 01 00 60 00 00 f0 00	STA ah,ae blue

02 08 05 00 00 00 00 00 00	ADD 5

02 04 00 00 00 00 00 00 00	END

02 09 00 00 00 00 00 00 00	SVE


				/* Reset und Statusabfrage */

02 07 04 00 00 00 00 00 00	RST

02 06 00 00 00 00 00 00 00	CHK

<< 10 00 00 00 00 00 00 00


				/* Programm 6: Laden */

02 08 06 00 00 00 00 00 00	ADD 6

02 01 01 00 60 00 00 f0 ff	CHG ah,ae blue to aqua

02 08 06 00 00 00 00 00 00	ADD 6

02 01 01 00 60 00 0f f0 0f	CHG ah,ae aqua to blue

02 08 06 00 00 00 00 00 00	ADD 6

02 04 00 00 00 00 00 00 00	END

02 09 00 00 00 00 00 00 00	SVE


				/* Reset und Statusabfrage */

02 07 04 00 00 00 00 00 00	RST

02 06 00 00 00 00 00 00 00	CHK

<< 10 00 00 00 00 00 00 00


				/* Programm 7: Standby, Batterie */

02 08 07 00 00 00 00 00 00	ADD 7

02 01 01 00 60 00 0f f0 00	CHG ah,ae aqua to black

02 08 07 00 00 00 00 00 00	ADD 7

02 01 01 00 60 00 00 00 ff	CHG ah,ae black to aqua

02 08 07 00 00 00 00 00 00	ADD 7

02 04 00 00 00 00 00 00 00	END

02 08 07 00 00 00 00 00 00	ADD 7

02 03 02 0f 9f ff 00 00 00	STA kl,kml,kmr,kr,fl,fr,tp,aw,sl black

02 08 07 00 00 00 00 00 00	ADD 7

02 04 00 00 00 00 00 00 00	END

02 09 00 00 00 00 00 00 00	SVE


				/* Reset und Statusabfrage */

02 07 04 00 00 00 00 00 00	RST

02 06 00 00 00 00 00 00 00	CHK

<< 10 00 00 00 00 00 00 00


02 08 08 00 00 00 00 00 00	ADD 8

02 03 01 00 60 00 0f f0 00	STA ah,ae aqua

02 08 08 00 00 00 00 00 00	ADD 8

02 04 00 00 00 00 00 00 00	END

02 09 00 00 00 00 00 00 00	SVE


				/* Reset und Statusabfrage */

02 07 04 00 00 00 00 00 00	RST

02 06 00 00 00 00 00 00 00	CHK

<< 10 00 00 00 00 00 00 00


				/* Programm 9: Batterie leer */

02 08 09 00 00 00 00 00 00	ADD 9

02 02 01 00 60 00 0f f0 00	BLI ah,ae aqua

02 08 09 00 00 00 00 00 00	ADD 9

02 04 00 00 00 00 00 00 00	END

02 09 00 00 00 00 00 00 00	SVE


				/* Reset und Statusabfrage */

02 07 04 00 00 00 00 00 00	RST

02 06 00 00 00 00 00 00 00	CHK


02 0e 00 c8 00 00 00 00 00	SPE 0xc8


				/* Der Rest wird sofort ausgeführt */

02 03 01 00 03 0f 0f 00 00	STA kl,kml,kmr,kr,tp,aw green

02 04 00 00 00 00 00 00 00	END

02 03 02 00 00 60 f0 00 00	STA fl,fr red

02 04 00 00 00 00 00 00 00	END

02 03 03 00 08 00 00 f0 00	STA sl blue

02 04 00 00 00 00 00 00 00	END

02 05 00 00 00 00 00 00 00	PGE


Vor jedem Programm muss ein Reset und Statuscheck durchgeführt werden.

Mich wundert es etwas, dass bei Programm 1 die Adresse mit 2 beginnt. Es lassen

sich auch Dinge einstellen, die Alien Command Center nicht ermöglicht.


Jetzt werd ich mal versuchen einen Treiber für Linux zu schreiben.

Vielleicht hilft meine Protokollanalyse auch anderen, um Treiber für weitere Betriebssysteme zu schreiben.

Bearbeitet von Ayron
Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 4 Monate später...

du ich habe einen m17x r1 ,da is die alien fx hinüber unter w7, wollte fragen ob du mir helfen kannst, den der usb port vom alienwarefx wird nicht erkannt, im w7 geräte manager kannste einen treiber schreiben bitte

Link zu diesem Kommentar
Auf anderen Seiten teilen

Leider bin ich momentan nicht weiter gekommen wegen Studiumsstress. Der Treiber ist aber schon so weit, dass er geladen wird und mit dem AlienFX-Controller redet. Was noch fehlt ist das Interface zum Userspace und der Interpreter, der die Mnemonics in opcode umsetzt.

Ich nehm mal an, der Treiber wird mit allen Notebooks funktionieren, sofern bekannt ist, welche Bits welche Bereiche ansteuern (kann man aber ausprobieren). Das Protokoll ist bei allen gleich. Jedenfalls kann man mit diesem Treiber dann sogar Leuchtmuster einstellen, die so nicht vorgesehen waren. Während dem Probieren konnte ich z.B. den Powerbutton blau, aber die Augen rot leuchten lassen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 2 Monate später...

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.
Hinweis: Dein Beitrag muss vom Moderator freigeschaltet werden, bevor er sichtbar wird.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...

Wichtige Information

Bitte beachten Sie folgende Informationen: Nutzungsbedingungen, Datenschutzerklärung und Community-Regeln. Wir haben Cookies auf Deinem Gerät platziert. Das hilft uns diese Webseite zu verbessern. Du kannst die Cookie-Einstellungen anpassen, andernfalls gehen wir davon aus, dass Du damit einverstanden bist, weiterzumachen.