.titleBar { margin-bottom: 5px!important; }

Serielle Schnittstelle nutzen

Dieses Thema im Forum "FRITZ!Box Fon: Modifikationen" wurde erstellt von iwow, 13 Jan. 2005.

  1. iwow

    iwow Neuer User

    Registriert seit:
    13 Jan. 2005
    Beiträge:
    8
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo,

    ich habe in dem ein oder anderen Beitrag gelesen, dass man ein Terminal an die interne serielle Schnittstelle anschliessen kann (z.B. für recovery). Kann man auch andere Hardware anschliessen und ganz normal auf /dev/ttyS0 zugreifen, wenn man (wie unter Linux üblich) die console für dieses Device ausschaltet.

    Ich möchte gerne eine Kopplung zu meiner Heizungsregelung (EIB Bus) realisieren, um über die Fritz!Box z.B. die Tag- / Nachumschaltung vorzunehmen. Ca. 12 mal am Tag 50 Bytes auf den EIB Bus schicken sollte die Kiste verkraften.

    Hat jemand schon Erfahrungen mit anderer Hardware als einem Terminal? Falls ja, gibt es was besonderes zu beachten.

    Ich habe bereits eine Software, die für einen UNC20 geschrieben wurde (auch ein Linux Embedded System) die ich portieren müsste (ca. 90 K Executable). Auf welchem Linux Hostsystem kann man die Entwicklungsumgebung betreiben. Ich habe ein Gentoo System als VDR Server (digitaler Videorecorder) im Einsatz.

    Danke.

    Gruß Wolfgang
     
  2. haveaniceday

    haveaniceday Aktives Mitglied

    Registriert seit:
    14 Okt. 2004
    Beiträge:
    1,305
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo iwow,

    Das Projekt ist machbar. Die Schnittstelle ist über einen Konverter wie eine
    normale RS232 Verbindung zu gebrauchen.
    => http://www.wehavemorefun.de/fritzbox/Main_Page => Hardware => Serielle Konsole

    Bisher habe ich die Schnittstelle nur für ein Terminal genutzt.
    Für Firmwaremodifikationen und eine Buildanleitung kannst du ach auf der o.a.
    Seite schauen.

    Im Thread 6666 sind ein paar Skripte, mit denen du sehen kannst wie
    man Programme einfach in das Image bekommt.

    Die Umgebung ist eine ganz normale Linuxumgebung. Als Buildplattform sollte
    dein VDR auch keine Probleme machen.

    Viele Grüße,

    Haveaniceday
     
  3. iwow

    iwow Neuer User

    Registriert seit:
    13 Jan. 2005
    Beiträge:
    8
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo Haveaniceday,

    vielen Dank für die schnelle Antwort.

    Werde zunächst mal versuchen, ein geeignetes Adapterkabel bei ebay zu finden und die Entwicklungsumgebung auf zu setzen. Ich möchte zunächst so wenig wie möglich an der FB ändern. Welches ist der einfachste Weg, Binaries auf die Box zu bekommen:
    - telnet Demon freischalten und per tftp auf meinen Linux PC zugreifen?

    Ich denke, es wird noch der ein oder andere Abend vergehen, bis ich wirklich ein geändertes Image brauche. Oder?

    Gruß Wolfgang

    :wink: Viele Grüße ein meine Heimatstadt Paderborn.
     
  4. haveaniceday

    haveaniceday Aktives Mitglied

    Registriert seit:
    14 Okt. 2004
    Beiträge:
    1,305
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ich habe ein altes Siemens Datenkabel recycled. Vielleicht findest du so eins
    im Bekanntenkreis.

    Telnetd aktivieren: http://www.ip-phone-forum.de/forum/viewtopic.php?t=6226
    tftp ist richtig. Dazu must du einen tftp-Server aufsetzen.

    Mit einem geänderten Image hättest du dagegen ( falls enthalten ) ftpput und ftpget bzw. einen ftpd für Fritz.

    Viele Grüße aus deiner Heimatstadt :)

    Haveaniceday
     
  5. enrik

    enrik Neuer User

    Registriert seit:
    26 Okt. 2004
    Beiträge:
    127
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    Denk dran, dass die fbox keinen Hardware-Handschake hat. Du brauchst also eine EIB-Schnittstelle mit FT1.2 Protokoll (IIRC).

    Gruß,
    Enrik
     
  6. iwow

    iwow Neuer User

    Registriert seit:
    13 Jan. 2005
    Beiträge:
    8
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo Enrik,

    ja, ich habe eine Schnittstelle mit FT 1.2 Protokoll.

    Kennst du dich näher mit dem EIB Protokoll aus?

    Ich habe vor, das LEIBnix Programm von

    http://www.dehof.de/eib/ auf der FB zu betreiben.

    Brauche ich eigendlich für die Entwicklung von eigen Programme unbedingt ein OpenEmbedded Buildsystem, so wie auf http://www.wehavemorefun.de/fritzbox/Main_Page
    beschrieben? Ich kenne mich zwar sehr gut mit Linux aus, im Embedded Bereich mache ich gerade erst meine Erfahrungen. Wenn ich OpenEmbedded aufgesetzt habe, brauche ich dann trotzdem noch Dateien von http://www.akk.org/~enrik/fbox/ ? Thread 6666 werde ich mir in den nächsten Tagen noch mal in Ruhe anschauen.

    Gruß

    iwow
     
  7. ol@fson

    ol@fson Neuer User

    Registriert seit:
    15 Jan. 2005
    Beiträge:
    14
    Zustimmungen:
    0
    Punkte für Erfolge:
    1
    LC Display

    wäre es vielleicht möglich, ein LC Display an der seriellen Schnittstelle ans Laufen zu kriegen ?
     
  8. haveaniceday

    haveaniceday Aktives Mitglied

    Registriert seit:
    14 Okt. 2004
    Beiträge:
    1,305
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    @ol@fson,

    Die Antwort ist wie im anderen Thread:
    ..
    Machbar ist das bestimmt. Man muss nur eine entsprechende Anwendung schreiben und dann testen.. ;-)
    ..

    @iwow,

    für das "crosskompilieren" brauchst du einen Crosskompiler und dieser benötigt ein paar Libraries um die Programme dagegen zu linken.
    Mit dem Buildroot von Enrik ( siehe http://www.akk.org/~enrik/fbox/ ) sollte dieses sehr einfach zu erstellen sein. ( Unter Linux )

    Haveaniceday
     
  9. iwow

    iwow Neuer User

    Registriert seit:
    13 Jan. 2005
    Beiträge:
    8
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    @haveaniceday

    danke für die Hinweise. Laut Readme sollte es ja wirklich einfach sein, ein BuildSystem zu erstellen. Leider fällt bei mir der Compilevorgang von uClibc mit unten stehende Fehlermeldung.

    Irgend welche Ideen?

    Beim ersten Make habe ich bei der Frage

    Link ldconfig statically (UCLIBC_STATIC_LDCONFIG) [Y/n/?] (NEW)

    n (für now) eingegeben. War das korrekt?

    iwow


    make[3]: Entering directory `/home/eib/buildroot/toolchain_build_mipsel/uClibc/ldso/ldso'
    /home/eib/buildroot/build_mipsel/staging_dir/bin/mipsel-linux-uclibc-gcc -Wall -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -Os -funit-at-a-time -mno-split-addresses -mips32 -mtune=mips32 -fPIC -DUCLIBC_RUNTIME_PREFIX=\"/\" -fno-builtin -nostdinc -D_LIBC -I../../ldso/include -I. -I../../include -isystem /home/eib/buildroot/build_mipsel/staging_dir/lib/gcc/mipsel-linux-uclibc/3.4.2/include -I../libdl -c ldso.c -o ldso.o
    In file included from ../../ldso/include/ldso.h:26,
    from ldso.c:32:
    ../../ldso/include/dl-syscall.h: In function `_dl_exit':
    ../../ldso/include/dl-syscall.h:63: error: `__NR_exit' undeclared (first use in this function)
    ../../ldso/include/dl-syscall.h:63: error: (Each undeclared identifier is reported only once
    ../../ldso/include/dl-syscall.h:63: error: for each function it appears in.)
    ../../ldso/include/dl-syscall.h: In function `_dl_close':
    ../../ldso/include/dl-syscall.h:66: error: `__NR_close' undeclared (first use in this function)
    ../../ldso/include/dl-syscall.h: In function `_dl_open':
    ../../ldso/include/dl-syscall.h:69: error: `__NR_open' undeclared (first use in this function)
    ../../ldso/include/dl-syscall.h: In function `_dl_write':
    ../../ldso/include/dl-syscall.h:72: error: `__NR_write' undeclared (first use in this function)
    ../../ldso/include/dl-syscall.h: In function `_dl_read':
    ../../ldso/include/dl-syscall.h:76: error: `__NR_read' undeclared (first use in this function)
    ../../ldso/include/dl-syscall.h: In function `_dl_mprotect':
    ../../ldso/include/dl-syscall.h:80: error: `__NR_mprotect' undeclared (first use in this function)
    ../../ldso/include/dl-syscall.h: In function `_dl_stat':
    ../../ldso/include/dl-syscall.h:83: error: `__NR_stat' undeclared (first use in this function)
    ../../ldso/include/dl-syscall.h: In function `_dl_munmap':
    ../../ldso/include/dl-syscall.h:86: error: `__NR_munmap' undeclared (first use in this function)
    ../../ldso/include/dl-syscall.h: In function `_dl_getuid':
    ../../ldso/include/dl-syscall.h:89: error: `__NR_getuid' undeclared (first use in this function)
    ../../ldso/include/dl-syscall.h: In function `_dl_geteuid':
    ../../ldso/include/dl-syscall.h:92: error: `__NR_geteuid' undeclared (first use in this function)
    ../../ldso/include/dl-syscall.h: In function `_dl_getgid':
    ../../ldso/include/dl-syscall.h:95: error: `__NR_getgid' undeclared (first use in this function)
    ../../ldso/include/dl-syscall.h: In function `_dl_getegid':
    ../../ldso/include/dl-syscall.h:98: error: `__NR_getegid' undeclared (first use in this function)
    ../../ldso/include/dl-syscall.h: In function `_dl_getpid':
    ../../ldso/include/dl-syscall.h:101: error: `__NR_getpid' undeclared (first use in this function)
    ../../ldso/include/dl-syscall.h: In function `_dl_readlink':
    ../../ldso/include/dl-syscall.h:104: error: `__NR_readlink' undeclared (first use in this function)
    ldso.c: In function `_dl_malloc':
    ldso.c:925: warning: implicit declaration of function `_dl_mmap'
    ldso.c:926: warning: assignment makes pointer from integer without a cast
    In file included from ldso.c:944:
    dl-elf.c: In function `_dl_load_elf_shared_library':
    dl-elf.c:468: warning: assignment makes pointer from integer without a cast
    dl-elf.c: In function `_dl_dprintf':
    dl-elf.c:793: warning: assignment makes pointer from integer without a cast
    make[3]: *** [ldso.o] Error 1
    make[3]: Leaving directory `/home/eib/buildroot/toolchain_build_mipsel/uClibc/ldso/ldso'
    make[2]: *** [ldso] Error 2
    make[2]: Leaving directory `/home/eib/buildroot/toolchain_build_mipsel/uClibc/ldso'
    make[1]: *** [_dir_ldso] Error 2
    make[1]: Leaving directory `/home/eib/buildroot/toolchain_build_mipsel/uClibc'
    make: *** [/home/eib/buildroot/toolchain_build_mipsel/uClibc/lib/libc.a] Error 2
     
  10. olistudent

    olistudent IPPF-Urgestein

    Registriert seit:
    19 Okt. 2004
    Beiträge:
    14,756
    Zustimmungen:
    2
    Punkte für Erfolge:
    0
    Beruf:
    Softwareentwickler
    Ort:
    Kaiserslautern
  11. haveaniceday

    haveaniceday Aktives Mitglied

    Registriert seit:
    14 Okt. 2004
    Beiträge:
    1,305
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ich tippe auch darauf dass der snapshot "schlecht" ist.
    Habe mal irgendwo in den Releasenotes gelesen, dass auch größere
    API-Änderungen für das nächste uClibc-Release vorgesehen ist.
    Achtung: Die Snapshots verschwinden nach < 30 (?) Tagen.

    Für nachste Woche habe ich mir vorgenommen ein Buildroot mit uClibc ( von AVM )
    zu erstellen.
    Unter ftp://ftp.avm.de/develper/opensrc/ sind die von AVM genutzten Sourcen.
    Sonst hätte ich noch eine "uClibc-20041130.tar.bz2". ( PN mit Emailadresse an mich, 1,6 MB)

    Viele Grüße,

    Haveniceday
     
  12. iwow

    iwow Neuer User

    Registriert seit:
    13 Jan. 2005
    Beiträge:
    8
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo,

    ich habe mittlerweile meine kleine Applikation für die Fritz!Box übersetzt bekommen (Danke an enrik für die schöne buildroot Umgebung). Das Programm (+ zwei Shared Libraries) habe ich mittels tftp nach /var/tmp übertragen und auch erfolgreich starten können. Nun möchte ich mein Programm (+ Libraries) in ein Image bekommen, dass ich dann mit der Update Funktion ins Flash laden kann.

    Welche Wege führen zu diesem Ziel?

    Liefert auch die buildroot Umgebung hierfür Tools oder ist es besser, auf mod52 von haveaniceday zurückzureifen und entsprechend anzupassen. Mir liegt viel daran, dass nur meine zusätzlichen Programme ins Image kommen. Alles andere soll (zunächst) unangetastet bleiben.

    Grüße aus dem (nicht mehr so) närrischen Aachen :kasper:

    iwow
     
  13. olistudent

    olistudent IPPF-Urgestein

    Registriert seit:
    19 Okt. 2004
    Beiträge:
    14,756
    Zustimmungen:
    2
    Punkte für Erfolge:
    0
    Beruf:
    Softwareentwickler
    Ort:
    Kaiserslautern
    Schau dir mal im buildroot/target/fritz Verzeichnis die Datei fritzroot.mk an.
    Du kopierst jetzt deine Dateien in ein Verzeichnis und schreibst in die fritzroot.mk, dass er die Dateien von dort nach build_mipsel/tmproot/lib (für die libs) usw. kopiert.

    Da kommt aber kein fertiges Image für die Update-Funktion raus.
    Das musst du über ftp flashen...

    MfG Oliver
     
  14. saltlake

    saltlake Neuer User

    Registriert seit:
    19 Dez. 2004
    Beiträge:
    26
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Also ich sehe noch als Problem, dass sowohl Adam2, als auch der Kernel und einige Prozesse ihre Ausgaben auf die serielle Schnittstelle schreiben. (Einige Prozesse haben fd 0-2 auf ttyS0.) Wenn man da irgendwas anschliesst, könnte das doch sehr verwirrend sein... Oder kann man das irgendwie einstellen (z.B. durch eine env-Variable)?

    Außerdem startet ja noch irgendwer eine Shell, wenn man Enter auf der ttyS0 drückt.

    Trotzdem kann man ja z.B. mit cat Daten auf das device schreiben. Wie kann das eigtl. gehen, wenn es jemand anderes schon geöffnet hat?

    Grüße!
     
  15. haveaniceday

    haveaniceday Aktives Mitglied

    Registriert seit:
    14 Okt. 2004
    Beiträge:
    1,305
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Die Shell kommt über:
    more /etc/inittab
    ...
    # Start an "askfirst" shell on the console (whatever that may be)
    ::askfirst:-/bin/sh
    ....

    Dem Kernel kann man bestimmt sagen nicht "ttyS0" als Console zu nehmen.
    Weiss aber nicht direkt wie. Auf jeden Fall könnte man dieses fest "einkompilieren".

    Enrik könnte das vielleicht sagen wie es ab "kernel start" einfacher geht.

    Adam2 wird man kaum stumm kriegen.

    Haveaniceday
     
  16. iwow

    iwow Neuer User

    Registriert seit:
    13 Jan. 2005
    Beiträge:
    8
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo,

    dass sowohl Adam2 wie auch der Kernel auf die Serielle Schnittstelle schreiben habe ich nicht berücksichtigt.

    Bevor ich mich also weiter mit "EIB auf der FB" beschöftige muss ich also die serielle Schnittstelle frei bekommen.

    Die Linux Konsole von der Schnittstelle weg zu bekommen dürfte wohl nur duch neu übersetzen des Kernels gehen. Hat jemand hier eine Idee, wo ich da nachschauen muss (enrik???). Die "anderen Linux Programme" sollten dann doch wohl auch still sein (oder hat jemand schon mal auf der Fritzbox ein Programm gesehen, dass die Ausgabe von "out und error" auf ttys0 umlenkt.

    Bei Adam2 glaube ich fündig geworden zu sein.

    Laut /proc/avalanche/env gibt es 3 Adam2 Variablen, die etwas mit der seriellen Schnittstelle zu tun haben.

    modetty0 38400,n,8,1,hw
    modetty1 38400,n,8,1,hw
    bootserport tty0

    Ich stelle jetzt einfach mal die dreiste Vermutung auf, dass die FB 2 Serielle Schnittstellen hat, von der aber nur eine über enrik's Beschreibung nutzbar ist.

    Wenn ich also bootserport auf ttys1 setze, würde ich vermuten, dass Adam2 auf ttys0 schweigt.

    Da ich noch kein Kabel an die FB gelötet habe (ebay Lieferung steht noch aus), hat ja vielleicht ein Freiwilliger die Zeit und Mut, das ganze schon mal auszuprobieren. Ansonsten werde ich sobald das Kabel da ist das ganze mal versuchen.

    Wie schätzt Ihr die Gefahr ein, dass Adam2 dann gar nicht mehr geht, weil z.B. doch keine 2. serielle Schnittstelle vorhanden ist was wohl der absolute Tot von Adam2 / FB sein dürfte)

    iwow
     
  17. olistudent

    olistudent IPPF-Urgestein

    Registriert seit:
    19 Okt. 2004
    Beiträge:
    14,756
    Zustimmungen:
    2
    Punkte für Erfolge:
    0
    Beruf:
    Softwareentwickler
    Ort:
    Kaiserslautern
    In der .config vom Kernel gibt's unter den Character Devices die Option "CONFIG_SERIAL_CONSOLE=y".
    Hört sich für mich sehr nach der gesuchten Zeile an.

    Mit dem adam ist das natürlich ein Risiko.
    Theoretisch müsste er ja noch über telnet und ftp erreichbar sein, man weiß aber nicht wie er sich bei abschalten der ser.Kons. verhält?

    MfG Oliver
     
  18. eutelli

    eutelli Neuer User

    Registriert seit:
    27 Okt. 2005
    Beiträge:
    18
    Zustimmungen:
    0
    Punkte für Erfolge:
    1
    Beruf:
    DIPL INF, SW Entwickler, Certified Tester
    Hallo,

    ich versuche ebenfalls die FBOX EIB Fähig zu machen,

    bist Du schon weitergekommen?
     
  19. theborg

    theborg Neuer User

    Registriert seit:
    3 Juli 2005
    Beiträge:
    124
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    naja eigentlich wenn wenige ausgaben über /dev/ttyS0 geschikt werden dann solte eigentlich die hardware die du ansteuerst dieses als fehlerhafte daten ansehen und ignoriren aber reinteoretisch köntest für dein programm einen eigenden benutzer zuweisen und dann /dev/ttyS0 so chmod én das nur er drauf schreiben kann.
     
  20. mode

    mode Mitglied

    Registriert seit:
    22 Okt. 2004
    Beiträge:
    283
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    *Therad hochschieb*

    GIbts denn schon was neues? Ich wollt die Woche mal nen kleinen ATMega an die Serielle haengen und gucken was passiert.
    Wo stellt man die Baudrate,Bits,Stopbit etc ein?

    Gruss

    Mode