{"id":150,"date":"2008-07-24T19:26:52","date_gmt":"2008-07-24T17:26:52","guid":{"rendered":"http:\/\/www.admindu.de\/wordpress\/?p=150"},"modified":"2008-07-25T09:14:42","modified_gmt":"2008-07-25T07:14:42","slug":"asterisk-bri-stuff-040-rc3b-auf-debian-lenny","status":"publish","type":"post","link":"https:\/\/www.admindu.de\/wordpress\/?p=150","title":{"rendered":"Asterisk Bri-Stuff 0.4.0-RC3b auf Debian Lenny"},"content":{"rendered":"<p>Fuer meine neue eierlegende Wollmilchsau wollte ich auch mal ein Debian Lenny x64 testen. Die Maschine ist ein Asus P5K SE mit einem Core2Quad Q6600 und hat 4GB Ram. Um die voll zu nutzen waere 64 Bit natuerlich schoen. Das Debian x64 kam nach allen aktuellen Updates mit einem 2.6.25-2-amd64 daher. Als ISDN-Interface verwende ich eine HFC-S ISDN Karte im PCI Slot (davon hat das Asus P5K zwei, im anderen steckt die <a href=\"http:\/\/www.admindu.de\/wordpress\/?p=83\">Terratec<\/a> fuer den zentralen Videorecorder) und moechte den zaphfc Treiber von <a title=\"Junghanns.net Webseite\" href=\"http:\/\/www.junghanns.net\/en\/home.html\" target=\"_blank\">Junghanns.net<\/a> einsetzen. Leider war es mir nicht moeglich in dieser Konfiguration ein funktionierendes Setup zu bekommen. Wenn es schon so anfaengt, dann wirds sicher keine Freude das auf Dauer als Home-Server zu verwalten.<\/p>\n<p>Daher versuche ich es jetzt mal mit einem x86 System. Und da klappt das auch sofort ohne irgendwelche Probleme. Hier mein detailliertes Vorgehen:<\/p>\n<p><!--more--><\/p>\n<p>Als Basis dient eine Baseinstall Debian Lenny x86, nur Standard-System im tasksel ausgewaehlt. Folgende Pakete muessen dann nachinstalliert werden, damit die <a href=\"http:\/\/www.asterisk.org\" target=\"top\">Asterisk<\/a> spaeter durchkompiliert:<\/p>\n<p class=\"postmetadata. alt\">aptitude install linux-headers-2.6-686 build-essential libncurses-dev bison libusb-dev usbutils fxload<\/p>\n<p>Anschliessend brauchen wir das Bri-Stuff-Asterisk-Paket von <a title=\"Junghanns.net Download\" href=\"http:\/\/www.junghanns.net\/en\/download.html\" target=\"_blank\">Junghanns.net<\/a>. Es gibt auch <a href=\"http:\/\/www.asterisk.org\" target=\"top\">Asterisk<\/a> 1.4 Pakete, sogar Bri-Stuffed, aus dem debian-apt. Auch ist es moeglich die zaphfc-module ueber den module-assistant von debian zu bauen. Allerdings habe ich damit so meine Probleme gehabt. Ausserdem ist das Paket von Junghanns.net noch eine RC3 und bristuff ist ein sehr lebendiges Projekt. Da ist die Version aus dem apt schnell altbacken. Daher habe ich mich dafuer entschieden das Source-Paket direkt zu bauen und dokumentiere im Weiteren das Vorgehen:<\/p>\n<p class=\"postmetadata. alt\">wget http:\/\/www.junghanns.net\/downloads\/bristuff-0.4.0-RC3b.tar.gz<br \/>\ntar -xzvf bristuff-0.4.0-RC3b.tar.gz<br \/>\ncd bristuff-0.4.0-RC3b<\/p>\n<p>Nachdem es bei Tools wie <a href=\"http:\/\/www.admindu.de\/wordpress\/?p=136\">VMWare<\/a> und auch den <a href=\"http:\/\/www.admindu.de\/wordpress\/?p=83\">Manits-Treibern<\/a> hilfreich war den Kompiler auf den zum Kernel passenden gcc-4.1 zu aendern, und auch bei der Asterisk-Install (vielmehr beim bauen von zaptel) Kernelmodule gebaut werden, dachte ich, es sei sinnvoll hier ebenfalls den gcc-4.1 Kompiler zu verwenden. Da ich im Betrieb keine Probleme hatte habe ich nicht getestet, ob und inwiefern das einen Effekt hat, wenn man stattdessen mit dem 4.3er GCC baut. Zum setzen des gcc-4.1 habe ich den zaptel-Part der compile.sh angepasst:<\/p>\n<p class=\"postmetadata. alt\">if [ -d zaptel ]; then<br \/>\ncd zaptel<br \/>\nexport CC=\/usr\/bin\/gcc-4.1<br \/>\nexport GCC=\/usr\/bin\/gcc-4.1<br \/>\n.\/configure<br \/>\nmake MODULES_EXTRA=&#8221;$BRISTUFF_ZAP_MODS&#8221; $BRISTUFF_ZAP_PARAMS clean<br \/>\nmake MODULES_EXTRA=&#8221;$BRISTUFF_ZAP_MODS&#8221; $BRISTUFF_ZAP_PARAMS all<br \/>\nmake MODULES_EXTRA=&#8221;$BRISTUFF_ZAP_MODS&#8221; $BRISTUFF_ZAP_PARAMS install $DESTDIR_PARAM $DEVHACK<br \/>\ncd ..<br \/>\nunset CC<br \/>\nunset GCC<br \/>\nwait_user &#8220;ZAPTEL installed&#8221;<br \/>\nfi<\/p>\n<p>Danach dann das Script install.sh starten:<\/p>\n<p class=\"postmetadata. alt\">.\/install.sh<\/p>\n<p>Es werden jetzt diverse Source-Pakete heruntergeladen und gepatched. Danach beginnt direkt der Kompilierprozess. Dieser stellt immer wieder Fragen. Wenn kein Fehler auftritt, dann kann man hier einfach durch druecken von Return weiter machen.<\/p>\n<p>WICHTIG: Bei der Frage nach dem iLBC Codec ist es notwendig die Lizenzbestimmungen zu lesen. Vor allem bei einem gewerblichen Einsatz der Installation  begeht man sonst womoeglich einen Lizenzverstoss. Im Zweifel den Codec nicht installieren. Es geht weitgehend auch ohne iLBC.<\/p>\n<p>Wenn dann alles soweit geklappt hat, dann sind wir irgendwann hier:<\/p>\n<p class=\"postmetadata. alt\">****************************************************<br \/>\nEverything installed.<br \/>\nBRIstuff Installation finished.<br \/>\n****************************************************<\/p>\n<p>Congratz \ud83d\ude42 Dann ist die Installation schon mal abgeschlossen.<\/p>\n<p>\n&nbsp;\n<\/p>\n<p>\nJetzt gilt es die eben installierte Software in Betrieb zu nehmen. Dazu eigenen sich erstmal die mitgelieferten Beispiele. Diese kann man installieren, indem man folgendes macht.<\/p>\n<p>Zuerst installieren wir die zaptel-configs und das init-script fuer zaptel:<\/p>\n<p class=\"postmetadata. alt\">cd bristuff-0.4.0-RC3b\/zaptel<br \/>\nmake config<\/p>\n<p>danach muessen wir dann noch unser zaphfc modul in der Datei \/etc\/default\/zaptel eintragen:<\/p>\n<p class=\"postmetadata. alt\">vi \/etc\/default\/zaptel<\/p>\n<p>Dann in dieser Dateie alle Zeilen der folgende Art auskommentieren:<\/p>\n<p>MODULES=&#8221;$MODULES tor2&#8243;         # T400P &#8211; Quad Span T1 Card<\/p>\n<p>danach die Zeile einmal kopieren und unter der letzen MODULES-Zeile einfuegen. Dort dann das vorhandene Modul durch zaphfc ersetzen. Natuerlich nicht auskommentieren. Beispiel:<\/p>\n<p>MODULES=&#8221;$MODULES zaphfc&#8221;         # HFC ISDN Card<\/p>\n<p>TIPP: Wer keine Zaptel Hardware hat, aber trotzdem mit den Zaptel-Features der Asterisk testen moechte kann hier das Modul <a title=\"Ztdummy Info\" href=\"http:\/\/www.voip-info.org\/wiki-Asterisk+timer+ztdummy\" target=\"_blank\">ztdummy<\/a> laden. Dies simuliert eine Zaptel-Interface Timing-Source.<\/p>\n<p>Dann kopieren wir noch das Zaptel-Config-Beispiel von Junghanns.net an die richtige Stelle:<\/p>\n<p class=\"postmetadata. alt\">cp bristuff-0.4.0-RC3b\/zaphfc\/zaptel.conf \/etc<\/p>\n<p>Damit ist die Konfiguration von zaptel abgeschlossen uns das ISDN-Interface sollte nach dem Reboot zur Verfuegung stehen. Natuerlich kann man das auch ohne Reboot testen. Ist ja kein Windows \ud83d\ude09 Einfach ein<\/p>\n<p class=\"postmetadata. alt\">invoke-rc.d zaptel start<\/p>\n<p>ausfuehren. Dann sollte so eine Ausgabe kommen:<\/p>\n<p class=\"postmetadata. alt\">Loading zaptel framework: done.<br \/>\nWaiting for zap to come online&#8230;OK<br \/>\nLoading zaptel hardware modules: ztdummy.<br \/>\nzaphfc.<br \/>\nRunning ztcfg: .<\/p>\n<p>Je nach eigener Konfig ohne das ztdummy Module. Ich habe das in der Konfig, weil die ISDN-Karte aktuell noch im anderen Server steckt. Mit dmesg kann man dann auch die Ausgabe das HFC Treibers anschauen:<\/p>\n<p class=\"postmetadata. alt\">[ 3833.803967] Zapata Telephony Interface Unloaded<br \/>\n[ 3843.918694] Zapata Telephony Interface Registered on major 196<br \/>\n[ 3843.918713] Zaptel Version: 1.4.11<br \/>\n[ 3843.918721] Zaptel Echo Canceller: MG2<br \/>\n[ 3844.947836] ztdummy: Trying to load High Resolution Timer<br \/>\n[ 3844.947860] ztdummy: Initialized High Resolution Timer<br \/>\n[ 3844.947869] ztdummy: Starting High Resolution Timer<br \/>\n[ 3844.947891] ztdummy: High Resolution Timer started, good to go<br \/>\n[ 3844.963849] zaphfc: jitterbuffer size: 1<br \/>\n[ 3844.963905] zaphfc: 0 hfc-pci card(s) in this box.<\/p>\n<p>Wenn eine ISDN Karte drinn steckt, dann sollte der Treiber hier natuerlich keine &#8220;0&#8221; mehr melden. Nachdem wir also nun das zaptel fertig eingerichtet haben wenden wir uns der asterisk zu. Auch hier installieren wir erstmal die Beispielkonfigs:<\/p>\n<p class=\"postmetadata. alt\">cd bristuff-0.4.0-RC3b\/asterisk<br \/>\nmake samples<\/p>\n<p><\/p>\n<p class=\"postmetadata. alt\">cd bristuff-0.4.0-RC3b\/asterisk-addons<br \/>\nmake samples<\/p>\n<p>Dann kopieren wir noch die Zaphfc Beispielkonfig von Junghanns.net. Vorher sichern wir die mit das asterisk gelieferte Default-Konfig:<\/p>\n<p class=\"postmetadata. alt\">mv \/etc\/asterisk\/zapata.conf \/etc\/asterisk\/zapata.conf-DIST<br \/>\ncp bristuff-0.4.0-RC3b\/zaphfc\/zapata.conf \/etc\/asterisk<\/p>\n<p>Jetzt fehlt nur noch das Init-Script. Das leihe ich mir gerne bei Debian. Da laeuft die Asterisk dann auch unter dem User asterisk, was aus Sicherheitsgesichtspunkten natuerlich sinvoll ist. Damit das sauber klappt muessen wir erstmal den User anlegen:<\/p>\n<p class=\"postmetadata. alt\">adduser &#8211;disabled-login &#8211;group &#8211;disabled-password asterisk<br \/>\nadduser &#8211;disabled-login &#8211;ingroup asterisk &#8211;disabled-password asterisk<\/p>\n<p>Dann gibts hier das Init-Script zum herunterladen: <a href=\"http:\/\/www.admindu.de\/wordpress\/wp-content\/uploads\/2008\/07\/asterisk\">asterisk Init-Script<\/a>. Das muss dann in \/etc\/init.d platziert und ggf mit update-rc.d  aktiviert werden:<\/p>\n<p class=\"postmetadata. alt\">cd \/etc\/init.d<br \/>\nwget http:\/\/www.admindu.de\/wordpress\/wp-content\/uploads\/2008\/07\/asterisk<br \/>\nchmod 755 asterisk<br \/>\nupdate-rc.d asterisk defaults<\/p>\n<p>Leider gibt es da noch ein kleines, aber feines, Problem \ud83d\ude41 Die Asterisk im Junghanns.net Paket setzt das &#8220;localstatedir&#8221; unter Linux auf \/var\/run. Da darf aber der User asterisk nicht schreiben. Daher startet die Anlage nicht. Daher muss das &#8220;localstatedir&#8221; auf \/var\/run\/asterisk angepasst werden und wir muessen die Anlagensoftware nochmal bauen. Dazu machen wir folgendes:<\/p>\n<p class=\"postmetadata. alt\">cd bristuff-0.4.0-RC3b\/asterisk<br \/>\nvi Makefile<\/p>\n<p>Dort passen wir dann die folgende Zeile an:<\/p>\n<p>ASTVARRUNDIR=$(localstatedir)\/run<\/p>\n<p>ASTVARRUNDIR=$(localstatedir)\/run\/asterisk<\/p>\n<p>und bauen die Software erneut durch:<\/p>\n<p class=\"postmetadata. alt\">make clean<br \/>\nmake all<br \/>\nmake install<\/p>\n<p>Selbiges machen wir auch nochmal fuer die asterisk-addons gegen unseren neuen Build:<\/p>\n<p class=\"postmetadata. alt\">cd bristuff-0.4.0-RC3b\/asterisk-addons<br \/>\nmake clean<br \/>\nmake all<br \/>\nmake install<\/p>\n<p>Dann muessen wir noch die entsprechenden Verzeichnisse dem User asterisk schenken:<\/p>\n<p class=\"postmetadata. alt\">chown -R asterisk:asterisk  \/var\/run\/asterisk<br \/>\nchown -R asterisk:asterisk \/var\/spool\/asterisk<br \/>\nchown -R asterisk:asterisk \/var\/log\/asterisk<br \/>\nchown -R root:asterisk \/var\/lib\/asterisk<br \/>\nchown -R root:asterisk \/etc\/asterisk<\/p>\n<p>Dann passen wir noch in der Datei \/etc\/asterisk\/asterisk.conf die folgende Zeile an:<\/p>\n<p>astrundir =&gt; \/var\/run<\/p>\n<p>wird<\/p>\n<p>astrundir =&gt; \/var\/run\/asterisk<\/p>\n<p>Und wir entfernen den Kommentar bei folgenden Optionen:<\/p>\n<p>[options]<br \/>\nrunuser = asterisk ; The user to run as<br \/>\nrungroup = asterisk ; The group to run as<\/p>\n<p>So, wenn jetzt alles glatt geht, dann sollte die Asterisk starten.<\/p>\n<p class=\"postmetadata. alt\">invoke-rc.d asterisk start<\/p>\n<p>Dann nachschauen ob der Prozess laeuft mit<\/p>\n<p class=\"postmetadata. alt\">ps auxwww | grep asterisk<\/p>\n<p>Wenn sich in der Ausgabe eine solche Zeile befindet, dann wurde asterisk erfolgreich gestartet:<\/p>\n<p class=\"postmetadata. alt\">asterisk  3211  0.0  0.2  21256  8832 ?        Ssl  Jul22   0:30 \/usr\/sbin\/asterisk -p -U asterisk<\/p>\n<p>Wenn das geklappt hat kann man sich nun mit einer Remote-Konsole verbinden. Mehr &#8220;v&#8221; steigern die Gespraechigkeit der Anlage. Das &#8220;r&#8221; steht fuer reconnect einer bereits laufenden Anlagensoftware:<\/p>\n<p class=\"postmetadata. alt\">asterisk -vvvvvvvvvvvvvvvvr<\/p>\n<p>VORSICHT! Ab diesem Moment wird die Software automatisch beim booten gestartet. Das ist keine gute Idee, wenn die Kiste in einem offenen Netzwerk steht und eine Default-Konfig hat. Bitte die Maschine entsprechend absichern und die Sicherheitsdokumentation von asterisk lesen. Vor allem bei einem produktiven Einsatz ist es unabdingbar sich mit der Sicherheit auseinanderzusetzen. Die Loesungen hier sind nur fuer geschlossene Netze gedacht und nicht sicher !!!<\/p>\n<p>Wenn zu diesem Zeitpunkt eine HFC ISDN Karte in der Kiste steckt und diese auch laut &#8220;dmesg&#8221; richtig konfiguriert wurde, dann kann man folgenden Test machen:<\/p>\n<p>&#8211; ISDN Karte mit dem eigenen NTBA verbinden<br \/>\n&#8211; Alle anderen Telefone ausstecken<br \/>\n&#8211; eine der eigenen MSNs anrufen<br \/>\n&#8211; dann sollte die Demo der Asterisk zu hoeren sein<br \/>\n&#8211; durch die Eingabe von Ziffern kann durch die Menues navigiert werden<\/p>\n<p>Wenn das klappt ist es als naechstes an der Zeit IP-Telefone einzubinden und eine eigenen Dialplan zu erstellen. Das wird in diesem Post nicht mehr behandelt. Hier aber noch ein paar Infos zum Einstieg:<\/p>\n<p>Als IP-Telefone kann ich <a href=\"http:\/\/www.snom.de\" target=\"top\">SNOM<\/a> sehr empfehlen. Vor allem im gerweblichen Einsatz sehr gute Geraete und gute Integration mit asterisk. Dazu mal mehr in einem anderen Post. Dann habe ich noch erfolgreich ein <a href=\"http:\/\/gigaset.siemens.com\/shc\/0,1935,de_de_0_123868_rArNrNrNrN,00.html\" target=\"top\">Siemens S450IP<\/a> im Einsatz. Als Softphones kann ich das freie <a href=\"http:\/\/ekiga.org\/\" target=\"top\">Ekiga<\/a> und das kostenlose <a href=\"http:\/\/www.counterpath.com\/x-lite.html&amp;active=4\">X-ten Lite<\/a> empfehlen.<\/p>\n<p>Ab und zu kann es in den Logs (oder in dmesg) zu folgenden Fehlermeldungen kommen:<\/p>\n<p class=\"postmetadata. alt\">[10408.302513] zaphfc[0]: b channel buffer underrun: 0, 0<br \/>\n[10408.302520] zaphfc[0]: b channel buffer overflow: 230, 230<br \/>\n[10408.314512] zaphfc[0]: b channel buffer underrun: 0, 0<br \/>\n[10408.314518] zaphfc[0]: b channel buffer overflow: 236, 236<\/p>\n<p>Es gibt im Internet viele verschiedene Aussagen und Meinungen wann und warum sowas passiert. Einig sind sich die meisten insofern, als es etwas mit dem Interrupt-Handling zu tun hat. Ich moechte hier nicht auch wieder darauf eingehen. Google hilft im Zweifel. Von mir nur so viel. Auf meinem P5K SE tritt der Fehler sehr selten auf und nur wenn die Kiste unter Last ist. Auf meinem vorherigen Server, einem P4P800 SE mit einem 3 Ghz P4 war der Fehler haeufiger zu beobachten. In beiden Faellen haben die Meldungen aber den stabilen Betrieb nicht beeinflusst. Es war lediglich ein Knacken in der Leitung wenn, man zum Zeitpunkt der Meldung telefoniert hat. Es ist in jedem Falle sinnvoll die PCI-Karten solange zu sortieren (oder unnoetige Onboard-komponenten abzuschalten), bis die HFC-Karte sich ihren Interrupt nicht mehr mit einer anderen Karte teilen muss. Pruefen kann man das mit:<\/p>\n<p class=\"postmetadata. alt\">cat \/proc\/interrupts<\/p>\n<p>Gut sieht so aus:<\/p>\n<p>17:  404965966  405005448  IO-APIC-fasteoi   zaphfc<\/p>\n<p>sowas hier ist schlecht:<\/p>\n<p>17:  404965966  405005448  IO-APIC-fasteoi   zaphfc, eth0<\/p>\n<p>Das ist bei mir sowohl auf dem P4P800 als auch auf dem P5K zu bewerkstelligen gewesen. Fuer den professionellen Einsatz sollte man sowieso eine Karte von <a href=\"http:\/\/www.junghanns.net\/en\/produkte.html\" target=\"top\">Junghanns.net<\/a> nehmen. Da gibt es diese Probleme nicht.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Fuer meine neue eierlegende Wollmilchsau wollte ich auch mal ein Debian Lenny x64 testen. Die Maschine ist ein Asus P5K SE mit einem Core2Quad Q6600 und hat 4GB Ram. Um die voll zu nutzen waere 64 Bit natuerlich schoen. Das Debian x64 kam nach allen aktuellen Updates mit einem 2.6.25-2-amd64 daher. Als ISDN-Interface verwende ich &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/www.admindu.de\/wordpress\/?p=150\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Asterisk Bri-Stuff 0.4.0-RC3b auf Debian Lenny&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9,3],"tags":[26,15,4,27],"class_list":["post-150","post","type-post","status-publish","format-standard","hentry","category-cool_setups","category-linux_stuff","tag-asterisk","tag-debian","tag-linux","tag-voip"],"_links":{"self":[{"href":"https:\/\/www.admindu.de\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/150","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.admindu.de\/wordpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.admindu.de\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.admindu.de\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.admindu.de\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=150"}],"version-history":[{"count":83,"href":"https:\/\/www.admindu.de\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/150\/revisions"}],"predecessor-version":[{"id":314,"href":"https:\/\/www.admindu.de\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/150\/revisions\/314"}],"wp:attachment":[{"href":"https:\/\/www.admindu.de\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=150"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.admindu.de\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=150"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.admindu.de\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=150"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}