GithubHelp home page GithubHelp logo

knxd / knxd Goto Github PK

View Code? Open in Web Editor NEW
513.0 98.0 195.0 3.68 MB

License: GNU General Public License v2.0

Shell 0.48% Makefile 1.76% C++ 65.22% C 20.83% Java 0.60% Lua 0.13% Ruby 0.55% Python 0.09% PHP 0.75% Pascal 0.84% M4 4.04% NASL 1.86% SourcePawn 1.35% Pawn 1.47% HTML 0.01% Vim Script 0.01%

knxd's Introduction

knxd Build Status

KNX is a very common building automation protocol which runs on dedicated 9600-baud wire as well as IP multicast. knxd is an advanced router/gateway which runs on any Linux computer; it can talk to all known KNX interfaces.

STOP if you install on Debian (or Ubuntu or …)

Debian/Ubuntu packaging has moved to the debian branch. Please use that branch (by way of git checkout debian) if you're following some (outdated …) installation instructions for Debian, Ubuntu or their derivatives.

In the debian branch, this file contains build instructions for Debian.

Stable version

This version should be OK for general use.

Check the Wiki page for other version(s) to use.

Known bugs

  • ETS programming may or may not work out of the box. You might need to use the single filter in front of your KNX interface.

Configuration

Daemon Configuration

Daemon configuration differs depending on whether you use systemd. If "systemctl status" emits something reasonable, you are.

If you use Linux and systemd, the configuration file is /etc/knxd.conf. Socket activation is used for the default IP and Unix sockets (port 6720 and /run/knx, respectively). If not, the location of your configuration file depends on your init system.

In knxd or knxd.conf, KNXD_OPTS can be set to either the legacy command line arguments, or the location of the new .ini (e.g. KNXD_OPTS=/etc/knxd.ini)

New ".ini" configuration file

knxd is typically started with "knxd /etc/knxd.ini".

The file format is documented in "doc/inifile.rst". You might want to use the program "/usr/lib/knxd_args" to create it from previous versions' command-line arguments.

Backward Compatibility

The default Unix socket is /run/knx. Old eibd clients may still use /tmp/eib to talk to knxd. You need to either change their configuration, or add "-u /tmp/eib" to knxd's options. (This was the default for "-u" before version 0.11.)

New Features since 0.12

  • 0.14.41

    • speed up CGI initial setup (a lot)
    • support another USB interface
    • found another uninitialized variable
  • 0.14.39

    • Fixed two problems with the "pace" filter that resulted in excessive delays.
  • 0.14.38

    • knxd's udev rules were lost in the Debian branch. Restored (to systemd subdir).
  • 0.14.37

    • Fix a memory leak in the FT12 driver
    • fix the console rule in README
  • 0.14.35

    • Fixes for FreeBSD
  • 0.14.34

    • Cleanup: remove debian packaging, will be in a separate branch
  • 0.14.33

    • There is a new "retry" filter which controls closing and re-opening a misbehaving driver. This filter is implicitly auto-inserted in front of a driver.

    • Internal: Driver errors are now signalled with "stopped(true)" instead of "errored" which reduces code duplication.

    • Default timeout for EMI acks increased to 2 seconds Some USB interfaces manage to be abysmally slow Also hopefully-fixed USB retry and shutdown handling so that the "retry" filter can do its work.

    • Replies from devices in programming mode are no longer retransmitted to the originating interface.

  • 0.14.32

    • Tags no longer use a leading 'v'.

    • udev rule for SATEL USB interface

  • 0.14

    • Code configuration

      • There are no longer separate --enable-tpuarts and --enable-tpuarttcp options. Instead, you control both with --enable-tpuart. (This is the default anyway.)
    • Configuration file

      • includes a translator (knxd_args) from options to config file

      • All settings are still usable via the command line

    • Complete stack refactored

      • You may now use global filters.

      • USB handling updated

      • Most device-specific drivers are now split into a top part which translates KNX packets to wire format (usually CEMI), and a bottom part which transmits/receives the actual data. This enables extensive code sharing; knxd also can use TCP connections instead of actual serial devices.

    • Startup sequencing fixed: KNX packets will not be routed until all interfaces are ready.

      Also, systemd will not be signalled until then.

      • Configuration options to not start, or start and ignore failures of, specific interfaces

      • knxd will now retry setting up an interface

    • use libfmt for sane and type-safe formatting of error and trace messages

    • packet-level "logging" calls in various drivers have been removed

      • logging packets is now done with the new "log" filter

      • Logging of complete packets (inconsistently bit 1, 2, or 8 of the tracing mask) has been removed

      This also applies to global packet logging.

    • Complain loudly (and early) if knxd needs -E / client-addrs=X.Y.Z:N

    • knxd can restart links when they fail, or start to come up.

    • Interfaces are now either used normally, or in bus monitor mode. This is set in the configuration file / on the command line. There is no longer a way to switch between these modes; "knxtool busmonitor" will no longer change the state of any interface.

    • Queuing and flow control

      Previously, all drivers implemented their own queueing for outgoing packets, resulting in duplicate code and hidden errors.

      In v0.14, the main queueing system will pace packets for the slowest device. If you don't want that, use the "queue" filter on the slow device(s).

      All queues in individual drivers have been removed.

    • EMI handling refactored

      This eliminated some common code, found a couple of bugs, and lets us use a common logging module (controlled by bit 0 of the tracing mask) for comprehensive packet debugging.

0.12

  • knxd was rewritten to use libev instead of pthsem.

  • knxd now supports multiple interfaces, back-ends, and KNX packet filters.

History

This code is a fork of eibd 0.0.5 (from bcusdk) https://www.auto.tuwien.ac.at/~mkoegler/index.php/bcusdk

For a (german only) history and discussion why knxd emerged, please also see: eibd(war bcusdk) Fork -> knxd

Building

When in doubt, please check out the branch corresponding to your Linux distribution's flavor, and read this section there.

This part covers "manual" installation.

# first, install build tools and dependencies. You need git, autotools, and gcc/g++.
#: check your Linux distribution's documentation if you don't know how
# You also need a "knxd" user.

# get the source code
git clone https://github.com/knxd/knxd.git

# build+install knxd
cd knxd
git checkout main
sh bootstrap.sh
./configure --help
./configure --your-chosen-options
make
make install
cd ..

# Now switch to the "knxd" user and start the daemon.

If you would like to submit patches for Mac OSX or Windows, go ahead and create a pull request, but please be prepared to maintain your code.

Adding a TPUART USB interface

