Telnet auf FritzBox 7490 mit FRITZ!OS 6.30 dauerhaft reaktivieren

Neulich musste ich feststellen, dass 1&1 hinter meinem Rücken wohl per TR-069 meine FritzBox 7490 von FritzOS 6.24 auf 6.30 aktualisiert und damit meine intelligente Anrufweiterleitungsfunktion mit FHEM zerstört hat. Falls auch Sie Telnet auf Ihrer FritzBox 7490 nach dem 6.30er Update schmerzlich vermissen, hier eine Möglichkeit um es wieder zu aktivieren:

Zuerst das FritzBox 6.24 Downgrade Image herunterladen. Es scheint zur Zeit nicht mehr auf dem offiziellen FTP zu sein, evtl. mir eine Email schreiben dann sehe ich was ich tun kann. Ein Backup machen und mit Kennwort versehen. Das Kennwort ist besonders wichtig, weil ohne ging der Reimport dann nicht mehr. Danach das Image wie gewohnt einspielen. Auf FritzOS 6.24 dann die Internetverbindung auf der FritzBox wiederherstellen, die Telefonie einrichten und mit einem angeschlossenen Handgerät #96*7* wählen um den telnetd zu aktivieren.

Telnetd sollte nun wieder erreichbar sein:

telnet fritz.box
Trying 192.168.181.1...
Connected to fritz.box.
Escape character is '^]'.
password:

BusyBox v1.20.2 (2014-09-26 13:25:19 CEST) built-in shell (ash)
Enter 'help' for a list of built-in commands.

Nun kann ein Update auf 6.30 mit einigen Modifikationen per modfs vorgenommen werden:

mkdir -p /var/mod;cd /var/mod;wget -qO- http://yourfritz.de/7490/modfs.tgz | gunzip -c | tar x;./modfs update

Ermitteln der Hardware-Version ... OK
Prüfen, ob die Hardware-Version unterstützt wird ... OK
Suchen der Einstellung zur Umschaltung auf das alternative System ... OK
Prüfen der aktuell zu startenden Systemversion ... OK
Suchen der aktuellen Kernel-Partition ... OK
Suchen der alternativen Kernel-Partition ... OK
Vergleich der Systeme in den Kernel-Partitionen ... übersprungen
Suchen der aktuellen Dateisystem-Partition ... OK
Suchen der alternativen Dateisystem-Partition ... OK
Überprüfen des zur Verfügung stehenden Speicherplatzes im RAM ... OK
Überprüfen des freien Speicherplatzes für das Auspacken des Dateisystems ... OK

Das System erfüllt die Voraussetzungen zur Modifikation des root-Dateisystems.

Im Moment läuft auf der Box die Version: 113.06.24

Die Auswahl des 'update'-Modus erfordert eine neuere Firmware-Version vom
FTP-Server des Herstellers.

Ermitteln der neuesten Version durch Suche auf dem FTP-Server ... OK
Es wurde eine neuere Version (113.06.30) auf dem FTP-Server gefunden.
Download eines aktuellen Firmware-Images vom FTP-Server des Herstellers ... OK
Extrahieren des neuen Kernel-Images aus dem Firmware-Image ... OK
Extrahieren des Flash-Filesystems aus dem Firmware-Image ... OK
Extrahieren des Wurzeldateisystems aus dem Flash-Filesystem ... OK
Löschen des geladenen Firmware-Images ... OK
Entpacken des root-Dateisystem für die Modifikationen ... OK

Das entpackte Dateisystem ist jetzt bereit für die Modifikationen.

Verzeichnis des root-Dateisystems : /var/media/ftp/1447338623/squashfs-root

Die Modifikation 'enable system selection from GUI' wird verarbeitet ...
Überprüfen der unterstützten Sprachen ... OK
Überprüfen der Voraussetzungen für die Modifikation ... OK
Modifikation wird ausgeführt ... OK
Überprüfen des Erfolgs der Modifikation ... OK

