RasPi2 Asterisk + g729 codec

g729 codec は有料なのですが、open source版があるようなのでこちらをインストールしてみます。

このサイトが参考になりました。

open source版を使うには、INTEL COMPILERが必要になってくるみたいですが、面倒なので、bcg729+g729 codecの組み合わせでやってみます。

bcg729のインストール

$ cd ~/src
$ wget http://download-mirror.savannah.gnu.org/releases/linphone/plugins/sources/bcg729-1.0.0.tar.gz
$ tar zxvf bcg729-1.0.0.tar.gz
$ cd bcg729-1.0.0
$ ./configure --libdir=/lib
$ make
$ sudo make install

g729 codecのインストール
autogenを使っているので、libtoolをインストールしておく

$ sudo apt-get install libtool
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下の特別パッケージがインストールされます:
libltdl-dev
提案パッケージ:
libtool-doc gfortran fortran95-compiler gcj
以下のパッケージが新たにインストールされます:
libltdl-dev libtool
アップグレード: 0 個、新規インストール: 2 個、削除: 0 個、保留: 0 個。
821 kB のアーカイブを取得する必要があります。
この操作後に追加で 2,360 kB のディスク容量が消費されます。
続行しますか [Y/n]? Y

$ cd ~/src
$ wget http://asterisk.hosting.lv/src/asterisk-g72x-1.3.tar.bz2
$ tar jxvf asterisk-g72x-1.3.tar.bz2
$ cd asterisk-g72x-1.3

configure.acを修正する。

$ vi configure.ac
$ diff configure.ac configure.ac-
30,32c30,32
<   armv7l-*-linux-gnueabihf*)
<     cflags="-Os -pipe -mcpu=cortex-a9 -mtune=cortex-a9 -mfpu=vfp -mfloat-abi=hard"
<     march="armv7-a"
---
>   armv6l-*-linux-gnueabihf*)
>     cflags="-mcpu=arm1176jzf-s -mfloat-abi=hard -mfpu=vfp -O3 -Wall"
>     march="armv6zk"

autogen.shを走らせる

$ ./autogen.sh
$ ./configure --with-bcg729 --with-asterisk18
$ make
$ sudo make install

g729 codecが読み込まれているか確認するため、asteriskを再起動する。

$ sudo /etc/init.d/asterisk restart
$ sudo asterisk -vvvvv
CLI> core show translation
         Translation times between formats (in microseconds) for one second of data
          Source Format (Rows) Destination Format (Columns)

           g723   gsm  ulaw  alaw g726aal2 adpcm  slin lpc10  g729 speex  ilbc  g726  g722 siren7 siren14 slin16  g719 speex16 testlaw
     g723     -     -     -     -        -     -     -     -     -     -     -     -     -      -       -      -     -       -       -
      gsm     -     -     2     2    10001     2     1 10001 40001     - 50001 10001     2      -       -      3     -       -       2
     ulaw     - 10001     -     1    10001     2     1 10001 40001     - 50001 10001     2      -       -      3     -       -       2
     alaw     - 10001     1     -    10001     2     1 10001 40001     - 50001 10001     2      -       -      3     -       -       2
 g726aal2     - 10001     2     2        -     2     1 10001 40001     - 50001 10001     2      -       -      3     -       -       2
    adpcm     - 10001     2     2    10001     -     1 10001 40001     - 50001 10001     2      -       -      3     -       -       2
     slin     - 10000     1     1    10000     1     - 10000 40000     - 50000 10000     1      -       -      2     -       -       1
    lpc10     - 20000 10001 10001    20000 10001 10000     - 50000     - 60000 20000 10001      -       -  10002     -       -   10001
     g729     - 10001     2     2    10001     2     1 10001     -     - 50001 10001     2      -       -      3     -       -       2
    speex     -     -     -     -        -     -     -     -     -     -     -     -     -      -       -      -     -       -       -
     ilbc     - 20000 10001 10001    20000 10001 10000 20000 50000     -     - 20000 10001      -       -  10002     -       -   10001
     g726     - 20000 10001 10001    20000 10001 10000 20000 50000     - 60000     - 10001      -       -  10002     -       -   10001
     g722     - 10001     2     2    10001     2     1 10001 40001     - 50001 10001     -      -       -      1     -       -       2
   siren7     -     -     -     -        -     -     -     -     -     -     -     -     -      -       -      -     -       -       -
  siren14     -     -     -     -        -     -     -     -     -     -     -     -     -      -       -      -     -       -       -
   slin16     - 10002     3     3    10002     3     2 10002 40002     - 50002 10002     1      -       -      -     -       -       3
     g719     -     -     -     -        -     -     -     -     -     -     -     -     -      -       -      -     -       -       -
  speex16     -     -     -     -        -     -     -     -     -     -     -     -     -      -       -      -     -       -       -
  testlaw     - 10001     2     2    10001     2     1 10001 40001     - 50001 10001     2      -       -      3     -       -       -

