The European Installation Bus is a system for home controlling and automation. A bus coupling unit (BCU1) is in most cases the base for a RS-232 interface to a computer system. Due to very restrict timing constraints the low level communication protocol can not be handled in userland applications.
A FreeBSD kernel driver has been developed to access the BCU1 (External Physical Interface Type 16). It was influenced heavily by the open source Linux Device Driver for the European Installation Bus and shares the same device (userland) API.
Works stable on FreeBSD 6/7, was used for several years on FreeBSD 4.2.
There is no much documentation. Important information about resource assignment is in eib(4) manual page in the port for FreeBSD versions 5.x and later.
A good introduction is in the diploma thesis of Bernd Thallner, author of the Linux device driver (see links)
In spring 2002 I started a survey on accessing the EIB under FreeBSD. Unfortunately I didn't found any solution, but a device driver for Linux. I contacted the author and started the port. I had success in creating a loadable kernel module for FreeBSD but shortly after I had no time to continue. In autumn 2002 I tried to continue, but I felt it was too difficult to port the several Linux APIs for timer access, locking, device interfaces and so on. So I made a break and started again with an empty device driver skeleton. First I tested the interrupt handling and later I implemented the interface protocol. In opposite to the Linux driver there is no state machine used at this time.
The Linux device driver source code was used to start the FreeBSD port and was a very useful help in further development, but the current kernel driver does not contain any parts of it.
In October 2002 after a lot of debugging and testing the 1st bus access was possible.
In October 2004 a made a package quick and dirty ready for download. The code has still no good quality, but was sufficient for daily usage for 2 years. ;-)
In autumn 2005 the version for FreeBSD 6 was finished and went into "production".
Download the sources for FreeBSD 4.x eib4bsd_0.17.tgz.
For FreeBSD 6.x/7.x/8.x is a port available. It should compile and run under FreeBSD 5.x as well, but this is not tested yet.
Copyright © 2002-2008 Frank Behrens, Germany
All rights reserved.
The FreeBSD license applies to this software:
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|© Frank Behrens 2008-02-19
BSD Daemon Copyright 1988 by Marshall Kirk McKusick. All Rights Reserved.