Die Modifikation 'enable system selection from GUI' wurde angewendet, Fehlercode = 0.

Die Modifikation 'enable rc.user execution' wird verarbeitet ...
Überprüfen der unterstützten Sprachen ... OK
Überprüfen der Voraussetzungen für die Modifikation ... OK
Modifikation wird ausgeführt ... OK
Überprüfen des Erfolgs der Modifikation ... OK

Die Modifikation 'enable rc.user execution' wurde angewendet, Fehlercode = 0.

Die Modifikation 'create edit_rcuser command' wird verarbeitet ...
Überprüfen der unterstützten Sprachen ... OK
Soll die Modifikation 'create edit_rcuser command' mit folgender Beschreibung
Es wird ein zusätzliches Kommando 'edit_rcuser' erzeugt, mit dem die Kommandos
in der Datei 'rc.user' sicher bearbeitet werden können, ohne daß man sich um
die Besonderheiten des TFFS kümmern muß.
angewendet werden ? (j/N) N

Die Modifikation '(re)enable telnet daemon' wird verarbeitet ...
Überprüfen der unterstützten Sprachen ... OK
Soll die Modifikation '(re)enable telnet daemon' mit folgender Beschreibung
Erstellen eines Symlinks, um die Ausführung des telnetd-Applets der
Busybox wieder zu ermöglicen
angewendet werden ? (j/N) j
Überprüfen der Voraussetzungen für die Modifikation ... OK
Modifikation wird ausgeführt ... OK
Überprüfen des Erfolgs der Modifikation ... OK

Die Modifikation '(re)enable telnet daemon' wurde angewendet, Fehlercode = 0.

Die Modifikation 'enable custom profile extension' wird verarbeitet ...
Überprüfen der unterstützten Sprachen ... OK
Soll die Modifikation 'enable custom profile extension' mit folgender Beschreibung
/etc/profile modifizieren, um die Kommandos in /var/custom/profile am Ende
zusätzlich auszuführen, wenn diese Datei existiert
angewendet werden ? (j/N) N

Das ist die letzte Chance zum manuellen Modifizieren des Dateisystems in /var/media/ftp/1447338623/squashfs-root.

Die Eingabetaste drücken, um mit dem Packen des neuen root-Dateisystems zu beginnen
oder 'q' eingeben, um die letzte Möglichkeit zum Abbruch zu nutzen :

Packen des neuen root-Dateisystems ... /

Die Optionen wie oben gezeigt wählen und mit Enter quittieren. Danach einen reboot durchführen.

Damit einem nicht wieder der Netzbetreiber heimlich updates einspielen kann empfiehlt es sich den tr-069 zu deaktivieren. Dies kann einfach per ctlmgr_ctl erreicht werden:

Bei dem Mod kann auch die debug.cfg wieder reaktiviert werden.
Danach kann die debug.cfg wieder wie gewohnt mit nvi editiert werden:

Falls man fhem mit https auf FRITZ!OS 6.20 betreiben möchte, kommt es beim Starten zu folgendem Fehler:

weil AVM die OpenSSL von 0.9.8j auf 1.0.1h angehoben hat.

Ein Workaround ist die Verwendung der alten Libraries:

Auch können die fehlenden Programme netcat und socat über eine unbeschnittene Busybox nachinstalliert werden:

Danach ist netcat wieder verfügbar unter:

Fhem über UMTS updaten

Wegen den längeren Latenzzeiten von UMTS im Vergleich zu DSL scheitert ein Fhem Update über UMTS/3G typischerweise mit der Fehlermeldung:
Can't get controlfile from http://fhem.de/fhemupdate4/svn/controls_fhem.txt

Ein Erhöhung des Timeouts in den HttpUtils brachte bei mir leider keine Abhilfe. Alternativ dazu kann das Fhem per SVN upgedatet werden. Dazu falls nötig zuerst Subversion installieren, Fhem per shutdown herunterfahren und den aktuellen trunk auschecken:

Ein Update kann nun in Zukunft ganz einfach per SVN durchgeführt werden:

dblog auf Fhem einrichten

Mit der Zeit sammeln sich selbst in kleinen und mittleren Fhem Installationen viele Messwerte in den verschiedenen Logdateien. Dies ist nicht unübersichtlich sondern erschwert auch die nachträgliche Auswertung. Daher bietet es sich an, diese Messwerte gleich in einer Datenbank zu speichern. Dazu gibt es das Modul dblog dessen Einrichtung hier kurz skizziert werden soll.

Update fhem und falls erwünscht das charting frontend:
update
update thirdparty http://svn.code.sf.net/p/fhem/code/trunk/fhem/www/frontend frontend

Installiere sqlite und Perl plugins:

Alternativ könnten auch MySQL oder PostgreSQL verwendet werden, dazu müssten dann natürlich die entsprechenden Perl Module installiert werden.

und fügen Sie folgende Tabellen hinzu:

CREATE TABLE history (TIMESTAMP TIMESTAMP, DEVICE varchar(32), TYPE varchar(32), EVENT varchar(512), READING varchar(32), VALUE varchar(32), UNIT varchar(32));

CREATE TABLE current (TIMESTAMP TIMESTAMP, DEVICE varchar(32), TYPE varchar(32), EVENT varchar(512), READING varchar(32), VALUE varchar(32), UNIT varchar(32));

CREATE TABLE frontend (ID INTEGER PRIMARY KEY, TIMESTAMP TIMESTAMP DEFAULT CURRENT_TIMESTAMP, TYPE TEXT, NAME TEXT, VALUE TEXT);

mit .tables können Sie überprüfen ob die drei Tabellen (current, history, frontend) korrekt angelegt wurden, mit .exit können sie die Datenbankshell wieder schließen.

Stellen Sie sicher dass Fhem Schreibzugriff auf die Datenbank hat:

Editieren Sie die db.conf:

und fügen Sie folgendes hinzu:

%dbconfig= (
connection => "SQLite:dbname=/opt/fhem/fhem.db",
user => "",
password => ""
);

CUL auf Radxa Rock

Zuerst das passende cdc-acm kernel modul herunterladen z.B. hier für Kernel 3.0.36. Oder selber kompilieren.

Wenn es funktioniert kann man das Modul dauerhaft installieren:

und cdc-acm eintragen

nach einem Neustart sollte:

auftauchen
/dev/ttyACM0

Den entsprechenden Nutzern sollten Zugriffsrechte eingeräumt werden:

Danach können Sie den CUL z.B. in Fhem verwenden:
define CUL_0 CUL /dev/ttyACM0@38400 9999
attr CUL_0 group System
attr CUL_0 rfmode HomeMatic
attr CUL_0 room hidden

in den Pairing Modus versetzen:
set CUL_0 hmPairForSec 600

Falls autocreate aktiv ist können die anderen Homematic Geräte nun ebenfalls in den Pairing Modus versetzt werden und sollten dann automatisch von fhem angelegt werden.

Fhem auf Radxa Rock installieren

Der Fhem Server ist nun zum Beispiel erreichbar unter:
http://radxa:8083/fhem

Gleich mal ein:

und schon ist man auf dem neuesten Stand und kann die Geschwindigkeit des Rock voll auskosten.

Jetzt noch ein altes Backup importieren:

Klingelerkennung mit FHEM und 1-wire

Die Vorteile einer solchen Schaltung sind z.B.:

  • man kann sich per PushOver informieren lassen wenn es klingelt, auch wenn man auf dem Balkon sitzt und sonst die Klingel nicht hören würde
  • man weiß ob der Paketzusteller wirklich versucht hat das Paket zuzustellen!?
  • mann kann zu bestimmten Zeiten die Klingel einfach vollkommen deaktivieren, z.B. in der Nacht, wenn das Oktoberfest tobt 🙂

Hier ein Schaltplan zur Klingelsignalerkennung an einer 8V Wechselstromklingel mit 1-Wire:

Klingelerkennung Schaltplan

In Fhem eingebunden schaut das ganze dann so aus:

Per PushOver kann man sich dann bequem über Klingelevents informieren lassen:

Control LG Tv with FHEM

If you want to integrate your LG TV in the FHEM home automation solution, my 82_LGTV2011.pm and 82_LGTV2012.pm modules can help. Here a short tutorial on how to get it working:

First you have to find out which API your LG TV uses. In principle there are three different APIs (1.0/2.0/3.0) corresponding to the 2011, 2012 and 2013 series. The former should use the LGTV_2011 module whereas the latter should use the LGTV_2012 module. If you are not sure which series you have, you can also try the two LG Remote apps and see which one works (2011 / 2012).

Make sure these perl modules are installed:

LWP::UserAgent
HTTP::Request::Common
XML::SIMPLE

If you are on a linux box:

If you are on another machine with full perl:

Before you install XML::Simple, you must have an XML parser module like XML::Parser or XML::SAX installed. The easiest way then is to install with the CPAN shell:

If you are on an embedded system like the Fritzbox, you probably don’t have CPAN, so you have to download the modules by hand and put them in your perl installation.

Now you can define the TV in fhem for 2011 series :

and for 2012 series and up:

To power on, you can use a cec-client and define a poweroncmd:

And finally an example by Franz Tenbrock how to build a soft remote with the remotecontrol module:

remotecontrol

Furthermore the fhem discussion board members Kuzl & Franz developed an electronic program guide for fhem which can be integrated as follows:

Add the following definitions to your fhem.cfg

Download the channel icons from here and put them into /opt/fhem/www/images/default and do a shutdown restart.

Switching to channels in the EPG currently only works for the lgtv2011 module.
In 99_myUtils.pm add the function:

Make sure channelMap is adjusted to your sender positions.

Now you should be able to see the current and upcoming programs and switch to them by simply clicking on them.

EPG

FritzBox debug.cfg editieren

Wenn man Befehle bei jedem FritzBox Start ausführen mag z.B. eigene Programme nachinstallieren, FritzLoad! oder FHEM kann man dies in der debug.cfg tun.

Das geht ganz einfach mit dem vi Derivat nvi:

dann vi typisch:

  • i für insert
  • dd um Zeile zu löschen
  • esc+:q zum abbrechen
  • esc+:wq zum speichern

Um zum Beispiel FHEM als root zu starten müsste die Zeile:

/var/InternerSpeicher/fhem/startfhemAsRoot

eingefügt werden. Das Ganze geht allerdings auch noch einfacher als One-Liner:

Fhem notifications with Pushover

Here a short HowTo for sending Fhem notifications to iOS or Android devices via Pushover.

First install the Pushover App from the Appstore and register inside the app.

Download and unpack the perl modules LWP::Protocol::https and Mozilla::CA.

Transfer them to /var/InternerSpeicher/fhem/lib/perl5/site_perl/5.12.2 via NAS etc.
The final folder structure should look like this:

In your fhem.cfg add:

Now you can push messages to your iDevices like this:

Fhem over SSL

Generate the needed certificates on osx/linux
[sourcecode] openssl req -new -x509 -nodes -out server-cert.pem -days 3650 -keyout server-key.pem[/sourcecode]
Copy to fhem/certs using the NAS webinterface

To open the port from outside, connect to the fritzbox via telnet or ssh and
[sourcecode]
nvi /var/flash/ar7.cfg
[/sourcecode]
press i to enter insert mode, change line 235 as follows:
[sourcecode]
internet_forwardrules = "tcp 0.0.0.0:443 0.0.0.0:443 0",
"tcp 0.0.0.0:8083 0.0.0.0:8083 0";
[/sourcecode]
Save by pressing ESC :wq
and [sourcecode]reboot[/sourcecode] to reboot the fritzbox.

Now your fhem instance should be available from outside at:
https://xxx.myfritz.net:8083/fhem