Hello,
if you want to use the Raspberry PI as a EIB/KNX Gateway or Tunnel you must compile the eibd sources from the scratch, because no precomplied binaries are currently available.
There are two ways to build the eibd. Compiling directly on the Raspberry PI or you compile it on your i386 PC. The last option means you have to “cross” compile the sources, because the RapsberryPi has a different processor architecture than your Intel/AMD PC. Here are the steps to build the eibd on an i386 using a crosscompiler for the ARM architucture.
I verfied the steps at a minimal debian system in a VirtualBox. So it is reproducible:-)
Install all necessary packages. Login as root
apt-get -y install git rsync cmake make gcc g++ binutils automake flex bison patch
Now you can Login as a “normal” user. Define a working folder
export BUILD_PATH=~/eibdbuild
mkdir -p $BUILD_PATH
cd $BUILD_PATH
We need a cross compiler respectively the toolchain for the arm1176jzf
arm processor.
For the RaspberryPI a project exists at Github. Define a folder for the tools and compiler, create and change to it
export RASPBERRY_CROSS_COMPILER=$BUILD_PATH/raspPiTools
mkdir -p $RASPBERRY_CROSS_COMPILER
Get the latest version
cd $RASPBERRY_CROSS_COMPILER
git clone git://github.com/raspberrypi/tools.git
Add the location of compiler binary to the search PATH
PATH=$PATH:$RASPBERRY_CROSS_COMPILER/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin
Check the compiler, this should return something like this
arm-linux-gnueabihf-gcc -v
Using built-in specs.
COLLECT_GCC=arm-linux-gnueabihf-gcc
COLLECT_LTO_WRAPPER=/home/michael/eibdbuild/raspPiTools/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/../libexec/gcc/arm-linux-gnueabihf/4.7.2/lto-wrapper
Target: arm-linux-gnueabihf
Configured with: /cbuild/slaves/oort61/crosstool-ng/builds/arm-linux-gnueabihf-raspbian-linux/.build/src/gcc-linaro-4.7-2012.08/configure --build=i686-build_pc-linux-gnu --host=i686-build_pc-linux-gnu --target=arm-linux-gnueabihf --prefix=/cbuild/slaves/oort61/crosstool-ng/builds/arm-linux-gnueabihf-raspbian-linux/install ............
define the architecture
export TARGET_ARCH=arm-linux-gnueabihf
define a folder where the complied binaries should copied to.
export BUILD_ROOT=$BUILD_PATH/build
Get and compile pthsem
cd $BUILD_PATH
mkdir pthsem
cd pthsem
wget http://www.auto.tuwien.ac.at/~mkoegler/pth/pthsem_2.0.8.tar.gz
tar -xvzf pthsem_2.0.8.tar.gz
cd pthsem-2.0.8
./configure --enable-static=yes --build=i386-linux-gnu --target=$TARGET_ARCH --host=$TARGET_ARCH --prefix=$BUILD_ROOT CC="$TARGET_ARCH-gcc" CFLAGS="-static -static-libgcc -static-libstdc++ -marm -mfpu=vfp -mfloat-abi=hard -march=armv6zk -mtune=arm1176jzf-s" --with-mctx-mth=sjlj --with-mctx-dsp=ssjlj --with-mctx-stk=sas LDFLAGS="-static -static-libgcc -static-libstdc++"
make && make install
Check if the new pthsem library is in the correct folder
ls -l $BUILD_ROOT/lib
total 132
-rw-r--r-- 1 michael michael 126842 Oct 17 22:32 libpthsem.a
-rwxr-xr-x 1 michael michael 894 Oct 17 22:32 libpthsem.la
drwxr-xr-x 2 michael michael 4096 Oct 17 22:32 pkgconfig
Add the path of the library to LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$BUILD_ROOT/lib:$LD_LIBRARY_PATH
Get and compile the bcusdk
cd $BUILD_PATH
mkdir bcusdk
cd bcusdk
wget http://netcologne.dl.sourceforge.net/project/bcusdk/bcusdk/bcusdk_0.0.5.tar.gz
tar -xvzf bcusdk_0.0.5.tar.gz
cd bcusdk-0.0.5
Before you start configure. Select the features which the eibd daemon should support:
Select the features eibd should support:
–enable-ft12 enable FT1.2 backend
–enable-pei16 enable BCU1 kernel driver backend
–enable-tpuart enable TPUART kernel driver backend (deprecated)
–enable-pei16s enable BCU1 user driver backend (very experimental)
–enable-tpuarts enable TPUART user driver backend
–enable-eibnetip enable EIBnet/IP routing backend
–enable-eibnetiptunnel enable EIBnet/IP tunneling backend
–enable-usb enable USB backend
–enable-eibnetipserver enable EIBnet/IP server frontend
–enable-groupcache enable Group Cache (default: yes)
–enable-java build java client library
Add or remove it from the configure command line.
./configure --enable-onlyeibd --enable-tpuarts --enable-tpuart --enable-ft12 --enable-eibnetip --enable-eibnetiptunnel --enable-eibnetipserver --enable-groupcache --enable-static=yes --build=i386-linux-gnu --target=$TARGET_ARCH --host=$TARGET_ARCH --prefix=$BUILD_ROOT --with-pth=$BUILD_ROOT --without-pth-test CC="$TARGET_ARCH-gcc" CFLAGS="-static -static-libgcc -static-libstdc++ -marm -mfpu=vfp -mfloat-abi=hard -march=armv6zk -mtune=arm1176jzf-s" LDFLAGS="-static -static-libgcc -static-libstdc++ -s" CPPFLAGS="-static -static-libgcc -static-libstdc++ -Os -fmerge-constants"
make && make install
If the compilation succeeds you find the eibd and the tools at
ls -l $BUILD_ROOT/bin
total 1512
-rwxr-xr-x 1 michael michael 156775 Oct 17 22:44 bcuaddrtab
-rwxr-xr-x 1 michael michael 154727 Oct 17 22:44 bcuread
-rwxr-xr-x 1 michael michael 8171 Oct 17 22:44 busmonitor1
-rwxr-xr-x 1 michael michael 8167 Oct 17 22:44 busmonitor2
-rwxr-xr-x 1 michael michael 399715 Oct 17 22:44 eibd
-rwxr-xr-x 1 michael michael 161259 Oct 17 22:44 eibnetdescribe
-rwxr-xr-x 1 michael michael 161439 Oct 17 22:44 eibnetsearch
Copy the all subfolders of the $BUILD_ROOT
folder to your Raspberry PI. Either to /usr
or /usr/local
folder. I prefer the last one to sparate it from the system files.
Whats left are startup scripts for eibd. See next post.
Michael
Hey, just what I needed, thx for sharing this! 🙂 … going to try this now, and compiling directly on the raspberry pi 3 😀
Hey again,
worked seamless on Raspberry Pi 3 Model B with ubuntu 16.04 minimal server from here … ubuntu-pi-flavour-maker.org
So I don’t know who now has access to my Bus, but who cares 😛
Thx again, really cool