[HOWTO] Asterisk mit dem Snom-Pickup-Patch patchen

HobbyStern

Aktives Mitglied
Mitglied seit
5 Dez 2005
Beiträge
1,844
Punkte für Reaktionen
0
Punkte
36
[HOWTO] Asterisk 1.2.x mit dem Snom-Pickup-Patch patchen

-- Diskussion findet hier statt -- bt

x
Dieses Howto ist ein Erfahrungsbericht und erhebt keinen Anspruch auf Vollständigkeit !

Es richtet sich an Leute die :

--> SNOM Telefone haben
--> ASTERISK 1.2.x nutzen
--> und die Zielwahltasten bei einem KLINGELN an einem anderen Apparat (und blinken am eigenen)
zum annehmen nutzen möchten.
--> mit dem BRIstuff Teil auch Tasten manuell einen Status zuweisen möchten
--> sich an die Versionen hier im Howto halten können, abweichende stellen desöfteren Probleme dar.

Dieses Howto ist auf der Idee von tomster gewachsen - welchem der Dank gebührt !

Dieser Pickup - Patch - Thread ist ursprünglich nur mit mgernoth´s Patch geschrieben worden.
Seit dem sich Jacky0815 dem Bristuff Patch angenommen hat können wir auch diesen mit einspielen
und somit auch "x-beliebige" Nebenstellentasten manuell zum leuchten bringen (mehr dazu hier) .

Ob man nun beide gleichzeitig installieren kann ist eine gute Frage,
sollte aber eigentlich keine Probleme bereiten, im Zweifel immer erst testen oder hier nachsehen !

Dieser Thread ist in den kurzen Teil des BRI Patches und den großen des Gernoth Teils aufgesplittet, der BRI soll nur zeigen was man nun noch zusätzlich machen kann, die Anleitung an sich ist im Gernoth Teil untergebracht.

Also vorweg ...

BRIstuff TEIL(optional!) (ohne vorhandensein von BRIstuff nutzbar! Bis Dato : NICHT mit mISDN)

Wer hier Zweifel hat der lese bitte erst den GERNOTH Teil, dort ist auch die ANLEITUNG!
1. Den Patch downloaden : Link oder Mirror (Textdatei mit "Ziel speichern unter..." oder wget laden!)

2. Den Patch einspielen - ins Asterisk Source wechseln und mit "patch -p1 < devstate.diff" einspielen.

Das ganze sieht dann (erfolgreich) ungefähr so aus :
Code:
patching file apps/app_devstate.c
patching file apps/Makefile
Hunk #1 succeeded at 29 with fuzz 2.
3. Asterisk kompilieren (oder erst den Gernoth Teil abarbeiten)

4. Die Konfigurationen erstellen

a) Wir erstellen eine "virtuelle Nebenstelle "Nachtschaltung""
-> extensions.conf öffnen
-> Die folgenden Zeilen zeigen eine Nebenstelle mit dem Gerätenamen "DS/1234" (DS=DeviceState, kann aber auch xyz heissen)
Code:
[FONT=monospace]exten => 1234,hint,DS/1234  ; Der HINT Eintrag fuer die Fake-Nebenstelle[/FONT]
[FONT=monospace]exten => 1234,1,DevState(100,2) ; Der Status - 1 - wartend , 2 - in Benutzung , 3 - Besetzt..[/FONT]
[FONT=monospace]exten => 1234,2,DoSomeThingGood ; Hier darf nun irgendwas passieren...oder auch nix[/FONT]
[FONT=monospace]exten => 1234,3,DevState(100,0) ; LED wieder aus und Hangup
exten => 1234,4,Hangup() 
[/FONT]
-> In den Snoms ist eine Funktionstaste als !!Nebenstelle!! mit zB "1234" zu belegen, diese wird dann angezeigt.

5. Fertig.

Und nun der eigentliche Teil des Pickup-Patches...

GERNOTH TEIL

Geupdated auf die neue Pickup-Patch-Datei von Michael Gernoth.

Los geht´s ....

1. Den Patch downloaden (geupdated nach Fehlerhaftigkeit bei der Signalisierung am 08.10.2006)

Der neue Patch an sich : Link
mit "Ziel speichern unter..." oder wget laden - da es eine Textdatei ist!

