Old but not busted … – Dieser Inhalt wurde vor mehr als 5 Jahren publiziert. Die Korrektheit und Verfügbarkeit von Links können leider nicht gewährleistet werden.

Als am Heiligen Abend auf der WLANnews-Mailingliste die Nachricht kam, dass der „Freifunk OpenWrt Image Generator“ (der Augsburger Freifunker) nun Firmware-Images mit der ganz frischen OpenWRT-Version 10.03.1 produziert und meine (vom FFP gesponsorte) Ubiquiti Nanostation M2 eh seit mind. drei Wochen zerflasht und somit funktionslos am Küchenfenster rum hing, dachte ich mir, es sei eine gute Idee, das Neuflashen nochmal zu probieren. – Gesagt, getan und hier gibts jetzt ein paar Hinweise & Randbemerkungen…

Vorab

Zuerstmal stand ich vor dem Problem, alle notwendigen Informationen zusammen zu kramen. – Irgendwie gibt es kaum Anleitungen im (sonst so vollen) WWW. Am Ende kam ich immer wieder auf die beiden Seiten in unserem Wiki zurück:

Image bauen (lassen)

Wie schon geschrieben, habe ich den Imagebuilder benutzt. – Das Bauen des benötigten Images geht damit echt einfach und ich möchte an dieser Stelle ein dickes Dankeschön an die Machenden aussprechen! 🙂
Folgende Änderungen an der (vorgegebenen) Grundeinstellung sind für das neue Image (einer Nano M2 für den Potsdamer Freifunk!) im Imagebuilder vorzunehmen:

  • „Community“ → „potsdam“;
  • „Target“ → „ar71xx-backfire-29592″ (danach „Submit“ klicken);
  • „Profile“ → „UBNT“;
  • „Hostname“ → bitte an unserer Wikiseite IP-Adressen (und den enthaltenen Links) orientieren;
  • korrekte Parameter für „Latitude“ & „Longitude“ wählen (danach zum Reiter „Freifunk“ wechseln);
  • „Wifi IP:“ → bitte an unserer Wikiseite IP-Adressen (und den enthaltenen Links) orientieren;
  • wenn ein DSL-Anschluss für den Freifunk freigegeben werden soll, bitte einen Haken bei „Share internet connection“ machen (danach zum Reiter „Contact“ wechseln);
  • bitte alle Felder ausfüllen (danach zum Reiter „Submit“ wechseln);
  • jetzt wird das Image (mit den Grundeinstellungen) durch einen Klick auf „GENERATE“ gebaut.

Danach könnt ihr euch das fertige Image herunterladen. Dabei ist zu beachten, dass es zwei Images zur Auswahl gibt:

  • openwrt-ar71xx-ubnt-nano-m-squashfs-factory.bin (3.3M) und
  • openwrt-ar71xx-ubnt-nano-m-squashfs-sysupgrade.bin (3.3M).

Dabei stehen „ar71xx“ für den verwendetet WLAN-Chipsatz, „ubnt“ für das verwendete Profil (s.o.), „nano-m“ für das Modell des APs/Routers, „squashfs“ für das zu verwendende Dateisystem und „factory“ bzw. „sysupgrade“ für die Art des Flashens (s.u.).

Flashen

Je nach Ausgangsvoraussetzungen, müsst ihr euch für ein bestimmtes Image entscheiden, welches auf die Nano gespielt werden soll. Habt ihr schon OpenWRT (vllt. kann das auch die Originalfirmware?) auf der Büchse, könnt ihr das „sysupgrade“-Image direkt über das Web-Frontend hochladen. Solltet ihr die Kiste per TFTP flashen wollen/müssen, nehmt das Image mit „factory“ im Dateinamen.
Das Ubiquiti Wiki hat einen kleinen und ausreichenden Artikel zum Firmware-Flashen per TFTP unter http://wiki.ubnt.com/Firmware_Recovery.

