home über marty Sonstiges Linux OpenBSD CDVerwaltung Greetz wieso marty44?? Links

Cisco 7970 mit einer Fritzbox 7390 nutzen

Es gibt dutzende Anleitungen im Web zur Konfiguration der Fritzbox und des 7970, daher hier nur eine Kurzanleitung.

Netzwerkaufbau: Cisco 7970 VoIP Telefon mit SIP Firmware 9.3.1SR4 (kann man nach kostenloser Registrierung auf cisco.com runterladen, Dateiname cmterm-7970_7971-sip.9-3-1SR4-1.zip), statische IP auf 192.168.44.80 eingestellt, TFTP Server auf 192.168.44.1 gesetzt (leider hat die Fritzbox noch keinen TFTP Server, daher verwende ich den utftpd unter Linux). Fritzbox mit der IP 192.168.44.2. Ein Linuxserver mit TFTP Server, IP: 192.168.44.1.

Im TFTP Verzeichnis liegen folgende Dateien:

apps70.9-3-1ES26.sbn      Firmware
cnu70.9-3-1ES26.sbn       Firmware
ctu.raw                   Klingelton, bekannt aus der Serie 24
cvm70sip.9-3-1ES26.sbn    Firmware
dialplan.xml              Dialplan (siehe unten)
dsp70.9-3-1ES26.sbn       Firmware
jar70sip.9-3-1ES26.sbn    Firmware
ringlist.xml              Klingeltonliste (siehe unten)
SEP001F6CABCDEF.cnf.xml   Konfigurationsdatei für das Telefon mit der MAC Adresse 001F6CABCDEF (siehe unten)
SIP70.9-3-1SR4-1S.loads   Firmware
term70.default.loads      Firmware
Im htdocs Verzeichnis des Webservers liegen folgende Dateien:
ciscoauth.php		  Authorisierung für Screenshots, etc
directory.php		  Telefonbuch

Um ein 7970 zurückzusetzen, muß man es aus und einschalten (sprich LAN Kabel oder Netzteil ziehen). Beim einschalten die # Taste gedrückt halten. Nach einer Weile blinken die Schnellwahltasten nacheinander in Amber. Nun die # Taste loslassen und 123456789*0# eingeben. Das Telefon sollte nun versuchen, sich die Firmware, etc zu ziehen.
Manchmal kann es auch notwendig sein, das Telefon tiefergehend zurückzusetzen. Dazu anstatt 123456789*0# die Kombination 3491672850*# eingeben.
Um eine manuelle Netzwerkkonfiguration einzugeben, muß zuerst die Netzwerkconfig freigeschaltet werden. Dazu den Settingsbutton drücken und die Kombination **# eingeben. Sollte das Telefon ein Passwort verlangen, so lautet das Default Passwort cisco. Die Eingabe erfolgt wie bei einem Handy mit den Zahlentasten.

Ist die Konfiguration freigeschaltet, erkennt man es an dem kleinen Schloßsymbol:
Cisco 7970 Config locked Cisco 7970 Config unlocked

Nun in die Network Configuration und anschließend in das IPv4 Configuration Menu gehen. Folgende Einstellungen habe ich statisch vorgenommen:
DHCP disabled und IP Adress auf 192.168.44.80 gesetzt Subnet Mask auf 255.255.255.0 und Default Router 1 auf 192.168.44.2 gesetzt
DNS Server 1 auf 192.168.44.2 gesetzt TFTP Server 1 auf 192.168.44.1 gesetzt