g729が使えるようになってますね。

sip.confとextentions.confを書けばとりあえずは、使える状態になりました。

後は、時間をかけてsip.conf , extentions.confを作成していきます。

RasPi2 Asterisk

apt-get でインストールしたasterisk 1.8.13.1には日本語音声は含まれていません。

よって、asteriskをmakeします。もっと簡単な方法があると思うのですが、とりあえず定石通りにmakeのみ行います。

asteriskのsourceを取ってくる。

バージョンは、1.8.13.1

$ cd ~
$ mkdir src
$ cd src
$ wget http://downloads.asterisk.org/pub/telephony/asterisk/old-releases/asterisk-1.8.13.1.tar.gz
$ tar zxvf asterisk-1.8.13.1.tar.gz
$ cd asterisk-1.8.13.1
$ ./bootstrap.sh

autoconfが無いと怒られたので、apt-getで入れる。

$ sudo apt-get install autoconf
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下の特別パッケージがインストールされます:
  automake autotools-dev m4
提案パッケージ:
  autoconf2.13 autoconf-archive gnu-standards autoconf-doc libtool
以下のパッケージが新たにインストールされます:
  autoconf automake autotools-dev m4
アップグレード: 0 個、新規インストール: 4 個、削除: 0 個、保留: 0 個。
1,516 kB のアーカイブを取得する必要があります。
この操作後に追加で 4,053 kB のディスク容量が消費されます。
続行しますか [Y/n]? Y

autoconfが入ったので、もう一度 bootstrapを走らせます。

$ ./bootstrap.sh
$ ./configure

次は、libxml2-devが無いと怒られたので、apt-getで入れる。

$ sudo apt-get install libxml2-dev
$ ./configure
configure: Menuselect build configuration successfully completed

               .$$$$$$$$$$$$$$$=..
            .$7$7..          .7$$7:.
          .$$:.                 ,$7.7
        .$7.     7$$$$           .$$77
     ..$$.       $$$$$            .$$$7
    ..7$   .?.   $$$$$   .?.       7$$$.
   $.$.   .$$$7. $$$$7 .7$$$.      .$$$.
 .777.   .$$$$$$77$$$77$$$$$7.      $$$,
 $$$~      .7$$$$$$$$$$$$$7.       .$$$.
.$$7          .7$$$$$$$7:          ?$$$.
$$$          ?7$$$$$$$$$$I        .$$$7
$$$       .7$$$$$$$$$$$$$$$$      :$$$.
$$$       $$$$$$7$$$$$$$$$$$$    .$$$.
$$$        $$$   7$$$7  .$$$    .$$$.
$$$$             $$$$7         .$$$.
7$$$7            7$$$$        7$$$
 $$$$$                        $$$
  $$$$7.                       $$  (TM)
   $$$$$$$.           .7$$$$$$  $$
     $$$$$$$$$$$$7$$$$$$$$$.$$$$$$
       $$$$$$$$$$$$$$$$.                

