[Gelöst] Telldus Tellstick für Freetz kompilieren (FritzBox 7390)

Fred Edison

Neuer User
Mitglied seit
28 Jun 2010
Beiträge
24
Punkte für Reaktionen
0
Punkte
0
<edit on>
Der aktuelle Stand inkl. kleines HowTo ist Posting zu finden!
<edit off>



Moin moin,

ich lese schon seit längerer Zeit in diesem Forum mit und bin hellauf begeistert. Nun stehe ich vor dem Problem, dass ich meiner FritzBox 7390 einen Telldus Tellstick spendierte, um einen Teil in meiner Wohnung mit der FritzBox zu automatisieren. Leider ist es ca. 10 Jahre her, dass ich beruflich Makefiles geschrieben habe. Erschwerend kommt nun das Crosscompilen dazu. ;)

Vielleicht hat ja jemand Lust und kann mir dabei helfen.

Mein erstes Ziel ist, dass ich es manuell mit dem Freetz VMWare Image fehlerfrei kompiliert bekomme. Dann könnte ich mir vorstellen den zweiten Schritt zu versuchen, daraus ein Paket zu schnüren bzw. in ein HowTo zu giessen.

Auf meinem Debian habe ich folgende Anleitung erfolgreich umgesetzt.

Die Code Textfelder enthalten die Ausgabe oder den Inhalt von Dateien und können im ersten Schritt übersprungen werden.

Meine bereits durchgeführten Schritte:

1.Schritt: libConfuse
Die TellStick Software benötigt die Lib libConfuse.
  • Trunk von Freetz --> /home/freetz/freetz, einen Build angestossen ohne etwas zu ändern ausser der Zielarchitektur.
  • export PATH=/home/freetz/freetz/toolchain/target/bin:$PATH
  • confuse-2.7.tar.gz --> /home/freetz/confuse-2.7
  • ./configure CC="mips-linux-uclibc-gcc" CFLAGS="-Os -pipe -march=4kc -Wa,--trap" --build=i386-linux -gnu --target=mips-linux --host=mips-linux --prefix=/home/freetz/lib/
    Code:
    checking whether to enable maintainer-specific portions of Makefiles... no
    checking for a BSD-compatible install... /usr/bin/install -c
    checking whether build environment is sane... yes
    checking for mips-linux-strip... mips-linux-strip
    checking for a thread-safe mkdir -p... /bin/mkdir -p
    checking for gawk... gawk
    checking whether make sets $(MAKE)... yes
    checking for mips-linux-gcc... mips-linux-uclibc-gcc
    checking whether the C compiler works... yes
    checking for C compiler default output file name... a.out
    checking for suffix of executables...
    checking whether we are cross compiling... yes
    checking for suffix of object files... o
    checking whether we are using the GNU C compiler... yes
    checking whether mips-linux-uclibc-gcc accepts -g... yes
    checking for mips-linux-uclibc-gcc option to accept ISO C89... none needed
    checking for style of include used by make... GNU
    checking dependency style of mips-linux-uclibc-gcc... gcc3
    checking for flex... flex
    checking lex output file root... lex.yy
    checking lex library... none needed
    checking whether yytext is a pointer... no
    checking build system type... i386-pc-linux-gnu
    checking host system type... mips-unknown-linux-gnu
    checking for a sed that does not truncate output... /bin/sed
    checking for grep that handles long lines and -e... /bin/grep
    checking for egrep... /bin/grep -E
    checking for fgrep... /bin/grep -F
    checking for ld used by mips-linux-uclibc-gcc... /home/freetz/freetz/toolchain/build/mips_gcc-4.4.6_uClibc-0.9.29/mips-linux-uclibc/mips-linux-uclibc/bin/ld
    checking if the linker (/home/freetz/freetz/toolchain/build/mips_gcc-4.4.6_uClibc-0.9.29/mips-linux-uclibc/mips-linux-uclibc/bin/ld) is GNU ld... yes
    checking for BSD- or MS-compatible name lister (nm)... /home/freetz/freetz/toolchain/target/bin/mips-linux-nm -B
    checking the name lister (/home/freetz/freetz/toolchain/target/bin/mips-linux-nm -B) interface... BSD nm
    checking whether ln -s works... yes
    checking the maximum length of command line arguments... 1572864
    checking whether the shell understands some XSI constructs... yes
    checking whether the shell understands "+="... yes
    checking for /home/freetz/freetz/toolchain/build/mips_gcc-4.4.6_uClibc-0.9.29/mips-linux-uclibc/mips-linux-uclibc/bin/ld option to reload object files... -r
    checking for mips-linux-objdump... mips-linux-objdump
    checking how to recognize dependent libraries... pass_all
    checking for mips-linux-ar... mips-linux-ar
    checking for mips-linux-strip... (cached) mips-linux-strip
    checking for mips-linux-ranlib... mips-linux-ranlib
    checking command to parse /home/freetz/freetz/toolchain/target/bin/mips-linux-nm -B output from mips-linux-uclibc-gcc object... ok
    checking how to run the C preprocessor... mips-linux-uclibc-gcc -E
    checking for ANSI C header files... yes
    checking for sys/types.h... yes
    checking for sys/stat.h... yes
    checking for stdlib.h... yes
    checking for string.h... yes
    checking for memory.h... yes
    checking for strings.h... yes
    checking for inttypes.h... yes
    checking for stdint.h... yes
    checking for unistd.h... yes
    checking for dlfcn.h... yes
    checking for objdir... .libs
    checking if mips-linux-uclibc-gcc supports -fno-rtti -fno-exceptions... no
    checking for mips-linux-uclibc-gcc option to produce PIC... -fPIC -DPIC
    checking if mips-linux-uclibc-gcc PIC flag -fPIC -DPIC works... yes
    checking if mips-linux-uclibc-gcc static flag -static works... yes
    checking if mips-linux-uclibc-gcc supports -c -o file.o... yes
    checking if mips-linux-uclibc-gcc supports -c -o file.o... (cached) yes
    checking whether the mips-linux-uclibc-gcc linker (/home/freetz/freetz/toolchain/build/mips_gcc-4.4.6_uClibc-0.9.29/mips-linux-uclibc/mips-linux-uclibc/bin/ld) supports shared libraries... yes
    checking dynamic linker characteristics... GNU/Linux ld.so
    checking how to hardcode library paths into programs... immediate
    checking whether stripping libraries is possible... yes
    checking if libtool supports shared libraries... yes
    checking whether to build shared libraries... no
    checking whether to build static libraries... yes
    checking whether NLS is requested... yes
    checking for msgfmt... /usr/bin/msgfmt
    checking for gmsgfmt... /usr/bin/msgfmt
    checking for xgettext... /usr/bin/xgettext
    checking for msgmerge... /usr/bin/msgmerge
    checking for ld used by GCC... /home/freetz/freetz/toolchain/build/mips_gcc-4.4.6_uClibc-0.9.29/mips-linux-uclibc/mips-linux-uclibc/bin/ld
    checking if the linker (/home/freetz/freetz/toolchain/build/mips_gcc-4.4.6_uClibc-0.9.29/mips-linux-uclibc/mips-linux-uclibc/bin/ld) is GNU ld... yes
    checking for shared library run path origin... done
    checking for CFPreferencesCopyAppValue... no
    checking for CFLocaleCopyCurrent... no
    checking for GNU gettext in libc... no
    checking for iconv... yes
    checking for GNU gettext in libintl... no
    checking whether to use NLS... no
    checking for ANSI C header files... (cached) yes
    checking for unistd.h... (cached) yes
    checking for an ANSI C-conforming const... yes
    checking for strcasecmp... yes
    checking for strdup... yes
    checking for strndup... yes
    checking for library containing inet_ntoa... none required
    configure: creating ./config.status
    config.status: creating Makefile
    config.status: creating src/Makefile
    config.status: creating examples/Makefile
    config.status: creating po/Makefile.in
    config.status: creating m4/Makefile
    config.status: creating tests/Makefile
    config.status: creating doc/Makefile
    config.status: creating doc/Doxyfile
    config.status: creating libconfuse.pc
    config.status: creating libconfuse.spec
    config.status: creating config.h
    config.status: executing depfiles commands
    config.status: executing libtool commands
    config.status: executing po-directories commands
    config.status: creating po/POTFILES
    config.status: creating po/Makefile
  • ~/confuse-2.7$ make
    Code:
    make  all-recursive
    make[1]: Betrete Verzeichnis '/home/freetz/confuse-2.7'
    Making all in m4
    make[2]: Betrete Verzeichnis '/home/freetz/confuse-2.7/m4'
    make[2]: Für das Ziel »all« ist nichts zu tun.
    make[2]: Verlasse Verzeichnis '/home/freetz/confuse-2.7/m4'
    Making all in po
    make[2]: Betrete Verzeichnis '/home/freetz/confuse-2.7/po'
    make[2]: Für das Ziel »all« ist nichts zu tun.
    make[2]: Verlasse Verzeichnis '/home/freetz/confuse-2.7/po'
    Making all in src
    make[2]: Betrete Verzeichnis '/home/freetz/confuse-2.7/src'
    /bin/bash ../libtool --tag=CC   --mode=compile mips-linux-uclibc-gcc -DLOCALEDIR=\"/home/freetz/lib/share/locale\" -DHAVE_CONFIG_H -I. -I..     -Os -pipe -march=4kc -Wa,--trap -MT confuse.lo -MD -MP -MF .deps/confuse.Tpo -c -o confuse.lo confuse.c
    libtool: compile:  mips-linux-uclibc-gcc -DLOCALEDIR=\"/home/freetz/lib/share/locale\" -DHAVE_CONFIG_H -I. -I.. -Os -pipe -march=4kc -Wa,--trap -MT confuse.lo -MD -MP -MF .deps/confuse.Tpo -c confuse.c -o confuse.o
    mv -f .deps/confuse.Tpo .deps/confuse.Plo
    /bin/bash ../libtool --tag=CC   --mode=compile mips-linux-uclibc-gcc -DLOCALEDIR=\"/home/freetz/lib/share/locale\" -DHAVE_CONFIG_H -I. -I..     -Os -pipe -march=4kc -Wa,--trap -MT lexer.lo -MD -MP -MF .deps/lexer.Tpo -c -o lexer.lo lexer.c
    libtool: compile:  mips-linux-uclibc-gcc -DLOCALEDIR=\"/home/freetz/lib/share/locale\" -DHAVE_CONFIG_H -I. -I.. -Os -pipe -march=4kc -Wa,--trap -MT lexer.lo -MD -MP -MF .deps/lexer.Tpo -c lexer.c -o lexer.o
    mv -f .deps/lexer.Tpo .deps/lexer.Plo
    /bin/bash ../libtool --tag=CC   --mode=link mips-linux-uclibc-gcc  -Os -pipe -march=4kc -Wa,--trap   -o libconfuse.la -rpath /home/freetz/lib/lib confuse.lo lexer.lo
    libtool: link: mips-linux-ar cru .libs/libconfuse.a  confuse.o lexer.o
    libtool: link: mips-linux-ranlib .libs/libconfuse.a
    libtool: link: ( cd ".libs" && rm -f "libconfuse.la" && ln -s "../libconfuse.la" "libconfuse.la" )
    make[2]: Verlasse Verzeichnis '/home/freetz/confuse-2.7/src'
    Making all in examples
    make[2]: Betrete Verzeichnis '/home/freetz/confuse-2.7/examples'
    mips-linux-uclibc-gcc -DHAVE_CONFIG_H -I. -I.. -I../src    -Os -pipe -march=4kc -Wa,--trap -MT simple.o -MD -MP -MF .deps/simple.Tpo -c -o simple.o simple.c
    mv -f .deps/simple.Tpo .deps/simple.Po
    /bin/bash ../libtool --tag=CC   --mode=link mips-linux-uclibc-gcc  -Os -pipe -march=4kc -Wa,--trap -L../src/  -o simple simple.o ../src/libconfuse.la
    libtool: link: mips-linux-uclibc-gcc -Os -pipe -march=4kc -Wa,--trap -o simple simple.o  -L/home/freetz/confuse-2.7/src ../src/.libs/libconfuse.a
    mips-linux-uclibc-gcc -DHAVE_CONFIG_H -I. -I.. -I../src    -Os -pipe -march=4kc -Wa,--trap -MT reread.o -MD -MP -MF .deps/reread.Tpo -c -o reread.o reread.c
    mv -f .deps/reread.Tpo .deps/reread.Po
    /bin/bash ../libtool --tag=CC   --mode=link mips-linux-uclibc-gcc  -Os -pipe -march=4kc -Wa,--trap -L../src/  -o reread reread.o ../src/libconfuse.la
    libtool: link: mips-linux-uclibc-gcc -Os -pipe -march=4kc -Wa,--trap -o reread reread.o  -L/home/freetz/confuse-2.7/src ../src/.libs/libconfuse.a
    mips-linux-uclibc-gcc -DHAVE_CONFIG_H -I. -I.. -I../src    -Os -pipe -march=4kc -Wa,--trap -MT ftpconf.o -MD -MP -MF .deps/ftpconf.Tpo -c -o ftpconf.o ftpconf.c
    mv -f .deps/ftpconf.Tpo .deps/ftpconf.Po
    /bin/bash ../libtool --tag=CC   --mode=link mips-linux-uclibc-gcc  -Os -pipe -march=4kc -Wa,--trap -L../src/  -o ftpconf ftpconf.o ../src/libconfuse.la
    libtool: link: mips-linux-uclibc-gcc -Os -pipe -march=4kc -Wa,--trap -o ftpconf ftpconf.o  -L/home/freetz/confuse-2.7/src ../src/.libs/libconfuse.a
    make[2]: Verlasse Verzeichnis '/home/freetz/confuse-2.7/examples'
    Making all in tests
    make[2]: Betrete Verzeichnis '/home/freetz/confuse-2.7/tests'
    make[2]: Für das Ziel »all« ist nichts zu tun.
    make[2]: Verlasse Verzeichnis '/home/freetz/confuse-2.7/tests'
    Making all in doc
    make[2]: Betrete Verzeichnis '/home/freetz/confuse-2.7/doc'
    make[2]: Für das Ziel »all« ist nichts zu tun.
    make[2]: Verlasse Verzeichnis '/home/freetz/confuse-2.7/doc'
    make[2]: Betrete Verzeichnis '/home/freetz/confuse-2.7'
    make[2]: Verlasse Verzeichnis '/home/freetz/confuse-2.7'
    make[1]: Verlasse Verzeichnis '/home/freetz/confuse-2.7'
  • ~/confuse-2.7$ make install
    Code:
    Making install in m4
    make[1]: Betrete Verzeichnis '/home/freetz/confuse-2.7/m4'
    make[2]: Betrete Verzeichnis '/home/freetz/confuse-2.7/m4'
    make[2]: Für das Ziel »install-exec-am« ist nichts zu tun.
    make[2]: Für das Ziel »install-data-am« ist nichts zu tun.
    make[2]: Verlasse Verzeichnis '/home/freetz/confuse-2.7/m4'
    make[1]: Verlasse Verzeichnis '/home/freetz/confuse-2.7/m4'
    Making install in po
    make[1]: Betrete Verzeichnis '/home/freetz/confuse-2.7/po'
    if test "confuse" = "gettext-tools"; then \
              /bin/mkdir -p /home/freetz/lib/share/gettext/po; \
              for file in Makefile.in.in remove-potcdate.sin quot.sed boldquot.sed [email protected] [email protected] insert-header.sin Rules-quot   Makevars.template; do \
                /usr/bin/install -c -m 644 ./$file \
                                /home/freetz/lib/share/gettext/po/$file; \
              done; \
              for file in Makevars; do \
                rm -f /home/freetz/lib/share/gettext/po/$file; \
              done; \
            else \
              : ; \
            fi
    make[1]: Verlasse Verzeichnis '/home/freetz/confuse-2.7/po'
    Making install in src
    make[1]: Betrete Verzeichnis '/home/freetz/confuse-2.7/src'
    make[2]: Betrete Verzeichnis '/home/freetz/confuse-2.7/src'
    test -z "/home/freetz/lib/lib" || /bin/mkdir -p "/home/freetz/lib/lib"
     /bin/bash ../libtool   --mode=install /usr/bin/install -c   libconfuse.la '/home/freetz/lib/lib'
    libtool: install: /usr/bin/install -c .libs/libconfuse.lai /home/freetz/lib/lib/libconfuse.la
    libtool: install: /usr/bin/install -c .libs/libconfuse.a /home/freetz/lib/lib/libconfuse.a
    libtool: install: chmod 644 /home/freetz/lib/lib/libconfuse.a
    libtool: install: mips-linux-ranlib /home/freetz/lib/lib/libconfuse.a
    libtool: finish: PATH="/home/freetz/freetz/toolchain/target/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/sbin" ldconfig -n /home/freetz/lib/lib
    ----------------------------------------------------------------------
    Libraries have been installed in:
       /home/freetz/lib/lib
    
    If you ever happen to want to link against installed libraries
    in a given directory, LIBDIR, you must either use libtool, and
    specify the full pathname of the library, or use the `-LLIBDIR'
    flag during linking and do at least one of the following:
       - add LIBDIR to the `LD_LIBRARY_PATH' environment variable
         during execution
       - add LIBDIR to the `LD_RUN_PATH' environment variable
         during linking
       - use the `-Wl,-rpath -Wl,LIBDIR' linker flag
       - have your system administrator add LIBDIR to `/etc/ld.so.conf'
    
    See any operating system documentation about shared libraries for
    more information, such as the ld(1) and ld.so(8) manual pages.
    ----------------------------------------------------------------------
    test -z "/home/freetz/lib/include" || /bin/mkdir -p "/home/freetz/lib/include"
     /usr/bin/install -c -m 644 confuse.h '/home/freetz/lib/include'
    make[2]: Verlasse Verzeichnis '/home/freetz/confuse-2.7/src'
    make[1]: Verlasse Verzeichnis '/home/freetz/confuse-2.7/src'
    Making install in examples
    make[1]: Betrete Verzeichnis '/home/freetz/confuse-2.7/examples'
    make[2]: Betrete Verzeichnis '/home/freetz/confuse-2.7/examples'
    make[2]: Für das Ziel »install-exec-am« ist nichts zu tun.
    make[2]: Für das Ziel »install-data-am« ist nichts zu tun.
    make[2]: Verlasse Verzeichnis '/home/freetz/confuse-2.7/examples'
    make[1]: Verlasse Verzeichnis '/home/freetz/confuse-2.7/examples'
    Making install in tests
    make[1]: Betrete Verzeichnis '/home/freetz/confuse-2.7/tests'
    make[2]: Betrete Verzeichnis '/home/freetz/confuse-2.7/tests'
    make[2]: Für das Ziel »install-exec-am« ist nichts zu tun.
    make[2]: Für das Ziel »install-data-am« ist nichts zu tun.
    make[2]: Verlasse Verzeichnis '/home/freetz/confuse-2.7/tests'
    make[1]: Verlasse Verzeichnis '/home/freetz/confuse-2.7/tests'
    Making install in doc
    make[1]: Betrete Verzeichnis '/home/freetz/confuse-2.7/doc'
    make[2]: Betrete Verzeichnis '/home/freetz/confuse-2.7/doc'
    make[2]: Für das Ziel »install-exec-am« ist nichts zu tun.
    make[2]: Für das Ziel »install-data-am« ist nichts zu tun.
    make[2]: Verlasse Verzeichnis '/home/freetz/confuse-2.7/doc'
    make[1]: Verlasse Verzeichnis '/home/freetz/confuse-2.7/doc'
    make[1]: Betrete Verzeichnis '/home/freetz/confuse-2.7'
    make[2]: Betrete Verzeichnis '/home/freetz/confuse-2.7'
    make[2]: Für das Ziel »install-exec-am« ist nichts zu tun.
    test -z "/home/freetz/lib/lib/pkgconfig" || /bin/mkdir -p "/home/freetz/lib/lib/pkgconfig"
     /usr/bin/install -c -m 644 libconfuse.pc '/home/freetz/lib/lib/pkgconfig'
    make[2]: Verlasse Verzeichnis '/home/freetz/confuse-2.7'
    make[1]: Verlasse Verzeichnis '/home/freetz/confuse-2.7'
  • Inhalt /home/freetz/lib/
    Code:
    /home/freetz/lib/include/confuse.h
    /home/freetz/lib/lib/libconfuse.a
    /home/freetz/lib/lib/libconfuse.la
    /home/freetz/lib/lib/pkgconfig/libconfuse.pc
Soweit sieht es mit der libconfuse gut aus. Ich wundere mich nur ein wenig, dass unter /home/freetz/lib/lib/ mehrere Dateien liegen. Ich hätte eine einzelne Datei erwartet. Ich kenne mich zwar mit Linux aus, aber wie eine Lib im Detail unter Linux aussieht, weiss ich nicht.

2.Schritt: telldus-core
  • export LD_LIBRARY_PATH=/home/freetz/lib/lib:$LD_LIBRARY_PATH
  • telldus-core-2.0.4.tar.gz herunterladen.
  • telldus-core-2.0.4.tar.gz --> /home/freetz/telldus-core-2.0.4
  • /home/freetz/telldus-core-2.0.4/toolchain erstellt
    Code:
     # this one is important
        SET(CMAKE_SYSTEM_NAME Linux)
        #this one not so much
        SET(CMAKE_SYSTEM_VERSION 1)
    
        # specify the cross compiler
        SET(CMAKE_C_COMPILER   /home/freetz/freetz/toolchain/target/bin/mips-linux-uclibc-gcc)
        SET(CMAKE_CXX_COMPILER /home/freetz/freetz/toolchain/target/bin/mips-linux-uclibc-g++)
    
        # where is the target environment
        SET(CMAKE_FIND_ROOT_PATH  /home/freetz/telldus-core)
    
        # search for programs in the build host directories
        SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
        # for libraries and headers in the target directories
        SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY /home/freetz/lib/lib/)
        SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE /home/freetz/lib/include)
  • ~/telldus-core-2.0.4$ cmake -DCMAKE_TOOLCHAIN_FILE=toolchain .
    Code:
    -- The C compiler identification is GNU
    -- The CXX compiler identification is GNU
    -- Check for working C compiler: /home/freetz/freetz/toolchain/target/bin/mips-linux-uclibc-gcc
    -- Check for working C compiler: /home/freetz/freetz/toolchain/target/bin/mips-linux-uclibc-gcc -- works
    -- Detecting C compiler ABI info
    -- Detecting C compiler ABI info - done
    -- Check for working CXX compiler: /home/freetz/freetz/toolchain/target/bin/mips-linux-uclibc-g++
    -- Check for working CXX compiler: /home/freetz/freetz/toolchain/target/bin/mips-linux-uclibc-g++ -- works
    -- Detecting CXX compiler ABI info
    -- Detecting CXX compiler ABI info - done
    -- Configuring done
    -- Generating done
    -- Build files have been written to: /home/freetz/telldus-core-2.0.4
  • ~/telldus-core-2.0.4$ make
    Code:
    Scanning dependencies of target telldus-core
    [  4%] Building CXX object driver/libtelldus-core/CMakeFiles/telldus-core.dir/Device.cpp.o
    [  9%] Building CXX object driver/libtelldus-core/CMakeFiles/telldus-core.dir/DeviceBrateck.cpp.o
    [ 13%] Building CXX object driver/libtelldus-core/CMakeFiles/telldus-core.dir/DeviceEverflourish.cpp.o
    [ 18%] Building CXX object driver/libtelldus-core/CMakeFiles/telldus-core.dir/DeviceFuhaote.cpp.o
    [ 22%] Building CXX object driver/libtelldus-core/CMakeFiles/telldus-core.dir/DeviceGroup.cpp.o
    [ 27%] Building CXX object driver/libtelldus-core/CMakeFiles/telldus-core.dir/DeviceIkea.cpp.o
    [ 31%] Building CXX object driver/libtelldus-core/CMakeFiles/telldus-core.dir/DeviceNexa.cpp.o
    [ 36%] Building CXX object driver/libtelldus-core/CMakeFiles/telldus-core.dir/DeviceRisingSun.cpp.o
    [ 40%] Building CXX object driver/libtelldus-core/CMakeFiles/telldus-core.dir/DeviceSartano.cpp.o
    [ 45%] Building CXX object driver/libtelldus-core/CMakeFiles/telldus-core.dir/DeviceUndefined.cpp.o
    [ 50%] Building CXX object driver/libtelldus-core/CMakeFiles/telldus-core.dir/DeviceUpm.cpp.o
    [ 54%] Building CXX object driver/libtelldus-core/CMakeFiles/telldus-core.dir/DeviceWaveman.cpp.o
    [ 59%] Building CXX object driver/libtelldus-core/CMakeFiles/telldus-core.dir/DeviceX10.cpp.o
    [ 63%] Building CXX object driver/libtelldus-core/CMakeFiles/telldus-core.dir/DeviceYidong.cpp.o
    [ 68%] Building CXX object driver/libtelldus-core/CMakeFiles/telldus-core.dir/Controller.cpp.o
    [ 72%] Building CXX object driver/libtelldus-core/CMakeFiles/telldus-core.dir/Manager.cpp.o
    [ 77%] Building CXX object driver/libtelldus-core/CMakeFiles/telldus-core.dir/Settings.cpp.o
    [ 81%] Building CXX object driver/libtelldus-core/CMakeFiles/telldus-core.dir/telldus-core.cpp.o
    [ 86%] Building CXX object driver/libtelldus-core/CMakeFiles/telldus-core.dir/SettingsConfuse.cpp.o
    [COLOR="red"]/home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:13:21: error: confuse.h: No such file or directory
    [/COLOR]/home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:21: error: ISO C++ forbids declaration of 'cfg_t' with no type
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:21: error: expected ';' before '*' token
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:22: error: ISO C++ forbids declaration of 'cfg_t' with no type
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:22: error: expected ';' before '*' token
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:25: error: 'cfg_t' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:25: error: 'cfg' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:26: error: 'cfg_t' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:26: error: 'cfg' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp: In constructor 'Settings::Settings()':
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:37: error: 'class privateVars' has no member named 'cfg'
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:37: error: 'readConfig' cannot be used as a function
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:38: error: 'class privateVars' has no member named 'var_cfg'
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:38: error: 'readVarConfig' cannot be used as a function
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp: In destructor 'Settings::~Settings()':
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:46: error: 'class privateVars' has no member named 'cfg'
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:47: error: 'class privateVars' has no member named 'cfg'
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:47: error: 'cfg_free' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:49: error: 'class privateVars' has no member named 'var_cfg'
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:50: error: 'class privateVars' has no member named 'var_cfg'
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:50: error: 'cfg_free' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp: In member function 'std::string Settings::getSetting(const std::string&) const':
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:59: error: 'class privateVars' has no member named 'cfg'
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:60: error: 'class privateVars' has no member named 'cfg'
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:60: error: 'cfg_getstr' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp: In member function 'int Settings::getNumberOfDevices() const':
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:69: error: 'class privateVars' has no member named 'cfg'
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:70: error: 'class privateVars' has no member named 'cfg'
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:70: error: 'cfg_size' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp: In member function 'int Settings::getDeviceId(int) const':
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:79: error: 'cfg_t' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:79: error: 'cfg_device' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:79: error: 'class privateVars' has no member named 'cfg'
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:79: error: 'cfg_getnsec' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:80: error: 'cfg_getint' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp: In member function 'int Settings::addDevice()':
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:90: error: 'fopen' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:91: error: 'class privateVars' has no member named 'cfg'
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:91: error: 'cfg_print' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:92: error: 'fprintf' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:93: error: 'fclose' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:96: error: 'class privateVars' has no member named 'cfg'
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:96: error: 'cfg_free' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:97: error: 'class privateVars' has no member named 'cfg'
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:97: error: 'readConfig' cannot be used as a function
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp: In member function 'int Settings::getNextDeviceId() const':
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:106: error: 'cfg_t' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:106: error: 'cfg_device' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:107: error: 'class privateVars' has no member named 'cfg'
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:107: error: 'cfg_size' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:108: error: 'class privateVars' has no member named 'cfg'
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:108: error: 'cfg_getnsec' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:109: error: 'cfg_getint' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp: In member function 'bool Settings::removeDevice(int)':
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:122: error: 'fopen' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:125: error: 'class privateVars' has no member named 'cfg'
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:128: error: 'class privateVars' has no member named 'cfg'
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:129: error: 'class privateVars' has no member named 'cfg'
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:129: error: 'cfg_opt_print' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:132: error: 'cfg_t' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:132: error: 'cfg_device' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:133: error: 'class privateVars' has no member named 'cfg'
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:133: error: 'cfg_size' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:134: error: 'class privateVars' has no member named 'cfg'
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:134: error: 'cfg_getnsec' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:135: error: 'cfg_getint' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:136: error: 'fprintf' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:137: error: 'cfg_print_indent' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:143: error: 'fclose' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:146: error: 'class privateVars' has no member named 'cfg'
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:146: error: 'cfg_free' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:147: error: 'class privateVars' has no member named 'cfg'
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:147: error: 'readConfig' cannot be used as a function
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp: In member function 'bool Settings::setDeviceState(int, int, const std::string&)':
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:153: error: 'class privateVars' has no member named 'var_cfg'
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:156: error: 'cfg_t' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:156: error: 'cfg_device' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:157: error: 'class privateVars' has no member named 'var_cfg'
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:157: error: 'cfg_size' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:158: error: 'class privateVars' has no member named 'var_cfg'
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:158: error: 'cfg_getnsec' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:159: error: 'cfg_title' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:161: error: 'cfg_setint' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:162: error: 'cfg_setstr' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:164: error: 'fopen' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:165: error: 'class privateVars' has no member named 'var_cfg'
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:165: error: 'cfg_print' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:166: error: 'fclose' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:171: error: 'fopen' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:172: error: 'class privateVars' has no member named 'var_cfg'
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:172: error: 'cfg_print' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:173: error: 'fprintf' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:174: error: 'fclose' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:177: error: 'class privateVars' has no member named 'var_cfg'
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:177: error: 'cfg_free' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:178: error: 'class privateVars' has no member named 'var_cfg'
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:178: error: 'readVarConfig' cannot be used as a function
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp: In member function 'int Settings::getDeviceState(int) const':
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:184: error: 'class privateVars' has no member named 'var_cfg'
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:187: error: 'cfg_t' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:187: error: 'cfg_device' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:188: error: 'class privateVars' has no member named 'var_cfg'
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:188: error: 'cfg_size' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:189: error: 'class privateVars' has no member named 'var_cfg'
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:189: error: 'cfg_getnsec' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:190: error: 'cfg_title' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:192: error: 'cfg_getint' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp: In member function 'std::string Settings::getDeviceStateValue(int) const':
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:199: error: 'class privateVars' has no member named 'var_cfg'
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:202: error: 'cfg_t' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:202: error: 'cfg_device' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:203: error: 'class privateVars' has no member named 'var_cfg'
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:203: error: 'cfg_size' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:204: error: 'class privateVars' has no member named 'var_cfg'
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:204: error: 'cfg_getnsec' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:205: error: 'cfg_title' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:207: error: 'cfg_getstr' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp: In member function 'std::string Settings::getStringSetting(int, const std::string&, bool) const':
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:215: error: 'class privateVars' has no member named 'cfg'
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:218: error: 'cfg_t' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:218: error: 'cfg_device' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:219: error: 'class privateVars' has no member named 'cfg'
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:219: error: 'cfg_size' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:220: error: 'class privateVars' has no member named 'cfg'
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:220: error: 'cfg_getnsec' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:221: error: 'cfg_getint' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:223: error: 'cfg_getsec' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:225: error: 'cfg_getstr' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp: In member function 'bool Settings::setStringSetting(int, const std::string&, const std::string&, bool)':
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:236: error: 'class privateVars' has no member named 'cfg'
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:239: error: 'cfg_t' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:239: error: 'cfg_device' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:240: error: 'class privateVars' has no member named 'cfg'
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:240: error: 'cfg_size' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:241: error: 'class privateVars' has no member named 'cfg'
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:241: error: 'cfg_getnsec' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:242: error: 'cfg_getint' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:244: error: 'cfg_parameters' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:244: error: 'cfg_getsec' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:245: error: 'cfg_setstr' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:247: error: 'cfg_setstr' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:249: error: 'fopen' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:250: error: 'class privateVars' has no member named 'cfg'
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:250: error: 'cfg_print' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:251: error: 'fclose' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp: In member function 'int Settings::getIntSetting(int, const std::string&, bool) const':
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:259: error: 'class privateVars' has no member named 'cfg'
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:262: error: 'cfg_t' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:262: error: 'cfg_device' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:263: error: 'class privateVars' has no member named 'cfg'
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:263: error: 'cfg_size' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:264: error: 'class privateVars' has no member named 'cfg'
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:264: error: 'cfg_getnsec' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:265: error: 'cfg_getint' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:267: error: 'cfg_getsec' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp: In member function 'bool Settings::setIntSetting(int, const std::string&, int, bool)':
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:276: error: 'class privateVars' has no member named 'cfg'
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:279: error: 'cfg_t' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:279: error: 'cfg_device' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:280: error: 'class privateVars' has no member named 'cfg'
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:280: error: 'cfg_size' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:281: error: 'class privateVars' has no member named 'cfg'
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:281: error: 'cfg_getnsec' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:282: error: 'cfg_getint' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:284: error: 'cfg_parameters' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:284: error: 'cfg_getsec' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:285: error: 'cfg_setint' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:287: error: 'cfg_setint' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:289: error: 'fopen' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:290: error: 'class privateVars' has no member named 'cfg'
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:290: error: 'cfg_print' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:291: error: 'fclose' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp: At global scope:
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:299: error: redefinition of 'bool readConfig'
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:25: error: 'bool readConfig' previously defined here
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:299: error: 'cfg_t' was not declared in this scope
    /home/freetz/telldus-core-2.0.4/driver/libtelldus-core/SettingsConfuse.cpp:299: error: 'cfg' was not declared in this scope
    make[2]: *** [driver/libtelldus-core/CMakeFiles/telldus-core.dir/SettingsConfuse.cpp.o] Fehler 1
    make[1]: *** [driver/libtelldus-core/CMakeFiles/telldus-core.dir/all] Fehler 2
    make: *** [all] Fehler 2

Beim Kompilieren der Datei SettingsConfuse.cpp tritt dann das Problem auf. Es trat auch schon auf, als ich es das erste Mal auf meinem Debian ausprobierte. Nachdem ich die Pakete libconfuse0 und libconfuse-dev installierte, lief es dann durch.

Es wird der Header nicht gefunden (Die Deklaration 'cfg_t' befindet sich in der Datei /home/freetz/lib/include/confuse.h). Das kann natürlich verschiedene Gründe haben. Entweder habe ich die libconfuse falsch gebaut oder ich habe noch nicht die Stelle gefunden, an der ich dem Compiler die Stelle für die Lib und/oder den Header unterjubeln kann, da das Makefile von cmake generiert wurde.

Vielleicht springt jemandem das Problem ins Auge und kann mir dabei helfen bzw. den Schups in die richtige Richtung geben.

Vielen Dank.

Der Fred
 
Zuletzt bearbeitet:
Schau doch mal bei Openwrt rein: in diesem Paket ist ein Patch, der scheinbar in "driver/libtelldus-core/CMakeLists.txt" genau das Problem adressiert.

Wenn du da die Pfade passend setzt...

Jörg

PS: Die angehängte Datei sollte zuzmindest für freetz die confuse-Library bauen (entpackt nach make/libs/; ist aber nicht groß getestet)
 

Anhänge

  • confuse.mk.gz
    429 Bytes · Aufrufe: 4
Zuletzt bearbeitet:
Vielen Dank!

So nach ein paar Stunden und ein paar Flüchtigkeitsfehlern habe ich es zumindest geschafft, den ersten Schritt (libconfuse) in den Buildprozess zu integrieren.

Ich kriege zwar noch folgende Meldung, aber darum kümmere ich mich später. Die libconfuse.a ist da und ich habe ein wenig dazugelernt.
Code:
processing external
    /usr/lib/freetz/libconfuse.a... not found & linked

Dann mache ich mich mal an den zweiten Teil ran.

<1. edit on>
Ach so, gibt es einen Trick, wie man den Bauprozess einer Lib triggern kann?
Nach einem "distclean" lädt der Prozess alles neu runter baut auch alles neu. Das nahm immer sehr viel Zeit in Anspruch, wenn ich meine Fehler korrigieren und testen wollte. Ein normales clean reichte leider nicht.
<1. edit off>

<2. edit on>
kleines Update:
Ohne den OpenWRT-Patch durchgeführt zu haben, komme ich mit dem Kompilieren des telldus-core-2.0.4 weiter. Es findet die confuse.h und die Deklarationen. Nun habe ich das Problem, dass beim Linken ein Problem auftaucht. Ich vermute mal, dass der Programmcode mit verschiedenen Compilern bzw. Parametern durchgeführt wurde. Vielleicht hat ja jemand eine Idee, parallel begebe ich mich auf die Suche.

Code:
...
[ 90%] Building CXX object driver/libtelldus-core/CMakeFiles/telldus-core.dir/linux/Device.cpp.o
Linking CXX shared library libtelldus-core.so
/home/freetz/freetz/toolchain/build/mips_gcc-4.4.6_uClibc-0.9.29/mips-linux-uclibc/bin-ccache/../lib/gcc/mips-linux-uclibc/4.4.6/../../../../mips-linux-uclibc/bin/ld: /home/freetz/freetz/toolchain/build/mips_gcc-4.4.6_uClibc-0.9.29/mips-linux-uclibc/bin-ccache/../lib/gcc/mips-linux-uclibc/4.4.6/../../../../mips-linux-uclibc/lib/libconfuse.a(confuse.o): relocation R_MIPS_26 against `a local symbol' can not be used when making a shared object; recompile with -fPIC
/home/freetz/freetz/toolchain/build/mips_gcc-4.4.6_uClibc-0.9.29/mips-linux-uclibc/bin-ccache/../lib/gcc/mips-linux-uclibc/4.4.6/../../../../mips-linux-uclibc/lib/libconfuse.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
make[2]: *** [driver/libtelldus-core/libtelldus-core.so.2.0.4] Fehler 1
make[1]: *** [driver/libtelldus-core/CMakeFiles/telldus-core.dir/all] Fehler 2
make: *** [all] Fehler 2
<2. edit off>

