Wenn man eine ISDN-Karte im VDR verbaut, dann können Informationen zu Anrufern am Fernseher angezeigt werden.
Hier eine Anleitung dazu.
AB Ubuntu 11.04 werden nur noch wenige ISDN-Geräte unterstützt, daher nicht mehr weiter aktualisiert.
Damit die ISDN-Karte unter Ubuntu läuft, benötigen wir das Kernel-Modul fcpci
.
Zunächst installieren wir benötigte Pakete.
apt-get install build-essential linux-headers-$(uname -r) capiutils libcapi20-3 libcapi20-dev pppdcapiplugin
Nun werden die Quellen geholt und installiert.
mkdir -p /data/installfiles/isdn cd /data/installfiles/isdn
#Bis Ubuntu 10.04 wget https://belug.de/~lutz/pub/fcpci/fritz-fcpci-src-2.6.31_untested.tar.bz2 #Ab Ubuntu 10.10 wget https://belug.de/~lutz/pub/fcpci/fritz-fcpci-2.6.34.tar.bz2
Bevor das Quellpaket installiert wird müssen noch Anpassungen zum Laden der Kernel-Module gemacht werden.
vi /etc/modules
capidrv capi fcpci
vi /etc/modprobe.d/blacklist-avmfritz.conf
blacklist avmfritz blacklist mISDNipac blacklist mISDN_core blacklist hisax blacklist hisax_fcpcipnp blacklist hisax_isac
Nun noch ein Reboot damit die Änderungen wirksam werden.
shutdown -r now
Jetzt installieren wir die Quellpakete
cd /usr/local/src tar xfz /data/installfiles/isdn/fritz-fcpci-<VERSION>.tar.bz2 cd fritz-fcpci-2.6.34/src make clean && make -j2 all
Bis Ubuntu 10.04 muss eine Verlinkung vorgenommen werden. Ab Ubuntu 10.10 ist dies nicht mehr nötig.
cd lib rm fcpci-lib.o ln -s 32_fcpci-lib.o fcpci-lib.o
ODER
ln -s 64_fcpci-lib.o fcpci-lib.o
mkdir /lib/modules/`uname -r`/extra cp fcpci.ko /lib/modules/`uname -r`/extra/ depmod -a
Nun testen wir ob sich das Modul laden lässt.
modprobe -rf fcpci modprobe -v fcpci
vi /etc/isdn/capi.conf
Zeile mit "fcpci" entkommentieren
capiinit capiinfo
Ausgabe sollte so aussehen:
Number of Controllers : 1 Controller 1: Manufacturer: AVM GmbH CAPI Version: 2.0 Manufacturer Version: 3.11-07 (49.23) Serial Number: 1000001 BChannels: 2 Global Options: 0x00000039 internal controller supported DTMF supported Supplementary Services supported channel allocation supported (leased lines) B1 protocols support: 0x4000011f 64 kbit/s with HDLC framing 64 kbit/s bit-transparent operation V.110 asynconous operation with start/stop byte framing V.110 synconous operation with HDLC framing T.30 modem for fax group 3 Modem asyncronous operation with start/stop byte framing B2 protocols support: 0x00000b1b ISO 7776 (X.75 SLP) Transparent LAPD with Q.921 for D channel X.25 (SAPI 16) T.30 for fax group 3 ISO 7776 (X.75 SLP) with V.42bis compression V.120 asyncronous mode V.120 bit-transparent mode B3 protocols support: 0x800000bf Transparent T.90NL, T.70NL, T.90 ISO 8208 (X.25 DTE-DTE) X.25 DCE T.30 for fax group 3 T.30 for fax group 3 with extensions Modem 0100 0200 39000000 1f010040 1b0b0000 bf000080 00000000 00000000 00000000 00000000 00000000 00000000 01000001 00020000 00000000 00000000 00000000 Supplementary services support: 0x000003ff Hold / Retrieve Terminal Portability ECT 3PTY Call Forwarding Call Deflection MCID CCBS
Darauf achten, dass 2 B-Kanäle (BChannels) erkannt werden!
Testeinwahl auf eine Handynummer.
cp /etc/ppp/peers/provider /etc/ppp/peers/provider-ori vi /etc/ppp/peers/provider
Inhalt:
debug sync noauth -chap user netways plugin userpass.so password netways defaultroute plugin capiplugin.so #controller 1 #numberprefix 0 number <EINWAHLNUMMER> protocol hdlc ipcp-accept-local ipcp-accept-remote /dev/null
Einwählen mit
pon
Abwahl mit
poff
oder
killall pppd
apt-get install isdnlog
shutdown -r now
Nun einfach mal einen Anruf vom Handy tätigen und testen
tail -f /var/log/isdn/isdnlog
ODER
tail -f /var/lib/isdn/calls
Hier muß dann angezeigt werden dass die Handynummer angerufen hat.
vi /etc/isdn/isdnlog.isdnctrl0
Inhalt:
start=yes</code ISDNLog kann folgendermaßen gestoppt/gestartet werden service isdnutils stop isdnlog service isdnutils start isdnlog ODER service isdnutils restart vi /etc/isdn/callerid.conf <code>[MSN] NUMBER=1859747 ALIAS=Mein Telefon START={ [FLAG] FLAGS=IR # PROGRAM=/usr/local/bin/displaymsg "Anruf von \"\$2\"" PROGRAM=/usr/local/bin/svdrpsend.pl -d 127.0.0.1 -p 6419 MESG "Anruf von \"\$2\"" TIME=8-23 }
apt-get install lynx
vi /data/isdn/invsuche.sh
Inhalt:
#!/bin/bash #pfad zum cachefile CACHE="/tmp/invsuche" #pfad zur svdrpsend.pl SVDRPSEND="/usr/local/bin/svdrpsend.pl -d 127.0.0.1 -p 6419" #pfad um das tempfile anzulegen TMPFILE="/tmp/tmpsuche" LOG="/tmp/invlog" echo "Param1: $1 " >> $LOG echo "Param2: $2 " >> $LOG # Anzahl der Sekunden zwischen den Nachrichten WAIT=5 NUMMER=`echo $1 | sed -e "s/\ //g" -e "s/+49/0/"` echo "Suche nach $NUMMER im cache" NAME=`awk -F '\t' '{ if ($1 == "'$NUMMER'") print $2 }' $CACHE` DETAILS=`awk -F '\t' '{ if ($1 == "'$NUMMER'") print $3 }' $CACHE` echo "Name: $NAME" echo "Details: $DETAILS" if [ "$NAME" == "" ]; then echo "Suche nach $NUMMER in [URL]www.dasoertliche.de[/URL]" lynx "http://www.dasoertliche.de/Controller?form_name=search_inv&ph=$NUMMER" -dump -nolist -connect_timeout=3> $TMPFILE NAME=`grep RTRTRTRT -A 6 $TMPFILE | awk '{ if (FNR == 1) print $0 }' | sed -e "s/RTRTRTRT//" -e "s/\ \+//" -e "s/\ \+/\ /g" -e "s/\[_\]//g"` DETAILS=`grep RTRTRTRT -A 6 $TMPFILE | awk '{ if (FNR == 2) print $0 }' | sed -e "s/\ \+//" -e "s/\ \+/\ /g" -e "s/\[_\]//g"` if [ "$NAME" == "" ]; then if grep "Kein Teilnehmer gefunden" $TMPFILE > /dev/null; then NAME="Telefonnummer $NUMMER" DETAILS="Kein Eintrag $2" fi; fi; if [ "$NAME" == "" ]; then NAME="Telefonnummer $NUMMER" DETAILS="Fehler $2" else echo -e "$NUMMER\t$NAME\t$DETAILS" >> $CACHE fi; echo "Name: $NAME" echo "Details: $DETAILS" fi $SVDRPSEND "MESG Anruf von $NAME ..." sleep $WAIT $SVDRPSEND "MESG ... $DETAILS" sleep $WAIT $SVDRPSEND "MESG Anruf von $NAME ..." sleep $WAIT $SVDRPSEND "MESG ... $DETAILS"
vi /etc/isdn/callerid.conf
Inhalt:
PROGRAM=/data/isdn/invsuche.sh $2 $17