configure: Package configured for:
configure: OS type  : linux-gnueabi
configure: Host CPU : armv7l
configure: build-cpu:vendor:os: armv7l : unknown : linux-gnueabi :
configure: host-cpu:vendor:os: armv7l : unknown : linux-gnueabi :

ようやくconfigureまで通ったので、make menuselectでg729を使いたいのと、日本語音声ファイルが入るように設定する。

$ make menuselect 日本語音声ファイルが入ってないので、最新版を落とし直す。

$ wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-1.8.32.3.tar.gz
$ tar zxvf asterisk-1.8.32.3.tar.gz
$ cd asterisk-1.8.32.3
$ ./bootstrap.sh
$ ./configure
$ make menuselect -j6
--->  Core Sound Packages
[*] CORE-SOUNDS-JA-ULAW
[ ] CORE-SOUNDS-JA-ALAW
[*] CORE-SOUNDS-JA-GSM
[*] CORE-SOUNDS-JA-G729
[*] CORE-SOUNDS-JA-G722
--->  Music On Hold File Packages
[*] MOH-OPSOUND-WAV
[*] MOH-OPSOUND-ULAW
[ ] MOH-OPSOUND-ALAW
[*] MOH-OPSOUND-GSM
[*] MOH-OPSOUND-G729
[*] MOH-OPSOUND-G722

このあたりを選択しておく。メニューから抜けるとき、「s」を押さないと反映されないよ。
MoHでmp3も今後使いたいと思うので、get_mp3_source.shを走らせておく。
ソースディレクトリを一度削除し、tar.gzを再解凍後、get_mp3_source.shを走らせてから、./bootstrap , ./confgiure , make menuconfig , makeしなおした。

$ apt-get install subversion
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下の特別パッケージがインストールされます:
  libapr1 libaprutil1 libserf1 libsvn1
提案パッケージ:
  subversion-tools db5.1-util
以下のパッケージが新たにインストールされます:
  libapr1 libaprutil1 libserf1 libsvn1 subversion
アップグレード: 0 個、新規インストール: 5 個、削除: 0 個、保留: 0 個。
2,505 kB のアーカイブを取得する必要があります。
この操作後に追加で 6,717 kB のディスク容量が消費されます。
続行しますか [Y/n]? Y
$ ./contrib/scripts/get_mp3_source.sh
A    addons/mp3
A    addons/mp3/MPGLIB_README
A    addons/mp3/common.c
A    addons/mp3/huffman.h
A    addons/mp3/tabinit.c
A    addons/mp3/Makefile
A    addons/mp3/README
A    addons/mp3/decode_i386.c
A    addons/mp3/dct64_i386.c
A    addons/mp3/MPGLIB_TODO
A    addons/mp3/mpg123.h
A    addons/mp3/layer3.c
A    addons/mp3/mpglib.h
A    addons/mp3/decode_ntom.c
A    addons/mp3/interface.c
リビジョン 202 をエクスポートしました。

いよいよmakeする。

$ make -j6
$ sudo /etc/init.d/asterisk stop
$ sudo make install
$ sudo /etc/init.d/asterisk start

新バージョンに置き換わっていると思うので、確認する。

# sudo asterisk -vvvvvr
Asterisk 1.8.32.3, Copyright (C) 1999 - 2013 Digium, Inc. and others.
Created by Mark Spencer <markster@digium.com>
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.8.32.3 currently running on rastest (pid = 19121)
Verbosity is at least 7

ちゃんと新しいバーションに変わっています。
CLIでいろいろ見てみます。

