Author Archives: martin

Stealing your Facebook made easy

Eric Butler published an easy to use Firefox extension which captures session cookies from broadcast media such as public wifi networks. It allows anyone, to collect Facebook, Twitter, Flickr, etc session cookies and do anything with these accounts with just a click.

This is scarily easy!

I hope social network providers start implementing end-to-end encryption via https soon. Until then, be careful from where you access your social networks. On the other hand easy identity stealing brings social networking to a new level. 😉

Intel Developer Forum 2010

This year’s Intel Developer Forum from September 13th to 15th was all about Data Center Applications, Cloud Computing, and Embedded Systems. I was happy about the opportunity to present a Poster about my Leonardo Robot Project in the academic track. The conference was accompanied by Intel’s AppUp Elements developer meeting which occurred for the first time this year.


iChem Logo


iChem is a case study to bring aquatic chemistry calculations on the iPhone to the classroom. The computational nature of aquatic chemistry lends itself well to the iPhone platform and by providing students with a simple means of performing laborious calculations, the underlying chemistry of the problem being studied can be the primary focus rather than the calculations.

The application features Activity Coefficient, Ionization Fraction and Equilibrium Constant computations. The goal is to provide a user friendly tool for chemistry students, which enables them to quickly solve standard computations on their fingertips. The tool will be made available to the public, soon.

iChem Screenshots

iChem Screenshots

[1] Martin Wojtczyk, Mark A. Nanny, and Chetan T. Goudar. Aquatic Chemistry on the iPhone: Activity Coefficient, Ionization Fraction and Equilibrium Constant determination. In 239th American Chemical Society National Meeting & Exposition, San Francisco, USA, March 2010.


The Wii Remote got plenty of attention among Roboticists to improve Human-Robot-Interfaces and to lower anxiety for complex machines. Therefore I implemented WiiDrive for the Leonardo Robot Project. WiiDrive is a Wii Mote Control application to enable anybody to move the Leonardo Robot, without typing complex commands at the keyboard (see Video).

Mac OS X Snow Leopard Server Tour, San Jose

The official product link of Mac OS X Server:

My favourite presentation during this event was “Sal on Automation” with system wide services. His website contains very valuable resources on automation Tasks with Mac OS X. Check out: and

Sync your Motorola C390 with iSync for free

Motorola C390

Recently my SonyEricsson cellphone broke and I wanted to replace it by my Bluetooth enabled Motorola C390. Apple’s iSync is really great to keep your address book and calendar in sync with your cellphone. Unfortunately the C390 is not supported by default. Your Mac can pair with the phone and use it for data connections but iSync does not support it, see [1].

There seem to be some commercial solutions which may help, though I didn’t test one of them, just search the web for iSync and C390 and you will find them.

iSync C390

Luckily I also found this guy’s Howto in a forum about adding Motorola C390 support to iSync for free just by modifying a xml file [2]. However, since I am running Mac OS X 10.4.9, I recognized slight changes in the xml tag names. That’s why I noted the instructions below.

Enabling Motorola C390 for iSync

  • Right click on the iSync Application
  • Show Package Contents
  • Goto Contents/Plugins/ApplePhoneConduit.syncdevice/Contents/ Plugins/PhoneModelsSync.phoneplugin/Contents/ Resources
  • Backup and modify the MetaClasses.plist file to make it look like below in the beginning
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "">
<plist version="1.0">
            <string>"Motorola CE, Copyright 2000"+C390</string>
  • You will need a tiff file, with the name you entered under ModelIcon, but you can just copy it from another one in the same folder as the MetaClasses.plist file
  • Start iSync
  • Select Devices->Add Device from the menu
  • et voilĂ , your Motorola C390 should show up as a supported phone

I synced my address book and calendar successfully with it, so I don’t know, why the phone is not supported by default. Anyways, use at your own risk.

Wiimote controls Front Row on a PowerBook


I have this 2005 12″ PowerBook G4 with Mac OS X Tiger 10.4.9 and was jealous of the new MacBooks’ Remote Controls. One day I found a movie on youtube about someone controlling Front Row with a Wiimote. I just didn’t find all the links in one place. Maybe this is of help for you. It should work on other Bluetooth enabled Macintosh computers as well.