<3. edit on>
kleines Update:
Ich habe den OpenWRT Patch eingespielt und mir das make-File angesehen und folgenden Befehle auf der Konsole ausgeführt.
cmake -DCMAKE_TOOLCHAIN_FILE=toolchain -DBUILD_RFCMD=0 -DCMAKE_INSTALL_PREFIX=/usr -DBUILD_LIBTELLDUS-CORE=1 -DBUILD_TDTOOL=1 -DSUPPORT_TELLSTICK_DUO=0 -DSUPPORT_USB=0 -DGENERATE_MAN=0 -DUSE_QT_SETTINGS_BACKEND=0 -DCONFUSE_LIBRARY=/home/freetz/freetz/toolchain/build/mips_gcc-4.4.6_uClibc-0.9.29/mips-linux-uclibc/lib/libconfuse.a
make
Ergebnis wie beim 2. Update.

Ich gucke mal, ob die Parameter für den Compiler, die beim Bauen des freetz-Images (bzw. libconfuse.a) verwendet werden fehlen.

<3. edit off>

Grüsse
 
Zuletzt bearbeitet:
Was hast du denn sonst noch gemacht/geändert, damit das "confuse.h" jetzt gefunden wird?
Nutzt du "deine" gebaute Lib oder die mit dem obrigen Makefile gebaute?

