aquaero-info README
===================

aquaero-info is (c) 2006, 2007 by
  Christian Unger <coder at breakbe D0T at>
and distributed under the terms of the GNU Lesser General Public License (LGPL).
See the file ./COPYING in the source distribution for more information.

Revision: $Id: README 36 2007-05-08 18:41:10Z matt $

Please send bugreports to <coder at breakbe D0T at>.

--------------------------------------------------------------------------------

aquaero-info stellt zusammen mit einer kleinen Bibliothek eine
Steuerungssoftware fr das Gert

  aqua-computer aquaero 4.00

dar. Weitere informationen sind unter

  http://breakbe.at/development/aquaero/

verfgbar.


Kurze Einfhrung zur Linux-Steuerungs-Software "aquaero-info"
=============================================================
Version: 2.5

ipc.h: Patches aus dem Forum hinzugefuegt.
global.cpp: Typecast von string auf char* bei der Verwendung der mimeTypes

Kompiliert auf diesem System:
Linux <xxx> 2.6.32-27-generic #49-Ubuntu SMP Thu Dec 2 00:51:09 UTC 2010 x86_64 GNU/Linux

-------------------------------------------------------------
Version: 2.4

Seit Version 2.0 beinhaltet dieses Paket einen Daemon: aquaerod
Dieser stellt eine Web-Oberflche zur Verfgung und ermglicht
durch eine Client-Server-Anbindung einen schnelleren Zugriff auf
die Hardware via IPC.

0. Vorraussetzungen (Linux)
---------------------------

> libusb-0.1.10a
        luft _mglicherweise_ auch mit frheren Versionen.
> linux
        Ein "aktueller" linux-Kernel (ab 2.4.26 oder 2.6.12).
> libpthread
        Ist praktisch auf jedem GNU/Linux-System vorhanden


1. Installation (Linux)
-----------------------

Als beliebiger user

      cd aeinfo-<VERSION>
      make

und OPTIONAL als super-user 

      make install

ausfhren (dies kopiert das executable aeinfo nach /usr/local/bin).

1.1 chroot-Environment
----------------------

Zunchst mit dem Kommando ldd (man ldd) smtliche bentigte Bibliotheken ermitteln.
Im chroot-Environment mssen dann folgende Files befinden:
smtliche Daten im Unterverzeichnis htdocs/ + das Executable aquaerod + bentigte Bibliotheken.
Man hat natrlich auch die Mglichkeit, das aquaerod-executable statisch zu linken.


2. Kompatiblitt
----------------

Bisher ist keine Inkompatiblitt bekannt. Bei manchen Distributionen muss
man lediglich dafr sorgen, dass der Compiler gcc zur Verfgung steht.

3. Ausfhrung
-------------

Das Konsolen-Programm kann auch wie in Version 1.0 weiterhin ohne Daemon verwendet
werden. Allerdings erfolgt der Zugriff auf die Hardware bei Verwendung des Daemon
schneller!

3.1 Konsolen-Programm
---------------------

Man muss lediglich testen ob man Zugriff auf das aquaero hat. Dies kann man
schlicht mit dem Befehl

      aeinfo

bewerkstelligen. Falls keine Fehlerausgabe erfolgt, konnte auf das aquaero
erfolgreich zugegriffen werden. Die zwei hufigsten Fehler sind wohl, dass
entweder das Kernel-Modul nicht korrekt geladen ist. Dazu einfach per

      lsusb

prfen, ob das aquaero unter "MCT Elektronikladen" auftaucht. Falls ja, 
mssen dem "aeinfo-user" noch die Schreibrechte gegeben werden, also
z.B.:

      chmod a+w /proc/bus/usb/

oder

      chgrp users /proc/bus/usb/

Nhere Infoformationen zum Programm erhlt man mittels

      aeinfo help

(die Steuerung ist hnlich zum subversion-tool 'svn')
Will man sich beispielsweise die Lfternamen anzeigen lassen, so kann man z.B.

      aeinfo info fan.1.name fan.2.name fan.3.name fan.4.name

