# FHEM on the Fritz!Box

## Description

This document describes how to install FHEM on the fritzbox.
What works:

- The basic fhem.pl server with at commands, notify, logging (tested)
- FHZ1000 and FHZ1300 (both tested)
- FS20, FHT and KS300-2 (tested)
- HMS (untested, but should work)
- SunSet/SunRise.
- one of the Web frontends (webpgm2, the builtin one)

What does not work right now:

- Gnuplot. No idea how to replace it, perhaps we compile a fritzbox version
- EM1010PC. I tried it without batteries, and I think the USB interface cannot power an USB hub, an FHZ1300 and an EM1010PC together. The fritzbox resets when trying to initialize the devices. More experiments needed.
- WS300PC. Untested, don't have one.

## Howto

Tested on the fritzbox 7170, with Firmware 29.04.49.
Note:The kernel modules are for kernel 2.6.13.1, and perl is compiled for uCLibc 0.9.28.
Prerequisites:

- You need a fritzbox with an USB host port. Check your kernel version. If it won't match the version above, see the "Compile tips" in this document.
- an USB hub (a small passive one is enough).
- an FHZ1000 or FHZ1300
- a USB stick, at least 64MB. As the fritzbox is USB 1.1 only, the slowest is fast enough.
- telnet access for the fritzbox. See the links on how to enable it.
- the complete fhem package from the links section.

Installation:

- Connect the USB stick to a PC, and unpack the content of the fb_fhem_x.y.tar.gz in the root directory of the USB stick. You'll get a perl 5.6.2 installation with just those modules wich are needed by fhem, an empty 32MB swapfile with a swapon/swapoff command, the fhem server with an empty configuration file, and an rc.fhem script which should start everything.
- Connect the USB stick and the FHZ1x00 via the USB hub to the fritzbox.
- Log in via telnet to the fritzbox.
- Change into the directory /var/media/ftp/*Partition*/usr/fhem .
- Execute the command rc.fhem.
- Now you can either use a Web browser:
  http://192.168.178.1:8083/fhem
  with the online help, or choose the command-line via:
  telnet fritz.box 7072
  to define your devices.
- To enable automatic startup after reboot of the fritzbox enter the following at the end of the /var/flash/debug.cfg:
  /bin/sleep 120
  cd /var/media/ftp/*Partition*/usr/fhem && ./rc.fhem

Tips:

- The installation creates the link /var/usr to the USB disk (/var/media/ftp/*Partition*/usr)
- In the beginning only the most necessary (in my opinion, anyway :-) modules are installed: FHZ/FS20/HMS/KS300/SUNRISE_EL. If you want to use other modules, they are in the /var/usr/fhem/FHEM/unused directory, just move the needed module in the parent directory, and do a "reload module" (without the .pm suffix).
- If you use webpgm2, and unsure about an attribute, then just define it, you'll get a link to the description of the attribute in the online help".
- If your're unsure about the parameters for a command try "?" as an argument, e.g.:
  ?
  define <name> ?
  define <name> <type> ?
  set <name> ?

## Compile tips

Note: You don't need to compile anything if you have the correct kernel and uclibc version.
I compiled the ftdi_sio module with the help of the ds26-15.1 packages, see the links.
The ftdi_sio module had to be modified, as 2.6.13 does not contain the USB ID's of the ELV devices.
Compiling a working perl for the fritzbox was a nightmare. After compiling 5.8.8 I dicovered it has a strange bug: Appending numbers to strings won't work on the fritzbox. This is why I compiled an "old" (5.6.2) one, which seems to work perfectly.

## Links

- Complete fhem package for the fritzbox: fb_fhem_0.4.tar.gz
- Telnet on the fritzbox: ip-phone-thread
- Compiler for the fritzbox: ds26-15.1