Port freigabe mit der Fritzbox: Ein Gerät mit diesem Namen wurde bereits angelegt

Für mein neues NAS wollte die neue Portfreigabe einfach nicht funktionieren: immer kam der Fehler der FritzBox: Ein Gerät mit diesem Namen wurde bereits angelegt.

Es brauchte ein Weile bis ich kapierte, dass der Grund gar nicht die neue Portfreigabe war, die ich eben anlegen wollte, sondern zwei der bereits bestehenden.

Irgendwie hatten es zwei meiner Raspberry Pi Mini Rechner geschafft, mit dem gleichen Namen “raspberrypi” in der Portfreigabe zu stehen, obwohl die Fritzbox das ja gerade verhindern will.

Ich weiss nicht wie ich das geschafft habe, wenn ich mich recht erinnere waren die beiden PIs meistens nicht gleichzeitig online. Diesmal aber schon.

Allein deshalb konnte ich überhaupt keine neue Portfreigabe mehr anlegen, ganz egal was ich eingegeben habe. Das Problem ging erst weg, nachdem die gleichnamigen Portfreigaben gelöscht waren.

Da muss man erst mal drauf kommen…

Veröffentlicht unter Allgemein | 4 Kommentare

Migrating dovecot mailboxes from one host to another

I needed to move my mail system based on dovecot / postfix from one host to another preserving all mailboxes and also all imap UUIDs, so that imap clients can still identify mails.

There are some tools that come with dovecot but every how to that google returns for the problem seems much too complicated for that simple problem.

When you look at the man page of doveadm or dsync you know why: both tools have an overwhelming number of options.

After some reading and trying, is it basically use dsync for backup and restore and – also important – create same user accounts on both machines source and destination.

Then it goes like this:

  1. create a world writeable tmpdir to dump the mailbox to e.g. /tmp/dump: mkdir /tmp/dump && chmod a+w /tmp/dump
  2. use dsync to dump: dsync -o plugin/quota= -f -u <email> backup maildir:/tmp/dump
  3. compress with tar preseving time / permissions: tar cvzf dump.tgz /tmp/dump/ –atime-preserve –preserve-permissions
  4. copy the tar archive to new machine: scp dump.tgz user@target:
  5. decompress into a world readable directory e.g. again /tmp/dump
  6. If the mail account was touched already remove the complete mail directory (path depends on your setup, in most cases somewhere below /var/vmail/… or /var/mail/….)
  7. Restore the mailbox with: dsync -R -f -u <email> backup maildir:/tmp/dump/

That’s basically it. Just repeat for alle mailboxes you need to move and your done. Also a very fast and portable way to backup mailboxes.

Surprisingly this simple 7 step approach is not mentioned in any FAQ or manual I read, so here we are: just use it and your done.

Veröffentlicht unter Allgemein, Misc | 5 Kommentare

Configure Wifi on a headless Raspberry Pi with your own access point

In the IoT context there are many devices build based on micro controllers like esp or stm32. If it comes to integration into your wifi at home all these devices offer its own access point where one can connect to configure everything, mostly include the “real” wifi and your done. Very easy. Also amazons echo devices work like that.

Why not configure a raspberry pi based “device” the same way?

When you ask google about “access point raspberry pi” it guides you in the right direction but more or less every article out there is about turning a pi into a routing access point that does routing and nat and all. We don’t need all that.

We basically need 3 things:

  1. An access point: we use hostapd for that.
  2. A very tiny dhcp server that hands out an ip. we use udhcpd.
  3. A tiny http server that offers some configuration page. at least for configuring wifi itself. we use lighttpd and s small cgi script.

As soon as we have a working wifi we stop the three above.

So automating this works simply like this:

  • Some time after boot, with some script check if then wlan0 interface has a valid ip address
  • if not start the 3 services mentioned above to gather config.
  • with user input write a wpa_supplicant.conf to /etc/wpa_supplicant and reboot.

To be continued …

Veröffentlicht unter Allgemein | 8 Kommentare

Programming adapter for esp-12

If you want to flash a new firmware a esp8266 model esp-12e you need quite a lot of connections:esp12e-pinout

  • Vcc to Pin 3, 8 and 17
  • GND to Pin 15, 16 and 18
  • TX to Pin 22, RX to Pin 21

20170225_141022_001If you do not have a “in circuit” programming possibility, it is quite hard to connect every pin just for programming.

That’s why I looked for something like an adapter to put the esp in just for programming like a eprom programming device, but didn’t find one. So I decided to build my own.

So I take a 1 row female header and stripped the plastic case apart so only the golden spring parts are left.