Randbemerkungen

  1. Bei mir hat nach dem Flashen der Login (http://192.168.1.1/cgi-bin/luci/admin/) ohne Passwort nicht geklappt. – Nachdem ich dann ein originales OpenWRT-Image (von [0]) installiert, dort das Passwort geändert und dann das „sysupgrade“-Image (ohne Konfigurationsänderungen!) geflasht habe, konnte ich mich erfolgreich mit dem neuen Passwort als „root“ anmelden. (Ich habe nirgendwo im Netz einen Hinweis darauf gefunden, dass es sich um einen bekannten Bug handelt…)
  2. Aktuell ist meine Nano eine Sackgasse, da das mit dem WAN als Gateway (= „Share internet connection“) nicht so klappt. – Keine Ahnung, woran das liegt. Ich habe nichts an den Grundeinstellungen geändert und auch die Firewall-Regeln etc. scheinen korrekt zu sein…
  3. Das kleine Progrämmchen „horst“ (siehe [1] & [2]) – welches man einfach per „opkg install horst“ per SSH installieren kann – tut nicht das, was es soll, sondern beendet sich direkt nach dem Aufruf mit der Meldung „wrong monitor type. please use radiotap or prism2 headers“. – Nach einigem Rumsuchen nach einer Lösung, bin ich im Wiki der Linzer Funkfeuer-Leute fündig geworden. Eine korrigierte (und bei mir lauffähige) Version der Datei „/usr/sbin/horst.sh“ (die für solche Fälle wohl vorgesehen ist) findet ihr unter http://paste.sokai.name/v/4efca6961b1a7.
  4. Ach und… Bei mir wollte am Anfang der OLSR nicht so richtig. – Bis ich dann (eher zufällig) gesehen habe, dass die (durch das für das Image ausgewählte Freifunk-Profil) eingestellte BSSID nicht „02:CA:FF:EE:BA:BE“, sondern „D2:CA:FF:EE:BA:BE“ war und ich sie korrigiert hatte.

So dann… – Viel Spaß mit euren Spielzeugen & immer her mit guten Tipps! 🙂

Old but not busted … – Dieser Inhalt wurde vor mehr als 5 Jahren publiziert. Die Korrektheit und Verfügbarkeit von Links können leider nicht gewährleistet werden.

An dieser Stelle soll es heute mal kurz um ein Problemchen und dessen ‚Lösung‘ gehen, welches mich gestern (fast) den ganzen Tag beschäftigt hat.

Ich hatte die Aufgabe zu lösen, mittels eines HTML-Formulars und PHP ein Bild (als BLOB) in einer MySQL-Datenbank abzulegen. – Eigentlich ja nicht allzu schwierig, denn Anleitungen & Code-Schnipsel dazu gibts im Netz wie „Sand am Meer“…

Am Ende entschied ich mich für die Variante, die hochgeladene Datei ohne file handler (fopen, fread, fclose) in die DB zu hexen. Denn man kann recht einfach mittels mittels der globalen PHP-Variable „$_FILES“ auf die (mittels POST) hochgeladene Datei zugreifen.

if (isset($_FILES[‘bild‘]) && is_uploaded_file($_FILES[‘bild‘][‘tmp_name‘]) && $_FILES[‘bild‘][’size‘] > 0) {
$mimetype = $_FILES[‘bild‘][‘type‘];
$blob = bin2hex(file_get_contents($_FILES[‘bild‘][‘tmp_name‘]));

Da ich beim Insert immer die Meldung bekam, dass ich einen Fehler in der SQL-Syntax habe, wenn ich für den BLOB mysql_real_escape_string(file_get_contents($_FILES['bild']['tmp_name'])) oder addslashes(file_get_contents($_FILES['bild']['tmp_name'])) (wie bspw. hier beschrieben) benutzt habe, habe ich letztlich die Funktion bin2hex() für das Speichern der binären Daten (des Bildes) in der MEDIUMBLOB-Spalte der DB verwendet.

Nach ein paar Test-Uploads stellte ich dann jedoch fest, dass größere Bilder nicht hochgeladen werden können – wg. der Begrenzung auf dem Server. Also habe ich etwas gesucht und die dafür zuständigen PHP-Einstellungen bzw. -Variablen gefunden. Diese spuckten mir allerdings aus, dass meine max. Upload-Größe 32MB beträgt, was bei einem Upload von einem ca. 1,5MB großen Bild jedoch nicht ’stimmte‘. Denn da kam dann dann die MySQL-Meldung „Got a packet bigger than ‚max_allowed_packet‘ bytes“ und der Datensatz wurde nicht in die DB geschrieben.

‚Gut, dass die MySQL-Meldung so aussagekräftig ist‘, dachte ich mir und suchte erneut nach einer Lösung… – Und siehe da, auch dazu gibt es Lösungen, wie bspw. diese. Ärgerlich war nur, dass ich den ganzen Tag der Meinung war, dass der MySQL-Parameter „max_allowed_packet“ dynamisch zur Laufzeit des Servers per PHP beeinflussbar ist. *gml*
Dies kam zum Beispiel auch daher, dass das Auslesen des Parameters (mit mysql_query("SHOW VARIABLES LIKE 'max_allowed_packet'")) und das Neusetzen des Wertes (mittels mysql_query("SET max_allowed_packet=16777216;")) zwar anstandslos funktionierte, aber leider den Upload nicht verbesserte. Trotz des neu gesetzten Wertes (auf 16MB), war die Uploadgrenze in Wirklichkeit immer noch beim Standardwert 1MB.

Lange Rede, kurze Erkenntnis:
Das Ändern des MySQL-Wertes „max_allowed_packet“ zur Laufzeit per PHP funktioniert (i.d.R.) nicht. (Man kann, wenn man MySQL-Root-Rechte mit seinem Login hat, versuchen, den globalen MySQL-Parameter zu verändern.)
Man muss/sollte/kann die Einstellung serverseitig vornehmen und entweder dauerhaft den Eintrag max_allowed_packet=16MB; in der my.cnf machen oder mit MySQL-Root-Rechten den Wert mittels SET max_allowed_packet=16777216; zur Laufzeit ändern (dann ist dieser bei einem Neustart allerdings wieder weg).

Außerdem ist anzumerken, dass die BLOBs in der DB irgendwie (ca.) doppelt so groß sind/werden, wie die Original-Dateien. – Aus einem Bild mit 991K wird bspw. (bei mir) ein BLOB mit 2.03MB. *strange&doof* (Bitte jetzt kein Bashing, ob es überhaupt sinnvoll ist, Bilder direkt in der DB zu speichern. – Es muss dieses Mal so sein!)

Old but not busted … – Dieser Inhalt wurde vor mehr als 6 Jahren publiziert. Die Korrektheit und Verfügbarkeit von Links können leider nicht gewährleistet werden.

Da ich gerade etwas digital aufgeräumt habe und mir dabei einige Dinge wieder eingefallen sind, die ich schon längst mal machen wollte, hier mal der Link auf ein PHP-Projekt, welches ich (schon) im Wintersemester 2009/2010 als Semesterarbeit an der FHP gemacht habe.

http://www.sok.ai/fhp/HA_PHP/

Es handelt sich dabei um eine kleine Notenauswertung & -visualisierung, die ohne Datenbank auskommt. – Naja, nicht dolle umfangreich, aber eine recht gute Prüfungsleistung…

Viel Spaß! – Demnächst werden wohl noch ein paar Vorträge u.ä. folgen…

Old but not busted … – Dieser Inhalt wurde vor mehr als 7 Jahren publiziert. Die Korrektheit und Verfügbarkeit von Links können leider nicht gewährleistet werden.

Wer kennt ihn nicht, den kleinen schnuckeligen konsole-basierten Multi-Chatter CenterIM!

Oh… – Ich höre jetzt schon etwas Gemurmel und verweise alle Unwissenden & Fragenden mal ganz schnell auf das CenterIM-Wiki unter http://centerim.org.

Allen Anderen sei schnell gesagt, dass die CenterIM-Entwickler Unterstützung suchen. – Genau(er)es gibts bei Frank unter altpeter.de.

Old but not busted … – Dieser Inhalt wurde vor mehr als 8 Jahren publiziert. Die Korrektheit und Verfügbarkeit von Links können leider nicht gewährleistet werden.

Die ‚Geburt‘ ist geglückt und das Video ist fertig…! 🙂

„In manchen Momenten fehlen uns einfach die Worte oder die richtigen Bilder, um zu erklären, was Freifunk ist. Deswegen haben wir einen kleinen Film gedreht, in dem wir erklären, wie Freifunk funktioniert und warum es so toll ist. […]“

Wer mehr (über Freifunk und Freifunk in Potsdam) erfahren und/oder das Video sehen möchte, der schaut einfach auf der Freifunk Potsdam Homepage nach.