eingeben. Alle vorhandenen Informationen werden mittels

      aeinfo info

ausgegeben. Um Daten zu verndern muss man dem set-Kommando
entsprechende 'key value'-Paare bergeben. Also z.B:

      aeinfo set fan.1.name "Lfter 1" fan.2.name "Fan 2 120" fan.3.name foo fan.4.name test

Um die Uhrzeit zu setzen gengt:

      aeinfo set


3.2 Daemon
----------

hnlich wie beim Konsolenprogramm `aeinfo' mssen auch fr den Daemon `aquaerod' die Rechte
fr die Verzeichnisse unter "/proc/bus/usb/" 'stimmen' (vgl. 3.1).

Bei der Installation muss man darauf achten, dass sich das Verzeichnis mit den HTML-Dokumenten
direkt unter dem Installationsverzeichnis des aquaerod-Binary befindet. Wenn also z.B. das
Executable-File aquaerod hier installiert ist:

        /opt/aquaerod/aquaerod

dann muss dieses Verzeichnis als Webserver-Root existieren:

        /opt/aquaerod/htdocs/

Sonst hagelts Error 404 ;-)
Den Webserver erreicht man ber den port 30000 also z.B unter der URL:

        http://localhost:30000/

Den Daemon startet man z.B. mittels
        
        cd /opt/aquaerod/
        ./aquaerod

Auch hier muss man darauf achten, dass man das Arbeitsverzeichnis wechselt! Sonst lufts nicht!
Der Daemon aquaerod sucht nach den htdocs ber das aktuelle working-directory!
Dies ist im Moment noch etwas "ugly", wird aber noch behoben...

3.2.1 Einbinden des Daemon in den Startprozess von Linux
--------------------------------------------------------

Fr SuSE hat Richard Kahn ein init-Skript erstellt. Vielen Dank dafr an dieser Stelle!
Informationen dazu befinden sich in der Datei README.SuSE.

Fr die anderen Distributionen muss ich auf deren Dokumentation verweisen, da die
Mglichkeiten hier beraus vielfltig sind.
Bei Gentoo ist "start-stop-daemon" (vgl. man 8 start-stop-daemon) und bei SuSE "startproc"
(vgl. man 8 startproc) ein gutes Stichwort. Oft findet man auch geeignete Informationen
auch unter /etc/init.d/

3.2.2 Kommandozeilenargumente des Daemon
----------------------------------------

   -v			Verbose-Ausgabe
   --no-webserver	Starten des Daemon ohne Webserver

4. Probleme
-----------

4.1 Linux und USB
-----------------

linux-2.6 erwies sich als sehr "sensibel". Falls das aquaero nicht gefunden
wird, muss man notfalls das USB-Subsystem neu initialisieren. Also
beispielsweise alle USB-Module entfernen und wieder einfgen:

      rmmod ohci_hcd
      rmmod usbhid
      modprobe ohci_hcd

(evtl. heisst das erste Modul auch ehci_hcd [dieses arbeitet mit ohci_hcd
zusammen!] oder uhci_hcd).
Man sollte auch berprfen, ob das aquaero berhaupt gefunden wird:

      lsusb

Falls sich in der Ausgabe Zeilen wie z.B.

      Bus 002 Device 003: ID 0c70:f0b3 MCT Elektronikladen
      Bus 002 Device 004: ID 0c70:f0b0 MCT Elektronikladen

mit "MCT Elektronikladen" befinden, wird das aquaero gefunden!
Eine "kurze Wartepause" beim Ausfhren des Programms ist unter linux-2.6 leider 
"normal"... Falls jemand weis, warum der `close(fd);' solange braucht, dann
mge er/sie sich bei mir melden!

4.2 Daemon unter Linux
----------------------

Bei Stoppen und unmittelbaren Starten des Daemon kommt es manchmal vor, dass der
Port noch immer geffnet ist und so beim zweiten Starten der Webserver nicht funktioniert
und somit der Daemon nicht startet. Hier muss man nur einen kurzen Moment warten...

 -Christian Unger aka 0x6c333337