Die Konfigurationsdatei SEP001F6CABCDEF.cnf.xml hat folgenden Inhalt:
<?xml version="1.0" encoding="UTF-8"?>
<device>

  <deviceProtocol>SIP</deviceProtocol>

  <sshUserId>admin</sshUserId>								Username
  <sshPassword>GEHEIM</sshPassword>							und Passwort für den SSH Zugang

  <devicePool>
                <dateTimeSetting>
                        <dateTemplate>D.M.YY</dateTemplate>				Datumsformat, leider werden keine vierstelligen
											Jahresangaben unterstützt
                        <timeZone>Central Europe Standard/Daylight Time</timeZone>	Zeitzone
                        <ntps>
                                <ntp>
                                        <name>192.168.44.2</name>			NTP Server für Zeitsynchronisation, dies übernimmt die Fritzbox
                                        <ntpMode>Unicast</ntpMode>
                                </ntp>
                        </ntps>
                </dateTimeSetting>

     <callManagerGroup>
        <members>
           <member priority="0">
              <callManager>
                 <ports>
                    <ethernetPhonePort>2000</ethernetPhonePort>
                    <sipPort>5060</sipPort>						5060 ist der Standard Port für SIP
                    <securedSipPort>5061</securedSipPort>
                 </ports>
                 <processNodeName>192.168.44.2</processNodeName>			SIP Server - die Fritzbox
              </callManager>
           </member>
        </members>
     </callManagerGroup>
  </devicePool>

  <commonProfile>
     <phonePassword></phonePassword>
     <backgroundImageAccess>true</backgroundImageAccess>				der Benutzer darf sich selber Hintergrundbilder aussuchen
     <callLogBlfEnabled>2</callLogBlfEnabled>
  </commonProfile>

  <loadInformation>SIP70.9-3-1SR4-1S</loadInformation>					diese Firmware wird verwendet, man beachte den Bezug zur Datei SIP70.9-3-1SR4-1S.loads auf dem TFTP Server

  <vendorConfig>
     <disableSpeaker>false</disableSpeaker>						falls man den Lautsprecher deaktivieren will
     <disableSpeakerAndHeadset>false</disableSpeakerAndHeadset>				falls man den Lautsprecher und das Headset deaktivieren will
     <pcPort>0</pcPort>									der LAN Port zum Anschluß eines PC ist aktiv
     <settingsAccess>1</settingsAccess>
     <garp>0</garp>
     <voiceVlanAccess>0</voiceVlanAccess>
     <videoCapability>0</videoCapability>
     <autoSelectLineEnable>0</autoSelectLineEnable>
     <sshAccess>0</sshAccess>								SSH Access erlauben
     <sshPort>22</sshPort>								SSH Port
     <webAccess>0</webAccess>								Zugriff per Web erlauben
     <spanToPCPort>1</spanToPCPort>
     <loggingDisplay>1</loggingDisplay>
     <loadServer></loadServer>
     <daysDisplayNotActive></daysDisplayNotActive>
     <displayOnTime>03:00</displayOnTime>                                               um drei Uhr morgens wird das Display aktiviert
     <displayOnDuration>00:01</displayOnDuration>                                       für eine Minute
     <displayIdleTimeout>00:05</displayIdleTimeout>					nach fünf Minuten Inaktivität soll das Display abschalten
     <displayOnWhenIncomingCall>1</displayOnWhenIncomingCall>                           Display aktivieren bei eingehenden Anruf
  </vendorConfig>

  <deviceSecurityMode>1</deviceSecurityMode>

  <authenticationURL>http://192.168.44.1/ciscoauth.php</authenticationURL>		hier wird die Authorisierung vorgenommen um zum Beispiel
											Screenshots des Displays zu erstellen
  <directoryURL>http://192.168.44.1/directory.php</directoryURL>			Telefonbucheinträge, siehe weiter unten
  <idleURL></idleURL>
  <informationURL></informationURL>

  <messagesURL></messagesURL>
  <proxyServerURL></proxyServerURL>
  <servicesURL>http://www.arbeitsplatzvernichtung-durch-outsourcing.de/ebtcisco/index.php?userid=987600&amp;timeoffset=1</servicesURL>
											Hier kann man einen XML Dienst auf den Service Button legen,
											in diesem Beispiel eine kleine Statusanzeige für Eurobilltracker.
											Als Besonderheit sei noch angemerkt, das man nicht einfach ein
											kaufmännisches Und (& Zeichen) übergeben kann in XML. Hier bitte
											wie in HTML auch &amp; verwenden.
  <dscpForSCCPPhoneConfig>96</dscpForSCCPPhoneConfig>
  <dscpForSCCPPhoneServices>0</dscpForSCCPPhoneServices>
  <dscpForCm2Dvce>96</dscpForCm2Dvce>

  <transportLayerProtocol>2</transportLayerProtocol>					UDP benutzen

  <capfAuthMode>0</capfAuthMode>
  <capfList>
     <capf>
        <phonePort>3804</phonePort>
     </capf>
  </capfList>

  <certHash></certHash>
  <encrConfig>false</encrConfig>

   <sipProfile>
     <sipProxies>
        <backupProxy></backupProxy>
        <backupProxyPort></backupProxyPort>
        <emergencyProxy></emergencyProxy>
        <emergencyProxyPort></emergencyProxyPort>
        <outboundProxy></outboundProxy>
        <outboundProxyPort></outboundProxyPort>
        <registerWithProxy>true</registerWithProxy>
     </sipProxies>

     <sipCallFeatures>
        <cnfJoinEnabled>true</cnfJoinEnabled>
        <callForwardURI>x--serviceuri-cfwdall</callForwardURI>
        <callPickupURI>x-cisco-serviceuri-pickup</callPickupURI>
        <callPickupListURI>x-cisco-serviceuri-opickup</callPickupListURI>
        <callPickupGroupURI>x-cisco-serviceuri-gpickup</callPickupGroupURI>
        <meetMeServiceURI>x-cisco-serviceuri-meetme</meetMeServiceURI>
        <abbreviatedDialURI>x-cisco-serviceuri-abbrdial</abbreviatedDialURI>
        <rfc2543Hold>false</rfc2543Hold>
        <callHoldRingback>2</callHoldRingback>
        <localCfwdEnable>true</localCfwdEnable>
        <semiAttendedTransfer>true</semiAttendedTransfer>
        <anonymousCallBlock>2</anonymousCallBlock>
        <callerIdBlocking>2</callerIdBlocking>
        <dndControl>0</dndControl>
        <remoteCcEnable>true</remoteCcEnable>
     </sipCallFeatures>

     <sipStack>
        <sipInviteRetx>6</sipInviteRetx>
        <sipRetx>10</sipRetx>
        <timerInviteExpires>180</timerInviteExpires>
        <timerRegisterExpires>3600</timerRegisterExpires>
        <timerRegisterDelta>5</timerRegisterDelta>
        <timerKeepAliveExpires>120</timerKeepAliveExpires>
        <timerSubscribeExpires>120</timerSubscribeExpires>
        <timerSubscribeDelta>5</timerSubscribeDelta>
        <timerT1>500</timerT1>
        <timerT2>4000</timerT2>
        <maxRedirects>70</maxRedirects>
        <remotePartyID>false</remotePartyID>
        <userInfo>None</userInfo>
     </sipStack>

     <autoAnswerTimer>1</autoAnswerTimer>
     <autoAnswerAltBehavior>false</autoAnswerAltBehavior>
     <autoAnswerOverride>true</autoAnswerOverride>
     <transferOnhookEnabled>false</transferOnhookEnabled>
     <enableVad>false</enableVad>
     <preferredCodec>none</preferredCodec>
     <dtmfAvtPayload>101</dtmfAvtPayload>
     <dtmfDbLevel>3</dtmfDbLevel>
     <dtmfOutofBand>avt</dtmfOutofBand>
     <alwaysUsePrimeLine>false</alwaysUsePrimeLine>
     <alwaysUsePrimeLineVoiceMail>false</alwaysUsePrimeLineVoiceMail>
     <kpml>3</kpml>

     <natEnabled>false</natEnabled>
     <natAddress></natAddress>

     <stutterMsgWaiting>0</stutterMsgWaiting>

     <callStats>false</callStats>

     <silentPeriodBetweenCallWaitingBursts>10</silentPeriodBetweenCallWaitingBursts>
     <disableLocalSpeedDialConfig>false</disableLocalSpeedDialConfig>

     <startMediaPort>16384</startMediaPort>
     <stopMediaPort>32766</stopMediaPort>

     <voipControlPort>5060</voipControlPort>
     <dscpForAudio>184</dscpForAudio>
     <ringSettingBusyStationPolicy>0</ringSettingBusyStationPolicy>
     <dialTemplate>dialplan.xml</dialTemplate>						der Dialplan

     <phoneLabel>marty44</phoneLabel>							das Phonelabel, steht im Display oben rechts,
											keine Leerzeichen benutzen!
     <sipLines>
        <line button="1">								auf den ersten Schnellwahlbutton kommt der SIP Anschluß der Fritzbox
           <featureID>9</featureID>							es handelt sich um einen SIP Anschluß
           <featureLabel>620</featureLabel>						620 ist die erste SIP Nebenstelle in der Fritzbox
                   <name>620</name>							man sollte alle vier Werte auf 620 lassen, sonst kann es sein,
                   <displayName>620</displayName>					das die Fritzbox keine Anrufe mehr entgegen nimmt
                   <contact>620</contact>

           <proxy>USECALLMANAGER</proxy>						hier verweisen wir auf die Fritzbox, wurde weiter oben definiert
											wenn man hier die IP der Fritzbox einträgt, schlägt es
											mit der Firmware 9.3.1 fehl
           <port>5060</port>
           <autoAnswer>
              <autoAnswerEnabled>2</autoAnswerEnabled>
           </autoAnswer>
           <callWaiting>3</callWaiting>

           <authName>620</authName>							SIP Username auf der Fritzbox
           <authPassword>SIPPasswort</authPassword>					SIP Passwort für die Nebenstelle 620 auf der Fritzbox

           <sharedLine>false</sharedLine>
           <messageWaitingLampPolicy>1</messageWaitingLampPolicy>
           <messagesNumber>*97</messagesNumber>						hier kann man die Telefonnummer des Anrufbeantworters
											der Fritzbox hinterlegen
           <ringSettingIdle>4</ringSettingIdle>
           <ringSettingActive>5</ringSettingActive>

           <forwardCallInfoDisplay>
              <callerName>true</callerName>
              <callerNumber>true</callerNumber>
              <redirectedNumber>false</redirectedNumber>
              <dialedNumber>true</dialedNumber>
           </forwardCallInfoDisplay>
        </line>
        <line button="2">								auf den zweiten Schnellwahlbutton legen wir eine Telefonnummer
           <featureID>2</featureID>							es soll ein Schnellwahlbutton werden
           <featureLabel>Sheldon Cooper</featureLabel>					Name des Eintrages
           <speedDialNumber>0123456789</speedDialNumber>				die Telefonnummer
        </line>
     </sipLines>
  </sipProfile>