The whole story (Digiums Bugtracker) : DIGIUMs "Pickup-Patch" BUG #5014#

2. Sichern

Das Original Asterisk sicherheitshalber einmal "wegspeichern" um den Patch
bei misslingen ohne Probleme wieder herauszuholen.

Das macht man im übergeordneten Ordner von Source-* so :

Asterisk:/usr/src# cp -r asterisk asterisk-original

3. Patchen

Das downgeloadete File in ein Verzeichnis seiner Wahl verschieben, in den Ordner
des Original-Asterisk wechseln (bei mir usr/src/asterisk) und dann
"patch -p0 < <dateiname>" eingeben.

Das sieht dann (idealerweise) so aus :

Asterisk:/usr/src/asterisk# patch -p0 < <dateiname>
patching file channels/chan_sip.c
Hunk #5 succeeded at 4978 (offset 13 lines).
Hunk #6 succeeded at 5112 (offset 13 lines).
Hunk #7 succeeded at 6645 (offset 13 lines).
Hunk #8 succeeded at 6701 (offset 13 lines).
Hunk #9 succeeded at 6746 (offset 13 lines).
Hunk #10 succeeded at 6755 (offset 13 lines).
Hunk #11 succeeded at 6793 (offset 13 lines).
Hunk #12 succeeded at 7085 (offset 13 lines).
Hunk #13 succeeded at 8658 (offset 13 lines).
Hunk #14 succeeded at 8742 (offset 13 lines).
Hunk #15 succeeded at 10243 (offset 17 lines).
Hunk #16 succeeded at 10309 (offset 17 lines).
Hunk #17 succeeded at 10332 (offset 17 lines).
Hunk #18 succeeded at 10440 (offset 17 lines).
Hunk #19 succeeded at 10467 (offset 17 lines).
Hunk #20 succeeded at 11182 (offset 25 lines).

Achtung !

Dabei sollten keine größeren Fehlermeldungen kommen.
Kommt etwas wie "****Only garbage was found in the patch input",
dann ist das downgeloadete File korrupt.

Bei Problemen ist hier Digiums-Anleitung zum Patchen

4a. Einstellungen in der EXTENSIONS.CONF

