Anmerkung: Abhängig von der verwendteten Distribution (Debian, openSuSE, etc.) sowie der Version
des Linux Kernels müssen Sie einige der im folgenden beschriebenen Schritte ausführen. Als erstes sollten Sie versuchen, die Anleitung ohne Änderungen zu befolgen. Wir haben die Kernel-Entwickler davon überzeugt, alle (bekannten) ELV-Geräte standardmäßig freizuschalten. Ab Kernel 2.6.24.2 (z.B. openSUSE 11) sind die folgenden Veränderungen nicht mehr notwendig. Sie können Ihre aktuelle Kernel-Version durch Aufruf von
in Erfahrung bringen.
|
Ein Gerät
Wenn Sie nur ein Gerät (FHZ1000PC, FHZ1300PC, EM1010PC, WS300, ...) an
Ihren GNU/Linux Server anschließen, können Sie das normale Kernelmodul
ftdi_sio verwenden, das Gerät wird jedoch erstmal nicht erkannt werden.
Dazu müssen Sie den Hersteller- und den Produkt- Code herausfinden:
# lsusb
...
Bus 002 Device 002: ID 0403:e0e8 Future Technology Devices International, Ltd
...
Abhängig von Ihrer Distribution ändern Sie jetzt bitte die Datei
/etc/modprobe.conf
oder /etc/modprobe.conf.local
.
Fügen Sie folgende Zeile hinzu:
options ftdi_sio vendor=0x0403 product=0xe0e8
Ändern Sie Hersteller und Produkt entsprechend der Ausgabe von lsusb.
Anschließend laden Sie das Modul mit folgendem Aufruf neu:
# modprobe ftdi_sio
Mehrere Geräte
Bei Verwendung mehrerer USB-Geräte (FHZ1000PC, FHZ1300PC, EM1010PC, WS300,
...) funktioniert die oben beschriebene Methode nicht. Sie müssen das Kernelmodul
ftdi_sio kernel anpassen, damit es funktioniert. Das folgende Beispiel bezieht
sich auf openSuSE 10.1. Sie müssen die kernel-source-version (RPM) Ihres aktuellen Kernels
installieren (Ausgabe mit: uname -r
). Danach gehen Sie wie folgt vor:
Für den EM1010PC ergänzen Sie gegebenfalls folgende Zeile:
# cd /usr/src/linux
# make cloneconfig
# make modules_prepare
# cp /boot/symvers-2.6.*-default.gz /usr/src/linux
# mv symvers-2.6.*-default.gz Module.symvers.gz
# gunzip /usr/src/linux/Module.symvers.gz
# make modules_prepare
# cd drivers/usb/serial
# vi ftdi_sio.h
...
#define FTDI_ELV_WS500_PID 0xE0E9 /* PC-Wetterstation (WS 500) */
#define FTDI_ELV_EM1010PC_PID 0xE0EF /* EM 1010 PC */
Entfernen Sie nun die Kommentarzeichen bei den entsprechenden Zeilen entfernt, um Ihre Geräte zu aktivieren:
# vi ftdi_sio.c
...
{ USB_DEVICE(FTDI_VID, FTDI_ELV_WS300PC_PID) },
{ USB_DEVICE(FTDI_VID, FTDI_ELV_FHZ1300PC_PID) },
{ USB_DEVICE(FTDI_VID, FTDI_ELV_WS500_PID) },
{ USB_DEVICE(FTDI_VID, FTDI_ELV_EM1010PC_PID) },
...
Entfernen Sie /* and */ für Ihre Geräte und speichern Sie
die Datei.
# cd /usr/src/linux
Es gibt nun drei Möglichkeiten:
# mv Module.symvers Module.symvers.notneeded
|
... die verwendeten usb serial Module bauen. Auf Geräten mit geringer Rechenleistung wie der ARM-Based NSLU2 reicht es aus, nur die benötigten Module zu kompilieren. |
# make modules
| ... alle Module kompilieren (kann einige Zeit dauern). |
# make driver/usb/serial/ftdi_sio.ko
| ... nur das Modul ftdi_sio.ko zu bauen. Diese Methode scheint aber nicht immer zu funktionieren. |
# cd /lib/modules/yourKernelVerion/kernel/drivers/usb/serial
# cp ftdi_sio.ko ftdi_sio.ko_backup
# cp /usr/src/linux/drivers/usb/serial/ftdi_sio.ko .
# rmmod ftdi_so
# modprobe ftdi_so
# ls -l /dev/ttyUSB*
crw-rw---- 1 root uucp 188, 0 2007-02-11 23:00 /dev/ttyUSB0
crw-rw---- 1 root uucp 188, 1 2007-02-11 23:00 /dev/ttyUSB1
Device links
Wenn einzelne Geräte fehlen oder nach einem Reboot, kann es bei der Verwendung
mehrerer USB-Geräte (FHZ, EM, WS...) passieren, dass sich die Reihenfolge
der Liste /dev/ttyUSBn ändert.
Mit Hilfe von UDEV können ab Kernel-Version 2.6
statt der Nummern virtuelle Bezeichnungen vergeben werden.
Fügen Sie folgende Zeilen in die Datei /etc/udev/rules.d/10-udev.rules
ein (evtl. müssen Sie die Datei erstellen):
Bis udev-Version 103:
KERNEL=="ttyUSB*", SYSFS{product}=="ELV FHZ 1300 PC", SYMLINK+="elv_fhz1300pc"
KERNEL=="ttyUSB*", SYSFS{product}=="ELV EM 1010 PC", SYMLINK+="elv_em1010pc"
Ab einschließlich Version 103 wurde "SYSFS" durch "ATTRS" ersetzt:
KERNEL=="ttyUSB*", ATTRS{product}=="ELV FHZ 1300 PC", SYMLINK+="elv_fhz1300pc"
KERNEL=="ttyUSB*", ATTRS{product}=="ELV EM 1010 PC", SYMLINK+="elv_em1010pc"
Um die Pfade /dev/elv_fhz1300pc
oder /dev/elv_em1010pc
in Ihrer FHEM Konfiguration verwenden zu können,
muss das Kernel-Modul ftdio_sio per "rmmod"/"modprobe" neu geladen werden.
Perl Device::SerialPort
Unter debian müssen Sie evtl. das Perl-Modul "Device::SerialPort" nachinstallieren:
apt-get install libdevice-serialport-perl
Logfile config
Eine Rotation der Datei fhem.log (logrotation) erreichen Sie durch Erweitern
der Datei /etc/logrotate.conf:
/var/log/fhem.log { missingok weekly copytruncate rotate 5 compress }