Category Archives: Linux

Stuff about Linux

Raspberry PI: Connecting a HD44780 Display over I2C Bus

Hi everybody,

some application, i.e. XBMC can show informations on a display by using LCDproc as driver.

This post describes a way to connect a HD44780 display to a Raspberry PI  by i2c bus.

Let’s start with the physical layer. This is the overview schematic on how to connect the display to a Raspberry PI.

Connecting a hd44780 Display with Raspberry PI
Connecting a hd44780 Display with Raspberry PI

Based on these I developed small board with a 6 Pin header which is Pin compatible to the Raspberry PI. So a simple 6 pole ribbon cable can be used to connect the HD44780 Display to the fruit.
Here is my PCB. First the schematic.

Board schematic
Board schematic

and my board layout. Unfortunately there are a lot HD44780 models available and the location and the direction of the pins are different, so you have to adapt the layout to the specification of your display.
Continue reading Raspberry PI: Connecting a HD44780 Display over I2C Bus

EIB/KNX: Upstart startup script for eibd

Hi,

as a follow up of the 2 previous posts(compiling eibd and SysV startup script) here is a sample Upstart script for the eibd daemon. Some Ubuntu based distributions uses the upstart start mechanism.

Login as root at your machine where eibd is installed and add a user under  which the eibd process should run.

useradd eibd -s /bin/false -U -M

Create the upstart conf file /etc/init/eibd.conf

#######################################################################
# eibd - startscript for the eibd daemon
description "eibd daemon Upstart script"
author "Michael Albert info@michlstechblog.info"

start on (filesystem or resume)
stop on (suspend or runlevel [!2345])
expect fork
normal exit 0

pre-start script
route add 224.0.23.12 dev eth0 2>&1 > /dev/null || true
end script

script
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/local/bin/eibd
DAEMON_OPTS="-d -D -T -R -S -i -u --eibaddr=1.1.128 ipt:192.168.56.1"
exec start-stop-daemon --start -c eibd --exec $DAEMON -- $DAEMON_OPTS
end script

post-stop script
route delete 224.0.23.12 2>&1 > /dev/null || true
end script
#######################################################################

Continue reading EIB/KNX: Upstart startup script for eibd

KNX/EIB: System V startscript for eibd

Hi,

in a previous post I have descriped how to compile the eibd daemon for the Raspberry PI. Here is a sample debian startscript to start eibd at system boot.

Login as root at your EIBd box and  created a user under which the daemon should run.

useradd eibd -s /bin/false -U -M

Create the script eibd in /etc/init.d
Continue reading KNX/EIB: System V startscript for eibd

Raspberry PI: Cross compiling the KNX/EIB eibd

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.
Continue reading Raspberry PI: Cross compiling the KNX/EIB eibd

Linux: Multiple ways to mount a partition in a disk image file

Hi,

there are several ways to mount a partition which is within a diskimage file created for example with dd.

The first and hard way  is to determine the offset of the partition start sector and mounting the disk by specifing the offset as parameter for the loop device.

You can use the  file or fdisk command to examine the file.
root@ubdev:/mnt/RaspberryPI # file 2012-07-15-wheezy-raspbian.img
2012-07-15-wheezy-raspbian.img: x86 boot sector; partition 1: ID=0xc, starthead 130, startsector 8192, 114688 sectors; partition 2: ID=0x83, starthead 165, startsector 122880, 3665920 sectors, code offset 0xb8

or

root@ubdev:/mnt/RaspberryPI # fdisk 2012-07-15-wheezy-raspbian.img

Command (m for help): p

Disk 2012-07-15-wheezy-raspbian.img: 1939 MB, 1939865600 bytes
255 heads, 63 sectors/track, 235 cylinders, total 3788800 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000714e9

Device Boot                               Start         End      Blocks   Id  System
2012-07-15-wheezy-raspbian.img1            8192      122879       57344    c  W95 FAT32 (LBA)
2012-07-15-wheezy-raspbian.img2          122880     3788799     1832960   83  Linux

For example the startsector of partition 2 is 122880,  this multiplied with the 512 bytes per sector is the byte offset of the partition. 122880*512=62914560.
Continue reading Linux: Multiple ways to mount a partition in a disk image file