Code:
exten => [SIP-Nebenstelle],1,[B]hint[/B],SIP/[SIP-Nebenstelle]
Ich verwende die Nebenstellen 10-19 und es schaut dann so aus
(Geht bestimmt auch elogantöser, aber mir langt's so):

Code:
[hints]
exten => 10,hint,SIP/10
exten => 11,hint,SIP/11
exten => 12,hint,SIP/12
exten => 13,hint,SIP/13
exten => 14,hint,SIP/14
exten => 15,hint,SIP/15
exten => 16,hint,SIP/16
exten => 17,hint,SIP/17
exten => 18,hint,SIP/18
exten => 19,hint,SIP/19
...
[default]
include => hints
4b. Einstellungen in der SIP.CONF

Ein Beispiel

Code:
[10]
type=friend
host=dynamic
defaultip=192.1.2.3
username=10
secret=psst_geheim
dtmfmode=rfc2833
mailbox=10
callerid=Max Mustermann <10>
subscribecontext=default
notifyringing=yes
useclientcode=yes
5. Telefone einstellen:

Um nun auch an den Snom-Phones eine entsprechende Anzeige zu bekommen,
muss man eigentlich nicht viel machen, ausser die Funktionstasten entsprechen zu belegen.

Das Einfachste ist aus dem Drop-Down-Menü "Ziel" auszuwählen
(Nicht auf "Leitung" stehen lassen!!) und im Feld dahinter die
entsprechende Nebenstelle (z.B. 10) einzutragen.

Wenn man auf [Speichern] klickt macht das Telefon automatisch den rchtigen Eintrag daraus:
<sip:10@registrar;user=phone>

UPDATE für FW-Version 6.2.2
Es reicht nicht mehr aus die Nebenstelle einfach nur "10" anzugeben, es muss darauf geachtet werden das
der Eintrag 10@SERVER-IP heisst !
Code:
Release Notes der FW 6.2.2
fixed subscriptions on Reboot, Line Active/Inactive and Re-register
Ein Restart von Asterisk und vorallem ein REBOOT der Telefone schliesst die Sache ab.

Fertig, Digiums Patch ist eingespielt.

Erfahrungen

Nach jedem Reload von Asterisk ist es auch notwendig entweder die Telefone zu rebooten
(via sip-notify reboot-snom (siehe weiter unten)) oder den Umstand in Kauf zu nehmen bis dies
automatisch durch die eingestellte Refreshzeit geschieht - bis dahin fehlen die Subscr. .
Es ist generell empfehlenswert Asterisk nach einem Neustart per Skript einen Befehl mit auf den Weg
zu geben um die Telefone neu zu booten (und in meinem Fall die verbose/debugs auf "1" zu setzen um meine autom. Logs kontrolliert zu füllen...

Code:
# Asterisk Skript startet...
/usr/sbin/asterisk                

# Asterisk up, warte 3 Sek. auf Initialisierung
sleep 3
/usr/sbin/asterisk -rx "set verbose 1"
/usr/sbin/asterisk -rx "set debug 1"

# Starte alle SNOM Telefone neu...
/usr/sbin/asterisk -rx "sip notify reboot-snom 10 20 30 40 44 50 70 75"
(Das ganze hier in /etc/init.d packen, mit Rechten versehen und einen Link in /etc/rc2.d setzen, Fertig.)

Zum 3ten Teil des HOWTOs :

6. Einbinden von halbautomatischen Reboots für SNOMs

Erstellt eine neue Datei im *-Config-Verzeichnis (z.B. etc/asterisk) namens sip_notify.conf mit folgendem Inhalt:

;Snom-Reboot
[reboot-snom]
Event=>reboot
content-Length=>0

Nach einem Reload sollte dann auch diese Datei mitgeparst werden. Danach kann man mit dem Befehl im CLI

sip notify reboot-snom 10

das Telefon "10" (oder beliebiger anderer SIP-Context) rebooten.
Wenn ihr mehrere Telefone gleichzeitig rebooten wollt, dann einfach z.B.

sip notify reboot-snom 10 11 12

Damit werden dann alle 3 Telefone gleichzeitig rebootet. Wie gesagt: wie ein Reboot-all funzt, ohne manuell alle Telefone in ein Conf-File zu schreiben weiss ich noch nicht, muss aber sicher irgendwie möglich sein.

Wichtige Anmerkung

Bitte die Funktion, mehrere SNOMs gleichzeitig zu resetten, vorsichtig benutzen!
Das sollte man nicht im Produktivbetrieb machen, es ist zwar hier bei mir noch nie passiert, jedoch
könnte das Asterisk zum Hängenbleiben veranlassen!

Fertig, Eure Snoms sind nun bestens vorbereitet und sollten mit gut überlegten FW Updates gut laufen.
Beachtet den Hinweis --> Update auf FW 6.2.2 weiter oben !

Hilfreiche Links :

=> Diskussion aus dem Forum "SNOM 360 LEDs BLINKEN NICHT"
=> Älterer Thread zur Pickup-Patch Problematik ("Mehrfachlösung")
=> Probleme mit Asterisk >1.2.13 und dem PickupPatch :
==> LOCAL-Lösung und der dazugehörige LOCAL-Thread


Fragen ? Anregungen ? Gefundene Fehler ? BITTE antwortet im Diskussions-Thread ! Danke.


Mit besten Grüßen,

Stefan bzw. Hobby(*)stern
 
Zuletzt bearbeitet:
Ich schiebe das ganze mal kurz nach oben - es gibt Neues !

-> BRI-Pickup ist nicht mehr auf BRI angewiesen.(Herbst 06)
-> Mgernoth hat einen Bug beseitigt.(Herbst 06)
-> Alle Links sind geupdated und BRI ist zu Teil 2 geworden.(Herbst 06)
-> Eine Alternative zum Pickup_Patch wurde gepostet, ihr findet diese hier.(05.01.2007)
-> Ein möglicher Fehler wird im HowTo behandelt (05.01.2007)

Fragen ? Anregungen ? Fehler ? BITTE antwortet im Diskussions-Thread ! Danke.
 
Zuletzt bearbeitet:
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.