*CLI> reload
*CLI> module show
Module Description Use Count
res_ael_share.so share-able code for AEL 0
res_stun_monitor.so STUN Network Monitor 0
res_monitor.so Call Monitoring Resource 0
res_smdi.so Simplified Message Desk Interface (SMDI) 0
res_speech.so Generic Speech Recognition API 0
res_fax.so Generic FAX Applications 0
res_calendar.so Asterisk Calendar integration 0
res_agi.so Asterisk Gateway Interface (AGI) 1
res_musiconhold.so Music On Hold Resource 0
app_confbridge.so Conference Bridge Application 0
app_minivm.so Mini VoiceMail (A minimal Voicemail e-ma 0
app_read.so Read Variable Application 0
app_sms.so SMS/PSTN handler 0
format_wav_gsm.so Microsoft WAV format (Proprietary GSM) 0
cdr_syslog.so Customizable syslog CDR Backend 0
app_morsecode.so Morse code 0
app_followme.so Find-Me/Follow-Me Application 0
func_version.so Get Asterisk Version/Build Info 0
chan_local.so Local Proxy Channel (Note: used internal 0
chan_agent.so Agent Proxy Channel 0
app_softhangup.so Hangs up the requested channel 0
app_macro.so Extension Macros 0
func_sha1.so SHA-1 computation dialplan function 0
res_limit.so Resource limits 0
func_callcompletion.so Call Control Configuration Function 0
func_uri.so URI encode/decode dialplan functions 0
res_rtp_multicast.so Multicast RTP Engine 0
format_h264.so Raw H.264 data 0
bridge_simple.so Simple two channel bridging module 0
app_festival.so Simple Festival Interface 0
app_alarmreceiver.so Alarm Receiver for Asterisk 0
app_talkdetect.so Playback with Talk Detection 0
func_md5.so MD5 digest dialplan functions 0
app_readexten.so Read and evaluate extension validity 0
res_phoneprov.so HTTP Phone Provisioning 0
func_sysinfo.so System information related functions 0
bridge_softmix.so Multi-party software based channel mixin 0
func_enum.so ENUM related dialplan functions 0
codec_alaw.so A-law Coder/Decoder 0
app_dial.so Dialing Application 0
cdr_custom.so Customizable Comma Separated Values CDR 0
app_sayunixtime.so Say time 0
codec_ilbc.so iLBC Coder/Decoder 0
app_privacy.so Require phone number to be entered, if n 0
app_playtones.so Playtones Application 0
chan_bridge.so Bridge Interaction Channel 0
app_milliwatt.so Digital Milliwatt (mu-law) Test Applicat 0
func_db.so Database (astdb) related dialplan functi 0
app_authenticate.so Authentication Application 0
func_vmcount.so Indicator for whether a voice mailbox ha 0
pbx_spool.so Outgoing Spool Support 0
app_exec.so Executes dialplan applications 0
app_directory.so Extension Directory 0
res_clialiases.so CLI Aliases 0
format_sln.so Raw Signed Linear Audio support (SLN) 0
func_lock.so Dialplan mutexes 0
app_test.so Interface Test Application 0
pbx_loopback.so Loopback Switch 0
app_stack.so Dialplan subroutines (Gosub, Return, etc 0
res_adsi.so ADSI Resource 0
app_getcpeid.so Get ADSI CPE ID 0
chan_unistim.so UNISTIM Protocol (USTM) 0
app_image.so Image Transmission Application 0
codec_a_mu.so A-law and Mulaw direct Coder/Decoder 0
func_pitchshift.so Audio Effects Dialplan Functions 0
func_realtime.so Read/Write/Store/Destroy values from a R 0
app_speech_utils.so Dialplan Speech Applications 0
app_record.so Trivial Record Application 0
codec_lpc10.so LPC10 2.4kbps Coder/Decoder 0
app_nbscat.so Silly NBS Stream Application 0
app_disa.so DISA (Direct Inward System Access) Appli 0
app_userevent.so Custom User Event Application 0
format_gsm.so Raw GSM data 0
format_vox.so Dialogic VOX (ADPCM) File Format 0
func_shell.so Collects the output generated by a comma 0
format_sln16.so Raw Signed Linear 16KHz Audio support (S 0
app_meetme.so MeetMe conference bridge 0
res_timing_timerfd.so Timerfd Timing Interface 0
app_while.so While Loops and Conditional Execution 0
res_timing_dahdi.so DAHDI Timing Interface 0
format_siren14.so ITU G.722.1 Annex C (Siren14, licensed f 0
app_transfer.so Transfers a caller to another extension 0
chan_oss.so OSS Console Channel Driver 0
func_sprintf.so SPRINTF dialplan function 0
chan_multicast_rtp.so Multicast RTP Paging Channel 0
func_blacklist.so Look up Caller*ID name/number from black 0
app_zapateller.so Block Telemarketers with Special Informa 0
cdr_csv.so Comma Separated Values CDR Backend 0
app_externalivr.so External IVR Interface Application 0
app_dahdibarge.so Barge in on DAHDI channel application 0
codec_ulaw.so mu-Law Coder/Decoder 0
app_playback.so Sound File Playback Application 0
app_system.so Generic System() application 0
cdr_manager.so Asterisk Manager Interface CDR Backend 0
app_dictate.so Virtual Dictation Machine 0
app_db.so Database Access Functions 0
func_iconv.so Charset conversions 0
app_celgenuserevent.so Generate an User-Defined CEL event 0
app_cdr.so Tell Asterisk to not maintain a CDR for 0
codec_dahdi.so Generic DAHDI Transcoder Codec Translato 0
func_callerid.so Party ID related dialplan functions (Cal 0
format_siren7.so ITU G.722.1 (Siren7, licensed from Polyc 0
app_page.so Page Multiple Phones 0
res_realtime.so Realtime Data Lookup/Rewrite 0
app_waituntil.so Wait until specified time 0
format_g719.so ITU G.719 0
app_adsiprog.so Asterisk ADSI Programming Application 0
func_rand.so Random number dialplan function 0
bridge_multiplexed.so Multiplexed two channel bridging module 0
app_ices.so Encode and Stream via icecast and ices 0
chan_dahdi.so DAHDI Telephony Driver 0
app_queue.so True Call Queueing 0
app_mixmonitor.so Mixed Audio Monitoring Application 0
app_directed_pickup.so Directed Call Pickup Application 0
app_amd.so Answering Machine Detection Application 0
codec_gsm.so GSM Coder/Decoder 0
app_verbose.so Send verbose output 0
res_rtp_asterisk.so Asterisk RTP Stack 0
func_global.so Variable dialplan functions 0
func_base64.so base64 encode/decode dialplan functions 0
res_convert.so File format conversion CLI command 0
app_senddtmf.so Send DTMF digits Application 0
app_sendtext.so Send Text Applications 0
func_timeout.so Channel timeout dialplan functions 0
app_url.so Send URL Applications 0
func_cdr.so Call Detail Record (CDR) dialplan functi 0
app_setcallerid.so Set CallerID Presentation Application 0
func_srv.so SRV related dialplan functions 0
format_g729.so Raw G.729 data 0
format_g723.so G.723.1 Simple Timestamp File Format 0
format_g726.so Raw G.726 (16/24/32/40kbps) data 0
pbx_config.so Text Extension Configuration 0
func_devstate.so Gets or sets a device state in the dialp 0
app_dumpchan.so Dump Info About The Calling Channel 0
app_channelredirect.so Redirects a given channel to a dialplan 0
app_waitforring.so Waits until first ring after time 0
func_cut.so Cut out information from a string 0
func_dialgroup.so Dialgroup dialplan function 0
func_logic.so Logical dialplan functions 0
app_mp3.so Silly MP3 Application 0
chan_phone.so Linux Telephony API Support 0
format_jpeg.so jpeg (joint picture experts group) image 0
format_pcm.so Raw/Sun uLaw/ALaw 8KHz (PCM,PCMA,AU), G. 0
func_config.so Asterisk configuration file variable acc 0
codec_g726.so ITU G.726-32kbps G726 Transcoder 0
codec_adpcm.so Adaptive Differential PCM Coder/Decoder 0
func_groupcount.so Channel group dialplan functions 0
app_originate.so Originate call 0
func_strings.so String handling dialplan functions 0
app_readfile.so Stores output of file into a variable 0
res_timing_pthread.so pthread Timing Interface 0
app_dahdiras.so DAHDI ISDN Remote Access Server 0
func_math.so Mathematical dialplan function 0
func_env.so Environment/filesystem dialplan function 0
func_volume.so Technology independent volume control 0
func_audiohookinherit.so Audiohook inheritance function 0
app_chanspy.so Listen to the audio of an active channel 0
app_chanisavail.so Check channel availability 0
res_clioriginate.so Call origination and redirection from th 0
bridge_builtin_features.so Built in bridging features 1
app_waitforsilence.so Wait For Silence 0
pbx_ael.so Asterisk Extension Language Compiler 0
app_flash.so Flash channel application 0
format_ilbc.so Raw iLBC data 0
chan_skinny.so Skinny Client Control Protocol (Skinny) 0
pbx_realtime.so Realtime Switch 0
app_voicemail.so Comedian Mail (Voicemail System) 0
func_module.so Checks if Asterisk module is loaded in m 0
format_wav.so Microsoft WAV/WAV16 format (8kHz/16kHz S 0
func_dialplan.so Dialplan Context/Extension/Priority Chec 0
res_security_log.so Security Event Logging 0
app_controlplayback.so Control Playback Application 0
res_mutestream.so Mute audio stream resources 0
app_forkcdr.so Fork The CDR into 2 separate entities 0
codec_g722.so ITU G.722-64kbps G722 Transcoder 0
func_extstate.so Gets an extension's state in the dialpla 0
func_channel.so Channel information dialplan functions 0
cel_custom.so Customizable Comma Separated Values CEL 0
cel_manager.so Asterisk Manager Interface CEL Backend 0
func_frame_trace.so Frame Trace for internal ast_frame debug 0
app_parkandannounce.so Call Parking and Announce Application 0
app_echo.so Simple Echo Application 0
format_h263.so Raw H.263 data 0
183 modules loaded

183ものモジュールが読み込まれていますね。

次は、g729 codecを組み込んでいこうと思う。

RasPi2 Dahdi

さて前回、RasPi2でkernel compileする記事を書きましたが、理由はdahdiをインストールしたかったからです。

debianには、module-assistantというkernel moduleを自動作成してくれる便利なコマンドがあるのですが、raspi2のkernel-headers等々必要なdeb pkgが見当たらないので、仕方なくkernel compileを行いました。

asteriskとdahdiをapt-getでインストールします。

# apt-get update
# apt-get upgrade
# apt-get install asterisk dahdi
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下の特別パッケージがインストールされます:
  asterisk-config asterisk-core-sounds-en asterisk-core-sounds-en-gsm asterisk-modules
  asterisk-moh-opsound-gsm asterisk-voicemail autopoint dahdi-linux debhelper freetds-common
  fxload gettext html2text intltool-debian libgettextpo0 libgmime-2.6-0 libgpgme11 libical0
  libiksemel3 liblua5.1-0 libmail-sendmail-perl libneon27-gnutls libodbc1 libperl5.14 libpq5
  libpth20 libradiusclient-ng2 libresample1 libsaclm3 libsaevt3 libsensors4 libsnmp-base libsnmp15
  libsox-fmt-alsa libsox-fmt-base libsox2 libspeexdsp1 libsqlite0 libsybdb5
  libsys-hostname-long-perl libtonezone2.0 libunistring0 libvpb0 module-assistant po-debconf sox
  vpb-driver-source
提案パッケージ:
  asterisk-doc asterisk-dev asterisk-ooh323 asterisk-dahdi dh-make gettext-doc gpgsm gnupg2
  libmyodbc odbc-postgresql tdsodbc unixodbc-bin lm-sensors snmp-mibs-downloader libsox-fmt-all
  vpb-utils libmail-box-perl
以下のパッケージが新たにインストールされます:
  asterisk asterisk-config asterisk-core-sounds-en asterisk-core-sounds-en-gsm asterisk-modules
  asterisk-moh-opsound-gsm asterisk-voicemail autopoint dahdi dahdi-linux debhelper freetds-common
  fxload gettext html2text intltool-debian libgettextpo0 libgmime-2.6-0 libgpgme11 libical0
  libiksemel3 liblua5.1-0 libmail-sendmail-perl libneon27-gnutls libodbc1 libperl5.14 libpq5
  libpth20 libradiusclient-ng2 libresample1 libsaclm3 libsaevt3 libsensors4 libsnmp-base libsnmp15
  libsox-fmt-alsa libsox-fmt-base libsox2 libspeexdsp1 libsqlite0 libsybdb5
  libsys-hostname-long-perl libtonezone2.0 libunistring0 libvpb0 module-assistant po-debconf sox
  vpb-driver-source
アップグレード: 0 個、新規インストール: 49 個、削除: 0 個、保留: 0 個。
21.2 MB のアーカイブを取得する必要があります。
この操作後に追加で 40.7 MB のディスク容量が消費されます。
続行しますか [Y/n]? Y

ITU-T 電話コードは、「81」

asterisk

大量のpkgがインストールされます。

その後、dahdi.ko等のkernel moduleを別途インストールします。

dahdiのmake

# cd /usr/src
# wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz

現在のバージョンは、2.10.1なのでmvしておく。

# mv dahdi-linux-complete-current.tar.gz dahdi-linux-complete-2.10.1.tar.gz
# tar zxvf dahdi-linux-complete-2.10.1.tar.gz

今回は、dahdi_dummyのみ必要なため、Kbuidを修正する。

# cd dahdi-linux-complete-2.10.1+2.10.1
# vi vi linux/drivers/dahdi/Kbuild

Kbuildのdiff

# diff Kbuild Kbuild-
2c2
< obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_DUMMY) += dahdi_dummy.o
---
> #obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_DUMMY) += dahdi_dummy.o
10,15c10,15
< #obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_OCT612X) += oct612x/
< #obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_WCT4XXP) += wct4xxp/
< #obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_WCTC4XXP) += wctc4xxp/
< #obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_WCTDM24XXP) += wctdm24xxp/
< #obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_WCTE12XP) += wcte12xp/
< #obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_WCTE13XP) += wcte13xp.o
---
> obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_OCT612X) += oct612x/
> obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_WCT4XXP) += wct4xxp/
> obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_WCTC4XXP) += wctc4xxp/
> obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_WCTDM24XXP) += wctdm24xxp/
> obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_WCTE12XP) += wcte12xp/
> obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_WCTE13XP) += wcte13xp.o
23c23
< #obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_WCTE43X) += wcte43x.o
---
> obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_WCTE43X) += wcte43x.o
31c31
< #obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_WCAXX) += wcaxx.o
---
> obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_WCAXX) += wcaxx.o
39,48c39,48
< #obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_WCTDM) += wctdm.o
< #obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_VOICEBUS) += voicebus/
< #obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_WCB4XXP) += wcb4xxp/
<
< #obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_WCT1XXP) += wct1xxp.o
< #obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_WCTE11XP) += wcte11xp.o
<
< #obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_WCFXO) += wcfxo.o
< #obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_TOR2) += tor2.o
< #obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_PCIRADIO) += pciradio.o
---
> obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_WCTDM) += wctdm.o
> obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_VOICEBUS) += voicebus/
> obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_WCB4XXP) += wcb4xxp/
>
> obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_WCT1XXP) += wct1xxp.o
> obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_WCTE11XP) += wcte11xp.o
>
> obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_WCFXO) += wcfxo.o
> obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_TOR2) += tor2.o
> obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_PCIRADIO) += pciradio.o
51c51
< #obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_XPP) += xpp/
---
> obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_XPP) += xpp/

