Netzwerkaufbau: Cisco 7970 VoIP Telefon mit SIP Firmware 9.2.1, 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-2-1TH1-13.sbn Firmware cnu70.9-2-1TH1-13.sbn Firmware ctu.raw Klingelton, bekannt aus der Serie 24 cvm70sip.9-2-1TH1-13.sbn Firmware dialplan.xml Dialplan (siehe unten) dsp70.9-2-1TH1-13.sbn Firmware jar70sip.9-2-1TH1-13.sbn Firmware ringlist.xml Klingeltonliste (siehe unten) SEP001F6CABCDEF.cnf.xml Konfigurationsdatei für das Telefon mit der MAC Adresse 001F6CABCDEF (siehe unten) SIP70.9-2-1S.loads Firmware term70.default.loads FirmwareIm htdocs Verzeichnis des Webservers liegen folgende Dateien:
ciscoauth.php Authorisierung für Screenshots, etc directory.php Telefonbuch
Ist die Konfiguration freigeschaltet, erkennt man es an dem kleinen Schloßsymbol:

Nun in die Network Configuration und anschließend in das IPv4 Configuration Menu gehen. Folgende Einstellungen habe ich statisch vorgenommen:

<?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-2-1S</loadInformation> diese Firmware wird verwendet
<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>00:00</displayOnTime>
<displayOnDuration>00:00</displayOnDuration>
<displayIdleTimeout>00:02</displayIdleTimeout> nach zwei Minuten Inaktivität soll das Display abschalten
</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&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 & 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.2.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>
<DIALTEMPLATE>
<TEMPLATE MATCH="*" Timeout="5" />
</DIALTEMPLATE>
<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
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.pngHintergrundbilder müssen im PNG Format sein, 320x212. Vorschaubilder müssen ebenfalls im PNG Format sein, 80x53.
<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>
<?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:

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
<?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: 17. Mai 2012