</device>


Der Dialplan legt fest wie das Telefon wählen soll. Die Datei dialplan.xml auf dem TFTP Server:
<DIALTEMPLATE>
    <TEMPLATE MATCH="*" Timeout="5" />
</DIALTEMPLATE>

In der ringlist.xml kann man zusätzliche Klingeltöne angeben. Die Klingeltöne müssen ebenfalls auf dem TFTP Server liegen.
<CiscoIPPhoneRingList>
     <Ring>
           <DisplayName>CTU</DisplayName>
           <FileName>ctu.raw</FileName>
     </Ring>
</CiscoIPPhoneRingList>
Eine kleine Auswahl an Klingeltönen gibt es zu Beispiel hier.

Mit dem Programm SoX kann man auch eigene Klingeltöne erstellen. Zum Beispiel aus einer WAV Datei:

sox -t wav in.wav -t raw -r 8000 -U -b -c 1 - resample -ql out.raw
Laut Heiko hat sich die Syntax von SoX geändert:
sox in.mp3 -t raw -e u-law -b 8 -c 1 -r 8000 out.raw
sox in.wav -t raw -e u-law -b 8 -c 1 -r 8000 out.raw

Wenn man andere Hintergrundbilder haben will, muß man im TFTP Verzeichnis ein Unterverzeichnis Desktops erstellen, in diesem wiederum noch das Unterverzeichnis 320x212x12
root@pd6000:/utftpd/Desktops/320x212x12 # ls -l
-rwxr--r--  1 root  root     945 2011-10-16 12:25 List.xml
-rwxr--r--  1 root  root   99883 2011-10-16 11:42 pic1.png
-rwxr--r--  1 root  root    7826 2011-10-16 11:42 pic1-tn.png
-rwxr--r--  1 marty marty  92927 2011-10-16 12:17 SimpsonsCisco.png
-rwxr--r--  1 marty marty   7972 2011-10-16 12:18 SimpsonsCisco-tn.png
Hintergrundbilder müssen im PNG Format sein, 320x212. Vorschaubilder müssen ebenfalls im PNG Format sein, 80x53.
Die Datei List.xml (Achtung, großes L !) definiert die möglichen Hintergrundbilder:
<CiscoIPPhoneImageList>
<ImageItem Image="TFTP:Desktops/320x212x12/pic1-tn.png"					zuerst das Vorschaubild in 80x53
           URL="TFTP:Desktops/320x212x12/pic1.png"/>					danach das Bild in 320x212