Ach so, gibt es einen Trick, wie man den Bauprozess einer Lib triggern kann?
Aus freetz heraus? Eigentlich sollte ein "make <wasauchimmer>-clean; make <wasauchimmer>-precompiled" für das Paket oder die Lib "<wasauchimmer>" genau das tun.

Zwei Tricks um das noch zu erreichen: Die Datei "<wasauchimmer>.mk" verändern oder (ganz hart) im Ordner source/target<deine Toolchaindetails>/ alles, was zu dem Paket oder der Lib gehört (inclusive der versteckten Dateien mit Punkt am Anfang) löschen.

Jörg
 
Hier mal ein "Komplettpaket", das sollte die beiden Dinge bauen. Mit dem darin enthaltenen Patch sollten die Dinge sogar über das menu (unter "Testing") zu finden sein. Ob das Ergebnis funktioniert, weiß ich aber nicht...

Jörg
 

Anhänge

  • telldus_und_confuse.tgz
    2 KB · Aufrufe: 10
Vielen Dank! Das sieht schon mal sehr gut aus! :groesste:

Das "make menuconfig" hat nicht automatisch den Eintrag hinzugefügt, aber das war die kleinste Kür! Das telldus Paket (inkl. der Lib confuse) wird nun komplett kompiliert.

Das ist schon mal super! Wenn alles läuft, werde ich das alles nochmal zusammenfassen!

