HowTo: Asterisk statisch für die FBF kompilieren

Das mit den Modulen ist gerade der "Trick" an einem statischen Build. Die Module werden hier nicht in einzelne Dateien ausgelagert. Statt dessen werden alle Module in das asterisk Binary hinein kompiliert. Die Module sind also alle schon mit dabei, werden nur nicht mehr dynamisch nachgeladen.

Hier ein Auszug meines aktuellen Builds.

Code:
root@freetz:/var/mod/root# asterisk -r
Asterisk 1.6.2.11, Copyright (C) 1999 - 2010 Digium, Inc. and others.
Created by Mark Spencer <[email protected]>
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
=========================================================================
Connected to Asterisk 1.6.2.11 currently running on freetz (pid = 3530)
freetz*CLI> module show
Module                         Description                              Use Count
res_timing_pthread             pthread Timing Interface                 1
res_speech                     Generic Speech Recognition API           0
res_realtime                   Realtime Data Lookup/Rewrite             0
res_musiconhold                Music On Hold Resource                   0
res_limit                      Resource limits                          0
res_curl                       cURL Resource Module                     0
res_crypto                     Cryptographic Digital Signatures         0
res_convert                    File format conversion CLI command       0
res_config_curl                Realtime Curl configuration              0
res_clioriginate               Call origination and redirection from th 0
res_clialiases                 CLI Aliases                              0
res_agi                        Asterisk Gateway Interface (AGI)         1
res_ael_share                  share-able code for AEL                  0
pbx_spool                      Outgoing Spool Support                   0
pbx_realtime                   Realtime Switch                          0
pbx_loopback                   Loopback Switch                          0
pbx_dundi                      Distributed Universal Number Discovery ( 0
pbx_config                     Text Extension Configuration             0
pbx_ael                        Asterisk Extension Language Compiler     0
func_volume                    Technology independent volume control    0
func_vmcount                   Indicator for whether a voice mailbox ha 0
func_version                   Get Asterisk Version/Build Info          0
func_uri                       URI encode/decode dialplan functions     0
func_timeout                   Channel timeout dialplan functions       0
func_sysinfo                   System information related functions     0
func_strings                   String handling dialplan functions       0
func_sprintf                   SPRINTF dialplan function                0
func_shell                     Returns the output of a shell command    0
func_sha1                      SHA-1 computation dialplan function      0
func_realtime                  Read/Write/Store/Destroy values from a R 0
func_rand                      Random number dialplan function          0
func_module                    Checks if Asterisk module is loaded in m 0
func_md5                       MD5 digest dialplan functions            0
func_math                      Mathematical dialplan function           0
func_logic                     Logical dialplan functions               0
func_lock                      Dialplan mutexes                         0
func_iconv                     Charset conversions                      0
func_groupcount                Channel group dialplan functions         0
func_global                    Variable dialplan functions              0
func_extstate                  Gets an extension's state in the dialpla 0
func_env                       Environment/filesystem dialplan function 0
func_enum                      ENUM related dialplan functions          0
func_dialplan                  Dialplan Context/Extension/Priority Chec 0
func_dialgroup                 Dialgroup dialplan function              0
func_devstate                  Gets or sets a device state in the dialp 0
func_db                        Database (astdb) related dialplan functi 0
func_cut                       Cut out information from a string        0
func_curl                      Load external URL                        0
func_config                    Asterisk configuration file variable acc 0
func_channel                   Channel information dialplan functions   0
func_cdr                       Call Detail Record (CDR) dialplan functi 0
func_callerid                  Caller ID related dialplan functions     0
func_blacklist                 Look up Caller*ID name/number from black 0
func_base64                    base64 encode/decode dialplan functions  0
func_audiohookinherit          Audiohook inheritance function           0
func_aes                       AES dialplan functions                   0
format_wav_gsm                 Microsoft WAV format (Proprietary GSM)   0
format_wav                     Microsoft WAV format (8000Hz Signed Line 0
format_vox                     Dialogic VOX (ADPCM) File Format         0
format_sln                     Raw Signed Linear Audio support (SLN)    0
format_sln16                   Raw Signed Linear 16KHz Audio support (S 0
format_siren7                  ITU G.722.1 (Siren7, licensed from Polyc 0
format_siren14                 ITU G.722.1 Annex C (Siren14, licensed f 0
format_pcm                     Raw/Sun uLaw/ALaw 8KHz (PCM,PCMA,AU), G. 0
format_jpeg                    jpeg (joint picture experts group) image 0
format_ilbc                    Raw iLBC data                            0
format_h264                    Raw H.264 data                           0
format_h263                    Raw H.263 data                           0
format_gsm                     Raw GSM data                             0
format_g729                    Raw G729 data                            0
format_g726                    Raw G.726 (16/24/32/40kbps) data         0
format_g723                    G.723.1 Simple Timestamp File Format     0
codec_ulaw                     mu-Law Coder/Decoder                     0
codec_lpc10                    LPC10 2.4kbps Coder/Decoder              0
codec_gsm                      GSM Coder/Decoder                        0
codec_g726                     ITU G.726-32kbps G726 Transcoder         0
codec_g722                     ITU G.722-64kbps G722 Transcoder         0
codec_a_mu                     A-law and Mulaw direct Coder/Decoder     0
codec_alaw                     A-law Coder/Decoder                      0
codec_adpcm                    Adaptive Differential PCM Coder/Decoder  0
chan_sip                       Session Initiation Protocol (SIP)        0
chan_local                     Local Proxy Channel (Note: used internal 0
chan_iax2                      Inter Asterisk eXchange (Ver 2)          0
chan_datacard                  Datacard Channel Driver                  0
chan_bridge                    Bridge Interaction Channel               0
cdr_custom                     Customizable Comma Separated Values CDR  0
cdr_csv                        Comma Separated Values CDR Backend       0
bridge_softmix                 Multi-party software based channel mixin 0
bridge_simple                  Simple two channel bridging module       0
bridge_multiplexed             Multiplexed two channel bridging module  0
bridge_builtin_features        Built in bridging features               1
app_while                      While Loops and Conditional Execution    0
app_waituntil                  Wait until specified time                0
app_waitforsilence             Wait For Silence                         0
app_waitforring                Waits until first ring after time        0
app_voicemail                  Comedian Mail (Voicemail System)         0
app_userevent                  Custom User Event Application            0
app_url                        Send URL Applications                    0
app_transfer                   Transfers a caller to another extension  0
app_talkdetect                 Playback with Talk Detection             0
app_system                     Generic System() application             0
app_stack                      Dialplan subroutines (Gosub, Return, etc 0
app_softhangup                 Hangs up the requested channel           0
app_sendtext                   Send Text Applications                   0
app_senddtmf                   Send DTMF digits Application             0
app_sayunixtime                Say time                                 0
app_record                     Trivial Record Application               0
app_readfile                   Stores output of file into a variable    0
app_readexten                  Read and evaluate extension validity     0
app_read                       Read Variable Application                0
app_privacy                    Require phone number to be entered, if n 0
app_playtones                  Playtones Application                    0
app_playback                   Sound File Playback Application          0
app_parkandannounce            Call Parking and Announce Application    0
app_originate                  Originate call                           0
app_mixmonitor                 Mixed Audio Monitoring Application       0
app_macro                      Extension Macros                         0
app_followme                   Find-Me/Follow-Me Application            0
app_exec                       Executes dialplan applications           0
app_echo                       Simple Echo Application                  0
app_dumpchan                   Dump Info About The Calling Channel      0
app_disa                       DISA (Direct Inward System Access) Appli 0
app_directory                  Extension Directory                      0
app_directed_pickup            Directed Call Pickup Application         0
app_dictate                    Virtual Dictation Machine                0
app_dial                       Dialing Application                      0
app_db                         Database Access Functions                0
app_controlplayback            Control Playback Application             0
app_confbridge                 Conference Bridge Application            0
app_chanspy                    Listen to the audio of an active channel 0
app_channelredirect            Redirects a given channel to a dialplan  0
app_chanisavail                Check channel availability               0
app_cdr                        Tell Asterisk to not maintain a CDR for  0
app_authenticate               Authentication Application               0
134 modules loaded

Die Beispiel Conf-Dateien habe ich absichtlich nicht ins Archiv gepackt. Sonst überschreibt man sich beim Entpacken des Archivs nämlich schnell seine bereits existierenden Dateien. Ich kann die Beispieldateien aber auch hier nochmal als extra Archiv hochladen.

Alles was Capi angeht muss ich aber passen. Da kenne ich mich nicht aus, und habe auch keinerlei Möglichkeit, es irgendwie zu testen. Ich habe nämlich nur noch ausschließlich IP-Telefone. Diesem Thema müsste sich also jemand anderes widmen.
 
Zuletzt bearbeitet:
Hallo,
das chan_skinny Modul für das Skinny Client Control Protocol habe ich mit einkompiliert, ist nun also mit an Board.

Mit dem chan_capi komme ich aber nicht so recht klar. Ich habe die verschiedenen libs installiert, und hangle mich sozusagen von einer Fehlermeldung zur nächsten. Im Moment habe ich mich aber bei folgender Fehlermeldung festgefressen:

Code:
   [CC] chan_capi.c -> chan_capi.o
In file included from chan_capi.h:46,
                 from chan_capi.c:33:
/usr/src/freetz/asterisk-1.6.2.11/include/asterisk/lock.h: In function 'ast_mutex_init':
/usr/src/freetz/asterisk-1.6.2.11/include/asterisk/lock.h:1725: warning: implicit declaration of function 'pthread_mutexattr_settype'
/usr/src/freetz/asterisk-1.6.2.11/include/asterisk/lock.h: At top level:
/usr/src/freetz/asterisk-1.6.2.11/include/asterisk/lock.h:1787: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'ast_rwlock_t'
/usr/src/freetz/asterisk-1.6.2.11/include/asterisk/lock.h:1797: error: expected ')' before '*' token
/usr/src/freetz/asterisk-1.6.2.11/include/asterisk/lock.h:1813: error: expected ')' before '*' token
/usr/src/freetz/asterisk-1.6.2.11/include/asterisk/lock.h:1818: error: expected ')' before '*' token
/usr/src/freetz/asterisk-1.6.2.11/include/asterisk/lock.h:1823: error: expected ')' before '*' token
/usr/src/freetz/asterisk-1.6.2.11/include/asterisk/lock.h:1828: error: expected ')' before '*' token
/usr/src/freetz/asterisk-1.6.2.11/include/asterisk/lock.h:1849: error: expected ')' before '*' token
/usr/src/freetz/asterisk-1.6.2.11/include/asterisk/lock.h:1854: error: expected ')' before '*' token
/usr/src/freetz/asterisk-1.6.2.11/include/asterisk/lock.h:1859: error: expected ')' before '*' token
/usr/src/freetz/asterisk-1.6.2.11/include/asterisk/lock.h:1882: error: expected ')' before '*' token
In file included from /usr/src/freetz/asterisk-1.6.2.11/include/asterisk/config.h:31,
                 from /usr/src/freetz/asterisk-1.6.2.11/include/asterisk/channel.h:144,
                 from chan_capi.h:48,
                 from chan_capi.c:33:
/usr/src/freetz/asterisk-1.6.2.11/include/asterisk/utils.h: In function '_ast_strndup':
/usr/src/freetz/asterisk-1.6.2.11/include/asterisk/utils.h:554: warning: implicit declaration of function 'strndup'
/usr/src/freetz/asterisk-1.6.2.11/include/asterisk/utils.h:554: warning: incompatible implicit declaration of built-in function 'strndup'
/usr/src/freetz/asterisk-1.6.2.11/include/asterisk/utils.h: In function '_ast_vasprintf':
/usr/src/freetz/asterisk-1.6.2.11/include/asterisk/utils.h:593: warning: implicit declaration of function 'vasprintf'
In file included from /usr/src/freetz/asterisk-1.6.2.11/include/asterisk/pbx.h:30,
                 from chan_capi.h:51,
                 from chan_capi.c:33:
/usr/src/freetz/asterisk-1.6.2.11/include/asterisk/hashtab.h: At top level:
/usr/src/freetz/asterisk-1.6.2.11/include/asterisk/hashtab.h:98: error: expected specifier-qualifier-list before 'ast_rwlock_t'
chan_capi.c:151: error: 'PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP' undeclared here (not in a function)
chan_capi.c: In function 'local_queue_frame':
chan_capi.c:828: error: incompatible type for argument 2 of 'memcpy'
chan_capi.c: In function 'capi_new':
chan_capi.c:2204: error: 'DSP_FEATURE_DTMF_DETECT' undeclared (first use in this function)
chan_capi.c:2204: error: (Each undeclared identifier is reported only once
chan_capi.c:2204: error: for each function it appears in.)
chan_capi.c:2206: warning: implicit declaration of function 'ast_dsp_digitmode'
chan_capi.c: In function 'capidev_handle_data_b3_indication':
chan_capi.c:4314: error: incompatible types in assignment
chan_capi.c: In function 'pbx_capi_devicestate':
chan_capi.c:6957: warning: 'devstate2str' is deprecated (declared at /usr/src/freetz/asterisk-1.6.2.11/include/asterisk/devicestate.h:80)
chan_capi.c: At top level:
chan_capi.c:7154: warning: no previous prototype for 'mkif'
make[1]: *** [chan_capi.o] Error 1
make: *** [channels] Error 2

Das chan_capi als seperates Modul zu kompilieren hätte zwar funktioniert, aber ich muss es ja irgendwie direkt in den Asterisk integrieren, da mein statisch kompilierter Asterisk kein Nachladen von dynamischen Modulen unterstützt. Also ich fürchte das mit dem chan_capi wird nicht ganz so einfach.
 
Hallo zusammen,

nach dem ich nun ein Freetz für die 7390 kompiliert und mit external erweitert habe wollte ich mich an Asterisk wagen, bleibe jedoch schon bei

Code:
make menuselect

stecken.

Configure ist durchgelaufen:
configure: Package configured for:
configure: OS type : linux-gnu
configure: Host CPU : mips
configure: build-cpu: vendor: os: i686 : pc : linux-gnu :
configure: host-cpu: vendor: os: mips : unknown : linux-gnu :
configure: Cross Compilation = YES

dann:

ubuntu@ubuntu-desktop:~/asterisk$ unset CC CXX CFLAGS CPPFLAGS LDFLAGS

dann:

ubuntu@ubuntu-desktop:~/asterisk$ make menuselect
/home/ubuntu/usb_7390/toolchain/build/gcc-4.2.4-uClibc-0.9.29/mips-linux-uclibc/bin/svn: 1: Syntax error: word unexpected (expecting ")")
/home/ubuntu/usb_7390/toolchain/build/gcc-4.2.4-uClibc-0.9.29/mips-linux-uclibc/bin/svnversion: 1: Syntax error: word unexpected (expecting ")")
/home/ubuntu/usb_7390/toolchain/build/gcc-4.2.4-uClibc-0.9.29/mips-linux-uclibc/bin/svn: 1: Syntax error: word unexpected (expecting ")")
/home/ubuntu/usb_7390/toolchain/build/gcc-4.2.4-uClibc-0.9.29/mips-linux-uclibc/bin/svn: 1: Syntax error: word unexpected (expecting ")")
CC="cc" CXX="" LD="" AR="" RANLIB="" CFLAGS="" make -C menuselect CONFIGURE_SILENT="--silent" makeopts
make[1]: Betrete Verzeichnis '/home/ubuntu/asterisk/menuselect'
make[1]: »makeopts« ist bereits aktualisiert.
make[1]: Verlasse Verzeichnis '/home/ubuntu/asterisk/menuselect'
CC="cc" CXX="" LD="" AR="" RANLIB="" CFLAGS="" make -C menuselect CONFIGURE_SILENT="--silent" nmenuselect
make[1]: Betrete Verzeichnis '/home/ubuntu/asterisk/menuselect'
make[1]: Für das Ziel »nmenuselect« ist nichts zu tun.
make[1]: Verlasse Verzeichnis '/home/ubuntu/asterisk/menuselect'
CC="cc" CXX="" LD="" AR="" RANLIB="" CFLAGS="" make -C menuselect CONFIGURE_SILENT="--silent" gmenuselect
make[1]: Betrete Verzeichnis '/home/ubuntu/asterisk/menuselect'
make[1]: Für das Ziel »gmenuselect« ist nichts zu tun.
make[1]: Verlasse Verzeichnis '/home/ubuntu/asterisk/menuselect'
/home/ubuntu/usb_7390/toolchain/build/gcc-4.2.4-uClibc-0.9.29/mips-linux-uclibc/bin/svn: 1: Syntax error: word unexpected (expecting ")")
/home/ubuntu/usb_7390/toolchain/build/gcc-4.2.4-uClibc-0.9.29/mips-linux-uclibc/bin/svnversion: 1: Syntax error: word unexpected (expecting ")")
/home/ubuntu/usb_7390/toolchain/build/gcc-4.2.4-uClibc-0.9.29/mips-linux-uclibc/bin/svn: 1: Syntax error: word unexpected (expecting ")")
/home/ubuntu/usb_7390/toolchain/build/gcc-4.2.4-uClibc-0.9.29/mips-linux-uclibc/bin/svn: 1: Syntax error: word unexpected (expecting ")")
make[1]: Betrete Verzeichnis '/home/ubuntu/asterisk'
CC="cc" CXX="" LD="" AR="" RANLIB="" CFLAGS="" make -C menuselect CONFIGURE_SILENT="--silent" makeopts
make[2]: Betrete Verzeichnis '/home/ubuntu/asterisk/menuselect'
make[2]: »makeopts« ist bereits aktualisiert.
make[2]: Verlasse Verzeichnis '/home/ubuntu/asterisk/menuselect'
Terminal must be at least 80 x 27.
menuselect changes NOT saved!
make[1]: Verlasse Verzeichnis '/home/ubuntu/asterisk'

Bin gerade etwas ratlos :confused:

Hat vielleicht jemand einen Tipp für mich wo ich ansetzen könnte mir der Fehlersuche ? :D

Edit: Asterisk Version ist: http://svnview.digium.com/svn/asterisk/branches/1.6.2/
 
Gute Frage :rolleyes:

Muss an der compile_env Datei liegen die ich nach der Anleitung hier erstellt habe. Nach einem reboot und manuelles angeben der host- und ziel Architektur

./configure --prefix=/var/media/ftp/uStor02/asterisk --host=mips-linux --disable-xmldoc --build=i386-linux-gnu --target=mips-linux

+ größer ziehen des Terminals :) (Terminal must be at least 80 x 27)

hat er das make menuselect dann auch ausgeführt. Danke auf jeden Fall für den Tipp, manchmal sieht man den Wald vor lauter Bäumen nicht mehr ;)
 
Das chan_capi als seperates Modul zu kompilieren hätte zwar funktioniert, aber ich muss es ja irgendwie direkt in den Asterisk integrieren, da mein statisch kompilierter Asterisk kein Nachladen von dynamischen Modulen unterstützt. Also ich fürchte das mit dem chan_capi wird nicht ganz so einfach.

Gibt es da noch Hoffnung auf eine version mit CAPI Unterstützung?
Wäre super!
 
Hallo,
also ich kann zumindest in meiner aktuellen Asterisk Buildumgebung leider kein chan_capi mit einkompilieren. Irgendwo hängt's einfach immer.
In diesem Thread hat's aber tatsächlich jemand geschafft, chan_capi auf der FritzBox zu verwenden. Vielleicht kommst du da weiter, bzw. kannst dir dort direkt von jemandem Hilfe holen, der es schon geschafft hat.
http://www.ip-phone-forum.de/showthread.php?t=217330
 
Befehl zum Starten

Hallo,

vielen Dank für die klasse Arbeit.
Ich versuche das vorkompiliertes Statisches Asterisk Build auf meiner 7270 zum laufen zu bekommen. Dazu have ich die Dateinen per FTP auf meinen USB Stick geschoben.

Mit Putty mit ich ins Verzeichnis:

var/media/ftp/uStor01/asterisk/sbin

aber was mache ich jetzt um Asterix zu starten?


Gruss
 
aber was mache ich jetzt um Asterix zu starten?
Wenn du dich in dem Verzeichnis befindest, in dem auch das Asterisk-Binary liegt, kannst du den Asterisk einfach mit
Code:
./asterisk
starten.

Das setzt natürlich voraus, dass die entsprechenden Konfigurationsdateien bereits vorhanden sind. Die offiziellen Beispieldateien findest du im samples-Download.
 
Dank dfroe und seiner riesiger Geduld (und Unterstützung) ist es auch mir gelungen asterisk zu kompilieren.
Was hinzuzufügen wäre: im freetz "make menuconfig" muss ncurses ausgewählt werden.

Um chan_datacard einzubinden muss man alle *.c - und *.h - Dateien aus dem Trunk ins channels/ im Asterisk-Ordner rein kopieren. Anschließend in der chan_datacard.h die Defines setzen, die normalerweise im Makefile von chan_datacard stehen. Also in chan_datacard.h folgende Zeilen oben hinzufügen:
Code:
#define ICONV_CONST const
#define __DEBUG__
#define __MANAGER__
#define __APP_
 
Hallo,
Wie kann ich den USB stick mit ext3 formatieren?

Danke,
Khaled
 
hallo,

ich habe meinen USB-Stick mit ext3 formatiert. Leider wird das Dateisystem von der Fritzbox aber nicht erkannt. Wüsste jemand vielleicht, wie man das beheben könnte?

Gruss
 
Wegen dem Journaling ist ext3 aber keine so gut Idee auf einem USB Stick. Ich würde ext2 nehmen.
 
Wie bereits gesagt, deine Freetz-Firmware muss ext3 unterstützen. Am einfachsten kannst du den ext3-Support direkt bei den Patches unter AutoMount aktivieren.
Ich würde übrigens auf jeden Fall zu ext3 raten - gerade wegen des Journalings. Denn einen GB-großen USB-Stick möchte ich nicht unbedingt beim Booten via ext2 komplett prüfen lassen, nur weil die FritzBox mal nicht korrekt heruntergefahren wurde.
Die Angst, einen Flash-Speicher durch den Einsatz eines Jounraling-Filesystems "totzuschreiben", halte ich für unbegründet. Vorallem in der FritzBox, wo nun wirklich nicht jede Sekunde I/O-Operationen auf dem Speicher ausgeführt werden, wird der USB-Stick mit ext3 bestimmt länger leben als die FritzBox selber. :)
 
Hallo,
also habe jetzt das ext3 Modul in Freetz mit reingebaut. Der USB-Stick wird jetzt irgendwie automatisch auf uStor00 gemounted. Aber dann habe ich ihn jetzt zusätzlich auf uStor01 gemountet. Soweit so gut.

Wenn ich versuche Asterisk zu starten kommt: "Permission denied" . Dem ganzen Asterisk Ordner habe ich über SSH die Rechte 777 gegeben und vererbt.
Liegt das daran, dass ich als Konfig-Dateien nur (ungeändert) die Beispieldateien drin hab (ich wollte erst mal sehen, ob die Rahmenbedingungen klappen, bevor ich mich ans konfiguieren setzte...), oder ist woanders der Wurm drin?

Gruss
 
Allein das "Permission denied" sagt jetzt nicht gerade viel aus. Das könnte sicherlich viele Ursachen haben.

Kannst du mal den Asterisk mit "asterisk -f -d -v" starten, und uns die Ausgabe hier posten? Das sollte einige Debug-Ausgaben liefern, die uns bei der Fehlersuche helfen könnten. Ggfs. kannst du das -v auch mehrfach dranhängen, um den Asterisk noch gesprächiger zu machen.
 
Mal ne Frage am Rande: Geht das GUI für diese Version oder warum ist das Verzeichnis dafür vorhanden (static-http)? Ich habe bei 1.4 aufgehört und das GUI lief auf der FB nicht sauber.
 
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.