1. Get Front Row to work on a Mac without Remote Control

2. Install DarwiinRemote

  • Get DarwiinRemote
  • The key mapping matches the one of Front Row by default, though, you might want to change the Wiimote’s + and – buttons to change volume control as well

Works like a charme.

You can also use the Wiimote with DarwiinRemote to go through your PowerPoint Presentations 🙂

Howto remove the nVidia linux drivers


Recently it happened to me, that I removed a nVidia 3D accelerated graphics card from my computer which was supported by nVidia’s driver and I wanted to switch back to the integrated graphics chipset which is supported by However the nVidia driver, which usually comes as a package like, has overwritten some libraries and header files so that just changing the driver name in /etc/X11/xorg.conf worked for 2D modes, though OpenGL did not work because some of the X servers lbraries and header files were replaced. Furthermore there was no uninstallation procedure included in the driver package which I had (Version 1.0-7676).


Luckiliy the nVidia installer left a log of the files which were added or replaced in /var/lib/nvidia/log. You may want to delete the mentioned files manually and reinstall the and mesa packages of your distribution to make sure the OpenGL libraries and headers are restored.

Afterwards the X server should work fine again – 3D including.

xerces-c-src_2_6_0 on Mac OS X Tiger


When I tried to compile Xerces-C++ Version 2.6.0 from source on Mac OS X Tiger 10.4.2 with gcc-4.0.0 the compiler complained:

MacOSUnicodeConverter.cpp:78: error: 'static' may not be used when defining 
(as opposed to declaring) a static data member
MacOSUnicodeConverter.cpp:84: error: 'static' may not be used when defining 
(as opposed to declaring) a static data member
make[2]: *** [MacOSUnicodeConverter.o] Error 1
make[1]: *** [transcoders] Error 2
make: *** [Util] Error 2


The solution is easy, just delete the word static in the source code manually and build again or use this patch:


Patch instructions

Download the Xerces-C++ source distribution from [1].

The sources contained in my case version 2.6.0.

Extract sources and apply patch:

tar xzf xerces-c-current.tar.gz
cd xerces-c-src_2_6_0
patch -p1 <../xerces-c-src_2_6_0-tiger.diff

Please make sure that the paths are adjusted to your system. Follow the official build instructions Building Xerces-C++ from the Mac OS X command line at [2] afterwards.

FRITZ!Card DSL SL mit Linux Kernel 2.6.x

Mit freundlicher Genehmigung von Andreas Huppert.

Original Quelle zu diesem Posting:


Folgende Beschreibung will schrittweise darstellen, wie ich meine Fritz!Card DSL SL Karte unter Fedora 2 + Linux-kern zum Laufen gebracht habe. Dennoch gehe ich davon aus, daß dieses Kochbuch auch denjenigen zu Gute kommt, die andere nicht-SuSe Distribution verwenden.

Benötigte Downloads

Kernel Konfiguration

Da möchte ich lediglich auf die ISDN und PPP Konfiguration hinweisen. Die Kommandos “grep ISDN .config” bzw. “grep PPP .config” ergeben folgende Ausgaben:

# ISDN subsystem
# Old ISDN4Linux
# CONFIG_ISDN_I4L is not set

Nach dem REBOOT mit dem neuen Kernel

Bevor wir den fcdslsl-driver ĂŒbersetzen, muß /usr/src/linux auf den richtigen Kernel-Baum zeigen und das bewirkt folgendes Kommando:

# ln -s /<your path>/linux- /usr/src/linux

Entpacken wir das Archiv fcdslsl-suse9.1-3.11-04.tar.gz :

# tar -xzvf fcdslsl-suse9.1-3.11-04.tar.gz

Übersetzen wir den fcdslsl driver:

# cd fritz
# make install

Das Ende der Ausgabe sollte folgendermaßen aussehen:

for f in src/fcdslsl.ko; do cp -vf $f /lib/modules/; done
`src/fcdslsl.ko' -> `/lib/modules/'
# reboot