Es gibt zwar noch ein paar Probleme mit dem Kopieren einiger telldus Dateien, aber die Stelle in den cMake-Dateien habe ich auch schon lokalisiert. Bevor ich die Dateien automatisch patche (die richtige Stelle wird wohl make/telldus-core/patches sein!?) und die fehlenden Dateien einfach an die "richtige" Stellen kopieren lasse, muss ich mich erstmal reinlesen, welche Dateipfade auf der FritzBox im SquashFS liegen und was der "Best Practice" mit Konfigurationsdateien unter freetz ist.

Es handelt sich um die folgenden Dateien, die kopiert werden.

Code:
[COLOR="seagreen"]Pfad ist in Ordnung[/COLOR] 
[COLOR="red"]der Pfad scheint sinnlos zu sein.[/COLOR] 

[COLOR="seagreen"]/home/freetz/freetz/toolchain/build/mips_gcc-4.4.6_uClibc-0.9.29/mips-linux-uclibc/usr/lib/libtelldus-core.so.2.0.4
/home/freetz/freetz/toolchain/build/mips_gcc-4.4.6_uClibc-0.9.29/mips-linux-uclibc/usr/lib/libtelldus-core.so.2
/home/freetz/freetz/toolchain/build/mips_gcc-4.4.6_uClibc-0.9.29/mips-linux-uclibc/usr/lib/libtelldus-core.so
/home/freetz/freetz/toolchain/build/mips_gcc-4.4.6_uClibc-0.9.29/mips-linux-uclibc/usr/include/telldus-core.h[/COLOR]
[COLOR="red"]/home/freetz/freetz/toolchain/build/mips_gcc-4.4.6_uClibc-0.9.29/mips-linux-uclibc/usr/etc/tellstick.conf[/COLOR] - Diese Datei enthält die Konfiguration aller Empfänger. Der Ort [i]/etc[/i] macht relativ wenig Sinn, da das [i]/etc[/i] Verzeichnis im SquashFS liegt und nicht modifizierbar ist. Diese Konfigurationsdatei sollte per Konsole und später, wenn es funktioniert, per freetz-Weboberfläche konfigurierbar sein (wäre mein übernächster Schritt). Da gucke ich mir mal vorhandene Projekte an.
[COLOR="red"]/home/freetz/freetz/toolchain/build/mips_gcc-4.4.6_uClibc-0.9.29/mips-linux-uclibc/usr/var/state/telldus-core.conf[/COLOR] - Hier handelt es sich nur um eine Kopie von [i]/home/freetz/freetz/toolchain/build/mips_gcc-4.4.6_uClibc-0.9.29/mips-linux-uclibc/usr/etc/tellstick.conf[/i]
[COLOR="seagreen"]/home/freetz/freetz/toolchain/build/mips_gcc-4.4.6_uClibc-0.9.29/mips-linux-uclibc/usr/etc/udev/rules.d/99-tellstick.rules
/home/freetz/freetz/toolchain/build/mips_gcc-4.4.6_uClibc-0.9.29/mips-linux-uclibc/usr/bin/tdtool
[/COLOR]

Am Wochenende werde ich das FW-Image mal testen und mich dann nochmal melden. Ich denke, dass ich mit der udev-Regel noch Probleme bekommen werde, zumindest hatte ich das unter Debian.

Kurz noch zu Deinen vorherigen Fragen.

Der Compiler hat die richtigen Dateien (Lib und Header) aus dem toolchain-Ordner genommen. Ich habe Deine erstellte confuse.mk nach make/libs kopiert und die make/libs/Config.in und die make/libs/Makefile.in angepasst, damit ich die Lib über das "make menuconfig" auswählen konnte. Da wohl die Pfade zu den Headern und zu den Libs im toolchain-Ordner im Compiler automatisch gesetzt waren, schien mir das in Ordnung zu sein.

Danke nochmal! To be continued ... :D

Carsten
 
Zuletzt bearbeitet:
Bevor ich die Dateien automatisch patche (die richtige Stelle wird wohl make/telldus-core/patches sein!?) und die fehlenden Dateien einfach an die "richtige" Stellen kopieren lasse, muss ich mich erstmal reinlesen, welche Dateipfade auf der FritzBox im SquashFS liegen und was der "Best Practice" mit Konfigurationsdateien unter freetz ist.
Ja, da gehören Patches hin. Alles, was dort liegt und <xx>.patch heißt, wird dann angewandt...

Alles, was unter /etc/ liegt ist erstmal nicht editierbar. Die "normale" Logik von Freetz baut mit einem Shellskript (/etc/default.<Paket>/<Paket>_conf) die Config-Datei /mod/etc/<Paket>.conf. Wenn man beim Aufruf eine solche Datei mitgeben kann, wäre das eine Lösung (so machen das die Pakete mit einer GUI, in der man Parameter einträgt). Für wenige Einträge ist das etwas "oversized".
Alternativ kann man eine "veränderbare Datei" erzeugen lassen, die dann direkt auf der Box in einem Textfeld editiert und als Config-Datei genutzt werden kann.
Dazu wird (ebenfalls in /etc/default.<Paket>/) eine XY.def Datei angelegt, die den Ort, abspeichern usw. festlegt.
Das Paket "OpenVPN" nutzt z.B. beides, eine "Konfig-GUI" für die eigentlichen Parameter und Files für Zertifikate und Schlüssel. Der Rest ist dabei zwar verwirrend, aber die Lage der Dateien und der Inhalt werden vielleicht klarer ;)

Um das in der GUI sichtbar zu machen, werden sowohl eine "GUI" (ein cgi) oder eine Datei mit dem Befehl "modreg" registriert.

Aber für den Anfang tut es natürlich immer auch ein "händischer" Aufruf ganz ohne GUI. Du kannst kleinere(!) Dateien auch in /tmp/flash/ ablegen und mittels Aufruf von "modsave flash" auch resetfest machen...

Jörg
 
Vielen Dank.

Ich werde mir das alles mal zu Gemüte führen und habe mir schon ein paar Pakete und deren Umsetzung angesehen und es ein wenig einfliessen lassen. Soeben habe ich aber beschlossen, den Test des Images zu verschieben, da ich gerade gesehen habe, dass ich mich mit mdev und/oder hotplug mal auseinandersetzen muss, bevor es überhaupt funktionieren kann. Ein zwei Threads über das mdev Paket lassen vermuten, dass das nicht so funktioniert, wie ich es brauche.