If you attach a (properly programmed) TUL (http://busware.de/tiki-index.php?page=TUL) to your computer, it'll show up as /dev/ttyACM0. This is a problem because (a) it's owned by root, thus knxd can't access it, and (b) if you ever add another serial interface that uses the same driver, knxd will use the wrong device.

Therefore, you do this:

  • Run udevadm info --attribute-walk /sys/bus/usb/drivers/cdc_acm/*/tty/ttyACM0.

    We're interested in the third block. It contains a line ATTRS{manufacturer}=="busware.de". Note the KERNELS=="something" line (your something will be different).

  • Copy the following line to /etc/udev/rules.d/70-knxd.rules:

    ACTION=="add", SUBSYSTEM=="tty", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="204b", KERNELS=="something", SYMLINK+="knx1", OWNER="knxd"
    

    Of course you need to replace the something with whatever udevadm displayed. An example file should be in /lib/udev/rules.d/.

  • Run udevadm test /sys/bus/usb/drivers/cdc_acm/*/tty/ttyACM0.

  • verify that /dev/knx1 exists and belongs to "knxd":

    ls -lL /dev/knx1

  • add -b tpuarts:/dev/knx1 to the options in /etc/knxd.conf.

If you have a second TPUART, repeat with "ttyACM1" and "knx2".

You'll have to update your rule if you ever plug your TPUART into a different USB port. This is intentional.

Adding any other USB interface

These interfaces should be covered by the udev file knxd installs in /lib/udev/rules.d. Simply use -b usb: to talk to it, assuming you don't have more than one.

Adding a TPUART serial interface to the Raspberry Pi

On the Raspberry Pi 2 and 3 the console is /dev/ttyAMA0. The udev line is:

ACTION=="add", SUBSYSTEM=="tty", KERNELS=="ttyAMA0", SYMLINK+="knx1", OWNER="knxd"

On the Raspberry Pi 4 the console is on /dev/ttyACM0. The udev line is:

ACTION=="add", SUBSYSTEM=="tty", KERNELS=="ttyACM0", SYMLINK+="knx1", OWNER="knxd"

This rule creates a symlink /dev/knx1 which points to the console. The knxd configuration will use that symlink.

On the Raspberry Pi 2 and 3 you need to disable the serial console. Edit /boot/cmdline.txt and remove the console=ttyAMA0 entry. Then reboot.

On the Raspberry Pi 3, the serial console is on ttyAMA1 by default. However, that is a software-driven serial port – the single hardware serial interface is used for Bluetooth on the Pi3. Varying CPU speed causes this port to be somewhat unreliable. If this happens, disable Bluetooth by adding

dtoverlay=pi3-disable-bt

to /boot/config.txt, run systemctl disable hciuart, and reboot. The TPUART module is now back on ttyAMA0.

Migrating to 0.14

  • If you build knxd yourself: install the libfmt-dev package, if possible.

    The knxd build process will try to download and build libfmt when that package is not present.

  • knxd is now configured with a .ini-style configuration file.

    The old way of configuring knxd via a heap of position-dependent arguments is still supported.

    You can use /usr/lib/knxd_args <args-to-knxd> to emit a .ini file that corresponds to your old list of arguments.

  • Not configuring client addresses is now a hard error. Knxd will no longer multiplex its clients onto its own address.

  • knxd will not start routing any packets unless startup is successful on all interfaces.

    This means that it is now safe to use "socket activation" mode with systemd. Previously, knxd might have lost the initial packets.

  • knxd can now attach filters to a single interface, or to the core (i.e. all packets get filtered).

  • Tracing no longer logs the actual decoded contents of packet. If you need that, use a "log" filter appropriately.

  • knxd now transmits data synchronously, i.e. individual drivers no longer buffer data for transmission. If you don't want that, use the "queue" filter on slow interfaces.

Migrating to 0.12

  • If you build knxd yourself: install the libev-dev package. You no longer need the pthsem packages.

  • You may need "-B single" in front of any "-b ipt:" or "-b usb:", esp. when you need to program a device; normal use is often not affected. knxd emits a warning

    Message without destination. Use the single-node filter ('-B single')?

    when it detects mis-addressed packets.

  • You need "-e"; knxd no longer defaults to address 0.0.1.

  • You need "-E" if you want to allow clients to connect (options -u -i -T). As that's almost always the case, knxd will print a warning if this option is missing.

  • If you use knxtool's management tools (any command with "progmode" or whose name starts with 'm'), please open an issue because knxd currently does not support these commands.

Migrating from eibd

  • Before you build knxd: remove any traces of the old eibd installation from /usr/local, or wherever you installed it.

  • The order of arguments is now significant. Among the "-D -T -R -S" arguments, -S must occur last. Arguments which modify the behavior of an interface must be in front of that interface. Global arguments (e.g. tracing the datagram router) must be in front of the "-e" option.

  • The 'groupswrite' etc. aliases are no longer installed by default. To workaround, you can either add /usr/lib/knxd to your $PATH, or use knxtool groupswrite.

  • If you use Debian Jessie or another systemd-based distribution, /lib/systemd/system/knxd.socket is used to open the "standard" sockets on which knxd listens to clients. You no longer need your old -i or -u options.

  • knxd's Unix socket should never have been located in /tmp; the default is now /run/knx. You can add a "-u /tmp/eib" (or whatever) option if necessary, but it's better to fix the clients.

Contributions

  • Any contribution is very welcome
  • Please use Github and create a pull request with your patches
  • Please see SubmittingPatches to correctly Sign-Off your code and add yourself to AUTHORS (tools/list_AUTHORS > AUTHORS)
  • Adhere to our coding conventions. The git archive includes a helpful .vimrc file if you use VIM.

Compensation – personal statement

KNX development is not a simple matter and requires both time and dedicated hardware for tests. The ETS software isn't exactly cheap, either, and there is no free replacement. (I'd like to change that.)

Thus, wearing my hat as the (current) main author, I (Matthias Urlichs) would like to ask you to consider contributing to knxd's development.

  • LiberaPay
  • Paypal: [email protected]
  • SEPA: DE34430609671145580100 @ GENODEM1GLS
  • Ethereum: please ask
  • Bitcoin: please don't waste power

I can issue a commercial invoice if required.

If you'd rather gift some hardware, please ask.

Community

knxd's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

knxd's Issues