Bei diesem REBOOT wird die “Fritz!Card DSL SL” Karte entdeckt und die soll “Using dynamic IP configuration” konfiguriert werden. Diese Aktion hat folgende Konsequenzen:

1. Die Fritz!Card wird als Ethernet Device konfiguriert und damit eine config Datei /etc/sysconfig/network-scripts/ifcfg-eth1 angelegt. Der Inhalt dieser Datei ist allerdings FALSCH(!):

# AVM Audiovisuelles|Fritz!Card DSL SL

Wir mĂŒssen die Konfiguration durch “System Settings” -> “Network” -> “Edit” Ă€ndern, indem das BOOTPROTO “dialup” wird.

Die RICHTIGE /etc/sysconfig/network-scripts/ifcfg-eth1 Datei sieht so aus:

# AVM Audiovisuelles|Fritz!Card DSL SL
# diese Zeile sollte bewirken, daÃƞ ein /etc/resolv.conf angelegt wird

2. In der Datei modprobe.conf ein “alias eth1 fcdslsl” Eintrag, der dazu fĂŒhrt, daß der fcdslsl-driver als eth1-driver benĂŒtzt wird.

3. Das Modul fcdslsl wird geladen und das zeigen folgende Zeilen in der messages Datei:

CAPI Subsystem Rev
fcdslsl: AVM FRITZ!Card DSL SL driver, revision 0.2.1
fcdslsl: (fcdslsl built on Sep  8 2004 at 19:05:26)
fcdslsl: Loading...
kcapi: Controller 1: fcdslsl-b400-5 attached
fcdslsl: Loaded.

Die eth1 Schnittstelle ist allerdings noch nicht funktionsfÀhig, dazu brauchen wir noch die capi4k-utils Programme.

CAPI Utilities Installieren

# tar -xzvf capi4k-utils-2004-06-14.tar.gz
# cd capi4k-utils
# make menuconfig

Da mĂŒssen folgende Zeilen markiert werden:

           [*] avmcapictrl & capiinit
           [ ] capifax
           [ ] rcapid
           [*] pppdcapiplugin

-> Save

# make install

Sollten Fehler wegen “getpass redefinition” auftreten, muß die Zeile

extern char *getpass (__const char *__prompt);

in /usr/include/unistd.h auskommentiert werden.

capiinit Aufruf vorbereiten

# echo fcdslsl fdssbase.bin > /etc/capi.conf
# cd fritz	# wo der fcdslsl-driver generiert wurde
# cp fdssbase.bin /usr/lib/isdn
# /sbin/capiinit start

Dieses Kommando sollte die Kernel-Module

  • capi
  • capifs
  • kernelcapi

nachladen und in der messages Datei folgende Ausgaben erzeugen:

capifs: Rev
creating device node '/udev/capi'
creating device node '/udev/capi20'
capi20: Rev started up with major 68 (middleware+capifs)
creating device node '/udev/capi24'
creating device node '/udev/capi30'
fcdslsl: Using VCC/VPI/VCI = 0x1/0x1/0x20
fcdslsl: Stack version 3.11-04
kcapi: card 1 "fcdslsl-b400-5" ready.

Zur Kontrolle die “capiinfo” Ausgabe:

Number of Controllers : 1
Controller 1:
Manufacturer: AVM-GmbH
CAPI Version: 2.0
Manufacturer Version: 3.101-04  (49.20)
Serial Number: 0000000
BChannels: 1
Global Options: 0x00000001
   internal controller supported
B1 protocols support: 0x10000000
B2 protocols support: 0x40000002
B3 protocols support: 0x40000001

  00000000 00000000 00000000 00000000 00000000 00000000
  01000001 00020000 00000000 00000000 00000000

Supplementary services support: 0x000003ff
   Hold / Retrieve
   Terminal Portability
   Call Forwarding
   Call Deflection

Verbindugsaufbau zum DSL-Provider

Dazu benötigen wir noch zwei weitere config Dateien:

