.titleBar { margin-bottom: 5px!important; }

[Problem] Freetz mit Asterisk: timerfd möglich?

Dieses Thema im Forum "Freetz" wurde erstellt von nellieNashorn, 23 Juni 2018.

  1. nellieNashorn

    nellieNashorn Neuer User

    Registriert seit:
    23 Juni 2018
    Beiträge:
    4
    Zustimmungen:
    0
    Punkte für Erfolge:
    1
    Hallo,

    ich habe eine Fritz!Box 7390 mit einem aktuellen Freetz-Trunk (von gestern). Über make menuconfig kann ich ja u. a. Asterisk hinzufügen. Dieses Asterisk wird offenbar nur mit dem pthread-Timer gebaut, obwohl das Linux der AVM-Firmware (Linux Kernel 2.6.28.10) auch schon timerfd unterstützen soll. Wie kann ich den Buildprozess meines Freetz-Images so beeinflussen, dass timerfd zusätzlich oder auch gleich alternativ zum pthread-basierten Timer in Asterisk kompiliert bzw. als Resourcen-Modul bereitgestellt wird?

    Hintergrund meiner Frage ist, dass Spachaufzeichnungen mit der voicemail-App ausgesprochen lückenhaft sind, d. h. die Sprachaufzeichnungen sind erstens sehr viel kürzer als die ursprünglichen -nachrichten, und zweitens sind sie offenbar mittendrin gekürzt, denn sie hören sich zwar ungefähr wie die entsprechende Stimme an, sind aber vollkommen unverständlich. Das Problem konnte ich zumindest soweit isolieren, dass schon das aufgenommene WAV-File zuwenig Informationen enthält, es passiert also schon bei der Aufzeichnung, nicht erst bei der Wiedergabe. Ausserdem spielt es keine Rolle, ob ich nur in einem Format (eben WAV) oder parallel auch noch in anderen Formaten (z. B. gsm) aufzeichnen lasse. Parameter in voicemail.conf betreffend Mindestlänge, Pausenlänge und Stilleerkennung haben keinen Einfluss auf das beobachtete Verhalten.

    Irgendwo habe ich gelesen (Googlen nach asterisk voicemail choppy bzw. garbled), dass die Timing-Quelle auf die Aufzeichnung einen Einfluss habe, jedenfalls in reinen SIP-Systemen wie meinem.

    Hülfe z. B. der Wechsel von voicemail zu minivm?

    Freilich hat die Fritz!Box durchaus auch ein Resourcen-Problem, denn die Wiedergabe der diversen Pforzheimer Sprachprompts funktioniert zwar einzeln gut, allerdings benötigt Asterisk eine gefühlte Ewigkeit, verschiedene "Schnipsel" aneinanderzufügen, z. B. im Falle von sayUnixTime.

    Ich wäre froh um Anregungen.

    Gute Nacht
    Nellie Nashorn
     
  2. er13

    er13 Aktives Mitglied

    Registriert seit:
    20 Dez. 2005
    Beiträge:
    930
    Zustimmungen:
    8
    Punkte für Erfolge:
    18
    Ändere mal in dieser Zeile no auf yes und berichte uns, ob es funktioniert und was bewirkt (von mir ungetestet, weder compile- noch run-time).
     
  3. nellieNashorn

    nellieNashorn Neuer User

    Registriert seit:
    23 Juni 2018
    Beiträge:
    4
    Zustimmungen:
    0
    Punkte für Erfolge:
    1
    Hallo er13,

    vielen Dank für die prompte Antwort!

    Deinen Vorschlag habe ich sogleich ausprobiert. Leider finde ich kein timerfd.o-File (wohl aber ein res_timing_pthread.o-File). Daher denke ich, dass die von mir wie vorgeschlagen modifizierte Einstellung im Makefile an anderer Stelle wieder übersteuert wird.

    Beste Grüsse
    Nellie Nashorn
     
  4. er13

    er13 Aktives Mitglied

    Registriert seit:
    20 Dez. 2005
    Beiträge:
    930
    Zustimmungen:
    8
    Punkte für Erfolge:
    18
    Habe in r14743 was eingebaut, teste mal und berichte, ob es Dein Problem behebt.

    Vergiss nicht vor dem Bauen im menuconfig unter "Asterisk modules/Resource Modules/res_timing_timerfd: Timerfd Timing Interface" auszuwählen. Der Eintrag wird erst nach dem Update auf r14743 sichtbar.
     
  5. nellieNashorn

    nellieNashorn Neuer User

    Registriert seit:
    23 Juni 2018
    Beiträge:
    4
    Zustimmungen:
    0
    Punkte für Erfolge:
    1
    #5 nellieNashorn, 27 Juni 2018
    Zuletzt von einem Moderator bearbeitet: 27 Juni 2018
    Tausend Dank! Nun kann ich tatsächlich Asterisk mit timerfd bauen, und es läuft auch auf der Fritz!Box 7390. Mittels des Asterisk CLI-Kommandos "timing test" habe ich mich davon überzeugen können, dass Asterisk tatsächlich timerfd verwendet, und ich bekomme auch eine erheblich höhere Auflösung zurück (mag sein, dass ich das Ergebnis nicht vollständig durchschaue, aber vorher mit dem pthread-Timer war bei etwas über "timing test 100" Schluss, nun kann ich z. B. auch "timing test 10000" ohne Fehlermeldung ausführen).
    Nun funktioniert auch die Aufzeichnung von Sprachnachrichten gut, und SayUnixTime tut auch ohne nennenswerte Pausen zwischen den einzelnen Ziffern für Datum und Uhrzeit.
    Ich hatte nicht von Voicemail auf MiniVM umgestellt, weil ich vermute, dass beide letzten Endes dieselbe Funktion aufrufen, um den Channel zu persistieren und daher mein ursprüngliches Problem auch bei MiniVM aufgetreten wäre.
    Stattdessen habe ich nun den Freetz-Asterisk-Build so konfiguriert, dass nicht nur timerfd (FREETZ_PACKAGE_ASTERISK_RES_TIMING_TIMERFD) statt pthread-Timer (FREETZ_PACKAGE_ASTERISK_RES_TIMING_PTHREAD) benutzt wird, sondern auch auf einige Module insbesondere im Bereich Call Detail Records, Channel Event Logging, Bridging und Channel-Treiber.
    Konkret habe ich nun auf die Erstellung der Funktionalität für
    Code:
    FREETZ_PACKAGE_ASTERISK_WITH_BACKTRACE
    FREETZ_PACKAGE_ASTERISK_APP_CDR
    FREETZ_PACKAGE_ASTERISK_APP_CELGENUSEREVENT
    FREETZ_PACKAGE_ASTERISK_APP_CHANSPY
    FREETZ_PACKAGE_ASTERISK_APP_DISA
    FREETZ_PACKAGE_ASTERISK_APP_DUMPCHAN
    FREETZ_PACKAGE_ASTERISK_APP_FESTIVAL
    FREETZ_PACKAGE_ASTERISK_APP_FORKCDR
    FREETZ_PACKAGE_ASTERISK_APP_GETCPEID
    FREETZ_PACKAGE_ASTERISK_APP_ICES, FREETZ_PACKAGE_ASTERISK_APP_MP3
    FREETZ_PACKAGE_ASTERISK_APP_NBSCAT
    FREETZ_PACKAGE_ASTERISK_APP_QUEUE
    FREETZ_PACKAGE_ASTERISK_APP_READEXTEN
    FREETZ_PACKAGE_ASTERISK_APP_SOFTHANGUP FREETZ_PACKAGE_ASTERISK_APP_SPEECH_UTILS
    FREETZ_PACKAGE_ASTERISK_BRIDGE_SOFTMIX
    FREETZ_PACKAGE_ASTERISK_CDR_CSV
    FREETZ_PACKAGE_ASTERISK_CDR_CUSTOM
    FREETZ_PACKAGE_ASTERISK_CDR_MANAGER
    FREETZ_PACKAGE_ASTERISK_CDR_SQLITE3_CUSTOM
    FREETZ_PACKAGE_ASTERISK_CDR_SYSLOG
    FREETZ_PACKAGE_ASTERISK_CEL_CUSTOM
    FREETZ_PACKAGE_ASTERISK_CEL_MANAGER
    FREETZ_PACKAGE_ASTERISK_CEL_SQLITE3_CUSTOM
    FREETZ_PACKAGE_ASTERISK_CHAN_MGCP
    FREETZ_PACKAGE_ASTERISK_CHAN_MOTIF
    FREETZ_PACKAGE_ASTERISK_CHAN_PHONE
    FREETZ_PACKAGE_ASTERISK_CHAN_SKINNY
    FREETZ_PACKAGE_ASTERISK_CHAN_UNISTIM
    FREETZ_PACKAGE_ASTERISK_FORMAT_JPEG
    FREETZ_PACKAGE_ASTERISK_FORMAT_VOX
    FREETZ_PACKAGE_ASTERISK_FUNC_CDR
    FREETZ_PACKAGE_ASTERISK_FUNC_PITCHSHIFT
    verzichtet, hatte diese Funktionalitäten allerdings auch vorher schon nicht bewusst genutzt. Insofern muss ich offen lassen, ob die Verwendung des effizienteren Timers nun mein Problem gelöst hat oder die Verschlankung von Asterisk.
    Nochmals vielen Dank für die Schnelle Anpassung des Trunks!

    //edit by stoney: [CODE] TAG [/CODE] gesetzt - den Schlangentext bitte selbst etwas unterteilen. Danke