20170225_141123Placing them onto a breadboard is also not that easy because the esp uses a 2mm raster not the standard 2.54mm. But with a few additional drills everything fits in the end. For soldering it is best to keep a (maybe broken) esp already plugged in so every pin ist automatically in the right position.

So with this little adapter one can plug an esp-12 in, flash new firmware and pull it out again.

Enjoy.

Veröffentlicht unter Electronics | 7 Kommentare

Eclipse CDT zur PIC / PIC32 Entwicklung nutzen

Will man auf den Micro-Controllern der PIC Familie von Mircochip Software, so tut man sich auf der Suche nach einer professionellen IDE schwer. Vor allem wenn es nichts kosten soll und man den Komfort von Eclipse gewohnt ist.

Es gibt die MPIDE und MPLAB X, letzteres auf Basis von Netbeans und daher wahrscheinlich recht mächtig (ich hatte noch keine Gelegentheit es zu testen).

Was die Suche zusätzlich erschwert ist die Vielfalt der angebotenen Boards und Prozessortypen. Was in der AVR-Welt noch halbwegs überschaubar ist, ist bei Microchip doch recht unübersichtlich bzw vielfältig.

Gut gefallen hat mir da UECIDE. Sie bietet mit ihrem Plugin-Manager genau das Mittel schnell und einfach für unterschiedliche Boards und unterschiedliche “Cores” (Laufzeit-Umgebungen) eine Umgebung zusammen zu stellen. Die notwendigen Source und Toolchains werden einfach herunter geladen und im Homeverzeichnis “installiert”. Selbst die “Uploader” zum Flashen der Boards sind direkt dabei.

Natürlich kann man diese IDE trotzdem niemals mit der Mächtigkeit einer Eclipse vergleichen und auch das Tooling (SVN, GIT, Debugging, Code Analyse usw.) ist bei weitem nicht so gut.

Wenn man allerdings eine reine CDT-Eclipse (Kepler) installiert und die Toolchains und Board-Definitionen von UECIDE mitbenutzt, dann hat man sehr schnell eine lauffähige Eclipse-Umgebung mit allem Komfort.

Weiterlesen

Veröffentlicht unter Allgemein | 7 Kommentare

Audible Hörbücher in MP3 wandeln mit Tags und Kapiteln

Seit Audible zu Amazon gehört, bin ich mal wieder Audible-Kunde. In der Tat gibt es hier das eine oder andere Schnäppchen zu machen.

Immer noch ärgerlich: das Audible eigene Dateiformat, was sich nur mit den Audible Software-Playern abspielen läßt. Einziger Vorteil: die Kapitelnavigation.

Nun gibt es Möglichkeiten die Audible-Formate nach mp3 zu konvertieren. Am einfachsten geht das mit dem “alten” 4er Format (Datei-Endung .aa). Für dieses gibt es noch einen DirectShow-Filter (AudibleMediaPlayerFilter.exe) über den sich mit Programmen wie Goldwave oder anderen direkt ein grosses MP3-File erzeugen läßt.

Wie ich erst gestern gefunden habe, gibt es Programme die aus .aa oder .aax auch noch die Kapitel Informationen extrahieren, da diese auch vergleichsweise einfach (weil unverschlüsselt) auszulesen ist.

Damit kann man dann ein .cue Sheet für MP3DirectCut erstellen e voila schon hat man kapitelweise geschnittene MP3s aus dem langen Hörbuch gemacht.

Ein einfacher Converter, der Zeilen im Format HH:MM:SS einliest und ein fertiges CUE-File schreibt, sieht in Java so aus:

    public void convert(String[] args) {
        try {
            PrintStream cue = new PrintStream(new File(args[0]+".cue"));
            BufferedReader r = new BufferedReader(new InputStreamReader( new FileInputStream(args[0]),"Cp1252"));
            String line;
            String name = new File(args[0]).getName();
            String title = args[1];
            String artist = args[2];

            name = name.substring(0,name.lastIndexOf("."));
            cue.format("PERFORMER \"%3$s\"\r\n" +
            		"TITLE \"%2$s\"\r\n" +
            		"FILE \"%1$s.mp3\" MP3\r\n",name,title,artist);
            int i = args.length>3?Integer.parseInt(args[3]):1;
            while( ( line = r.readLine() ) != null ) {
                String p[] = line.split(":");
                int m = Integer.parseInt(p[0])*60 + Integer.parseInt(p[1]);
                int s = Integer.parseInt(p[2]);
                cue.format("  TRACK %1$02d AUDIO\r\n" +
                		"    TITLE \"(Track %1$02d)\"\r\n" +
                		"    INDEX 01 %2$02d:%3$02d:00\r\n" +
                		"",i,m,s);
                i++;
            }
            r.close();
            cue.close();
        } catch( Exception e) {
            e.printStackTrace();
        }
    }

