QNAP TS-219/Fujitsu Q700: Externe Ip-Adresse für FTP-Service automatisch aktualisieren

Das TS-219/Q700 besitzt einen integrierten FTP-Server, welcher so konfiguriert werden kann, dass er nur Verbindungen über FTP mit expliziten SSL zulässt (ftpes). Leider scheint es dabei Probleme mit der externen Ip-Adresse für den passiven Modus zu geben. Angeblich reicht es aus, das Häkchen bei “Respond with external IP address for passive FTP connection reques” zu setzen und das Feld für die Ip-Adresse leer zu lassen. Eine Verbindung kann ich dann auch von außerhalb meines Netzes (mittels dyndns) zum Server aufbauen, doch die Verzeichnisauflistung funktioniert nicht. Über eine normale FTP-Verbindung, also nicht gesichert, funktioniert es ohne Probleme.
Irgendwann ist mir dann aufgefallen, dass der Server beim Wechsel (oder was immer er macht) zum passiven Modus eine falsche Ip-Adresse zurück gibt, eine die schon lange nicht mehr gültig ist. Ich vermute er hat sie von der eingebauten Möglichkeit einen DynDNS-Service zu nutzen, welcher im übrigen nicht gut funktioniert.
Die Ip-Adresse im Gerät nun automatisch zu aktualisieren ist relativ einfach, man braucht:

  1. eine Seite, welche einem die eigene externe Ip-Adresse ausgibt. Das ist z.B. durch ein einfaches PHP-Skript möglich:
    1. <?php echo $_SERVER["REMOTE_ADDR"]; ?>
  2. einen Befehl, welcher die Ip-Adresse runterlädt und die entsprechende Eigenschaft auf dem Gerät setzt, z.B.  (der Befehl muss in einer Zeile stehen):
    setcfg -f /mnt/HDA_ROOT/.config/uLinux.conf -c FTP WanIp
       $(wget -q -O - http://adrian.sinnev.de/getip.php)
  3. einen Befehl, den FTP-Server neuzustarten:
     sh /etc/init.d/ftp.sh restart
  4. und die Möglichkeit, diese beiden Befehle regelmäßig automatisch auszuführen. Dazu verweise ich hier auf die Möglichkeit eigene Cronjobs  auf dem Gerät zu definieren.

Veröffentlicht in Allgemein | Kommentieren

Tutorial: Asus CrashFree BIOS

Vor knapp zwei Wochen wollte ich das BIOS ist eines Asus M2N-E Mainboards aktualisieren. Das ist natürlich prompt schief gegangen. Grund ist, dass der BIOS-Chip scheinbar einen defekten Block hat und dieser nicht überschrieben werden kann.

Glücklicherweise hat Asus ein Tool namens CrashFree eingebaut welches es einem erlaubt ein BIOS zu flashen, ohne dass man booten kann. Unglücklicherweise scheint Asus es versäumt zu haben eine vernünftige Anleitung dafür zu schreiben.

Nach vielem Gesuche und Herumprobieren habe ich es letztendlich dann doch geschafft, die ältere Version des BIOS wieder einzuspielen, so dass das Board jetzt auch wieder läuft. Hier nun alle nötigen Schritte, um CrashFree nutzen zu können, in Kurzfassung:

  1. Eine Diskette und ein Diskettenlaufwerk besorgen
    Laut Anleitung sollte es auch mit CD oder USB gehen, aber das hat einfach nicht funktioniert. Bei neueren Boards ohne Diskettencontroller, klappt es wahrscheinlich.
  2. Die benötigte BIOS-Datei bei Asus runterladen und auf die Diskette kopieren.
    Achtung: Der Name der Datei auf der Diskette ist besonders wichtig, da CrashFree versucht die richtige Datei automatisch zu finden. Der Name ergibt sich aus dem Namen des Boards. Habt ihr zum Beispiel ein BIOS für das M2N-E heruntergeladen, muss die Datei M2NE.ROM heißen, auch wenn die heruntergelandene Datei 1703.BIN oder ähnlich hieß.
  3. Ladet euch zusätzlich das BIOS Flashtool AWDFLASH.EXE runter. Diese muss ebenfalls auf die Diskette.
  4. Schiebt die Diskette in den Rechner mit defekten BIOS und startet ihn. Wenn ihr alles richtig gemacht habt, sollte CrashFree nun das BIOS mit dem von der Diskette überschreiben.

Veröffentlicht in Allgemein | Getagged , , , , | Kommentieren

Fujitsu Q700 mit seriellem Port, eSATA und Mini PCI Express

Der Nutzer Toby hat in seinem Kommentar auf meinen Artikel “Fujitsu Q700 auf QNAP TS-219 “aktualisieren”" gefragt, ob der Q700, genauso wie der TS-219, einen seriellen Anschluss hat. Daraufhin habe ich das Gerät einmal auseinander genommen und ein paar Fotos gemacht.

Ob er nun einen seriellen Anschluss hat kann ich nicht mit Gewissheit sagen, da ich mich damit nicht auskenne und keine Möglichkeit habe das zu testen. Allerdings sieht der entscheidende Teil (CN9) der Hauptplatine ähnlich dem verlinkten Artikel von Toby aus, so dass man davon ausgehen kann, dass es sich um einen seriellen Anschluss handelt. Mit der richtigen Hardware und dem nötigen Wissen sollte es einfach sein, dies auch zu testen.

Zusätzlich hat das Board Lötstellen, welche mit ESATA1 und MINI-PCIE1 gekennzeichnet sind, sowie eine weitere auf der CON1 steht (wofür auch immer). Zumindest die Stelle für eSATA sieht so aus, als wenn es nicht allzu schwer ist dort den richtigen Stecker selbst anzulöten.

Hier nun die Bilder:

Und hier die Fotos in voller Auflösung.

Veröffentlicht in Allgemein | Getagged , , , , , , , , | Kommentieren

PS3: Aufbau von TROPHY.TRP-Dateien

Structure of PS3 TROPHY.TRP files.

PS3-Spiele unterstützen Trophäen, welche in Dateien mit dem Namen TROPHY.TRP gespeichert sind. Diese Dateien sind Archive, welche wiederum Dateien mit Informationen und Bildern zu den Trophäen enthalten. Darauf möchte ich hier aber nicht eingehen. Nachdem Red Squirrel einen (relativ ungenauen) Extraktor dafür geschrieben hat, wollte ich ein Tool zum Anzeigen der Dateien schreiben. Vielleicht wird das irgendwann auch mal was.

Jedenfalls habe ich mir die Mühe gemacht und eine TROPHY.TRP-Datei etwas genauer analysiert und versucht den Aufbau zu beschreiben. Die Datei besteht im wesentlichen aus einem Header, einer Liste von File Descriptoren und dem Inhalt der Dateien selbst (File Data).

  • Header
    Der Header besteht ist 64 Bytes groß und enthält die Anzahl der enthaltenen Dateien, die gesamte Dateigröße, sowie weiteren Daten deren Bedeutung ich mir nicht sicher bin.
  • File Descriptor
    Nach dem Header kommt eine Liste von File Descriptoren, welche ebenfalls jeweils 64 Bytes groß sind. Die Anzahl der Descriptoren ist die im Header angegebene Anzahl der Dateien. Der Descriptor enthält den Dateinamen, die Startposition in der TROPHY.TRP, sowie die Dateigröße.
  • File Data
    Nach der Liste der File Descriptoren kommen die eigentliche Dateien. Diese werden durch die angegebenen Daten im jeweiligen File Descriptor beschrieben.

Eine genauere Darstellung der Dateistruktur befindet sich bei Google Docs.

Veröffentlicht in Allgemein | Getagged , , , , | Kommentieren

Arla Kærgarden® und Mathematik

Auf der Schachtel von Arla Kærgarden® steht eine tolle, möglicherweise gar nicht so einfache Textaufgabe aus dem wahren Leben drauf. Also was richtig praktisch Anwendbares:

Dänisches Mischstreichfett 75% hiervon 75% Butter- und 25% pflanzliches Fett

Die Frage zu der Beschreibung könnte lauten: Wieviel Butterfett enthält eine 250g Schale Arla Kærgarden®?

Veröffentlicht in Allgemein | Getagged , , , | 1 Kommentar

#100kScrobbles: Congratulations to all winners


Reaching 100,000 scrobbles at Last.FM was a great, but very short moment. It last for about 3 minutes until the counter increased again. Nevertheless I’ve reached it at the 23th of August 2010. To find out more about the competition go to the original post.

Congratulations to all participants

Because there where only 8 participants all of them are winners and will receive a one of the prices. After some complex calculations I determined the following order of winners:

  1. Wildcat (08/20/2010)
  2. Kostek Andreev (08/19/2010)
  3. Pieps (08/28/2010)
  4. Lucretia (08/18/2010)
  5. Markus (09/30/2010)
  6. Thomas (10/24/2010)
  7. M. Harris (06/22/2010)
  8. Christopher (01/06/2010)

I will contact all winners within the next one or two weeks to tell them what they’ve win and how to obtain their price.

At the time of writing the article for the competition I had about 91,000 scrobbles. This was at  May 13th. So I needed about 102 days for listening to about 9000 songs, means about 89 songs a day. Personally I expected reaching 100k scrobbles by the end of July or first week of August. 89 songs a day is not really much. To make the number a little bit more precise we have to subtract weekend days, because I’m typically only listening to Last.FM on working days, when I’m at work. 102 days are about 14 weeks, so we could subtract 28 days, what means there are 74 days left for listening to music, what’s a new ratio of about 121 songs a day. I think this is a more realistic value. Maybe there is a tool out there, which can calculate the average ignoring all days no song was scrobbled.

Taking the average Last.FM calculates for me (56 songs a day) I would have needed about 160 days for reaching the goal. This would have been the 20th of October, means Thomas was quite near (10/24/2010). I think he used exactly this calculation as my Last.FM calculated ratio could have been at 54/55 songs a day back in May. The reason for this is, that my first year on Last.FM, I never used it.

Maybe the next competition could be reaching 150k scrobbles. But for this I’ve to think about some more complex rules.

By the way: Does anybody know the artist with the most played songs (most listeners) ever?

My personal top three are:

  1. The Beatles (~263 million plays and ~2.2 million listeners)
  2. Radiohead (~240 million plays and ~2.8 million listeners)
  3. Muse (~180 million plays and ~2.4 million listeners)

Maybe we should try to guess when the first artist will reach 500 million plays and who this artist will be?

Veröffentlicht in Allgemein | Getagged , , | Kommentieren

Last.fm: The 100k-Scrobbles-Competition

Okay, i ever wanted to start a competition just to have done this. I think this is the right time.

At Last.FM you can submit information about music you listen to and listen to music that might fit to your taste. I already have over 91,000 scrobbles at Last.FM.  To participate in the competion you just have to

Guess the date I will reach 100,000 scrobbles at Last.FM.

There are several ways of guessing the date:

  • Comment this post.
  • Use the contact form.
  • Send me a mention via Twitter (no need to follow). Use #100kscrobbles as tag, so it’s easier for me to filter it.
  • Send me a message via Last.FM, Sellaband, Xing or wherever you can find and contact me.

The prizes will be:

Some rules:

  • You can guess as many dates as you want, but only your last submission counts.
  • If nobody hits the correct date, the nearest date will win.
  • Early Bird. If there are too many people guessing the correct/nearest date, the ones with the earliest submission win.

For shipping the CD’s and shirts I will need your address. For the Last.Fm subscription you need a Last.FM account. I won’t store  your data or share it with anybody else.

Veröffentlicht in Allgemein | Getagged , , , , , , , , , , , | 4 Kommentare

Intimidate.de: Wallpaper und Windows 7 Themepacks

Mein Bruder war vor kurzem mit Skateboarder Cornelius Bongertmann in Rostock unterwegs, um ein paar geile Bilder für Intimidate zu schießen. Ich habe diese Bilder genommen und daraus für gängige Bildschirmauflösungen passende Hintergrundbilder erstellt. Für Windows 7 stehen Themepacks und für Telefone mit 240 x 320 Pixeln Auflösung passende Bildausschnitte zur Verfügung.

Runterladen und Verteilen erwünscht

Intimidate.de-240×320 Zip-Archiv | Windows 7 Themepack
Intimidate.de-800×600 Zip-Archiv | Windows 7 Themepack
Intimidate.de-1024×768 Zip-Archiv | Windows 7 Themepack
Intimidate.de-1280×800 Zip-Archiv | Windows 7 Themepack
Intimidate.de-1366×768 Zip-Archiv | Windows 7 Themepack
Intimidate.de-1400×1050 Zip-Archiv | Windows 7 Themepack
Intimidate.de-1440×900 Zip-Archiv | Windows 7 Themepack
Intimidate.de-1600×1200 Zip-Archiv | Windows 7 Themepack
Intimidate.de-1680×1050 Zip-Archiv | Windows 7 Themepack
Intimidate.de-1920×1200 Zip-Archiv | Windows 7 Themepack

Veröffentlicht in Allgemein | Getagged , , , , , , , , | Kommentieren

TS-219/Q700: Fehlermeldungen twittern

Der QNAP TS-219 (und sicher alle anderen Geräte von QNAP, sowie die Geräte Fujitsu Q600 und Q700) besitzt die Möglichkeit  über Fehler via SMS zu benachrichtigen. Dafür wird ein SMS-Gateway benötigt, welches im Gerät über eine HTTP-Schnittstelle angesprochen wird. Da SMS und Twitter in etwa die gleiche Anzahl an Zeichen benötigen, kann man sich dieses zu Nutze machen und die SMS-Schnittstelle als Twitter-Schnittstelle verwenden.

Damit das Ganze funktioniert braucht man z.B. einen Webserver mit PHP- und cURL-Unterstützung. Hat man diesen kann man die Twitter-Klasse von hier benutzen (die Datei twitter.class.php reicht). Danach braucht man lediglich eine weitere Datei, welche die Anfragen unseres Servers entgegen nimmt. Die Datei tweet.php sieht in Anlehnung an das Beispiel so aus:

  1. <?php
  2. require_once ‘twitter.class.php’;
  3. $twitter = new Twitter($_GET[‘username’], $_GET[‘password’]);
  4. $status = $twitter->send($_GET[‘text’]);
  5. echo $status ? ‘OK’ : ‘ERROR’;
  6. ?>

Danach braucht man sein neues SMS-Twitter-Gateway nur noch im Server einrichten.

Hat man alles eingestellt kann man eine Test-SMS schicken und das Ergebnis bestaunen. Wer keinen PHP-Server zur Verfügung hat (auf dem NAS ist einer installiert) oder keine Lust etwas einzurichten kann gerne mein Gateway verwenden. Dazu muss folgender Wert in dem entsprechende Feld im Server eingetragen werden:

http://adrian.sinnev.de/twitter/tweet.php?username=@@UserName@@
&password=@@Password@@&text=@@Text@@&phone=@@PhoneNumber@@

Die Telefonnummer muss angegeben werden, wird aber ignoriert. Generell werden auch keine Daten gespeichert. Der Aufruf macht nichts anderes als in der tweet.php angegeben.

Veröffentlicht in Allgemein | Getagged , , , , , , , , , , | Kommentieren

@ObjectFactory in PowerMock und TestNG

In dem Artikel PowerMock + TestNG = True beschreibt Johan Haleby die neue TestNG-Integration für PowerMock.

Leider vergisst er dabei zu erwähnen, dass die spezielle ObjectFactory von PowerMock auch via Annotation (statt XML) bereit gestellt werden kann. Und zwar so:

  1. public IObjectFactory getObjectFactory() {
  2.     return new org.powermock.modules.testng.PowerMockObjectFactory();
  3. }

Ich habe hier ein kleines Beispiel hochgeladen. Wer es zum laufen bekommen möchte, sollte das Elternprojekt ausschecken.

Ergänzung (11.03.2010)

Leider scheint die  Unterstützung für TestNG nicht allzu gut zu sein. Ich hatte bereits mehrere Fälle in denen es nicht ging und ich  wieder auf JUnit zurückgreifen musste.

Veröffentlicht in none | Getagged , , , , , | Kommentieren