make&installする

# make -j6
# make install

/etc/dahdi/system.confを書く
system.confに何も書かなければ、dahdi_dummyが読み込まれるそうだが、とりあえず明示しておく。

# less system.conf
# Autogenerated by /usr/sbin/dahdi_genconf on Tue Apr  7 14:48:14 2015
# If you edit this file and execute /usr/sbin/dahdi_genconf again,
# your manual changes will be LOST.
# Dahdi Configuration File
#
# This file is parsed by the Dahdi Configurator, dahdi_cfg
#
# Global data

loadzone        = jp
defaultzone     = jp

# DAHDI Dummy
dahdi_dummy

確認のため、dahdi.koを読み込んでみる。

$ lsmod
Module                  Size  Used by
dahdi                 207627  0
crc_ccitt               1141  1 dahdi

これでasteriskを設定する準備が出来た。

次は、asterisk本体を設定していく。

 

新規構築したwordpressで使っているpluginの記録

誤って、wordpressディレクトリの中で、

rm -rf *

なんてバカなことをしてしまったので、1から再構築したわけですが、
前回 どのpluginを使っていたか全く判りません。

とりあえず、現状のpluginを一覧しておく。

  • Akismet
  • AmazonJS
  • Google Analyticator
  • Google Analytics Dashboard for WP
  • Simple Login Widget
  • SyntaxHighlighter Evolved
  • WP-Slimbox2
  • WP Multibyte Path
  • WPtouch
  • MCE Table Buttons

