Firmware-Dokumentation: Unterschied zwischen den Versionen

(erster Draft: SMS versenden)
 
 
(12 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
 +
{{Vorlage:überarbeiten}}
 +
 
=Einleitung=
 
=Einleitung=
 +
 +
Diese Seite soll Einblick in die Firmware geben und uns verstehen helfen, wie sie funktioniert, warum manche Dings so gelöst wurden, wie sie uns nun vorliegen
 +
 +
=Loader=
  
 
Zentrales Element aller Firmware-Funktionen ist der <b><tt>loader</tt></b>, der sich um alle
 
Zentrales Element aller Firmware-Funktionen ist der <b><tt>loader</tt></b>, der sich um alle
 
Abhängigkeiten und Variablen kümmert. Der Loader wird automatisch beim Booten
 
Abhängigkeiten und Variablen kümmert. Der Loader wird automatisch beim Booten
erzeugt und legt eine Kopie aller Scripte (bzw. aller <b><tt>functions</tt></b>) in der
+
erzeugt und legt eine Kopie aller Scripte (bzw. aller '''functions''') in der
 
RAM-Disk an. Vorteil dieser Variante ist nicht nur der schnellere Zugriff, sondern auch
 
RAM-Disk an. Vorteil dieser Variante ist nicht nur der schnellere Zugriff, sondern auch
 
die Moeglichkeit automatisiert spezielle Versionen bauen zu lassen (z.b. ohne LOG-Meldungen,  
 
die Moeglichkeit automatisiert spezielle Versionen bauen zu lassen (z.b. ohne LOG-Meldungen,  
 
Kommentare entfernen, profiling, debugging...). Auch werden zur Laufzeit nur
 
Kommentare entfernen, profiling, debugging...). Auch werden zur Laufzeit nur
wirklich benoetigte Module (automatisch) initialisert. Der Loader liegt unter
+
wirklich benoetigte Module (automatisch) initialisert. Der Loader liegt unter '''/tmp/loader'''
 
 
/tmp/loader
 
 
 
 
und sollte bei eigenen Scripten am Anfang geladen werden:
 
und sollte bei eigenen Scripten am Anfang geladen werden:
  
Zeile 16: Zeile 19:
 
  . /tmp/loader
 
  . /tmp/loader
  
Das Erzeugen des <b><tt>loader</tt></b> kann so angestossen werden:
+
Das Erzeugen des '''loader''' kann so angestossen werden:
  
 
  /etc/kalua_init
 
  /etc/kalua_init
  
Wer eigene Funktionssammlungen mit in den <b><tt>loader</tt></b> integriert haben moechte,
+
Nach dem ''sourcen'' des '''loader''' mit <tt>. /tmp/loader</tt> stehen verschiedene Hilfsfunktionen zur Verfuegung, z.b.
 +
 
 +
_      # listet alle Bibliotheken auf
 +
_wifi  # listet alle Funktionen der Bibliothek wifi auf
 +
 
 +
Wer eigene Funktionssammlungen mit in den '''loader''' integriert haben moechte,
 
sollte sich das Verzeichnis <tt>/etc/kalua/</tt> anschauen.
 
sollte sich das Verzeichnis <tt>/etc/kalua/</tt> anschauen.
 +
 +
Wenn man sich per SSH auf dem Router einloggt, wird in /etc/profile der '''loader''' automatisch "gesourced" (geladen).
  
 
==Beispiele==
 
==Beispiele==
  
Jedes Beispiel benoetigt zwingend den geladenen <b><tt>loader</tt></b>
+
Jedes Beispiel benoetigt zwingend den geladenen '''loader'''
  
  
Zeile 34: Zeile 44:
 
Vorbereitung durch Konfiguration aller Parameter:
 
Vorbereitung durch Konfiguration aller Parameter:
  
 +
_nvram set "fff_sms_phonebook" "person1=0176/1234567;person2=0175/99887766"
 
  _nvram set "fff_sms_user" "sms77_username"
 
  _nvram set "fff_sms_user" "sms77_username"
  _nvram set "fff_sms_pass" "sms77_passwort"     # entweder Klartext oder verschluesselt
+
  _nvram set "fff_sms_pass" "sms77_passwort"               # entweder Klartext oder verschluesselt
  _nvram set "fff_sms_phonebook" "person1=0176/1234567;person2=0175/99887766"
+
  _nvram set commit "daten fuer SMS-Dienst eingegeben"     # Grund fuers Log angeben / resetfest abspeichern
_nvram set commit
 
  
 
Absenden:
 
Absenden:
 
   
 
   
  _sms send "person1" "mein text steht hier"     # Name wird aus Telefonbuch genommen
+
  _sms send "person1" "mein text steht hier"               # Name wird aus Telefonbuch genommen
 +
 
 +
 
 +
===Optimierung der Sendeleistung===
 +
 
 +
_nvram set "fff_optimize_neigh" "gateway"    # string: gateway|wifi-IP|off|leer = irgendeiner (default)
 +
_nvram set "fff_optimize_nlq"  "950"        # integer: Wunsch NLQ, 950 = 0.950 ; default = 900
 +
 
 +
===Starten des SSH-Servers/Telnet===
 +
 
 +
Bei Geräten mit weniger als 32mb RAM werden einige Dienste 30 Minuten nach dem Bootvorgang beendet um Speicher zu sparen.
 +
Über ein REST/HTTP-Interface kann man dies einfach wieder starten:
 +
 
 +
<tt>wget -O - "http://ip_des_routers/cgi-bin-tool.sh?OPT=startshell</tt>
 +
 
 +
von einem anderem Router aus kann man den gleichen Befehl folgendermaßen absetzen:
 +
 
 +
<tt>_tool remote ip_des_routers startshell</tt>
 +
 
 +
=Adhoc- und AP-Modus parallel betreiben=
 +
 
 +
==Warum?==
 +
Da viele Endgeräte immer noch Probleme haben, sich in Adhoc-Netzwerke einzuwählen soll auf Geräten, die es unterstützen auch der für die meisten bequemere AP-Modus betrieben werden. In der Luft werden dann zwei WLANs pro Router angezeigt: Das gemeinsame ''weimarnetz'' und das AP-Netzwerk ''weimarnetz-$hostename''
 +
 
 +
==Anpassungen==
 +
 
 +
* /etc/config/dhcp: Startadresse auf 3 erhöhen, damit die zusätzlich IP Platz hat
 +
* /etc/config/network: Anlegen eines zweiten Netzwerkinterfaces ''wlanap'' mit eigener IP (WLAN-IP + 1)
 +
<pre>
 +
config 'interface' 'wlanap'
 +
        option 'ifname' 'wlan0-1'
 +
        option 'proto'  'static'
 +
        option 'ipaddr' '10.63.xx.yy'
 +
        option 'netmask' '255.0.0.0'
 +
</pre>
 +
* /etc/config/olsrd: ''wlanap'' zu Interfaceliste für wlan hinzufügen (ohne gehts nicht, aber theoretisch sollte man es nicht brauchen)
 +
<pre>
 +
list interface 'wlan wlanap'
 +
</pre>
 +
* /etc/config/wireless: Anlegen des AP-Modus:
 +
<pre>
 +
config wifi-iface
 +
        option device  radio0
 +
        option network  wlanap
 +
        option mode    ap
 +
        option ssid    'weimarnetz-tp-dev'
 +
        option encryption 'none'
 +
</pre>
 +
* zusätzlich muss das Paket hostapd installiert werden
 +
 
 +
 
 +
==Probleme==
 +
* als OLSR-Interface wird nun immer 10.63.23.2 angegeben
 +
* es will nicht klappen, dass nur wlan0 für Adhoc und wlan0-1 für AP verwendet wird, die Zuordnungen werden sogar vertauscht und es geht...
 +
* Der Splash Screen (Captive Portal) zeigt keine externen Inhalte (Wiki, Newsserver)

Aktuelle Version vom 6. April 2014, 01:27 Uhr

Dieser Artikel oder Abschnitt bedarf einer Überarbeitung. Näheres ist auf der Diskussionsseite angegeben. Hilf bitte mit, ihn zu verbessern, und entferne anschließend diese Markierung.

Einleitung

Diese Seite soll Einblick in die Firmware geben und uns verstehen helfen, wie sie funktioniert, warum manche Dings so gelöst wurden, wie sie uns nun vorliegen

Loader

Zentrales Element aller Firmware-Funktionen ist der loader, der sich um alle Abhängigkeiten und Variablen kümmert. Der Loader wird automatisch beim Booten erzeugt und legt eine Kopie aller Scripte (bzw. aller functions) in der RAM-Disk an. Vorteil dieser Variante ist nicht nur der schnellere Zugriff, sondern auch die Moeglichkeit automatisiert spezielle Versionen bauen zu lassen (z.b. ohne LOG-Meldungen, Kommentare entfernen, profiling, debugging...). Auch werden zur Laufzeit nur wirklich benoetigte Module (automatisch) initialisert. Der Loader liegt unter /tmp/loader und sollte bei eigenen Scripten am Anfang geladen werden:

#!/bin/sh
. /tmp/loader

Das Erzeugen des loader kann so angestossen werden:

/etc/kalua_init

Nach dem sourcen des loader mit . /tmp/loader stehen verschiedene Hilfsfunktionen zur Verfuegung, z.b.

_       # listet alle Bibliotheken auf
_wifi   # listet alle Funktionen der Bibliothek wifi auf

Wer eigene Funktionssammlungen mit in den loader integriert haben moechte, sollte sich das Verzeichnis /etc/kalua/ anschauen.

Wenn man sich per SSH auf dem Router einloggt, wird in /etc/profile der loader automatisch "gesourced" (geladen).

Beispiele

Jedes Beispiel benoetigt zwingend den geladenen loader


SMS versenden

Momentan wird nur der Dienst sms77.de unterstuetzt. (Versand als "BasicPlus")

Vorbereitung durch Konfiguration aller Parameter:

_nvram set "fff_sms_phonebook" "person1=0176/1234567;person2=0175/99887766"
_nvram set "fff_sms_user" "sms77_username"
_nvram set "fff_sms_pass" "sms77_passwort"               # entweder Klartext oder verschluesselt
_nvram set commit "daten fuer SMS-Dienst eingegeben"     # Grund fuers Log angeben / resetfest abspeichern

Absenden:

_sms send "person1" "mein text steht hier"               # Name wird aus Telefonbuch genommen


Optimierung der Sendeleistung

_nvram set "fff_optimize_neigh" "gateway"     # string: gateway|wifi-IP|off|leer = irgendeiner (default)
_nvram set "fff_optimize_nlq"   "950"         # integer: Wunsch NLQ, 950 = 0.950 ; default = 900

Starten des SSH-Servers/Telnet

Bei Geräten mit weniger als 32mb RAM werden einige Dienste 30 Minuten nach dem Bootvorgang beendet um Speicher zu sparen. Über ein REST/HTTP-Interface kann man dies einfach wieder starten:

wget -O - "http://ip_des_routers/cgi-bin-tool.sh?OPT=startshell

von einem anderem Router aus kann man den gleichen Befehl folgendermaßen absetzen:

_tool remote ip_des_routers startshell

Adhoc- und AP-Modus parallel betreiben

Warum?

Da viele Endgeräte immer noch Probleme haben, sich in Adhoc-Netzwerke einzuwählen soll auf Geräten, die es unterstützen auch der für die meisten bequemere AP-Modus betrieben werden. In der Luft werden dann zwei WLANs pro Router angezeigt: Das gemeinsame weimarnetz und das AP-Netzwerk weimarnetz-$hostename

Anpassungen

  • /etc/config/dhcp: Startadresse auf 3 erhöhen, damit die zusätzlich IP Platz hat
  • /etc/config/network: Anlegen eines zweiten Netzwerkinterfaces wlanap mit eigener IP (WLAN-IP + 1)
config 'interface' 'wlanap'
        option 'ifname' 'wlan0-1'
        option 'proto'  'static' 
        option 'ipaddr' '10.63.xx.yy' 
        option 'netmask' '255.0.0.0'
  • /etc/config/olsrd: wlanap zu Interfaceliste für wlan hinzufügen (ohne gehts nicht, aber theoretisch sollte man es nicht brauchen)
list interface 'wlan wlanap'
  • /etc/config/wireless: Anlegen des AP-Modus:
config wifi-iface
        option device   radio0
        option network  wlanap
        option mode     ap
        option ssid     'weimarnetz-tp-dev'
        option encryption 'none'
  • zusätzlich muss das Paket hostapd installiert werden


Probleme

  • als OLSR-Interface wird nun immer 10.63.23.2 angegeben
  • es will nicht klappen, dass nur wlan0 für Adhoc und wlan0-1 für AP verwendet wird, die Zuordnungen werden sogar vertauscht und es geht...
  • Der Splash Screen (Captive Portal) zeigt keine externen Inhalte (Wiki, Newsserver)