controller 1
protocol adslpppoe
vpi 1
vci 32
# Ondemand Verbindung zu T-DSL ĂŒber die Fritz!Card DSL
lcp-echo-interval 5
lcp-echo-failure 3
lcp-max-configure 50
lcp-max-terminate 2
connect ""
mru 1490
mtu 1490
# Anschlusskennung T-Online-Nummer Mitbenutzerkennung
#          |           |           |
user xxxxxxxxxxxx\#yyyyyyyyyyyy\#0001\
password zzzzzzzz
linkname t-dsl
ipparam internet

Die Verbindung wird mit folgendem Kommando aufgebaut:

# /usr/sbin/pppd call t-dsl

Dadurch werden in der messages Datei folgende Ausgaben generiert:

pppd[4532]: Plugin loaded.
pppd[4532]: userpass: $Revision: 1.4 $
pppd[4532]: Plugin loaded.
pppd[4532]: capiplugin: $Revision: 1.34 $
pppd[4532]: capiconn:  1.9
kernel: CSLIP: code copyright 1989 Regents of the University of California
kernel: PPP generic driver version 2.4.2
pppd[4544]: pppd 2.4.2 started by root, uid 0
pppd[4544]: capiplugin: phase serialconn.
pppd[4544]: capiplugin: leased line (adslpppoe)
udev[4543]: creating device node '/udev/ppp'
pppd[4544]: capiplugin: connected: "" -> "" outgoing (pcli=0x101/ncci=0x10101)
pppd[4544]: capiplugin: using /dev/capi/0: "" -> "" outgoing (pcli=0x101/ncci=0x10101)
pppd[4544]: Using interface ppp0
pppd[4544]: Connect: ppp0 <--> /dev/capi/0
pppd[4544]: capiplugin: phase establish (was serialconn).
pppd[4544]: capiplugin: phase authenticate (was establish).
pppd[4544]: PAP authentication succeeded
pppd[4544]: capiplugin: phase network (was authenticate).
pppd[4544]: local  IP address
pppd[4544]: remote IP address
pppd[4544]: capiplugin: phase running (was network).

und folgende Kernel-Module nachgeladen:

  • ppp_synctty
  • ppp_generic
  • slhc

Damit sind wir mit dem DSL-Provider verbunden und “ifconfig -a” zeigt eine neue Netzwerk- Schnittstelle an:

ppp0      Link encap:Point-to-Point Protocol
          inet addr:  P-t-P:  Mask:
          RX packets:62 errors:0 dropped:0 overruns:0 frame:0
          TX packets:62 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3
          RX bytes:2924 (2.8 Kb)  TX bytes:4554 (4.4 Kb)

Die Verbindung besteht, so lange der Prozess pppd lÀuft.

DNS (Domain Name Server) ansetzen

FrĂŒhere Versionen von capi4k-utils haben nach dem Start von pppd eine /etc/ppp/resolv.conf Datei mit “nameserver” Zeilen erzeugt und wir brauchten lediglich /etc/resolv.conf dazu linken. Die neue Version tut es – zumindest bei mir – nicht, so kann ich zunĂ€chst nur die “quick-and-dirty” Lösung anbieten: Wir mĂŒssen die /etc/resolv.conf Datei selbst mit folgendem Inhalt anlegen:


Ohne diese Aktion ist die ppp0 Schnittstelle zwar oben, aber wir können keine symbolischen IP-Adressen – wie z.B. – erreichen.

Sollte jemand diesbezĂŒglich die richtige Lösung erraten, soll er/sie mich benachrichtigen.


Ich habe mich nicht bemĂŒht, eine abstrakte Beschreibung zu geben, so mĂŒssen paar Sachen entsprechend angepaßt/verstanden werden, wie z.B. “eth1”: Das hĂ€ngt nĂ€mlich von den sonstigen vorhandenen Netzwerk-Schnittstellen ab.

Ob und wie das Starten von DSL beim Bootvorgang stattfindet, ist Geschmacksache und ich wollte diesbezĂŒglich keine Insellösung vorschlagen. Ich habe in der ifup script dafĂŒr eine kleine Änderung mit “/sbin/capiinit start; /usr/sbin/pppd call t-dsl” gemacht. Sollte jemandem die korrekte Lösung einfallen, soll er/sie mich benachrichtigen.

Andreas Huppert