Unable to build Package on Raspberry Pi 2 (Wheezy

I followed the Readme and ends in this error.

configure: exit 1 dh_auto_configure: ./configure --build=arm-linux-gnueabihf --prefix=/usr --includedir=${prefix}/include --mandir=${prefix}/share/man --infodir=${prefix}/share/info --sysconfdir=/etc --localstatedir=/var --libexecdir=${prefix}/lib/knxd --disable-maintainer-mode --disable-dependency-tracking --enable-usb --enable-eibnetip --enable-eibnetiptunnel --enable-eibnetipserver --enable-groupcache --enable-ft12 --enable-pei16s --enable-ncn5120 --enable-tpuarts --enable-dummy returned exit code 1 debian/rules:21: recipe for target 'override_dh_auto_configure' failed make[1]: *** [override_dh_auto_configure] Error 25 make[1]: Leaving directory '/home/inmadmin/knxd' debian/rules:14: recipe for target 'build' failed make: *** [build] Error 2 dpkg-buildpackage: Fehler: Fehler-Exitstatus von debian/rules build war 2

Relay Routing Indications through Tunneling Server

I have explored issue #84 a little further - there are some issues, still. Probably not related to the original cause. That is why I created a new issue.

Using the -RTS dummy: command-line options does not solve the problem entirely. Incoming routing indications are not relayed through the tunneling interface. I am guessing they are passed to the dummy interface instead.

Returning frames to the same socket they came from sounds dumb, but how else can I pass routing indications to the tunnel client?

Switch to CMake

I tried out the switch-to-cmake branch and found two issues.

  1. Minor issue with character escaping in python client generation
  2. Problem with multiple build jobs
    The parallel generation of c files in src/client/c/CMakeLists.txt is problematic as described in the documentation of add_custom_command. My suggestion is to simply generate the files instantly with cmake's file write command, as can be seen in my fork.

Build/install help (knxd missing files (/lib/*))

I'm trying to install knxd but fail miserably. This is the output after dpkg-buildpackage -b (after doing all other steps listed in Readme).

dh_install
        install -d debian/knxd///usr/bin
        cp -a debian/tmp//usr/bin/knxd debian/knxd///usr/bin/
        install -d debian/knxd///usr/lib
        cp -a debian/tmp//usr/lib/libeibclient.a debian/knxd///usr/lib/
        cp -a debian/tmp//usr/lib/libeibclient.la debian/knxd///usr/lib/
        cp -a debian/tmp//usr/lib/libeibclient.so debian/knxd///usr/lib/
        cp -a debian/tmp//usr/lib/libeibclient.so.0 debian/knxd///usr/lib/
        cp -a debian/tmp//usr/lib/libeibclient.so.0.0.0 debian/knxd///usr/lib/
        cp -a debian/tmp//usr/lib/systemd debian/knxd///usr/lib/
        cp -a debian/tmp//usr/lib/sysusers.d debian/knxd///usr/lib/
dh_install: knxd missing files (/lib/*), aborting
make: *** [binary] Error 2
dpkg-buildpackage: error: fakeroot debian/rules binary gave error exit status 2

Thanks!

Tunneling Server

When starting knxd with -T -S options, incoming connection requests are left unanswered.

Here is what I get as debug output:

$ ./src/server/knxd -t 99 -T -S ip:      
Layer 0(0134F9F0,55CE57AD) Open
Layer 0(0134F9F0,55CE57AD) Openend
Layer 0(01370810,55CE57AD) Open
Layer 0(01370810,55CE57AD) Openend
Layer 0(01370810,55CE57AF) Recv(026): 06 10 02 05 00 1A 08 01 00 00 00 00 00 00 08 01 00 00 00 00 00 00 04 04 02 00
Layer 1(01370810,55CE57AF) Recv(020): 08 01 00 00 00 00 00 00 08 01 00 00 00 00 00 00 04 04 02 00

Instead I expect something like that:

$ eibd -t 99 -T -S ip:  
Layer 0(01B90910,55CE587A) Open
Layer 0(01B90910,55CE587A) Openend
Layer 0(01BC21E0,55CE587A) Open
Layer 0(01BC21E0,55CE587A) Openend
Layer 0(01BC21E0,55CE587C) Recv(026): 06 10 02 05 00 1A 08 01 00 00 00 00 00 00 08 01 00 00 00 00 00 00 04 04 02 00
Layer 1(01BC21E0,55CE587C) Recv(020): 08 01 00 00 00 00 00 00 08 01 00 00 00 00 00 00 04 04 02 00
Layer 1(01BC21E0,55CE587C) Send(014): 01 00 08 01 00 00 00 00 00 00 04 04 00 00
Layer 0(01BC21E0,55CE587C) Send(020): 06 10 02 06 00 14 01 00 08 01 00 00 00 00 00 00 04 04 00 00

Auto-reconnect USB

Reconnect USB-Interfaces as well as USB TP-UART after a disconnection (or USB-hub reset)
If possible, this would be a good enhancement for stability.

Remove option to build without libstdc++

currently there is an option to build without libstd++. I think this is legacy of bcusdk. Nowadays stdc++ is available on all our targeting platforms. Therefore this option and the code belonging to this should be removed.

If there is any good reason please speak up now.

Cannot build on Ubuntu 15.04

When I run: dpkg-buildpackage -b the result is:

(...)
dpkg-buildpackage: binary-only upload (no source included)
signfile knxd_0.10.0-1_amd64.changes
gpg: skipped "Matthias Urlichs [email protected]": secret key not available
gpg: dpkg-sign.HgaHCGFv/knxd_0.10.0-1_amd64.changes: clearsign failed: secret key not available

compiler warnings

Forgive me, I don't know if it's important or not nor if it's the right time to do it now: I'm always a little insecure about the many compiler warnings. Here is the recent list from my compiler gcc 4.8.2, at least some seem to be unclean coding:
cc1: warning: command line option ‘-fno-rtti’ is valid for C++/ObjC++ but not for C [enabled by default]
cc1: warning: command line option ‘-fno-rtti’ is valid for C++/ObjC++ but not for C [enabled by default]
cc1: warning: command line option ‘-fno-rtti’ is valid for C++/ObjC++ but not for C [enabled by default]
../../../src/client/def/opengroupsocket.inc:37:1: warning: too many arguments for format [-Wformat-extra-args]
../../../src/client/def/opentbroadcast.inc:36:1: warning: too many arguments for format [-Wformat-extra-args]
../../../src/client/def/opentgroup.inc:36:1: warning: too many arguments for format [-Wformat-extra-args]
../../../src/client/def/opentindividual.inc:37:1: warning: too many arguments for format [-Wformat-extra-args]
../../../src/client/def/opengroupsocket.inc:37:1: warning: too many arguments for format [-Wformat-extra-args]
../../../src/client/def/opentbroadcast.inc:36:1: warning: too many arguments for format [-Wformat-extra-args]
../../../src/client/def/opentgroup.inc:36:1: warning: too many arguments for format [-Wformat-extra-args]
../../../src/client/def/opentindividual.inc:37:1: warning: too many arguments for format [-Wformat-extra-args]
trace.cpp:32:12: warning: format ‘%X’ expects argument of type ‘unsigned int’, but argument 3 has type ‘long unsigned int’ [-Wformat=]
trace.cpp:43:65: warning: format ‘%X’ expects argument of type ‘unsigned int’, but argument 3 has type ‘long unsigned int’ [-Wformat=]
ft12.cpp:244:23: warning: ignoring return value of ‘ssize_t write(int, const void_, size_t)’, declared with attribute warn_unused_result [-Wunused-result]
tpuartserial.cpp:259:20: warning: ignoring return value of ‘ssize_t write(int, const void_, size_t)’, declared with attribute warn_unused_result [-Wunused-result]
tpuartserial.cpp:269:20: warning: ignoring return value of ‘ssize_t write(int, const void_, size_t)’, declared with attribute warn_unused_result [-Wunused-result]
tpuartserial.cpp:279:20: warning: ignoring return value of ‘ssize_t write(int, const void_, size_t)’, declared with attribute warn_unused_result [-Wunused-result]
tpuartserial.cpp:557:21: warning: ignoring return value of ‘ssize_t write(int, const void_, size_t)’, declared with attribute warn_unused_result [-Wunused-result]
tpuartserial.cpp:592:21: warning: ignoring return value of ‘ssize_t write(int, const void_, size_t)’, declared with attribute warn_unused_result [-Wunused-result]
knxtool.c:212:7: warning: format not a string literal and no format arguments [-Wformat-security]
knxtool.c:214:7: warning: format not a string literal and no format arguments [-Wformat-security]

eibread-cgi

There are some issues with eibread-cgi. Some are known (cf. response to the merge request from Martin a while ago), others are recent due to the use of the CometVisu with a high number of GAs (cf. http://knx-user-forum.de/cometvisu/40279-cometvisu-maximale-anzahl-gas.html).

Before digging deeper, I think we should figure out what is the most recent version :)

Looking in the repository here the file looks different to the last well known repository at Open Automation (cf. https://sourceforge.net/p/openautomation/code/HEAD/tree/tools/bcusdk/eibd/examples/eibread-cgi.c - look especially on the values of the #define at the top).

=> What is the most recent version?
=> What is the version used at the WireGate?

ETS5 compatibility

Currently no programming of devices is possible due to changes in the way ETS5/Falcon communicates.
This is conform with KNX-Standard but not fully supported by eibd/knxd yet.

Remove outdated back-end drivers

I propose to remove outdated drivers from the source.

Specifically, "tpuart" and "pei16" (bcu1) use kernel drivers that are no longer supported since 2.6.31 or earlier.

Detect KNX BUS

Hi,

Is there a way of know if KNX Bus is connected?

I'm using the RPI-ROT from busware.

Thanks.

Add DPT-en/decoding to libeibclient

Add possibilities to en/decode DPT to the client-libraries.

This needs a well-designed API-extension and a robust configuration(file)-procedure.

The Code itself is rather easy, it can be taken from linknx, eibread/write-cgi (and CometVisu, wiregated.pl,sh.py,..)

Problem using --enable-usb

When using --enable-usb I get this for configure:
checking for LIBUSB... no
configure: error: Package requirements ("libusb-1.0") were not met:

No package 'libusb-1.0' found

I have installed packages libusb-1.0-0 and libusb-dev. I get this for pkg-config:
pkg-config --version libusb: 0.26
pkg-config --libs libusb: -lusb

But I also get this:
libusb-config --version: 0.1.12
libusb-config --libs: -L/usr/lib/x86_64-linux-gnu -lusb

I am a little confused by this and found no way to successfully compile after playing around for a while

remove bundled libusb

knxd currently ships a bundled version of libusb. This is in general a bad idea. If there is no good reason to keep it should be remove.

I have a branch which compiles against system libusb. Anyone who could test with usb devices?

Getting rid of pthsem

Getting rid of pthsem

Hello,
I want to help getting getting rid of pthsem so one day we can get knxd into Debian.
My long term goal is to get rid of all threads and have one single select-loop.
As mid term goal, I want to remove all threads that are "in the middle". I understand that threads can help with communication to the outside world (to the bus or to clients). But the layers in between should be doable without threads.

I have a created spreadsheet with all threads: http://nimkannon.de/Overview-threads.ods
The ones I could test have stacktraces for creation and shutdown.

The first thread I looked deeper into is EMI1Layer2Interface. (EMI2 and CEMI are similar.) This threads task is to read data from the LowLevelDriver and transform it L_Data_PDU / L_Busmonitor_PDU for the upper layer. This alone could be done synchronously without threads. But there are couple specialities where I have questions to it:

  • There a parameter noqueue. I don't understand the code fully. Maybe delays sending the next message to the outqueue until the last message is received. Is it like this? So the effect is that all data is buffered in the LowLevelDriver until it is fetched from the upper layer?
  • There is special handling for byte 0: On 0xA0 on open()/enterBusmonitor() is done again. Is this part of the knx specification that knxd has to do this?
    There is a difference between open() and enterBusmonitor():
    • open waits until the sendqueue is empty, e.g. until the LowLevelDriver has send it.
    • enterBusmonitor() calls LowLevelDriver::SendReset() before it sends, sleeps a little bit and then it waits only once. So it looks like, it expects the sendqueue to be empty after calling SendReset().
  • Is this supposed to be like this?
    Why is enterBusmonitor() sleeping after calling SendReset()?
  • I looked at the method LowLevelDriver::SendReset() which is called in enterBusmonitor(). Only FT12LowLevelDriver is implementing it non empty. What is the purpose of this SendReset and why is only FT12LowLevelDriver implementing it?

Is there any public documentation to knx that could explain some of the questions?

Thanks Christian

branch next: does not compile with --without-libstdc

compiling code from branch next fails with configure option --without-libstdc.
I don't know if I should be happy when being urged to link with libstdc++ when this library is bigger than knxd binary and therefore doubling size on small flash rom. I think this change should be discussed.

Allow large packets

Currently packets are limited to 64 byte length. DPT24 allows strings with greater length.

error while build in Debian

Hi, i got an error while compile the project.

dpkg-source: error: can't build with source format '3.0 (quilt)': no upstream tarball found at ../knxd_0.9.0.orig.tar.{bz2,gz,lzma,xz}
dpkg-buildpackage: error: dpkg-source -b knxd gave error exit status 255

After updating the "debian/source/format" from "quilt" to "native". After this update the build begin, but failed with the following command:
configure: exit 2
dh_auto_configure: ./configure --build=x86_64-linux-gnu --prefix=/usr --includedir=${prefix}/include --mandir=${prefix}/share/man --infodir=${prefix}/share/info --sysconfdir=/etc --localstatedir=/var --libexecdir=${prefix}/lib/knxd --disable-maintainer-mode --disable-dependency-tracking --enable-usb --enable-eibnetip --enable-eibnetiptunnel --enable-eibnetipserver --enable-groupcache --enable-tpuart --enable-ft12 returned exit code 2
make[1]: *** [override_dh_auto_configure] Error 25
make[1]: Leaving directory `/usr/local/src/knxd'
make: *** [build] Error 2
dpkg-buildpackage: error: debian/rules build gave error exit status 2

Interfaces echoing sent data?

Whle browsing the code, I found this gem:

void
EMI1Layer2Interface::Send (LPDU * l)
{
  TRACEPRINTF (t, 1, this, "Send %s", l->Decode ()());
  L_Data_PDU *l1 = (L_Data_PDU *) l;

  CArray pdu = L_Data_ToEMI (0x11, *l1);
  iface->Send_Packet (pdu);
  if (vmode)
    {
      L_Busmonitor_PDU *l2 = new L_Busmonitor_PDU (this);
      l2->pdu.set (l->ToPacket ());
      outqueue.put (l2);
      pth_sem_inc (&out_signal, 1);
    }
  outqueue.put (l);
  pth_sem_inc (&out_signal, 1);
}

This seems to simply echo the transmitted data back to Layer 3 (remember that "outqueue" is for the data that comes out of the interface, i.e. received).

Unless somebody has a good idea what this is supposed to be good for, I will delete this code (and also pull the code which prevents the TPUART from echoing the data it sends).
I'll also create a branch for testing with this code disabled.

bootstrap does not work on Debian and Ubuntu

Hi, i try to compile the version and follow the instruction, but get an error message on the bootstrap command. Here is the error message:
src/backend/Makefile.am: installing `./depcomp'
configure.ac:47: error: possibly undefined macro: AC_COMPILER_OPTION
If this token and others are legitimate, please use m4_pattern_allow.
See the Autoconf documentation.
configure.ac:49: error: possibly undefined macro: AC_CHECK_PTHSEM

Fix KNXnet/IP behavior

To conform to Standards:

  • not showing 0.0.0 and 0.0.1 as Physical address (if configured)
  • respond with MAC if first interface in KNXnet/IP (Multicast) search
  • respond with actual hostname

automaker issue (ubuntu 14.04)

Hi there,

great initiative - since I am using eibd for a decade now, it is time to give back :-)

After a fresh git clone of the master today, I ran into the following issues with ./bootstrap.sh:

./bootstrap.sh 
[...]
libtoolize: `AC_PROG_RANLIB' is rendered obsolete by `LT_INIT'
src/client/c/Makefile.am:5: warning: source file 'gen/getapdu.c' is in a subdirectory,
src/client/c/Makefile.am:5: but option 'subdir-objects' is disabled
automake: warning: possible forward-incompatibility.
automake: At least a source file is in a subdirectory, but the 'subdir-objects'
automake: automake option hasn't been enabled.  For now, the corresponding output
automake: object file(s) will be placed in the top-level directory.  However,
automake: this behaviour will change in future Automake versions: they will
automake: unconditionally cause object files to be placed in the same subdirectory
automake: of the corresponding sources.
automake: You are advised to start using 'subdir-objects' option throughout your
automake: project, to avoid future incompatibilities.
src/client/c/Makefile.am:5: warning: source file 'gen/loadimage.c' is in a subdirectory,
src/client/c/Makefile.am:5: but option 'subdir-objects' is disabled
[...]

--> automake (GNU automake) 1.14.1

Has anyone seen this before?

Cheers,

Klaus

Routingcounter = 7 when using tpuart

Hello,

i found a possible bug in eibd 0.0.5 described in knx uf:
http://knx-user-forum.de/knx-eib-forum/41082-routingzaehler-7-beim-eibd.html
Makki asked me to post this issue here, so that we can fix it in knxd.

For testing i used eibd with tpuart and a MDT USB bus interface.
On my ubuntu system i used groupswrite to write data to the knx bus over eibd:
groupswrite ip:localhost 0/0/222 1

eibd is started with these parameters:
eibd --eibaddr=1.0.254 --GroupCache --Server --Discovery --listen-tcp --Tunnelling --Routing --tpuarts-disch-reset --tpuarts-ack-all-group -t 5 --daemon=/var/log/eibd.log --listen-local --pid-file=/var/run/eibd.pid tpuarts:/dev/ttyUSB_KNX

In the ETS busmonitor the telegrams are shown with these routingcounters:
eibd direct: Not working!
eibd routing: routingcounter 6
MDT USB If: routingcounter 7

In the ETS groupmonitor the telegrams are shown with these routingcounters:
eibd direct: routingcounter 6
eibd routing: routingcounter 6
MDT USB If: routingcounter 7

Why is eibd sending telegramms with routingcounter 7 to the bus, but showing them in ets busmonitor using eibd as interface with routingcounter = 6? Without a third party interface (MDT USB interface in my case) its not possible to discover this behaviour.
Telegramms send by eibd (groupswrite, smarthome.py etc) have routingcounter = 7. But telegramms send by ETS groupmonitor over eibd have a correct routingcounter = 5.

Why i began checking this issue? Telegramms with routingcounter 7 are routed over every linecoupler, even if they are not listed in the filter table.

Best regards

Mode

Programming not working

I compiled knxd on a Banana Pi.

I want to use it as a KNX/IP programming interface over openVPN.
I have a Raspberry Pi where this is working like a charm with the old eibd.

When I use knxd however, programming is not working. I can use it to log GAs in the busmonitor of the ETS. I can use it to read and write GAs. The busmonitor (vbusmonitor1) is working too.

What I noticed is, that ETS always shows 0.0.0 as the address, even though 0.0.1 is set, here's an example of a group address read in ETS and what's seen on the console:

image

image

When I try to programm any device it's not working. I can see the telegrams in the ETS busmonitor, as well as on the Pi. I do not get any answers though:

image

image

Knxd is started with:

 -c -S -D -T --daemon=/var/log/knxd.log --no-tunnel-client-queuing -i ipt:192.168.1.201

Programming directly on site with the IP router works fine too.

Any ideas?

Implement filter-tables on KNXnet/IP Routing

based on a pretty undocumented format (which is locally known by now), knxd should gain the ability to act like a "real" KNXnet/IP Router getting filter-tables from ETS (+save & restore)

2015-01-08: build without stdc++ broken

Commit: e9f630a
Configure: --enable-eibnetip --enable-eibnetiptunnel --enable-eibnetipserver --enable-usb --with-pth=/sw/pkgs/pthsem-2.0.8 --without-libstdc
Build system: Ubuntu 14.04 LTS
Still works with code from 2014-12-21 on same build system, now it's broken
Also Cross-Compile for OpenWrt is broken now
So, I guess code base is broken in master branch

returns error for make:
Making all in server
make[3]: Entering directory /home/truniger/compile/scratch/knxd/src/server' gcc -DHAVE_CONFIG_H -I. -I../.. -I../../src/libserver -I../../src/backend -I../../src/common -I../../src/usb -I/sw/pkgs/pthsem-2.0.8/include -I/usr/include/libusb-1.0 -g -O2 -fno-rtti -fno-exceptions -MT knxd.o -MD -MP -MF .deps/knxd.Tpo -c -o knxd.o knxd.cpp mv -f .deps/knxd.Tpo .deps/knxd.Po /bin/bash ../../libtool --tag=CXX --mode=link gcc -g -O2 -fno-rtti -fno-exceptions -o knxd knxd.o ../backend/libbackend.a ../libserver/libeibstack.a ../common/libcommon.a ../usb/libusb.a -L/sw/pkgs/pthsem-2.0.8/lib -lpthsem -lusb-1.0 libtool: link: gcc -g -O2 -fno-rtti -fno-exceptions -o knxd knxd.o ../backend/libbackend.a ../libserver/libeibstack.a ../common/libcommon.a ../usb/libusb.a -L/sw/pkgs/pthsem-2.0.8/lib /sw/pkgs/pthsem-2.0.8/lib/libpthsem.a -L/sw/lib -lusb-1.0 knxd.o: In functionstartServer(Layer3_, Trace_, char const_)':
/home/truniger/compile/scratch/knxd/src/server/knxd.cpp:302: undefined reference to std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const_, std::allocator<char> const&)' knxd.o: In function std::string::_Rep::_M_dispose(std::allocator const&)':
/usr/include/c++/4.8/bits/basic_string.h:240: undefined reference tostd::string::_Rep::_S_empty_rep_storage' /usr/include/c++/4.8/bits/basic_string.h:249: undefined reference to std::string::_Rep::_M_destroy(std::allocator const&)'
../libserver/libeibstack.a(eibnetserver.o): In functionstd::string::_Rep::_M_dispose(std::allocator<char> const&)': /usr/include/c++/4.8/bits/basic_string.h:240: undefined reference to std::string::_Rep::_S_empty_rep_storage'
/usr/include/c++/4.8/bits/basic_string.h:249: undefined reference tostd::string::_Rep::_M_destroy(std::allocator<char> const&)' ../libserver/libeibstack.a(eibnetserver.o): In function _Alloc_hider':
/usr/include/c++/4.8/bits/basic_string.h:275: undefined reference tostd::string::_Rep::_S_empty_rep_storage' ../libserver/libeibstack.a(eibnetserver.o): In function std::string::operator=(std::string const&)':
/usr/include/c++/4.8/bits/basic_string.h:547: undefined reference tostd::string::assign(std::string const&)' collect2: error: ld returned 1 exit status make[3]: **\* [knxd] Error 1 make[3]: Leaving directory /home/truniger/compile/scratch/knxd/src/server'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory/home/truniger/compile/scratch/knxd/src' make[1]: **\* [all-recursive] Error 1 make[1]: Leaving directory /home/truniger/compile/scratch/knxd'
make: *** [all] Error 2

Does knxd always require network connectivity?

See 1d82bd6

I would lean towards requiring network in all cases. If you don't have anything configured that's fine, but it will be started empty at least. OTOH, the common case would probably be to have a knxd host connected to the network.

Thoughts?

100% CPU Load with USB Interface

System: Ubuntu 14.04, Kernel 3.13.0-43-generic, knxd 0.1, libusb-1.0.0.19, Merten KNX USB 681829

If i startet knxd, my cpu load for this prozess is 100%.

vbusmonitor does not work in master since a while

Since about April/May busmonitor tool cannot be used anymore.

knxd is running like that:
knxd -D -T -S -d -i --pid-file=/var/run/knxd.pid ipt:192.168.1.2

Busmonitor tool returns error:
$ knxtool vbusmonitor1 ip:localhost
Open Busmonitor failed: Device or resource busy

build does not work with Ubuntu 12.04 (LTS)

Hi. I tried to build the package on Ubuntu 12.04 but get an error whlie compile. I tested it on Ubuntu 14.04 and the current debian and it worked very well. There is only a problem with Ubuntu 12.04. So it looks like there is a problem with a version of a depending package. I have no idea what will be the problem. If you need more information, please let me know.

I know the version of Ubuntu is old and will support only until 2017, but it would be very helpfull for me to find the problem and resolve it.

Here is the result of the "dpkg-buildpackage -b" command:

define HAVE_TPUARTs 1

define HAVE_EIBNETIP 1

define HAVE_EIBNETIPTUNNEL 1

configure: exit 1
dh_auto_configure: ./configure --build=x86_64-linux-gnu --prefix=/usr --includedir=${prefix}/include --mandir=${prefix}/share/man --infodir=${prefix}/share/info --sysconfdir=/etc --localstatedir=/var --libexecdir=${prefix}/lib/knxd --disable-maintainer-mode --disable-dependency-tracking --enable-usb --enable-eibnetip --enable-eibnetiptunnel --enable-eibnetipserver --enable-groupcache --enable-tpuart --enable-ft12 returned exit code 1
make[1]: *** [override_dh_auto_configure] Fehler 25
make[1]: Verlasse Verzeichnis '/usr/local/src/knxd/knxd'
make: *** [build] Fehler 2
dpkg-buildpackage: Fehler: Fehler-Exitstatus von debian/rules build war 2

Doesn't build on raspberry pi 2

Hi all,

when compiling just as stated on the README

cd knxd
# If the next command complains about missing packages: install it and try again
# If you can't install libsystemd-daemon-dev, remove it from the file 'debian/control'
# (and remove the '/lib/*' line from debian/knxd.install)
dpkg-buildpackage -b

it ends with this failure:

## ----------- ##
## confdefs.h. ##
## ----------- ##

/* confdefs.h */
#define PACKAGE_NAME "knxd"
#define PACKAGE_TARNAME "knxd"
#define PACKAGE_VERSION "0.10.0"
#define PACKAGE_STRING "knxd 0.10.0"
#define PACKAGE_BUGREPORT ""
#define PACKAGE_URL ""
#define PACKAGE "knxd"
#define VERSION "0.10.0"
#define STDC_HEADERS 1
#define HAVE_SYS_TYPES_H 1
#define HAVE_SYS_STAT_H 1
#define HAVE_STDLIB_H 1
#define HAVE_STRING_H 1
#define HAVE_MEMORY_H 1
#define HAVE_STRINGS_H 1
#define HAVE_INTTYPES_H 1
#define HAVE_STDINT_H 1
#define HAVE_UNISTD_H 1
#define HAVE_DLFCN_H 1
#define LT_OBJDIR ".libs/"
#define HAVE_SYS_TIME_H 1
#define HAVE_SYS_SELECT_H 1
#define HAVE_SYSTEMD 1

configure: exit 1
dh_auto_configure: ./configure --build=arm-linux-gnueabihf --prefix=/usr --includedir=${prefix}/include --mandir=${prefix}/share/man --infodir=${prefix}/share/info --sysconfdir=/etc --localstatedir=/var --libexecdir=${prefix}/lib/knxd --disable-maintainer-mode --disable-dependency-tracking --enable-usb --enable-eibnetip --enable-eibnetiptunnel --enable-eibnetipserver --enable-groupcache --enable-ft12 --enable-pei16s --enable-ncn5120 --enable-tpuarts --enable-dummy --enable-systemd returned exit code 1
debian/rules:17: recipe for target 'override_dh_auto_configure' failed
make[1]: *** [override_dh_auto_configure] Error 25
make[1]: Leaving directory '/usr/src/knxd'
debian/rules:14: recipe for target 'build' failed
make: *** [build] Error 2
dpkg-buildpackage: Fehler: Fehler-Exitstatus von debian/rules build war 2

Does anybody know what's going on?

Thanks,
Sascha

Multiple lower layers

knxd really should have a better idea of which devices are where. The current version does exactly one Layer-2 connection (the two-wire KNX hardware), everything else is a "connection". There is no notion of multiple lower layers (two multicasts and three TPUART bus interfaces, anybody?). Thus there's also no cache of which physical address is located on which bus(es) and no way to restrict traffic to a single line; this inability to filter causes unnecessary bus traffic.

Refactoring this would be a perfect topic for a CS student paper.

usb: --> url not supported: Success

Hi all,

i did found some time to build and try to switch to knxd. But i run into several small things while trying to do so.

my test-environment
Raspi, Debian, MDT Technologies GmbH:KNX-USB Inteface - with the need to use the cEMI Patch in eibd

  • Preferences in packages are not complete. I needed to add this two more: libusb-1.0-0-dev, debhelper
  • dpkg-buildpackage fails when not using "-b" option.
  • knxd -T -D -R --Server --listen-tcp=6730 -u --eibaddr=1.1.153 usb:1:4:1:0:0
    fails with "url not supported: Success"
    Same goes for:
    /usr/local/bin/knxd -u -t 1023 usb:
    url not supported: Success

So - usb is out of the box not enabled - or do i need another compile-option?

Regards,
Johannes

bootstrap.sh runs into errors on Debian

,/bootstrap.sh throughs the following error:
´´´libtoolize: putting auxiliary files in .'. libtoolize: copying file./config.guess'
libtoolize: copying file ./config.sub' libtoolize: copying file./install-sh'
libtoolize: copying file ./ltmain.sh' libtoolize: putting macros in AC_CONFIG_MACRO_DIR,m4'.
libtoolize: copying file m4/libtool.m4' libtoolize: copying filem4/ltoptions.m4'
libtoolize: copying file m4/ltsugar.m4' libtoolize: copying filem4/ltversion.m4'
libtoolize: copying file m4/lt~obsolete.m4' libtoolize:AC_PROG_RANLIB' is rendered obsolete by `LT_INIT'
src/client/c/Makefile.am:5: warning: source file 'gen/getapdu.c' is in a subdirectory,
src/client/c/Makefile.am:5: but option 'subdir-objects' is disabled
automake: warning: possible forward-incompatibility.
automake: At least a source file is in a subdirectory, but the 'subdir-objects'
automake: automake option hasn't been enabled. For now, the corresponding output
automake: object file(s) will be placed in the top-level directory. However,
automake: this behaviour will change in future Automake versions: they will
automake: unconditionally cause object files to be placed in the same subdirectory
automake: of the corresponding sources.
automake: You are advised to start using 'subdir-objects' option throughout your
automake: project, to avoid future incompatibilities.
src/client/c/Makefile.am:5: warning: source file 'gen/loadimage.c' is in a subdirectory,
src/client/c/Makefile.am:5: but option 'subdir-objects' is disabled
src/client/c/Makefile.am:5: warning: source file 'gen/mcpropertyread.c' is in a subdirectory,
src/client/c/Makefile.am:5: but option 'subdir-objects' is disabled
src/client/c/Makefile.am:5: warning: source file 'gen/mprogmodeoff.c' is in a subdirectory,
src/client/c/Makefile.am:5: but option 'subdir-objects' is disabled
src/client/c/Makefile.am:5: warning: source file 'gen/opentconnection.c' is in a subdirectory,
src/client/c/Makefile.am:5: but option 'subdir-objects' is disabled
src/client/c/Makefile.am:5: warning: source file 'gen/getapdusrc.c' is in a subdirectory,
src/client/c/Makefile.am:5: but option 'subdir-objects' is disabled
src/client/c/Makefile.am:5: warning: source file 'gen/mcauthorize.c' is in a subdirectory,
src/client/c/Makefile.am:5: but option 'subdir-objects' is disabled
src/client/c/Makefile.am:5: warning: source file 'gen/mcpropertyscan.c' is in a subdirectory,
src/client/c/Makefile.am:5: but option 'subdir-objects' is disabled
src/client/c/Makefile.am:5: warning: source file 'gen/mprogmodeon.c' is in a subdirectory,
src/client/c/Makefile.am:5: but option 'subdir-objects' is disabled
src/client/c/Makefile.am:5: warning: source file 'gen/opentgroup.c' is in a subdirectory,
src/client/c/Makefile.am:5: but option 'subdir-objects' is disabled
src/client/c/Makefile.am:5: warning: source file 'gen/getbusmonitorpacket.c' is in a subdirectory,
src/client/c/Makefile.am:5: but option 'subdir-objects' is disabled
src/client/c/Makefile.am:5: warning: source file 'gen/mcconnect.c' is in a subdirectory,
src/client/c/Makefile.am:5: but option 'subdir-objects' is disabled
src/client/c/Makefile.am:5: warning: source file 'gen/mcpropertywrite.c' is in a subdirectory,
src/client/c/Makefile.am:5: but option 'subdir-objects' is disabled
src/client/c/Makefile.am:5: warning: source file 'gen/mprogmodestatus.c' is in a subdirectory,
src/client/c/Makefile.am:5: but option 'subdir-objects' is disabled
src/client/c/Makefile.am:5: warning: source file 'gen/opentindividual.c' is in a subdirectory,
src/client/c/Makefile.am:5: but option 'subdir-objects' is disabled
src/client/c/Makefile.am:5: warning: source file 'gen/getgroupsrc.c' is in a subdirectory,
src/client/c/Makefile.am:5: but option 'subdir-objects' is disabled
src/client/c/Makefile.am:5: warning: source file 'gen/mcgetmaskversion.c' is in a subdirectory,
src/client/c/Makefile.am:5: but option 'subdir-objects' is disabled
src/client/c/Makefile.am:5: warning: source file 'gen/mcreadadc.c' is in a subdirectory,
src/client/c/Makefile.am:5: but option 'subdir-objects' is disabled
src/client/c/Makefile.am:5: warning: source file 'gen/mprogmodetoggle.c' is in a subdirectory,
src/client/c/Makefile.am:5: but option 'subdir-objects' is disabled
src/client/c/Makefile.am:5: warning: source file 'gen/openttpdu.c' is in a subdirectory,
src/client/c/Makefile.am:5: but option 'subdir-objects' is disabled
src/client/c/Makefile.am:5: warning: source file 'gen/groupcacheclear.c' is in a subdirectory,
src/client/c/Makefile.am:5: but option 'subdir-objects' is disabled
src/client/c/Makefile.am:5: warning: source file 'gen/mcgetpeitype.c' is in a subdirectory,
src/client/c/Makefile.am:5: but option 'subdir-objects' is disabled
src/client/c/Makefile.am:5: warning: source file 'gen/mcread.c' is in a subdirectory,
src/client/c/Makefile.am:5: but option 'subdir-objects' is disabled
src/client/c/Makefile.am:5: warning: source file 'gen/mreadindividualaddresses.c' is in a subdirectory,
src/client/c/Makefile.am:5: but option 'subdir-objects' is disabled
src/client/c/Makefile.am:5: warning: source file 'gen/openvbusmonitor.c' is in a subdirectory,
src/client/c/Makefile.am:5: but option 'subdir-objects' is disabled
src/client/c/Makefile.am:5: warning: source file 'gen/groupcachedisable.c' is in a subdirectory,
src/client/c/Makefile.am:5: but option 'subdir-objects' is disabled
src/client/c/Makefile.am:5: warning: source file 'gen/mcprogmodeoff.c' is in a subdirectory,
src/client/c/Makefile.am:5: but option 'subdir-objects' is disabled
src/client/c/Makefile.am:5: warning: source file 'gen/mcrestart.c' is in a subdirectory,
src/client/c/Makefile.am:5: but option 'subdir-objects' is disabled
src/client/c/Makefile.am:5: warning: source file 'gen/mwriteindividualaddress.c' is in a subdirectory,
src/client/c/Makefile.am:5: but option 'subdir-objects' is disabled
src/client/c/Makefile.am:5: warning: source file 'gen/openvbusmonitortext.c' is in a subdirectory,
src/client/c/Makefile.am:5: but option 'subdir-objects' is disabled
src/client/c/Makefile.am:5: warning: source file 'gen/groupcacheenable.c' is in a subdirectory,
src/client/c/Makefile.am:5: but option 'subdir-objects' is disabled
src/client/c/Makefile.am:5: warning: source file 'gen/mcprogmodeon.c' is in a subdirectory,
src/client/c/Makefile.am:5: but option 'subdir-objects' is disabled
src/client/c/Makefile.am:5: warning: source file 'gen/mcsetkey.c' is in a subdirectory,
src/client/c/Makefile.am:5: but option 'subdir-objects' is disabled
src/client/c/Makefile.am:5: warning: source file 'gen/openbusmonitor.c' is in a subdirectory,
src/client/c/Makefile.am:5: but option 'subdir-objects' is disabled
src/client/c/Makefile.am:5: warning: source file 'gen/reset.c' is in a subdirectory,
src/client/c/Makefile.am:5: but option 'subdir-objects' is disabled
src/client/c/Makefile.am:5: warning: source file 'gen/groupcacheread.c' is in a subdirectory,
src/client/c/Makefile.am:5: but option 'subdir-objects' is disabled
src/client/c/Makefile.am:5: warning: source file 'gen/mcprogmodestatus.c' is in a subdirectory,
src/client/c/Makefile.am:5: but option 'subdir-objects' is disabled
src/client/c/Makefile.am:5: warning: source file 'gen/mcwrite.c' is in a subdirectory,
src/client/c/Makefile.am:5: but option 'subdir-objects' is disabled
src/client/c/Makefile.am:5: warning: source file 'gen/openbusmonitortext.c' is in a subdirectory,
src/client/c/Makefile.am:5: but option 'subdir-objects' is disabled
src/client/c/Makefile.am:5: warning: source file 'gen/sendapdu.c' is in a subdirectory,
src/client/c/Makefile.am:5: but option 'subdir-objects' is disabled
src/client/c/Makefile.am:5: warning: source file 'gen/groupcachereadsync.c' is in a subdirectory,
src/client/c/Makefile.am:5: but option 'subdir-objects' is disabled
src/client/c/Makefile.am:5: warning: source file 'gen/mcprogmodetoggle.c' is in a subdirectory,
src/client/c/Makefile.am:5: but option 'subdir-objects' is disabled
src/client/c/Makefile.am:5: warning: source file 'gen/mcwriteplain.c' is in a subdirectory,
src/client/c/Makefile.am:5: but option 'subdir-objects' is disabled
src/client/c/Makefile.am:5: warning: source file 'gen/opengroupsocket.c' is in a subdirectory,
src/client/c/Makefile.am:5: but option 'subdir-objects' is disabled
src/client/c/Makefile.am:5: warning: source file 'gen/sendgroup.c' is in a subdirectory,
src/client/c/Makefile.am:5: but option 'subdir-objects' is disabled
src/client/c/Makefile.am:5: warning: source file 'gen/groupcacheremove.c' is in a subdirectory,
src/client/c/Makefile.am:5: but option 'subdir-objects' is disabled
src/client/c/Makefile.am:5: warning: source file 'gen/mcpropertydesc.c' is in a subdirectory,
src/client/c/Makefile.am:5: but option 'subdir-objects' is disabled
src/client/c/Makefile.am:5: warning: source file 'gen/mgetmaskversion.c' is in a subdirectory,
src/client/c/Makefile.am:5: but option 'subdir-objects' is disabled
src/client/c/Makefile.am:5: warning: source file 'gen/opentbroadcast.c' is in a subdirectory,
src/client/c/Makefile.am:5: but option 'subdir-objects' is disabled
src/client/c/Makefile.am:5: warning: source file 'gen/sendtpdu.c' is in a subdirectory,
src/client/c/Makefile.am:5: but option 'subdir-objects' is disabled
src/client/c/Makefile.am:5: warning: source file 'gen/gettpdu.c' is in a subdirectory,
src/client/c/Makefile.am:5: but option 'subdir-objects' is disabled
src/client/c/Makefile.am:5: warning: source file 'gen/mcindividual.c' is in a subdirectory,
src/client/c/Makefile.am:5: but option 'subdir-objects' is disabled
src/client/c/Makefile.am:5: warning: source file 'gen/groupcachelastupdates.c' is in a subdirectory,
src/client/c/Makefile.am:5: but option 'subdir-objects' is disabled
src/client/c/Makefile.am:5: warning: source file 'gen/openbusmonitorts.c' is in a subdirectory,
src/client/c/Makefile.am:5: but option 'subdir-objects' is disabled
src/client/c/Makefile.am:5: warning: source file 'gen/openvbusmonitorts.c' is in a subdirectory,
src/client/c/Makefile.am:5: but option 'subdir-objects' is disabled
src/client/c/Makefile.am:5: warning: source file 'gen/getbusmonitorpacketts.c' is in a subdirectory,
src/client/c/Makefile.am:5: but option 'subdir-objects' is disabled´´´

Submit knxd to Debian

As soon as @Maulkin is done with Debian PPAs (sometime next week, surely... ;) and as long as the dependencies of knxd are not cleaned up yet, I will put up a Debian PPA with somewhat-official packages. That should make it easier to run knxd on Debian.

This issue is half a reminder for me and half a marker for others who want to ask about this.

knxd hangs after a while

After compiling and packaging knxd 0.9.0-1 on Debian 7.8 i386 and armhf (RasPi B), it started hanging after some time (approx 3-4 hrs).

top shows 68 - 95 % cpu time on knxd, debug output appended. kill / ctrl-c is ignored, kill -9 works.

Layer 8(086D24C0,5522EF5B) LastUpdates start: 339 pos: 339
Layer 8(086E6238,5522EF5B) SendMessage(004): 00 76 01 53
Layer 8(086E6238,5522EF5B) RecvMessage(005): 00 76 01 53 2C
Layer 8(086D24C0,5522EF5B) LastUpdates start: 339 pos: 339
Layer 8(086D24C0,5522EF62) LastUpdates start: 339 pos: 339
Layer 8(086E6678,5522EF62) SendMessage(004): 00 76 01 53
Layer 8(086E6678,5522EF62) RecvMessage(005): 00 76 01 53 2C
Layer 8(086D24C0,5522EF62) LastUpdates start: 339 pos: 339
Layer 0(086B1D30,5522EF69) Recv(016): 06 10 02 07 00 10 01 00 08 01 00 00 00 00 00 00
Layer 1(086B1D30,5522EF69) Recv(010): 01 00 08 01 00 00 00 00 00 00
Layer 1(086B1D30,5522EF69) Send(002): 01 00
Layer 0(086B1D30,5522EF69) Send(008): 06 10 02 08 00 08 01 00
Layer 8(086D24C0,5522EF6B) LastUpdates start: 339 pos: 339
Layer 8(086E64E0,5522EF6B) SendMessage(004): 00 76 01 53
Layer 8(086E64E0,5522EF6B) RecvMessage(005): 00 76 01 53 2C
Layer 8(086D24C0,5522EF6B) LastUpdates start: 339 pos: 339
Layer 8(086D24C0,5522EF74) LastUpdates start: 339 pos: 339
Layer 8(086E6468,5522EF74) SendMessage(004): 00 76 01 53
Layer 8(086E6468,5522EF74) RecvMessage(005): 00 76 01 53 2C
Layer 8(086D24C0,5522EF74) LastUpdates start: 339 pos: 339
Layer 1(08660668,5522EF76) Heartbeat
Layer 1(08660B30,5522EF76) Send(010): 15 00 08 01 C0 A8 02 01 0E 58
Layer 0(08660B30,5522EF76) Send(016): 06 10 02 07 00 10 15 00 08 01 C0 A8 02 01 0E 58
Layer 0(08660B30,5522EF76) Recv(008): 06 10 02 08 00 08 15 00
Layer 1(08660B30,5522EF76) Recv(002): 15 00
Layer 0(086B1D30,5522EF78) Recv(016): 06 10 02 07 00 10 01 00 08 01 00 00 00 00 00 00
Layer 1(086B1D30,5522EF78) Recv(010): 01 00 08 01 00 00 00 00 00 00
Layer 1(086B1D30,5522EF78) Send(002): 01 00
Layer 0(086B1D30,5522EF78) Send(008): 06 10 02 08 00 08 01 00
Layer 8(086D24C0,5522EF7B) LastUpdates start: 339 pos: 339
Layer 8(086E6860,5522EF7B) SendMessage(004): 00 76 01 53
Layer 8(086E6860,5522EF7B) RecvMessage(005): 00 76 01 53 2C
Layer 8(086D24C0,5522EF7B) LastUpdates start: 3

Don't link with clutter in /usr/local/lib

If the user has old eibd cruft (libraries and/or binaries) in /usr/local, knxd should not configure, not build, not link, not "make install", and/or not let them install the package.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.