<ImageItem Image="TFTP:Desktops/320x212x12/SimpsonsCisco-tn.png"
           URL="TFTP:Desktops/320x212x12/SimpsonsCisco.png"/>
</CiscoIPPhoneImageList>

Die Datei ciscoauth.php im htdocs Verzeichnis des Webservers authorisiert das Telefon für Screenshots, etc. Eine einfache Datei die jeden User und Passwort akzeptiert, sieht in PHP wie folgt aus:
<?php
echo "AUTHORIZED";
?>
Man kann hier auch eine komplette Benutzerverwaltung aufziehen. Das Telefon ruft die Datei ciscoauth.php wie folgt auf (Auszug aus der Logdatei des Webservers):
sep001f6cabcdef.marty44.net - - [26/Oct/2011:15:24:26 +0200] "GET /ciscoauth.php?UserID=BENUTZER&Password=PASSWORT&devicename=SEP001F6CABCDEF \
HTTP/1.1" 200 22 "-" "Allegro-Software-WebClient/4.34"
Um eine Benutzerverwaltung aufzubauen, muß man sich mit den Parametern UserID und Password auseinandersetzen. Im Erfolgsfall soll der Webserver nur AUTHORIZED zurückmelden.

Folgende Informationen kann man aufrufen:
http://192.168.44.80/CGI/Screenshot liefert einen Screenshot im BMP Format:
Screenshot des Telefondisplays
http://192.168.44.80/CGI/CallInfo liefert ein paar Infos über den Status der Line und einiger Buttons
http://192.168.44.80/CGI/LineInfo liefert ein paar Infos über die Konfiguration der Schnellwahlbuttons
http://192.168.44.80/CGI/SettingsInfo liefert ein paar Infos über einige Einstellungen


Die Datei directory.php im htdocs Verzeichnis des Webservers enthält das Telefonbuch. Ein einfaches Beispiel folgt, man kann es aber auch dynamisch aufziehen, da sich das Telefon die Datei jedesmal neu zieht, wenn man auf den Directory Button des Telefons drückt.
<?php
header("Content-type: text/xml");
?>
<CiscoIPPhoneMenu>
        <Title>Telefonbuch</Title>
        <Prompt>Dir External</Prompt>
        <MenuItem>
            <Name>Oma</Name>
            <URL>Dial:0123456</URL>
        </MenuItem>
        <MenuItem>
            <Name>Frisoer</Name>
            <URL>Dial:01265432</URL>
        </MenuItem>
</CiscoIPPhoneMenu>

zurück zu Sonstiges
Letzte Aktualisierung dieser Seite: 8. Juni 2015