====== Isdn ======
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.**
===== Vorbereitungen =====
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-.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
===== Capi einrichten =====
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!**
===== Einwahl testen =====
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
protocol hdlc
ipcp-accept-local
ipcp-accept-remote
/dev/null
Einwählen mit
pon
Abwahl mit
poff
oder
killall pppd
===== VDR konfiguration =====
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
[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
}
===== Telefonnummer Rückwärtssuche =====
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