2015/4/25
MCE Table Buttonsを追加
2015/4/24
Google Analytics Dashboard for WPを追加

SyntaxHighlighter pluginを使ってみる

SyntaxHighlighterを入れてみたので、テストする。

ついでに、lightbox系のwp-slimbox2も入れておく。

“[タグ]” source “[/タグ]”でOK

簡単に綺麗に整形してくれますね。

使えるタグは、http://alexgorbatchev.com/SyntaxHighlighter/manual/brushes/でいいのかな?

よく使いそうなのは、

shell , c , css , delphi , patch , java , perl , php , text , sql , xml あたりでしょうか。

phpの例


<?php
$options = get_option('inove_options');

if($options['feed'] && $options['feed_url']) {
if (substr(strtoupper($options['feed_url']), 0, 7) == 'HTTP://') {
$feed = $options['feed_url'];
} else {
$feed = 'http://' . $options['feed_url'];
}
} else {
$feed = get_bloginfo('rss2_url');
}
?>

cの例

#include <linux/version.h>

#if defined(CONFIG_HIGH_RES_TIMERS) && \
        LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 22)
#define USE_HIGHRESTIMER
#endif

#include <linux/kernel.h>

shellの例

#!/bin/bash

set -o nounset
set -o errexit

REPO_URI=${REPO_URI:-"https://github.com/Hexxeh/rpi-firmware"}

UPDATE_SELF=${UPDATE_SELF:-1}
UPDATE_URI="https://raw.githubusercontent.com/Hexxeh/rpi-update/master/rpi-update"

if [[ ${BOOT_PATH:-"unset"} == "unset" && ${ROOT_PATH:-"unset"} != "unset" ]] ||
[[ ${BOOT_PATH:-"unset"} != "unset" && ${ROOT_PATH:-"unset"} == "unset" ]]; then
        echo " *** You need to specify both ROOT_PATH and BOOT_PATH, or neither"
        exit 1
fi