Firmwareentwicklung
Version vom 22. Oktober 2006, 00:05 Uhr von Fries43 (Diskussion | Beiträge) (→Wunschliste - niedrige Priorität: done!)
Aktueller Stand
- Es exisitieren zwei verschiedene Versionen:
- eine ganz Normale.
- eine abgespeckte "Schmalspur"-Variante für Geräte mit nur 2 Megabyte Flash-Speicher.
Stabile und empfehlenswerte Version
- Version 2.0a , Codename: "Zwiebelkuchen"
- Normale Version: download oder download
- Schmalspur-Version: download oder download
Nightly Build
- siehe Changelog
- normal: 2.0 Zwiebelkuchen final
- schmalspur: 2.0 Zwiebelkuchen
Features, Funktionsübersicht
- ausser den Funktionen der originalen Freifunk-Firmware wurden in der Weimarnetz-Variante noch folgende Dinge hinzugefuegt:
- im Wiki veraenderbare Nervseite die jeder Benutzer mindestens einmal taeglich sieht und die abhaengig vom Betrachter (registrierter Laptop, Laptop oder Kabelrechner) anderes aussieht
- dezentrale Verteilung der MAC-Adressen von registrierten Laptop-Nutzern
- integrierte grafische Statistik (Datenverkehr etc.)
- (momentan deaktiviertes) Accounting (Datenverkehr pro IP)
- automatische Bestimmung der richtigen Antenne
- Passwortfreie-Infoseite
- Fon-Hack
Roadmap bzw. Blick in die Zunkunft
- Momentan basiert die Weimarnetz-Firmware auf der Freifunk-Firmware, die Sven-Ola Tücke aus Berlin entwickelt und die auf OpenWRT basiert.
- Benutzt wird aktuell die Version 1.4.1 dieser Software.
- repository & changelog
Einstellungen (Parameter der Weimarnetz-Firmware)
- Hier soll das IP-Schema und alle Einstellungen hin
Kanal 5 BSSID 02:ca:ff:ee:ba:be SSID Freifunk_in_Weimar
Logbuch der Änderungen (changelog)
Version 21okt2006-23uhr55
- download
- FERTIG , kleiner Bugfix VPN-Skript
- FERTIG , kleiner Bugfix infopage (deaktivierung der testdownloads)
- FERTIG , kleiner Bugfix Antennen_Autosensing
Version 20okt2006-13uhr05
- download
- FERTIG , kleiner Bugfix Nervseite (unregistrierte Laptops kamen nicht ins Internet)
Version 19okt2006-17uhr52
- Achtung: Netzumstellung. WLAN-Einstellungen aendern sich...
- download Normale Version (Linksys,Siemens etc. mit 4mb Flash)
- download Schmalspurversion fuer Geraete mit 2mb Flash
- fuer total kaputte zum selbstbauen: skripte, bilder, programme, programme2, kit
- FERTIG , bugfixing: Registrator-Mailversand,Antennenautosensing
- FERTIG , bei "Internet anwerfen"-Knopf umleitung auf naechsten DSLer
- FERTIG , bugfix BATMAN III v0.1 - library fehlte
Version 17okt2006-1uhr36
- download Normale Version
- download Schmalspurversion
- download Schmalspur-micro-version
- FERTIG , umstellen auf FFF-v1.4.1
- FERTIG , pong.swf und snake.swf noch dazu
- FERTIG , bugfixing readonly-Modus
- FERTIG , bugfixing AntennenAutosensing
- FERTIG , Statusmeldung testweise eingebaut
- FERTIG , Batman3-v0.1 integriert
- FERTIG , Zentrales_Monitoring integriert
- FERTIG , Antennentest-tool von Offlinehorst integriert
Version 10okt2006-21uhr03
- download
- FERTIG , umstellen auf FFF-v1.4
- FERTIG , eigener Router immer unter "weimarnetz,kiste,box,router" erreichar
- FERTIG , Ankuendigung von DNS,Webserver auf 104er Bereich geaendert
- FERTIG , Integrierte Pakete: "batman2 busybox-awk freifunk-dnsmasq zlib librrd1 rrdcgi1 rrdcollect rrdtool1 freifunk-statistics-de netcat libncurses horst liblzo libopenssl vtun freifunk-olsr-viz-de kmod-tun freifunk-pppoecd-de"
- FERTIG , Nervseite-Grafiken integriert
- FERTIG , Tetris-Flash-Spiel integriert
- FERTIG , Fehlersuchbild integriert
Version 25sep2006-17uhr03
- download
- FERTIG , umstellen auf FFF-v1.3.10
- FERTIG , bugfix nervseite
- FERTIG , bugfix cron.minutely
- FERTIG , Integration von horst
- FERTIG , Integration von tcpdump
Version 23sep2006-23uhr23
- download
- FERTIG , umstellen auf FFF-v1.3.9
- FERTIG , Bugfix HNA4-Ankuendigungen fuer Interneteinspeiser
- FERTIG , unnoetige Dateien geloescht
- FERTIG , Bootreihenfolge veraendert Antennen_Autosensing
- FERTIG , zwei Bier vernichtet
Version 18sep2006-17uhr03
- download
- FERTIG , umstellen auf FFF-V1.3.6
- FERTIG , neues netcat-ipkg und anpassung registrator
- FERTIG , speichersparen: rrd wird bei wenig speicher deaktiviert
Version 17sep2006-19uhr51
- download
- FERTIG , umstellen auf FFF-v1.3.5 (boah!)
- FERTIG , nervseite: wenn vorlage noch nicht geladen - machen!
- FERTIG , maclisten-verteilung: alle nachbarn pruefen - nicht nur einen
- FERTIG , grobes umstellen auf neues OLSR-plaintext-PlugIn
- FERTIG , accounting erstmal wieder rausgenommen
- FERTIG , syslog auf 2*256kb verkleinert
- FERTIG , URL der Nervseite aendern
- FERTIG , registrator: mehr logging
- FERTIG , BUG: registrator: blockiert manchmal, weil er _denkt_ er wird gerade benutzt
- FERTIG , KISS: infoseitengenerierung nicht ueber wget sondern direkt machen
- FERTIG , KISS: nervseiten-vorlage aus SVN heraustrennen
- FERTIG , KISS: nervseiten-vorlage _ungepackt_ ins firmware-image legen
- FERTIG , accounting integrieren
Version 8jul2006-11uhr36
- nightly_build - 1.748.992 Bytes
- FERTIG , ipk's, binarys und bilder aus dem SVN rausnehmen
- FERTIG , firewall: paket mit ziel=WAN-Netz und quelle NICHT eigenes LAN = verbieten
- FERTIG , registrator: netcat integrieren
Version 07juli2006-19uhr54
- Download - 1.732.608 Bytes
- FERTIG , nervseite+nervnerv joinen , nervseite holen = cgi-bin-nervseite?0
- FERTIG , sanitizer: <walledgarden/> = Liste der freien Seiten fixen
- FERTIG , heartbeat: fon-hack,speicherauslastung,traceroute inetgateway
- FERTIG , domains einheitlich auf ".olsr"
- FERTIG , maclistenverteilung: alle nachbarn probieren
- FERTIG , nervseite: button "ich will ins internet"
- FERTIG , registrator: mechanismus einbauen,damit nur ein nutzer gleichzeitig drauf zugreifen kann
- FERTIG , easyconfig: knotennummer aus nvram-variable und nicht aus domain bestimmen
- FERTIG , easyconfig: leerzeichen in kontaktdaten machten probleme
- FERTIG , cron: skript saeubern und unnoetige /tmp/-kopie loeschen
- FERTIG , statistik: integrieren
- FERTIG , ipk-pakete nach /ipk und dann das verzeichnis loeschen.
- FERTIG , BUG behoben: content-type wird immer doppelt ausgegeben,wenn man nervseite auf entfernten knoten abruft
- FERTIG , easyconfig: wan_dns bei DSL wieder auf 141.54.1.3
- FERTIG , easyconfig: sonderzeichen im hostnamen filtern
- FERTIG , kleineres oder gar kein startbild
Version 30juni2006-13uhr33
- Download - 1.531.904 Bytes
- FERTIG , neue weimarnetzeinstellungen ab 01.07.2006: FunkKanal-5, 02:ca:ca:00:ba:be
- nervseiten: template durch den sanitizer jagen
- FERTIG , syslog vergroessern, logrotate auch anzeigen
- FERTIG , funktuning auch ohne neustart
- FERTIG , infopage: beim generieren wget nach 5 min killen
- FERTIG , eigenes Startbild
- FERTIG , BUG: nervseite: wenn nach dem holen dateigroesse = 0,dann verwerfen
- FERTIG , sanitizer: adresse des geraets fuer nichtrelative links
- FERTIG , infopage: rts_real/cts_real
- FERTIG , walledgarden: iptables-fehlermeldungen unterdruecken
- FERTIG , infopage: "override funkparameter_tuning"
- FERTIG , infopage: force-11mbit
- FERTIG , registrator: k-modus
- FERTIG , infopage: alle adressen aus /proc/net/arp anzeigen
- FERTIG , nervseite: bei zu vielen verbindungen,uebersicht generieren
- FERTIG , nervseite: beim sperren anzeigen,wieviele verbindungen man offen hatte
- FERTIG , registrierung: massenmailmodus
- infopage: mehr logging,auch beim automatisch generieren
- FERTIG , FON-Hack integrieren,damit billige FON-Router ganz normal weiterfunktionieren 8-)
- http://www.twindx.com/node/106
- Fon-Hack
- wget -O /dev/null "http://download.fon.com/heartbeat.php?mac=$(nvram get il0macaddr|sed s/:/-/g)"
- FERTIG , BUG: warum leitet ausgefallener DSLer keinen DNS-inet-verkehr weiter? Auf Eselbremse darf kein DNS gestartet sein!?
- FERTIG , batman: mehr logging
- FERTIG , BUG: batman auf unbenutztem alias-interface starten, WIFI-DEV:2
- FERTIG , dnsmasq: seltener hosts einlesen lassen. - alle 30min - Hostnamen werden erst nach 2 Stunden inaktivitaet geloescht
- FERTIG , infopage: schnellmodus fuer alle netzknoten,die inet einspeisen
- FERTIG , infopage: jens-modus (alle routen + etx)
- FERTIG , infopage: jens2-modus (alle netzwerkverbindungen)
- FERTIG , infopage: firmware-version auslesen
- FERTIG , unixzeit+ 'weimarnetz' in den dateinamen/startseite integrieren
- FERTIG , wenn viel speicher da ist,syslog vergroessern
- FERTIG , CRON: kein cronskript mit exit verlassen!
- FERTIG , easyconfig: Serveripadressen +1 unschön
- FERTIG , Batman 0.06 integrieren
- FERTIG , infopage: Baraucke-Modus um holen der macliste zu erzwingen
- FERTIG , sanitizer: iframes ausfiltern
- FERTIG , Nervseite: mehr logging
- FERTIG , infopage: version/datum/zeit der macliste abfragbar
- FERTIG , infopage: tracert zu beliebiger IP beauftragen
- FERTIG , infopage: Speichertest nur bei Livedaten
- FERTIG, Datumsfeld in MACadressen-liste
- FERTIG , sanitizer "<script-tag" ueberpruefen
- FERTIG , too_many_Verbindungen: zwischencheck mit 3mins Pause
- FERTIG , MAC-Verteil-Mechanismus / Registrierung, siehe Fries43-ToDo
- FERTIG , Speichercheck an kritischen stellen
- FERTIG , neue nvram variablen fuer GPS
- FERTIG , neue nvram variablen fuer netzknotennummer
- FERTIG, WAN-DHCP aus,wenn kein inet zur verfuegung gestellt werden soll (speicher!)
- FERTIG , wenn man auf entfernten router geht (und nicht auf seinen eigenen) soll keine nervseite kommen,sondern fff-startseite
- FERTIG, sanitizer: tags auf nervseite,die script (javascript!) einschalten
- FERTIG , wenn olsr-knoten auf router geht,soll es behandelt werden wie olsr-router und nicht wie mobiler knoten
- FERTIG , registrierung integrieren
- FERTIG , besseres default-template anzeigen,wenn nervseite noch nicht geladen ist
- FERTIG , auf cron verzichten
- FERTIG , eigene weimarnetz-firmware bauen
- FERTIG , 10min laptops soll auf 15mins hochgesetzt werden
- FERTIG , Namensaufloesung im internen Netz: DNSmasq soll per sigHUP alle minute /etc/hosts neu einlesen
- FERTIG , laptops: probe_response_fix integrieren
- FERTIG , forschung: batman2 integrieren inkl. "notaus" per WIKI
- FERTIG , tcp-westwood integrieren
Wunschliste wichtig (ToDo, feature requests)
ToDo Bastian
- registrator: automatisches backup der registrierungsdaten per mail, nur wenn sich DB aendert.
- registratorclient: schutz vor auslesen aus dem internet,nur 127/104/10 im ersten Remote-IP-Oktett zulassen
- registrator+client verschmelzen
- nervseite kommt nicht alle 700minuten, sondern alle 5mb (oder so aehnlich)
- Bestrafung bei geringer Uptime
- sanitizer: knotenbetreiber-notiz & kontaktdaten & personalisierbarer teil (=ff_adm_note) in nervseite integrieren
- infopage: Bandbreitentest integrieren
- infopage: wrapper fuer abruf beliebiger kontaktseiten von extern (??? - SPAMsicher!)
- infopage: Weg ins Internet
- infopage: Router-Action
- Antennenautosensing: nvram setzen
- Messmodus einfuehren: Nachts (zwischen 3 und 5?) wird es moeglich sein, bestimmte einstellungen fuer das gesamte Netz zu testen.
- RTS/CTS ein/aus
- Sendeleistung regeln ein/aus
- Frameburst ein/aus
- Multicastrate oder WlanRate fest/auto
- Batman ein/aus
- etc.
ToDo Andere
- css von nervseite und freifunk-firmware sollte gleich sein
- also eigene .css-Datei entwerfen, die das ff.css ersetzt
- verschiedene nervseiten ausformulieren
- walled garden ausbauen
- fuer die freigeschaltete webseiten muessen die IPs rausgesucht werden
- einfach mit einem gesperrten/unregistrierten laptop an den eigenen netzknoten gehen und mit einem kabelrechner auf der nervseite nach und nach die IPs hinzufuegen und ueber cgi-bin-nervnerv den walled garden neu einlesen lassen und mit dem schleppi testen,ob man auf die seiten kommt.
- Achtung: viele Webseiten haben mehrere IPs
Wunschliste - niedrige Priorität
- dem Kunstturm eine Denkmalschutz-Plakette (emailliert) kaufen
- easyconfig: lanifnames Problem lösen
- easyconfig: GPS - anonym Hinweis und bessere Check auf Plausibilität
- easyconfig: rechnernamen ankuendigen / Server in /etc/local.hosts integrieren / eingabefeld ueber javascript sichtbar
- easyconfig: PicoPeeringAgreement abnicken - ( gesehen, gelacht, F8 )
- easyconfig: modus um kindergarten in der shell auszufuehren
- easyconfig: andere staedte - funktionsfaehig machen
- easyconfig: warnung bei passwort "admin" -> nervseite
- nervseite: dezentraler verteilmechanismus aehnlich macliste
- nervseite: sauberes erkennen "aus welchem subnetz kommt remote-ip"
- nervseite: extra nerv, wenn noch kein wiki-eintrag zum benutzer/knoten existiert
- infopage: auf wunsch maschinenlesbarer output
- infopage: funktion einbauen,um einen infopage-befehl automatisch an alle Router zu senden
- infopage: netzkarte mit gps-infos malen
- sanitizer: sms-versende-knopf
- sanitizer: bruellbox als extra <tag>
- sanitizer: <tag> wer/wieviel ist gerade im DC++ online
- firewall: besseres & allgemeineres Design der Firewall/iptables/Umleitungs-Regeln
- OLSR ueber VPN extra langsam sprechen
- sendeleistung: algorithmus fuer sendeleistung/mrate finden
- ueber entfernung zum nachbarn (GPS!) entscheiden, ob verbindung wichtig ist,oder nicht.
- gute,bandbreitige (goodput/throughput) verbindungen wichtiger als 1mbit?
- nachts einen messmodus einfuehren?
- sendeleistung: algorithmus fuer sendeleistung/mrate finden
- netzwerkmasken berichtigen: 104.63.0.0/16 & laptops
- verschiedene Funktionen ueber das Wiki/nervseite ein/ausschaltbar machen:
- mrate11,batman,txpwr,rateset,rate,selektive ausnahmen?
- uhrzeit & nodeliste & macliste & nervseite_holen zusammenlegen
- GPS-Daten als 1ten hostnamen und Routername als 2ten hostnamen eintragen,um GPS-Daten dezentral zu verteilen. evtl. auch an die broadcast-addy den GPS-Hostnamen vergeben. evtl. auch olsrd-service-plugin dafuer benutzen
Fehlerliste (bugreport)
- Kindergarten: manchmal (nur bei neuen Routern?) werden die lanifnames durcheinander-gewuerfelt. Momentan behelfen wir uns mit
- Registrator: emails-verschicken klappt nicht zuverlaessig und bei xxx@freenet-Empfaengern garnicht?
Neue Firmware selbst bauen (buildprozess, howto, SVN)
- Dies ist ein Notizzettel zum bauen einer neuen Firmware. Saemtliche Schritte habe ich fuer ein Linux-System dokumentiert. Eigentlich kann man ein komplettes Copy&Paste machen und schon ist alles fertig.
- Der normale Weg ist, sich die aktuelle Weimarnetz-Firmware auf den Router zu packen, alle Aenderungen auf dem Router vorzunehmen und dann diese Anleitung nachzumachen.
- zum Arbeiten mit dem SVN empfiehlt sich die Lektüre Subversion - Versionskontrolle im Weimarnetz
- einfaches Einsehen des SVNs: http://svn.sourceforge.net/viewvc/weimarnetz-fw/trunk/firmware/
EIGENER_ROUTER=$(route|awk '/default/{printf $2}') ssh $EIGENER_ROUTER # nun sind wir auf dem Router cd / tar cvzhf www/fw.tgz usr/sbin/*weimar* etc/init.d/*weimar* www/*nervseite www/*info* www/*registr* www/cgi-bin/*kinder* www/cgi-bin-speed www/cgi-bin-map www/cgi-bin/telnet # nun haben wir eine direkt herunterladbare Datei fw.tgz, die # alle (evtl. geaenderten) weimarnetz-spezifischen Dateien enthaelt. # nun muessen wir noch alle zusaetzlich installierten # Software-Pakete herausfinden und in ein Archiv packen: # das Archiv wird aus Platzgruenden in die RAM-Disk geleitet # und ein zusaetzlicher, umgebogener Webserver gestartet ipkg update ipkg install batman ipkg install busybox-awk ipkg install freifunk-dnsmasq ipkg install freifunk-statistics-de ipkg install http://openwrt.alphacore.net/netcat_0.7.1_mipsel.ipk ipkg install horst ipkg install vtun ipkg install freifunk-olsr-viz-de ipkg install freifunk-pppoecd-de PAKETE="$(ipkg status|awk '{if(s==1&&$1=="Package:")printf $2" ";if($2=="dropbear")s=1}')" F1="/usr/lib/ipkg/info/*" F2="/usr/lib/ipkg/status" F3="$(for F in $PAKETE;do ipkg files $F|awk '{if($0!="/")system("ls -ld "sprintf("%s",substr($0,2)))}'|awk '{if($5>0)print $9}';done)" tar cvzf /tmp/ipkg.tgz $F1 $F2 $F3 tar cvzf /tmp/images.tgz www/images/Info_* www/images/*.swf www/images/intro.jpg httpd -h /tmp/ -p 81 exit # nun haben wir eine direkt herunterladbare Datei ipkg.tgz, # haben also alles was wir brauchen und sind wieder auf unserem Rechner # wir laden und das aktuelle Kit von sven-ola's freifunk-seite # herunter und entpacken dieses auf unserem Rechner KIT_URL="http://styx.commando.de/sven-ola/testing/_kit/" KIT_VERSION="freifunk-openwrt-kit-1.3.6-de" wget "$KIT_URL$KIT_VERSION.tar.gz" tar xvzf "$KIT_VERSION.tar.gz" cd $KIT_VERSION # nun machen wir uns ein Verzeichnis in der die komplette # Verzeichnisstruktur und alle Dateien wie sie auf dem Router # sind reinkopiert werden. Das Grundsystem ist im Kit schon dabei. # die zwei Dateien, die wir eben auf dem Router erstellt # haben, nehmen wir von dort oder aus dem SVN wget "http://$EIGENER_ROUTER:81/fw.tgz" wget "http://$EIGENER_ROUTER:81/ipkg.tgz" wget "http://$EIGENER_ROUTER:81/images.tgz" mkdir weimar cd weimar tar xvzf ../root.tgz tar xvzf ../fw.tgz tar xvzf ../ipkg.tgz tar xvzf ../images.tgz # ok,nun ist fast alles fertig. Wir haben nun noch die Chance # nach www/ ein eigenes bild zu kopieren und ein paar kleine # Aenderungen durchzufuehren, z.b.: # holen und formatieren der aktuellen nervseite: URL="http://wireless.subsignal.org/index.php?title=Nervseite" F1="www/nervseite-vorlage" wget -O - "$URL"|sed '/-- NERVSEITE:START --/,/-- NERVSEITE_LEEREKONTAKTDATEN:END --/!d' >"$F1" # nun alles wieder einpacken und neues firmwareimage erzeugen # das firmwareimage wird schon nach unixzeit und datum benannt: tar cvzf ../root.tgz * cd .. X=$(date -Ih|awk -F[-T] '{print($1-1970)*31536000+$2*2592000+$3*86400+$4*3600}') Z=$(date -R|awk -F"[, :]" '{printf("%s%s%s-%suhr%s",$3,tolower($4),$5,$6,$7)}') N="weimarnetz_firmware-$X-$Z-trx.bin" ./gen-openwrt -v $N trx >../$N # Nun muessen wir noch eine Schmalspur-Variante fuer Geraete mit # nur 2Mb Flash-Speicher bauen. Dazu schmeissen wir scheinbar # ueberfluessigen Muell raus. Insbesondere grosse Dateien 8-) # erstmal verschaffen wir uns einen Ueberblick: cd weimar ls -alR|awk '{if(substr($0,1,2)=="./")dir=substr($0,3,length($0)-3);print $5,dir"/"$9,$10,$11,$12}'|sort -n # nun sehen wir den ganzen Kram,der sich lohnt. Hier mein Vorschlag: rm www/images/intro.jpg RRD="$(find -name "*rrd*")" rm $RRD rm usr/bin/dropbearmulti rm usr/bin/netcat rm www/cgi-bin-registrator.html rm usr/sbin/batman rm usr/sbin/tcpdump rm lib/libncurses.so.5.2 rm usr/lib/libpcap.so.0.8.3 # und die neue version bauen: tar cvzf ../root.tgz * cd .. N="weimarnetz_firmware-schmalspur-$X-$Z-trx.bin" ./gen-openwrt -v $N trx >$N # nun haben wir zwei firmware-dateien, die schmalspurvariante ist ca. 300Kb kleiner # und wenn man moechte, nun noch das SVN aktualisieren #NUR BEIM ERSTEN MAL: svn checkout https://svn.sourceforge.net/svnroot/weimarnetz-fw/ cd firmware/ #Sonst: cd firmware/ svn update #weiter wget "http://$EIGENER_ROUTER:81/fw.tgz" tar xvzf --overwrite fw.tgz rm fw.tgz svn add * --force svn commit -m "$X-$Z"