Da ich recht viel Erfahrungen im Bricken diverser Hardware :mrgreen: (selbst Recovery funktionierte nicht mehr, zum Glück immer ohne Langzeitfolgen) habe und mein Telefon und DSL im Problemfall nicht funktioniert, habe mich mir nun eine gebrauchte "7170 Fon WLAN FritzBox" als Bastelbox bestellt. Ich habe keine Lust mehr, den Lötkolben schwingen oder mich irgendiwe anders verrenken zu müssen<1. edit on>, damit die Hardware wieder funktioniert<1. edit off>. :cool:

to be continued ....

Grüsse
Carsten
 
Zuletzt bearbeitet:
Ich habe nun meine Bastelbox bekommen und habe mich die Tage ausgiebig mit der Buildumgebung und dem Freetz-Image herumgeschlagen, leider nicht mit einem durchschlagenden Erfolg. :(

Das Kompilieren funktioniert einwandfrei!

1. sekundäres Problem

Wenn ich das Tool tdtool aufrufe, sucht das Tool in den falschen Pfaden die Libs.

Während die Libs libtelldus-core.so.2 und libuClibc++.so.0 in dem Ordner /usr/lib/freetz vorhanden sind fehlt die Lib libconfuse.so.0 komplett.

In folgenden Pfaden sucht tdtool die Libs. (modifizierter Output von strace)

Code:
/home/freetz/build/source/target-mipsel_uClibc-0.9.29/telldus-core-2.0.4/driver/libtelldus-core/libtelldus-core.so.2
/mod/lib/libtelldus-core.so.2
/lib/libtelldus-core.so.2
/usr/lib/libtelldus-core.so.2
/usr/X11R6/lib/libtelldus-core.so.2

Ich habe bereits für beide Probleme versucht die Build-Umgebung zu verstehen, um die richtigen Stelle in den Makefiles zu finden , aber das ist ja alles so dynamisch, dass ich erstmal aufgegeben habe. Was die fehlende libconfuse.so.0 angeht, bekomme ich in dem Part, in dem das Image zusammengebaut wird, eine Warnung, dass die lib confuse nicht gefunden werden kann. Na ja, heissen tut sie ja auch "libconfuse". Das Projekt heisst ja nur "confuse".

Fürs erste kann ich mit meinem Workaround leben. Ich habe einfach nach /mod/lib/ symbolische Links auf die richtigen Libs erstellt und die libconfuse.so.0 kopiert. tdtool läuft zumindest durch, auch wenn es nicht das macht, was es machen soll.

Vielleicht hat ja jemand eine Idee, wo ich mal nachsehen kann!?


2. primäres Problem

Laut Anleitung soll ich ein "modprobe ftdi_sio vendor=0x1781 product=0x0c30" durchführen, was mit dem Fehler "modprobe: can't load module ftdi_sio (kernel/drivers/usb/serial/ftdi_sio.ko): unknown symbol in module, or unknown parameter" quittiert wird. Ein "modprobe ftdi_sio" funktioniert dahingehend einwandfrei und das Modul wurde auch geladen.

Soweit ich es verstanden habe, sollte ohne udev (Bereich UDEV in der anleitung) hinter einem /dev/ttyUSB0 der USB-Stick erreichbar sein, da ich nur ein USB Device angeschlossen habe. udev sorgt ja nur dafür, dass ein "/dev/tellstick" anstelle von "/dev/ttyUSB[0-9]" angelegt wird.

Da ich wie oben beschrieben eine Fehlermeldung beim "modprobe ftdi_sio vendor=0x1781 product=0x0c30" bekomme, fürchte ich, dass das auch der Grund für die strace-Ausgabe von "tdtool --off 1" ist.
Code:
"open("/dev/ttyUSB0", O_RDWR)            = -1 ENODEV (No such device)".

<1. edit on>Das device ist aber vorhanden, ich weiss nur nicht, ob und wer dahinter lauscht. <1. edit off>

Ich habe verschiedene Zahlen für /dev/ttyUSB[0-9] ausprobiert, da ich zurzeit nicht weiss, wie ich herausfinden kann, welche USB Hardware wohin in /dev/ eingebunden wurde.

Habe ich etwas übersehen, gibt es noch andere Möglichkeiten zum Debuggen oder hat noch irgendjemand andere Ideen?

<2. edit on>Ok, ich sehe gerade, dass meine Bastelbox 7170 den Kernel 2.6.13.1 verwendet. In den Anleitungen von Telldus wird mindestens ein Kernel 2.6.14 vorrausgesetzt. Hmm, ob das nun ausschlagegebend ist!?<2. edit off>

Grüsse und Danke für die Hilfe
 
Zuletzt bearbeitet:
Oft hilft "$(PKG)_CONFIGURE_PRE_CMDS += $(call PKG_PREVENT_RPATH_HARDCODING,./configure)" im Makefile, wenn die RPATH Pfade falsch sind.

Kann es sein, dass das 2.6.13 ftdi_sio Modul diese Parameter nicht akzeptiert?

Gruß
Oliver
 
Bei Fehlern beim Laden von Modulen sollte man im syslog bzw. bei dmesg nachsehen, was das Problem ist.

Wenn das Modul ohne Parameter lödt und mit Parametern nicht, spricht es dafür, dass es die Parameter nicht kennt oder nicht mag.
 
Maaaaaaaaaaaaaannnnnnn, ich Vollidiot ..... :mrgreen:

Da dachte ich, mit der Bastelbox ist alles einfacher ... Pustekuche ... zwei Tage wegen der Kernelversion verbaselt. :doof: Anscheinend war es der Kernel, weswegen es nicht funktionierte. Die libconfuse wird komischeweise nun aber kopiert. :confused:

Dann werde ich mich mal an den Tipp von olistudent machen, vielleicht kriege ich das auch noch hin.

Vielen Dank.

Wenn das Package einen einigermassen stabilen Stand hat (keine Softlinks auf die Libs mehr nötig, eine sinnvolle Möglichkeit der Konfiguration), besteht dann ein Interesse, dass das Package Einzug in Freetz bekommt? Würde dann einen Patch zur Vefügung stellen!

Ach so, gibt es die Möglichkeit den Kernel der 7170er auf einen aktuelleren Kernel upzudaten (Replace Kernel) oder wird das schon daran scheitern, das AVM nicht alle Kernelsourcen freigibt? Ich würde gerne eine aktuellere Version flashen, bevor ich ständig meine 7390er immer flashen muss.

Danke und viele Grüsse

*glücklichdaslichtimschlafzimmerüberdieFritzBoxanundausschalt* :rock:
 
@RalfFriedle
Ok, danke für die Bestätigung.

So mal einen kurzen Zwischenstand. oli_student hat mir den entscheidenen Tipp gegeben, wobei das Herausfinden mit CMAKE nicht ganz so einfach war bzw. ich die Doku von CMAKE falsch verstanden habe. Nunja, nun funktioniert der Hauptteil (Tellstick ansprechen). Einige ToDos sind noch offen, für die ich noch etwas mehr Zeit benötige.

Getestet für die FritzBox 7390, Freetz Revision 7245, Telldus Tellstick

Es sollte auf jeder FritzBox laufen, die einen USB Anschluss hat und mindestens mit dem Kernel v2.6.14 läuft.

Anleitung:
1. Aktuelle Freetz-Sourcen auschecken.
2. In den Freetz-Ordner wechsel
3. Anhang (Anhang anzeigen telldus-core-2.0.4.patch.gz) in das Projekt patchen ( zcat telldus-core-2.0.4.patch.gz | patch -p0)
4. "make menuconfig"
4 a. Package Selection --> Testing --> [x] telldus-core
<---ab hier sollte alles automatisch aktiviert werden --->
4 b. Advanced Option --> Kernel Modules --> Drivers --> [X]usbserial.ko
4 c. Advanced Option --> Kernel Modules --> Drivers --> [X]ftdi_sio.ko
<--- --->

Nachdem das Image auf die FritzBox gespielt wurde, müssen noch folgende Schritte durchgeführt werden. Soweit es sich automatisieren lässt, werde ich das noch in nächster Zeit versuchen umzusetzen.

5. TellDus Tellstick in die FritzBox stecken
6. Per ssh auf die FritzBox connecten
7. modprobe ftdi_sio vendor=0x1781 product=0x0c30 <edit on>(Muss nach einem Reboot der FritzBox neu ausgeführt werden ToDo!)<edit off>
8. Die Datei "/mod/etc/tellstick.conf" anlegen und anpassen. <edit on>(Muss nach einem Reboot der FritzBox neu angelegt werden, also sichern! ToDo!)<edit off>

Eventuell muss das Property deviceNode noch angepasst werden (ToDo), wenn man eine weitere USB2Serial Schnittstelle am USB Port hängen hat. <edit on>Desweiteren müssen die Devices je nach Funksteckdosen, Funkschalter, Funkdimmer etc. angepasst werden! (siehe Konfiguration) <edit off>
Code:
deviceNode = "/dev/ttyUSB0"

device {
  id = 1
  name = "Funksteckdose 1"
  protocol = "arctech"
  model = "codeswitch"
  parameters {
    house = "A"
    unit = "1"
  }
}
device {
  id = 2
  name = "Funksteckdose 2"
  protocol = "arctech"
  model = "codeswitch"
  parameters {
    house = "A"
    unit = "2"
  }
}
9. Testen: tdtool --on 2
10. Überprüfen ob sich das Garagentor des Nachbarn öffnet :mrgreen: oder die ausgewählte Steckdose aktiviert wurde. ;)