Dieses CUE-File läßt sich in MP3DirectCut als Projekt laden und mit “Split save …” werden die einzelnen MP3-Files erzeugt, gleich mit richtigem Namen und ID3 Tags.

Um das einfach nutzen zu können findet ihr hier AaxChapterConvert.jar die kompilierte JAR Datei. Allerdings muss Java auf dem Computer installiert sein. Der Aufruf sieht so aus:

java -jar AaxChapterConvert.jar <filename> <title> <artist> <track-offset>
Veröffentlicht unter Allgemein | 16 Kommentare

Untertitel und Kapitel für MKV erzeugen mit DVDate

Wenn man – wie ich – noch viele alte miniDV Kasetten hat und vor der Herausforderung steht diese Archivieren zu müssen, hat man ein Problem: was ist nur alles drauf auf den ganzen Kassetten?

Meine Lösung: Komplett per Firewire auf den Rechner, dann mit x.264 komprimieren und nun als MKV speichern. Der Inhalt erschließt sich so aber immer noch nicht.

Da viel mir ein, dass miniDV ja einen DateCode schreibt, zu jeder Aufnahme also weiss, wann sie gemacht wurde. Etwas Googeln liefert das Tool DVDate, was diese Daten ans Licht bringt.

Damit lassen sich Szenen auffinden und man hat auch wieder die Information, wann etwas aufgenommen wurde.

Die Idee: erzeuge eine OGM Kapitel Datei und eine SRT Untertitel Datei und packe das Ganze mit mkvmerge in eine einzige MKV Datei.

Ein kleiner Converter in Java erzeugt die beiden Files. Einfach die Scenen als Text exportieren und den Converter mit “java -jar ChapConvert.jar bla_scn.txt” auf rufen und schon werden die Files erzeugt.

Zuvor sollte man allerdings den Scene-Editor von DVDate nutzen und die Scenen benennen. Mindestens eine Zeitstempel mit “%D” ist Pflicht. Wer sich die Mühe macht echte Namen zu vergeben, findet die Namen als Kapitelname und auch in den Untertiteln wieder.

Hier gibt das ChapConvert.jar

Veröffentlicht unter Allgemein | Verschlagwortet mit , , , , , | 3 Kommentare

Spring Dependency Graph mit yEd / Graphml

Wenn man ein fremdes Projekt, was mit Spring gemacht ist, zum ersten Mal anschaut, ist es nicht leicht sich einen Überblick zu verschaffen. Insbesondere die Abhängigkeiten der SpringBeans untereinander sind nicht leicht zu überschauen.

Verschiedene IDE Integrationen versprechen Abhilfe. Die Spring Tool Suite (STS) kann beispielsweise einen Abhängigkeitgraphen anzeigen, allerdings erlebt man eine Enttäuschung wenn man dies mit einem auch nur halbwegs ernsthaften Projekt versucht. Weiterlesen

Veröffentlicht unter Allgemein | Verschlagwortet mit | 9 Kommentare

Debuggen bei der JDBC Programmierung

Schon zum zweiten Mal in den letzten drei Monaten hat mich ein Projektauftrag wieder tief hinunter an die Datenbank-Persisitenz geführt, wo noch richtige SQL-Statements im Code zu finden sind 😉

Für eigene Projekte und insbesondere auch für das Einarbeiten in fremde Projekte ist es da sehr nützlich, wenn man genau sieht, was auf der Datenbank so alles passiert.

Hier hilft das Tool log4jdbc-remix sehr gut weiter, weil es sowohl alle Anfragen als auch die Ergebnisse mitschreiben kann. Es lassen sich auch eigene LogFormatter integrieren und selbst der Umgang mit mehreren Datenbanken ist in der neusten Release 0.2.8 kein Problem.

Da ich selbst auch schon über ein paar kleinere Probleme gestolpert bin, kann ich ausserdem den guten Entwickler-Support unterstreichen: Jedesmal hat Tim, der Owner des Projekts, sehr schnell reagiert und das Problem beseitigt oder einen Patch übernommen.

Veröffentlicht unter Java | Verschlagwortet mit | 4 Kommentare

Energiesparlampen / LED Leuchtmittel

Neulich wollte ich etwas für mein Ökogewissen tun und einige der stromfressende Halogenlampen (12V GU5.3) durch LED-Leuchtmittel ersetzen. Zufällig fand ich welche von NBS angeboten mit nominellen 210 Lumen bei 3 W und der Farbe warmweiss. Das zu einem Preis von unter 10 Euro was mir ein guter Preis zu sein schien.

Mit dem Kauf der Lampen ging allerdings der Spass erst los … Weiterlesen

Veröffentlicht unter Allgemein | 10 Kommentare