FTDI USB2Serial an der DS211j

Heute gibts mal wieder eine Bastelanleitung: mein Projekt 10€ Temperatursensor hält mich ja nun schon seit einiger Zeit auf Trab und so stand dann vor ein paar Tagen mal wieder ein Umzug auf andere Hardware an. Meine Synology Diskstation DS211j sollte eigentlich nur als Datenspeicher dienen, hat aber inzwischen dank Linux Betriebssystem schon diverse Aufgaben als Heimserver übernommen. Und nun kommt ein weiterer hinzu: meine 1-wire Sensoren. Das Projekt ist nach Wegfall meines alten Linux-Servers irgendwie in Vergessenheit geraten, aber jetzt wo der Winter kommt und ich gerne wissen würde, ob meine Heizung läuft oder nicht, wieder interessant.

Kaum beschlossen und verkündet wurde die DS211j von Ihrem warmen und komfortablen Platz im Büro in den Keller geschleppt, angeklemmt und auf Funktion getestet. Funktioniert. An der Konsole konnte ich beim Einstecken des FTDI Adapters erkennen, dass was passiert, aber meine Sensoren bzw. der ganze Adapter wurden nicht erkannt. Schade. Ein wenig gegoogle förderte zu Tage: der Standard-Kernel der Diskstation bietet keinen Unterstützung für den FTDI USB2Serial-Adapter an. “Aber als Modul müsse es gehen” war zu lesen. “Mal den Kernel mit den FTDI Optionen builden” schien die Lösung. Gesagt, getan. Auch hier half Google weiter und führte mich auf diesen Thread im Synology Forum.

Und hier folgen nun die einzelnen, von mir erfolgreich durchgeführten Schritte:

  • ipkg install gcc optware-devel #Build Essentials installieren
  • Herunterladen der Kernelsourcen für DSM 3.1 (v1922) bei Sourceforge.
    (Achtung! Diese Download-Adresse passt nur zum Kernel 2.6.32.12, DSM 3.1 und der DS211j – “uname -a” muss folgendes ausgeben: Linux DiskStation 2.6.32.12 #1922 Sun Sep 4 02:10:58 CST 2011 armv5tel GNU/Linux )
  • Entpacken der Sourcen und Wechsel in den Unterordner “linux-2.6.32″
  • cp synoconfigs/88f6281 .config # Konfigurationsvorlage kopieren
  • make clean
  • cp /opt/lib/libncursesw.so.5 /lib/libncursesw.so.5 (kann erfordelich sein!)
  • make oldconfig ARCH=arm CROSS_COMPILE=/opt/bin/
  • In der Datei .config die Zeile CONFIG_USB_SERIAL=m aktivieren/anpassen
  • make prepare ARCH=arm CROSS_COMPILE=/opt/bin/ #Fragen nach FTDI mit Y bzw. M beantworten
  • make modules ARCH=arm CROSS_COMPILE=/opt/bin/ M=scripts
  • make modules ARCH=arm CROSS_COMPILE=/opt/bin/ M=drivers/usb/serial
  • insmod drivers/usb/serial/usbserial.ko # frisch gebaute Module laden
  • insmod drivers/usb/serial/ftdi_sio.ko
  • lsmod # Module sollten nun angezeigt werden
  • mknod /dev/ttyUSB0 c 188 0 # Gerätedatei unter /dev erzeugen
  • chmod a+rw /dev/ttyUSB0 # Schreib/Leserechte auf der Gerätedatei setzen

Die Module können – wenn Sie funktioniere,der FTDI Chip erkannt wird und ansprechbar ist – nun nach /lib/modules kopiert werden. Wenn man sich dann noch die /etc/rc anpasst, dann werden die Module beim nächsten Start auch automatisch geladen.

Update: die Anleitung funktioniert auch problemlos mit DSM3.2 (v1944). Die Sourcen findet man ebenfalls bei Sourceforge.