Code:
root@fritz:/var/mod/root# tdtool --on 2
Turning on device 2, Funksteckdose 2 - Success <-- Kommunikation mit dem Tellstick funktioniert

Ich hoffe, ich habe nichts vergessen. Ich setze den Thread auf gelöst, werde aber weiter daran arbeiten und dieses Posting erweitern.

Ach ja, alles ohne Gewähr und mit Haftungsausschluss!

Vielen Dank, vor allen Dingen an MaxMuster!

Grüsse
 
Zuletzt bearbeitet:
Hallo,
hat jemand eine Ahnung was geschehen ist, wenn nach "zcat telldus-core-2.0.4.patch.gz | patch -p0" folgendes passiert:

Code:
patching file make/Config.in
Hunk #1 FAILED at 169.
1 out of 1 hunk FAILED -- saving rejects to file make/Config.in.rej
patching file make/libs/Config.in
Hunk #1 succeeded at 435 with fuzz 2 (offset -463 lines).
patching file make/libs/confuse.mk
patching file make/libs/Makefile.in
Hunk #1 succeeded at 26 (offset -22 lines).
patching file make/telldus-core/Config.in
patching file make/telldus-core/Makefile.in
patching file make/telldus-core/patches/100.fix-cmake-path.patch
patching file make/telldus-core/patches/101-fix-uclibcxx_usleep.patch
patching file make/telldus-core/telldus-core.mk

Habe vorher das Patch per FTP in den "freetz-1.1.1"-Ordner gepackt und dann in der Buildumgebung von Freetz den obigen Befehl ausgeführt (im Freetz-Ordner). Ich verwende Virtualbox.

Würde mich freuen, wenn mir jemand helfen kann. Fred hat auch schon eine PM von mir bekommen, falls er evtl. dort antwortet, poste ich die Ergebnisse. Danke vorab an alle.
 
Ich habe per FTP die Ordner /make/telldus und /telldus-core noch einmal gelöscht, und dann nochmal neu gepatcht. Fehler wie vorher, doch danach ist das "MAKE telldusc-ore-precompiled" angelaufen, was jedoch auch schlussendlich in einem Fehler gestrandet ist. Zur Vollständigkeit ist der gesamte Code mit angehängt:
Code:
freetz@freetz-linux:~/freetz-1.1.1$ zcat telldus-core-2.0.4.patch.gz | patch -p0patching file make/Config.in
Hunk #1 FAILED at 169.
1 out of 1 hunk FAILED -- saving rejects to file make/Config.in.rej
patching file make/libs/Config.in
Hunk #1 succeeded at 477 with fuzz 2 (offset -421 lines).
patching file make/libs/confuse.mk
patching file make/libs/Makefile.in
Reversed (or previously applied) patch detected!  Assume -R? [n] 
Apply anyway? [n] 
Skipping patch.
1 out of 1 hunk ignored -- saving rejects to file make/libs/Makefile.in.rej
patching file make/telldus-core/Config.in
patching file make/telldus-core/Makefile.in
patching file make/telldus-core/patches/100.fix-cmake-path.patch
patching file make/telldus-core/patches/101-fix-uclibcxx_usleep.patch
patching file make/telldus-core/telldus-core.mk
freetz@freetz-linux:~/freetz-1.1.1$ make telldus-core-precompiled
--2012-03-14 23:57:32--  http://download.savannah.gnu.org/releases/confuse/confuse-2.7.tar.gz
Auflösen des Hostnamen »download.savannah.gnu.org«.... 140.186.70.73
Verbindungsaufbau zu download.savannah.gnu.org|140.186.70.73|:80... verbunden.
HTTP Anforderung gesendet, warte auf Antwort... 302 Found
Platz: http://download.savannah.gnu.org/releases-redirect/confuse/confuse-2.7.tar.gz [folge]
--2012-03-14 23:57:33--  http://download.savannah.gnu.org/releases-redirect/confuse/confuse-2.7.tar.gz
Wiederverwendung der bestehenden Verbindung zu download.savannah.gnu.org:80.
HTTP Anforderung gesendet, warte auf Antwort... 302 Found
Platz: http://mirror.lihnidos.org/GNU/savannah/confuse/confuse-2.7.tar.gz [folge]
--2012-03-14 23:57:33--  http://mirror.lihnidos.org/GNU/savannah/confuse/confuse-2.7.tar.gz
Auflösen des Hostnamen »mirror.lihnidos.org«.... 89.212.75.132
Verbindungsaufbau zu mirror.lihnidos.org|89.212.75.132|:80... verbunden.
HTTP Anforderung gesendet, warte auf Antwort... 200 OK
Länge: 517272 (505K) [application/x-gzip]
In »dl/confuse-2.7.tar.gz« speichern.

100%[======================================>] 517.272      453K/s   in 1,1s    

2012-03-14 23:57:34 (453 KB/s) - »dl/confuse-2.7.tar.gz« gespeichert [517272/517272]

Download succeeded - http://download.savannah.gnu.org/releases/confuse/confuse-2.7.tar.gz  ->  saved to folder dl
MD5 verified for dl/confuse-2.7.tar.gz: 45932fdeeccbb9ef4228f1c1a25e9c8f
tar -C source  -xzf dl/confuse-2.7.tar.gz
shopt -s nullglob; for i in make/libs/patches/*.confuse.patch; do tools/freetz_patch source/confuse-2.7 $i; done
touch source/confuse-2.7/.unpacked
( cd source/confuse-2.7;  rm -f config.{cache,status} ;  source /home/freetz/freetz-1.1.1/make/config.mipsel ;  PATH="/home/freetz/freetz-1.1.1/toolchain/target/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin" CC="/home/freetz/freetz-1.1.1/toolchain/target/bin/mipsel-linux-uclibc-gcc" CXX="/home/freetz/freetz-1.1.1/toolchain/target/bin/mipsel-linux-uclibc-g++-uc" CFLAGS="-Os -pipe -march=4kc -Wa,--trap -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64" CXXFLAGS="-Os -pipe -march=4kc -Wa,--trap -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64" LDFLAGS=""  ./configure   --cache-file=/home/freetz/freetz-1.1.1/make/config.cache --target=mipsel-linux --host=mipsel-linux --build=i386-pc-linux-gnu --program-prefix="" --program-suffix="" --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --datadir=/usr/share --includedir=/usr/include --infodir=/usr/share/info --libdir=/usr/lib --libexecdir=/usr/lib --localstatedir=/var --mandir=/usr/share/man --sbindir=/usr/sbin --sysconfdir=/etc --with-gnu-ld --disable-nls  --enable-shared --enable-static )
configure: loading cache /home/freetz/freetz-1.1.1/make/config.cache
checking whether to enable maintainer-specific portions of Makefiles... no
checking for a BSD-compatible install... (cached) /usr/bin/install -c
checking whether build environment is sane... yes
checking for mipsel-linux-strip... (cached) mipsel-linux-strip
checking for a thread-safe mkdir -p... (cached) /bin/mkdir -p
checking for gawk... (cached) gawk
checking whether make sets $(MAKE)... (cached) yes
checking for mipsel-linux-gcc... (cached) /home/freetz/freetz-1.1.1/toolchain/target/bin/mipsel-linux-uclibc-gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... yes
checking for suffix of object files... (cached) o
checking whether we are using the GNU C compiler... (cached) yes
checking whether /home/freetz/freetz-1.1.1/toolchain/target/bin/mipsel-linux-uclibc-gcc accepts -g... (cached) yes
checking for /home/freetz/freetz-1.1.1/toolchain/target/bin/mipsel-linux-uclibc-gcc option to accept ISO C89... (cached) none needed
checking for style of include used by make... GNU
checking dependency style of /home/freetz/freetz-1.1.1/toolchain/target/bin/mipsel-linux-uclibc-gcc... (cached) gcc3
checking for flex... flex
checking lex output file root... lex.yy
checking lex library... none needed
checking whether yytext is a pointer... no
checking build system type... (cached) i386-pc-linux-gnu
checking host system type... (cached) mipsel-unknown-linux-gnu
checking for a sed that does not truncate output... /bin/sed
checking for grep that handles long lines and -e... (cached) /bin/grep
checking for egrep... (cached) /bin/grep -E
checking for fgrep... /bin/grep -F
checking for ld used by /home/freetz/freetz-1.1.1/toolchain/target/bin/mipsel-linux-uclibc-gcc... (cached) /home/freetz/freetz-1.1.1/toolchain/build/gcc-4.2.1-uClibc-0.9.28/mipsel-linux-uclibc/mipsel-linux-uclibc/bin/ld
checking if the linker (/home/freetz/freetz-1.1.1/toolchain/build/gcc-4.2.1-uClibc-0.9.28/mipsel-linux-uclibc/mipsel-linux-uclibc/bin/ld) is GNU ld... (cached) yes
checking for BSD- or MS-compatible name lister (nm)... (cached) /home/freetz/freetz-1.1.1/toolchain/target/bin/mipsel-linux-nm -B
checking the name lister (/home/freetz/freetz-1.1.1/toolchain/target/bin/mipsel-linux-nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 805306365
checking whether the shell understands some XSI constructs... yes
checking whether the shell understands "+="... yes
checking for /home/freetz/freetz-1.1.1/toolchain/build/gcc-4.2.1-uClibc-0.9.28/mipsel-linux-uclibc/mipsel-linux-uclibc/bin/ld option to reload object files... (cached) -r
checking for mipsel-linux-objdump... mipsel-linux-objdump
checking how to recognize dependent libraries... (cached) file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )
checking for mipsel-linux-ar... mipsel-linux-ar
checking for mipsel-linux-strip... (cached) mipsel-linux-strip
checking for mipsel-linux-ranlib... (cached) mipsel-linux-ranlib
checking command to parse /home/freetz/freetz-1.1.1/toolchain/target/bin/mipsel-linux-nm -B output from /home/freetz/freetz-1.1.1/toolchain/target/bin/mipsel-linux-uclibc-gcc object... (cached) ok
checking how to run the C preprocessor... (cached) /home/freetz/freetz-1.1.1/toolchain/target/bin/mipsel-linux-uclibc-gcc -E
checking for ANSI C header files... (cached) yes
checking for sys/types.h... (cached) yes
checking for sys/stat.h... (cached) yes
checking for stdlib.h... (cached) yes
checking for string.h... (cached) yes
checking for memory.h... (cached) yes
checking for strings.h... (cached) yes
checking for inttypes.h... (cached) yes
checking for stdint.h... (cached) yes
checking for unistd.h... (cached) yes
checking for dlfcn.h... (cached) yes
checking for objdir... .libs
checking for mipsel-linux-file... (cached) /usr/bin/file
checking if /home/freetz/freetz-1.1.1/toolchain/target/bin/mipsel-linux-uclibc-gcc supports -fno-rtti -fno-exceptions... no
checking for /home/freetz/freetz-1.1.1/toolchain/target/bin/mipsel-linux-uclibc-gcc option to produce PIC... -fPIC -DPIC
checking if /home/freetz/freetz-1.1.1/toolchain/target/bin/mipsel-linux-uclibc-gcc PIC flag -fPIC -DPIC works... yes
checking if /home/freetz/freetz-1.1.1/toolchain/target/bin/mipsel-linux-uclibc-gcc static flag -static works... yes
checking if /home/freetz/freetz-1.1.1/toolchain/target/bin/mipsel-linux-uclibc-gcc supports -c -o file.o... yes
checking if /home/freetz/freetz-1.1.1/toolchain/target/bin/mipsel-linux-uclibc-gcc supports -c -o file.o... (cached) yes
checking whether the /home/freetz/freetz-1.1.1/toolchain/target/bin/mipsel-linux-uclibc-gcc linker (/home/freetz/freetz-1.1.1/toolchain/build/gcc-4.2.1-uClibc-0.9.28/mipsel-linux-uclibc/mipsel-linux-uclibc/bin/ld) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking whether NLS is requested... no
checking for msgfmt... /usr/bin/msgfmt
checking for gmsgfmt... /usr/bin/msgfmt
checking for xgettext... /usr/bin/xgettext
checking for msgmerge... /usr/bin/msgmerge
checking for ld used by GCC... /home/freetz/freetz-1.1.1/toolchain/build/gcc-4.2.1-uClibc-0.9.28/mipsel-linux-uclibc/mipsel-linux-uclibc/bin/ld
checking if the linker (/home/freetz/freetz-1.1.1/toolchain/build/gcc-4.2.1-uClibc-0.9.28/mipsel-linux-uclibc/mipsel-linux-uclibc/bin/ld) is GNU ld... yes
checking for shared library run path origin... done
checking for CFPreferencesCopyAppValue... no
checking for CFLocaleCopyCurrent... no
checking whether to use NLS... no
checking for ANSI C header files... (cached) yes
checking for unistd.h... (cached) yes
checking for an ANSI C-conforming const... (cached) yes
checking for strcasecmp... (cached) yes
checking for strdup... (cached) yes
checking for strndup... yes
checking for library containing inet_ntoa... none required
configure: updating cache /home/freetz/freetz-1.1.1/make/config.cache
configure: creating ./config.status
config.status: creating Makefile
config.status: creating src/Makefile
config.status: creating examples/Makefile
config.status: creating po/Makefile.in
config.status: creating m4/Makefile
config.status: creating tests/Makefile
config.status: creating doc/Makefile
config.status: creating doc/Doxyfile
config.status: creating libconfuse.pc
config.status: creating libconfuse.spec
config.status: creating config.h
config.status: executing depfiles commands
config.status: executing libtool commands
config.status: executing po-directories commands
config.status: creating po/POTFILES
config.status: creating po/Makefile
touch source/confuse-2.7/.configured
C source/confuse-2.7
/bin/bash: C: Kommando nicht gefunden.
make: [source/confuse-2.7/libconfuse.a] Fehler 127 (ignoriert)
C source/confuse-2.7 \
		DESTDIR="/home/freetz/freetz-1.1.1/toolchain/build/gcc-4.2.1-uClibc-0.9.28/mipsel-linux-uclibc" \
		install
/bin/bash: C: Kommando nicht gefunden.
make: [/home/freetz/freetz-1.1.1/toolchain/build/gcc-4.2.1-uClibc-0.9.28/mipsel-linux-uclibc/usr/lib/libconfuse.so.0.0.0] Fehler 127 (ignoriert)
mkdir -p packages/telldus-core-2.0.4/root
if test -d make/telldus-core/files; then tar -c -C make/telldus-core/files --exclude=.svn . | tar -x -C packages/telldus-core-2.0.4 ; fi

--2012-03-14 23:57:38--  http://download.telldus.com/TellStick/Software/telldus-core/telldus-core-2.0.4.tar.gz
Auflösen des Hostnamen »download.telldus.com«.... 194.30.169.113
Verbindungsaufbau zu download.telldus.com|194.30.169.113|:80... verbunden.
HTTP Anforderung gesendet, warte auf Antwort... 200 OK
Länge: 71884 (70K) [application/x-gzip]
In »dl/telldus-core-2.0.4.tar.gz« speichern.

100%[======================================>] 71.884       296K/s   in 0,2s    

2012-03-14 23:57:39 (296 KB/s) - »dl/telldus-core-2.0.4.tar.gz« gespeichert [71884/71884]

Download succeeded - http://download.telldus.com/TellStick/Software/telldus-core/telldus-core-2.0.4.tar.gz  ->  saved to folder dl
MD5 verified for dl/telldus-core-2.0.4.tar.gz: adf1994829b5bd1015d8f172b654f309
rm -f -r source/telldus-core-2.0.4
tar -C source  -xzf dl/telldus-core-2.0.4.tar.gz
shopt -s nullglob; for i in make/telldus-core/patches/*.patch; do tools/freetz_patch source/telldus-core-2.0.4 $i; done
touch source/telldus-core-2.0.4/.unpacked
cd source/telldus-core-2.0.4 &&  cmake \
		-DBUILD_RFCMD=0 \
		-DCMAKE_INSTALL_PREFIX=/home/freetz/freetz-1.1.1/toolchain/build/gcc-4.2.1-uClibc-0.9.28/mipsel-linux-uclibc/usr \
		-D__USE_BSD=1 \
		-DCMAKE_C_COMPILER="/home/freetz/freetz-1.1.1/toolchain/target/bin/mipsel-linux-uclibc-gcc"  \
		-DCMAKE_CXX_COMPILER="/home/freetz/freetz-1.1.1/toolchain/target/bin/mipsel-linux-uclibc-g++-uc"  \
		-DBUILD_LIBTELLDUS-CORE=1 \
		-DBUILD_TDTOOL=1 \
		-DSUPPORT_TELLSTICK_DUO=0 \
		-DSUPPORT_USB=0 \
		-DGENERATE_MAN=0 \
		-DCONFUSE_LIB="/home/freetz/freetz-1.1.1/toolchain/build/gcc-4.2.1-uClibc-0.9.28/mipsel-linux-uclibc/usr/lib/libconfuse.so" \
		-DUSE_QT_SETTINGS_BACKEND=0 \
		-DCMAKE_SKIP_RPATH=1
/bin/bash: Zeile 1: cmake: Kommando nicht gefunden.
make: *** [telldus-core-cmake] Fehler 127
freetz@freetz-linux:~/freetz-1.1.1$
 
Du musst zuvor "cmake" auf dem System installiert haben, auf dem du das Freetz übersetzt; das Programm benutzt halt kein "make" sondern "cmake".
 
Du musst zuvor "cmake" auf dem System installiert haben, auf dem du das Freetz übersetzt; das Programm benutzt halt kein "make" sondern "cmake".

Nice nice nice. Danke an alle Helfer. Ein weiteres, bzw. hoffentlich letztes Problemchen.
Habe alles soweit hinbekommen, also den Telldus-Patch in Freetz gepatcht, Freetz-Image erstellt usw usw.

Nun beim Testen des Ergebnisses bekomme ich folgende Meldung:
Code:
root@fritz:/var/mod/root# tdtool --off 1
Turning off device 1, Funksteckdose 1 - TellStick not found

Kann jemand damit etwas anfangen? Danke erneut.

P.S. Fritzbox 7320

Edit: Den modprobe-Befehl habe ich um "update-modules" ergänzt. Jetzt wird der Tellstick zwar gefunden, aber entweder folgt auf "tdtool --on 1" keine Rückmeldung des Terminals oder folgendes:

Code:
root@fritz:/var/mod/root# tdtool --off 1
Turning off device 1, Funksteckdose 1 - An error occurred when communication with TellStick

hmmm. ;) Fragen über Fragen.
 
Zuletzt bearbeitet:
Kannst du mit dmesg oder cat /dev/debug Meldungen des Kernels zu deinem Problem sehen?Wie ist die Ausgabe von lsmod?

Gruß
Oliver
 

Zurzeit aktive Besucher

Statistik des Forums

Themen
246,300
Beiträge
2,249,713
Mitglieder
373,904
Neuestes Mitglied
Elemir
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.